pax_global_header00006660000000000000000000000064152115135630014514gustar00rootroot0000000000000052 comment=5305a92fadd37fc20751db606313dbd298dd7270 jimjag-epm-84910c6/000077500000000000000000000000001521151356300140145ustar00rootroot00000000000000jimjag-epm-84910c6/.github/000077500000000000000000000000001521151356300153545ustar00rootroot00000000000000jimjag-epm-84910c6/.github/workflows/000077500000000000000000000000001521151356300174115ustar00rootroot00000000000000jimjag-epm-84910c6/.github/workflows/basic-check.yml000066400000000000000000000004231521151356300222670ustar00rootroot00000000000000name: EPM-basic-check on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - run: ./configure - run: make - run: make test - run: make distclean jimjag-epm-84910c6/.gitignore000066400000000000000000000007671521151356300160160ustar00rootroot00000000000000# Don't need the OS's leftovers. **/.DS_Store #IDE /.project /.cproject /.idea # Targets build by the configure phase /Makefile /autom4te.cache /config.h /config.log /config.status /doc/Makefile # Tool(s) built to facilitate the building of the product /doc/mantohtml # Actual targets build for distribution /build /epm /epm.list /epminstall /mkepmlist /setup /uninst # Flotsam left by the make process *.o *.a # Actual "outputs" of the building of package EPM for distribution. /linux-* /macos-* jimjag-epm-84910c6/CHANGES.md000066400000000000000000000212321521151356300154060ustar00rootroot00000000000000Changes in EPM ============== Changes in EPM 5.0.1 -------------------- - Added support for `%literal(config)` and `%literal(templates)` sections in Debian packages, generating the DEBIAN/config and DEBIAN/templates files (debconf) (PR #16) - Debian maintainer scripts (preinst/postinst/prerm/postrm) and the new config script are now generated with `set -e`, so they abort on the first failing command. NOTE: list files with maintainer-script commands that relied on a non-zero exit being ignored will now fail the install/removal (PR #16) - Fixed a `%arch` off-by-two, an overlapping `memcpy`, and a file-descriptor leak in `strip_execs` - FreeBSD: fixed a build regression - use `vernumber` instead of the non-existent `relnumber`, and include `epm.h` for `AooMode` in `qprintf.c` - Renamed the license file from `COPYING` to `LICENSE` and corrected the `doc/Makefile.in` `install` target to copy `LICENSE` and `README.md` from the top source directory - `make test` now passes all tests; only the first `%copyright` line in a list file is used (latest first), subsequent lines are ignored - Fixed `rpmbuild --target` for RPM versions greater than 4, which incorrectly used the old `--build-arch` argument - Updated bundled `config.guess` and `config.sub` Changes in EPM 5.0.0 -------------------- - Enabling the GUI correctly checks for FLTK - The Apache OpenOffice specific changes are no longer configure-time (buildtime) enabled, but run time, via the --aoo-mode CLI option. - Relicensed to the ALv2 (via copyright holder) Changes in EPM 4.5.2 -------------------- - Use `fakeroot` if available when building DEB packages to ensure correct file permissions - Support `rpmbuild` for RHEL7 and similar platforms - Brought back support for platforms deprecated in 4.5.0 Changes in EPM 4.5.1 -------------------- - Fixed Debian dependencies for min/max version (Issue #64) - Fixed a typo in the epm.list file (Issue #78) - Fixed macro usage in the setup.types man page (Issue #81) - Fixed @INSTALL@ macro in makefile (Issue #84) - Fixed Debian init script support (Issue #85) Changes in EPM 4.5 ------------------ - "make install" failed due to the README filename changing (Issue #59) - The `mkepmlist` utility did not correctly handle filenames containing the `$` character (Issue #62) - The configure script incorrectly substituted "NONE" for the installation prefix (Issue #67) - Fixed some over-zealous permissions on temporary build directories (Issue #71) - Fixed the mantohtml helper program - was depending on private CUPS headers for some reason (Issue #72) - Fixed some build system issues (Issue #75, Issue #76) - Documentation updates (Issue #74, Issue #77) - Cleaned up old sprintf and strcpy usage in many places. Changes in EPM 4.4.2 -------------------- - Support Apache OpenOffice patches (at configure time) Changes in EPM 4.4.1 -------------------- - "make install" failed due to the README filename changing (Issue #59) - The `mkepmlist` utility did not correctly handle filenames containing the `$` character (Issue #62) - The configure script incorrectly substituted "NONE" for the installation prefix (Issue #67) - Cleaned up old sprintf and strcpy usage in many places. Changes in EPM 4.4 ------------------ - The default prefix is now the usual `/usr/local` (Issue #45) - Really fix 64-bit Intel packages on Debian-based OS's (Issue #48) - Fixed a build issue on Solaris 11 (Issue #50) - Fixed a bug in temporary file cleanup when symlinks are used (Issue #51) - Added DESTDIR support to makefiles (Issue #55) - Fixed RPM support on AIX (Issue #56) - Reverted the hard links optimization from EPM 4.2 since it is causing problems with the latest version of RPM (Issue #57) - Packages on macOS now use "macos" as the operating system name for consistency. Changes in EPM 4.3 ------------------ - Now use pkgbuild on newer versions of macOS, and added support for signed packages (Bug #497) - Fixed some file handling issues when creating RPM packages (Bug #523) - EPM now maps the x86_64 architecture to amd64 when creating Debian packages (Bug #295) - %format stopped working in EPM 4.2 (Bug #296) - %literal(spec) did not insert the literal content in the correct location (Bug #302) - Fixed some incorrect string handling (Bug #290) - Fixed a compatibility issue with RPM 4.8 (Bug #292) - Fixed a build dependency problem (Bug #291) - The EPM makefile now uses CPPFLAGS from the configure script (Bug #300) - Updated the standard path used by portable package scripts to include /usr/gnu/bin for Solaris (Bug #301) - Added support for %literal(control) in Debian packages (Bug #297) Changes in EPM 4.2 ------------------ - EPM now supports a %arch conditional directive (STR #27) - EPM now uses hard links whenever possible instead of copying files for distribution (STR #21) - EPM no longer puts files in /export in the root file set for AIX packages (STR #15) - EPM did not work with newer versions of RPM (STR #23, STR #25) - EPM did not clean up temporary files from Solaris packages (STR #20) - Building Solaris gzip'd packages failed if the pkg.gz file already existed (STR #16) - Fixed handling of %preremove and %postremove for AIX packages (STR #22) - Fixed directory permissions in HP-UX packages (STR #24) - Removed unnecessary quoting of "!" in filenames (STR #26) - Added support for signed RPM packages (STR #19) - Added support for inclusion of format-specific packaging files and directives via a %literal directive (STR #5) - *BSD init scripts were not installed properly. - EPM now displays a warning message when a variable is undefined (STR #10) - *BSD dependencies on versioned packages are now specified correctly (STR #4) - EPM now uses /usr/sbin/pkg_create on FreeBSD (STR #2) - FreeBSD packages are now created with a .tbz extension (STR #1) - FreeBSD packages incorrectly assumed that chown was installed in /bin (STR #3) - Added support for an "lsb" package format which uses RPM with the LSB dependencies (STR #7) - The configure script now supports a --with-archflags and no longer automatically builds universal binaries on macOS. - The epm program now automatically detects when the setup GUI is not available, displays a warning message, and then creates a non-GUI package. - RPM packages did not map %replaces to Obsoletes: Changes in EPM 4.1 ------------------ - macOS portable packages did not create a correct Uninstall application. - The temporary package files for portable packages are now removed after creation of the .tar.gz file unless the -k (keep files) option is used. - The RPM summary string for subpackages did not contain the first line of the package description as for other package formats. - The setup and uninst GUIs now support installing and removing RPM packages. - The setup GUI now confirms acceptance of all licenses prior to installing the first package. - Subpackages are no longer automatically dependent on the main package. - Multi-line descriptions were not embedded properly into portable package install/patch/remove scripts. - Updated the setup and uninstall GUIs for a nicer look-n-feel. - macOS portable packages now show the proper name, version, and copyright for the packaged software instead of the EPM version and copyright. - Fixed a problem with creation of macOS metapackages with the latest Xcode. - EPM now removes the individual .rpm and .deb files when creating a package with subpackages unless the -k option (keep files) is used. - EPM now only warns about package names containing characters other than letters and numbers. - EPM now generates disk images as well as a .tar.gz file when creating portable packages on macOS. Changes in EPM 4.0 ------------------ - New subpackage support for creating multiple dependent packages or a combined package with selectable subpackages, depending on the package format. - Added support for compressing the package files in portable packages which reduces disk space requirements on platforms that provide gzip. - Added support for custom platform names via the new `-m name` option. - Added support for non-numeric %release values. - Added new `--depend` option to list all of the source files that a package depends on. - The setup GUI now sets the `EPM_INSTALL_TYPE` environment variable to the value of the selected TYPE line in the `setup.types` file. - Fixed NetBSD and OpenBSD packaging support by no longer using FreeBSD-specific extensions to pkg_create on those variants. - Fixed PowerPC platform support for RPM and Debian packages. - Many fixes to AIX package support. - Tru64 packages with init scripts now work when installing for the first time. - RPM file dependencies should now work properly. - Portable product names containing spaces will now display properly. jimjag-epm-84910c6/INSTALL.md000066400000000000000000000027101521151356300154440ustar00rootroot00000000000000How to Install EPM ================== > Note: Complete installation instructions can be found in the file > `doc/epm-book.html`. What is Required for EPM? ------------------------- On your development system you just need a C compiler, a make program, a POSIX shell (Bourne, Korn, Bash, etc.), and gzip. The graphical setup program needs a C++ compiler and the FLTK library, version 1.1.x or 1.3.x, available at . EPM can generate so-called "portable" distributions that are based on shell scripts and tar files. For these types of distributions your customers/users will need a POSIX shell (Bourne, Korn, Bash, etc.), a tar program, and gzip. The first two are standard items, and gzip is being shipped by most vendors as well. EPM can also generate vendor-specific distributions. These require the particular vendor tool (rpm, dpkg, etc.) to load the software. How Do I Compile EPM? --------------------- EPM uses GNU autoconf to configure itself for your system. To build it, use: ./configure make The default installation prefix is `/usr/local`; if you want to put EPM in a different location, use the `--prefix` option to the configure script: ./configure --prefix=/path/to/use make To test that the build was OK, you can use the following: make test Once EPM is compiled and you are sure it is working, you can type: sudo make install to install the software. jimjag-epm-84910c6/LICENSE000066400000000000000000000261351521151356300150300ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/Makefile.in000066400000000000000000000164371521151356300160740ustar00rootroot00000000000000# # Makefile for the ESP Package Manager (EPM). # # Copyright © 2020 by Jim Jagielski # Copyright © 1999-2020 by Michael R Sweet # Copyright © 1999-2010 by Easy Software Products, all rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Programs... AR = @AR@ CC = @CC@ CHMOD = @CHMOD@ CODE_SIGN = @CODE_SIGN@ CP = @CP@ CXX = @CXX@ FLTKCONFIG = @FLTKCONFIG@ INSTALL = @INSTALL@ MKDIR = @MKDIR@ -p RANLIB = @RANLIB@ RM = @RM@ -f SHELL = /bin/sh STRIP = @STRIP@ # Program options... ARFLAGS = @ARFLAGS@ ARCHFLAGS = @ARCHFLAGS@ ASAN_OPTIONS = leak_check_at_exit=false CFLAGS = $(ARCHFLAGS) @CFLAGS@ $(OPTIM) CODESIGN_IDENTITY = Developer ID CPPFLAGS = @CPPFLAGS@ CSFLAGS = -s "$(CODESIGN_IDENTITY)" --timestamp @CSFLAGS@ CXXFLAGS = $(ARCHFLAGS) @CXXFLAGS@ $(OPTIM) GUILIBS = @GUILIBS@ LDFLAGS = $(ARCHFLAGS) @LDFLAGS@ $(OPTIM) LIBS = @LIBS@ OPTIM = @OPTIM@ # Directories... bindir = @bindir@ datadir = @datadir@ datarootdir = @datarootdir@ exec_prefix = @exec_prefix@ includedir = @includedir@ infodir = @infodir@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ privateinclude = @privateinclude@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ top_srcdir = @top_srcdir@ BUILDROOT = $(DSTROOT)$(RPM_BUILD_ROOT)$(DESTDIR) VPATH = $(srcdir) # Rules... .SILENT: .SUFFIXES: .c .cxx .h .o .c.o: echo Compiling $<... $(CC) $(CFLAGS) $(CPPFLAGS) -I. -I$(srcdir) -c $< .cxx.o: echo Compiling $<... $(CXX) $(CXXFLAGS) $(CPPFLAGS) -I. -I$(srcdir) -c $< # Targets... TARGETS = libepm.a \ epm \ epminstall \ mkepmlist \ @GUIS@ EPM_OBJS = aix.o \ bsd.o \ deb.o \ dist.o \ file.o \ inst.o \ macos.o \ pkg.o \ portable.o \ qprintf.o \ rpm.o \ run.o \ setld.o \ slackware.o \ snprintf.o \ string.o \ support.o \ swinstall.o \ tar.o SETUP_OBJS = setup.o \ setup2.o \ gui-common.o UNINST_OBJS = uninst.o \ uninst2.o \ gui-common.o OBJS = epm.o \ $(EPM_OBJS) \ epminstall.o \ mkepmlist.o \ $(SETUP_OBJS) \ $(UNINST_OBJS) # Make all targets... all: $(TARGETS) Makefile config.h # Clean all generated files... clean: $(RM) $(OBJS) $(RM) $(TARGETS) # Clean all generated and configuration files... distclean: $(RM) $(OBJS) $(RM) $(TARGETS) $(RM) config.cache config.h config.log config.status $(RM) Makefile doc/Makefile $(RM) epm.list # # Run the clang.llvm.org static code analysis tool on the C sources. # .PHONY: clang clang-changes clang: $(RM) -r clang scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) clean all clang-changes: scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) all # Install all targets... install: all @INSTALL_GUIS@ @INSTALL_OSX@ echo Installing EPM programs in $(BUILDROOT)$(bindir) $(INSTALL) -d -m 755 $(BUILDROOT)$(bindir) for file in epm epminstall mkepmlist; do \ $(INSTALL) -c -m 755 $$file $(BUILDROOT)$(bindir); \ done (cd doc; $(MAKE) $(MFLAGS) install) install-guis: setup uninst echo Installing EPM setup/uninst in $(BUILDROOT)$(libdir)/epm $(INSTALL) -d -m 755 $(BUILDROOT)$(libdir)/epm for file in setup uninst; do \ $(INSTALL) -c -m 755 $$file $(BUILDROOT)$(libdir)/epm; \ done install-macos: echo Installing EPM macOS data files in $(BUILDROOT)$(datadir)/epm $(INSTALL) -d -m 755 $(BUILDROOT)$(datadir)/epm $(INSTALL) -c -m 644 default.icns $(BUILDROOT)$(datadir)/epm # Uninstall all targets... uninstall: echo Uninstalling EPM programs from $(BUILDROOT)$(bindir) $(RM) $(BUILDROOT)$(bindir)/epm $(RM) $(BUILDROOT)$(bindir)/epminstall $(RM) $(BUILDROOT)$(bindir)/mkepmlist echo Uninstalling EPM setup/uninstall from $(BUILDROOT)$(libdir)/epm $(RM) -r $(BUILDROOT)$(libdir)/epm echo Uninstalling EPM macOS data files from $(BUILDROOT)$(datadir)/epm $(RM) -r $(BUILDROOT)$(datadir)/epm # Makefile Makefile: Makefile.in configure if test -f config.status; then \ ./config.status --recheck; \ ./config.status; \ else \ ./configure; \ fi touch config.h # config.h config.h: config.h.in configure if test -f config.status; then \ ./config.status --recheck; \ ./config.status; \ else \ ./configure; \ fi touch config.h # Test EPM... test: $(TARGETS) echo Starting portable distribution build test... if ./epm -vv epm >test.log; then \ echo Portable distribution build test PASSED.; \ else \ echo Portable distribution build test FAILED.; \ cat test.log; \ fi echo Starting native distribution build test... if ./epm -vv -s default.png -f native \ --setup-program setup --uninstall-program uninst \ epm >test.log; then \ echo Native distribution build test PASSED.; \ else \ echo Native distribution build test FAILED.; \ cat test.log; \ fi $(RM) test.log # Make distributions in different formats using EPM... aix: $(TARGETS) ./epm -f aix -v epm bsd: $(TARGETS) ./epm -f bsd -v epm slackware: $(TARGETS) ./epm -f slackware -v epm deb: $(TARGETS) ./epm -f deb -v epm inst tardist: $(TARGETS) ./epm -f tardist -v epm gui: $(TARGETS) ./epm -f portable -v -s default.png --setup-program setup \ --uninstall-program uninst --data-dir . epm lsb macos portable rpm: $(TARGETS) ./epm -f $@ -v -s default.png --setup-program setup \ --uninstall-program uninst --data-dir . epm pkg: $(TARGETS) ./epm -f pkg -v epm native: $(TARGETS) ./epm -f native -v epm swinstall depot: $(TARGETS) ./epm -f depot -v epm # libepm.a libepm.a: $(EPM_OBJS) echo Archiving libepm.a... $(RM) libepm.a $(AR) $(ARFLAGS) libepm.a $(EPM_OBJS) $(RANLIB) libepm.a $(EPM_OBJS): epm.h epmstring.h # epm epm: epm.o libepm.a echo Linking epm... $(CC) $(LDFLAGS) -o epm epm.o libepm.a $(LIBS) #echo Code signing $@... #$(CODE_SIGN) $(CSFLAGS) -i com.jimjag.epm.$@ $@ epm.o: epm.h epmstring.h # epminstall epminstall: epminstall.o libepm.a echo Linking epminstall... $(CC) $(LDFLAGS) -o epminstall epminstall.o libepm.a $(LIBS) #echo Code signing $@... #$(CODE_SIGN) $(CSFLAGS) -i com.jimjag.epm.$@ $@ epminstall.o: epm.h epmstring.h # mkepmlist mkepmlist: mkepmlist.o libepm.a echo Linking mkepmlist... $(CC) $(LDFLAGS) -o mkepmlist mkepmlist.o libepm.a $(LIBS) #echo Code signing $@... #$(CODE_SIGN) $(CSFLAGS) -i com.jimjag.epm.$@ $@ mkepmlist.o: epm.h epmstring.h # setup (GUI) setup: $(SETUP_OBJS) libepm.a echo Linking setup... $(CXX) $(LDFLAGS) -o setup $(SETUP_OBJS) libepm.a $(GUILIBS) $(LIBS) setup.o: setup.h gui-common.h epmstring.h setup2.o: setup.h gui-common.h epmstring.h gui-common.o: gui-common.h # uninst (GUI) uninst: $(UNINST_OBJS) libepm.a echo Linking uninst... $(CXX) $(LDFLAGS) -o uninst $(UNINST_OBJS) libepm.a $(GUILIBS) $(LIBS) uninst.o: uninst.h epmstring.h gui-common.h uninst2.o: uninst.h epmstring.h gui-common.h gui-common.o: gui-common.h # Common dependencies... $(OBJS): Makefile config.h jimjag-epm-84910c6/README.md000066400000000000000000000054021521151356300152740ustar00rootroot00000000000000ESP Package Manager (EPM) ========================= What is EPM? ------------ EPM is a simple cross-platform tool that generates software and patch distributions in various formats from a list of files. Supported formats include: - AIX software packages ("installp") - AT&T software packages ("pkgadd"), used by Solaris and others - BSD packages ("pkg_create") - Compaq Tru64 UNIX ("setld") - Debian Package Manager ("dpkg") - HP-UX software packages ("swinstall") - IRIX software manager ("inst", "swmgr", or "tardist") - macOS software packages ("name.pkg") - Portable (installation and removal scripts with tar files) - Red Hat Package Manager ("rpm") - Slackware software packages ("name.tgz") EPM also includes graphical "setup" and "uninstall" programs that can be provided with your distributions to make installation and removal of more than one package a snap. The installers can be customized with product logos, "readme" files, and click-wrap licenses as desired. EPM is provided as free software under version 2 of the Apache License (ALv2). How is this releated to the official EPM? ----------------------------------------- Starting with version 4.5.2, this is, in fact, the official EPM distribution. How Do I Compile EPM? --------------------- See the file `INSTALL.md` for more info on that. How Do I Use EPM? ----------------- Please look at the EPM manual. A preformatted copy is included with the source archive in the file `doc/epm-book.html`. An example EPM software list file is provided with this distribution in the file `epm.list`. Do I Have to Pay to Distribute Software Using EPM? -------------------------------------------------- No! EPM is free software and any installations you create are unencumbered by licensing of any kind, not even the GPL or the ALv2. What's New in EPM? ------------------ See the file `CHANGES.md` for change information. Resources --------- The official home page for EPM is . Report all problems and submit all patches/pull requests using the Github issue tracking pages at . Legal Stuff ----------- EPM is Copyright © 1999-2020 by Michael R Sweet. All rights reserved. EPM is Copyright © 2020 by Jim Jagielski. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/aix.c000066400000000000000000000650671521151356300147570ustar00rootroot00000000000000/* * AIX package gateway for the ESP Package Manager (EPM). * * Copyright 2020 by Jim Jagielski * Copyright 1999-2020 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Directory information... */ typedef struct { char dst[1024]; /* Output directory */ int blocks; /* Size of files in this directory */ } aixdir_t; /* * Local functions... */ static int aix_addfile(int type, const char *src, const char *dst, int num_dirs, aixdir_t **dirs); static void aix_fileset(FILE *fp, const char *prodname, dist_t *dist, const char *subpackage); static char *aix_version(const char *version); static int write_liblpp(const char *prodname, const char *directory, dist_t *dist, int root, const char *subpackage); /* * Local globals... */ static const char *files[] = /* Control files... */ {"al", "cfgfiles", "copyright", "inventory", "post_i", "pre_i", "unpost_i", "unpre_i"}; /* * 'make_aix()' - Make an AIX software distribution package. */ int /* O - 0 = success, 1 = fail */ make_aix(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform) /* I - Platform information */ { int i; /* Looping var */ FILE *fp; /* Control file */ char name[1024], /* Full product name */ filename[1024], /* Destination filename */ current[1024]; /* Current directory */ file_t *file; /* Current distribution file */ struct passwd *pwd; /* Pointer to user record */ struct group *grp; /* Pointer to group record */ const char *runlevels; /* Run levels */ REF(platform); if (Verbosity) puts("Creating AIX distribution..."); if (dist->release[0]) { if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, dist->version, dist->release, platname); else snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, dist->release); } else if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); else snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); getcwd(current, sizeof(current)); /* * Write the lpp_name file for installp... */ if (Verbosity) puts("Creating lpp_name file..."); snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); make_directory(filename, 0755, 0, 0); snprintf(filename, sizeof(filename), "%s/%s/lpp_name", directory, prodname); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create lpp_name file \"%s\": %s\n", filename, strerror(errno)); return (1); } fprintf(fp, "4 R I %s {\n", prodname); aix_fileset(fp, prodname, dist, NULL); for (i = 0; i < dist->num_subpackages; i++) aix_fileset(fp, prodname, dist, dist->subpackages[i]); fputs("}\n", fp); fclose(fp); /* * Write the root partition liblpp.a file... */ write_liblpp(prodname, directory, dist, 1, NULL); for (i = 0; i < dist->num_subpackages; i++) write_liblpp(prodname, directory, dist, 1, dist->subpackages[i]); /* * Write the usr partition liblpp.a file... */ write_liblpp(prodname, directory, dist, 0, NULL); for (i = 0; i < dist->num_subpackages; i++) write_liblpp(prodname, directory, dist, 0, dist->subpackages[i]); /* * Copy the files over... */ if (Verbosity) puts("Copying temporary distribution files..."); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { /* * Find the username and groupname IDs... */ pwd = getpwnam(file->user); grp = getgrnam(file->group); endpwent(); endgrent(); /* * Copy the file or make the directory or make the symlink as needed... */ switch (tolower(file->type)) { case 'c': case 'f': if (!strncmp(file->dst, "/export/", 8) || !strncmp(file->dst, "/opt/", 5) || !strncmp(file->dst, "/usr/", 5)) snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodname, file->dst); else snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root%s", directory, prodname, prodname, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); break; case 'i': for (runlevels = get_runlevels(file, "2"); isdigit(*runlevels & 255); runlevels++) { snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root/etc/rc.d/rc%c.d/S%02d%s", directory, prodname, prodname, *runlevels, get_start(file, 99), file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root/etc/rc.d/rc%c.d/K%02d%s", directory, prodname, prodname, *runlevels, get_stop(file, 0), file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); } break; case 'd': if (!strcmp(file->dst, "/export") || !strncmp(file->dst, "/export/", 8) || !strcmp(file->dst, "/opt") || !strncmp(file->dst, "/opt/", 5) || !strcmp(file->dst, "/usr") || !strncmp(file->dst, "/usr/", 5)) snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodname, file->dst); else snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root%s", directory, prodname, prodname, file->dst); if (Verbosity > 1) printf("Directory %s...\n", filename); make_directory(filename, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0); break; case 'l': if (!strncmp(file->dst, "/export/", 8) || !strncmp(file->dst, "/opt/", 5) || !strncmp(file->dst, "/usr/", 5)) snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodname, file->dst); else snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root%s", directory, prodname, prodname, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); make_link(filename, file->src); break; } } /* * Build the distribution from the spec file... */ if (Verbosity) puts("Building AIX binary distribution..."); snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); if (run_command(filename, "sh -c \'find . -print | backup -i -f ../%s.bff -q %s\'", prodname, Verbosity ? "-v" : "")) return (1); /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) puts("Removing temporary distribution files..."); snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); unlink_directory(filename); for (i = 0; i < (sizeof(files) / sizeof(files[0])); i++) { snprintf(filename, sizeof(filename), "%s/%s.%s", directory, prodname, files[i]); unlink(filename); } snprintf(filename, sizeof(filename), "%s/lpp.README", directory); unlink(filename); } return (0); } /* * 'aix_addfile()' - Add a file to the AIX directory list... */ static int /* O - New number dirs */ aix_addfile(int type, /* I - Filetype */ const char *src, /* I - Source path */ const char *dst, /* I - Destination path */ int num_dirs, /* I - Number of directories */ aixdir_t **dirs) /* IO - Directories */ { int i, j; /* Looping vars */ int blocks; /* Blocks to add... */ struct stat fileinfo; /* File information */ aixdir_t *temp; /* Temporary pointer */ char dstpath[1024], /* Destination path */ *dstptr; /* Pointer into destination */ /* * Determine the destination path and block size... */ strlcpy(dstpath, dst, sizeof(dstpath)); if (type == 'd') { blocks = 1; dstptr = dstpath + strlen(dstpath) - 1; } else { dstptr = strrchr(dstpath, '/'); if (type == 'l') blocks = 1; else if (!stat(src, &fileinfo)) blocks = (int)((fileinfo.st_size + 511) / 512); else blocks = 0; } if (dstptr && *dstptr == '/' && dstptr > dstpath) *dstptr = '\0'; /* * Now see if the destination path is in the array... */ temp = *dirs; for (i = 0; i < num_dirs; i++) if ((j = strcmp(temp[i].dst, dstpath)) == 0) { temp[i].blocks += blocks; return (num_dirs); } else if (j > 0) break; /* * Not in the list; allocate a new one... */ if (num_dirs == 0) temp = malloc(sizeof(aixdir_t)); else temp = realloc(*dirs, (num_dirs + 1) * sizeof(aixdir_t)); if (!temp) return (num_dirs); *dirs = temp; temp += i; if (i < num_dirs) memmove(temp + 1, temp, (num_dirs - i) * sizeof(aixdir_t)); strlcpy(temp->dst, dstpath, sizeof(temp->dst)); temp->blocks = blocks; return (num_dirs + 1); } /* * 'aix_fileset()' - Write a subpackage description... */ static void aix_fileset(FILE *fp, /* I - File to write to */ const char *prodname, /* I - Product name */ dist_t *dist, /* I - Distribution */ const char *subpackage) /* I - Subpackage */ { int i; /* Looping var */ depend_t *d; /* Current dependency */ file_t *file; /* Current distribution file */ int num_dirs; /* Number of directories */ aixdir_t *dirs; /* Directories */ /* * Start fileset definition... */ if (subpackage) fprintf(fp, "%s.%s", prodname, subpackage); else fprintf(fp, "%s", prodname); fprintf(fp, " %s 01 N B x ", aix_version(dist->version)); if (subpackage) { for (i = 0; i < dist->num_descriptions; i++) { if (dist->descriptions[i].subpackage == subpackage) { fprintf(fp, "%s\n", dist->descriptions[i].description); break; } } } else fprintf(fp, "%s\n", dist->product); /* * Dependencies... */ fputs("[\n", fp); for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) if (d->type == DEPEND_REQUIRES && d->subpackage == subpackage && strcmp(d->product, "_self")) fprintf(fp, "*prereq %s %s\n", d->product, aix_version(d->version[0])); /* * Installation sizes... */ fputs("%\n", fp); num_dirs = 0; dirs = NULL; for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (file->subpackage == subpackage) num_dirs = aix_addfile(tolower(file->type), file->src, file->dst, num_dirs, &dirs); for (i = 0; i < num_dirs; i++) fprintf(fp, "%s %d\n", dirs[i].dst, dirs[i].blocks); if (num_dirs > 0) free(dirs); /* * This package supercedes which others? */ fputs("%\n", fp); for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) if (d->type == DEPEND_REPLACES && d->subpackage == subpackage && strcmp(d->product, "_self")) fprintf(fp, "%s %s", d->product, aix_version(d->version[0])); /* * Fix information is only used for updates (patches)... */ fputs("%\n", fp); fputs("]\n", fp); } /* * 'aix_version()' - Generate an AIX version number. */ static char * /* O - AIX version number */ aix_version(const char *version) /* I - EPM version number */ { int verparts[4]; /* Version number parts */ static char aix[255]; /* AIX version number string */ /* * AIX requires a four-part version number (M.m.p.r)... */ memset(verparts, 0, sizeof(verparts)); sscanf(version, "%d.%d.%d.%d", verparts + 0, verparts + 1, verparts + 2, verparts + 3); snprintf(aix, sizeof(aix), "%d.%d.%d.%d", verparts[0], verparts[1], verparts[2], verparts[3]); return (aix); } /* * 'write_liblpp()' - Create the liblpp.a file for the root or /usr parts. */ static int /* O - 0 = success, 1 = fail */ write_liblpp(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ dist_t *dist, /* I - Distribution information */ int root, /* I - Root partition? */ const char *subpackage) /* I - Subpackage */ { int i; /* Looping var */ FILE *fp; /* Control file */ char filename[1024], /* Destination filename */ prodfull[1024]; /* Full product name */ struct stat fileinfo; /* File information */ command_t *c; /* Current command */ file_t *file; /* Current distribution file */ int configcount; /* Number of config files */ int shared_file; /* Shared file? */ const char *runlevels; /* Run levels */ /* * Progress info... */ if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s.%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); if (Verbosity) printf("Updating %s partition liblpp.a file for %s...\n", root ? "root" : "shared", prodfull); /* * Write the product.al file for installp... */ if (Verbosity > 1) puts(" Creating .al file..."); snprintf(filename, sizeof(filename), "%s/%s.al", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create .al file \"%s\": %s\n", filename, strerror(errno)); return (1); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (file->subpackage == subpackage) switch (tolower(file->type)) { case 'i': for (runlevels = get_runlevels(file, "2"); isdigit(*runlevels & 255); runlevels++) { if (root) putc('.', fp); else qprintf(fp, "./usr/lpp/%s/inst_root", prodfull); if (*runlevels == '0') qprintf(fp, "/etc/rc.d/rc0.d/K%02d%s\n", get_stop(file, 0), file->dst); else qprintf(fp, "/etc/rc.d/rc%c.d/S%02d%s\n", *runlevels, get_start(file, 99), file->dst); } break; default: shared_file = !(strcmp(file->dst, "/usr") && strncmp(file->dst, "/usr/", 5) && strcmp(file->dst, "/opt") && strncmp(file->dst, "/opt/", 5)); /* * Put file in root or share .al file as appropriate */ if ((shared_file && !root) || (!shared_file && root)) qprintf(fp, ".%s\n", file->dst); /* * Put any root file in the share .al so it will be extracted * to /usr/lpp//inst_root directory. I have no * idea if this is really the way to do it but it seems to * work... */ if (!shared_file && !root) qprintf(fp, "./usr/lpp/%s/inst_root%s\n", prodfull, file->dst); break; } fclose(fp); /* * Write the product.cfgfiles file for installp... */ if (Verbosity > 1) puts(" Creating .cfgfiles file..."); snprintf(filename, sizeof(filename), "%s/%s.cfgfiles", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create .cfgfiles file \"%s\": %s\n", filename, strerror(errno)); return (1); } configcount = 0; for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'c' && file->subpackage == subpackage && (strcmp(file->dst, "/usr") || strncmp(file->dst, "/usr/", 5) || strcmp(file->dst, "/opt") || strncmp(file->dst, "/opt/", 5)) == root) { qprintf(fp, ".%s hold_new\n", file->dst); configcount++; } fclose(fp); /* * Write the product.copyright file for installp... */ if (Verbosity > 1) puts(" Creating .copyright file..."); snprintf(filename, sizeof(filename), "%s/%s.copyright", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create .copyright file \"%s\": %s\n", filename, strerror(errno)); return (1); } fprintf(fp, "%s, %s\n%s\n%s\n", dist->product, aix_version(dist->version), dist->vendor, dist->copyright); fclose(fp); if (root) { /* * Write the product.pre_i file for installp... */ if (Verbosity > 1) puts(" Creating .pre_i file..."); snprintf(filename, sizeof(filename), "%s/%s.pre_i", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create .pre_i file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (c = dist->commands, i = dist->num_commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); fclose(fp); /* * Write the product.post_i file for installp... */ if (Verbosity > 1) puts(" Creating .post_i file..."); snprintf(filename, sizeof(filename), "%s/%s.post_i", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create .post_i file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (c = dist->commands, i = dist->num_commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); fclose(fp); /* * Write the product.unpre_i file for installp... */ if (Verbosity > 1) puts(" Creating .unpre_i file..."); snprintf(filename, sizeof(filename), "%s/%s.unpre_i", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create .unpre_i file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (c = dist->commands, i = dist->num_commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); fclose(fp); /* * Write the product.unpost_i file for installp... */ if (Verbosity > 1) puts(" Creating .unpost_i file..."); snprintf(filename, sizeof(filename), "%s/%s.unpost_i", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create .unpost_i file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (c = dist->commands, i = dist->num_commands; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); fclose(fp); } /* * Write the product.inventory file for installp... */ if (Verbosity > 1) puts(" Creating .inventory file..."); snprintf(filename, sizeof(filename), "%s/%s.inventory", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create .inventory file \"%s\": %s\n", filename, strerror(errno)); return (1); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { if (file->subpackage != subpackage) continue; if (root) { if (!strcmp(file->dst, "/usr") || !strncmp(file->dst, "/usr/", 5) || !strcmp(file->dst, "/opt") || !strncmp(file->dst, "/opt/", 5)) continue; } else { if (tolower(file->type) == 'c' || (strcmp(file->dst, "/usr") && strncmp(file->dst, "/usr/", 5) && strcmp(file->dst, "/opt") && strncmp(file->dst, "/opt/", 5))) continue; } switch (tolower(file->type)) { case 'i': for (runlevels = get_runlevels(file, "2"); isdigit(*runlevels & 255); runlevels++) { if (*runlevels == '0') qprintf(fp, "/etc/rc.d/rc0.d/K%02d%s:\n", get_stop(file, 0), file->dst); else qprintf(fp, "/etc/rc.d/rc%c.d/S%02d%s:\n", *runlevels, get_start(file, 99), file->dst); fprintf(fp, " class=apply,inventory,%s\n", prodfull); fputs(" type=FILE\n", fp); if (!stat(file->src, &fileinfo)) fprintf(fp, " size=%d\n", (int)fileinfo.st_size); fprintf(fp, " owner=%s\n", file->user); fprintf(fp, " group=%s\n", file->group); fprintf(fp, " mode=%04o\n", (unsigned)file->mode); fputs("\n", fp); } break; default: qprintf(fp, "%s:\n", file->dst); fprintf(fp, " class=apply,inventory,%s\n", prodfull); switch (tolower(file->type)) { case 'd': fputs(" type=DIRECTORY\n", fp); break; case 'l': fputs(" type=SYMLINK\n", fp); qprintf(fp, " target=%s\n", file->src); break; case 'c': fputs(" type=FILE\n", fp); fputs(" size=VOLATILE\n", fp); break; default: fputs(" type=FILE\n", fp); if (!stat(file->src, &fileinfo)) fprintf(fp, " size=%ld\n", (long)fileinfo.st_size); break; } fprintf(fp, " owner=%s\n", file->user); fprintf(fp, " group=%s\n", file->group); fprintf(fp, " mode=%04o\n", (unsigned)file->mode); fputs("\n", fp); break; } } fclose(fp); /* * Write the lpp.README file... */ snprintf(filename, sizeof(filename), "%s/lpp.README", directory); if (dist->license[0]) copy_file(filename, dist->license, 0644, 0, 0); else if (dist->readme[0]) copy_file(filename, dist->readme, 0644, 0, 0); else if ((fp = fopen(filename, "w")) != NULL) fclose(fp); else { fprintf(stderr, "epm: Unable to create .README file \"%s\": %s\n", filename, strerror(errno)); return (1); } /* * Create the liblpp.a file... */ if (Verbosity > 1) puts(" Creating liblpp.a archive..."); if (root) { snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root", directory, prodname, prodname); make_directory(filename, 0755, 0, 0); snprintf(filename, sizeof(filename), "%s/usr/lpp/%s/inst_root/liblpp.a", prodname, prodname); } else { snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s", directory, prodname, prodname); make_directory(filename, 0755, 0, 0); snprintf(filename, sizeof(filename), "%s/usr/lpp/%s/liblpp.a", prodname, prodname); } if (!subpackage) if (run_command(directory, "ar rc %s lpp.README", filename)) return (1); for (i = 0; i < (sizeof(files) / sizeof(files[0])); i++) { if (i >= 4 && !root) break; if (i == 1 && !configcount) continue; if (run_command(directory, "ar rc %s %s.%s", filename, prodfull, files[i])) return (1); } return (0); } jimjag-epm-84910c6/bsd.c000066400000000000000000000347501521151356300147410ustar00rootroot00000000000000/* * Free/Net/OpenBSD package gateway for the ESP Package Manager (EPM). * * Copyright 2020 by Jim Jagielski * Copyright 1999-2017 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local functions... */ static void cr2semicolon(char *command) { int len, i; len = strlen(command); for (i = 0; i < len; i++) if (*(command + i) == '\n') *(command + i) = ';'; } static int make_subpackage(const char *prodname, const char *directory, const char *platname, dist_t *dist, const char *subpackage); /* * 'make_bsd()' - Make a Free/Net/OpenBSD software distribution package. */ int /* O - 0 = success, 1 = fail */ make_bsd(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform) /* I - Platform information */ { int i; /* Looping var */ if (make_subpackage(prodname, directory, platname, dist, NULL)) return (1); for (i = 0; i < dist->num_subpackages; i++) if (make_subpackage(prodname, directory, platname, dist, dist->subpackages[i])) return (1); return (0); } /* * 'make_subpackage()' - Create a subpackage... */ static int /* O - 0 = success, 1 = fail */ make_subpackage(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ const char *subpackage) /* I - Subpackage name */ { int i; /* Looping var */ FILE *fp; /* Spec file */ char prodfull[1024]; /* Full subpackage name */ char name[1024]; /* Full product name */ char commentname[1024]; /* pkg comment filename */ char descrname[1024]; /* pkg descr filename */ char plistname[1024]; /* pkg plist filename */ char filename[1024]; /* Destination filename */ char *old_user, /* Old owner UID */ *old_group; /* Old group ID */ int old_mode; /* Old permissions */ file_t *file; /* Current distribution file */ command_t *c; /* Current command */ depend_t *d; /* Current dependency */ struct passwd *pwd; /* Pointer to user record */ struct group *grp; /* Pointer to group record */ char current[1024]; /* Current directory */ getcwd(current, sizeof(current)); if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); if (Verbosity) printf("Creating %s *BSD pkg distribution...\n", prodfull); if (dist->release[0]) { if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s-%s", prodfull, dist->version, dist->release, platname); else snprintf(name, sizeof(name), "%s-%s-%s", prodfull, dist->version, dist->release); } else if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s", prodfull, dist->version, platname); else snprintf(name, sizeof(name), "%s-%s", prodfull, dist->version); /* * Write the descr file for pkg... */ if (Verbosity) printf("Creating %s.descr file...\n", prodfull); snprintf(descrname, sizeof(descrname), "%s/%s.descr", directory, prodfull); if ((fp = fopen(descrname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create descr file \"%s\": %s\n", descrname, strerror(errno)); return (1); } fprintf(fp, "%s\n", dist->product); fclose(fp); /* * Write the comment file for pkg... */ if (Verbosity) printf("Creating %s.comment file...\n", prodfull); snprintf(commentname, sizeof(commentname), "%s/%s.comment", directory, prodfull); if ((fp = fopen(commentname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create comment file \"%s\": %s\n", commentname, strerror(errno)); return (1); } fprintf(fp, "Summary: %s\n", dist->product); fprintf(fp, "Name: %s\n", prodfull); fprintf(fp, "Version: %s\n", dist->version); fprintf(fp, "Release: %s\n", dist->release); fprintf(fp, "Copyright: %s\n", dist->copyright); fprintf(fp, "Packager: %s\n", dist->packager); fprintf(fp, "Vendor: %s\n", dist->vendor); fprintf(fp, "BuildRoot: %s/%s/%s.buildroot\n", current, directory, prodfull); fputs("Group: Applications\n", fp); fputs("Description:\n\n", fp); for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) fprintf(fp, "%s\n", dist->descriptions[i].description); fclose(fp); /* * Write the plist file for pkg... */ if (Verbosity) printf("Creating %s.plist file...\n", prodfull); snprintf(plistname, sizeof(plistname), "%s/%s.plist", directory, prodfull); if ((fp = fopen(plistname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create plist file \"%s\": %s\n", plistname, strerror(errno)); return (1); } /* * FreeBSD and NetBSD support both "source directory" and "preserve files" * options, OpenBSD does not... */ #ifdef __FreeBSD__ fprintf(fp, "@srcdir %s/%s/%s.buildroot\n", current, directory, prodfull); fputs("@option preserve\n", fp); #elif defined(__NetBSD__) fprintf(fp, "@src %s/%s/%s.buildroot\n", current, directory, prodfull); fputs("@option preserve\n", fp); #endif /* __FreeBSD__ */ for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) { if (d->subpackage != subpackage) continue; if (d->type == DEPEND_REQUIRES) { #ifdef __FreeBSD__ if (AooMode) { if (dist->vernumber) { fprintf(fp, "@pkgdep %s-%s-%d-%s", d->product, dist->version, dist->vernumber, platname); } else { fprintf(fp, "@pkgdep %s-%s-%s", d->product, dist->version, platname); } } else fprintf(fp, "@pkgdep %s", d->product); #elif defined(__OpenBSD__) fprintf(fp, "@depend %s", d->product); #else fprintf(fp, "@pkgdep %s", d->product); #endif /* __FreeBSD__ */ } else { #ifdef __FreeBSD__ /* * FreeBSD uses @conflicts... */ fprintf(fp, "@conflicts %s", d->product); #elif defined(__OpenBSD__) fprintf(fp, "@conflict %s", d->product); #else fprintf(fp, "@pkgcfl %s", d->product); #endif /* __FreeBSD__ */ } if (d->vernumber[0] > 0) fprintf(fp, "-%s\n", d->version[0]); else putc('\n', fp); } for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->subpackage == subpackage) switch (c->type) { case COMMAND_PRE_INSTALL: fputs("WARNING: Package contains pre-install commands which are not " "supported\n" " by the BSD packager.\n", stderr); break; case COMMAND_POST_INSTALL: if (AooMode) cr2semicolon(c->command); fprintf(fp, "@exec %s\n", c->command); break; case COMMAND_PRE_REMOVE: if (AooMode) cr2semicolon(c->command); fprintf(fp, "@unexec %s\n", c->command); break; case COMMAND_POST_REMOVE: fputs("WARNING: Package contains post-removal commands which are not " "supported\n" " by the BSD packager.\n", stderr); break; } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'd' && file->subpackage == subpackage) { /* * We create and update directories as postinstall commands to * avoid a bug in the FreeBSD pkg_delete command. */ fprintf(fp, "@exec mkdir -p %s\n", file->dst); fprintf(fp, "@exec chown %s:%s %s\n", file->user, file->group, file->dst); fprintf(fp, "@exec chmod %04o %s\n", file->mode, file->dst); } for (i = dist->num_files, file = dist->files, old_mode = 0, old_user = "", old_group = ""; i > 0; i--, file++) { /* * The FreeBSD pkg_delete command (at least) doesn't like creating * and deleting directories. I don't know if other BSD's have the * same problem, but for now just put the directory stuff in a * postinstall script... */ if (tolower(file->type) == 'd' || file->subpackage != subpackage) continue; if (file->mode != old_mode) fprintf(fp, "@mode %04o\n", old_mode = file->mode); if (strcmp(file->user, old_user)) fprintf(fp, "@owner %s\n", old_user = file->user); if (strcmp(file->group, old_group)) fprintf(fp, "@group %s\n", old_group = file->group); switch (tolower(file->type)) { case 'i': qprintf(fp, "usr/local/etc/rc.d/%s\n", file->dst); break; case 'c': case 'f': case 'l': #ifdef __OpenBSD__ qprintf(fp, "@file %s\n", file->dst + 1); if (tolower(file->type) == 'c') qprintf(fp, "@sample %s\n", file->dst + 1); #else qprintf(fp, "%s\n", file->dst + 1); #endif /* __OpenBSD__ */ break; } } /* * Need to list directories to remove in reverse order after * everything else... */ for (i = dist->num_files, file = dist->files + i - 1; i > 0; i--, file--) if (tolower(file->type) == 'd' && file->subpackage == subpackage) qprintf(fp, "@dirrm %s\n", file->dst + 1); fclose(fp); /* * Copy the files over... */ if (Verbosity) puts("Copying temporary distribution files..."); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { if (file->subpackage != subpackage) continue; /* * Find the username and groupname IDs... */ pwd = getpwnam(file->user); grp = getgrnam(file->group); endpwent(); endgrent(); /* * Copy the file or make the directory or make the symlink as needed... */ switch (tolower(file->type)) { case 'c': case 'f': snprintf(filename, sizeof(filename), "%s/%s.buildroot%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); break; case 'i': snprintf(filename, sizeof(filename), "%s/%s.buildroot/usr/local/etc/rc.d/%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); break; case 'd': snprintf(filename, sizeof(filename), "%s/%s.buildroot%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("Directory %s...\n", filename); make_directory(filename, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0); break; case 'l': snprintf(filename, sizeof(filename), "%s/%s.buildroot%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); make_link(filename, file->src); break; } } /* * Build the distribution... */ if (Verbosity) printf("Building %s *BSD pkg binary distribution...\n", prodfull); #ifdef __OpenBSD__ if (run_command(NULL, "pkg_create -p / -B %s/%s.buildroot " "-c %s " "-d %s " "-f %s " "%s.tgz", directory, prodfull, commentname, descrname, plistname, name)) return (1); if (run_command(NULL, "mv %s.tgz %s", name, directory)) return (1); #elif defined(__FreeBSD__) if (run_command(NULL, "/usr/sbin/pkg_create -p / " "-c %s " "-d %s " "-f %s " "%s/%s.tbz", commentname, descrname, plistname, directory, name)) return (1); #else if (run_command(NULL, "pkg_create -p / " "-c %s " "-d %s " "-f %s " "%s/%s.tgz", commentname, descrname, plistname, directory, name)) return (1); #endif /* __OpenBSD__ */ /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) puts("Removing temporary distribution files..."); snprintf(filename, sizeof(filename), "%s/%s.buildroot", directory, prodfull); unlink_directory(filename); unlink(plistname); unlink(commentname); unlink(descrname); } return (0); } jimjag-epm-84910c6/config.guess000077500000000000000000001426761521151356300163540ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2023 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2023-08-22' # This file 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # Just in case it came from the environment. GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still # use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD=$driver break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case $UNAME_SYSTEM in Linux|GNU|GNU/*) LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" #if defined(__ANDROID__) LIBC=android #else #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu #else #include /* First heuristic to detect musl libc. */ #ifdef __DEFINED_va_list LIBC=musl #endif #endif #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" # Second heuristic to detect musl libc. if [ "$LIBC" = unknown ] && command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl; then LIBC=musl fi # If the system lacks a compiler, then just pick glibc. # We could probably try harder. if [ "$LIBC" = unknown ]; then LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` case $UNAME_MACHINE_ARCH in aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case $UNAME_VERSION in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. GUESS=$machine-${os}${release}${abi-} ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ;; *:SecBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ;; *:MidnightBSD:*:*) GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ;; *:ekkoBSD:*:*) GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ;; *:SolidBSD:*:*) GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ;; *:OS108:*:*) GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ;; macppc:MirBSD:*:*) GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ;; *:MirBSD:*:*) GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ;; *:Sortix:*:*) GUESS=$UNAME_MACHINE-unknown-sortix ;; *:Twizzler:*:*) GUESS=$UNAME_MACHINE-unknown-twizzler ;; *:Redox:*:*) GUESS=$UNAME_MACHINE-unknown-redox ;; mips:OSF1:*.*) GUESS=mips-dec-osf1 ;; alpha:OSF1:*:*) # Reset EXIT trap before exiting to avoid spurious non-zero exit code. trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ;; Amiga*:UNIX_System_V:4.0:*) GUESS=m68k-unknown-sysv4 ;; *:[Aa]miga[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-amigaos ;; *:[Mm]orph[Oo][Ss]:*:*) GUESS=$UNAME_MACHINE-unknown-morphos ;; *:OS/390:*:*) GUESS=i370-ibm-openedition ;; *:z/VM:*:*) GUESS=s390-ibm-zvmoe ;; *:OS400:*:*) GUESS=powerpc-ibm-os400 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) GUESS=arm-acorn-riscix$UNAME_RELEASE ;; arm*:riscos:*:*|arm*:RISCOS:*:*) GUESS=arm-unknown-riscos ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) GUESS=hppa1.1-hitachi-hiuxmpp ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. case `(/bin/universe) 2>/dev/null` in att) GUESS=pyramid-pyramid-sysv3 ;; *) GUESS=pyramid-pyramid-bsd ;; esac ;; NILE*:*:*:dcosx) GUESS=pyramid-pyramid-svr4 ;; DRS?6000:unix:4.0:6*) GUESS=sparc-icl-nx6 ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) GUESS=sparc-icl-nx7 ;; esac ;; s390x:SunOS:*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ;; sun4H:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-hal-solaris2$SUN_REL ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris2$SUN_REL ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) GUESS=i386-pc-auroraux$UNAME_RELEASE ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=sparc-sun-solaris3$SUN_REL ;; sun4*:SunOS:*:*) case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like '4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; sun3*:SunOS:*:*) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case `/bin/arch` in sun3) GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac ;; aushp:SunOS:*:*) GUESS=sparc-auspex-sunos$UNAME_RELEASE ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) GUESS=m68k-atari-mint$UNAME_RELEASE ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) GUESS=m68k-milan-mint$UNAME_RELEASE ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) GUESS=m68k-hades-mint$UNAME_RELEASE ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) GUESS=m68k-unknown-mint$UNAME_RELEASE ;; m68k:machten:*:*) GUESS=m68k-apple-machten$UNAME_RELEASE ;; powerpc:machten:*:*) GUESS=powerpc-apple-machten$UNAME_RELEASE ;; RISC*:Mach:*:*) GUESS=mips-dec-mach_bsd4.3 ;; RISC*:ULTRIX:*:*) GUESS=mips-dec-ultrix$UNAME_RELEASE ;; VAX*:ULTRIX*:*:*) GUESS=vax-dec-ultrix$UNAME_RELEASE ;; 2020:CLIX:*:* | 2430:CLIX:*:*) GUESS=clipper-intergraph-clix$UNAME_RELEASE ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } GUESS=mips-mips-riscos$UNAME_RELEASE ;; Motorola:PowerMAX_OS:*:*) GUESS=powerpc-motorola-powermax ;; Motorola:*:4.3:PL8-*) GUESS=powerpc-harris-powermax ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) GUESS=powerpc-harris-powermax ;; Night_Hawk:Power_UNIX:*:*) GUESS=powerpc-harris-powerunix ;; m88k:CX/UX:7*:*) GUESS=m88k-harris-cxux7 ;; m88k:*:4*:R4*) GUESS=m88k-motorola-sysv4 ;; m88k:*:3*:R3*) GUESS=m88k-motorola-sysv3 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then GUESS=m88k-dg-dgux$UNAME_RELEASE else GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else GUESS=i586-dg-dgux$UNAME_RELEASE fi ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) GUESS=m88k-dolphin-sysv3 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 GUESS=m88k-motorola-sysv3 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) GUESS=m88k-tektronix-sysv3 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) GUESS=m68k-tektronix-bsd ;; *:IRIX*:*:*) IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` GUESS=mips-sgi-irix$IRIX_REL ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) GUESS=i386-ibm-aix ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then GUESS=$SYSTEM_NAME else GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then GUESS=rs6000-ibm-aix3.2.4 else GUESS=rs6000-ibm-aix3.2 fi ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi GUESS=$IBM_ARCH-ibm-aix$IBM_REV ;; *:AIX:*:*) GUESS=rs6000-ibm-aix ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) GUESS=romp-ibm-bsd4.4 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) GUESS=rs6000-bull-bosx ;; DPX/2?00:B.O.S.:*:*) GUESS=m68k-bull-sysv3 ;; 9000/[34]??:4.3bsd:1.*:*) GUESS=m68k-hp-bsd ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) GUESS=m68k-hp-bsd4.4 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if test "$HP_ARCH" = ""; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if test "$HP_ARCH" = hppa2.0w then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi GUESS=$HP_ARCH-hp-hpux$HPUX_REV ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` GUESS=ia64-hp-hpux$HPUX_REV ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } GUESS=unknown-hitachi-hiuxwe2 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) GUESS=hppa1.1-hp-bsd ;; 9000/8??:4.3bsd:*:*) GUESS=hppa1.0-hp-bsd ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) GUESS=hppa1.0-hp-mpeix ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) GUESS=hppa1.1-hp-osf ;; hp8??:OSF1:*:*) GUESS=hppa1.0-hp-osf ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then GUESS=$UNAME_MACHINE-unknown-osf1mk else GUESS=$UNAME_MACHINE-unknown-osf1 fi ;; parisc*:Lites*:*:*) GUESS=hppa1.1-hp-lites ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) GUESS=c1-convex-bsd ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) GUESS=c34-convex-bsd ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) GUESS=c38-convex-bsd ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) GUESS=c4-convex-bsd ;; CRAY*Y-MP:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=ymp-cray-unicos$CRAY_REL ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=t90-cray-unicos$CRAY_REL ;; CRAY*T3E:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=alphaev5-cray-unicosmk$CRAY_REL ;; CRAY*SV1:*:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=sv1-cray-unicos$CRAY_REL ;; *:UNICOS/mp:*:*) CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` GUESS=craynv-cray-unicosmp$CRAY_REL ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ;; sparc*:BSD/OS:*:*) GUESS=sparc-unknown-bsdi$UNAME_RELEASE ;; *:BSD/OS:*:*) GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ;; i*:CYGWIN*:*) GUESS=$UNAME_MACHINE-pc-cygwin ;; *:MINGW64*:*) GUESS=$UNAME_MACHINE-pc-mingw64 ;; *:MINGW*:*) GUESS=$UNAME_MACHINE-pc-mingw32 ;; *:MSYS*:*) GUESS=$UNAME_MACHINE-pc-msys ;; i*:PW*:*) GUESS=$UNAME_MACHINE-pc-pw32 ;; *:SerenityOS:*:*) GUESS=$UNAME_MACHINE-pc-serenity ;; *:Interix*:*) case $UNAME_MACHINE in x86) GUESS=i586-pc-interix$UNAME_RELEASE ;; authenticamd | genuineintel | EM64T) GUESS=x86_64-unknown-interix$UNAME_RELEASE ;; IA64) GUESS=ia64-unknown-interix$UNAME_RELEASE ;; esac ;; i*:UWIN*:*) GUESS=$UNAME_MACHINE-pc-uwin ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) GUESS=x86_64-pc-cygwin ;; prep*:SunOS:5.*:*) SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` GUESS=powerpcle-unknown-solaris2$SUN_REL ;; *:GNU:*:*) # the GNU system GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ;; *:GNU/*:*:*) # other systems with GNU libc and userland GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-pc-managarm-mlibc" ;; *:[Mm]anagarm:*:*) GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __ARM_EABI__ #ifdef __ARM_PCS_VFP ABI=eabihf #else ABI=eabi #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; esac fi GUESS=$CPU-unknown-linux-$LIBCABI ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi ;; avr32*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; cris:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; crisv32:Linux:*:*) GUESS=$UNAME_MACHINE-axis-linux-$LIBC ;; e2k:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; frv:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; hexagon:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:Linux:*:*) GUESS=$UNAME_MACHINE-pc-linux-$LIBC ;; ia64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; kvx:cos:*:*) GUESS=$UNAME_MACHINE-unknown-cos ;; kvx:mbr:*:*) GUESS=$UNAME_MACHINE-unknown-mbr ;; loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m68*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) GUESS=or1k-unknown-linux-$LIBC ;; or32:Linux:*:* | or1k*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; padre:Linux:*:*) GUESS=sparc-unknown-linux-$LIBC ;; parisc64:Linux:*:* | hppa64:Linux:*:*) GUESS=hppa64-unknown-linux-$LIBC ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; *) GUESS=hppa-unknown-linux-$LIBC ;; esac ;; ppc64:Linux:*:*) GUESS=powerpc64-unknown-linux-$LIBC ;; ppc:Linux:*:*) GUESS=powerpc-unknown-linux-$LIBC ;; ppc64le:Linux:*:*) GUESS=powerpc64le-unknown-linux-$LIBC ;; ppcle:Linux:*:*) GUESS=powerpcle-unknown-linux-$LIBC ;; riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; s390:Linux:*:* | s390x:Linux:*:*) GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ;; sh64*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sh*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; sparc:Linux:*:* | sparc64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; tile*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; vax:Linux:*:*) GUESS=$UNAME_MACHINE-dec-linux-$LIBC ;; x86_64:Linux:*:*) set_cc_for_build CPU=$UNAME_MACHINE LIBCABI=$LIBC if test "$CC_FOR_BUILD" != no_compiler_found; then ABI=64 sed 's/^ //' << EOF > "$dummy.c" #ifdef __i386__ ABI=x86 #else #ifdef __ILP32__ ABI=x32 #endif #endif EOF cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` eval "$cc_set_abi" case $ABI in x86) CPU=i686 ;; x32) LIBCABI=${LIBC}x32 ;; esac fi GUESS=$CPU-pc-linux-$LIBCABI ;; xtensa*:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. GUESS=i386-sequent-sysv4 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; i*86:XTS-300:*:STOP) GUESS=$UNAME_MACHINE-unknown-stop ;; i*86:atheos:*:*) GUESS=$UNAME_MACHINE-unknown-atheos ;; i*86:syllable:*:*) GUESS=$UNAME_MACHINE-pc-syllable ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) GUESS=i386-unknown-lynxos$UNAME_RELEASE ;; i*86:*DOS:*:*) GUESS=$UNAME_MACHINE-pc-msdosdjgpp ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else GUESS=$UNAME_MACHINE-pc-sysv32 fi ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. GUESS=i586-pc-msdosdjgpp ;; Intel:Mach:3*:*) GUESS=i386-pc-mach3 ;; paragon:*:*:*) GUESS=i860-intel-osf1 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi ;; mini*:CTIX:SYS*5:*) # "miniframe" GUESS=m68010-convergent-sysv ;; mc68k:UNIX:SYSTEM5:3.51m) GUESS=m68k-convergent-sysv ;; M680?0:D-NIX:5.3:*) GUESS=m68k-diab-dnix ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) GUESS=m68k-unknown-lynxos$UNAME_RELEASE ;; mc68030:UNIX_System_V:4.*:*) GUESS=m68k-atari-sysv4 ;; TSUNAMI:LynxOS:2.*:*) GUESS=sparc-unknown-lynxos$UNAME_RELEASE ;; rs6000:LynxOS:2.*:*) GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ;; SM[BE]S:UNIX_SV:*:*) GUESS=mips-dde-sysv$UNAME_RELEASE ;; RM*:ReliantUNIX-*:*:*) GUESS=mips-sni-sysv4 ;; RM*:SINIX-*:*:*) GUESS=mips-sni-sysv4 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` GUESS=$UNAME_MACHINE-sni-sysv4 else GUESS=ns32k-sni-sysv fi ;; PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm GUESS=hppa1.1-stratus-sysv4 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. GUESS=i860-stratus-sysv4 ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. GUESS=$UNAME_MACHINE-stratus-vos ;; *:VOS:*:*) # From Paul.Green@stratus.com. GUESS=hppa1.1-stratus-vos ;; mc68*:A/UX:*:*) GUESS=m68k-apple-aux$UNAME_RELEASE ;; news*:NEWS-OS:6*:*) GUESS=mips-sony-newsos6 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then GUESS=mips-nec-sysv$UNAME_RELEASE else GUESS=mips-unknown-sysv$UNAME_RELEASE fi ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. GUESS=powerpc-be-beos ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. GUESS=powerpc-apple-beos ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. GUESS=i586-pc-beos ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. GUESS=i586-pc-haiku ;; ppc:Haiku:*:*) # Haiku running on Apple PowerPC GUESS=powerpc-apple-haiku ;; *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) GUESS=$UNAME_MACHINE-unknown-haiku ;; SX-4:SUPER-UX:*:*) GUESS=sx4-nec-superux$UNAME_RELEASE ;; SX-5:SUPER-UX:*:*) GUESS=sx5-nec-superux$UNAME_RELEASE ;; SX-6:SUPER-UX:*:*) GUESS=sx6-nec-superux$UNAME_RELEASE ;; SX-7:SUPER-UX:*:*) GUESS=sx7-nec-superux$UNAME_RELEASE ;; SX-8:SUPER-UX:*:*) GUESS=sx8-nec-superux$UNAME_RELEASE ;; SX-8R:SUPER-UX:*:*) GUESS=sx8r-nec-superux$UNAME_RELEASE ;; SX-ACE:SUPER-UX:*:*) GUESS=sxace-nec-superux$UNAME_RELEASE ;; Power*:Rhapsody:*:*) GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ;; *:Rhapsody:*:*) GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ;; arm64:Darwin:*:*) GUESS=aarch64-apple-darwin$UNAME_RELEASE ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ;; *:QNX:*:4*) GUESS=i386-pc-qnx ;; NEO-*:NONSTOP_KERNEL:*:*) GUESS=neo-tandem-nsk$UNAME_RELEASE ;; NSE-*:NONSTOP_KERNEL:*:*) GUESS=nse-tandem-nsk$UNAME_RELEASE ;; NSR-*:NONSTOP_KERNEL:*:*) GUESS=nsr-tandem-nsk$UNAME_RELEASE ;; NSV-*:NONSTOP_KERNEL:*:*) GUESS=nsv-tandem-nsk$UNAME_RELEASE ;; NSX-*:NONSTOP_KERNEL:*:*) GUESS=nsx-tandem-nsk$UNAME_RELEASE ;; *:NonStop-UX:*:*) GUESS=mips-compaq-nonstopux ;; BS2000:POSIX*:*:*) GUESS=bs2000-siemens-sysv ;; DS/*:UNIX_System_V:*:*) GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "${cputype-}" = 386; then UNAME_MACHINE=i386 elif test "x${cputype-}" != x; then UNAME_MACHINE=$cputype fi GUESS=$UNAME_MACHINE-unknown-plan9 ;; *:TOPS-10:*:*) GUESS=pdp10-unknown-tops10 ;; *:TENEX:*:*) GUESS=pdp10-unknown-tenex ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) GUESS=pdp10-dec-tops20 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) GUESS=pdp10-xkl-tops20 ;; *:TOPS-20:*:*) GUESS=pdp10-unknown-tops20 ;; *:ITS:*:*) GUESS=pdp10-unknown-its ;; SEI:*:*:SEIUX) GUESS=mips-sei-seiux$UNAME_RELEASE ;; *:DragonFly:*:*) DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case $UNAME_MACHINE in A*) GUESS=alpha-dec-vms ;; I*) GUESS=ia64-dec-vms ;; V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) GUESS=i386-pc-xenix ;; i*86:skyos:*:*) SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ;; i*86:rdos:*:*) GUESS=$UNAME_MACHINE-pc-rdos ;; i*86:Fiwix:*:*) GUESS=$UNAME_MACHINE-pc-fiwix ;; *:AROS:*:*) GUESS=$UNAME_MACHINE-unknown-aros ;; x86_64:VMkernel:*:*) GUESS=$UNAME_MACHINE-unknown-esx ;; amd64:Isilon\ OneFS:*:*) GUESS=x86_64-unknown-onefs ;; *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; esac # Do we have a guess based on uname results? if test "x$GUESS" != x; then echo "$GUESS" exit fi # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF fi exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: jimjag-epm-84910c6/config.h.in000066400000000000000000000041441521151356300160420ustar00rootroot00000000000000/* * Configuration file for the ESP Package Manager (EPM). * * Copyright 2020 by Jim Jagielski * Copyright 1999-2014 by Michael R Sweet * Copyright 1999-2005 by Easy Software Products. * * 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, 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. */ /* * Version of software... */ #define EPM_VERSION "" /* * Where are files stored? */ #define EPM_SOFTWARE "/etc/software" /* * Where are binaries stored? */ #define EPM_BINDIR "/usr/bin" #define EPM_DATADIR "/usr/share/epm" #define EPM_LIBDIR "/usr/lib/epm" /* * What options does the strip command take? */ #define EPM_STRIP "/bin/strip" /* * What command is used to build RPMs? */ #define EPM_RPMBUILD "rpmbuild" /* * What option is used to specify the RPM architecture? */ #define EPM_RPMARCH "--target" /* * Does this version of RPM support the "topdir_" variable? */ #undef EPM_RPMTOPDIR /* * Compiler stuff... */ #undef const #undef __CHAR_UNSIGNED__ /* * Do we have the header file? */ #undef HAVE_STRINGS_H /* * Which header files do we use for the statfs() function? */ #undef HAVE_SYS_MOUNT_H #undef HAVE_SYS_STATFS_H #undef HAVE_SYS_VFS_H #undef HAVE_SYS_PARAM_H /* * Do we have the strXXX() functions? */ #undef HAVE_STRCASECMP #undef HAVE_STRDUP #undef HAVE_STRLCAT #undef HAVE_STRLCPY #undef HAVE_STRNCASECMP /* * Do we have the (v)snprintf() functions? */ #undef HAVE_SNPRINTF #undef HAVE_VSNPRINTF /* * Which directory functions and headers do we use? */ #undef HAVE_DIRENT_H #undef HAVE_SYS_DIR_H #undef HAVE_SYS_NDIR_H #undef HAVE_NDIR_H /* * Where is the "gzip" executable? */ #define EPM_GZIP "gzip" /* * Compress files by default? */ #define EPM_COMPRESS 0 jimjag-epm-84910c6/config.sub000077500000000000000000001072021521151356300160010ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2023 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2023-09-19' # This file 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. # The "shellcheck disable" line above the timestamp inhibits complaints # about features and limitations of the classic Bourne shell that were # superseded or lifted in POSIX. However, this script identifies a wide # variety of pre-POSIX systems that do not have POSIX shells at all, and # even some reasonably current systems (Solaris 10 as case-in-point) still # have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 basic_os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; android-linux) basic_machine=$field1-unknown basic_os=linux-android ;; *) basic_machine=$field1-$field2 basic_os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec basic_os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 basic_os=$field2 ;; zephyr*) basic_machine=$field1-unknown basic_os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 basic_os= ;; *) basic_machine=$field1 basic_os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc basic_os=bsd ;; a29khif) basic_machine=a29k-amd basic_os=udi ;; adobe68k) basic_machine=m68010-adobe basic_os=scout ;; alliant) basic_machine=fx80-alliant basic_os= ;; altos | altos3068) basic_machine=m68k-altos basic_os= ;; am29k) basic_machine=a29k-none basic_os=bsd ;; amdahl) basic_machine=580-amdahl basic_os=sysv ;; amiga) basic_machine=m68k-unknown basic_os= ;; amigaos | amigados) basic_machine=m68k-unknown basic_os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown basic_os=sysv4 ;; apollo68) basic_machine=m68k-apollo basic_os=sysv ;; apollo68bsd) basic_machine=m68k-apollo basic_os=bsd ;; aros) basic_machine=i386-pc basic_os=aros ;; aux) basic_machine=m68k-apple basic_os=aux ;; balance) basic_machine=ns32k-sequent basic_os=dynix ;; blackfin) basic_machine=bfin-unknown basic_os=linux ;; cegcc) basic_machine=arm-unknown basic_os=cegcc ;; convex-c1) basic_machine=c1-convex basic_os=bsd ;; convex-c2) basic_machine=c2-convex basic_os=bsd ;; convex-c32) basic_machine=c32-convex basic_os=bsd ;; convex-c34) basic_machine=c34-convex basic_os=bsd ;; convex-c38) basic_machine=c38-convex basic_os=bsd ;; cray) basic_machine=j90-cray basic_os=unicos ;; crds | unos) basic_machine=m68k-crds basic_os= ;; da30) basic_machine=m68k-da30 basic_os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec basic_os= ;; delta88) basic_machine=m88k-motorola basic_os=sysv3 ;; dicos) basic_machine=i686-pc basic_os=dicos ;; djgpp) basic_machine=i586-pc basic_os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd basic_os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson basic_os=ose ;; gmicro) basic_machine=tron-gmicro basic_os=sysv ;; go32) basic_machine=i386-pc basic_os=go32 ;; h8300hms) basic_machine=h8300-hitachi basic_os=hms ;; h8300xray) basic_machine=h8300-hitachi basic_os=xray ;; h8500hms) basic_machine=h8500-hitachi basic_os=hms ;; harris) basic_machine=m88k-harris basic_os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp basic_os=hpux ;; hp300bsd) basic_machine=m68k-hp basic_os=bsd ;; hppaosf) basic_machine=hppa1.1-hp basic_os=osf ;; hppro) basic_machine=hppa1.1-hp basic_os=proelf ;; i386mach) basic_machine=i386-mach basic_os=mach ;; isi68 | isi) basic_machine=m68k-isi basic_os=sysv ;; m68knommu) basic_machine=m68k-unknown basic_os=linux ;; magnum | m3230) basic_machine=mips-mips basic_os=sysv ;; merlin) basic_machine=ns32k-utek basic_os=sysv ;; mingw64) basic_machine=x86_64-pc basic_os=mingw64 ;; mingw32) basic_machine=i686-pc basic_os=mingw32 ;; mingw32ce) basic_machine=arm-unknown basic_os=mingw32ce ;; monitor) basic_machine=m68k-rom68k basic_os=coff ;; morphos) basic_machine=powerpc-unknown basic_os=morphos ;; moxiebox) basic_machine=moxie-unknown basic_os=moxiebox ;; msdos) basic_machine=i386-pc basic_os=msdos ;; msys) basic_machine=i686-pc basic_os=msys ;; mvs) basic_machine=i370-ibm basic_os=mvs ;; nacl) basic_machine=le32-unknown basic_os=nacl ;; ncr3000) basic_machine=i486-ncr basic_os=sysv4 ;; netbsd386) basic_machine=i386-pc basic_os=netbsd ;; netwinder) basic_machine=armv4l-rebel basic_os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony basic_os=newsos ;; news1000) basic_machine=m68030-sony basic_os=newsos ;; necv70) basic_machine=v70-nec basic_os=sysv ;; nh3000) basic_machine=m68k-harris basic_os=cxux ;; nh[45]000) basic_machine=m88k-harris basic_os=cxux ;; nindy960) basic_machine=i960-intel basic_os=nindy ;; mon960) basic_machine=i960-intel basic_os=mon960 ;; nonstopux) basic_machine=mips-compaq basic_os=nonstopux ;; os400) basic_machine=powerpc-ibm basic_os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson basic_os=ose ;; os68k) basic_machine=m68k-none basic_os=os68k ;; paragon) basic_machine=i860-intel basic_os=osf ;; parisc) basic_machine=hppa-unknown basic_os=linux ;; psp) basic_machine=mipsallegrexel-sony basic_os=psp ;; pw32) basic_machine=i586-unknown basic_os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc basic_os=rdos ;; rdos32) basic_machine=i386-pc basic_os=rdos ;; rom68k) basic_machine=m68k-rom68k basic_os=coff ;; sa29200) basic_machine=a29k-amd basic_os=udi ;; sei) basic_machine=mips-sei basic_os=seiux ;; sequent) basic_machine=i386-sequent basic_os= ;; sps7) basic_machine=m68k-bull basic_os=sysv2 ;; st2000) basic_machine=m68k-tandem basic_os= ;; stratus) basic_machine=i860-stratus basic_os=sysv4 ;; sun2) basic_machine=m68000-sun basic_os= ;; sun2os3) basic_machine=m68000-sun basic_os=sunos3 ;; sun2os4) basic_machine=m68000-sun basic_os=sunos4 ;; sun3) basic_machine=m68k-sun basic_os= ;; sun3os3) basic_machine=m68k-sun basic_os=sunos3 ;; sun3os4) basic_machine=m68k-sun basic_os=sunos4 ;; sun4) basic_machine=sparc-sun basic_os= ;; sun4os3) basic_machine=sparc-sun basic_os=sunos3 ;; sun4os4) basic_machine=sparc-sun basic_os=sunos4 ;; sun4sol2) basic_machine=sparc-sun basic_os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun basic_os= ;; sv1) basic_machine=sv1-cray basic_os=unicos ;; symmetry) basic_machine=i386-sequent basic_os=dynix ;; t3e) basic_machine=alphaev5-cray basic_os=unicos ;; t90) basic_machine=t90-cray basic_os=unicos ;; toad1) basic_machine=pdp10-xkl basic_os=tops20 ;; tpf) basic_machine=s390x-ibm basic_os=tpf ;; udi29k) basic_machine=a29k-amd basic_os=udi ;; ultra3) basic_machine=a29k-nyu basic_os=sym1 ;; v810 | necv810) basic_machine=v810-nec basic_os=none ;; vaxv) basic_machine=vax-dec basic_os=sysv ;; vms) basic_machine=vax-dec basic_os=vms ;; vsta) basic_machine=i386-pc basic_os=vsta ;; vxworks960) basic_machine=i960-wrs basic_os=vxworks ;; vxworks68) basic_machine=m68k-wrs basic_os=vxworks ;; vxworks29k) basic_machine=a29k-wrs basic_os=vxworks ;; xbox) basic_machine=i686-pc basic_os=mingw32 ;; ymp) basic_machine=ymp-cray basic_os=unicos ;; *) basic_machine=$1 basic_os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm basic_os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec basic_os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull basic_os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi basic_os=${basic_os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc basic_os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray basic_os=${basic_os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $basic_os in irix*) ;; *) basic_os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari basic_os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony basic_os=newsos ;; next | m*-next) cpu=m68k vendor=next case $basic_os in openstep*) ;; nextstep*) ;; ns2*) basic_os=nextstep2 ;; *) basic_os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki basic_os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi basic_os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde basic_os=${basic_os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs basic_os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond basic_os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if test x"$basic_os" != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. obj= case $basic_os in gnu/linux*) kernel=linux os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` ;; os2-emx) kernel=os2 os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` ;; nto-qnx*) kernel=nto os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` ;; *-*) # shellcheck disable=SC2162 saved_IFS=$IFS IFS="-" read kernel os <&2 fi ;; *) echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 exit 1 ;; esac case $obj in aout* | coff* | elf* | pe*) ;; '') # empty is fine ;; *) echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 exit 1 ;; esac # Here we handle the constraint that a (synthetic) cpu and os are # valid only in combination with each other and nowhere else. case $cpu-$os in # The "javascript-unknown-ghcjs" triple is used by GHC; we # accept it here in order to tolerate that, but reject any # variations. javascript-ghcjs) ;; javascript-* | *-ghcjs) echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. case $kernel-$os-$obj in linux-gnu*- | linux-dietlibc*- | linux-android*- | linux-newlib*- \ | linux-musl*- | linux-relibc*- | linux-uclibc*- | linux-mlibc*- ) ;; uclinux-uclibc*- ) ;; managarm-mlibc*- | managarm-kernel*- ) ;; windows*-msvc*-) ;; -dietlibc*- | -newlib*- | -musl*- | -relibc*- | -uclibc*- | -mlibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; -kernel*- ) echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 exit 1 ;; *-kernel*- ) echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 exit 1 ;; *-msvc*- ) echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 exit 1 ;; kfreebsd*-gnu*- | kopensolaris*-gnu*-) ;; vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) ;; nto-qnx*-) ;; os2-emx-) ;; *-eabi*- | *-gnueabi*-) ;; none--*) # None (no kernel, i.e. freestanding / bare metal), # can be paired with an machine code file format ;; -*-) # Blank kernel with real OS is always fine. ;; --*) # Blank kernel and OS with real machine code file format is always fine. ;; *-*-*) echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $cpu-$os in *-riscix*) vendor=acorn ;; *-sunos*) vendor=sun ;; *-cnk* | *-aix*) vendor=ibm ;; *-beos*) vendor=be ;; *-hpux*) vendor=hp ;; *-mpeix*) vendor=hp ;; *-hiux*) vendor=hitachi ;; *-unos*) vendor=crds ;; *-dgux*) vendor=dg ;; *-luna*) vendor=omron ;; *-genix*) vendor=ns ;; *-clix*) vendor=intergraph ;; *-mvs* | *-opened*) vendor=ibm ;; *-os400*) vendor=ibm ;; s390-* | s390x-*) vendor=ibm ;; *-ptx*) vendor=sequent ;; *-tpf*) vendor=ibm ;; *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; *-aux*) vendor=apple ;; *-hms*) vendor=hitachi ;; *-mpw* | *-macos*) vendor=apple ;; *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; *-vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: jimjag-epm-84910c6/configure000077500000000000000000005667621521151356300157510ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.73 for EPM 5.0.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2017, 2020-2026 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # contradicts POSIX and common usage. Disable this. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac case $# in # (( 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; esac # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # contradicts POSIX and common usage. Disable this. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case e in #( e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else case e in #( e) exitcode=1; echo positional parameters were not saved. ;; esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else case e in #( e) as_have_required=no ;; esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi ;; esac fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac case $# in # (( 0) exec $CONFIG_SHELL $as_opts "$as_myself" ;; *) exec $CONFIG_SHELL $as_opts "$as_myself" "$@" ;; esac # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed 'exec'. printf '%s\n' "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf '%s\n' "$0: This script requires a shell more modern than all" printf '%s\n' "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf '%s\n' "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf '%s\n' "$0: be upgraded to zsh 4.3.4 or later." else printf '%s\n' "$0: Please tell bug-autoconf@gnu.org and $0: https://github.com/jimjag/epm/issues about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi ;; esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf '%s\n' X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf '%s\n' "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf '%s\n' X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' t clear :clear s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf '%s\n' "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_CONFIG_STATUS= ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='EPM' PACKAGE_TARNAME='epm' PACKAGE_VERSION='5.0.1' PACKAGE_STRING='EPM 5.0.1' PACKAGE_BUGREPORT='https://github.com/jimjag/epm/issues' PACKAGE_URL='https://github.com/jimjag/epm' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_STDIO_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_STRING_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_c_list= ac_subst_vars='LTLIBOBJS LIBOBJS EPM_DATADIR EPM_LIBDIR EPM_BINDIR EPM_STRIP EPM_GZIP EPM_SOFTWARE ARFLAGS GUILIBS GUIS INSTALL_OSX INSTALL_GUIS FLTKCONFIG EGREP GREP STRIP RPMBUILD RPM RM GROFF NROFF MKDIR INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM HTMLDOC GZIP CP CODE_SIGN CHMOD AR RANLIB ac_ct_CXX CXXFLAGS CXX OBJEXT EXEEXT ac_ct_CC CPPFLAGS CFLAGS CC OPTIM CSFLAGS ARCHFLAGS LDFLAGS host_os host_vendor host_cpu host build_os build_vendor build_cpu build VERNUMBER VERSION ECHO_T ECHO_N ECHO_C target_alias host_alias build_alias LIBS DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_archflags enable_debug enable_sanitizer enable_gui enable_fltk with_docdir with_softwaredir ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: '$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf '%s\n' "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: '$ac_option' Try '$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf '%s\n' "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf '%s\n' "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`printf '%s\n' $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf '%s\n' X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF 'configure' configures EPM 5.0.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, 'make install' will install all the files in '$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify an installation prefix other than '$ac_default_prefix' using '--prefix', for instance '--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/epm] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of EPM 5.0.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-debug turn on debugging, default=no --enable-sanitizer build with AddressSanitizer, default=no --enable-gui turn on GUI utilities, default=auto --enable-fltk enable fltk, default=auto Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-archflags=flags specify architecture flags [default=none] --with-docdir=/dir set directory for documentation [default=${datadir}/doc/epm] --with-softwaredir=/dir set directory for EPM uninstall files and init scripts [default=/etc/software] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags Use these variables to override the choices made by 'configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . EPM home page: . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf '%s\n' "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF EPM configure 5.0.1 generated by GNU Autoconf 2.73 Copyright (C) 2026 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else case e in #( e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else case e in #( e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf '%s\n' "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext } then : ac_retval=0 else case e in #( e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 ;; esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (void); below. */ #include #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (void); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main (void) { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" else case e in #( e) eval "$3=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ;; esac fi eval ac_res=\$$3 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf '%s\n' "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf '%s\n' "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by EPM $as_me 5.0.1, which was generated by GNU Autoconf 2.73. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf '%s\n' "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf '%s\n' "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # Dump the cache to stdout. It can be in a pipe (this is a requirement). ac_cache_dump () { # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf '%s\n' "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) } # Print debugging info to stdout. ac_dump_debugging_info () { echo printf '%s\n' "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo ac_cache_dump echo printf '%s\n' "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; esac printf '%s\n' "$ac_var='$ac_val'" done | sort echo if test -n "$ac_subst_files"; then printf '%s\n' "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'*) ac_val=`printf '%s\n' "$ac_val" | sed "s/'/'\\\\\\\\''/g"`;; esac printf '%s\n' "$ac_var='$ac_val'" done | sort echo fi if test -s confdefs.h; then printf '%s\n' "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf '%s\n' "$as_me: caught signal $ac_signal" printf '%s\n' "$as_me: exit $exit_status" } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. ac_exit_trap () { exit_status= # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. ac_dump_debugging_info >&5 eval "rm -f $ac_clean_CONFIG_STATUS core *.core core.conftest.*" && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status } trap 'ac_exit_trap $?' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf '%s\n' "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf '%s\n' "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf '%s\n' "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf '%s\n' "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf '%s\n' "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf '%s\n' "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf '%s\n' "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf '%s\n' "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See 'config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf '%s\n' "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf '%s\n' "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C compiler supports C23 (global declarations) ac_c_conftest_c23_globals=' /* Does the compiler advertise conformance to C17 or earlier? Although GCC 14 does not do that, even with -std=gnu23, it is close enough, and defines __STDC_VERSION == 202000L. */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ <= 201710L # error "Compiler advertises conformance to C17 or earlier" #endif // Check alignas. char alignas (double) c23_aligned_as_double; char alignas (0) c23_no_special_alignment; extern char c23_aligned_as_int; char alignas (0) alignas (int) c23_aligned_as_int; // Check alignof. enum { c23_int_alignment = alignof (int), c23_int_array_alignment = alignof (int[100]), c23_char_alignment = alignof (char) }; static_assert (0 < -alignof (int), "alignof is signed"); int function_with_unnamed_parameter (int) { return 0; } void c23_noreturn (); /* Test parsing of string and char UTF-8 literals (including hex escapes). The parens pacify GCC 15. */ bool use_u8 = (!sizeof u8"\xFF") == (!u8'\''x'\''); bool check_that_bool_works = true | false | !nullptr; #if !true # error "true does not work in #if" #endif #if false #elifdef __STDC_VERSION__ #else # error "#elifdef does not work" #endif #ifndef __has_c_attribute # error "__has_c_attribute not defined" #endif #ifndef __has_include # error "__has_include not defined" #endif #define LPAREN() ( #define FORTY_TWO(x) 42 #define VA_OPT_TEST(r, x, ...) __VA_OPT__ (FORTY_TWO r x)) static_assert (VA_OPT_TEST (LPAREN (), 0, <:-) == 42); static_assert (0b101010 == 42); static_assert (0B101010 == 42); static_assert (0xDEAD'\''BEEF == 3'\''735'\''928'\''559); static_assert (0.500'\''000'\''000 == 0.5); enum unsignedish : unsigned int { uione = 1 }; static_assert (0 < -uione); #include constexpr nullptr_t null_pointer = nullptr; static typeof (1 + 1L) two () { return 2; } static long int three () { return 3; } ' # Test code for whether the C compiler supports C23 (body of main). ac_c_conftest_c23_main=' { label_before_declaration: int arr[10] = {}; if (arr[0]) goto label_before_declaration; if (!arr[0]) goto label_at_end_of_block; label_at_end_of_block: } ok |= !null_pointer; ok |= two != three; ' # Test code for whether the C compiler supports C23 (complete). ac_c_conftest_c23_program="${ac_c_conftest_c23_globals} int main (int, char **) { int ok = 0; ${ac_c_conftest_c23_main} return ok; } " # Test code for whether the C compiler supports C89 (global declarations) ac_c_conftest_c89_globals=' /* Do not test the value of __STDC__, because some compilers define it to 0 or do not define it, while otherwise adequately conforming. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ struct buf { int x; }; struct buf * (*rcsopen) (struct buf *, struct stat *, int); static char *e (char **p, int i) { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* C89 style stringification. */ #define noexpand_stringify(a) #a const char *stringified = noexpand_stringify(arbitrary+token=sequence); /* C89 style token pasting. Exercises some of the corner cases that e.g. old MSVC gets wrong, but not very hard. */ #define noexpand_concat(a,b) a##b #define expand_concat(a,b) noexpand_concat(a,b) extern int vA; extern int vbee; #define aye A #define bee B int *pvA = &expand_concat(v,aye); int *pvbee = &noexpand_concat(v,bee); /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated as an "x". The following induces an error, until -std is added to get proper ANSI mode. Curiously \x00 != x always comes out true, for an array size at least. It is necessary to write \x00 == 0 to get something that is true only with -std. */ int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) '\''x'\'' int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), int, int);' # Test code for whether the C compiler supports C89 (body of main). ac_c_conftest_c89_main=' ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ' # Test code for whether the C compiler supports C99 (global declarations) ac_c_conftest_c99_globals=' /* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif // See if C++-style comments work. #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare // FILE and stderr, and "aND" is used instead of "and" to work around // GCC bug 40564 which is irrelevant here. #define debug(...) dprintf (2, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, aND third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK #error "your preprocessor is broken" #endif #if BIG_OK #else #error "your preprocessor is broken" #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) continue; return 0; } // Check varargs and va_copy. static bool test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str = ""; int number = 0; float fnumber = 0; while (*format) { switch (*format++) { case '\''s'\'': // string str = va_arg (args_copy, const char *); break; case '\''d'\'': // int number = va_arg (args_copy, int); break; case '\''f'\'': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); return *str && number && fnumber; } ' # Test code for whether the C compiler supports C99 (body of main). ac_c_conftest_c99_main=' // Check bool. _Bool success = false; success |= (argc != 0); // Check restrict. if (test_restrict ("String literal") == 0) success = true; const char *restrict newvar = "Another string"; // Check varargs. success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. static struct incomplete_array *volatile incomplete_array_pointer; struct incomplete_array *ia = incomplete_array_pointer; ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Work around memory leak warnings. free (ia); // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; // Do not test for VLAs, as some otherwise-conforming compilers lack them. // C code should instead use __STDC_NO_VLA__; see Autoconf manual. // work around unused variable warnings ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' || ni.number != 58); ' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' /* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif // Check _Alignas. char _Alignas (double) aligned_as_double; char _Alignas (0) no_special_alignment; extern char aligned_as_int; char _Alignas (0) _Alignas (int) aligned_as_int; // Check _Alignof. enum { int_alignment = _Alignof (int), int_array_alignment = _Alignof (int[100]), char_alignment = _Alignof (char) }; _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); // Check _Noreturn. int _Noreturn does_not_return (void) { for (;;) continue; } // Check _Static_assert. struct test_static_assert { int x; _Static_assert (sizeof (int) <= sizeof (long int), "_Static_assert does not work in struct"); long int y; }; // Check UTF-8 literals. #define u8 syntax error! char const utf8_literal[] = u8"happens to be ASCII" "another string"; // Check duplicate typedefs. typedef long *long_ptr; typedef long int *long_ptr; typedef long_ptr long_ptr; // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. struct anonymous { union { struct { int i; int j; }; struct { int k; long int l; } w; }; int m; } v1; ' # Test code for whether the C compiler supports C11 (body of main). ac_c_conftest_c11_main=' _Static_assert ((offsetof (struct anonymous, i) == offsetof (struct anonymous, w.k)), "Anonymous union alignment botch"); v1.i = 2; v1.w.k = 5; ok |= v1.i != 5; ' # Test code for whether the C compiler supports C11 (complete). ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} ${ac_c_conftest_c11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} ${ac_c_conftest_c11_main} return ok; } " # Test code for whether the C compiler supports C99 (complete). ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ${ac_c_conftest_c99_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} ${ac_c_conftest_c99_main} return ok; } " # Test code for whether the C compiler supports C89 (complete). ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} int main (int argc, char **argv) { int ok = 0; ${ac_c_conftest_c89_main} return ok; } " as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" # Auxiliary files required by this configure script. ac_aux_files="install-sh config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf '%s\n' "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf '%s\n' "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf '%s\n' "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else case e in #( e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; esac fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 printf '%s\n' "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 printf '%s\n' "$as_me: error: '$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w= for ac_val in x $ac_old_val; do ac_old_val_w="$ac_old_val_w $ac_val" done ac_new_val_w= for ac_val in x $ac_new_val; do ac_new_val_w="$ac_new_val_w $ac_val" done if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 printf '%s\n' "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 printf '%s\n' "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 printf '%s\n' "$as_me: former value: '$ac_old_val'" >&2;} { printf '%s\n' "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 printf '%s\n' "$as_me: current value: '$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf '%s\n' "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf '%s\n' "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" VERSION="5.0.1" VERNUMBER=500 printf '%s\n' "#define EPM_VERSION \"ESP Package Manager (EPM) v$VERSION\"" >>confdefs.h # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf '%s\n' "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`printf '%s\n' "$build_os" | sed 's/ /-/g'`;; esac { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else case e in #( e) if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf '%s\n' "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`printf '%s\n' "$host_os" | sed 's/ /-/g'`;; esac uname=`uname` uversion=`uname -r | sed -e '1,$s/[^0-9]//g'` host_os_name=`echo $host_os | sed -e '1,$s/[0-9.]*$//g'` if test "$uname" = "IRIX64"; then uname="IRIX" fi CFLAGS="${CFLAGS:=}" CXXFLAGS="${CXXFLAGS:=}" LDFLAGS="${LDFLAGS:=}" # Check whether --with-archflags was given. if test ${with_archflags+y} then : withval=$with_archflags; ARCHFLAGS="$withval" else case e in #( e) ARCHFLAGS="${ARCHFLAGS:=}" ;; esac fi # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; fi # Check whether --enable-sanitizer was given. if test ${enable_sanitizer+y} then : enableval=$enable_sanitizer; fi if test "x$enable_debug" = xyes; then OPTIM="-g" CSFLAGS="" else OPTIM="-Os -g" CSFLAGS="-o runtime" fi # Check whether --enable-gui was given. if test ${enable_gui+y} then : enableval=$enable_gui; fi # Check whether --enable-fltk was given. if test ${enable_fltk+y} then : enableval=$enable_fltk; fi # Check whether --with-docdir was given. if test ${with_docdir+y} then : withval=$with_docdir; docdir="$withval" else case e in #( e) docdir="\${datadir}/doc/epm" ;; esac fi # Check whether --with-softwaredir was given. if test ${with_softwaredir+y} then : withval=$with_softwaredir; softwaredir="$withval" else case e in #( e) softwaredir="" ;; esac fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in clang cc gcc do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 printf '%s\n' "$CC" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in clang cc gcc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 printf '%s\n' "$ac_ct_CC" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi test -z "$CC" && { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 printf %s "checking whether the C compiler works... " >&6; } ac_link_default=`printf '%s\n' "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. # So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else case e in #( e) ac_file='' ;; esac fi if test -z "$ac_file" then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See 'config.log' for more details" "$LINENO" 5; } else case e in #( e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf '%s\n' "yes" >&6; } ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 printf %s "checking for C compiler default output file name... " >&6; } { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf '%s\n' "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) # catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will # work properly (i.e., refer to 'conftest.exe'), while it won't with # 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else case e in #( e) { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest conftest$ac_cv_exeext { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf '%s\n' "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); if (!f) return 1; return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use '--host'. See 'config.log' for more details" "$LINENO" 5; } fi fi fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf '%s\n' "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext \ conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else case e in #( e) printf '%s\n' "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 printf '%s\n' "$as_me: error: in '$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See 'config.log' for more details" "$LINENO" 5; } ;; esac fi rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf '%s\n' "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf '%s\n' "$ac_cv_c_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_c_compiler_gnu if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes else case e in #( e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : else case e in #( e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf '%s\n' "$ac_cv_prog_cc_g" >&6; } if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi ac_prog_cc_stdc=no if test x$ac_prog_cc_stdc = xno then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C23 features" >&5 printf %s "checking for $CC option to enable C23 features... " >&6; } if test ${ac_cv_prog_cc_c23+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c23=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c23_program _ACEOF for ac_arg in '' -std=gnu23 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c23=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c23" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c23" = xno then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf '%s\n' "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c23" = x then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf '%s\n' "none needed" >&6; } else case e in #( e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c23" >&5 printf '%s\n' "$ac_cv_prog_cc_c23" >&6; } CC="$CC $ac_cv_prog_cc_c23" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c23 ac_prog_cc_stdc=c23 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 printf %s "checking for $CC option to enable C11 features... " >&6; } if test ${ac_cv_prog_cc_c11+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c11_program _ACEOF for ac_arg in '' -std=gnu11 -std:c11 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c11" = xno then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf '%s\n' "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c11" = x then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf '%s\n' "none needed" >&6; } else case e in #( e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 printf '%s\n' "$ac_cv_prog_cc_c11" >&6; } CC="$CC $ac_cv_prog_cc_c11" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ac_prog_cc_stdc=c11 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 printf %s "checking for $CC option to enable C99 features... " >&6; } if test ${ac_cv_prog_cc_c99+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c99_program _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c99" = xno then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf '%s\n' "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c99" = x then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf '%s\n' "none needed" >&6; } else case e in #( e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 printf '%s\n' "$ac_cv_prog_cc_c99" >&6; } CC="$CC $ac_cv_prog_cc_c99" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ac_prog_cc_stdc=c99 ;; esac fi fi if test x$ac_prog_cc_stdc = xno then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 printf %s "checking for $CC option to enable C89 features... " >&6; } if test ${ac_cv_prog_cc_c89+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_c_conftest_c89_program _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC ;; esac fi if test "x$ac_cv_prog_cc_c89" = xno then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf '%s\n' "unsupported" >&6; } else case e in #( e) if test "x$ac_cv_prog_cc_c89" = x then : { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf '%s\n' "none needed" >&6; } else case e in #( e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 printf '%s\n' "$ac_cv_prog_cc_c89" >&6; } CC="$CC $ac_cv_prog_cc_c89" ;; esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ac_prog_cc_stdc=c89 ;; esac fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in clang++ c++ g++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf '%s\n' "$CXX" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in clang++ c++ g++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf '%s\n' "$ac_ct_CXX" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf '%s\n' "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf '%s\n' "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else case e in #( e) ac_compiler_gnu=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf '%s\n' "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else case e in #( e) CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else case e in #( e) ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf '%s\n' "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 printf '%s\n' "$RANLIB" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi ;; esac fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 printf '%s\n' "$ac_ct_RANLIB" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf '%s\n' "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_AR+y} then : printf %s "(cached) " >&6 else case e in #( e) case $AR in [\\/]* | ?:[\\/]*) ac_cv_path_AR="$AR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_AR="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi AR=$ac_cv_path_AR if test -n "$AR"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 printf '%s\n' "$AR" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi # Extract the first word of "chmod", so it can be a program name with args. set dummy chmod; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_CHMOD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $CHMOD in [\\/]* | ?:[\\/]*) ac_cv_path_CHMOD="$CHMOD" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_CHMOD="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi CHMOD=$ac_cv_path_CHMOD if test -n "$CHMOD"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CHMOD" >&5 printf '%s\n' "$CHMOD" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi for ac_prog in codesign true do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_CODE_SIGN+y} then : printf %s "(cached) " >&6 else case e in #( e) case $CODE_SIGN in [\\/]* | ?:[\\/]*) ac_cv_path_CODE_SIGN="$CODE_SIGN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_CODE_SIGN="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi CODE_SIGN=$ac_cv_path_CODE_SIGN if test -n "$CODE_SIGN"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CODE_SIGN" >&5 printf '%s\n' "$CODE_SIGN" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi test -n "$CODE_SIGN" && break done # Extract the first word of "cp", so it can be a program name with args. set dummy cp; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_CP+y} then : printf %s "(cached) " >&6 else case e in #( e) case $CP in [\\/]* | ?:[\\/]*) ac_cv_path_CP="$CP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_CP="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi CP=$ac_cv_path_CP if test -n "$CP"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $CP" >&5 printf '%s\n' "$CP" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi # Extract the first word of "gzip", so it can be a program name with args. set dummy gzip; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GZIP+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GZIP in [\\/]* | ?:[\\/]*) ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GZIP="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi GZIP=$ac_cv_path_GZIP if test -n "$GZIP"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5 printf '%s\n' "$GZIP" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi if test x$GZIP = x; then as_fn_error $? "GNU zip not found but required." "$LINENO" 5 fi for ac_prog in htmldoc echo do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_HTMLDOC+y} then : printf %s "(cached) " >&6 else case e in #( e) case $HTMLDOC in [\\/]* | ?:[\\/]*) ac_cv_path_HTMLDOC="$HTMLDOC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_HTMLDOC="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi HTMLDOC=$ac_cv_path_HTMLDOC if test -n "$HTMLDOC"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $HTMLDOC" >&5 printf '%s\n' "$HTMLDOC" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi test -n "$HTMLDOC" && break done # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 else case e in #( e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac # Account for fact that we put trailing slashes in our PATH walk. case $as_dir in #(( ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF/1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF/1 since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir ;; esac fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 printf '%s\n' "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' if test "$INSTALL" = "$ac_install_sh"; then # Use full path to install-sh script... INSTALL="`pwd`/install-sh -c" fi # Extract the first word of "mkdir", so it can be a program name with args. set dummy mkdir; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_MKDIR+y} then : printf %s "(cached) " >&6 else case e in #( e) case $MKDIR in [\\/]* | ?:[\\/]*) ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_MKDIR="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi MKDIR=$ac_cv_path_MKDIR if test -n "$MKDIR"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5 printf '%s\n' "$MKDIR" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi # Extract the first word of "nroff", so it can be a program name with args. set dummy nroff; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_NROFF+y} then : printf %s "(cached) " >&6 else case e in #( e) case $NROFF in [\\/]* | ?:[\\/]*) ac_cv_path_NROFF="$NROFF" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_NROFF="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi NROFF=$ac_cv_path_NROFF if test -n "$NROFF"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5 printf '%s\n' "$NROFF" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi if test x$NROFF = x; then # Extract the first word of "groff", so it can be a program name with args. set dummy groff; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_GROFF+y} then : printf %s "(cached) " >&6 else case e in #( e) case $GROFF in [\\/]* | ?:[\\/]*) ac_cv_path_GROFF="$GROFF" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_GROFF="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi GROFF=$ac_cv_path_GROFF if test -n "$GROFF"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $GROFF" >&5 printf '%s\n' "$GROFF" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi if test x$GROFF = x; then NROFF="echo" else NROFF="$GROFF -T ascii" fi fi # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_RM+y} then : printf %s "(cached) " >&6 else case e in #( e) case $RM in [\\/]* | ?:[\\/]*) ac_cv_path_RM="$RM" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_RM="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi RM=$ac_cv_path_RM if test -n "$RM"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 printf '%s\n' "$RM" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi # Extract the first word of "rpm", so it can be a program name with args. set dummy rpm; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_RPM+y} then : printf %s "(cached) " >&6 else case e in #( e) case $RPM in [\\/]* | ?:[\\/]*) ac_cv_path_RPM="$RPM" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_RPM="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi RPM=$ac_cv_path_RPM if test -n "$RPM"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RPM" >&5 printf '%s\n' "$RPM" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi # Extract the first word of "rpmbuild", so it can be a program name with args. set dummy rpmbuild; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_RPMBUILD+y} then : printf %s "(cached) " >&6 else case e in #( e) case $RPMBUILD in [\\/]* | ?:[\\/]*) ac_cv_path_RPMBUILD="$RPMBUILD" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_RPMBUILD="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi RPMBUILD=$ac_cv_path_RPMBUILD if test -n "$RPMBUILD"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $RPMBUILD" >&5 printf '%s\n' "$RPMBUILD" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_STRIP+y} then : printf %s "(cached) " >&6 else case e in #( e) case $STRIP in [\\/]* | ?:[\\/]*) ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_STRIP="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi STRIP=$ac_cv_path_STRIP if test -n "$STRIP"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 printf '%s\n' "$STRIP" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 printf %s "checking for an ANSI C-conforming const... " >&6; } if test ${ac_cv_c_const+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Derived from code rejected by Sun C 1.0 and similar vintage. */ int x[] = {25, 17}; typedef int const *iptr; iptr foo = &x[0]; ++foo; if (!*foo) return 0; } { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_const=yes else case e in #( e) ac_cv_c_const=no ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 printf '%s\n' "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then printf '%s\n' "#define const /**/" >>confdefs.h fi ac_header= ac_cache= for ac_item in $ac_header_c_list do if test $ac_cache; then ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then printf '%s\n' "#define $ac_item 1" >> confdefs.h fi ac_header= ac_cache= elif test $ac_header; then ac_cache=$ac_item else ac_header=$ac_item fi done if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes then : printf '%s\n' "#define STDC_HEADERS 1" >>confdefs.h fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 printf %s "checking whether char is unsigned... " >&6; } if test ${ac_cv_c_char_unsigned+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main (void) { static int test_array [1 - 2 * !(((char) -1) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_char_unsigned=no else case e in #( e) ac_cv_c_char_unsigned=yes ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 printf '%s\n' "$ac_cv_c_char_unsigned" >&6; } if test $ac_cv_c_char_unsigned = yes; then printf '%s\n' "#define __CHAR_UNSIGNED__ 1" >>confdefs.h fi if test "$uname" = "IRIX"; then if test `uname -r` = 6.5; then STRIP="$STRIP -f -s -k -l -h" fi fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 printf %s "checking for grep that handles long lines and -e... " >&6; } if test ${ac_cv_path_GREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in #( *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf '%s\n' 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf '%s\n' "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" # Autoupdate added the next two lines to ensure that your configure # script's behavior did not change. They are probably safe to remove. { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 printf %s "checking for egrep... " >&6; } if test ${ac_cv_path_EGREP+y} then : printf %s "(cached) " >&6 else case e in #( e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; #( *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf '%s\n' 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 printf '%s\n' "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" EGREP_TRADITIONAL=$EGREP ac_cv_path_EGREP_TRADITIONAL=$EGREP ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`printf '%s\n' "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"` { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 printf %s "checking for $ac_hdr that defines DIR... " >&6; } if eval test \${$as_ac_Header+y} then : printf %s "(cached) " >&6 else case e in #( e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main (void) { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_ac_Header=yes" else case e in #( e) eval "$as_ac_Header=no" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; esac fi eval ac_res=\$$as_ac_Header { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf '%s\n' "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF #define `printf '%s\n' "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 printf %s "checking for library containing opendir... " >&6; } if test ${ac_cv_search_opendir+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char opendir (void); int main (void) { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_opendir+y} then : break fi done if test ${ac_cv_search_opendir+y} then : else case e in #( e) ac_cv_search_opendir=no ;; esac fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 printf '%s\n' "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 printf %s "checking for library containing opendir... " >&6; } if test ${ac_cv_search_opendir+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char opendir (void); int main (void) { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_opendir+y} then : break fi done if test ${ac_cv_search_opendir+y} then : else case e in #( e) ac_cv_search_opendir=no ;; esac fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 printf '%s\n' "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" if test "x$ac_cv_header_strings_h" = xyes then : printf '%s\n' "#define HAVE_STRINGS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "$ac_includes_default" if test "x$ac_cv_header_sys_mount_h" = xyes then : printf '%s\n' "#define HAVE_SYS_MOUNT_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" if test "x$ac_cv_header_sys_param_h" = xyes then : printf '%s\n' "#define HAVE_SYS_PARAM_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/statfs.h" "ac_cv_header_sys_statfs_h" "$ac_includes_default" if test "x$ac_cv_header_sys_statfs_h" = xyes then : printf '%s\n' "#define HAVE_SYS_STATFS_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "sys/vfs.h" "ac_cv_header_sys_vfs_h" "$ac_includes_default" if test "x$ac_cv_header_sys_vfs_h" = xyes then : printf '%s\n' "#define HAVE_SYS_VFS_H 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" if test "x$ac_cv_func_strcasecmp" = xyes then : printf '%s\n' "#define HAVE_STRCASECMP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes then : printf '%s\n' "#define HAVE_STRDUP 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strlcat" "ac_cv_func_strlcat" if test "x$ac_cv_func_strlcat" = xyes then : printf '%s\n' "#define HAVE_STRLCAT 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy" if test "x$ac_cv_func_strlcpy" = xyes then : printf '%s\n' "#define HAVE_STRLCPY 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp" if test "x$ac_cv_func_strncasecmp" = xyes then : printf '%s\n' "#define HAVE_STRNCASECMP 1" >>confdefs.h fi if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: Forcing snprintf emulation for HP-UX." >&5 printf '%s\n' "$as_me: WARNING: Forcing snprintf emulation for HP-UX." >&2;} else ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" if test "x$ac_cv_func_snprintf" = xyes then : printf '%s\n' "#define HAVE_SNPRINTF 1" >>confdefs.h fi ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf" if test "x$ac_cv_func_vsnprintf" = xyes then : printf '%s\n' "#define HAVE_VSNPRINTF 1" >>confdefs.h fi fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for library containing gethostname" >&5 printf %s "checking for library containing gethostname... " >&6; } if test ${ac_cv_search_gethostname+y} then : printf %s "(cached) " >&6 else case e in #( e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. The 'extern "C"' is for builds by C++ compilers; although this is not generally supported in C code supporting it here has little cost and some practical benefit (sr 110532). */ #ifdef __cplusplus extern "C" #endif char gethostname (void); int main (void) { return gethostname (); ; return 0; } _ACEOF for ac_lib in '' socket do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO" then : ac_cv_search_gethostname=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext if test ${ac_cv_search_gethostname+y} then : break fi done if test ${ac_cv_search_gethostname+y} then : else case e in #( e) ac_cv_search_gethostname=no ;; esac fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS ;; esac fi { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostname" >&5 printf '%s\n' "$ac_cv_search_gethostname" >&6; } ac_res=$ac_cv_search_gethostname if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi if test "x$enable_gui" != xno && test "x$enable_fltk" != xno; then # Extract the first word of "fltk-config", so it can be a program name with args. set dummy fltk-config; ac_word=$2 { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_FLTKCONFIG+y} then : printf %s "(cached) " >&6 else case e in #( e) case $FLTKCONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_FLTKCONFIG="$FLTKCONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_path_FLTKCONFIG="$as_dir$ac_word$ac_exec_ext" printf '%s\n' "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac ;; esac fi FLTKCONFIG=$ac_cv_path_FLTKCONFIG if test -n "$FLTKCONFIG"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: $FLTKCONFIG" >&5 printf '%s\n' "$FLTKCONFIG" >&6; } else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } fi else FLTKCONFIG="" fi if test "x$FLTKCONFIG" = x; then GUIS="" GUILIBS="" INSTALL_GUIS="" INSTALL_OSX="" { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, setup GUI requires FLTK 1.1.x or later." >&5 printf '%s\n' "$as_me: WARNING: Sorry, setup GUI requires FLTK 1.1.x or later." >&2;} else CXXFLAGS="`$FLTKCONFIG --cflags` ${CXXFLAGS}" GUIS="setup uninst" GUILIBS="`$FLTKCONFIG --use-images --ldstaticflags`" INSTALL_GUIS="install-guis" if test "$host_os_name" = darwin; then GUILIBS="$GUILIBS -framework Security" INSTALL_OSX="install-macos" else INSTALL_OSX="" fi fi case "$host_os_name" in darwin* | *bsd* | linux* | sunos*) # macOS, *BSD, Linux, and Solaris come with gzip standard printf '%s\n' "#define EPM_COMPRESS 1" >>confdefs.h ;; *) # All other OS's do not. printf '%s\n' "#define EPM_COMPRESS 0" >>confdefs.h ;; esac if test -n "$GCC"; then if test x$enable_sanitizer = xyes; then # Use -fsanitize=address with debugging... OPTIM="-g -fsanitize=address" else # Otherwise use the Fortify enhancements to catch any unbounded # string operations... CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2" CXXFLAGS="$CXXFLAGS -D_FORTIFY_SOURCE=2" fi # Add useful warning options... CFLAGS="-Wall -Wformat -Wno-format-y2k -Wunused $CFLAGS" CXXFLAGS="-Wall -Wformat -Wno-format-y2k -Wunused $CXXFLAGS" # See if GCC supports -Wno-format-truncation... { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if GCC supports -Wno-format-truncation" >&5 printf %s "checking if GCC supports -Wno-format-truncation... " >&6; } OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -Wno-format-truncation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : CFLAGS="$OLDCFLAGS -Wno-format-truncation" CXXFLAGS="$CXXFLAGS -Wno-format-truncation" { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf '%s\n' "yes" >&6; } else case e in #( e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } CFLAGS="$OLDCFLAGS" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # See if GCC supports -fno-rtti... { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if GCC supports -fno-rtti" >&5 printf %s "checking if GCC supports -fno-rtti... " >&6; } OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : CXXFLAGS="$CXXFLAGS -fno-rtti" { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf '%s\n' "yes" >&6; } else case e in #( e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$OLDCFLAGS" # See if GCC supports -fno-exceptions... { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if GCC supports -fno-exceptions" >&5 printf %s "checking if GCC supports -fno-exceptions... " >&6; } OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-exceptions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : CXXFLAGS="$CXXFLAGS -fno-exceptions" { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf '%s\n' "yes" >&6; } else case e in #( e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$OLDCFLAGS" # See if we are running HP-UX or Solaris; if so, try the # -fpermissive option... case $uname in SunOS* | HP-UX*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: checking if GCC supports -fpermissive" >&5 printf %s "checking if GCC supports -fpermissive... " >&6; } OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fpermissive" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : CXXFLAGS="$CXXFLAGS -fpermissive" { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf '%s\n' "yes" >&6; } else case e in #( e) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf '%s\n' "no" >&6; } ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$OLDCFLAGS" ;; *) ;; esac else case $uname in AIX*) if test -z "$OPTIM"; then OPTIM="-O2" fi ;; HP-UX*) if test -z "$OPTIM"; then OPTIM="+O2" fi OPTIM="$OPTIM +DAportable" ;; IRIX*) if test -z "$OPTIM"; then OPTIM="-O2" fi if test $uversion -ge 62; then OPTIM="$OPTIM -n32 -mips3" OPTIM="$OPTIM -OPT:Olimit=3000" OPTIM="-fullwarn -woff 1209,1506,1692 $OPTIM" else OPTIM="-fullwarn $OPTIM" fi ;; SunOS*) # Solaris if test -z "$OPTIM"; then OPTIM="-xO4" fi ;; *) # Running some other operating system... echo "Building EPM with default compiler optimizations. Set the CFLAGS and CXXFLAGS" echo "environment variable before running configure to override them." ;; esac fi case $host_os_name in darwin* | *bsd*) ARFLAGS="-rc" ;; *) ARFLAGS="crs" ;; esac if test "$prefix" = "NONE"; then prefix="/usr/local" fi if test "$exec_prefix" = "NONE"; then exec_prefix="$prefix" fi if test "$libdir" = "\${exec_prefix}/lib"; then libdir="$exec_prefix/lib" fi if test "$datarootdir" = "\${prefix}/share"; then if test "$prefix" = "/"; then datarootdir="/usr/share" else datarootdir="$prefix/share" fi fi if test "$datadir" = "\${prefix}/share"; then if test "$prefix" = "/"; then datadir="/usr/share" else datadir="$prefix/share" fi elif test "$datadir" = "\${datarootdir}"; then datadir="$datarootdir" fi if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then case "$uname" in *BSD* | Darwin* | Linux*) # BSD, Darwin (macOS), and Linux mandir="/usr/share/man" ;; IRIX*) # SGI IRIX mandir="/usr/share/catman/u_man" ;; *) # All others mandir="/usr/man" ;; esac fi if test x$softwaredir = x; then EPM_SOFTWARE="/etc/software" else EPM_SOFTWARE="$softwaredir" fi printf '%s\n' "#define EPM_SOFTWARE \"$EPM_SOFTWARE\"" >>confdefs.h printf '%s\n' "#define EPM_GZIP \"$GZIP\"" >>confdefs.h printf '%s\n' "#define EPM_STRIP \"$STRIP\"" >>confdefs.h printf '%s\n' "#define EPM_BINDIR \"$exec_prefix/bin\"" >>confdefs.h printf '%s\n' "#define EPM_LIBDIR \"$libdir/epm\"" >>confdefs.h printf '%s\n' "#define EPM_DATADIR \"$datadir/epm\"" >>confdefs.h if test "x$RPM" != x; then # It would be nice if Red Hat could make up its mind... rpmversion="`$RPM --version | awk '{print $3}' | awk -F. '{print $1 * 10000 + $2 * 100 + $3}'`" if test $rpmversion -lt 30000; then printf '%s\n' "#define EPM_RPMARCH \"--buildarch \"" >>confdefs.h else if test $rpmversion -ge 40003; then printf '%s\n' "#define EPM_RPMARCH \"--target=\"" >>confdefs.h else printf '%s\n' "#define EPM_RPMARCH \"--target \"" >>confdefs.h fi fi fi if test "x$RPMBUILD" != x; then printf '%s\n' "#define EPM_RPMBUILD \"$RPMBUILD\"" >>confdefs.h printf '%s\n' "#define EPM_RPMTOPDIR 1" >>confdefs.h # It would be nice if Red Hat could make up its mind... rpmversion="`$RPMBUILD --version | awk '{print $3}' | awk -F. '{print $1 * 10000 + $2 * 100 + $3}'`" if test $rpmversion -lt 30000; then printf '%s\n' "#define EPM_RPMARCH \"--buildarch \"" >>confdefs.h else if test $rpmversion -ge 40003; then printf '%s\n' "#define EPM_RPMARCH \"--target=\"" >>confdefs.h else printf '%s\n' "#define EPM_RPMARCH \"--target \"" >>confdefs.h fi fi else if test "x$RPM" != x; then printf '%s\n' "#define EPM_RPMBUILD \"$RPM\"" >>confdefs.h else printf '%s\n' "#define EPM_RPMBUILD \"rpm\"" >>confdefs.h fi fi ac_config_files="$ac_config_files Makefile epm.list doc/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # 'ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF ac_cache_dump | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 printf '%s\n' "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { printf '%s\n' "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 printf '%s\n' "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf '%s\n' "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" case $CONFIG_STATUS in #( -*) : CONFIG_STATUS=./$CONFIG_STATUS ;; #( */*) : ;; #( *) : CONFIG_STATUS=./$CONFIG_STATUS ;; esac ac_write_fail=0 ac_clean_CONFIG_STATUS='"$CONFIG_STATUS"' { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf '%s\n' "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >"$CONFIG_STATUS" <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>"$CONFIG_STATUS" <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # contradicts POSIX and common usage. Disable this. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case e in #( e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf '%s\n' "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf '%s\n' "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf '%s\n' "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else case e in #( e) as_fn_append () { eval $1=\$$1\$2 } ;; esac fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else case e in #( e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } ;; esac fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf '%s\n' X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf '%s\n' "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf '%s\n' X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 ## ------------------------------------- ## ## Main body of "$CONFIG_STATUS" script. ## ## ------------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x "$CONFIG_STATUS" || ac_write_fail=1 cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by EPM $as_me 5.0.1, which was generated by GNU Autoconf 2.73. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ '$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to . EPM home page: ." _ACEOF ac_cs_config=`printf '%s\n' "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf '%s\n' "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ EPM config.status 5.0.1 configured by $0, generated by GNU Autoconf 2.73, with options \\"\$ac_cs_config\\" Copyright (C) 2026 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || { awk '' >"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf '%s\n' "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf '%s\n' "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf '%s\n' "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: '$1' Try '$0 --help' for more information.";; --help | --hel | -h ) printf '%s\n' "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: '$1' Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf '%s\n' "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf '%s\n' "$ac_log" } >&5 _ACEOF cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 _ACEOF cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "epm.list") CONFIG_FILES="$CONFIG_FILES epm.list" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | sed -n '$='` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | sed -n '$='` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >"$CONFIG_STATUS" || ac_write_fail=1 rm -f conf$$subs.awk cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with './config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script 'defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >"$CONFIG_STATUS" || ac_write_fail=1 cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { suffix = P[macro] D[macro] while (suffix ~ /[\t ]$/) { suffix = substr(suffix, 1, length(suffix) - 1) } # Preserve the white space surrounding the "#". print prefix "define", macro suffix next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf '%s\n' "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf '%s\n' "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf '%s\n' "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf '%s\n' "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf '%s\n' "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf '%s\n' X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf '%s\n' "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf '%s\n' "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf '%s\n' "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>"$CONFIG_STATUS" <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>"$CONFIG_STATUS" <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf '%s\n' "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf '%s\n' "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf '%s\n' "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf '%s\n' "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_CONFIG_STATUS= test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: case $CONFIG_STATUS in #( -*) : ac_no_opts=-- ;; #( *) : ac_no_opts= ;; esac ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $ac_no_opts "$CONFIG_STATUS" $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf '%s\n' "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf '%s\n' "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi jimjag-epm-84910c6/configure.ac000066400000000000000000000253171521151356300163120ustar00rootroot00000000000000dnl dnl Configuration script for the ESP Package Manager (EPM). dnl dnl Copyright © 2020 by Jim Jagielski dnl Copyright © 1999-2020 by Michael R Sweet dnl Copyright © 1999-2007 by Easy Software Products, all rights reserved. dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2, or (at your option) dnl any later version. dnl dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. dnl AC_INIT([EPM],[5.0.1],[https://github.com/jimjag/epm/issues],[epm],[https://github.com/jimjag/epm]) AC_CONFIG_HEADER(config.h) dnl Version number... VERSION="AC_PACKAGE_VERSION" VERNUMBER=500 AC_SUBST(VERSION) AC_SUBST(VERNUMBER) AC_DEFINE_UNQUOTED(EPM_VERSION, "ESP Package Manager (EPM) v$VERSION") dnl Get the build and host platforms and split the host_os value AC_CANONICAL_BUILD AC_CANONICAL_HOST uname=`uname` uversion=`uname -r | sed -e '1,$s/[[^0-9]]//g'` [host_os_name=`echo $host_os | sed -e '1,$s/[0-9.]*$//g'`] if test "$uname" = "IRIX64"; then uname="IRIX" fi dnl Clear default debugging options and set normal optimization by dnl default unless the user asks for debugging specifically. CFLAGS="${CFLAGS:=}" CXXFLAGS="${CXXFLAGS:=}" LDFLAGS="${LDFLAGS:=}" AC_SUBST(LDFLAGS) AC_ARG_WITH(archflags, [ --with-archflags=flags specify architecture flags [[default=none]]], ARCHFLAGS="$withval", ARCHFLAGS="${ARCHFLAGS:=}") AC_SUBST(ARCHFLAGS) AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging, default=no]) AC_ARG_ENABLE(sanitizer, [ --enable-sanitizer build with AddressSanitizer, default=no]) if test "x$enable_debug" = xyes; then OPTIM="-g" CSFLAGS="" else OPTIM="-Os -g" CSFLAGS="-o runtime" fi AC_SUBST(CSFLAGS) AC_SUBST(OPTIM) AC_ARG_ENABLE(gui, [ --enable-gui turn on GUI utilities, default=auto]) AC_ARG_ENABLE(fltk, [ --enable-fltk enable fltk, default=auto]) AC_ARG_WITH(docdir, [ --with-docdir=/dir set directory for documentation [[default=${datadir}/doc/epm]]], docdir="$withval", docdir="\${datadir}/doc/epm") AC_SUBST(docdir) AC_ARG_WITH(softwaredir, [ --with-softwaredir=/dir set directory for EPM uninstall files and init scripts [[default=/etc/software]]], softwaredir="$withval", softwaredir="") dnl Checks for programs... AC_PROG_CC(clang cc gcc) AC_PROG_CXX(clang++ c++ g++) AC_PROG_RANLIB AC_PATH_PROG(AR,ar) AC_PATH_PROG(CHMOD,chmod) AC_PATH_PROGS(CODE_SIGN, codesign true) AC_PATH_PROG(CP,cp) AC_PATH_PROG(GZIP,gzip) if test x$GZIP = x; then AC_MSG_ERROR([GNU zip not found but required.]) fi AC_PATH_PROGS(HTMLDOC, htmldoc echo) AC_PROG_INSTALL if test "$INSTALL" = "$ac_install_sh"; then # Use full path to install-sh script... INSTALL="`pwd`/install-sh -c" fi AC_PATH_PROG(MKDIR,mkdir) AC_PATH_PROG(NROFF,nroff) if test x$NROFF = x; then AC_PATH_PROG(GROFF,groff) if test x$GROFF = x; then NROFF="echo" else NROFF="$GROFF -T ascii" fi fi AC_PATH_PROG(RM,rm) AC_PATH_PROG(RPM,rpm) AC_PATH_PROG(RPMBUILD,rpmbuild) AC_PATH_PROG(STRIP,strip) dnl Architecture checks... AC_C_CONST AC_C_CHAR_UNSIGNED if test "$uname" = "IRIX"; then if test `uname -r` = 6.5; then STRIP="$STRIP -f -s -k -l -h" fi fi dnl Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H)) AC_CHECK_HEADER(sys/mount.h,AC_DEFINE(HAVE_SYS_MOUNT_H)) AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H)) AC_CHECK_HEADER(sys/statfs.h,AC_DEFINE(HAVE_SYS_STATFS_H)) AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H)) dnl Checks for string functions. AC_CHECK_FUNCS(strcasecmp strdup strlcat strlcpy strncasecmp) if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then AC_MSG_WARN(Forcing snprintf emulation for HP-UX.) else AC_CHECK_FUNCS(snprintf vsnprintf) fi AC_SEARCH_LIBS(gethostname, socket) if test "x$enable_gui" != xno && test "x$enable_fltk" != xno; then AC_PATH_PROG(FLTKCONFIG,fltk-config) else FLTKCONFIG="" fi if test "x$FLTKCONFIG" = x; then GUIS="" GUILIBS="" INSTALL_GUIS="" INSTALL_OSX="" AC_MSG_WARN([Sorry, setup GUI requires FLTK 1.1.x or later.]) else CXXFLAGS="`$FLTKCONFIG --cflags` ${CXXFLAGS}" GUIS="setup uninst" GUILIBS="`$FLTKCONFIG --use-images --ldstaticflags`" INSTALL_GUIS="install-guis" if test "$host_os_name" = darwin; then GUILIBS="$GUILIBS -framework Security" INSTALL_OSX="install-macos" else INSTALL_OSX="" fi fi AC_SUBST(INSTALL_GUIS) AC_SUBST(INSTALL_OSX) AC_SUBST(GUIS) AC_SUBST(GUILIBS) dnl Set the default compression value... case "$host_os_name" in darwin* | *bsd* | linux* | sunos*) # macOS, *BSD, Linux, and Solaris come with gzip standard AC_DEFINE(EPM_COMPRESS, 1) ;; *) # All other OS's do not. AC_DEFINE(EPM_COMPRESS, 0) ;; esac dnl Update compiler options... if test -n "$GCC"; then if test x$enable_sanitizer = xyes; then # Use -fsanitize=address with debugging... OPTIM="-g -fsanitize=address" else # Otherwise use the Fortify enhancements to catch any unbounded # string operations... CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2" CXXFLAGS="$CXXFLAGS -D_FORTIFY_SOURCE=2" fi # Add useful warning options... CFLAGS="-Wall -Wformat -Wno-format-y2k -Wunused $CFLAGS" CXXFLAGS="-Wall -Wformat -Wno-format-y2k -Wunused $CXXFLAGS" # See if GCC supports -Wno-format-truncation... AC_MSG_CHECKING(if GCC supports -Wno-format-truncation) OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -Wno-format-truncation" AC_TRY_COMPILE(,,[ CFLAGS="$OLDCFLAGS -Wno-format-truncation" CXXFLAGS="$CXXFLAGS -Wno-format-truncation" AC_MSG_RESULT(yes)],[ AC_MSG_RESULT(no) CFLAGS="$OLDCFLAGS"]) # See if GCC supports -fno-rtti... AC_MSG_CHECKING(if GCC supports -fno-rtti) OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti" AC_TRY_COMPILE(,, CXXFLAGS="$CXXFLAGS -fno-rtti" AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) CFLAGS="$OLDCFLAGS" # See if GCC supports -fno-exceptions... AC_MSG_CHECKING(if GCC supports -fno-exceptions) OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-exceptions" AC_TRY_COMPILE(,, CXXFLAGS="$CXXFLAGS -fno-exceptions" AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) CFLAGS="$OLDCFLAGS" # See if we are running HP-UX or Solaris; if so, try the # -fpermissive option... case $uname in SunOS* | HP-UX*) AC_MSG_CHECKING(if GCC supports -fpermissive) OLDCFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fpermissive" AC_TRY_COMPILE(,, CXXFLAGS="$CXXFLAGS -fpermissive" AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) CFLAGS="$OLDCFLAGS" ;; *) ;; esac else case $uname in AIX*) if test -z "$OPTIM"; then OPTIM="-O2" fi ;; HP-UX*) if test -z "$OPTIM"; then OPTIM="+O2" fi OPTIM="$OPTIM +DAportable" ;; IRIX*) if test -z "$OPTIM"; then OPTIM="-O2" fi if test $uversion -ge 62; then OPTIM="$OPTIM -n32 -mips3" OPTIM="$OPTIM -OPT:Olimit=3000" OPTIM="-fullwarn -woff 1209,1506,1692 $OPTIM" else OPTIM="-fullwarn $OPTIM" fi ;; SunOS*) # Solaris if test -z "$OPTIM"; then OPTIM="-xO4" fi ;; *) # Running some other operating system... echo "Building EPM with default compiler optimizations. Set the CFLAGS and CXXFLAGS" echo "environment variable before running configure to override them." ;; esac fi dnl Flags for "ar" command... case $host_os_name in darwin* | *bsd*) ARFLAGS="-rc" ;; *) ARFLAGS="crs" ;; esac AC_SUBST(ARFLAGS) dnl Fix "prefix" variable if it hasn't been specified... if test "$prefix" = "NONE"; then prefix="/usr/local" fi dnl Fix "exec_prefix" variable if it hasn't been specified... if test "$exec_prefix" = "NONE"; then exec_prefix="$prefix" fi dnl Fix "libdir" variable if it hasn't been specified... if test "$libdir" = "\${exec_prefix}/lib"; then libdir="$exec_prefix/lib" fi dnl Fix "datarootdir" variable if it hasn't been specified... if test "$datarootdir" = "\${prefix}/share"; then if test "$prefix" = "/"; then datarootdir="/usr/share" else datarootdir="$prefix/share" fi fi dnl Fix "datadir" variable if it hasn't been specified... if test "$datadir" = "\${prefix}/share"; then if test "$prefix" = "/"; then datadir="/usr/share" else datadir="$prefix/share" fi elif test "$datadir" = "\${datarootdir}"; then datadir="$datarootdir" fi dnl Fix "mandir" variable if it hasn't been specified... if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then case "$uname" in *BSD* | Darwin* | Linux*) # BSD, Darwin (macOS), and Linux mandir="/usr/share/man" ;; IRIX*) # SGI IRIX mandir="/usr/share/catman/u_man" ;; *) # All others mandir="/usr/man" ;; esac fi dnl EPM_SOFTWARE needs special attention for the default location... if test x$softwaredir = x; then EPM_SOFTWARE="/etc/software" else EPM_SOFTWARE="$softwaredir" fi AC_DEFINE_UNQUOTED(EPM_SOFTWARE, "$EPM_SOFTWARE") AC_SUBST(EPM_SOFTWARE) AC_DEFINE_UNQUOTED(EPM_GZIP, "$GZIP") AC_SUBST(EPM_GZIP) AC_DEFINE_UNQUOTED(EPM_STRIP, "$STRIP") AC_SUBST(EPM_STRIP) AC_DEFINE_UNQUOTED(EPM_BINDIR, "$exec_prefix/bin") AC_SUBST(EPM_BINDIR) AC_DEFINE_UNQUOTED(EPM_LIBDIR, "$libdir/epm") AC_SUBST(EPM_LIBDIR) AC_DEFINE_UNQUOTED(EPM_DATADIR, "$datadir/epm") AC_SUBST(EPM_DATADIR) dnl Figure out the right option to use for the RPM build architecture... if test "x$RPM" != x; then # It would be nice if Red Hat could make up its mind... rpmversion="`$RPM --version | awk '{print $3}' | awk -F. '{print $1 * 10000 + $2 * 100 + $3}'`" if test $rpmversion -lt 30000; then AC_DEFINE_UNQUOTED(EPM_RPMARCH, "--buildarch ") else if test $rpmversion -ge 40003; then AC_DEFINE_UNQUOTED(EPM_RPMARCH, "--target=") else AC_DEFINE_UNQUOTED(EPM_RPMARCH, "--target ") fi fi fi if test "x$RPMBUILD" != x; then AC_DEFINE_UNQUOTED(EPM_RPMBUILD, "$RPMBUILD") AC_DEFINE(EPM_RPMTOPDIR) # It would be nice if Red Hat could make up its mind... rpmversion="`$RPMBUILD --version | awk '{print $3}' | awk -F. '{print $1 * 10000 + $2 * 100 + $3}'`" if test $rpmversion -lt 30000; then AC_DEFINE_UNQUOTED(EPM_RPMARCH, "--buildarch ") else if test $rpmversion -ge 40003; then AC_DEFINE_UNQUOTED(EPM_RPMARCH, "--target=") else AC_DEFINE_UNQUOTED(EPM_RPMARCH, "--target ") fi fi else if test "x$RPM" != x; then AC_DEFINE_UNQUOTED(EPM_RPMBUILD, "$RPM") else AC_DEFINE_UNQUOTED(EPM_RPMBUILD, "rpm") fi fi dnl Output the makefile, list file, and config header... AC_OUTPUT(Makefile epm.list doc/Makefile) jimjag-epm-84910c6/deb.c000066400000000000000000000537731521151356300147310ustar00rootroot00000000000000/* * Debian package gateway for the ESP Package Manager (EPM). * * Copyright 2020 by Jim Jagielski * Copyright 1999-2017 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local functions... */ /* * 'add_size()' - Append Installed-Size tag to DEBIAN/control file * Used for AOO packages */ static int /* O - 0 = success, 1 = fail */ add_size(FILE *fpControl, /* Control file stream */ const char *directory) /* Directory containing all files to package */ { FILE *fp; char command[1024]; snprintf(command, sizeof(command), "du -k -s %s", directory); fp = popen(command, "r"); if (NULL != fp) { char size[1024]; fscanf(fp, "%s .", size); fprintf(fpControl, "Installed-Size: %s\n", size); return pclose(fp); } return 1; } static int make_subpackage(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform, const char *subpackage); /* * 'make_deb()' - Make a Debian software distribution package. */ int /* O - 0 = success, 1 = fail */ make_deb(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform) /* I - Platform information */ { int i; /* Looping var */ tarf_t *tarfile; /* Distribution tar file */ char name[1024], /* Full product name */ filename[1024]; /* File to archive */ char *sep; /* * OpenOffice builds have traditionally used '_' instead of '-' for versioning */ sep = (AooMode ? "_" : "-"); if (AooMode) { /* * Use debian default naming scheme */ if (!strcmp(platname, "intel")) #ifdef __FreeBSD_kernel__ platname = "kfreebsd-i386"; #else platname = "i386"; #endif else if (!strcmp(platname, "x86_64")) #ifdef __FreeBSD_kernel__ platname = "kfreebsd-amd64"; #else platname = "amd64"; #endif else if (!strcmp(platname, "ppc")) platname = "powerpc"; } else { /* Debian packages use "amd64" instead of "x86_64" for the architecture... */ if (!strcmp(platname, "x86_64")) platname = "amd64"; } if (make_subpackage(prodname, directory, platname, dist, platform, NULL)) return (1); for (i = 0; i < dist->num_subpackages; i++) if (make_subpackage(prodname, directory, platname, dist, platform, dist->subpackages[i])) return (1); /* * Build a compressed tar file to hold all of the subpackages... */ if (dist->num_subpackages) { /* * Figure out the full name of the distribution... */ if (dist->release[0]) snprintf(name, sizeof(name), "%s%s%s%s%s", prodname, sep, dist->version, sep, dist->release); else snprintf(name, sizeof(name), "%s%s%s", prodname, sep, dist->version); if (platname[0]) { strlcat(name, sep, sizeof(name)); strlcat(name, platname, sizeof(name)); } /* * Create a compressed tar file... */ snprintf(filename, sizeof(filename), "%s/%s.deb.tgz", directory, name); if ((tarfile = tar_open(filename, 1)) == NULL) return (1); /* * Archive the main package and subpackages... */ if (tar_package(tarfile, "deb", prodname, directory, platname, dist, NULL)) { tar_close(tarfile); return (1); } for (i = 0; i < dist->num_subpackages; i++) { if (tar_package(tarfile, "deb", prodname, directory, platname, dist, dist->subpackages[i])) { tar_close(tarfile); return (1); } } tar_close(tarfile); } /* * Remove temporary files... */ if (!KeepFiles && dist->num_subpackages) { if (Verbosity) puts("Removing temporary distribution files..."); /* * Remove .deb files since they are now in a .tgz file... */ unlink_package("deb", prodname, directory, platname, dist, NULL); for (i = 0; i < dist->num_subpackages; i++) unlink_package("deb", prodname, directory, platname, dist, dist->subpackages[i]); } return (0); } /* * 'make_subpackage()' - Make a subpackage... */ static int /* O - 0 = success, 1 = fail */ make_subpackage(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform, /* I - Platform information */ const char *subpackage) /* I - Subpackage */ { int i, j; /* Looping vars */ const char *header; /* Dependency header string */ FILE *fp; /* Control file */ char prodfull[255], /* Full name of product */ name[1024], /* Full product name */ filename[1024]; /* Destination filename */ command_t *c; /* Current command */ depend_t *d; /* Current dependency */ file_t *file; /* Current distribution file */ struct passwd *pwd; /* Pointer to user record */ struct group *grp; /* Pointer to group record */ static const char *depends[] = /* Dependency names */ {"Depends:", "Conflicts:", "Replaces:", "Provides:"}; char *sep; /* * OpenOffice builds have traditionally used '_' instead of '-' for versioning */ sep = (AooMode ? "_" : "-"); /* * Figure out the full name of the distribution... */ if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s%s%s", prodname, sep, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); /* * Then the subdirectory name... */ if (dist->release[0]) snprintf(name, sizeof(name), "%s%s%s%s%s", prodfull, sep, dist->version, sep, dist->release); else snprintf(name, sizeof(name), "%s%s%s", prodfull, sep, dist->version); if (platname[0]) { strlcat(name, sep, sizeof(name)); strlcat(name, platname, sizeof(name)); } if (Verbosity) printf("Creating Debian %s distribution...\n", name); /* * Write the control file for DPKG... */ if (Verbosity) puts("Creating control file..."); snprintf(filename, sizeof(filename), "%s/%s", directory, name); mkdir(filename, 0777); strlcat(filename, "/DEBIAN", sizeof(filename)); mkdir(filename, 0777); chmod(filename, 0755); strlcat(filename, "/control", sizeof(filename)); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create control file \"%s\": %s\n", filename, strerror(errno)); return (1); } fprintf(fp, "Package: %s\n", prodfull); if (dist->release[0]) fprintf(fp, "Version: %s-%s\n", dist->version, dist->release); else fprintf(fp, "Version: %s\n", dist->version); fprintf(fp, "Maintainer: %s\n", dist->vendor); /* * The Architecture attribute needs to match the uname info * (which we change in get_platform to a common name) */ if (!strcmp(platform->machine, "intel")) #ifdef __FreeBSD_kernel__ fputs("Architecture: kfreebsd-i386\n", fp); #else fputs("Architecture: i386\n", fp); #endif else if (!strcmp(platform->machine, "x86_64")) #ifdef __FreeBSD_kernel__ fputs("Architecture: kfreebsd-amd64\n", fp); #else fputs("Architecture: amd64\n", fp); #endif else if (!strcmp(platform->machine, "ppc")) fputs("Architecture: powerpc\n", fp); else fprintf(fp, "Architecture: %s\n", platform->machine); fprintf(fp, "Description: %s\n", dist->product); fprintf(fp, " Copyright: %s\n", dist->copyright); for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) fprintf(fp, " %s\n", dist->descriptions[i].description); for (j = DEPEND_REQUIRES; j <= DEPEND_PROVIDES; j++) { for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) if (d->type == j && d->subpackage == subpackage) break; if (i) { for (header = depends[j]; i > 0; i--, d++, header = ",") if (d->type == j && d->subpackage == subpackage) { if (!strcmp(d->product, "_self")) fprintf(fp, "%s %s", header, prodname); else fprintf(fp, "%s %s", header, d->product); if (d->vernumber[0] == 0) { if (d->vernumber[1] < INT_MAX) fprintf(fp, " (<= %s)", d->version[1]); } else { if (d->vernumber[1] < INT_MAX) fprintf(fp, " (>= %s), %s (<= %s)", d->version[0], d->product, d->version[1]); else fprintf(fp, " (>= %s)", d->version[0]); } } putc('\n', fp); } } for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && c->subpackage == subpackage && !strcmp(c->section, "control")) break; if (i > 0) { for (; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && c->subpackage == subpackage && !strcmp(c->section, "control")) fprintf(fp, "%s\n", c->command); } fclose(fp); /* * Write the config file for DPKG... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && c->subpackage == subpackage && !strcmp(c->section, "config")) break; if (i) { if (Verbosity) puts("Creating config file..."); snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/config", directory, name); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create config file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); fputs("set -e\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && c->subpackage == subpackage && !strcmp(c->section, "config")) fprintf(fp, "%s\n", c->command); fclose(fp); } /* * Write the templates file for DPKG... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && c->subpackage == subpackage && !strcmp(c->section, "templates")) break; if (i) { if (Verbosity) puts("Creating templates file..."); snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/templates", directory, name); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create template file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0644); for (; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && c->subpackage == subpackage && !strcmp(c->section, "templates")) fprintf(fp, "%s\n", c->command); fclose(fp); } /* * Write the preinst file for DPKG... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL && c->subpackage == subpackage) break; if (i) { if (Verbosity) puts("Creating preinst script..."); snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/preinst", directory, name); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); fputs("set -e\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); fclose(fp); } /* * Write the postinst file for DPKG... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL && c->subpackage == subpackage) break; if (!i) for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) break; if (i) { if (Verbosity) puts("Creating postinst script..."); snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/postinst", directory, name); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); fputs("set -e\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) { /* * Debian's update-rc.d has changed over the years; current practice is * to let update-rc.d choose the runlevels and ordering... */ fprintf(fp, "update-rc.d %s defaults\n", file->dst); fprintf(fp, "/etc/init.d/%s start\n", file->dst); } fclose(fp); } /* * Write the prerm file for DPKG... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE && c->subpackage == subpackage) break; if (!i) for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) break; if (i) { if (Verbosity) puts("Creating prerm script..."); snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/prerm", directory, name); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); fputs("set -e\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) fprintf(fp, "/etc/init.d/%s stop\n", file->dst); fclose(fp); } /* * Write the postrm file for DPKG... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE && c->subpackage == subpackage) break; if (!i) for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) break; if (i) { if (Verbosity) puts("Creating postrm script..."); snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/postrm", directory, name); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", filename, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); fputs("set -e\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) { fputs("if [ purge = \"$1\" ]; then\n", fp); fprintf(fp, " update-rc.d %s remove\n", file->dst); fputs("fi\n", fp); } fclose(fp); } /* * Write the conffiles file for DPKG... */ if (Verbosity) puts("Creating conffiles..."); snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/conffiles", directory, name); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", filename, strerror(errno)); return (1); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'c' && file->subpackage == subpackage) fprintf(fp, "%s\n", file->dst); else if (tolower(file->type) == 'i' && file->subpackage == subpackage) fprintf(fp, "/etc/init.d/%s\n", file->dst); fclose(fp); if (AooMode) { /* * Calculate and append Installed-Size to DEBIAN/control */ if (Verbosity) puts("Calculating Installed-Size..."); snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/control", directory, name); if ((fp = fopen(filename, "a")) == NULL) { fprintf(stderr, "epm: Unable to Installed-Size to file \"%s\" - %s\n", filename, strerror(errno)); return (1); } snprintf(filename, sizeof(filename), "%s/%s", directory, name); add_size(fp, filename); fclose(fp); } /* * Copy the files over... */ if (Verbosity) puts("Copying temporary distribution files..."); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { if (file->subpackage != subpackage) continue; /* * Find the username and groupname IDs... */ pwd = getpwnam(file->user); grp = getgrnam(file->group); endpwent(); endgrent(); /* * Copy the file or make the directory or make the symlink as needed... */ switch (tolower(file->type)) { case 'c': case 'f': snprintf(filename, sizeof(filename), "%s/%s%s", directory, name, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); break; case 'i': snprintf(filename, sizeof(filename), "%s/%s/etc/init.d/%s", directory, name, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); break; case 'd': snprintf(filename, sizeof(filename), "%s/%s%s", directory, name, file->dst); if (Verbosity > 1) printf("Directory %s...\n", filename); make_directory(filename, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0); break; case 'l': snprintf(filename, sizeof(filename), "%s/%s%s", directory, name, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); make_link(filename, file->src); break; } } /* * Build the distribution from the spec file... */ if (Verbosity) printf("Building Debian %s binary distribution...\n", name); if (geteuid() && !run_command(NULL, "fakeroot --version")) { if (run_command(directory, "fakeroot dpkg --build %s", name)) return (1); } else if (run_command(directory, "dpkg --build %s", name)) return (1); /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) printf("Removing temporary %s distribution files...\n", name); snprintf(filename, sizeof(filename), "%s/%s", directory, name); unlink_directory(filename); } return (0); } jimjag-epm-84910c6/default-256.png000066400000000000000000000452001521151356300164610ustar00rootroot00000000000000PNG  IHDR\rfsRGBiTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image GGUIDATx} $Gum33=l}4e4I$l0 ,,`B`lq0b7@92 $ $6M ~ܪ_ȈȪ8X2:/^(RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)3M 7L) u,B RSys Z f HB &t~/u"kGrt򜵾sԵWW۟Xf`<9I/p^hyu#]T:k V," V U3V6:ZݯBl4 A_H@'o==v)5ش'sתs|Y_Vr=/78mp`A/ o@JM' ua"&`uka/ .68 h6`FzR "PP ,!;BrNR^t։<d|u}3Qp H>)_!LS=]B1ru.t|ӧ0m4 4X@B`V!HDGF >dp/= Gu{]W{?oƌX}nI@'\7? ~ z e岯vqQJ/Wc!PUl+ר6 ^45\5xOdAK$K/̙3f-N6:^^(#iv i%#/2x?|?ҁسg^zl^Br|Uݏߏ*4,`c5BZB<Ȏ/Ʈ6; ]~̙SAKKK%Ǯr7}i*<аK o.'#$: mfO|;xysέ:Fn>5\Hy5s^e<4HFEtH-W )U9&:Ayϟ?*d:ʸO!mls$/CccH8m}< ^\D9A,X`zYB Q$VTXU}X NaA26\z?ͥ3c.}ѡ^ -\ mmmYV?܅*Α\׫~lZz:40PӆH8s\ 5D? _s&E*c!mlc5\$ȿD|T~yϿ@hmulif& x.ͥc,^x@ ]FCG0_<׫j/<ϯ*dHF:}Ys6K,).]>F< Ay55r\\iVs.C%(߁d$̙#}@60$XlYq啼!mFg>,QS+k{qHӠwM\6WXQ+WVrdz@_+:Dޡ|STWs}|}j5\q`&IG; ucWz?P &J-FH"bPk\$#aD9UVEdYVW^ky+j\7#b+7,{UH:쓏!԰  =l0?ƿ ի2&< ?W}~5!].wsMK5'[Tk$ޯBlLfs> |$#aviu׮]k!* >׈oQ_;o/k~=@l.װКd$XNSp=`GGG 6:{= "[ȭ k A>k{h2C244Kggg 5|]{@/]#<-ް(?~u. ȹ<-t2ڍ0 DsGC]]]^0z/ /"TBs`pV>|fU'>Bg|i (C2i@H?غ`m;0e9 (J.CckT}~]/"ge</\MM򎙞k>j ~E]mѩh$^ À{X}+c}𵯵4\]v< 9[FUΑ~㐳vfBq:kw_/ybkw:SH([ 6o|Y H\]O}S:G^G۳tz^mˮ[ &yb{Xf̈́f 4jc ml +Y8Aֱ>Z_tm ǔYľ\;׈_=5^q.ԣ?hQF'Pkrğ׳cPqxxxJU Gry"ԃ"P*Tڒ~r]1#W1~#k$0,q H-N`-B9r~~KDu.{e6g^|Z_6?~cdYyjڂb$d- 6ƍ+<_ <$r?EpE@lBo]_W}Xs|u@kT}"&PjxPyM6U}6P?

nbA<,չr7Q?l rRjU#~bIv1.QGO*#!g+gqπ۷o\-!y:g[8voK}n?_3GgizжrHs'*C{FoZwYgp.\#~,|^_Gȿ΅Wg$7zmmNc˶~l?Wil&Xr.1wmù<[_ !q[qWDB{|PJ7lyھV\}w4׻4h#M@'"m'kgQSgH\?ўp6||Z?iOGG?|颰ݿ|=n͹<bi;ȑn r[ &-݃yЛ }߾}Ž{VrdtzU#rrn]Oڷ. o'@Lz'zSi5B9!mĝ4Z Ufoqn^_EPsBWu0~A4\U+vqZ1րP_i[7Cv֑6=, a RPFMTry*>?Sc#cLAEn/k[8r{}\k-",H+cݟ<_ |`}@=Q-|tpq.k鳖5m#SHwce[@EcEe`?1퇯u rOhM&8ˡC*cEH_Z}s+Eޭ|_W'U}sk]5JUTW28BS}K{j#g]qhyidՇ9_PB/WɉfG}`Bs<.kVeNd@XT4CYd/'\Ԡ=|9TY'?zpa«!F40w$sKyr"hd 2zkV]ޫHk/>RPS]d7c ;еCA"?~xry\}_TEx~ $A;%Yqb 9'?q8ǮU}?T"~Z\rN8Q!#6ԏ/诌*#rd kX`ؿĩMqϧe>Ի}ȲrnL?=j; A}qh{ LG';yBxDrOc?e ?wFlZa+zjV!'IL@ C?8+=%wҀ^,ܷL\6?_wY4^sv ! .7kᱵ90LfDwqO!qDyT5yv} !B l!&$Wp+C|rnM0d-CA.šCUGFA sJG_f'F.7,>TG:j X9Ǻ gBHqHslg`꜍@\o^i>\ ` +PKhXk@L46b! _ X(X,K,) >p|?sy\Z!g`jTFDS,,ZvB`C<]!B=46:> 9WX ^s?ϩ}^Eך4Va't0`50Q})_q..H9y,@ RHqԐ6l0H@ $_UV. ~4t{_}GxDZ@ &Rglqb[  gXh  \ty:7 ҵCk WHP6Pc"-r(As;I}!pR@ R0I|,s WY# _%<?=dz*xm7uEjkЖjm!ES@ui3]K@*aCE`2BԍmJXBz!IC*T|pT?2n,dPC5BBMpYk^Z |E==_^'3ȟTl~Fu.}UGW=?k !Z`H j1iTЙCb8p>PJ<$<p*!^ YPB$ǡ屨]οkF9$Ѕ*:.6 1" x/Yr-˘_.s.ԫ=S >s!^_!ϿkvA3W 6ºq.Y5t}@,Tف4$`M8i$t>8#d9[ DnJZC -dR$<{G>YX /4Fd-ɬ"sy{c'̚!Eީ ='>dV0Y !p(?`! I@#ރPqZ#Nh =? ԯj W+yBZ'>Ԭ\!`:FVpٮ)V%=ct@"PK GR _B$^O7}KB5  LlCkԊklа2$"&?IhWB? U2sÁym@n!9 W*P+ǚG?9+\B m۶xi)ȓ_'!ɸH{H@ sd[}W9 @4l195PǰZ1S =H)CR$9@4zi9HiBsc l1NX !c>تBihN B`eadρ$N|X ZZƹ%dm1M2^ ٶ?R`ZT} vB3q.CK༌ꃱ!{ f8=?{\cr cU fz6eC(^~bd-=OB' BQ9A[b~4#fl5U/^K˷LtmP_  ^LC$j&5R+@rm27Ȥ:l>ȵ6J9zi^nb ?tJE| !4J"8@a!|-n屭.'^F.V@P_x`|l .?fhX vu)yINr _}cA]h12Ӭ@B`6I!B 2M}+P&:i$ \KVol~r! y'jx77m'~h(‚q`$G̤9qtmh^x{h>F^o`@z:VKc~6 YM3:@f<{Fpym6sY >G`>J3hVą7)cC.+JVk{p#[[׵r/o֢?hDF#6P^PC#8 ܩn2λ>twz}ʘgcZ\#gߡCB7Z,ݸF3o4(8mDN-]׊XI1?/6o݈"5011'!%pԭw{-!8,CoL%@!;9Kkl 54 b< MW ދuEKZqa^F-I(|[#Qphza pj-k P1Ϗ/9 mo9W94r /mQFq-^r߱sG5%q=ﰡegx!c el@G/[V״_kWkkC૏|r*6 Uv>˚.Tcxh 1 m@|Pť]/8dRvܻuԽ0!u[LX$F[|KXW?+x+ .,ebpVaX2ܳ/{-!NJj 46Sp V8 Cjj[l^"g-3n|׋F=?>C?+[}P.ts ,cPoBꬦ52&0鴀*wABe+_`_l @/2A?zi3^(h&H\.ѫ_׊7o%ly5*}o,x%}_Z(GBg &^($ɬT z5+|0__|'O|rZ9B ku Cc?4bZ"< =YA\cBylK 坴4X_(GF(Ec[Ldj>mfǗ}@Qמ Y(yܟ~Puob^_2o5x$^:"=">xRC+ ʡVN9mu= `H/|lZZ?܇z>?о?uT!f [iAύ.By'kIWH9}OȿCNCUxY⛽TRhtkZP*#D@ॾrt{z?csyq1CWc{g4<2ܱ*A-4t"дZ߇qo9/D|/`gŋq}国}!# JrPs]APufC0ABF!Lr1d~o u1O *&V";d_Gdo'/>mO_AY>UB΃l_P\RE[80eX +l {)1_WZ'BBu,^fq-׮ksy}Cc隣/du8+ x٥$+&:V/::4@ر[uj/^vI񭝭U|P,6#\ĵ#k3ɐwTMw*Te|Ϝj_\@/K:uܾ'JozR+sy\K}|az3qLA"k:?;{5^ϋ4MƻnR /}J Z@< dX$á偎#&PUĕQt/΁t&=~x+WZߚ@`=rĚ( *AlM2 (/`*Hq;>lL:!eVzڽy=qϿC|'iܿ zKSΔ7\ @ }Y"4r1;oD#.-uƵy }Ϗh_@N;CїF"{$ʠ>7k>ؒ *f d@] Ûk N70kK``ݚ╝ˋo3ܲnu翳wNp݇Ϡy4NlzgSjpEdE^ɃfiW?LƋ/{A-N*^tE (@q;[ =ԱxU= _]0^ԱT!H\%$@Yr  \ VpeUy=PPaytLXtvȧ 9}_۽gxFM$X Lѵ_АeRTx9ng#T~&ksBKk]>;. suI4`Ǝ՝y,d-=eo1L9 B{ wiuu63]bm+ &:+︙ صU7pۖ2g]?`pg_K_^+v/ &(.`.:M3+6ZXvv/Y]oeu}m9=k#~mgtUg.ڷ)\}%$@GbDssYM*lc:7cc^iZP Dw?'J'[M_km=Նŏ/(}n|yF$YpHfun+i!voZ0W| ~5OxksݯK||c d>[o/}pI4 (zMAZe.5gk>:xrkM|52/ >1`X]@ &M)dҾ`YTl/>g`me!fNp@loh-趖\37D?Uo>h !]u}A}Ȼ[si^/R(Ӌw4?^|r#Pfy@mِ_V_0!n\Q)=C~$Dh:\^ ȅC % 5P_/\7<5]Vv lAC2Fr Pb+Joc^I4RV&ɲfn]] v?&hÐP#㜫G2þfh=:LJ6hjL?zY{'D@F!'ez^ BxY[>V"İۀCϳsfWezqQ׿*e>I4pmQiYEh`FC-/튜?@{mz̪ k7 xQxC˼k3g5Y6[{, g 4^Ԑt!m]G na`!۳z ̬9>Sy#}?:0gE sN`@a}皱}Y7x W/W"G<%zhq[}ۨ{̐W>=aK\ڥ#u /w>I4+ٵ̶t3+ ƻNǺ&g֯vaC~\!wWxCW>=6wn陙8  \4H5Folyk1cn/Al Qckޡ\׃.h-{}JCl.ӷ^pc+B0 gJJ^{>ʵYkq:8i}ׯ*~mtIC“z7:Xm|Ct9' S {bk3 23u>xME, p+sg&gj淮_Yw A[6^?KZӎZ3mN}?U vPK ^d#Cª& {nYnȌK7l(0Fk7v݋K<68NmY8[6X~k3 9;`Ul|*{.x1%$|5K{EЏ_ZƼm*iZ/2~婲n? -4Ds=[{zᮡy96IO+W +bEmw{?Sl@KM@{z4C{ mے)-?Txޖ~S[s+oէ<o۸{/¼c:$أH`ZCv  存?r[.xC3w{~xz/!Yi~8832ݿ5_wru=<~o]%7l,^m~? V1p+ VͿ'%i߾}ȿ]lā>ꭃY /߲im-Q;Dq=)4|Jd]؎@sh0.1XcOBӃ' .5> `K✏߶r}YU%_bA=?闑@s ,; {_.ؗML y}ў_8v: =b\}x ;߸JM`.|ϓ@ dl#/"&Uv-gƢ}^~>6Lj?<<4M+QdYޟn@s 6 " ֒qp In^LH&pDP׌=;7/{pxlߞ\7;\ϟ$&]`套ŽwILa^ϮǾsC'/,}PUYGyb2ʆԴ %5m>:MG o7e`v;0"츯H`jN>z9Td]:eҞ_8m  *>h@娵~ 0CT)"I/q5ig%0"0a=Xc}^ ^e᷶h!^#d,\fﲩcXu!-*N>/ W(Ǣ<^(Ǧ;PYT X1~ m/G·?%"x5[}!p ӦMӄ?CG 7PH;Ļݠ$]ÒǏs\,Cf=5T݀׬YS_%e%,7y _m*W\or%?' ѨHlJS.L,8q"'MaasY׿~|mHŖgwM u/&cl"ŅrHzh4t\BNS.fHK:Z 0ŵ luB׻}Ϫ[s``4={GA_kאyDg//?ȿ=1Pr&K)M"ʕ+K/$y7o9h4 X Al2h^6?bp{&EW ¿LEDI"_N)})iһ2>"ILeM8fDжD=k?xJz,j:AWy;D&U$񿼄%;CAXCZBYO`|T8Ke_tm/ 1 F^3*؀Sr . v/K/%i4;Is"VE•. N_deT_Z 2~]CmAb_-ׇ [aJV K_Hw9 4wCw_C_FB[.PeE *Ʊoy91h؆z1^1]KW.mVg =BΦ~Ax ~0^D_1hDdȴ /ޅ^X!&]N:dO)I*f[iX%OR`B`-DydO))"XH$ }J)MABJ)RJ)RJ)RJ)RJ)U6*_N^IENDB`jimjag-epm-84910c6/default.icns000066400000000000000000016050531521151356300163300ustar00rootroot00000000000000icns +TOC his32s8mkil32l8mkic11 0ic12ic07.ic08ric13ric093Gic143Gic10fZis32ׅ  ߞ .-=! (yj|13     ! --..'Zl 33wv-;b=( .    .-"! ("13   %$  ! --.$ 33+,..-;399( . .-!  (13    !--.   33!";"28( .s8mk\666}{6!ll!il32ӂԒ؂  !"!""!6< - .% !1343 jmip''('('(?<-**..-.-,5" 3 '?6AC& ! &3 .?3*-.-.    !   &1442+&'&&83# ", ! .92d/..//./s=ð!4 [C6:9 ÍEd4F_J34?ĽJ9*DCfN?<. FDA2  5#   !"!""!    - .!!  !1343" "!''('('(?<-""!""..-.-,5" ###3 $$###'?6 %%$%$AC& !% &3 .?3*-.-.    !   &1442+&'&&83# , ! %"#% /..//./'&'&'&!4 (*+((),(()(6:9 *-2*042-0234?+,1.79*DC9=?<. FDA2  5#   !"!""! -.!1343''('('(?<-..-.-,5" 3 '?6AC& ! &3 .?3*-.-.    !   &1442+& '&&83# , ! /..//./  "  !4 # ( 6:9 /'4/(.34?#49*DC2:?<. FDA2  5# l8mk0 Xe ?Edy; {* *<*:,/ ʝd% [>&  v %b L  5ӣ "hӢv^C*LҢv^C(  5_B( ic11 0PNG  IHDR szzsRGB pHYs%%IR$iTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image GIDATX WKh\U.f?f`mQ*-vnH"-2"wv5MDYYImm-=zAjZ8Nۗz]{A+soț)r1 iQ$exWI

SyGE`w$ Ѫr8 kl|pH$bh ʌ[!Ԇ<^C΅QZ ool1z(UUUyHII*)GY:ptq5ڿn Rz[h O5mWlF---Vww`ĻDt @z2I4c C{{?9>ΰ775qttTѨ;;e˙g 쌐?׀>%r`҅,'ݐD,zAdrqT=Bg>.#c@晓=A+씼%K/lll({y ;}ݢ;˩555<%$Jr,]zl}}]L%kr9-le!VBPP**`1K|^I[yG8V@t)So y2%ףU҇-#(g!%$ \yóD+lZ1>c$D\7-7\bMgLȴ>P Hhccc夽2˃RWrI~2dS*\Z挀|r\,^Y mbKHWFFF^TPtYm2 ȼTxDA(M`(` nmmU?,'e5evQ1+CoI1'%7`=X`D / aBO ? P!p`?Ls8 :^-QOO2 { ]m?]5y0WrTd㕟.σo8 (!Q p#u968 (u9wɿqIENDB`ic12PNG  IHDR@@iqsRGB pHYs%%IR$iTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image GEIDATxyfgaX@DU[iZbmPMTۘ.Q-6FkZk4ъU@ M@d߇ٷy{<s;wsYソ h`D#F4EHB  ñ|@x:0I ۅp.˻͓TC 5/s[k.ܾqՀ4(zMQE4H\T(%a .|UOxFԄzfE ` s꠾,E  ? kꆢo9BaPyguE0yIXb=pyo.t \G{zoo:V y!yO8$ȧ|HVLqa 8fB2O}MJ-햲O*{aQ,q޿;maJy KUUUSYFyPY9)#cgTHY c@PjjZ#noiiy624hKƴQӢVoqnIE֌MMa aS2 FrΝ["Pk#$V![fΰH}@ nj%%%vVpC|Z.oSf^4R-<< '&~-c555 z +blcb<t(۾te 4QyoI,ʸFpܾLm;tlTP~Xۢe۝>}ڷ#8pj4G0u| s=t p@ׇVhǔ\|HjNX:]9n, +Ðυp9BS}DQtׯwG͘_!K>.$=ܾYlU#*nWkO<DA:G&`/QIڔ&8 @O7ܹmݺUUpr}Li'v5^O766VȲ> 4i7@=_C&O_aFxMMMj"i9䄁 %ȵ_ G?={p`x =|Ż/a{DF$Ԇڿ)Φ%q+»_' 1,< m۶ӧ33 FV e&g PcB2A4 IWgǷsW:$F,O[]MX~`ew`Ye%Z(GJ 71Th1n8n,l^P@!])(cY4 0w}6S0J3[X YܑKbuuwy(I:qF-X$/Z(c w'O4wP/$7[3fB%m&EY#EM\ `| U&uwxSW`XQ!4ʡKCz-x [Wf Sf1 UtpwaDp]'|P`z(`ɨ59ڄ 56Q(GsJŃPÅh !a+(  P,&&; .4K,văH$BɸEny7}mjA|m8(< $ֶ@r@VXL Q 6[<'V)Ǝ>K|IBp'5պ%%=xCO; UEw0`yY7%+ Q(Q6<$k׮M 4(X{=_՞A͋ucaɍY^a-:PG;BN[:k0:܌X6V'+gjߢ'fY}E_ݼX{&Yw,Q k&,mޭeEK*1/N\p(>ZlיkH?1̳~+Vɳ [gclq021H]Z&zo9d[Q/1(Ny.^-itoUK+U6^/&_6F}| )6ofYh\S܊x~[( Q%}-nU$^)@y9^6*,mjz9-PM?ONfYY :eg!nrtUk>NvON6:Q뮒-a>v\g[Qui[ecVR畓Jhs%Ćx{l˵ٱt|KTyŃX(cܷzNWJ]\aj,NIBbn={v+QtްyNneiCzeJj\S8[tkV=Z\۫*JmP X`ƁF<)לRr Ybp?h;h{_e"|+B=D>J 3ԣ̞7o^%ф6k1-YV9m.5\Z_쯱Lj~+p 94-*e Ƴ^~(#o]`A%°j*tR_eJ)-<羏)?S] K}6+!k,_zGL mΙ3BH [ lB9&()#p6᾿Y p&}^:(\ +/hQMIg̙3KMp#>n 9)c,H=%m#؍քg>@`P$yAJX{RkF?zvPM\[N}j;*UgpqAᄌkŋn>H1j;"EH>wc!4wb8#'\hTeo.!jޣw>[a~B X<2b)&A NxAb`&vqgɄ;kLp8rig_%Da^T5w\ 0! p,L?$)!4rIENDB`ic07.PNG  IHDR>asRGB pHYs  iTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image G*IDATxi\u_ςe$@BN")4YSlʒ,Z!RY)R$T*"'r8\)WXlɒ#)6n  "@puf0[oy3=T{9{ݓe]J+J+J+J+J+J+J+J+J+J+*g$g5F9j}h1-,TiW%vp G -sRi"S!48 P0$  Nc/oIЏy򲘵h7֪xDXO+Op&@r/n˜٠ $)2 !zgD䲦cm"lipHy^XW)_^4ĂTc?g`e3e8C> i(]DW] )"霠 %WZTT*J˕:v%`&(32 Zns6y_Sd21QuIQ"&Hr%V(Z`CbZisUr1!QWlA]!X=[Fa|(%g<ދ<b!wE\@ҢJ lQP4&|ʛB``4 R@BR6}y MUΛ+SIVsE~倌J$k5o,_7jэ2 sQyA K{LAL's|R+GZzI׆Ԅ-VLܢl`vE@l=GMcrJ IE!p0 PeF9ܶ<ˆ`ʁO8ӡP6r MiE++20c:4<ǺPmC÷H$rnv= k#?z7~oŊv-,|mZ ՝%Zޥ/bƲ51KBDŗܴeUV'Γӭx?-1moTj$|tqO3ii/푑I 'hKWi34^ !c415nNo1Xj(o i]cӹs5_+dɒoК5k֋ʱ@ 0(-W^Ff ?cʙyD,8i;.ē1{<|0ϺóoN%<e)vi9B믁vyQLm8f&#(~0pnyw/kݫyfzf3`@CxGk/_}L ǴQ0 fg @H^_$'𣮊^/]" <7.qݺuC:ECxP\%6$>_piim +<]\)]6~Q)7m,`;eOqgHF=CDBѿs bj,Әo]2'7\̐|؞TZ Jbfvu=o!bQe=yJ #JPhb+ CZVy0QvQߔwjm6N_e*x!k |!#;qDȻ_SOXy;]FI8]In &/pRe_˸n,,_|JfPvYhFN^{SOܖ c 1pp`,BxP8J>J&X)y2YA'ݨ/9 ,г+>^ wd>U%ψy{$bW.%Vl ^x^_6'2[QηuРp)OMx L5*1ӹX)|P7HP'6dLJc:CQeqZn80%G ׏X(EO j 9nRJOcۗ~V=f `+(U[?TJ*ݩ:*!iCJJp1X7?þi]@AbXڿTc9Ų[ Apnxw*=Awu0 ׶У=N +=K.mXfRW:s4,=c56V-7[9 i[g=  S?OwH'_ +>Wp@Y!$yzPB3Fo)t"PykJ-eEŸ\M}FFR! ˃\vٴ,ܤ7o|\roB(e%@ "m fܝ?Wi0P2Jfv[75#_ uתL)vY|v} Fmr0=gۛ!ہ󧹴<>]?[nYVT:`߫ }s a2}Pu,Q;1&g(gN^y&I+h r';u*OcMi5ز1qӚWϘb` 6e]z apm ƀpVD 5&t3hrX .5׮?]I ?,rѣ>7|"tbXN`HDR7rs[  Yn ;)&`78 # p.(se a0; ZFΛ_vrf' 瞫#L^uU [Iَ;N1su}VR<`xw9l xG`eBp.s_Eäq}NG1L ys a6m4wǷɞ ~?J_ k-Vs[UJ(] |AޥR&r)0!+ LG(Rk2=&/tS@pZ[iE׸z<70`Yg7nJ7[BN빂}0#SݒL5q'3h'58Lj]n~MσNC~Ӭ/vJW?qbZ0.*0?0>]10D 02?ܯbř4$C>:b,xm4#e ͐kH.@_Ҿy=x>1r} GOO+۷o϶l2Ikk(xx\ `Ah3  [Fnt.צqc PL5_γ1X1[u;s9x\6&D?Sܤ^|Ƕ18ܫ`.Zc_Q2{1A 4 Aq"=Ss=1f`k_ >ǤUY ޼|TR--s&M*Pb]U|[ 8G܀+EA6(ԃziy\駟֭[vt[ pʶgďC8LJ~ q)X(ul!W\\sVΝ;E]pvfBv=ǵ/-wymV@vz\`µ Gَhl@ZY*;eW'Q%  >킂 0ŀ'|2 0Tsp\;ʂ-ȷ6.0\ ה[ހChc0^NN' RoG!3ml|=_n+`u/ϖ/jzFM֧s|'#~_Jmo 2%xz1=!/l0[ 6.䒰u[&L0y#{8a`Q 0+;0L\߄89#θ i0p_c2|!` ySJ+1e\nQhXDس$Px"GܲpTV{,l }q^;QY[ ;JJJ4̸m\'dX*&<RH "n`-Xu?zXk} 'v0aQzZ1e%#ccJOJf[5gR9 o s+d Fq4(Xhr+ݘrhkb `[yEq瀲鼲PGݖO΅EݓwZp<3*ۡ69 bʹ=n'G1<> P[n`Σ&.3v5+d m!kf(wJ 4<01[{:&%.ȀjUMi] M}ʑ>DǪpm {ӌq%x\c[ak d&+5TemyEV8X1vKJ2MpͪFNx^ha:@ ;M| =x5ppDީMI3mcYn(呠dcdh_Sc4 l @L~5e.@|]㘽>; HNׇ`2"^kkcĕIqp+f\_@ڈ =R"V8=ulBR-5Fhn>,mpz2֭+x?lbFgd[ٞ+LewfnV꽴>rvb %ו0 7Sc$r&tĊCPWIZ5<Ώi͵1-8E܀X)Q اYV6Gɬj0I>??ݽ}ցW,YD>^92V{cwُ+&Հܪ~ccN{O۪3\n'ñ˕:CIʽIA+gَ 1 k23za}X9 'T෥vaK6}@Cj-VޖMKyAcxł+ʶLǘRNr>y(\(ǥz$+0 wʴ+el޵(CxtqHlog?~W~RQ̠bn?5}j(𼊂7209&nܠq)ehmwz=|B-}3Mq@*o@:Z# u+SyG_łyVHw HiD_]-d[z CC܆JG`GeYvW/sldGtOGý/BJy,%ٗˠA&t"ɣk+{acu#u޾쾩i3n OzWLj=eع$x;{r+z${11O.:R>")+k}2oha*1;:粯*ȶrPkoF?ʧ諽̘k}\2B{ xBE?/#׫-ANRWiXΛ>qlVuS#MnʾJ-ߐPDp+3} _zaYOWO\/4M}+6p]'zT1s,tpj,~XwVϝN^G(i Jw[7_G＀R^Vd[=&ŋ1vfkŸd2Y6O+H't۷Y(Fg8:X0ސ'?JO=z;Z Vrk8t|ິof5nF{k9U2Yվ /"<cѧox`IEkhC6I;b@ ]o"Ս2{GXuE/Ȅx Z! 1y]k1&0jެ\` e^qi?Lg.}Sنc٤h/~|M-YQ<)v<1_'0m#&Fv!<$#xU<*x JB@]ε}/ɣg&t3k]EOqbQzj!.8p] 7%X(Ê+:0yzCj%IQcJ;O"cKy6(tR!.hbGxҸ@f#ܡZ @*@b]w1+i)yK-kDz 6c0m cJ e <ݖ1ySa[wE\1w۾w뛾z 3 !e,`xY[=tUM5=򬜲(~L;/1OL7x7QOT u N0A}!ū4M2Vg/ C=Wqp ܏1<1]Vy`LЗI3*_@@ <4e\_ Kb~S(*[)ByX˔2+Ώ(7k;y^tЅi{{+<]\~+<^ݴ{14@l(9}/39(espF\;Oߡ[ow>%a,WBFx+p%77J?Xt=zYy"}4V#pV3 NWypu[V9L5K#=sU\[ح=[Re;>sCVvҕ}f™I% +%yE-/3G2n+uxD5L7l~YB֭l0 'QnӞ|)\sk3} ' m $ E2/'+#PzJ k<IENDB`ic08r։PNG  IHDR\rfsRGB pHYs  iTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image G@IDATx uU5Kd $[Y%6qa;dhZqV:HB$&IIV@a\ccxly,YdYWs{UUU߽꼽>{3}=W#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#vv|;CX3tsS2#YPgO 3%8Z9k?tk 7K#p|)>0@P٥,3+/cL\ᵐVxo **[)Ue``Y{9A=ե';L! ُ5uN:d r V6NLԲ j@f7M';^Wn|nC+}&j0"T` D1(bo+ zGAr7Jz_L9q]>ZERrwZNd-[}-tp4UuT2}2/% 9e(ma6 ǼF H;jpk0```v! >ysJiW7< ЖCkng8p|o Pi3!}A:}\؎-.tQwl\2:8X^WwD[ WlzVzqS"H\X a`lYt((e`d;<~Zn%՜,SnpI؃G—řBhp'c}EyWH  m8a h%G!wx [%ɴr]Ck{uo+DH@htv,*G X LBW qlWm-,p^|ߑ}Gr9x;kEX("]HSpJ1ٲ}ugf$=@Z/w|glYuU:4H _GHx)9~`[{x^I'IE9sXmY[5u-Xf֯嗕uuyGHS@q`k.s/Mwk(ne,SOß;k?\}ń) Vi], Űw \gYy9MJ)w%E X;r|iH^EgI +yV+46ÛO<5r)3}e{ˤ\mnزZjK 'c]}aG"j$v$)> @xh܁\usDvN9c{j~H~\C Wjϕ_2ÈJ/O0~}{STWCkK!. zz :fVt$H7FZ @i yqu'ϕ ,,\vсz!E(}t=0'oʙjv9iqM{Rɭj϶ zōf^Hʹ-+͜t+_xD `tO"d7Ñ亙BEvZ$ͽ,Ϊut=ip ˿կhJ\ҶrYV͖_tlq"tׇaP{\AaM"ZH ',cm"iZuE/:h|injm-" շY}c: m9eSNn8|u^bO'rf?- - t{_t -w$p2|==o~Qag,gov^ OdbWp+5;i8)&lS~l'SM{3B k^`;<4z?3[Y} A`(є}H;?;[#:{=akSla,3vKOgYnԵtj*2zKd\\k٫y͕SgT0k҂7CC1M?v4Wyr G}4~$Ǟp8w]1!<኎&bڲ%u:j{-y[jv˫eX֞?_ӞD.58묳Խ3zk ʯ >?i_Icjct;N[ eY{KPv8x k =[ub~e~n*?ʆ;:Lpk#L=?{l{DhN!Wx`[1tЇi喕+'^&o[JyklYK!/O5=4e+`oP'PꞒ=;8~K?ft9[uN=g4O?gQ=Cߍ"] 4=𞄝> o<Ós=lȘA7×G[^G]mjzi1KgTSbEx**g394eGc8 V+>:)mmSB[_Yw#ksH[0nNǛC;#CB$@= "=# PAP^0;,;T1r- [..e 8Rs ;dY>Jf7 -mg+ j[+2aǝ=!,w;'| n НGl|t c}h,3@ׅ_iNۏٶom2LSYX֞Qu?VLviE١gNee[t<%XyCB.|,= >A0p=`+@Htϑ& ,J&+Py]-opc cʚF8z̽v: i;ͱyMsjBeT. =hmQtY=]?E@=rmJy`u?E'>C'vt*綇xG@d@n舝Ext\[v,g&טҳ# .t花SC f^fpv\߱6p[Une}C tSVxy[&<"|Jlx5ZEG~:Ҟ9$| s知o1@V1L04I}e2o"m)|EvD8Ӗ;nbq# l 1%/׷t~]@IeWa!FŶlY&8/Uʬg7Aah"C 3y]⒩>,sjylVBoQ}ήk}FuPc˴禖]%xYzZe 8~}$=Nj~"]@E=L;Cp1)ˊX% ʟe9XψWp׀/Ƭ?f@WooU}ۼX~[+9`Y`uorH{~![#Qgq\;gmƓ  ŠI"<-D 0$FHܚR:>B'd@ܷ lKnM:Ǚ{YL(t pmHfǗfs^QSO=ug?{Ñ<$dGT@?L6ح@sW"=_b?`-;ȫ 2[Qj{wnjr!`WBWEqcD0){f{QZן2Ų o]rqh׆҇?4`No1js+> mvӮ<2 q~:Үv`i6 kʗ:1`Nq/,mYOղ[ɯ l; ]'j ]'^,4F?z#vyG,UӆS\RLҷRm:G#+0vfqHg t7EH?iG$}闦A=}W&l- nZhuky2p+G Bi{u:XwⰋ+>@|jo\rnu:*@s)n20Zcs$]˙V1@Nu2) up 8G"퇄6[ ȯK_*_ Ɂg6g]x-2L8/i˴ՎU,pTq^t E ũ؉2q 1-Kb=?Zo?}d8ru呖m:ttSx:bgyȼL[-9eزZ|O<| r6 < 9xӵr2x24dy08OtɴU*e#ީx?|:!/Wrb,}%Bl>u`n c«?3t\g[>gz؉l١si3CS',,,ier{xd>;l#}8Ҷv#KAmAO62 Hj:ЀdZ^'rdZy6 6D{HMq*ʑ*`/oYPΩ[~бm.S$|T,I=qr޾e!yu-:ٖɣsyM.5l!,[R}]E. i2/C3Nf1#6hWRޅO~Ê2婲LwvJYےb_oGŸ]4x Q{]t-Vز,cJy7;ΧzΧ8e[9`Hrx3I@wi[ -k CAgi=ܳ0;`[yL˲CC15q׸vRmE[=I۱L[_F7OFWpޤ 3>a"2Cu}3pu 9' {y5louKA|SЁ~Xt*uae]~]8}qڞ%TlȬx5q9CicGプuE_tb#scy]2[Ӏ(/)>z ]'l"/H ]_91 :O[tveY8sv6 mym>@oΪNib pvH >#MܡSo62LZ޺l,uڞu;BLJnژz|`svcSbu 3`B)v-T) gryCZPWy2=T!l]_co[EZ$c A Ada2;UR{Tx/_Jv܁q@2=Tʫ'Ђ5 y9q1B#U"m~W(4 nDXX-ج|Fa:^en{Ǡki9,<82ʞw [nng66~m!HЦܴ;LZ~ƹLZsXļ,7hH8?Cw^^4N~#ߊoK?'g&3g z C]FY}yle|ztز!v˷T8L7\-33<^YYXmиo #@ ҖxYr9I_=~G6i@cIۀ#ND;sL9 $δ2Di'0ku@'t7ӘNХW9-Y-r-z6C結=QBgsq7btD ;v۳訝:HKǬ؞3pfbE)}0n״'zďA~+9N80t /4@ ՗˖Yn{cbx/C4emd>c~8<ߝfqFFa*oGYI ;ASɔk;c}Wy)mNga,O_'.QG>ߟ((] 5znoց-w.ߡn5j z3ҝL!bJh顉S^W.lNq#O{WU`J~0.?޹S[ŋ>'X<|h̶7npm3~- 6ebi9a>!yPv% $oqrCWtQ NZv<E[o 2+G9(l}k+keϺCHȲ|>fBr0.dХxToy/B9ӆlx|.ieʩ !]$} +e+ˑ8W|>i31T:Ga =&B蝔' $6/sqv^}qeܲ޺fK5آ3pX]K]:N~$нj]6Z5u2s`5\QkC..&l`.۾h{#+%xo@puD/hm`<@䳀_tb;iE?OUA.8:Oj#ǢX餛[$EXpywrr t_;&!΍=vt~-=".1٢36ˤť>mPymΫ[nT;m[ L.] THӧfu@!R>n+@k8~w:c s;?tW 5doa׸耴d3=uCQl/sme_^ ]ɘ#Q-0@;Ɗv]̶nnV=%FzU L$%rB (K/^Vὺ9n^Vi{Zߕ9}9ҟi=&~?vv/C06>0[m18D0LY@]_?c6ؕ8yd3T1f$YeDK=S[s꿾n1OtUZNy!o.p?m[Y cc}u 5nդ eb5 _^VSV !)}}?>Arݑ~1GccVq`psM.*o! Nہ_oO߱ƞWx~?9SH>%8H=}2O0`"]MICV~Ç]_~Ej+(8)3 eN (=UrdoUo'M8!cRG){IqG* L?6kT{Ҷ^tZ'_s2 NFϼZhXnVNw+MwV?W5tv20PsaDSQN>9=d&ʃNKT00Єpl.: ߜn!L%[2\ [1ZP#56~n(L&Ayd;ӏ.Ӛky-7~un]soWv8 AoAv8kGt>['s9e W;*vXNS0N |ph&C5w: 4Xb iL˂'6WkK(XZ`^|[Y<%1k{]J[LZL{6ߴD%ml5;-Z"~tGw8E 8pJ{DXpKX5v|7N`lk[N Sʫ% Ee:j;>lv"x g?R_+飴/駢B:GG?u^ jy/y[* +{io7nlNܣx՞- /3O9&mDG(qsEKB`Zr۩_#w/Qzi".BtM{[,vÎ^]d;eO$ 斀[kv|RګeEh 7|dOlmC: >4? `eexFQL(x6>$O:\Ol҅Wv.,>ʧҖa7UY^GxjsWbK[/.׍kp\;? [φQ?/E\Wx\|>G3[l`ji,yw\n9P ş1vlA;bd.XsO @ X #>,o:VW,贸iRI ӕC+gx06f0lY \;\\+2tؐ7ȼ>N)s}g?|JϼL[^, tMW!P]G3)N@53o_>:N$Rrf0:N_^]dΩ `7B ">@~MW0?# Oέw𨵾"")=BdE 㮠 F9ڂu?c;g}?4qd9▀}yʲf-_9kX"H8FnHrT@NZ/-' \ p2ɣ;v Nv2l % ` _[lus ?m:>z ]SVFyp@ry4>*^:{yէYp H|K3#X_Xoq;ۿA꼭KJǦU#uUW4 &32c8=@gG@9rn!`8Ӗ3WFژSy|GDgVJl}xiZdSdLe9prMMS)Cn\Sf.N،AD]ulaumwU(/ns#<;Z㛣7^  ʕzK{yct|[?3e`ID2:}eC}:pK?> ԉg ɼL[^ce?. ,ȕP:/?2^-bZNY&(XN_bi=[/܇L#H#\xδsK0_|ӟ#⒩>dl?FGS7CN:H(;S1 7paH,ҳqRݵhBEd|ngţ2r&O]±cY֮i17N+% qNy䥙8.a7/Ns[ |a3qgEBrvuKb'@$H8mlϨNG0g*)@xB@Awk{Ѧ"#<3m21M3ݬim!122d|cܚb9c"ROOdue2Sc7Ru=ApsxLHTN+H[*Albe9/12r[,'6XU`Ρ*4myr1#ѲuwMwѲg~q9bat]( %Ef(qW+Ѫ={_kd:I 6"%g^N~sS&ۂl<f!hە[ӎFMMMu?[:_,Nt7hpL@iv7}Me-y.8pm-;9~,lbx9bɠЅųؖ1ANN`|l9p`o}8c赸(&޴i9e@A/Kb$}d{s>Ӫ,de^lusLňH[)dZYv?n cC#Cه>}Ɖ4:9اlmbױ]?3Vϙ9G/ ᰞS'/8/L #8҅!S;^~mfZ:>2 iD ʬZΛg*.lZ.0y ߑ^cN98OF:3/mzlʯ 9:X^SrxL<%+g5Ƈ<(@YfXzc O l3g^-qɴr`1gly%" [kn_*> ێ|0xR4xB(D:3_ċ/BoG's.@rUhO:Jww WHw\}nu7a/2&ʠkܗ+988+) 斀)g'ia._' G- δ^,ix5G/Z0*l6Vgklڎ챁܉cӂZiS pk'M?V~<`[Jk>'Hۆ&ڷݵ_\p[焹p t]2<pC3CP̺E7"N"q' = ƫCŭ@+LP,,{:X,i4iy4yKaunujc_̋[ʂf0<̛Ww8\d Q=XcW[# =O`=  Jmx,8/ qH8+"jWȳG }ny4f.L/Q닳N{%D_Ƴfc>o6ԒkoWc& }C Uav%m|͔w#ʤt*./ 'mx'<ϼpfN9kg^~Gﱼ%#wYؙn#:p&;.e ܿ)ΫS鴋[E6lK-Z2͔sÓpx:;q#vT4~3zk"hdvѫmÎCAo "xвERzxQ;J^!4 歶,#]cO Xln`{v>?t`y .m:}GK[%O9b#acKZv!ݰ_64GuҳN(qKUz/sO uYGV]VK?ZKzd;aזcG6lUmi/~"q6nDl~&uh@Nmc"*pBp(6;`"Ip 8׆^ԭeg 2/׆2ꂁʹwyd(&-~Kߏo 5=5o0pOv" H"[ .t~"Ҷl-9ٮ:[VY^jD'"q`87~*TɗApI}~?W׶9G l u=?^fdAs3t˱}I솘 DZ:: ~5Rb0՘W<Gʈ+r"AyeJ9H_'8@WW^ye[+S#Ej1Wn{-tKmA!\ t*00TN˳.[v_< aH#GbBI.=$ܞvny2H<[7 4) q8:vi oP^U0³o,1Un+:mf{>,vZ.o8޲e۬~-扫7AHzny/nԿuп c9|3n/_[ɑ5yLI8; ]fr (,-=gWx֭.k_&WtvapP)sU8굑n|p~3;zC$;)#P, G2|԰`DF'm.q.ϴ2-e\iʸBWn!\M-"bA-Yj>e3&6Zus-~-[.-`4NS@5lHEg^3Zg ojoO| )g3pa0a5x|L~y}Uh =ir;ղ1o_WvsQƯS ױkgkc9N/λhU_J@1+ˤ BU}fDlAylc>SO*H+<Ձv;ۗmAS㈓peFrƻX J:L晗U|=W(D3uuY^Y'Ywe0)7 HBnkC&C-ˠkZ.cgOn'n[ʏ@ڛpvދ70uڬZgIk Xʫufe:LNbt-kX8DpQs%Ƽ8D PPu۵Q T.cm:.[>lm?D[Ι,k{uF-[ٕl8-Il݊{e-疗˳SC4"ۆ\L)/N-Gv^:c-Á L6pͻ8+L36h( pv&Wyxyhz["}NIGp:::4Y8ï^۵ ʂ8ɋᗫANvN@uÁyҝdnB/./r8W|dB~ӏ!㛆TgUNZ\uv0mqӻn=_ʂ/^{b%Nfx QHcY:]"0b.'< pj:}`ksg[O &~{!/ey!{uyzpvp~YYG7ۿQq-8oԵ}I[΁` :{joOME |h͙h^ 1PW櫮/3qi业#8Jp&L^1LSVqCN~ɧſ؝Ʒn"O[7sL 攎5@`2y$p2řWOt},+]}~{glg~<;AzPqkևA})9vR:|z%V0Z4Ws=O ? H5 G1ndz.|=& dV~c׎LۀUC3 _;ܨ/8՚s)̼,LeY3/ZyY˲g^-c~|2Wyoo+ucKZy L^[~d#gՇ&Pϭvak{_Z\Pϋ"O^Y׊~.'382,w[8;^٢c'g7=2y4#,2P}}>'Dp:_eo;\oR6Z/'NU=15YtNF>VQtZ\_cN~%~Qx/$ǀ:~;֠i+_{yrކG'MYf͐ KZ}+'m8 g'Z`mmv;jpp_u4SÝCfڷɽؗp*NX;ipoZ U!\ CZN|)/ЧgkʽZ~Slf0h팲NZзe9a~0cdIm9r{U 5`̃qWG.WeᘉkH8zfGQß_;w3GnPN_\ Q_3Eמ6b}60 g o_;o:2pQˠ5tS g]Q_2iÿn8{dof0.WȁWoüNӢ s&o82؎Cq e^DF >Мo_ ^ |mux}/o#Fr6.1Zt3P V][CEw{ڸ^'qxm㬎[ҷDpbAO 8ӣ [τ˫]+#=3^B'7;Wf5qw3AuZokȘ{/3oIjJ];mC>=ɓMSc/]=;2T#(Y8¿n~iKGo}e]AYzM܃;`3NtVGoa ]eliry|l_qK}@x#L~&X]ywQ; kYk ``ybr&uٱҷ_x{vt8w:٧P^9Spe'wΉС3&~ׂ\|ۑ75Bهn ײ!e@ӑ~;~jo\_a9yb@W,3_X!jrrY_jzċ8体 Z p?¾֗>[ޠ q xUpiu{?~hZX\B}Pon1oݯ LN $ҵ^ҧmRƈ~i"s0|^/,ZTX'>{r{8So]Kb}gVsxL3:2zʯDHgoGE#7KL۶)'/0Nώ+xɴr5~}8ߊ%`B?כ뗶κhnw8z96 ?׵!1O ԟ_eD]WG;?ƏYs-hxBHi4rZf^ZμX꫗@/gp(0}|=ɯ?z])U/:S/}u,Cvաnua|i/yEPoPg,ڭnx,_so^]x'RWO,ʂkn{[fTytPIOO:-XT'7.kgӺO^i'<}rfsYkLjb}Y108< On}oʹtqGY]`EYu~7}n-t>u]|l a;4x3@D`Wkc@˥ `f*Νx,@ր~ 6;;#ovm\K.u;})v^J^.ܰ/$ S?ۖ>7q'Ǥ>ΖBŔg:A}tN9H#2|/9d#g]f^Y} |R"byiFYVd?mc] #k˾<yi0,/0Aen `Y@?["[ou, 9ȐF^`2uy-SoF[^5ruj\.[N#Wϩ+S veG[>T~|wY; UJ~M-ap6E"*|LօV^]YkfL[^fG^;V.jۭԯqm:6+ү۴en̹UW]kw^gvq \jenInl &g[o[ ˯×g=ʪ\90| uk(ïGf v _&z E%< Xx겜W.+)}Rv 'KzL9-wzQ3SZlnjz_j`B[ӃyH~vS 'lv Å$t X&)_Uj}IzނΛ~SM^_aZ)Yo3xۊN%y98w:?P0xON{g##/{_ /L[ 8ӔeLS&:XY=_P92wǗe>~YwrL[hS =mU-+o1V?ګ{WP?s.pW/]x.Biy u\ojo{Kʐv]"'?C^*+-˴uyZ|`yW|Y͸ 9'|2 ^=y3 9׋ü @4n>PoU}3^?gsHz_dObOyqliN, Hw-x>BuKzit̫tOYgOKyo\?qٓ#_vWmvڇZ~;ʩSَvms-K޲tx ΏοsgkēbzsAie`YŹ{::8]mst.#Ӣ[,˭Gˤl/ҵL\qOf 1 l7D{.G?~嗯ppiWQqxzv|2Ca{>ꓟ^ 6Km6+_W?rȄCqx>^Ȼv[2{w< ro6Ggs  9Gs,+bJ[6t;c3#]y":,x 9L/ "`vVI4s.}h=^0#dt5]80uXlիϼeɲg= `$!4Ͻ4ؤss7E3l |.`~n C\ 蝇j\A L^I,ޏgyygnƶ9裣L!( mݹ?c;qq8x"}:y~utZ6?=vʠ ='LBBhsW\1s.JA/e-\&-ng Г历mZ =.eZ`|"͑DD![pN+<:tlI8< 7Gߺܛ02]餂]8y'\>/UvZ&}rT4Ul[S=p tyg]iCu6QF^Ɩ9E' ;:OΛs&vC G' lR1,'l-$0#׿k <`i8`>㺬IKekPV3O]eȷnю8A^NeCxgw^r욟峣KеFy=M˂ȓq@lo/>/ =Ϙ :٢fȴ[dglKZ< =zuwvpΙg^<9wy.gq`[}}c490œ_&⟒8a*;o2۰H愞_Uك '::C6|fP8!bxpt`H]@._WW|-_ʉo@zs'񥙀|`wnȸrPH##RO9zK3!MkWQ_G8 (̌+M:%INor*}]/Ryg8 |qՋFn(HHJfN@xcυhsLrm[i\&+3Imx6;ny|9 cH) $LJ{p=; ;{I](/GWU +kT2ؿ]a%&\iNG 1彀$Ŝ%ۧDG[$$p+ "п>(.8JͶg駿ĶͺDOةh~[+#F $:'!1KIlIc;vm"N ZANkGq5GۨgOȬOk $̎6I M`>$|ε}j .MkF2"6Ib$|$5>Ivx=N)hn!'qIYI~oߜ6ʁ@}WJ@~V*@[Ce$$In>aWMtІ~puBE"P@(E"P@=_B`w HIENDB`ic13r։PNG  IHDR\rfsRGB pHYs%%IR$iTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image G@IDATx uU5Kd $[Y%6qa;dhZqV:HB$&IIV@a\ccxly,YdYWs{UUU߽꼽>{3}=W#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#08#vv|;CX3tsS2#YPgO 3%8Z9k?tk 7K#p|)>0@P٥,3+/cL\ᵐVxo **[)Ue``Y{9A=ե';L! ُ5uN:d r V6NLԲ j@f7M';^Wn|nC+}&j0"T` D1(bo+ zGAr7Jz_L9q]>ZERrwZNd-[}-tp4UuT2}2/% 9e(ma6 ǼF H;jpk0```v! >ysJiW7< ЖCkng8p|o Pi3!}A:}\؎-.tQwl\2:8X^WwD[ WlzVzqS"H\X a`lYt((e`d;<~Zn%՜,SnpI؃G—řBhp'c}EyWH  m8a h%G!wx [%ɴr]Ck{uo+DH@htv,*G X LBW qlWm-,p^|ߑ}Gr9x;kEX("]HSpJ1ٲ}ugf$=@Z/w|glYuU:4H _GHx)9~`[{x^I'IE9sXmY[5u-Xf֯嗕uuyGHS@q`k.s/Mwk(ne,SOß;k?\}ń) Vi], Űw \gYy9MJ)w%E X;r|iH^EgI +yV+46ÛO<5r)3}e{ˤ\mnزZjK 'c]}aG"j$v$)> @xh܁\usDvN9c{j~H~\C Wjϕ_2ÈJ/O0~}{STWCkK!. zz :fVt$H7FZ @i yqu'ϕ ,,\vсz!E(}t=0'oʙjv9iqM{Rɭj϶ zōf^Hʹ-+͜t+_xD `tO"d7Ñ亙BEvZ$ͽ,Ϊut=ip ˿կhJ\ҶrYV͖_tlq"tׇaP{\AaM"ZH ',cm"iZuE/:h|injm-" շY}c: m9eSNn8|u^bO'rf?- - t{_t -w$p2|==o~Qag,gov^ OdbWp+5;i8)&lS~l'SM{3B k^`;<4z?3[Y} A`(є}H;?;[#:{=akSla,3vKOgYnԵtj*2zKd\\k٫y͕SgT0k҂7CC1M?v4Wyr G}4~$Ǟp8w]1!<኎&bڲ%u:j{-y[jv˫eX֞?_ӞD.58묳Խ3zk ʯ >?i_Icjct;N[ eY{KPv8x k =[ub~e~n*?ʆ;:Lpk#L=?{l{DhN!Wx`[1tЇi喕+'^&o[JyklYK!/O5=4e+`oP'PꞒ=;8~K?ft9[uN=g4O?gQ=Cߍ"] 4=𞄝> o<Ós=lȘA7×G[^G]mjzi1KgTSbEx**g394eGc8 V+>:)mmSB[_Yw#ksH[0nNǛC;#CB$@= "=# PAP^0;,;T1r- [..e 8Rs ;dY>Jf7 -mg+ j[+2aǝ=!,w;'| n НGl|t c}h,3@ׅ_iNۏٶom2LSYX֞Qu?VLviE١gNee[t<%XyCB.|,= >A0p=`+@Htϑ& ,J&+Py]-opc cʚF8z̽v: i;ͱyMsjBeT. =hmQtY=]?E@=rmJy`u?E'>C'vt*綇xG@d@n舝Ext\[v,g&טҳ# .t花SC f^fpv\߱6p[Une}C tSVxy[&<"|Jlx5ZEG~:Ҟ9$| s知o1@V1L04I}e2o"m)|EvD8Ӗ;nbq# l 1%/׷t~]@IeWa!FŶlY&8/Uʬg7Aah"C 3y]⒩>,sjylVBoQ}ήk}FuPc˴禖]%xYzZe 8~}$=Nj~"]@E=L;Cp1)ˊX% ʟe9XψWp׀/Ƭ?f@WooU}ۼX~[+9`Y`uorH{~![#Qgq\;gmƓ  ŠI"<-D 0$FHܚR:>B'd@ܷ lKnM:Ǚ{YL(t pmHfǗfs^QSO=ug?{Ñ<$dGT@?L6ح@sW"=_b?`-;ȫ 2[Qj{wnjr!`WBWEqcD0){f{QZן2Ų o]rqh׆҇?4`No1js+> mvӮ<2 q~:Үv`i6 kʗ:1`Nq/,mYOղ[ɯ l; ]'j ]'^,4F?z#vyG,UӆS\RLҷRm:G#+0vfqHg t7EH?iG$}闦A=}W&l- nZhuky2p+G Bi{u:XwⰋ+>@|jo\rnu:*@s)n20Zcs$]˙V1@Nu2) up 8G"퇄6[ ȯK_*_ Ɂg6g]x-2L8/i˴ՎU,pTq^t E ũ؉2q 1-Kb=?Zo?}d8ru呖m:ttSx:bgyȼL[-9eزZ|O<| r6 < 9xӵr2x24dy08OtɴU*e#ީx?|:!/Wrb,}%Bl>u`n c«?3t\g[>gz؉l١si3CS',,,ier{xd>;l#}8Ҷv#KAmAO62 Hj:ЀdZ^'rdZy6 6D{HMq*ʑ*`/oYPΩ[~бm.S$|T,I=qr޾e!yu-:ٖɣsyM.5l!,[R}]E. i2/C3Nf1#6hWRޅO~Ê2婲LwvJYےb_oGŸ]4x Q{]t-Vز,cJy7;ΧzΧ8e[9`Hrx3I@wi[ -k CAgi=ܳ0;`[yL˲CC15q׸vRmE[=I۱L[_F7OFWpޤ 3>a"2Cu}3pu 9' {y5louKA|SЁ~Xt*uae]~]8}qڞ%TlȬx5q9CicGプuE_tb#scy]2[Ӏ(/)>z ]'l"/H ]_91 :O[tveY8sv6 mym>@oΪNib pvH >#MܡSo62LZ޺l,uڞu;BLJnژz|`svcSbu 3`B)v-T) gryCZPWy2=T!l]_co[EZ$c A Ada2;UR{Tx/_Jv܁q@2=Tʫ'Ђ5 y9q1B#U"m~W(4 nDXX-ج|Fa:^en{Ǡki9,<82ʞw [nng66~m!HЦܴ;LZ~ƹLZsXļ,7hH8?Cw^^4N~#ߊoK?'g&3g z C]FY}yle|ztز!v˷T8L7\-33<^YYXmиo #@ ҖxYr9I_=~G6i@cIۀ#ND;sL9 $δ2Di'0ku@'t7ӘNХW9-Y-r-z6C結=QBgsq7btD ;v۳訝:HKǬ؞3pfbE)}0n״'zďA~+9N80t /4@ ՗˖Yn{cbx/C4emd>c~8<ߝfqFFa*oGYI ;ASɔk;c}Wy)mNga,O_'.QG>ߟ((] 5znoց-w.ߡn5j z3ҝL!bJh顉S^W.lNq#O{WU`J~0.?޹S[ŋ>'X<|h̶7npm3~- 6ebi9a>!yPv% $oqrCWtQ NZv<E[o 2+G9(l}k+keϺCHȲ|>fBr0.dХxToy/B9ӆlx|.ieʩ !]$} +e+ˑ8W|>i31T:Ga =&B蝔' $6/sqv^}qeܲ޺fK5آ3pX]K]:N~$нj]6Z5u2s`5\QkC..&l`.۾h{#+%xo@puD/hm`<@䳀_tb;iE?OUA.8:Oj#ǢX餛[$EXpywrr t_;&!΍=vt~-=".1٢36ˤť>mPymΫ[nT;m[ L.] THӧfu@!R>n+@k8~w:c s;?tW 5doa׸耴d3=uCQl/sme_^ ]ɘ#Q-0@;Ɗv]̶nnV=%FzU L$%rB (K/^Vὺ9n^Vi{Zߕ9}9ҟi=&~?vv/C06>0[m18D0LY@]_?c6ؕ8yd3T1f$YeDK=S[s꿾n1OtUZNy!o.p?m[Y cc}u 5nդ eb5 _^VSV !)}}?>Arݑ~1GccVq`psM.*o! Nہ_oO߱ƞWx~?9SH>%8H=}2O0`"]MICV~Ç]_~Ej+(8)3 eN (=UrdoUo'M8!cRG){IqG* L?6kT{Ҷ^tZ'_s2 NFϼZhXnVNw+MwV?W5tv20PsaDSQN>9=d&ʃNKT00Єpl.: ߜn!L%[2\ [1ZP#56~n(L&Ayd;ӏ.Ӛky-7~un]soWv8 AoAv8kGt>['s9e W;*vXNS0N |ph&C5w: 4Xb iL˂'6WkK(XZ`^|[Y<%1k{]J[LZL{6ߴD%ml5;-Z"~tGw8E 8pJ{DXpKX5v|7N`lk[N Sʫ% Ee:j;>lv"x g?R_+飴/駢B:GG?u^ jy/y[* +{io7nlNܣx՞- /3O9&mDG(qsEKB`Zr۩_#w/Qzi".BtM{[,vÎ^]d;eO$ 斀[kv|RګeEh 7|dOlmC: >4? `eexFQL(x6>$O:\Ol҅Wv.,>ʧҖa7UY^GxjsWbK[/.׍kp\;? [φQ?/E\Wx\|>G3[l`ji,yw\n9P ş1vlA;bd.XsO @ X #>,o:VW,贸iRI ӕC+gx06f0lY \;\\+2tؐ7ȼ>N)s}g?|JϼL[^, tMW!P]G3)N@53o_>:N$Rrf0:N_^]dΩ `7B ">@~MW0?# Oέw𨵾"")=BdE 㮠 F9ڂu?c;g}?4qd9▀}yʲf-_9kX"H8FnHrT@NZ/-' \ p2ɣ;v Nv2l % ` _[lus ?m:>z ]SVFyp@ry4>*^:{yէYp H|K3#X_Xoq;ۿA꼭KJǦU#uUW4 &32c8=@gG@9rn!`8Ӗ3WFژSy|GDgVJl}xiZdSdLe9prMMS)Cn\Sf.N،AD]ulaumwU(/ns#<;Z㛣7^  ʕzK{yct|[?3e`ID2:}eC}:pK?> ԉg ɼL[^ce?. ,ȕP:/?2^-bZNY&(XN_bi=[/܇L#H#\xδsK0_|ӟ#⒩>dl?FGS7CN:H(;S1 7paH,ҳqRݵhBEd|ngţ2r&O]±cY֮i17N+% qNy䥙8.a7/Ns[ |a3qgEBrvuKb'@$H8mlϨNG0g*)@xB@Awk{Ѧ"#<3m21M3ݬim!122d|cܚb9c"ROOdue2Sc7Ru=ApsxLHTN+H[*Albe9/12r[,'6XU`Ρ*4myr1#ѲuwMwѲg~q9bat]( %Ef(qW+Ѫ={_kd:I 6"%g^N~sS&ۂl<f!hە[ӎFMMMu?[:_,Nt7hpL@iv7}Me-y.8pm-;9~,lbx9bɠЅųؖ1ANN`|l9p`o}8c赸(&޴i9e@A/Kb$}d{s>Ӫ,de^lusLňH[)dZYv?n cC#Cه>}Ɖ4:9اlmbױ]?3Vϙ9G/ ᰞS'/8/L #8҅!S;^~mfZ:>2 iD ʬZΛg*.lZ.0y ߑ^cN98OF:3/mzlʯ 9:X^SrxL<%+g5Ƈ<(@YfXzc O l3g^-qɴr`1gly%" [kn_*> ێ|0xR4xB(D:3_ċ/BoG's.@rUhO:Jww WHw\}nu7a/2&ʠkܗ+988+) 斀)g'ia._' G- δ^,ix5G/Z0*l6Vgklڎ챁܉cӂZiS pk'M?V~<`[Jk>'Hۆ&ڷݵ_\p[焹p t]2<pC3CP̺E7"N"q' = ƫCŭ@+LP,,{:X,i4iy4yKaunujc_̋[ʂf0<̛Ww8\d Q=XcW[# =O`=  Jmx,8/ qH8+"jWȳG }ny4f.L/Q닳N{%D_Ƴfc>o6ԒkoWc& }C Uav%m|͔w#ʤt*./ 'mx'<ϼpfN9kg^~Gﱼ%#wYؙn#:p&;.e ܿ)ΫS鴋[E6lK-Z2͔sÓpx:;q#vT4~3zk"hdvѫmÎCAo "xвERzxQ;J^!4 歶,#]cO Xln`{v>?t`y .m:}GK[%O9b#acKZv!ݰ_64GuҳN(qKUz/sO uYGV]VK?ZKzd;aזcG6lUmi/~"q6nDl~&uh@Nmc"*pBp(6;`"Ip 8׆^ԭeg 2/׆2ꂁʹwyd(&-~Kߏo 5=5o0pOv" H"[ .t~"Ҷl-9ٮ:[VY^jD'"q`87~*TɗApI}~?W׶9G l u=?^fdAs3t˱}I솘 DZ:: ~5Rb0՘W<Gʈ+r"AyeJ9H_'8@WW^ye[+S#Ej1Wn{-tKmA!\ t*00TN˳.[v_< aH#GbBI.=$ܞvny2H<[7 4) q8:vi oP^U0³o,1Un+:mf{>,vZ.o8޲e۬~-扫7AHzny/nԿuп c9|3n/_[ɑ5yLI8; ]fr (,-=gWx֭.k_&WtvapP)sU8굑n|p~3;zC$;)#P, G2|԰`DF'm.q.ϴ2-e\iʸBWn!\M-"bA-Yj>e3&6Zus-~-[.-`4NS@5lHEg^3Zg ojoO| )g3pa0a5x|L~y}Uh =ir;ղ1o_WvsQƯS ױkgkc9N/λhU_J@1+ˤ BU}fDlAylc>SO*H+<Ձv;ۗmAS㈓peFrƻX J:L晗U|=W(D3uuY^Y'Ywe0)7 HBnkC&C-ˠkZ.cgOn'n[ʏ@ڛpvދ70uڬZgIk Xʫufe:LNbt-kX8DpQs%Ƽ8D PPu۵Q T.cm:.[>lm?D[Ι,k{uF-[ٕl8-Il݊{e-疗˳SC4"ۆ\L)/N-Gv^:c-Á L6pͻ8+L36h( pv&Wyxyhz["}NIGp:::4Y8ï^۵ ʂ8ɋᗫANvN@uÁyҝdnB/./r8W|dB~ӏ!㛆TgUNZ\uv0mqӻn=_ʂ/^{b%Nfx QHcY:]"0b.'< pj:}`ksg[O &~{!/ey!{uyzpvp~YYG7ۿQq-8oԵ}I[΁` :{joOME |h͙h^ 1PW櫮/3qi业#8Jp&L^1LSVqCN~ɧſ؝Ʒn"O[7sL 攎5@`2y$p2řWOt},+]}~{glg~<;AzPqkևA})9vR:|z%V0Z4Ws=O ? H5 G1ndz.|=& dV~c׎LۀUC3 _;ܨ/8՚s)̼,LeY3/ZyY˲g^-c~|2Wyoo+ucKZy L^[~d#gՇ&Pϭvak{_Z\Pϋ"O^Y׊~.'382,w[8;^٢c'g7=2y4#,2P}}>'Dp:_eo;\oR6Z/'NU=15YtNF>VQtZ\_cN~%~Qx/$ǀ:~;֠i+_{yrކG'MYf͐ KZ}+'m8 g'Z`mmv;jpp_u4SÝCfڷɽؗp*NX;ipoZ U!\ CZN|)/ЧgkʽZ~Slf0h팲NZзe9a~0cdIm9r{U 5`̃qWG.WeᘉkH8zfGQß_;w3GnPN_\ Q_3Eמ6b}60 g o_;o:2pQˠ5tS g]Q_2iÿn8{dof0.WȁWoüNӢ s&o82؎Cq e^DF >Мo_ ^ |mux}/o#Fr6.1Zt3P V][CEw{ڸ^'qxm㬎[ҷDpbAO 8ӣ [τ˫]+#=3^B'7;Wf5qw3AuZokȘ{/3oIjJ];mC>=ɓMSc/]=;2T#(Y8¿n~iKGo}e]AYzM܃;`3NtVGoa ]eliry|l_qK}@x#L~&X]ywQ; kYk ``ybr&uٱҷ_x{vt8w:٧P^9Spe'wΉС3&~ׂ\|ۑ75Bهn ײ!e@ӑ~;~jo\_a9yb@W,3_X!jrrY_jzċ8体 Z p?¾֗>[ޠ q xUpiu{?~hZX\B}Pon1oݯ LN $ҵ^ҧmRƈ~i"s0|^/,ZTX'>{r{8So]Kb}gVsxL3:2zʯDHgoGE#7KL۶)'/0Nώ+xɴr5~}8ߊ%`B?כ뗶κhnw8z96 ?׵!1O ԟ_eD]WG;?ƏYs-hxBHi4rZf^ZμX꫗@/gp(0}|=ɯ?z])U/:S/}u,Cvաnua|i/yEPoPg,ڭnx,_so^]x'RWO,ʂkn{[fTytPIOO:-XT'7.kgӺO^i'<}rfsYkLjb}Y108< On}oʹtqGY]`EYu~7}n-t>u]|l a;4x3@D`Wkc@˥ `f*Νx,@ր~ 6;;#ovm\K.u;})v^J^.ܰ/$ S?ۖ>7q'Ǥ>ΖBŔg:A}tN9H#2|/9d#g]f^Y} |R"byiFYVd?mc] #k˾<yi0,/0Aen `Y@?["[ou, 9ȐF^`2uy-SoF[^5ruj\.[N#Wϩ+S veG[>T~|wY; UJ~M-ap6E"*|LօV^]YkfL[^fG^;V.jۭԯqm:6+ү۴en̹UW]kw^gvq \jenInl &g[o[ ˯×g=ʪ\90| uk(ïGf v _&z E%< Xx겜W.+)}Rv 'KzL9-wzQ3SZlnjz_j`B[ӃyH~vS 'lv Å$t X&)_Uj}IzނΛ~SM^_aZ)Yo3xۊN%y98w:?P0xON{g##/{_ /L[ 8ӔeLS&:XY=_P92wǗe>~YwrL[hS =mU-+o1V?ګ{WP?s.pW/]x.Biy u\ojo{Kʐv]"'?C^*+-˴uyZ|`yW|Y͸ 9'|2 ^=y3 9׋ü @4n>PoU}3^?gsHz_dObOyqliN, Hw-x>BuKzit̫tOYgOKyo\?qٓ#_vWmvڇZ~;ʩSَvms-K޲tx ΏοsgkēbzsAie`YŹ{::8]mst.#Ӣ[,˭Gˤl/ҵL\qOf 1 l7D{.G?~嗯ppiWQqxzv|2Ca{>ꓟ^ 6Km6+_W?rȄCqx>^Ȼv[2{w< ro6Ggs  9Gs,+bJ[6t;c3#]y":,x 9L/ "`vVI4s.}h=^0#dt5]80uXlիϼeɲg= `$!4Ͻ4ؤss7E3l |.`~n C\ 蝇j\A L^I,ޏgyygnƶ9裣L!( mݹ?c;qq8x"}:y~utZ6?=vʠ ='LBBhsW\1s.JA/e-\&-ng Г历mZ =.eZ`|"͑DD![pN+<:tlI8< 7Gߺܛ02]餂]8y'\>/UvZ&}rT4Ul[S=p tyg]iCu6QF^Ɩ9E' ;:OΛs&vC G' lR1,'l-$0#׿k <`i8`>㺬IKekPV3O]eȷnю8A^NeCxgw^r욟峣KеFy=M˂ȓq@lo/>/ =Ϙ :٢fȴ[dglKZ< =zuwvpΙg^<9wy.gq`[}}c490œ_&⟒8a*;o2۰H愞_Uك '::C6|fP8!bxpt`H]@._WW|-_ʉo@zs'񥙀|`wnȸrPH##RO9zK3!MkWQ_G8 (̌+M:%INor*}]/Ryg8 |qՋFn(HHJfN@xcυhsLrm[i\&+3Imx6;ny|9 cH) $LJ{p=; ;{I](/GWU +kT2ؿ]a%&\iNG 1彀$Ŝ%ۧDG[$$p+ "п>(.8JͶg駿ĶͺDOةh~[+#F $:'!1KIlIc;vm"N ZANkGq5GۨgOȬOk $̎6I M`>$|ε}j .MkF2"6Ib$|$5>Ivx=N)hn!'qIYI~oߜ6ʁ@}WJ@~V*@[Ce$$In>aWMtІ~puBE"P@(E"P@=_B`w HIENDB`ic093GPNG  IHDRxsRGB pHYs  iTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image G@IDATxiuUJh@Y p2`R.'T/vʼncgEI>bJ3T`R8 ,3x1HH t{Y>9>U{^S^ww}9޽@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e&fi712p2P 8 w8_}_SqMT3~~,ɥW20 vw3Pw59UTHC p*Kg6h;7O|a:*3E/ l@m6  [g~/u2P{3_&X1 0?_@:+ bJd@^~U1ƴ׀f^9Y{ M|@?ur|^9mzίKkm>*,ON `uJe/֣NB-ȧXSuƾ 1>u.a5']W{Kwl%yӦDk>_z0Eǻ)- 2|2 UcTMhY|8B4Ѿa"wntӠ@8w_Ӯ2q"w?| k?&lQ/ ʀ<]\J[&J-iSwVBdKO/ vZfZ(NKNOΔSNKyfxvTy @a3)* l@=؞x83IGaa.ٜVyNkn?˗>ǃbwZl~ gY<'zxkQS؊`ưx `uJd7W]T*\t&@|АT=M|=!Zr2x$wחp)+3#ғ$ڦ d(*f% 0-FY=|w} 7ɱ< /"/V2,4nOUz5Ml56=͸i Ƈ:'/O*"=͵'_j xQ;fMInO|}лfO@@=1Ӣ37_r୅/KUArBω*>ѿ4b Z̫[P:XREҵ%-{^Y#s=^| Ì,Hޖhas5kd3G{˧;2[0.O6@z+'e6' Vw0R``|g5/  U0Yvb)A0lߚx mG @( c0ׄW}>;=3o%yChdy_?Hw*ATg6sVW$Ǣw,WZ~=bY^G ^[ڇ؉woyj[*>˯ZQV4;\t 䡬6g79 Dw *@WG2J{Yk~kk;Ղ x~Jz;3sc\;6ki8i.45%EyTRHwytʳN>M+/EU6d6U}4U;W84M3adzN=5o+}ЫO'\iv~ZK3?[~O^ZP؞UAe2@4kju޲Mp\,ǢEXx>t/d v[:ec ;?ώ¢O]p'e) ^Ae`uj:Ug@%]s( Xixk|;k8af绍O:ǰ>UЫXm)0tx·i'c}B'ҨQ6_& je`9XQi܎ 07ς&ra`tBcBx<88h=S(?A˗Q8SwXGT@Њ'cL `cQb/_V(C2. ]$nJުqii|?Á}0DRUo'iF(l(/Ex! f@k^2i)(϶_;n+R iF:NK5-Z(_Emvױ20$w/~6}.R 싟2㼶(a]T6tˆ1{jz+oV{ߡ߶|_7D(_9{n0 (aVP@mQ۟ᄸF$LZ.@ CUt(fBuǟ{}aƅ'z=uœc_kNݡ{G.Jo(|,(lf>WQڃu5T(oc4 5?8,+Zkanij*mޜt $ft/b u?b޻ =Fy}_"#0_$ W hjpGOCmMttQo:(y2^: Fs2v~5&,S,o Bjz#Yo\&a~4^o!K_ikL ' `04_ F|CǢpT0 N.ue;,,a/)e_5c q>./1ʓQma,xfdC6gjFho|SjL~ot/z{,F{.Py,Dx 4|Q'ʟ(qgen3v4l nYjpN5vG|e,~~&=aB 5 2e7aF4S"Q2$jԄzT&~j{*?$S[Ћrt_48 'M=*]Ʋ.gΕS<9`0ݯ($(8T& 'Ttf^P8'n^wylO~rO埾:fX*M9{W%Y5gsyZW_ݨ_<<ذ^eM (2RrV. eNߥ;z]yy@w@~klE362 _R\^pjMLȯj/dn5.CQ@^IY&v/ߥ;-Zd{F(Z<[G6KKrOx $(zڦ,%ISr7h6Ǔ SVqԱ4p=4<s/ N\j֩ K7S{}~ȳX h D 8˼>F/>2f*/y2_x'" QX乫Ww ã( e$oFvL%Ĉ@Rl@n1/-.vG}z6o t@Wiq 4\?)w%0F/٫'*_zs{]< |,S??ʿ$H^8gJC4˪~C3k醆wky~y,?~ ^&Qf%y*mo>n|O@W?[ ܞŁzV ;4Ȝl&,ICHI$7$|r~>(} Ͼü~ǿ$ԧuz£!]fڋ\+` \.9u'|ҳ k@^г_wg2ǖ=OG(%~/m674'G{WH\ŝ2ϵ%}a2F>%˗x#S!=:տau٦&uw7աz;juXY𞆭g^fJ X9 2ܘ4rPs  ~DE( s}0Ǘ@mM}_e74t1j>LKdIH?_mʥs|FO:D{{/㑾x#AOcqe~Ӥ82itMQߨw^Ֆps&jd[et=e}C[(d4%㶐ݖ>(o Omg:\[ֈ^$>oG>Gb(EוXɌ%,Ơ$ n^a&_B8Ļd̓) ˌx84puŤs˽X(w7㔝]|u+w׆Er;yz-X ׀ٻLH綢u:B/[lS>YSs_f64b d켦&+ 4DޱtbSV,``h ]oL;lEXgd/9-6 e%AF ]F\&tERӼПz/]z]0ZGo `߹džds74q^oכC̯"ӟ4Zv;-Pjt(4M18誑|<ww57ruv^#r4`c_dgh1b\CnwYܵ]"kEv$06ҁ' 4-yc!CqƏlj2Ǘ ƛ#i)f<+i;=;^;b uz[fw_j xͦYVLhbszC.xC ^s#'[|u]OC:ƤdOkY~n˞9yN݀\mEag@ ,>C 0wF'Fu.Z~פ Zt֥8n#ݑys[;:n7̥'тq%@i5D~+a\hF "6 ڛdA4?[h|nA\H~}u3u5e#^sy<ӀO K<۰`NyJXX}Og]]LOn+ZX:²?݂=6ϥ㽴xm1҂=}*@+w^cWߒ|r$"+Z|nSK['w@aCi04޳kerh0҇'l9[#7?w4Wf0~tQ!0uXF BKs` t1GG:[?W%,?x=Bwi9Iaud%A.mVC#fPG/3ێ]/SG=44- ^KpfXW3R|Krs5$ϵNd_h ao~n1?? Ol%ARn k&į؅}Gy{ы^^^Q=`5@CKk)lTR{n7<XK ɲQ]``9*A2W]M[K.7j$/d v]E~bќK[7O|m@  . _3?ي'[e.vD7f܇Ӓg/OhŮxw;L'BӘ9JV?+9 v;ӓ[g:=),[U?5x:_ U؉͢.;=~̈|:$3UXu`\*J] _(/~q.)15ȱ ^گi~o}{ܫH"U3A2v\;#;f&jdY>ŮAiWR\9??<#ЭV<ޖȓ;_4X%F;.83[J;) ?Pр<#|/?>9/wnK~Ñȧzaf' ƴ(ݠexM;4Av(i#fF(0Yp dMgF7LCiӁ+ڔL<8WK_>^Qʓp-ݟbbT]ZW]l0nG yކEg#}-g=?>IG®~IГi>OmVq(3/{]>)tBXc0wR;O[=QN.6]i;99:^Г Ӓa*yQ( S20OYYy9Ejm NU4x~ _Xyۢlʷgx>ߜM;XtE+UG]|8G!;>2'LJC h5a<ӝxe"&_p%SPux&~ ƴx\o<^=]#dk @?yk?%?G(Ey* ٣PN t <uO:4oF(O΀od/#S_uߵOGZ^n5Y<r &ߙ# [bյ2Hђw'i!,ҿ{j0[#]@^2h:ߚ$gRmW/kl}u  pc6GB^T#K>r}5?ʻ4hӲYnLAGxd+K8sxe43y`LCرM0J& 6{q^ :F@X~52GmuJ[A)Ȅ^+?sW/ߏ7Xs(+CfgON l! 15Ӿ:jj"|b ߧNm/8-]جA>G†y|^6*il*i $6V.IwG#(Oӊ 8t1-Z]ڟ^ComR [139 [4AГmA[l+ u|k`ta? _,ӹ0oǺQ MEg^4/uhAԁݑ?ܗՖ=_>~EyI𫣼!ʷEF$::Etw!=:œxwx'Pt|).Ls\9%}򑏴fa`kq/ E/DAuwLI(k΃.@OꍎC_ơCC&#_Y@&~K9pyxRZQd/tpkϯWSY$umŴvG||;<3\xh  .&H9J`J\a6*Z ȷD ,47| dӮZ۾N}%}+V}Sv_j똾t5phF dA)!B?xw9RC%Ђ+*l~sоCx1k_\j[+_m3ල]F$$(`O10oҔٰ/|ÉQ~*7@ƱJYom=D~6N/Ͼ4) g9u8Y`)=G'Ws0o!Mq`m 0SO="nQ:sp\zsxɿǤ;]a_/ >>D4\'-e;w< ߪcؔ8-v\.i_>FmI&x>:-#aeMa'l~,;4`. `9<%?O M 9mw.>X]v}2`X@p KOXz7:po&v+w!Ch{?/le9lg-qEusױΣǢ ;ѡ,1Im2>$uZnO '8lNt}8-}s}g7%AOZ @tmmߡ|nWRv4H vZ%>s{N˯iɗtzu3ywz0Ep[chv^xL1>W]3w7SINO? q@+,l6Y@D)oޯAyNKixw=F|e?&4$/ ݆ @'0 xNϵ9bv>aG+ݵᱸRj恘9wz.c\Vxe-a%KLpC .ۗ_abYߒ}ny[j|JO}قGEm}oi3֙[A1s5({sؐ|$JR` :#}AM<8LA4;t1p&>> qZz΃>xIKiy1Y~oR Qc D9ګw:gǰ,8L.G|;V}6Q` 7 UBơWTZ%44lWFi>C G/$!~{nTGiՎc϶>XxF&6`뼝FJ; b;yD~bƇ@+S^d#P/ >ƻOR움_{?zu[lAm}m_w-gF0XTZ\9tZ}P,sG}גT[}u`|-ŁxN/ x_Vs/ ,\Z 7??'A)jpoF@n/˳[빽K,~(!THn 9ğh'غӺB8PlxQ~~|,pO xcF_]£3 -u du'@:-þۊt=m5ba7#Q DQE7Q }']''ONF;iS]Ӯs;=g:NKyK;}vz8oC9,{>cch y;ANGE2p@kchLuLT't@)>I6N<8nx p?O3>Ln]n}Őf~K֔hq|o=Q@/ ޶ RMUF`~ I.%KviɷbiqӒo~Nz,F );uKaXnrLNOz΄Me<%ߊ僿5/ ְa˓dPCfmh e w('$`|}/F~鑮$_s-sm.rO5]6t.,MG# ;4J˗Ad 'n+ mO|=-EEW<g{?Nx+?לs>wlb\˧|]xE{O``/ hG5$x7:w*6$#0? O /خ?SwxbvuvhI:lM C6`0jO Ӓg:Nl/q9 _$)>8=8-}bt<~dlgs}M WS~W zґLρd[|շoiK:Zz/ O𓀻eO= ՁCn_O]cm~4рWu`9Y_R\qŹ?Kfܟ,_wϱbq[ꄝ;7;Q੽[Kth~{lq̷Xy 6+c*-ˀ@6WS)LUot Vpb iͥCAjGۆ M}U[G_W _m9rS-l}e@yI6²9[7Q` -]٣}.7qvZ: V6йF:%`bU|Q?߁o3hb3?xG߬侫­)3o|]J ֱ&̭t}e_;#eHfC/{F4e;H6қù%{^+~Up/ @_u6XGs GdN_{ N)[Ng?sqD-2ђ#J2wsDtyҝCvRwjs0lS 7 ^}OSl|-p+};B[Ync½A9M\D{;Nnju@B:_Ȏ HN|`!T]i8Z􄡗݇ε$`hKKy_h#&W$B R5`8-;AgPsY.=aIKg{NKy\zqp\ۤĭLAG뎝纓}5 C[tZz΃ij W w'~s|M7 oַ إ_xP;N[V#<1}VGX~G ƥ#b K[jw|:-}Agr{k / x.mtVY?y~_}G_r_+.Uݿo!)k 0__<ፊ8-ݭN}B/v췶/O>K6Ծ욟80@ w CxW;~j V0~n 6w>^3ėfN@ϜY~ .'"sx &]h1zmvl]ǯIS9U\Cb _܇%3/ӜYopL67xG~{SmƯ|:-V>3xNKyNKX:5/@[|86`-^{5 ]p+q08]N kjW; Ao HpX\o >fLkz @xW?mҒK=ƱdV/pހz}:-9='G zs/xA{S@E-8(߆~'A%~'9U~/?^hW:NKy|nt6j0(+gW`m2w?}oE{9K|ӹ^kL Ŏ)<29{"5v|r4C,/gβ?^0qsrtښ_ ^{zի Mg`='?@Aع}:=u3(9|˧[OcX] 1sGixǍޱ1m<\,#u^mGgsWB_ovE}U=[x>হ0hp Әu۹XENhL # vZFΓ1>\>_9V.9>| %A6rÍ{IlttUF|0Ч>5}A) >/yhMx.&om5fv쑮㴔_>}aɶ&]Ǔ|Nh4"@z}:K|w"!Z=hآz8ρwԞڞ' c;}ƮlFyN\>>կpzΟ8-}9-}:}_`K^rGx$x7%3;e5HY6?wFd{l!ޚ64oMQ_b¾Ԗ[l+&pٺL0:NWQFe c4ݰ<.??WŠӱ˾.^a}ϕ6мG_ VνbF9;+,cFi[C8_FG>->븭hsGmRw_/ {OqWGyCoC`KAf-+w 'Qd DP)D'`4pNKy~A8=g/?|'SCx?sa'؂uwvz N7˽C9ǥ;G<ԽNK1Wx7էUV?ssI>wK9_joN<xGSKU!o^t9em1=U 6Pӿ=S`P>t*'16jKs]g:NKo),_jpzm{nm]AxtE9IޱȆ%@]QQ%mcgTs{œωi4]u[|~Em0Vup<_<ᨴ:"@xW:XyNR#X9iwzN/ɗgy}wYS%i O}k]M28Dm;=R|[9\Qꊃ0Dn;nC$ RmvB`o؝A;o18O. P; -v[a<9?jcخ=\`ib#ǟx#ߊHw }ȧc|Hg:n0oK(Ft{GC({am|mpyA&{U6o ?O~U0_fcG:eK]te oOq 6in9iE9f@!d⡏N0ڛ5}|vw_չ0}G#BU=CeiQ}ƛhr3+t\U'^sŀ?-]C΃vh{-L4RmT}v=h3usg/f?-Q-yhԑd'6@aO` wF~D;ttA}8nAmK?cA}8\h󁟝DU#1r(Ӓg1aKvsZ޹q[g~- SNcy@bX#ist ;I*Z792B9%jdi1N鬧8='GAm/t>;c?xz`C6 W 7甹!@Csb%/Eѣ'~& '@Ɵ|dߣt{~I?Wx٭Ks+Gubug/ /6m~9 ߍx !T-ܞ>SvߊyNK@K%Kmǣ&2ђ| ӲEiɗ%|s{鱗++eF1sV:NKydVl7o@.:{]S89tsZg:NKyNK8-=9='G`gAoE'hםoXUB%F2` 殟>IGQ? +<8z Zd>>fAh~Ҟh~|impox)FJ&^#m׈9}~S;£62uE e_ixQX30ZF46b]~Ч4h%J蟍Q&SwGAk G]jo}ɷ<&%jbv1_@3+?ζh4 {E8Jv{d9Mma_|HKK rQqvOE9ʹ<1$>8Jv/1_lF=FA}87YQZFwќi@c[tc8k?m\5<_6>>~hnѿt/Q=27|7FQ>g=k-NH>Guq}1v|ˇe^ojOpKwu N#vtN9vŽd'CTOǴ֓+$+_zK | 0mȳr|3߁W;§6606ٕaNg\GW2`@.|''3iͥ/,b;@Ήh6evx#C#x1Cf/$30bm8,9~/oik`2 4Q='yZ\s/˷s{~w3GhbogѰ7|l$z1 Tրq\ ;Bf°C_&vt@K}ɏCzsrO <9Fg oAq x#]wy&ѿ;*1ި!n"POvO|Wӗ'^ / +8O:0v-Xj#[oi}mOzƓyӒgT xid#=.w <|^h\j"9yTSk[$s{_ѣ"]yMQEt6XC=N'J 0o _.yԆdd1|#]L-0^Fu? x|-?h`D;Oz[m]OΓ?6E Kg >fLȧdxE =?fL1|H7aoKر^0>ZS]\u>z$NwG?{Κ@sYKr;[6mo~k|؛dBozw]q#b``3<_9br&_M}4:—h(cY.V^.|mŅx#%lo ^G};TWvѿ.wh #e~`mݗӡz`?o$U 'CA < ='ǯ|AHwē36״ncH7|d  ě yLvo'wڷ"1[!kA6:5sg) |{{1;H&Y?˥'u#}O3YZ}¯52`7Pvc}0N e^phD~‰(_xy;R]\^%vh9})cL8]c-q/4ЀkNW^7F|*x 7-?]tF>Rv5N?f?FПm}-Վ00:co1Dy֢|%' -]0%y>du2@Lr7z ^S!w)ZR{K[jw/sn<쫝8Cu㶸0za;ntt;9bJ&뎾Gx @N(~Na9[C& 0wwGNyй'8,۩~~I?˩{Yo}'-CG{q6ZwW8\ hNN&-Q& >;^5H1РL[ϵ>;~_~%;->O |m#82S{1sh'!<7^p?4CYgk}RxWobLNk;z kΞk^?ӧ%Pj}} N-lBmƙSpNhCNW]iii@ftdXl:mBG/yid#pSIG6%~ƴ LM]=q_\VmϿ;^Wca /z<6L0DqD~>̟9%<(7tĻM<T[U2ki3vm8-ve<%ui3vm|u-/Z{ZѝuyS}w8q rG|]6uQ_邁#}(hAeύ9 _T|Z']j[5'a}@Vö^?q>w4-uNUnN+]KS#r9Ip[~;;~C`]&HdbhatF,`=񨋞s ņxjSk/'O_ƂŞn~@GW(cMQ42LGs> $;CO<۝x΋s/ {1w9cӟ>z276K U/œ7ӹx2yֹjfK]oVpl@w苇v^%ڔm-wk?o88։>F"}GOs> XBX\mt|)[idկVj4($82m+U[Գ|d/=az*MCgM\- >@ &.9mLEe_* E 7ߗ翯w[`@ 2U7%6w"=fY|ov]GrJstXY?ç|CgFY맴l|_ XO0FŻr2]㩻ON7o򨈿\C De>\gDxˏ/=~hy[q`G&#oOEdw/Iu}WKo;Kyl0/?.p66 ( >G7[ѿUeb3uPXyyR`#|g/J__WK;Tt0 1Und\/S/ܜ{oă ^y7n7@dhkt|X|tk3+xd/^sWƕ%Ϻw/"?lLwʡ5\~B1'S=IAnotwޚGJsmy h |w0>E>\&zs5 _v./?cˇ0<)gnoYa#y''cmJ_ Xg@+';d3ɥM |$ ru&|l'u25zQ-9<9⻮h{s a8{\y_k0k?=g|pRG%ؗl˥(ox=A)u~1e}?s<蹿9;/$Y).Z#Xqv\<;1RiSgG]tw;`b?~ynRE+j{\-8}?f96H(iAo] W1ZC&qQ5]^=ܞ#,tG}F:!ִ=>[] F!k6,h_[?/XS4lX0Q Y^ ]Mesg j˟%iI Q<9y__v8h>n B $X; xI%OiN1@y^5ȸq2;v>h9/w]d|OLqA|[H-~WE zCK~`IX'N'K'7?;4x;qKKf\͑>"]TN'`ţ.Zɏ]Gw>•Lxf4xb>b+%{N+}ow?Or%2hŽiD._yٹ |qIn&~=;\y\K=U8br^-΢_X6yW]ra-aTJ/׵:tnO\tɯN|N6<^{}n~u`s`Y_2d' D;OUE=0{g<ŧ;|ťv=6%S]XqK솠TG􈇲;8|F Û%z6o H`6- _v9-ජ3Gz^Wr?\+M`o:}r"ш.hdz _]ϱdS|qk's %_m?9p4V|qmO{{G\&Z8ǫѓ7<{춀WJƨ33̼0Wѣ%N~׹z(lRoW'Q P (38?$?00XE'б6?z~੧j?#׼fz|AAXt9v9~_ k;XH}qLvbT ,wd;:m=٤#B8.?q]b@l(L֩tX#tDsBi׀_ƾ ;;_=_qM𶨿7lXYc̀C}6v_[7FٽzOn3*Ldv1x=,u~ur( x?]xs8_YO%.;|=gZlԧKg0WkQ&F?]4VxM\U޹_0_6_<`2B:?>u Qׁc˕S9!|>~#ujoo6j_7|[-1<?E xBl #M`/uAN0M $h7`'q8_^GM=t3&xuSFgr%Is1R~'=3mxg_{'uKOg{~4΅]&Z20t}0& &lշV+![_l}Դ0圽‡5'8) q< ?W)Gi _(e|LhxE/kB]Ku~'g Tpb၁wY4ݡɱ(z+]x~4!z6oI=/?NA(> i-uwIQ$4b(qNlǀ+ĔhɜD&l6EJDI%f߹S9{߫޾k5Tvkihymg] ݾbzs囌cMٓeNZ^\-I8g@[q5p ,}Lߏk {ُ,EqwXS?t7C )'_>M3錣zVWC`Vշ5H"c5Mb4SK&S8řeƟg;;{=m2G~U'jWubI׸1}5mO^+Nh@Ul_uU[y5)O>y[:?WA0mho6`A I}`ŕ]ѹ r GS/9s3|3ɳs|[[;[/Eg)UH\2oY ieZ|6"[H6e<:ҝ~M%+/o? $xy=ceW x?)SUE[ N2[N_ h感kIo͌ K[M![x _T/8_җjU=u,C3l;3Sיӥ=л 3A, DuDԕ\uJk5'$xpAU i˶n; tx%t/< >ʱoxk²a'mNUܸԱ>'~ +=_׬YcϷ9]gZԧ)E@Ijpl4ƥ_o{[؀b6,_=8p\- E":X n9?f6]B>S-Ex?|-}?|+L'ӶZ^7rxMJn6zl,%$-o3IX</u`+MV/~Y&>Oϑߥ׏ӏx^=qէ|3o܎bxX ڃWb8g`[`-״ViN^f^h1"itlvqLcx4zOxeZ'?$ I 遭_\˿טIWp#+3ï嘪'v׌AC8A\k*Ed3ԦEdёe铯[et&=E( 0^@|ǖbvsh׌OoiǬ*z}x-߱qNnoX|pj`|M;Yko`APBKjgSp&I2&|;Jx)]MI*/h`&5$?bI-mŦК@iIWW#RRa֧7k>_|l~JNC ߔ!GTN- ,= ;ZxK `g6F8zt. 4A >S+s%_Zmk'k'].1-p=h?ugauӺ䇔|CxZ`~kzr^[ʿ!?6ɸ"Nm;4>ϤpMtȿ_ֿ@BVѕm_&Ҷse7@Ca`&8 A Ň08|}o~睽/>́gߺv^*˝nOdCP`6`u=x5=exa^ӛހO2oipkc+}e[-tptߢ t3FK$xۗUsdžhiQ17N /j#1y6zNWi$/iNK~ſ؂S>< ' pU;x=lU2+8Z- E71Lԕ3lmp,,t[M^U<姮䩧L,?u%O=eb,y)Gl a= `7Tu@?iޣ7<5/{UV^g#ϙ٥ݪӡO-~}_|<<Df{'/ßi+-OR75/)kz5N_k%džsQ`u "3ހ:c _36=x_vɃd~,COw=;>'S! uhp' 6&h@nyDbʃ& v˔_Hr:K+xu2dY['} ~}3 75)Weϴ7~.|hǛݮs[׻~=aN/E>}`9~0SqD9< ooo  ow6- #;MC 6;>Ԣq;&|%1koؚjݵD c=ͺp=fnj[}.ovޓblᄈ7 Wڏ۶1f~kxZ5^͵g}o}gZ:?قvNlߕ~߯!$M=_ ̅@}Q o-0^68n48ς=`*/ix_ׇ-OH8RZ<7IxEG/zы3 ʪݮf'8\&|-Fˤ׭D[330-Bn\ڠ }կ V Tu d|xv׫w!nE_3vsO!`ƦK'oRoUl-T`, ~5tծWqp&1.}  vndwvJ[Z~׭q!\#M% VfB'Vi~ `mm[Bhv8!#򿋗ZfeKoe剕o Oz]3*-UO\勫<}lLrT.⢟Qiq橸r5/_|,O5pP}$#0 8gռwvP[q՗/'U>+ao[LLr%Y?Rܤ>ܟ2}_ l8"!`'/6dn*3.Nն'NI?6]ڑ֊F:QFV@!bY_wUjqw3G~@xwIv Nzvd;zO|'=GN3㍧ 缓zRTqnv(BKLű݃` ?hv6dʤzjF]چo8v ; |6|^x%idboy4 sh0P1j GvU?k~6b!?6O;<\Us57xMoe|\/H_U>r>l8}<ՊR~;|*^Gޔ!r}[SO=U]/[Q#W33'}olr'c6fy@g $NAqLzNرxa1@CN ʖ!;ELZweg㔗i.K6AA{] VSU}~^_K]-?muav6@IDATj֎ +=_׬YV0@Asn^K%^`NOU<_\lnmxWM'Z2(P8r8Ec3CBB-gƥ'}'oo[ȦQrv^A=:a }0cbK\z2<,{tT3H^N`L7Mg<З2<}CW*?,8?K x/[Q)S0H &zTxw -l- H ` #ǧQ3e>||@GmUnONdI+Oh1?_d^]e!4Y0W:4mOaU4$> G;z`x2p6 s_ (_cyߎo Sf7wE>d>[3uu p+ED74HuެAK?W7 @}$W/:j\>Y+cI[wI{d-< 7@Aߍ Z/Rޚ<:z˯8+|)+M9,@PmbWzb"|P˖ 2t|c'oW{^LkV8ix- /4Nh4xC4E`o'kuo}6z.\yFv&72~x]ocoPf~.=Fկ6vאPu=Hg?{|& {u!?Bc_־b Vt-h ]CulIO\eKכ+z'`u%/d;Aތ ^Tyn=yM`Юp`nUL!F}m&J_HP_|/}y+~Zkwl|RU/_\1՗WLօ,x/ rC$]UW\DҶj\]q/[F;i+p,J>*5Z6c'jEpb䩓X8i2S!S&4rE< /0`:%oPXnuQmo- ^˪Fr[Gg6[N8SΰL[Gg-8k_e M!:3cAnz0qN?Iz.YHZ%CvAo7Tw=wvG-tS`?N4O`-v/x[϶p~k"LArk-PfgS-g-R{Ni;<yF\~tS&}S'SR vУkSevqj]O؛hu6ٙ !]N؛P+&1A9On1c1 7򕯜tߎu 9xc۟g~9ǤDmRL hW[^D.h^ȼ传І6O;LtwMNZEmI+8u)N^|P5xWGbo6JzV@7zIL=x ƅPuP&v|בOr^uSmK S|}̀4k5 芵ccX=1ऑScw5rJq@v@s_h~X7ʙg b78isqe/{٦0frYynWNdb[..xWQ4I+Ikd t#^MQ%l( `AV>ӦDh\OmlC-i^@Ohv3y(w{83х7ʴ;V/)H[p8zȼ!F2|!}7o_Q6h1X>hO|~W]FpMVLx;9-o؊Vit[t&K4^)yImddL70fXex$x8~iA#g@eTX_*Xr5?jZs?s~lC tO7}K]Ą v{E5 څy"ߴ62elglK=iB2+k_wZdW;̃:'H+o\ _ZxtneLR4V  .Y kM~x&5X`x^ X=15 z8o] NN9~Xp>/?g,}&N@_cSr7OÍZI[<'#%)N_^(YY"Ջ/΅o[[`3l}mkV9be^'>9W.0Xbx$`t1عTj]n-[ܛp7yZN blx@`ƚ fNzO*5z@<72ͩe-?ZI`߫X٠֓ǎ 79wkz9$m>L4}/߲oMӶB؅υma|PE|Fqr/Ӭ.Ї;T`Xd܅F'}S'Bh@g넄h-wpŸTV35A=m*'Թ`ʉIЏIWw7!y6`m$] 4LIzm/IpӤ;~bxH8/ i3۾sHcX-k̈ߴGY4)pWXѹ Gп_mﵰ:Ѡq.#+cb +M;|44إgVg^h@N~`'&1crtv}g1tO@ ڶ/'}@_cUn^@ ]7kX~7C~3rg1}H]zH9tOIߊS'i2 =r]\\H6?MM.eg`qCcAoi<>`6ٿ,w_wF Y }>6hH9C"U?One:R B뢪CBUVN{K8@UTLU5.=SPwU^U%ޣAƁGyUzU_9Ͷ?__*eNet]qNjFߩV3s:J R_Z*ׯk'F<@WC_SNvz w ]}VV租ןfЄlFC[۬!1/!wbl93w5sS_^M ]t$:IN&O{v=[h;uzn/fynz%H '`?B2u+#w[HSp&ȥ2S/m\fU?q@<{hĺe@S )vV5c^IIZ17,}I>Á,{ _ebdInĖO@s#]: >k#֗o;]v0=`.q`|<tN',FOLpb+\Ui&zCz폍|HEk%M#u2W?i00ش8}f/ ^)HZ< bbsA[4c[|{>3{s󂾶`i㺦X8YN_:e.4^hlS,h`d\4-L@5iu@}M28pxvPˑeKY/O[<2U'y7G駟NngvM[FhUNS[65E:!QID'/(L9rUw;|->7ߚ>wֻ~ Nuw<ICb *zU縱n/]Uq1 vz4>ΟhA9Җc ';Lg^tP|hU> jK)#[< )6mK+xU|3dF+˖ӣ{c$t־AO ޅVnR7hʊ:cr|ǰ}"dM7@a ||7!V}N!v{+fa~oy7Jc$?e3?wWz6-@1-u'qi)BM,Xs6%Ho3qSPmʴKu²OE@*ʟrS~j&F: 4t+(c?K_pVzz#qa,z=c/,9LK^ON[w}(!a]زnȫHNKZ_3'/ yU'_߬/y~G^0 gk~ͷ4imU{ꟕ ;-[[ m w0St6jC` ,6HGQ`9vq3AyP=}m^uw'i0IgSNꋦOwmWy1ِ\*I<@~S<78clXoJ^Y@pБeba`Px:㧶׿$Xx[ko[ZJtŶKr4-~Yw t& k&ni_t}K5_^*?p'?1RTlf!Vչ.jG3Ф!N^%yG|V噶<'2o~soЗ D$N%/}=0s ,6 p;c vϫOvxn|*mZK-|_ 3lS6c] P<誟M`2 U?O?|}Sfm=Zm_O{S'7]q78e{l`R=l~Jз=|#lwoƀyI n 6-;dJ>88t naC:'NOIzn/}H z?$#i"y'yStvjj_MW<_m?5} cs{Hd:}mu4x`؏oL䮱gyS&3鋫 } CzCBO/yߙk-}M<<3w;n~6+GvU%/eyK^2Lc!,xx$#jHAǸfAg.:mI#i풗rpLTc~gIJ_ @~+zRWyũci/OL\}K`c O^(ku6CB Smo^ x]Q*.'"Ȝ4xM߼xŎoW>sjstؤnOoi+_ e43oJ~u%_tL!k T*n O#gϣ #irk;*vY #?bOre2 Uwf/g`w`jbͯ -lr{rmBqG=La!L "UbRYܢ$Y>]MɝI _@9>ɿ.ڝ Lf l׀m*6&c5 +`u̻׭qWb I]7gҧD0YEoD[>v0̇;2\z`mz`YjϦ wSvc~MqO?gG>O>-&4wyGX^Nړ>wfXK]'EnN -Z8Plo| `+OO5,(c}%y.`ekZ.,t:@Bݤ40ǿ l'v&|ЯRO;s߻~|ߢ,V `:ȉ#_^/Ӱ ,':yvCW{Җmj~`G!Ar#L׼)qRM׶~ t>=?w,m[`w/v؉?'eo 81_v X? \(œ3 -l;뻯m)O=ԅGsu`aoL9U>X~7eKS8W~4~W)Jy]js<-6|sY`qB .{YP @gdU XGgVL*msީ=Ak+oʾw [.;yˈn ]$^V^q$^/H0 Jk=yi I{A?9;19c~}4U6Vo$->/OEg-h3,~1Xc5s#_orߧ?v1.PM%婓8}Լ,mqށ y`Yҏ:I#ix?@ve_]e/6V)z⪯_J<白g>2 [ 0pm&y(CgYu~cKe襡L_5Xf{Z-#Fn&zh ^7(I 8b[oiYTA N9в@:i>J?ٽ;tّЃW5QoW=0u(g"ԓNYc*/u;VO>(U~ }VsT3= ọ_uS`_B?}0#~ ,!@vh(Fn ';'+.g{&>`6z@C=tWb):6 s;l^φ?Ot->0NEX%; Ӽh&B&|Ɗk8.ϻm05x՟WWe(ﻚݏ-Ebq wGw =c iճV4}srR ]>. Cg:4o?OYExW/yꂓt&n6It{IM=/mxi#]P9X[pH^+NIZyũtcң> A[`@ yVec_C ]!^]hlčI m wTa/JZ`;`Y]' 3zի>' @< < X>| SGYb2r2q2uRVu2t4G#H,+Jh _k|,}O{.fd.)7+سPo-X % lh۪M|M xŲ.,"GO| --8? bS4ħ??>/aƤ f#|2|?_4fݜ_ݩ@g˶>t:Om:ȥɫk\scDX(1<(/v[qmwҺ- s a} .\xә_@k3p7\}w5}n4ż*Xr'ԩ 9 )<_m ,֍x߸U֫uM\| 0/X/;{~hDz33g ZS״~xOOYp&t9wZxg s m=)-/u.x2aƀEw qs(1[;|N0?я^xU951Cop.]Q}UTwF]Rv&|bm.1VNDW]+nV .^,\Yow6Fc`'F S~ԛ<܇UW9g \ !ȴ땵W3\Z~UMYW>Zmj0o`}](YrvP^9ǖ#_j `Fno$8Q_L[p_3 (|AJo>]wȠ˂AƧ &B$yLb0vb.ٝna`x0kEu 1%#MLL8;Mu3#ogb#Bm@jV|ʾύ{1^cW`_l᯶ B J[6<+}}c2L3Y ?\Fkr^{s[0CLOks}`O<ѭWùˋuB>IMS 0Ա߅55կgg. j3g~jMS=?>.;?5ߧLZ?k` Т5`apkoXoPvpNx_z~dGSG L s5͹U>UYY u[ LM`3WD&cN&|&{'~˔[))yzJʫTyWվ7l:o[L p7@ěht%^_. |5fkjlzy|Q;;Aˀi;^^gs j_,tiS72W_맦;W_U^m!e0ruOȞp1A'u NxUkY^/ \@o5Cu]& GWb?]u𖷼eΩ l39\+&{vЂ|dXs07S9|nvFFH谖>R [{-FY=%_ 䀕2ֆL2/Sސ?lگrixszsuA0ci)KǝlJXT mcq0h_{e}t:wRm⦪>^xL 7CBF(B]=vl;$gӷ4ZCq:q 71F11n_vjmř칻.=oHm^;eTzS<͵?|*)>@)-KXkh9w%p9-J~cpFӟw,X^@St>I{v?bD ЧSٝ!eP%DZ<C6:y!DV= hw|w b=sJ^}^~MMs4 [Wpq{Ԏ; 4wLNL\ ƅw[77\vN6"uȕ;!{`*])@mG8E/zb`5-p:|W՟+wcw{_㫌y.@??qe`WW 史͞zewK*Uq!J]2ow݀E˚m]o/~_p*tm?$# yt x+_ya21e'±8|u G S. =>cܼ~ϡ@IO"G7y©e8 &!{ɠqO_M)c>*j?W^o~**;6?݇@m | lȓVSVm<]}hXkprgkԧ.Tbbf\#qʤMgw]*/}Nnoұk1\TzU>75?*>7 }+_ʮ\CB3Tm.}k`;9Tdҩ2r{,[̠^;PM<)S>v~G xyȴvWe5~I[aP1ҡq` A|XVpU󑼹SSLGWSW\))yMƫ}U*5>~>7,cŇykM-95|ڨI].̱rZ Ch0'EA-Լ[w=?z@عzhȆ~47Ư]pwnѡ䱅Dos%5}Tyq5_SU^kz_ӯTj_ӻl>8s={CB3Gh!OZ1?w Uzq4M>6I3Xp L(Át < x[:58$m=Ybt= / 9^"0'(zUcuyUj~j~kWվScUW~|ScU/c(c ;<"c! o}H#^ /`6Xd!. Ne&4lN. -eJO+LG>OVyLrֳv('}87Fr& v8y&놲S,XA=0YyX곦777>7ckVM̭_zdL_=|L Y O[-!M,8)f-3j`;zcIzL&`w l1Xny:EZ_M7QҮؕeܞ ?/&w'{ ~w? SIJ>)y\֟7%[ުvEY8OC? ]l~??C.h34. ra_,UϸxN~3.FnA\n zs}{n^^:g]$F)'*SN6dLLL P/,O@? |wew1fc-G[H OCb&~p1 h;zɚt 8~\W{1LP`{YWH y`\xG6UN`"1S') _}.퇹ZKo`;уOxaZт=8 pnn{ثR{KN֓û lUZ<[no{nP <'wR<>wNLSY/5p;"LNG?[`I݉]ڝ]iXutƬ0IŞ;8^]-ȅ%ӰSq.2W\L=`'y%n{Ϣ4-o`L~{j 4=٩MI^; l?g[9>wNNNNLuK]":q>,#UZ5 #H@IDATN&S6sln]&wYOl=+^sU>白1X2H˟{B*mk~=,}V]Wng'1F02yI<<'Met&w,mN1Y.Lyz,0梀+ .|08}K_h.ݱp7OX8ᛮ[i0KsJsK\5Ss7^_SScU(?ih|u?0wO83 ߐ ']6Kco = `V{@JIi| ;剕݉(>N|?a1 ڢϧAyϗXD5>V0;Ml=[ۄy:վOɧUy|*^WW?%U*^Oŧқ_Wy8}I>¯ 4q_tNNg]~歩`z:Fk??kcuPدSq f= w}#>wsoug3ߔ?7~jsMO疷\SSrNx>p0x>/ 8yJO ݋;'v[;s?0ԼQ|K}Q:f-𿘜lsQp݂CwSܴZSv.?d肹[=[Ή}W'W! 4q'qal!\i@M}|_q 8hdWtU_W#fkgx.gC>4X9~M[i:%->oJ̛O[i>U'm9w#_BKOwD _1; 9le/>o=Ҹ`"j{*aͩ{jsrs{&z'CnY{3,']YʍsRN\iޱd/B@v孩;Nuj'LyxիJY?IRlw %`|cg؏mcrӯxzª_ӫ)^y|**5>7UWwBYDOYk¶='?ӹLvN^xNɗޅ])8<5MQ.R{x衇6f_Sz(@!11b@G̝+_3Лd.Y!\:]kz5?)*~jz_ӯTj_;;3 'ZZ}o<^6=Z^Jc<58;#ay'W=.V bI8j򒗼dx4]R}O _ u|IA8{݂>_Z| _ _z)bQWUwZCҡ۹jlϜO:'>EK\|R`}|dA_^Mw5<8?urSqu׺)OU j~Pv9?Ub PS]:'srsvO4zƵaV~Ng|,q^ _у\-FPI1>:)Kz?z9u L ~g<?kE$^Pʤ['QKzL..q. -~n3{Gd"PN޻z~{ɞkyVciۡiNLcKy&r/uzl_Y }uޤ7KLzW`O sP[ !u;{RFqMկ5>XyMƧ_k|*19wLִ\gn`32\e-Dd?rpN%m>??&z T}poYuQ&WaBXܽg j@NS8 nZ4@WJyDpv X wY '0XOy3I'EW[ Vyt13Lz?&ӗi'N=^ fR|'>Ϟo<{7h3-iњ_}e׼?~}dSd/TMoř_#qe5s>`:blzt/@NN.X(W_ Iɒ- +$ ջ6xY\Kq: i%jjS[O_y.N.62 :?8!`!7(dz3|{YtUZ\/uMBw<`/=VSr|dYp7ξm Ӝp;3;ٻBS1Nhaհ,EʎiϬ)N.M3VbZ?X*b`J+_?tx$A:FԽ|(syJn9e Jڇh ҫs˃>[LL;ك].=KLFBpwRwnɟyjUO)#;cA xY\g45CeYMƓ/a>+̯MP<7xm`r~jgdһO*#GkZ&z'{&]!:f$OΞp?/&=I뒗'y0#Sȝ؝ǰzG+- hS^m\Yɖ6Jή6Nk/.a>&V 3ٛv3V_Z<ը ˉW/pgOQGB;|vR&μ.Ͽd$^<$F~EO\^m \Z*٪+'Lvj8_խR_F=q꥿[}:ډzKWk=}U>0OW&8&z>7> 7?J9q_>s(p'V#J{PWyQ|vM78LNнɃR.\j: UxыG[V_1zI]F7+lOGoxo 4p;,d_}ɞr3S;+L9g_OZz)waҗ?p)> & w2=i28Ó(0j(t/>(5t:hBv6=651bi]y'h/nJ?L;O`o <Oik_3%O_w|:,O_O])\sSz?U*/:CNȥzXtb:.pPY^/1]S[1=:yg˚u@{>я}S:}ݷYL;NM55NkͿ)Ǽ=wą}.ؼ} {k+6qأt*٩M޾bquVIWpWjDD9&z o}[T5}Kk~]*oD}>'Lggd։qso}{gns ov+gϾU8=IwD~J:FeYS{'e`0 ?[Wu/O!^>վd\]}:gy|k_)j|Žy}5`'kpѲasw+I+3䑊ryT6ᷩ]K?77O5?)Y|쥱K_.Evu5,wDH0^1:u*NtObLzYþ6;(O~r0 >Ãi?y-?q1i0md =10=yʤ']항7|ׇ_z¯6ڳ7l}lA(#=҆wLW G'Oߚ%&?K, =ا#-y-n9!7%O_=z~L)w~v8gga , riqN9}-+ۄ-6Ϙ 7?1_bpJ%dbt,ep=#':,i`dY쏯?0!:Gk1p>)ߥ|?졇:3 ^>=¡KO]wM">o>cY˨epzO:WcMv=Q]qף;ouM4gzSA\blz<^F{y=6]vcrXG,8yI+?؎ݽx!S-jD?ת5vZ8i&|B:KoW{d=i+FtBu4Xؕ26wRGk+F'ͭݿ^|Vɯ2ͻj6ΔŹE^s uj`Yܪߑi<;񤕃&i`@;IZ9N,/mVKo̓-31(AI@,)qhpeRݯ~}rs]{~?zx,ua6?/)>|DO0_6x`V] ]r>4H41$ 2 ]ׁ˪$ĆXy㲾!w<}~F֥?}!\yպq{Cl{þӈ;񁰻< :~.<+z[ƠP h<`2t$lG1~u<^2|9]⹟.;pփV/}0F¿i ?Mձ??NsROg_}2Xc_<{"zu|ro"hhn|pX_ qefY^7(F9> cG Nt;F6.tglδӄIż:s_ǔOl:s%ڭ6ھ 3qʇ|Oz x\e!eUʲ+XUFLw"~s墇\DxGusB/ _oڡM?\CWh0vJvc@u]1c16,~wpоójS-}z#cƠh-|CG~:~^q8g~1[lv$+EWVņvk~;_3ϗ0q bGHiMN;ol]U sao$t9AI^~㶾is9vЙݧh?d‚\Ɨwy w=\ J=sP,1P? .7*wsC&i3|G.v-Mme2j<svS>7`>CR=^:>\ j&;KW\>oz?x/&oboFd7}Ag,}ٯ򙰷:+ƿv  +g);ϝU ?G~>80aqN#G"<[No}>W#c'z8m8ԭx_vǼDHz~/i_x/8FڬQдyWŕF` 6|sA⓴h (K.\7vmtړJY1<ʎ3n؋]ڰHo5ohIo %~7_ochV|\,ND/_7cVԤ+ zb3޿EBp'sWɺ"^W\= pd<˪I#x?cp>ל7an>4\A _oS¿mά]%L:2`<}(x\oܸ܃xős0SYOe;߉w}C@&.w2MsL찾A_8g.|D_@]s18|"Az+ќS?oE.mqseC+"_fW3B>K~K/F->n%H_=Ċ-XR 6a~S|~^Dl岙Aγ/5?W7śڷH3?SBud=oD}W/lį/Q/i1#_Koٙ6ok-Z$'qgcn o|Z7jm^XvPUo ww!;2:8:8:8:8:8:8:V/pI'\,Ii¿M@ﻼ?{^~.;? Usǘ-ȹqc? V[ñ`-_,,h}Mȶ<n|hUzg"P;Z5HR;hƯ/N~{K P^h.YɦG#/7^uZ0.øcqN7 HT74W?2wO/"}?UpG.v9f24TGuK?]0l]ZMgNϼ?W vib477ݿH/qO뀝&G|n>>yzz@tL3<}2cOCWX}Ey9*" :~~8G3:fK'gNWam x G |[\|`cM}XliՐ/pfط?=}'@WL{HP#WhkM.:ReL[wO8W`?G}Yg'>cc[$n4w}׌Qoymmp__?@KӫlOy7؎}DXO{kh s$2מsǻ_~s9vzOmK[{;+TP!?Psk>|:w<^ TL_j 0yRi./Ϋ1&.`.?,ܘ'}|-i/YF<tr_o7 ?ElW/+kӟ]@WKg㟶|9 xfEn`pMC  | x`0/Mug!S-D[(|6K!>2_?m^a?/٭*bjcN[ ynrg?.:ȇbџWPUo} zPMAA3 ɝI?b?-nuHhJ-$lD}`Kt.u,Re¿zXsȫ%OտCi>yk =tPo[1s:a|x`tu:@c<~xYF]AEb.<@xJӫAX=?CojxkmxN]it[^4~sqg8!me11x?\>ٟK.iޞ+Bu~K`^Y;؁|ǚ{キyQK^.o&N y@Nϳ9Ϻ^9i|d!e|J+ǚ=u~eXUt ٸ 0ࣧ'!vgh[_ƒ/63jDoĉ6W*@r:̓фy:d~y1r#;Y&7R=hk~X^Dfym#͑_~l_G\?m|g5Q #<\STiSl,/pt`tȖbq<_~{izMt|dZe-2rGl 19ˆJQ:JS=xceaϳ~/~w7x]ͳTxkz`v17~e%Ξj=EBO`y{Iw(u OGY/.nkMz{'+ T T.t8?뵆EWqA+v$42w?݂VyMm_g[񕧛EmEA/<5/ qc(6Zsqu!I#m'ݖ_}ކRDN7ux6_t=Oq@^xxGsp$t.L2eNWxt]| -.Q,/cOWm}㙗7~>skxq_ oxܮ?{ T >c0m1k(m+sG#P 2ψ*st8~+u=s+袋B4jd BדN~r:V??;|.BcC|;OVϼԣ[ξ\Dz|C|nx#lVxWB3׹r %ohVwu= ߶Yk_p3оᄏy'[^i@uHp3hpUɕC9V* \>LvuKYW}O]>Vb[v{.o~ȟjxce__mEvˋ@],/C86![?WIxKZ%y>VYyp'xSEOɿI^aD>ؙsAwB@?1G}wsӾA3`EW>\']&o~/۲> u̩ ,\^o<}1o|}/xN#]$L~G v˸X|;A=1>/fGˮ9/p<Uc\'{hx8oƱe_UW]\xCCwD ty~CqWٲ_}\_;M8|$*?.ާ.U5xy!~>?wZ:;xi}/_98?}>Kr/yw6u{MkЋoqh8Z8yd~^$Av^jlbު1=7T,\E H+!ո?;۽pp˦/W-^,VpnA_oϱ|GW ^4xŧιo N;XO551 (PgڧhMI?G lw_Ho}kcNUfrg|#=3F1z)gs ewUlh|A,x m>'|oPv۞ퟎ[ͱ:?Oyg}i<].ufϚY[JJ$~ǃq</1CfQ L. :tG _^/_hX1u;t5{X>(_0 ?}?l|oW|M_wKxӆ!G,-ѡ˚wc/OoSU׿#'~Zko"(;-mw.uؓIJ'$~a/xyW_ ( v 2e^G,ċ2| w_|MtM>m4a|xɍn? U7 >ig].1u]).p6;qC1 na%vU`C_#Ku`8>ooo^_:Aeƒ3]]dJ^oa.2A.h92A.h92A.h92A.h92A..\keI))R^Jߏgغݬ[#)[c6eXէnp2=b "I/Z¿c¢@=`)[jU˩wyєɜD"@stz_?86 xǴy_>UK2d;%D ϸ$shA\9OK2&/}!W\?&|@];V/-뮄? qy*/12tWE;4g_ˏ8+/$nZp@8^ZOKq|&;Mgmv! 8 OXy2t̓e{,ܿX'|X$|Hrش j?%#zcy\Z=[s諂z_<`𢣲 g}O Qѩ\<M_d ?Ku$G">fG [`] -gǞ6]Gmz} pax4H{(җ~</ˠ}ÓȄkߎG. 4"@I{a'DŽQ/qlz_~͵^\|ų΃/`O4 12eKC Ie}}}vۮ|K]=} fcIo'CwG:ہR"?Jc5#EJ% gLKtmԾ/@Z?Ю[E{hO㖹W5;g#i8">^Px?xccϿq)6/IDATwg9_9>>h0w.us׬ߎO9wְPLvlhp Ӆ_=/rTѾU~5X/ѫxg"P;wk%rd\⾀gy[}~;L&j(i@h802cLƂ1SV\v2pR՗[X#o*:^=iwNjyc^:)A%=xԅ"ǟqzCG❉@]LK*Ak ;(;-H`;}+Oıw/+; pp=D e}2[dIFFN;/r4}d;V2ģ]KUc<%s`%JI_:s諂N>"&0p˜Eܥܥܥܥ쓟ls-`ڄ;]]f'/l7OӑK߿ko+48O|x ]ta|y.羲}˗JL`gW$Cl"K>,no΃Zr'Y..n&^ԗg^ߎݧyF> ix /qO9,Gvx꯼G.15j&E$wus_m ce`hxLm cAWm{4e`hx=,cm^lJW/ 9k':þ=3g4GyLaJ0 ]hO,%9s {iW|NٗEӿEWGX~LWQɟ;`-xH,2fˢŇ}G?n} vJy}}>Y۟幜Z^|I+qN*;N;O84/;Ndϱd;Oe-O?'9<}GqT #髰˪}V{qn_;}UzZ&t}Yt-JɟE:p38yd}O<'``k`b6,=^\Dl9'R Μj>vX7S4i\+չ޼n}]mۻlCPuvW#u>F_Rs^` f_s=?߼h`2Bʾ Vej,:q؈}.ث 'tൌm-,pSO6憗iw-u#hΞ=Ӿ ~7$(b]cgyUnv\__9ן,gy?cɃYPC$zɽ ? 8:>|8g+>s|r$tOlxNDmn($ͬ} 9HPԡr4T  ߱ˠc/vB6s; x[*cK@/%/l/Gq|s{$U?VN;caׅs{G_v^_O`=q^G-=|@YuPY@=C 8~x/AVtJexnO?Y|WCl\N>o9` :5~@żG]u8M}sK.~;t;FW>ol}ԁ[ri wG`weB3eȤRO$\Nq_C=n+9y5f0qdZec'N{[DӞyvY+ ,.^96Chal ( gٟÖe;|{wj4yl,wt\pg~^Y?SUd?~J.veomF.u֦ ]W !'\&ჳs_^t54o|7MLL0j <F9cq/.eNKmoGiy9xf&0D:%ē{N.>: >DޖJ>m7^}j ˉ$o_  lᄏ~J'[|^asl7bn W9=nPz`Ik@&J kme1 *g} :t zv]1 hmM}le{_;]io>ʽ`c}+r^v^4zr"Pˉn9n֓9I}- x駛o۝h O]?Ny*#d׆cmG.m=p:ɳeOO>Y_˫@]>ƻ%hx-$#ჳ~q_K/hs^e_OF X}'̬HG>x8+^Bh0lrP(^vs{៾?:z}^VawD.vyXg+"6ו ;-Z?G gΜiv"x;߹%0I_%&,(mUa%|%zS_^\:uM$|]w}vZޙ}7Ԫd]OGw߹/[V/K.IC$*>4bO{u+EO;>e# #މކFd,ly2CMf(Ki`C)~սn8q3 ~`J H,}ozӛp%p~8Ǐs=&/VooGҿ=9xh׹%ANk&z8#u.2hvx^hWW/b 86|,0"]PmA ی@]l3特peh=|aeӻ/ફ IiM:@6N˞v h{I7>q@W3ةW~,>s%}>,g,ܧ'x^[/ hXǏx*oAxAGf<т\@]y"3Jr*L4:s ФӭQi{A{12 ?pW| ׾!Ee v.e`^:?8o}o'4u9i6i=IWG+x6|K>WQl`@] QHA2˻o~y{붧]`o 4m~+i[Q'<ʎ髰@A ,-v+ء*b{x$qh K2\>@{ PD.ih0qAdyY4 x^c/@/ / wtz2u=sL{[]x/6=>ɾrK]N[u{7xNDC_Wz~z~8Cec ;Ok}A4؃ôv#Pۍk1Pݕ`}ǯű}wyg{;ꫯޒ| 1Y=-k^zSehv@_ˏ-%,?@osH]rlb?,:>9-ءս^Žh-qOo0KXK"Pb8GKu0օI$=N#s]a; Doo2soK)]ek_Dz7p s6y^}_%J+ɑu%lٯZ?/sYٯZ?/sYN^߹ _ I;hƲJeq4ɜNa羼jg l0h@:D E3Y E+- ,CoFctp<9^3!_.\M.g]eݡ宺︋v%y].g]*L[eݡR]JCg+ڡ?H9li+aHJ=C";:[+@]7E@`A(IΗ}̤}LL NS!vxȰo?"g'/:̻ܥ:n{(^UU<װC< chg$aov02u02`Up,3$HL Py3%F/G?Q{E }$9WUv:ˑ|Q{s`swA_•wKDx<4./!_lJIZڱ.c5)E{rgyS(0"u0"XUu hP3Kx:|_o5ykf}iԤ΃玕΃guU +icuܾ\-g]C?YN.>ɟf1@ۺßs8wnh!w=yzYgy4]zW/ + <',G>P{ Ƈcddy˜~\X>_>ʇ֧${]k;Ugeѥ2:_<5 94|@YzL(€h&;Iy%'*cωe֐ ޮM^=}}}r}[aCº_C_P|hg>}<`}hᮃ6/M#"P#UU;#A";0c #et'ZWv ;lҒ`f0J:۵J4m6g9(k~/ju l'9>y{BW2pyKBy=`}cqez9ٯ;-*wuZD R?8u08TUqd4(Y50ADet'z}Uȑ#1M̿SؒFػ.:HJ[Xu ꌬպ p~(OHٞ%v:o)ַk>WJu[>KƤ)DKX!OpU`f3M>=Xv`d*'c';\`4O mTF?oSIlg ޢC~ݡ)y{"5 Ёvi9d'qQvi+@] XU_(\&x>ewsn`TWNo+[9c?ej3=pև)8Ou>:C1}g},gIءpV?A gY.9δ]о/p(w..~>~i=-,K6cx/n }hÞuBX!ƃyqU;Be]- k@]9ൺY4 0cI',Z/@D/ Ҿ+J֓ yu%Q'AX}]Qvꞣߔ=wь aɆ:BD dWa#P;|x|@YaabB4 /Mvs.^{mHbj$dyƮ.۠:Iƥv/MOt+Omԣ6)~3V28B4y%<"Phb`d4.ab"a ȋx oz$FI0|51D~s`6fg'8f>Wus v9yX2SvS*;_@z𤴵 ]e'd6'O AOFciկ~}9A$4ђ Q ˍė0AGuJFfl'ϡC߯EwN$z}ȅ9ϱNcWLU8"PICMDąw[CׄI ܹ/@4o~g6GJv$>1d .ٺ ,}KC ~ k_/acQϋq Jy>W~.a牞wx&/.98Ni&_PVEs,P~ipm оmSB*;_ rtg@&,Ⱦ__y?|饗6%Y7FЎ3rߡSt ;O@vyxRσ.ia8ɜdBch&R/<p |_@;!ɉ{\<\ɔD32t9'·G#_%V_яRe2LUh#PpD@!&F/&L&ga逝Fg}Uxuz9ˣx!UZX,-%|];vJ~ݡ3g 1%@Jl@]l G-tMn>2y؃e˾}qW榛njPJ}qЕl]Gv҃y]az1%I'|0YBׅ=N.I\?^LwL'Z j@],jФ]o&ixhLeTZ\G Jh_[Y%CX Ǐ%|-X₁^|6Q%zT ]-]D.d"&W,E:g9 8Z[/@/$ FoF,]"S}%zCv9Cq3 N 2KyQF`% :]S49kD'|r?86/ѣ-u=о.ع#^9}]t 2kVXIX5F OT=f{}L/}?\ve?Hˁv^Wڭ;WwoO9cyqKe*-uP׊VM4;tMI``mp Pz~j[u{/?t(CD;B*̉@|VQy>E{ `}1 UG[ rCx-}?a\Nq7ethpSFF`@49Uثȉ8(IV:S;{ƚ,4`2>juhxvxտ22Ǚ.ūP#P#02u02`UCWOˉYW,+^vY'zޡ"/ueUFF`f]dr"HˠIJz0f_EoOۑ{qU;Be]- 55+@]89%`%ItƓx^&:fwḵ!lEg^KgaɆ:Ӆ.a 55k@]9ൺ]dDRKG_MzvX~8ӥN~8'Z ?jjv8u'Vk#$]o̓hq{^` ~w_YmxΧ8TI'ep`O@~WG@hLr+y+kе/'pKXK49i&]ILRU=a+@I#Mv؂3 oKy[FF<@]'vamPj+UbH$kYȞ؂?z}Xu]-]0upڥF@ k@udD.ŀ/ؖ&EK&<vh>'FF།@9o;Z;V#0v=P'3E@IW2_<'Ϋt@nf#";&ãF'b҃eЎ3]*WFF`FIhvvF`)`K咬T9^2haehǙ.ūP#P#P#FFF`{`,9U2j%ɫ 钍!FFF3yTxXNe$yKNU555s#55q崌r%,wJh\#P#%_5o ie,+۝ՎF`/E ٯ}Hqc$IENDB`ic143GPNG  IHDRxsRGB pHYs%%IR$iTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image G@IDATxiuUJh@Y p2`R.'T/vʼncgEI>bJ3T`R8 ,3x1HH t{Y>9>U{^S^ww}9޽@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e2P T*@e&fi712p2P 8 w8_}_SqMT3~~,ɥW20 vw3Pw59UTHC p*Kg6h;7O|a:*3E/ l@m6  [g~/u2P{3_&X1 0?_@:+ bJd@^~U1ƴ׀f^9Y{ M|@?ur|^9mzίKkm>*,ON `uJe/֣NB-ȧXSuƾ 1>u.a5']W{Kwl%yӦDk>_z0Eǻ)- 2|2 UcTMhY|8B4Ѿa"wntӠ@8w_Ӯ2q"w?| k?&lQ/ ʀ<]\J[&J-iSwVBdKO/ vZfZ(NKNOΔSNKyfxvTy @a3)* l@=؞x83IGaa.ٜVyNkn?˗>ǃbwZl~ gY<'zxkQS؊`ưx `uJd7W]T*\t&@|АT=M|=!Zr2x$wחp)+3#ғ$ڦ d(*f% 0-FY=|w} 7ɱ< /"/V2,4nOUz5Ml56=͸i Ƈ:'/O*"=͵'_j xQ;fMInO|}лfO@@=1Ӣ37_r୅/KUArBω*>ѿ4b Z̫[P:XREҵ%-{^Y#s=^| Ì,Hޖhas5kd3G{˧;2[0.O6@z+'e6' Vw0R``|g5/  U0Yvb)A0lߚx mG @( c0ׄW}>;=3o%yChdy_?Hw*ATg6sVW$Ǣw,WZ~=bY^G ^[ڇ؉woyj[*>˯ZQV4;\t 䡬6g79 Dw *@WG2J{Yk~kk;Ղ x~Jz;3sc\;6ki8i.45%EyTRHwytʳN>M+/EU6d6U}4U;W84M3adzN=5o+}ЫO'\iv~ZK3?[~O^ZP؞UAe2@4kju޲Mp\,ǢEXx>t/d v[:ec ;?ώ¢O]p'e) ^Ae`uj:Ug@%]s( Xixk|;k8af绍O:ǰ>UЫXm)0tx·i'c}B'ҨQ6_& je`9XQi܎ 07ς&ra`tBcBx<88h=S(?A˗Q8SwXGT@Њ'cL `cQb/_V(C2. ]$nJުqii|?Á}0DRUo'iF(l(/Ex! f@k^2i)(϶_;n+R iF:NK5-Z(_Emvױ20$w/~6}.R 싟2㼶(a]T6tˆ1{jz+oV{ߡ߶|_7D(_9{n0 (aVP@mQ۟ᄸF$LZ.@ CUt(fBuǟ{}aƅ'z=uœc_kNݡ{G.Jo(|,(lf>WQڃu5T(oc4 5?8,+Zkanij*mޜt $ft/b u?b޻ =Fy}_"#0_$ W hjpGOCmMttQo:(y2^: Fs2v~5&,S,o Bjz#Yo\&a~4^o!K_ikL ' `04_ F|CǢpT0 N.ue;,,a/)e_5c q>./1ʓQma,xfdC6gjFho|SjL~ot/z{,F{.Py,Dx 4|Q'ʟ(qgen3v4l nYjpN5vG|e,~~&=aB 5 2e7aF4S"Q2$jԄzT&~j{*?$S[Ћrt_48 'M=*]Ʋ.gΕS<9`0ݯ($(8T& 'Ttf^P8'n^wylO~rO埾:fX*M9{W%Y5gsyZW_ݨ_<<ذ^eM (2RrV. eNߥ;z]yy@w@~klE362 _R\^pjMLȯj/dn5.CQ@^IY&v/ߥ;-Zd{F(Z<[G6KKrOx $(zڦ,%ISr7h6Ǔ SVqԱ4p=4<s/ N\j֩ K7S{}~ȳX h D 8˼>F/>2f*/y2_x'" QX乫Ww ã( e$oFvL%Ĉ@Rl@n1/-.vG}z6o t@Wiq 4\?)w%0F/٫'*_zs{]< |,S??ʿ$H^8gJC4˪~C3k醆wky~y,?~ ^&Qf%y*mo>n|O@W?[ ܞŁzV ;4Ȝl&,ICHI$7$|r~>(} Ͼü~ǿ$ԧuz£!]fڋ\+` \.9u'|ҳ k@^г_wg2ǖ=OG(%~/m674'G{WH\ŝ2ϵ%}a2F>%˗x#S!=:տau٦&uw7աz;juXY𞆭g^fJ X9 2ܘ4rPs  ~DE( s}0Ǘ@mM}_e74t1j>LKdIH?_mʥs|FO:D{{/㑾x#AOcqe~Ӥ82itMQߨw^Ֆps&jd[et=e}C[(d4%㶐ݖ>(o Omg:\[ֈ^$>oG>Gb(EוXɌ%,Ơ$ n^a&_B8Ļd̓) ˌx84puŤs˽X(w7㔝]|u+w׆Er;yz-X ׀ٻLH綢u:B/[lS>YSs_f64b d켦&+ 4DޱtbSV,``h ]oL;lEXgd/9-6 e%AF ]F\&tERӼПz/]z]0ZGo `߹džds74q^oכC̯"ӟ4Zv;-Pjt(4M18誑|<ww57ruv^#r4`c_dgh1b\CnwYܵ]"kEv$06ҁ' 4-yc!CqƏlj2Ǘ ƛ#i)f<+i;=;^;b uz[fw_j xͦYVLhbszC.xC ^s#'[|u]OC:ƤdOkY~n˞9yN݀\mEag@ ,>C 0wF'Fu.Z~פ Zt֥8n#ݑys[;:n7̥'тq%@i5D~+a\hF "6 ڛdA4?[h|nA\H~}u3u5e#^sy<ӀO K<۰`NyJXX}Og]]LOn+ZX:²?݂=6ϥ㽴xm1҂=}*@+w^cWߒ|r$"+Z|nSK['w@aCi04޳kerh0҇'l9[#7?w4Wf0~tQ!0uXF BKs` t1GG:[?W%,?x=Bwi9Iaud%A.mVC#fPG/3ێ]/SG=44- ^KpfXW3R|Krs5$ϵNd_h ao~n1?? Ol%ARn k&į؅}Gy{ы^^^Q=`5@CKk)lTR{n7<XK ɲQ]``9*A2W]M[K.7j$/d v]E~bќK[7O|m@  . _3?ي'[e.vD7f܇Ӓg/OhŮxw;L'BӘ9JV?+9 v;ӓ[g:=),[U?5x:_ U؉͢.;=~̈|:$3UXu`\*J] _(/~q.)15ȱ ^گi~o}{ܫH"U3A2v\;#;f&jdY>ŮAiWR\9??<#ЭV<ޖȓ;_4X%F;.83[J;) ?Pр<#|/?>9/wnK~Ñȧzaf' ƴ(ݠexM;4Av(i#fF(0Yp dMgF7LCiӁ+ڔL<8WK_>^Qʓp-ݟbbT]ZW]l0nG yކEg#}-g=?>IG®~IГi>OmVq(3/{]>)tBXc0wR;O[=QN.6]i;99:^Г Ӓa*yQ( S20OYYy9Ejm NU4x~ _Xyۢlʷgx>ߜM;XtE+UG]|8G!;>2'LJC h5a<ӝxe"&_p%SPux&~ ƴx\o<^=]#dk @?yk?%?G(Ey* ٣PN t <uO:4oF(O΀od/#S_uߵOGZ^n5Y<r &ߙ# [bյ2Hђw'i!,ҿ{j0[#]@^2h:ߚ$gRmW/kl}u  pc6GB^T#K>r}5?ʻ4hӲYnLAGxd+K8sxe43y`LCرM0J& 6{q^ :F@X~52GmuJ[A)Ȅ^+?sW/ߏ7Xs(+CfgON l! 15Ӿ:jj"|b ߧNm/8-]جA>G†y|^6*il*i $6V.IwG#(Oӊ 8t1-Z]ڟ^ComR [139 [4AГmA[l+ u|k`ta? _,ӹ0oǺQ MEg^4/uhAԁݑ?ܗՖ=_>~EyI𫣼!ʷEF$::Etw!=:œxwx'Pt|).Ls\9%}򑏴fa`kq/ E/DAuwLI(k΃.@OꍎC_ơCC&#_Y@&~K9pyxRZQd/tpkϯWSY$umŴvG||;<3\xh  .&H9J`J\a6*Z ȷD ,47| dӮZ۾N}%}+V}Sv_j똾t5phF dA)!B?xw9RC%Ђ+*l~sоCx1k_\j[+_m3ල]F$$(`O10oҔٰ/|ÉQ~*7@ƱJYom=D~6N/Ͼ4) g9u8Y`)=G'Ws0o!Mq`m 0SO="nQ:sp\zsxɿǤ;]a_/ >>D4\'-e;w< ߪcؔ8-v\.i_>FmI&x>:-#aeMa'l~,;4`. `9<%?O M 9mw.>X]v}2`X@p KOXz7:po&v+w!Ch{?/le9lg-qEusױΣǢ ;ѡ,1Im2>$uZnO '8lNt}8-}s}g7%AOZ @tmmߡ|nWRv4H vZ%>s{N˯iɗtzu3ywz0Ep[chv^xL1>W]3w7SINO? q@+,l6Y@D)oޯAyNKixw=F|e?&4$/ ݆ @'0 xNϵ9bv>aG+ݵᱸRj恘9wz.c\Vxe-a%KLpC .ۗ_abYߒ}ny[j|JO}قGEm}oi3֙[A1s5({sؐ|$JR` :#}AM<8LA4;t1p&>> qZz΃>xIKiy1Y~oR Qc D9ګw:gǰ,8L.G|;V}6Q` 7 UBơWTZ%44lWFi>C G/$!~{nTGiՎc϶>XxF&6`뼝FJ; b;yD~bƇ@+S^d#P/ >ƻOR움_{?zu[lAm}m_w-gF0XTZ\9tZ}P,sG}גT[}u`|-ŁxN/ x_Vs/ ,\Z 7??'A)jpoF@n/˳[빽K,~(!THn 9ğh'غӺB8PlxQ~~|,pO xcF_]£3 -u du'@:-þۊt=m5ba7#Q DQE7Q }']''ONF;iS]Ӯs;=g:NKyK;}vz8oC9,{>cch y;ANGE2p@kchLuLT't@)>I6N<8nx p?O3>Ln]n}Őf~K֔hq|o=Q@/ ޶ RMUF`~ I.%KviɷbiqӒo~Nz,F );uKaXnrLNOz΄Me<%ߊ僿5/ ְa˓dPCfmh e w('$`|}/F~鑮$_s-sm.rO5]6t.,MG# ;4J˗Ad 'n+ mO|=-EEW<g{?Nx+?לs>wlb\˧|]xE{O``/ hG5$x7:w*6$#0? O /خ?SwxbvuvhI:lM C6`0jO Ӓg:Nl/q9 _$)>8=8-}bt<~dlgs}M WS~W zґLρd[|շoiK:Zz/ O𓀻eO= ՁCn_O]cm~4рWu`9Y_R\qŹ?Kfܟ,_wϱbq[ꄝ;7;Q੽[Kth~{lq̷Xy 6+c*-ˀ@6WS)LUot Vpb iͥCAjGۆ M}U[G_W _m9rS-l}e@yI6²9[7Q` -]٣}.7qvZ: V6йF:%`bU|Q?߁o3hb3?xG߬侫­)3o|]J ֱ&̭t}e_;#eHfC/{F4e;H6қù%{^+~Up/ @_u6XGs GdN_{ N)[Ng?sqD-2ђ#J2wsDtyҝCvRwjs0lS 7 ^}OSl|-p+};B[Ync½A9M\D{;Nnju@B:_Ȏ HN|`!T]i8Z􄡗݇ε$`hKKy_h#&W$B R5`8-;AgPsY.=aIKg{NKy\zqp\ۤĭLAG뎝纓}5 C[tZz΃ij W w'~s|M7 oַ إ_xP;N[V#<1}VGX~G ƥ#b K[jw|:-}Agr{k / x.mtVY?y~_}G_r_+.Uݿo!)k 0__<ፊ8-ݭN}B/v췶/O>K6Ծ욟80@ w CxW;~j V0~n 6w>^3ėfN@ϜY~ .'"sx &]h1zmvl]ǯIS9U\Cb _܇%3/ӜYopL67xG~{SmƯ|:-V>3xNKyNKX:5/@[|86`-^{5 ]p+q08]N kjW; Ao HpX\o >fLkz @xW?mҒK=ƱdV/pހz}:-9='G zs/xA{S@E-8(߆~'A%~'9U~/?^hW:NKy|nt6j0(+gW`m2w?}oE{9K|ӹ^kL Ŏ)<29{"5v|r4C,/gβ?^0qsrtښ_ ^{zի Mg`='?@Aع}:=u3(9|˧[OcX] 1sGixǍޱ1m<\,#u^mGgsWB_ovE}U=[x>হ0hp Әu۹XENhL # vZFΓ1>\>_9V.9>| %A6rÍ{IlttUF|0Ч>5}A) >/yhMx.&om5fv쑮㴔_>}aɶ&]Ǔ|Nh4"@z}:K|w"!Z=hآz8ρwԞڞ' c;}ƮlFyN\>>կpzΟ8-}9-}:}_`K^rGx$x7%3;e5HY6?wFd{l!ޚ64oMQ_b¾Ԗ[l+&pٺL0:NWQFe c4ݰ<.??WŠӱ˾.^a}ϕ6мG_ VνbF9;+,cFi[C8_FG>->븭hsGmRw_/ {OqWGyCoC`KAf-+w 'Qd DP)D'`4pNKy~A8=g/?|'SCx?sa'؂uwvz N7˽C9ǥ;G<ԽNK1Wx7էUV?ssI>wK9_joN<xGSKU!o^t9em1=U 6Pӿ=S`P>t*'16jKs]g:NKo),_jpzm{nm]AxtE9IޱȆ%@]QQ%mcgTs{œωi4]u[|~Em0Vup<_<ᨴ:"@xW:XyNR#X9iwzN/ɗgy}wYS%i O}k]M28Dm;=R|[9\Qꊃ0Dn;nC$ RmvB`o؝A;o18O. P; -v[a<9?jcخ=\`ib#ǟx#ߊHw }ȧc|Hg:n0oK(Ft{GC({am|mpyA&{U6o ?O~U0_fcG:eK]te oOq 6in9iE9f@!d⡏N0ڛ5}|vw_չ0}G#BU=CeiQ}ƛhr3+t\U'^sŀ?-]C΃vh{-L4RmT}v=h3usg/f?-Q-yhԑd'6@aO` wF~D;ttA}8nAmK?cA}8\h󁟝DU#1r(Ӓg1aKvsZ޹q[g~- SNcy@bX#ist ;I*Z792B9%jdi1N鬧8='GAm/t>;c?xz`C6 W 7甹!@Csb%/Eѣ'~& '@Ɵ|dߣt{~I?Wx٭Ks+Gubug/ /6m~9 ߍx !T-ܞ>SvߊyNK@K%Kmǣ&2ђ| ӲEiɗ%|s{鱗++eF1sV:NKydVl7o@.:{]S89tsZg:NKyNK8-=9='G`gAoE'hםoXUB%F2` 殟>IGQ? +<8z Zd>>fAh~Ҟh~|impox)FJ&^#m׈9}~S;£62uE e_ixQX30ZF46b]~Ч4h%J蟍Q&SwGAk G]jo}ɷ<&%jbv1_@3+?ζh4 {E8Jv{d9Mma_|HKK rQqvOE9ʹ<1$>8Jv/1_lF=FA}87YQZFwќi@c[tc8k?m\5<_6>>~hnѿt/Q=27|7FQ>g=k-NH>Guq}1v|ˇe^ojOpKwu N#vtN9vŽd'CTOǴ֓+$+_zK | 0mȳr|3߁W;§6606ٕaNg\GW2`@.|''3iͥ/,b;@Ήh6evx#C#x1Cf/$30bm8,9~/oik`2 4Q='yZ\s/˷s{~w3GhbogѰ7|l$z1 Tրq\ ;Bf°C_&vt@K}ɏCzsrO <9Fg oAq x#]wy&ѿ;*1ި!n"POvO|Wӗ'^ / +8O:0v-Xj#[oi}mOzƓyӒgT xid#=.w <|^h\j"9yTSk[$s{_ѣ"]yMQEt6XC=N'J 0o _.yԆdd1|#]L-0^Fu? x|-?h`D;Oz[m]OΓ?6E Kg >fLȧdxE =?fL1|H7aoKر^0>ZS]\u>z$NwG?{Κ@sYKr;[6mo~k|؛dBozw]q#b``3<_9br&_M}4:—h(cY.V^.|mŅx#%lo ^G};TWvѿ.wh #e~`mݗӡz`?o$U 'CA < ='ǯ|AHwē36״ncH7|d  ě yLvo'wڷ"1[!kA6:5sg) |{{1;H&Y?˥'u#}O3YZ}¯52`7Pvc}0N e^phD~‰(_xy;R]\^%vh9})cL8]c-q/4ЀkNW^7F|*x 7-?]tF>Rv5N?f?FПm}-Վ00:co1Dy֢|%' -]0%y>du2@Lr7z ^S!w)ZR{K[jw/sn<쫝8Cu㶸0za;ntt;9bJ&뎾Gx @N(~Na9[C& 0wwGNyй'8,۩~~I?˩{Yo}'-CG{q6ZwW8\ hNN&-Q& >;^5H1РL[ϵ>;~_~%;->O |m#82S{1sh'!<7^p?4CYgk}RxWobLNk;z kΞk^?ӧ%Pj}} N-lBmƙSpNhCNW]iii@ftdXl:mBG/yid#pSIG6%~ƴ LM]=q_\VmϿ;^Wca /z<6L0DqD~>̟9%<(7tĻM<T[U2ki3vm8-ve<%ui3vm|u-/Z{ZѝuyS}w8q rG|]6uQ_邁#}(hAeύ9 _T|Z']j[5'a}@Vö^?q>w4-uNUnN+]KS#r9Ip[~;;~C`]&HdbhatF,`=񨋞s ņxjSk/'O_ƂŞn~@GW(cMQ42LGs> $;CO<۝x΋s/ {1w9cӟ>z276K U/œ7ӹx2yֹjfK]oVpl@w苇v^%ڔm-wk?o88։>F"}GOs> XBX\mt|)[idկVj4($82m+U[Գ|d/=az*MCgM\- >@ &.9mLEe_* E 7ߗ翯w[`@ 2U7%6w"=fY|ov]GrJstXY?ç|CgFY맴l|_ XO0FŻr2]㩻ON7o򨈿\C De>\gDxˏ/=~hy[q`G&#oOEdw/Iu}WKo;Kyl0/?.p66 ( >G7[ѿUeb3uPXyyR`#|g/J__WK;Tt0 1Und\/S/ܜ{oă ^y7n7@dhkt|X|tk3+xd/^sWƕ%Ϻw/"?lLwʡ5\~B1'S=IAnotwޚGJsmy h |w0>E>\&zs5 _v./?cˇ0<)gnoYa#y''cmJ_ Xg@+';d3ɥM |$ ru&|l'u25zQ-9<9⻮h{s a8{\y_k0k?=g|pRG%ؗl˥(ox=A)u~1e}?s<蹿9;/$Y).Z#Xqv\<;1RiSgG]tw;`b?~ynRE+j{\-8}?f96H(iAo] W1ZC&qQ5]^=ܞ#,tG}F:!ִ=>[] F!k6,h_[?/XS4lX0Q Y^ ]Mesg j˟%iI Q<9y__v8h>n B $X; xI%OiN1@y^5ȸq2;v>h9/w]d|OLqA|[H-~WE zCK~`IX'N'K'7?;4x;qKKf\͑>"]TN'`ţ.Zɏ]Gw>•Lxf4xb>b+%{N+}ow?Or%2hŽiD._yٹ |qIn&~=;\y\K=U8br^-΢_X6yW]ra-aTJ/׵:tnO\tɯN|N6<^{}n~u`s`Y_2d' D;OUE=0{g<ŧ;|ťv=6%S]XqK솠TG􈇲;8|F Û%z6o H`6- _v9-ජ3Gz^Wr?\+M`o:}r"ш.hdz _]ϱdS|qk's %_m?9p4V|qmO{{G\&Z8ǫѓ7<{춀WJƨ33̼0Wѣ%N~׹z(lRoW'Q P (38?$?00XE'б6?z~੧j?#׼fz|AAXt9v9~_ k;XH}qLvbT ,wd;:m=٤#B8.?q]b@l(L֩tX#tDsBi׀_ƾ ;;_=_qM𶨿7lXYc̀C}6v_[7FٽzOn3*Ldv1x=,u~ur( x?]xs8_YO%.;|=gZlԧKg0WkQ&F?]4VxM\U޹_0_6_<`2B:?>u Qׁc˕S9!|>~#ujoo6j_7|[-1<?E xBl #M`/uAN0M $h7`'q8_^GM=t3&xuSFgr%Is1R~'=3mxg_{'uKOg{~4΅]&Z20t}0& &lշV+![_l}Դ0圽‡5'8) q< ?W)Gi _(e|LhxE/kB]Ku~'g Tpb၁wY4ݡɱ(z+]x~4!z6oI=/?NA(> i-uwIQ$4b(qNlǀ+ĔhɜD&l6EJDI%f߹S9{߫޾k5Tvkihymg] ݾbzs囌cMٓeNZ^\-I8g@[q5p ,}Lߏk {ُ,EqwXS?t7C )'_>M3錣zVWC`Vշ5H"c5Mb4SK&S8řeƟg;;{=m2G~U'jWubI׸1}5mO^+Nh@Ul_uU[y5)O>y[:?WA0mho6`A I}`ŕ]ѹ r GS/9s3|3ɳs|[[;[/Eg)UH\2oY ieZ|6"[H6e<:ҝ~M%+/o? $xy=ceW x?)SUE[ N2[N_ h感kIo͌ K[M![x _T/8_җjU=u,C3l;3Sיӥ=л 3A, DuDԕ\uJk5'$xpAU i˶n; tx%t/< >ʱoxk²a'mNUܸԱ>'~ +=_׬YcϷ9]gZԧ)E@Ijpl4ƥ_o{[؀b6,_=8p\- E":X n9?f6]B>S-Ex?|-}?|+L'ӶZ^7rxMJn6zl,%$-o3IX</u`+MV/~Y&>Oϑߥ׏ӏx^=qէ|3o܎bxX ڃWb8g`[`-״ViN^f^h1"itlvqLcx4zOxeZ'?$ I 遭_\˿טIWp#+3ï嘪'v׌AC8A\k*Ed3ԦEdёe铯[et&=E( 0^@|ǖbvsh׌OoiǬ*z}x-߱qNnoX|pj`|M;Yko`APBKjgSp&I2&|;Jx)]MI*/h`&5$?bI-mŦК@iIWW#RRa֧7k>_|l~JNC ߔ!GTN- ,= ;ZxK `g6F8zt. 4A >S+s%_Zmk'k'].1-p=h?ugauӺ䇔|CxZ`~kzr^[ʿ!?6ɸ"Nm;4>ϤpMtȿ_ֿ@BVѕm_&Ҷse7@Ca`&8 A Ň08|}o~睽/>́gߺv^*˝nOdCP`6`u=x5=exa^ӛހO2oipkc+}e[-tptߢ t3FK$xۗUsdžhiQ17N /j#1y6zNWi$/iNK~ſ؂S>< ' pU;x=lU2+8Z- E71Lԕ3lmp,,t[M^U<姮䩧L,?u%O=eb,y)Gl a= `7Tu@?iޣ7<5/{UV^g#ϙ٥ݪӡO-~}_|<<Df{'/ßi+-OR75/)kz5N_k%džsQ`u "3ހ:c _36=x_vɃd~,COw=;>'S! uhp' 6&h@nyDbʃ& v˔_Hr:K+xu2dY['} ~}3 75)Weϴ7~.|hǛݮs[׻~=aN/E>}`9~0SqD9< ooo  ow6- #;MC 6;>Ԣq;&|%1koؚjݵD c=ͺp=fnj[}.ovޓblᄈ7 Wڏ۶1f~kxZ5^͵g}o}gZ:?قvNlߕ~߯!$M=_ ̅@}Q o-0^68n48ς=`*/ix_ׇ-OH8RZ<7IxEG/zы3 ʪݮf'8\&|-Fˤ׭D[330-Bn\ڠ }կ V Tu d|xv׫w!nE_3vsO!`ƦK'oRoUl-T`, ~5tծWqp&1.}  vndwvJ[Z~׭q!\#M% VfB'Vi~ `mm[Bhv8!#򿋗ZfeKoe剕o Oz]3*-UO\勫<}lLrT.⢟Qiq橸r5/_|,O5pP}$#0 8gռwvP[q՗/'U>+ao[LLr%Y?Rܤ>ܟ2}_ l8"!`'/6dn*3.Nն'NI?6]ڑ֊F:QFV@!bY_wUjqw3G~@xwIv Nzvd;zO|'=GN3㍧ 缓zRTqnv(BKLű݃` ?hv6dʤzjF]چo8v ; |6|^x%idboy4 sh0P1j GvU?k~6b!?6O;<\Us57xMoe|\/H_U>r>l8}<ՊR~;|*^Gޔ!r}[SO=U]/[Q#W33'}olr'c6fy@g $NAqLzNرxa1@CN ʖ!;ELZweg㔗i.K6AA{] VSU}~^_K]-?muav6@IDATj֎ +=_׬YV0@Asn^K%^`NOU<_\lnmxWM'Z2(P8r8Ec3CBB-gƥ'}'oo[ȦQrv^A=:a }0cbK\z2<,{tT3H^N`L7Mg<З2<}CW*?,8?K x/[Q)S0H &zTxw -l- H ` #ǧQ3e>||@GmUnONdI+Oh1?_d^]e!4Y0W:4mOaU4$> G;z`x2p6 s_ (_cyߎo Sf7wE>d>[3uu p+ED74HuެAK?W7 @}$W/:j\>Y+cI[wI{d-< 7@Aߍ Z/Rޚ<:z˯8+|)+M9,@PmbWzb"|P˖ 2t|c'oW{^LkV8ix- /4Nh4xC4E`o'kuo}6z.\yFv&72~x]ocoPf~.=Fկ6vאPu=Hg?{|& {u!?Bc_־b Vt-h ]CulIO\eKכ+z'`u%/d;Aތ ^Tyn=yM`Юp`nUL!F}m&J_HP_|/}y+~Zkwl|RU/_\1՗WLօ,x/ rC$]UW\DҶj\]q/[F;i+p,J>*5Z6c'jEpb䩓X8i2S!S&4rE< /0`:%oPXnuQmo- ^˪Fr[Gg6[N8SΰL[Gg-8k_e M!:3cAnz0qN?Iz.YHZ%CvAo7Tw=wvG-tS`?N4O`-v/x[϶p~k"LArk-PfgS-g-R{Ni;<yF\~tS&}S'SR vУkSevqj]O؛hu6ٙ !]N؛P+&1A9On1c1 7򕯜tߎu 9xc۟g~9ǤDmRL hW[^D.h^ȼ传І6O;LtwMNZEmI+8u)N^|P5xWGbo6JzV@7zIL=x ƅPuP&v|בOr^uSmK S|}̀4k5 芵ccX=1ऑScw5rJq@v@s_h~X7ʙg b78isqe/{٦0frYynWNdb[..xWQ4I+Ikd t#^MQ%l( `AV>ӦDh\OmlC-i^@Ohv3y(w{83х7ʴ;V/)H[p8zȼ!F2|!}7o_Q6h1X>hO|~W]FpMVLx;9-o؊Vit[t&K4^)yImddL70fXex$x8~iA#g@eTX_*Xr5?jZs?s~lC tO7}K]Ą v{E5 څy"ߴ62elglK=iB2+k_wZdW;̃:'H+o\ _ZxtneLR4V  .Y kM~x&5X`x^ X=15 z8o] NN9~Xp>/?g,}&N@_cSr7OÍZI[<'#%)N_^(YY"Ջ/΅o[[`3l}mkV9be^'>9W.0Xbx$`t1عTj]n-[ܛp7yZN blx@`ƚ fNzO*5z@<72ͩe-?ZI`߫X٠֓ǎ 79wkz9$m>L4}/߲oMӶB؅υma|PE|Fqr/Ӭ.Ї;T`Xd܅F'}S'Bh@g넄h-wpŸTV35A=m*'Թ`ʉIЏIWw7!y6`m$] 4LIzm/IpӤ;~bxH8/ i3۾sHcX-k̈ߴGY4)pWXѹ Gп_mﵰ:Ѡq.#+cb +M;|44إgVg^h@N~`'&1crtv}g1tO@ ڶ/'}@_cUn^@ ]7kX~7C~3rg1}H]zH9tOIߊS'i2 =r]\\H6?MM.eg`qCcAoi<>`6ٿ,w_wF Y }>6hH9C"U?One:R B뢪CBUVN{K8@UTLU5.=SPwU^U%ޣAƁGyUzU_9Ͷ?__*eNet]qNjFߩV3s:J R_Z*ׯk'F<@WC_SNvz w ]}VV租ןfЄlFC[۬!1/!wbl93w5sS_^M ]t$:IN&O{v=[h;uzn/fynz%H '`?B2u+#w[HSp&ȥ2S/m\fU?q@<{hĺe@S )vV5c^IIZ17,}I>Á,{ _ebdInĖO@s#]: >k#֗o;]v0=`.q`|<tN',FOLpb+\Ui&zCz폍|HEk%M#u2W?i00ش8}f/ ^)HZ< bbsA[4c[|{>3{s󂾶`i㺦X8YN_:e.4^hlS,h`d\4-L@5iu@}M28pxvPˑeKY/O[<2U'y7G駟NngvM[FhUNS[65E:!QID'/(L9rUw;|->7ߚ>wֻ~ Nuw<ICb *zU縱n/]Uq1 vz4>ΟhA9Җc ';Lg^tP|hU> jK)#[< )6mK+xU|3dF+˖ӣ{c$t־AO ޅVnR7hʊ:cr|ǰ}"dM7@a ||7!V}N!v{+fa~oy7Jc$?e3?wWz6-@1-u'qi)BM,Xs6%Ho3qSPmʴKu²OE@*ʟrS~j&F: 4t+(c?K_pVzz#qa,z=c/,9LK^ON[w}(!a]زnȫHNKZ_3'/ yU'_߬/y~G^0 gk~ͷ4imU{ꟕ ;-[[ m w0St6jC` ,6HGQ`9vq3AyP=}m^uw'i0IgSNꋦOwmWy1ِ\*I<@~S<78clXoJ^Y@pБeba`Px:㧶׿$Xx[ko[ZJtŶKr4-~Yw t& k&ni_t}K5_^*?p'?1RTlf!Vչ.jG3Ф!N^%yG|V噶<'2o~soЗ D$N%/}=0s ,6 p;c vϫOvxn|*mZK-|_ 3lS6c] P<誟M`2 U?O?|}Sfm=Zm_O{S'7]q78e{l`R=l~Jз=|#lwoƀyI n 6-;dJ>88t naC:'NOIzn/}H z?$#i"y'yStvjj_MW<_m?5} cs{Hd:}mu4x`؏oL䮱gyS&3鋫 } CzCBO/yߙk-}M<<3w;n~6+GvU%/eyK^2Lc!,xx$#jHAǸfAg.:mI#i풗rpLTc~gIJ_ @~+zRWyũci/OL\}K`c O^(ku6CB Smo^ x]Q*.'"Ȝ4xM߼xŎoW>sjstؤnOoi+_ e43oJ~u%_tL!k T*n O#gϣ #irk;*vY #?bOre2 Uwf/g`w`jbͯ -lr{rmBqG=La!L "UbRYܢ$Y>]MɝI _@9>ɿ.ڝ Lf l׀m*6&c5 +`u̻׭qWb I]7gҧD0YEoD[>v0̇;2\z`mz`YjϦ wSvc~MqO?gG>O>-&4wyGX^Nړ>wfXK]'EnN -Z8Plo| `+OO5,(c}%y.`ekZ.,t:@Bݤ40ǿ l'v&|ЯRO;s߻~|ߢ,V `:ȉ#_^/Ӱ ,':yvCW{Җmj~`G!Ar#L׼)qRM׶~ t>=?w,m[`w/v؉?'eo 81_v X? \(œ3 -l;뻯m)O=ԅGsu`aoL9U>X~7eKS8W~4~W)Jy]js<-6|sY`qB .{YP @gdU XGgVL*msީ=Ak+oʾw [.;yˈn ]$^V^q$^/H0 Jk=yi I{A?9;19c~}4U6Vo$->/OEg-h3,~1Xc5s#_orߧ?v1.PM%婓8}Լ,mqށ y`Yҏ:I#ix?@ve_]e/6V)z⪯_J<白g>2 [ 0pm&y(CgYu~cKe襡L_5Xf{Z-#Fn&zh ^7(I 8b[oiYTA N9в@:i>J?ٽ;tّЃW5QoW=0u(g"ԓNYc*/u;VO>(U~ }VsT3= ọ_uS`_B?}0#~ ,!@vh(Fn ';'+.g{&>`6z@C=tWb):6 s;l^φ?Ot->0NEX%; Ӽh&B&|Ɗk8.ϻm05x՟WWe(ﻚݏ-Ebq wGw =c iճV4}srR ]>. Cg:4o?OYExW/yꂓt&n6It{IM=/mxi#]P9X[pH^+NIZyũtcң> A[`@ yVec_C ]!^]hlčI m wTa/JZ`;`Y]' 3zի>' @< < X>| SGYb2r2q2uRVu2t4G#H,+Jh _k|,}O{.fd.)7+سPo-X % lh۪M|M xŲ.,"GO| --8? bS4ħ??>/aƤ f#|2|?_4fݜ_ݩ@g˶>t:Om:ȥɫk\scDX(1<(/v[qmwҺ- s a} .\xә_@k3p7\}w5}n4ż*Xr'ԩ 9 )<_m ,֍x߸U֫uM\| 0/X/;{~hDz33g ZS״~xOOYp&t9wZxg s m=)-/u.x2aƀEw qs(1[;|N0?я^xU951Cop.]Q}UTwF]Rv&|bm.1VNDW]+nV .^,\Yow6Fc`'F S~ԛ<܇UW9g \ !ȴ땵W3\Z~UMYW>Zmj0o`}](YrvP^9ǖ#_j `Fno$8Q_L[p_3 (|AJo>]wȠ˂AƧ &B$yLb0vb.ٝna`x0kEu 1%#MLL8;Mu3#ogb#Bm@jV|ʾύ{1^cW`_l᯶ B J[6<+}}c2L3Y ?\Fkr^{s[0CLOks}`O<ѭWùˋuB>IMS 0Ա߅55կgg. j3g~jMS=?>.;?5ߧLZ?k` Т5`apkoXoPvpNx_z~dGSG L s5͹U>UYY u[ LM`3WD&cN&|&{'~˔[))yzJʫTyWվ7l:o[L p7@ěht%^_. |5fkjlzy|Q;;Aˀi;^^gs j_,tiS72W_맦;W_U^m!e0ruOȞp1A'u NxUkY^/ \@o5Cu]& GWb?]u𖷼eΩ l39\+&{vЂ|dXs07S9|nvFFH谖>R [{-FY=%_ 䀕2ֆL2/Sސ?lگrixszsuA0ci)KǝlJXT mcq0h_{e}t:wRm⦪>^xL 7CBF(B]=vl;$gӷ4ZCq:q 71F11n_vjmř칻.=oHm^;eTzS<͵?|*)>@)-KXkh9w%p9-J~cpFӟw,X^@St>I{v?bD ЧSٝ!eP%DZ<C6:y!DV= hw|w b=sJ^}^~MMs4 [Wpq{Ԏ; 4wLNL\ ƅw[77\vN6"uȕ;!{`*])@mG8E/zb`5-p:|W՟+wcw{_㫌y.@??qe`WW 史͞zewK*Uq!J]2ow݀E˚m]o/~_p*tm?$# yt x+_ya21e'±8|u G S. =>cܼ~ϡ@IO"G7y©e8 &!{ɠqO_M)c>*j?W^o~**;6?݇@m | lȓVSVm<]}hXkprgkԧ.Tbbf\#qʤMgw]*/}Nnoұk1\TzU>75?*>7 }+_ʮ\CB3Tm.}k`;9Tdҩ2r{,[̠^;PM<)S>v~G xyȴvWe5~I[aP1ҡq` A|XVpU󑼹SSLGWSW\))yMƫ}U*5>~>7,cŇykM-95|ڨI].̱rZ Ch0'EA-Լ[w=?z@عzhȆ~47Ư]pwnѡ䱅Dos%5}Tyq5_SU^kz_ӯTj_ӻl>8s={CB3Gh!OZ1?w Uzq4M>6I3Xp L(Át < x[:58$m=Ybt= / 9^"0'(zUcuyUj~j~kWվScUW~|ScU/c(c ;<"c! o}H#^ /`6Xd!. Ne&4lN. -eJO+LG>OVyLrֳv('}87Fr& v8y&놲S,XA=0YyX곦777>7ckVM̭_zdL_=|L Y O[-!M,8)f-3j`;zcIzL&`w l1Xny:EZ_M7QҮؕeܞ ?/&w'{ ~w? SIJ>)y\֟7%[ުvEY8OC? ]l~??C.h34. ra_,UϸxN~3.FnA\n zs}{n^^:g]$F)'*SN6dLLL P/,O@? |wew1fc-G[H OCb&~p1 h;zɚt 8~\W{1LP`{YWH y`\xG6UN`"1S') _}.퇹ZKo`;уOxaZт=8 pnn{ثR{KN֓û lUZ<[no{nP <'wR<>wNLSY/5p;"LNG?[`I݉]ڝ]iXutƬ0IŞ;8^]-ȅ%ӰSq.2W\L=`'y%n{Ϣ4-o`L~{j 4=٩MI^; l?g[9>wNNNNLuK]":q>,#UZ5 #H@IDATN&S6sln]&wYOl=+^sU>白1X2H˟{B*mk~=,}V]Wng'1F02yI<<'Met&w,mN1Y.Lyz,0梀+ .|08}K_h.ݱp7OX8ᛮ[i0KsJsK\5Ss7^_SScU(?ih|u?0wO83 ߐ ']6Kco = `V{@JIi| ;剕݉(>N|?a1 ڢϧAyϗXD5>V0;Ml=[ۄy:վOɧUy|*^WW?%U*^Oŧқ_Wy8}I>¯ 4q_tNNg]~歩`z:Fk??kcuPدSq f= w}#>wsoug3ߔ?7~jsMO疷\SSrNx>p0x>/ 8yJO ݋;'v[;s?0ԼQ|K}Q:f-𿘜lsQp݂CwSܴZSv.?d肹[=[Ή}W'W! 4q'qal!\i@M}|_q 8hdWtU_W#fkgx.gC>4X9~M[i:%->oJ̛O[i>U'm9w#_BKOwD _1; 9le/>o=Ҹ`"j{*aͩ{jsrs{&z'CnY{3,']YʍsRN\iޱd/B@v孩;Nuj'LyxիJY?IRlw %`|cg؏mcrӯxzª_ӫ)^y|**5>7UWwBYDOYk¶='?ӹLvN^xNɗޅ])8<5MQ.R{x衇6f_Sz(@!11b@G̝+_3Лd.Y!\:]kz5?)*~jz_ӯTj_;;3 'ZZ}o<^6=Z^Jc<58;#ay'W=.V bI8j򒗼dx4]R}O _ u|IA8{݂>_Z| _ _z)bQWUwZCҡ۹jlϜO:'>EK\|R`}|dA_^Mw5<8?urSqu׺)OU j~Pv9?Ub PS]:'srsvO4zƵaV~Ng|,q^ _у\-FPI1>:)Kz?z9u L ~g<?kE$^Pʤ['QKzL..q. -~n3{Gd"PN޻z~{ɞkyVciۡiNLcKy&r/uzl_Y }uޤ7KLzW`O sP[ !u;{RFqMկ5>XyMƧ_k|*19wLִ\gn`32\e-Dd?rpN%m>??&z T}poYuQ&WaBXܽg j@NS8 nZ4@WJyDpv X wY '0XOy3I'EW[ Vyt13Lz?&ӗi'N=^ fR|'>Ϟo<{7h3-iњ_}e׼?~}dSd/TMoř_#qe5s>`:blzt/@NN.X(W_ Iɒ- +$ ջ6xY\Kq: i%jjS[O_y.N.62 :?8!`!7(dz3|{YtUZ\/uMBw<`/=VSr|dYp7ξm Ӝp;3;ٻBS1Nhaհ,EʎiϬ)N.M3VbZ?X*b`J+_?tx$A:FԽ|(syJn9e Jڇh ҫs˃>[LL;ك].=KLFBpwRwnɟyjUO)#;cA xY\g45CeYMƓ/a>+̯MP<7xm`r~jgdһO*#GkZ&z'{&]!:f$OΞp?/&=I뒗'y0#Sȝ؝ǰzG+- hS^m\Yɖ6Jή6Nk/.a>&V 3ٛv3V_Z<ը ˉW/pgOQGB;|vR&μ.Ͽd$^<$F~EO\^m \Z*٪+'Lvj8_խR_F=q꥿[}:ډzKWk=}U>0OW&8&z>7> 7?J9q_>s(p'V#J{PWyQ|vM78LNнɃR.\j: UxыG[V_1zI]F7+lOGoxo 4p;,d_}ɞr3S;+L9g_OZz)waҗ?p)> & w2=i28Ó(0j(t/>(5t:hBv6=651bi]y'h/nJ?L;O`o <Oik_3%O_w|:,O_O])\sSz?U*/:CNȥzXtb:.pPY^/1]S[1=:yg˚u@{>я}S:}ݷYL;NM55NkͿ)Ǽ=wą}.ؼ} {k+6qأt*٩M޾bquVIWpWjDD9&z o}[T5}Kk~]*oD}>'Lggd։qso}{gns ov+gϾU8=IwD~J:FeYS{'e`0 ?[Wu/O!^>վd\]}:gy|k_)j|Žy}5`'kpѲasw+I+3䑊ryT6ᷩ]K?77O5?)Y|쥱K_.Evu5,wDH0^1:u*NtObLzYþ6;(O~r0 >Ãi?y-?q1i0md =10=yʤ']항7|ׇ_z¯6ڳ7l}lA(#=҆wLW G'Oߚ%&?K, =ا#-y-n9!7%O_=z~L)w~v8gga , riqN9}-+ۄ-6Ϙ 7?1_bpJ%dbt,ep=#':,i`dY쏯?0!:Gk1p>)ߥ|?졇:3 ^>=¡KO]wM">o>cY˨epzO:WcMv=Q]qף;ouM4gzSA\blz<^F{y=6]vcrXG,8yI+?؎ݽx!S-jD?ת5vZ8i&|B:KoW{d=i+FtBu4Xؕ26wRGk+F'ͭݿ^|Vɯ2ͻj6ΔŹE^s uj`Yܪߑi<;񤕃&i`@;IZ9N,/mVKo̓-31(AI@,)qhpeRݯ~}rs]{~?zx,ua6?/)>|DO0_6x`V] ]r>4H41$ 2 ]ׁ˪$ĆXy㲾!w<}~F֥?}!\yպq{Cl{þӈ;񁰻< :~.<+z[ƠP h<`2t$lG1~u<^2|9]⹟.;pփV/}0F¿i ?Mձ??NsROg_}2Xc_<{"zu|ro"hhn|pX_ qefY^7(F9> cG Nt;F6.tglδӄIż:s_ǔOl:s%ڭ6ھ 3qʇ|Oz x\e!eUʲ+XUFLw"~s墇\DxGusB/ _oڡM?\CWh0vJvc@u]1c16,~wpоójS-}z#cƠh-|CG~:~^q8g~1[lv$+EWVņvk~;_3ϗ0q bGHiMN;ol]U sao$t9AI^~㶾is9vЙݧh?d‚\Ɨwy w=\ J=sP,1P? .7*wsC&i3|G.v-Mme2j<svS>7`>CR=^:>\ j&;KW\>oz?x/&oboFd7}Ag,}ٯ򙰷:+ƿv  +g);ϝU ?G~>80aqN#G"<[No}>W#c'z8m8ԭx_vǼDHz~/i_x/8FڬQдyWŕF` 6|sA⓴h (K.\7vmtړJY1<ʎ3n؋]ڰHo5ohIo %~7_ochV|\,ND/_7cVԤ+ zb3޿EBp'sWɺ"^W\= pd<˪I#x?cp>ל7an>4\A _oS¿mά]%L:2`<}(x\oܸ܃xős0SYOe;߉w}C@&.w2MsL찾A_8g.|D_@]s18|"Az+ќS?oE.mqseC+"_fW3B>K~K/F->n%H_=Ċ-XR 6a~S|~^Dl岙Aγ/5?W7śڷH3?SBud=oD}W/lį/Q/i1#_Koٙ6ok-Z$'qgcn o|Z7jm^XvPUo ww!;2:8:8:8:8:8:8:V/pI'\,Ii¿M@ﻼ?{^~.;? Usǘ-ȹqc? V[ñ`-_,,h}Mȶ<n|hUzg"P;Z5HR;hƯ/N~{K P^h.YɦG#/7^uZ0.øcqN7 HT74W?2wO/"}?UpG.v9f24TGuK?]0l]ZMgNϼ?W vib477ݿH/qO뀝&G|n>>yzz@tL3<}2cOCWX}Ey9*" :~~8G3:fK'gNWam x G |[\|`cM}XliՐ/pfط?=}'@WL{HP#WhkM.:ReL[wO8W`?G}Yg'>cc[$n4w}׌Qoymmp__?@KӫlOy7؎}DXO{kh s$2מsǻ_~s9vzOmK[{;+TP!?Psk>|:w<^ TL_j 0yRi./Ϋ1&.`.?,ܘ'}|-i/YF<tr_o7 ?ElW/+kӟ]@WKg㟶|9 xfEn`pMC  | x`0/Mug!S-D[(|6K!>2_?m^a?/٭*bjcN[ ynrg?.:ȇbџWPUo} zPMAA3 ɝI?b?-nuHhJ-$lD}`Kt.u,Re¿zXsȫ%OտCi>yk =tPo[1s:a|x`tu:@c<~xYF]AEb.<@xJӫAX=?CojxkmxN]it[^4~sqg8!me11x?\>ٟK.iޞ+Bu~K`^Y;؁|ǚ{キyQK^.o&N y@Nϳ9Ϻ^9i|d!e|J+ǚ=u~eXUt ٸ 0ࣧ'!vgh[_ƒ/63jDoĉ6W*@r:̓фy:d~y1r#;Y&7R=hk~X^Dfym#͑_~l_G\?m|g5Q #<\STiSl,/pt`tȖbq<_~{izMt|dZe-2rGl 19ˆJQ:JS=xceaϳ~/~w7x]ͳTxkz`v17~e%Ξj=EBO`y{Iw(u OGY/.nkMz{'+ T T.t8?뵆EWqA+v$42w?݂VyMm_g[񕧛EmEA/<5/ qc(6Zsqu!I#m'ݖ_}ކRDN7ux6_t=Oq@^xxGsp$t.L2eNWxt]| -.Q,/cOWm}㙗7~>skxq_ oxܮ?{ T >c0m1k(m+sG#P 2ψ*st8~+u=s+袋B4jd BדN~r:V??;|.BcC|;OVϼԣ[ξ\Dz|C|nx#lVxWB3׹r %ohVwu= ߶Yk_p3оᄏy'[^i@uHp3hpUɕC9V* \>LvuKYW}O]>Vb[v{.o~ȟjxce__mEvˋ@],/C86![?WIxKZ%y>VYyp'xSEOɿI^aD>ؙsAwB@?1G}wsӾA3`EW>\']&o~/۲> u̩ ,\^o<}1o|}/xN#]$L~G v˸X|;A=1>/fGˮ9/p<Uc\'{hx8oƱe_UW]\xCCwD ty~CqWٲ_}\_;M8|$*?.ާ.U5xy!~>?wZ:;xi}/_98?}>Kr/yw6u{MkЋoqh8Z8yd~^$Av^jlbު1=7T,\E H+!ո?;۽pp˦/W-^,VpnA_oϱ|GW ^4xŧιo N;XO551 (PgڧhMI?G lw_Ho}kcNUfrg|#=3F1z)gs ewUlh|A,x m>'|oPv۞ퟎ[ͱ:?Oyg}i<].ufϚY[JJ$~ǃq</1CfQ L. :tG _^/_hX1u;t5{X>(_0 ?}?l|oW|M_wKxӆ!G,-ѡ˚wc/OoSU׿#'~Zko"(;-mw.uؓIJ'$~a/xyW_ ( v 2e^G,ċ2| w_|MtM>m4a|xɍn? U7 >ig].1u]).p6;qC1 na%vU`C_#Ku`8>ooo^_:Aeƒ3]]dJ^oa.2A.h92A.h92A.h92A.h92A..\keI))R^Jߏgغݬ[#)[c6eXէnp2=b "I/Z¿c¢@=`)[jU˩wyєɜD"@stz_?86 xǴy_>UK2d;%D ϸ$shA\9OK2&/}!W\?&|@];V/-뮄? qy*/12tWE;4g_ˏ8+/$nZp@8^ZOKq|&;Mgmv! 8 OXy2t̓e{,ܿX'|X$|Hrش j?%#zcy\Z=[s諂z_<`𢣲 g}O Qѩ\<M_d ?Ku$G">fG [`] -gǞ6]Gmz} pax4H{(җ~</ˠ}ÓȄkߎG. 4"@I{a'DŽQ/qlz_~͵^\|ų΃/`O4 12eKC Ie}}}vۮ|K]=} fcIo'CwG:ہR"?Jc5#EJ% gLKtmԾ/@Z?Ю[E{hO㖹W5;g#i8">^Px?xccϿq)6/IDATwg9_9>>h0w.us׬ߎO9wְPLvlhp Ӆ_=/rTѾU~5X/ѫxg"P;wk%rd\⾀gy[}~;L&j(i@h802cLƂ1SV\v2pR՗[X#o*:^=iwNjyc^:)A%=xԅ"ǟqzCG❉@]LK*Ak ;(;-H`;}+Oıw/+; pp=D e}2[dIFFN;/r4}d;V2ģ]KUc<%s`%JI_:s諂N>"&0p˜Eܥܥܥܥ쓟ls-`ڄ;]]f'/l7OӑK߿ko+48O|x ]ta|y.羲}˗JL`gW$Cl"K>,no΃Zr'Y..n&^ԗg^ߎݧyF> ix /qO9,Gvx꯼G.15j&E$wus_m ce`hxLm cAWm{4e`hx=,cm^lJW/ 9k':þ=3g4GyLaJ0 ]hO,%9s {iW|NٗEӿEWGX~LWQɟ;`-xH,2fˢŇ}G?n} vJy}}>Y۟幜Z^|I+qN*;N;O84/;Ndϱd;Oe-O?'9<}GqT #髰˪}V{qn_;}UzZ&t}Yt-JɟE:p38yd}O<'``k`b6,=^\Dl9'R Μj>vX7S4i\+չ޼n}]mۻlCPuvW#u>F_Rs^` f_s=?߼h`2Bʾ Vej,:q؈}.ث 'tൌm-,pSO6憗iw-u#hΞ=Ӿ ~7$(b]cgyUnv\__9ן,gy?cɃYPC$zɽ ? 8:>|8g+>s|r$tOlxNDmn($ͬ} 9HPԡr4T  ߱ˠc/vB6s; x[*cK@/%/l/Gq|s{$U?VN;caׅs{G_v^_O`=q^G-=|@YuPY@=C 8~x/AVtJexnO?Y|WCl\N>o9` :5~@żG]u8M}sK.~;t;FW>ol}ԁ[ri wG`weB3eȤRO$\Nq_C=n+9y5f0qdZec'N{[DӞyvY+ ,.^96Chal ( gٟÖe;|{wj4yl,wt\pg~^Y?SUd?~J.veomF.u֦ ]W !'\&ჳs_^t54o|7MLL0j <F9cq/.eNKmoGiy9xf&0D:%ē{N.>: >DޖJ>m7^}j ˉ$o_  lᄏ~J'[|^asl7bn W9=nPz`Ik@&J kme1 *g} :t zv]1 hmM}le{_;]io>ʽ`c}+r^v^4zr"Pˉn9n֓9I}- x駛o۝h O]?Ny*#d׆cmG.m=p:ɳeOO>Y_˫@]>ƻ%hx-$#ჳ~q_K/hs^e_OF X}'̬HG>x8+^Bh0lrP(^vs{៾?:z}^VawD.vyXg+"6ו ;-Z?G gΜiv"x;߹%0I_%&,(mUa%|%zS_^\:uM$|]w}vZޙ}7Ԫd]OGw߹/[V/K.IC$*>4bO{u+EO;>e# #މކFd,ly2CMf(Ki`C)~սn8q3 ~`J H,}ozӛp%p~8Ǐs=&/VooGҿ=9xh׹%ANk&z8#u.2hvx^hWW/b 86|,0"]PmA ی@]l3特peh=|aeӻ/ફ IiM:@6N˞v h{I7>q@W3ةW~,>s%}>,g,ܧ'x^[/ hXǏx*oAxAGf<т\@]y"3Jr*L4:s ФӭQi{A{12 ?pW| ׾!Ee v.e`^:?8o}o'4u9i6i=IWG+x6|K>WQl`@] QHA2˻o~y{붧]`o 4m~+i[Q'<ʎ髰@A ,-v+ء*b{x$qh K2\>@{ PD.ih0qAdyY4 x^c/@/ / wtz2u=sL{[]x/6=>ɾrK]N[u{7xNDC_Wz~z~8Cec ;Ok}A4؃ôv#Pۍk1Pݕ`}ǯű}wyg{;ꫯޒ| 1Y=-k^zSehv@_ˏ-%,?@osH]rlb?,:>9-ءս^Žh-qOo0KXK"Pb8GKu0օI$=N#s]a; Doo2soK)]ek_Dz7p s6y^}_%J+ɑu%lٯZ?/sYٯZ?/sYN^߹ _ I;hƲJeq4ɜNa羼jg l0h@:D E3Y E+- ,CoFctp<9^3!_.\M.g]eݡ宺︋v%y].g]*L[eݡR]JCg+ڡ?H9li+aHJ=C";:[+@]7E@`A(IΗ}̤}LL NS!vxȰo?"g'/:̻ܥ:n{(^UU<װC< chg$aov02u02`Up,3$HL Py3%F/G?Q{E }$9WUv:ˑ|Q{s`swA_•wKDx<4./!_lJIZڱ.c5)E{rgyS(0"u0"XUu hP3Kx:|_o5ykf}iԤ΃玕΃guU +icuܾ\-g]C?YN.>ɟf1@ۺßs8wnh!w=yzYgy4]zW/ + <',G>P{ Ƈcddy˜~\X>_>ʇ֧${]k;Ugeѥ2:_<5 94|@YzL(€h&;Iy%'*cωe֐ ޮM^=}}}r}[aCº_C_P|hg>}<`}hᮃ6/M#"P#UU;#A";0c #et'ZWv ;lҒ`f0J:۵J4m6g9(k~/ju l'9>y{BW2pyKBy=`}cqez9ٯ;-*wuZD R?8u08TUqd4(Y50ADet'z}Uȑ#1M̿SؒFػ.:HJ[Xu ꌬպ p~(OHٞ%v:o)ַk>WJu[>KƤ)DKX!OpU`f3M>=Xv`d*'c';\`4O mTF?oSIlg ޢC~ݡ)y{"5 Ёvi9d'qQvi+@] XU_(\&x>ewsn`TWNo+[9c?ej3=pև)8Ou>:C1}g},gIءpV?A gY.9δ]о/p(w..~>~i=-,K6cx/n }hÞuBX!ƃyqU;Be]- k@]9ൺY4 0cI',Z/@D/ Ҿ+J֓ yu%Q'AX}]Qvꞣߔ=wь aɆ:BD dWa#P;|x|@YaabB4 /Mvs.^{mHbj$dyƮ.۠:Iƥv/MOt+Omԣ6)~3V28B4y%<"Phb`d4.ab"a ȋx oz$FI0|51D~s`6fg'8f>Wus v9yX2SvS*;_@z𤴵 ]e'd6'O AOFciկ~}9A$4ђ Q ˍė0AGuJFfl'ϡC߯EwN$z}ȅ9ϱNcWLU8"PICMDąw[CׄI ܹ/@4o~g6GJv$>1d .ٺ ,}KC ~ k_/acQϋq Jy>W~.a牞wx&/.98Ni&_PVEs,P~ipm оmSB*;_ rtg@&,Ⱦ__y?|饗6%Y7FЎ3rߡSt ;O@vyxRσ.ia8ɜdBch&R/<p |_@;!ɉ{\<\ɔD32t9'·G#_%V_яRe2LUh#PpD@!&F/&L&ga逝Fg}Uxuz9ˣx!UZX,-%|];vJ~ݡ3g 1%@Jl@]l G-tMn>2y؃e˾}qW榛njPJ}qЕl]Gv҃y]az1%I'|0YBׅ=N.I\?^LwL'Z j@],jФ]o&ixhLeTZ\G Jh_[Y%CX Ǐ%|-X₁^|6Q%zT ]-]D.d"&W,E:g9 8Z[/@/$ FoF,]"S}%zCv9Cq3 N 2KyQF`% :]S49kD'|r?86/ѣ-u=о.ع#^9}]t 2kVXIX5F OT=f{}L/}?\ve?Hˁv^Wڭ;WwoO9cyqKe*-uP׊VM4;tMI``mp Pz~j[u{/?t(CD;B*̉@|VQy>E{ `}1 UG[ rCx-}?a\Nq7ethpSFF`@49Uثȉ8(IV:S;{ƚ,4`2>juhxvxտ22Ǚ.ūP#P#02u02`UCWOˉYW,+^vY'zޡ"/ueUFF`f]dr"HˠIJz0f_EoOۑ{qU;Be]- 55+@]89%`%ItƓx^&:fwḵ!lEg^KgaɆ:Ӆ.a 55k@]9ൺ]dDRKG_MzvX~8ӥN~8'Z ?jjv8u'Vk#$]o̓hq{^` ~w_YmxΧ8TI'ep`O@~WG@hLr+y+kе/'pKXK49i&]ILRU=a+@I#Mv؂3 oKy[FF<@]'vamPj+UbH$kYȞ؂?z}Xu]-]0upڥF@ k@udD.ŀ/ؖ&EK&<vh>'FF།@9o;Z;V#0v=P'3E@IW2_<'Ϋt@nf#";&ãF'b҃eЎ3]*WFF`FIhvvF`)`K咬T9^2haehǙ.ūP#P#P#FFF`{`,9U2j%ɫ 钍!FFF3yTxXNe$yKNU555s#55q崌r%,wJh\#P#%_5o ie,+۝ՎF`/E ٯ}Hqc$IENDB`ic10fZPNG  IHDR+sRGB pHYs%%IR$iTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image G@IDATxY}Ozv=qICr(7DB !EDD"b7\D(H)qA$"8!! S$v=zkwo{]k})iz:kW>G @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ %e/=C+ {+8I x,  ;`Qw' \pM+DŐ!7H5o%S G=3  @=S2Bo6Nc}tnq pM@ @8KOjߚCx6<x6t@ aidƾVsؾd~3@xQ^ 6tz9[C pW<+^Cxq^t@ &{ܼgYfN;U:  #E !_Zz3na@[˥- Exp6 <</<~ Пfnث~_6obڜ @nxp7$ b̲Ԗ>!`meإRRۻʟyCDn  MMO#Km +b]Rū9q4!5Ofh'9tC{_SZToLf|謖4Cg6WF\xlnN7GJB@/F@ʥ~륭,UOO/_.k씣59Z^ҿ7\Ë|sffvƻ/:J%2+3qH׫Qaݕox}os> n>>~_k @fxp3$ PL>H{6Z=*+pm \}?8,"_nN5R܏%sώۤ|/Oʁ-O~~9}@EVW=dKƠC;1@x^ho\Kӵ9ƷF} ԜU?I:vpsI\s&JT 2p}pUPm 9 =뜝Ck{mGB9) !< -(U$ 2mMұ7ԗ5|KnB:w+?։ר{7wN&ԍdO_Nfl\O-f97zC'D4{;FX%sBSi(5=Ax ^t&@ֽ!-gN'Q/iI=kg)?ͺ^tl˨/0[&qRg5YTkwѓmxeL-x^њXT፿ nnks.@Nώ!ܕۤ %SI8kRs7{,^Y)˲-Ks_Kkjw⭟˹ԏg9[i? S]{RtnKQ ܝ ܝKe}ɷjp otj*a=7S(>sg2Y\ԐN9f^|M~r}k^'wC֮Ԛ؛{NRɺUC.zyTZ{A p\`@I Q N`Wޜw%;Q[ԥݦI]í[:d/6LrhE2(B%f떽V|Kvc{q[SG׫SY:d/6LroqSf{?P'y?fOi}P@mU ˫I;1B/ܗ/!<'/:gշAKRGY^֮'$V{N8??6O~Z۔º-~νjM߽k4grdUO?nJ7I2@E@z\]Zlot 7WȹO=r\ZGÜ˃_;Jƃ/51YR%0:ko%#|kїWkWοpO?3]#Ukfޛ{^d,[Vˡ!ܓIO Ym?1ٛI,ǪA9z^GkM3K;>6wqJ۫e>)SoH~^h- L-G,X/~6}|=+@?ȘZF@~vyJ]g~H@7!`$  "օy{ըew(/ f_^LrimWpyw'y26 nU^&250cby17[\j?8>kv)agw<Է^5o'Wֿ&k.I bxb hEj}1\U)Rs{'fQ3m2OsYy-?\znvuxMR%ҝ6NR'}>d/#w7u LUu: :Amk^sU?t@w%%9 g'Eh]|V嫗jw2ϲ<[6t>Y籮樺yk9yX2 Os r6]#xk|-@!BkcS.Qu~(fY:@+-82՝LɪS{u]o_˾V$.Ytɮˮ(F +Ͳ-BIS{u]o\Q?`68|+,[hAU_Sޫzrl@ xֽzQT\@ Is&|d,k=NK\%U46>Z*gG{ޖW2N09ZTΪuo|0]ƇHͿ뚦?vM/=@BςN /D7u^pT%}mKg~#Ϻj'ci/UYg9_4z*=_OnkkIu(~#>kjci/UYg9_4z*=_OnkkIu(~#>7;욛~սї/γDFmA}N@7/  mfꥫ궪o3YGɪZ/x\7_5!uU8h~#_X\˲F;,ιe{CԽTlַ>[tQ @xpS$ "FF/Rn(5h}~l\6s( Qz uMR,kQg>>U>^}5Grxl:c%>f>ݖ>以Z&C1[3omzK[jzl:c%>f>ݖ>以Z&C1[F'Z?jǿ؎CkdMghs0`Z pW|]XZ`\ ^*nov69f\cR>My\nٖ綼uג-cS|/mKҮuג-cS|/mKҮuג-cS|/mKҮuג-cS|/<5?َ?oUWf>gPe@x<xt@EhqRuI/W**6ݼ]qgyk̗z/|eg~Y?|K(a~|9>yX淟3_'9ygyqPfwjOC~)[XOwsM@oYҧ׫WKWK|vkCjrΜ|Զ?dX_.Cjr> (F׋Y&?_w-~Cp"YMΧq_XOx[5Bz9gu$ ͑pسj= bݧsNXJK\2Osv3ο/z_K^FZ(]-k_7'<%9;>-pC:ZCsjC p< VBxQ^Tѻ2mġU;I}e?{{⸵9 x`fWۋd5z~+=Wɪ\uP\u'6yV(}9W=:;γ"G3ι7G9W w9JauUO>ιNpmQK1Gk>74UC.FG  E+UhYUߊT}c|>nL4i*ZA> ү  #Q;@]GǛ؎Ԏ|-FTPxp%@!^l[uVɋTamk˶9W}-Q5l1UO?=Wo65GeRꜫ[ט+:f"Fao$9Z\k^c~{:nlR%3;@.F  7H.ۋ)]Rz.eS[oS.)ej;h ͧǯO)+_9ܷX.ONc<G.ܖmS䓯8K~=V/CcpKtyʩqױOWRE-kj5R?o>ƫ|cpKkǢVMd'J(ehjB|5^+GXzޖ4瓬z*VE-k=G3PvϮ*_9Dz//k:.(?؎ڞ-ls$kh5: nM@hKѵ.z6YU\lOS4.Rd>%WqU/efmtr>~R<_K689* Jab57wo_DKGC/C}ͲN}evh @!Ж^28\8P>նԿLq$Rh)]6KYh]rPpQqq~=hrҪ}Ou5L}K.?rfKYh]rp_=4{lx'mJW[l֧eK@CN)l6Q:yz-w}gj0,{|_风L=x M(5ڞ9'u&=/>ݮV~uI):3Jw Mmj;S/ǿuڡ/ TJusG3bU~ڬ#!l"pnS8A r]bJwf+{c >6) mXX_G=mαG:Sۖ66}nSz'}uGҊ58x|߇6A%nb}ͮ*g7^7_ᶶyMmntɪۮ!)X_+Y}mf(>?~(p&l{?״CH6 rP l"Mp jx!mXYgR%s[ק~[Yc~yIc\c=ݹd՝fjSLf@m+].>uw4gӲ0GlhՓPW_ˣs=s|E.t̼{#8ʚ}W>[S;~{;>Ҏ$-SuTT϶n@%@ u-$Y;~m;_t򗿹͏w 붯&huF#i:|#}ub ο7d8U[ߛo?Nlu|_ qaZܿݎ?}/')]lM% .W@' WH`ږumksoxk9Z`}Թ:F%UQ{-o4?oQ䷗ψ^ϻ;Qޟ PBvvvԢͿZj?\){\qkCoo%E;nV(WB:D֝0J&%Vܗ嚟GgOH.9_\pQT.y\~5ke֗z_ִߺ7~8 Y/}I{_ht;v>Jw @\_|x1zQKҖ]2мs{v*i~e7jmJ:79 ]gJ:E%Ο}-9kpE?zC 6Koa]Re>nA$/w㯶w ܎S4-I:7n{/疔oνҟScYO,92=W?j|dF)fk%xr(33k u]g?-{.\_X˥%I ?iwC_3ClQ^ϪۗlCBo fzx+[F&ʏެJT^Zz^F'Q=UZGSƢwD,vl>w֡t2{T]ƵԮ3i^{V]Mڵأz_k\N<vzú6ԀuקԾ=vxDy"S2y$ %{n p-T~Y;|6e| ſozк4,'we%hc_I|kcwk}?''ԏl'9>?wI JMrp;OqP9_=l=՛}oS:ޟ%ߎ?Q٘q:8 R<x'aCWk[&&6׷_3%TҺ{:_+H˾!j5Cד Ɠi9%ث-3_2_G9W&?w{y>3_G(nx2^{'}Tx\7fJW_<mgڡO4qL5(yo)6$  L,竚U_MXzF-$}hx^XZ RIn-^4/^>[KܷJvWzr)d&}{I=Ǘ]}0u>7Kjt6KvNK9/NnЫ^}莵}[ > LOOcr\NFr(%7:=C|?Hwÿ2-4Sφo>k>2jAM ֽ>rn?;ߨ~gg{Οo7o݃N,9k5 ۵/ Ԧ_UWQ<xcvolLx3P6oim{_XѺ E0rOe{o)[S>yV}=Ż9]s" =GKTm!\is[2wt|*,3)ިt9磜#Xοh8IoHཱd٧l2Uu>7K9#,]iKW l#p-/@F@(s_&RW.!W]ŋ^ pVsY_R%6g|gd;[3gQFiu̿>~45vI+> Z=_(2:Tdu x^re>No-w7ͻt/M`͖~MyKk/-UvpJW][6jaΦi:y*lI.efp[w?#?ׄvꬫMed? 8ͯyΆIq߫5s(:] ֑0|_;.{hk֗vhڣ>֫L]u@RΆaCB n[?@Gn=}GڗzUwio*vмܦ뒧ޯ]R؏;/*rCI@3M^֧Qep%?y<᳗g\[訜4h]򴚧.}Coo_\~=qş%ki:V @=Z~_7ҿ/Y~l_m[˹{mU4u+]v Sm=wL8{?gO$kݷ'$<:#p<Xr'XTug}41fv@;i-hn{AWR_<0)F|樍o<] #Ǘ \֯ߛoK[6 #hC1 ̛Ѻ/LN&{>Au3/SiKd-eI+,/ xNpDkwiX'{Gw~(Z@X[Kf0Zfν[g?iOpnE`or-}'{$UF?=糽[[[6upG sw .\g_hcv|o;>]f>Ǘu$UjR;</kT7uf[qMy䲴W[/uɵZ] >` ׵dd=;?}k? _6~x7>0>0O{ '{K.{{ݏ(/ 4E$ 7F@kol7U~[E [ܐ[(.5̗gW]2Q|{^Ru5ӾT"{ͦv\;̱dOi˩Ier2Z\*Ne/s,ٝKmg9U1y9egx\&Ru-Z}uJT,_{-^T,SƕЧ.v,}IJj)T[e:x!BC[su6u[]_ <?w`O ߈u|߭e_ߵOկ9[Yko=7/ +}m|K}͟p?k~+?84C-ol2G'Wؾ_ގWQ>'D]u̟9-wGcYZл*YiIﲘԬ;z.=DŽ#ۘpWz!^Ri>J;I'Q~bz7y˼;~cK3g{ϐm 6$ LL  Hwn{Q7Ud[0^^>ϵ;//Q~@+'|}zϗ9@`7*+f!3 ~G;Gvا[;7$!gxKBK:bk֧?e}6s_-,_ݶ.4K-wGڡ>8@IDATo=ŨXލawPI& h#v|k;7>ٚxͽ+/K%7gs?Snr>|uoj}!mSݺOnX|9zfGo&ײϯMjm~ޒ3?:bsowKt&PhO}]e*tTfAz8 / ,o"oa. l wo jG-KЂ‹- e.Hx>oqϞ ]gG u~Xfgq=eDO̟u?m ,7#sT|fYԗ=rtO{gƏooկ> yA×^<>hg<i7&_R_Ч7uo?ŋ7FNn_>cI6YT{cyIbZT3_Ƨ=,K%9k]RexzЙ̷ߙeanxd_%g@ɲ>%Դ{Ω֠S̔71=zwSg4aYf~ߐ t>sk(/.(G?` ~ ?_|Ѻ˒^$~,,;eƫm6խ;mY'[$P0)xl|" +|cMo7moo9 /Ȑk}͞>KQ}Ow)ߧ>t;3_O8Ufխ{Q(:C8/.K38,#\A_ Q=s3>y}OQo:?Z/_ݦ *ϼ\?H^P G!්G|-]Kͽ6jR7ed.02>_3ߨ>ʗ̗KzG{s|iW痚綿&Z ' k rE1v|8 w7ڀnw^ȷ|3}n|W?zO=87܀Tds?}7\P/ێϴCW>V t=u%U_K֫ H@o!<"_[|M7cқ7~gls#{(~dK{?Y?gGQ~.qT?'G 6 zߪݺè]eIι 7'nn[M|G>VcS{s<~Ƨo?e=e9O3~7>gO:zs|9go|Qiߒ#HmfQw{?II_SyIb(C &=xx#@וOCѯo/G>zCMZ[_:߭湖uqߪ}i[w3hi7 k\kܦ>K.>eng3/Ǘ?s|/Ӟ{3^ N[QE^&\l!-n s;~59|}t|4Z}F}_+W n4އ^Z7߽)7f50f:}&WZ[Ÿ?ֵF}v&"?-g-ϙ֕_2n,/x~}s{,@{ՎIF#kKEN~w)6@ 0 { MGnroK1״=w>x?2k6L`k~|Ҟg=̗#K{O3_7/s>i|?:ߨgY=~|,;=i6LJduQivg}Η+AO܃[ۡ^􆖛|ծoxN{x:.nDf591#ج(~4ݗcKdKd}88RTuߍgd|+ky׶=tګ>Ȟtߖk~}oX&}4=~x|mKZImW8鎵mG3J9[O~m_&_=~,jG~Oa[onڡG7ċ|ֳ֮mHA6`P._-7vlѯol@ݲʌ-(>#4gQ}dߛ?G/#{zƧ]fQ]MIQr̫9_׳Im!s|>v*ΪmDt>ux@+1Nw,,JTsr tj  5%xJ6"]P k Lo5צ! <uicmPw1G̨ lyp2\PSWX[ݥV֐I9 gw's'vw2;_gw's'vw2;_hk}z>e}mӽ7//@}Am/ !p yvoommOjr#dK֒o873ӞMg^(>ʗߵ3_73=Ǜiu7pyJ8$BImÅ~6ySsr^(/{72f"H58w}y\ԶV?_yc-k5oW=9^ūe)mK2eo~~|ID @x@'ca(K;F_v_ѯRo<^Zz j,esͺm*#e<|{k~-^uY>ku$UFy,GڝZ}6IݗX;9k!b}Nowے0ף/-MOs?*~=-{=6˥1ӿSԧg;'mڗf;Y*+<xMm(P;fZ]n6z&h]RoN궧>Us(~[=gZgz]On_5-Zm.-ݾ&sC-sd\_kKb1_|-&Kҥnt^˥x^"=o˞%ԯt~EuYz9R|{ޖ=u뱨n>kҹ$]6K\%["IOXTni5\/gZ.g-kU/_MWݾeT6s2i,n}h4_tC #a!I}M7n @pFx=_GQ#{/Ӟ/QO=ǗizQ}(ƧȞKg=K??vBtF_כK|RULbkg~gκkk4oou 8!M\(_ړԵg/oTK{}o=#9ﭏ7߻m+'u\oRyrL&$ 5)A@io{xM7z7܀ym(oߵ|Ə[wmks~6=pGo`Y"Juj]rdK>-113`<ߨ[7<)GoI@Q\lg;_6ߵ9Q=|IhS~g;L;]>֫L]u@8^|=F7x7wNo|z]INfUty36TO6iίun]Re^_Ggxk]Reȇ.?ϣ5?]cz]/_U_וڮv3CYFz|S_$\X־$P'JTw{r :x3f& 'O93Σn7bag4ճQӞ>_(^Qii/Gog/os2ݑ$9Y0Io%UN}ϫ/fj8pa&w<ד'SNC{z2;T g1^mu~j߷(c_җC}G﷘iCoT,iSWO@DXOѐts|7yL{]o?r|{?436>z'G̟GQ=K:9O%n۷@pttR?}?c븖0ο-͹${9i 3:Fr8\?>`4?8/ӞOgo|ڟ/f/ T!!mso<77pno?b?{\[\h{zS1YTwzx9Ygjk;ݻ>h>9whPɪ;٧J1UVc[@,ަc9RO/^^mOꓱVuS2ο ]-u5G2{6ɪ?USn[ӭkT>gY}n{SuxO_}YVIeCפ8SuSVo>ۧG=*\/=٧mU=e4v钞ض?՗Oi[wVcmקW+⽯ʯnuF_vhos׎f6IDdE+!9QyuЖ>.Uouc7/?I9jnRYll&Y 1ֱ\mkHkq.:3nk,gvK'6ɪWW{,oo1Em/9H>U?r*>Iֱ#>{'pbdR}~85TsXZx_R2ymU}U}.k.Yէk_9G?0m;'mo7>л[g[֛#~#!gqz?w[nVuxײ)}oW}O~٥?},nqkp/%Ru9v$~((E7ɟmhǿ6x W7cxK\˹֮|nspJDZoizxk(d?Ӟ̗eƏ?;ǓO{3_{l?+\O?Y|nl5nQ[z_7Ջ{MmUcW\-5/xSY̜|ܒɷw4-9G<6-|k[?-f>k7,_m9seoqP=r\H^u''mda]REn ;_cܒZ\M}c<%O6}IwC_#@:,l| u}yUߥ6 !|@ޑT֫L]oiَOk|~kkoptÿy<)p% yUݦ$g;R| Գi}:ʓk˄|ڳbk:EK;/]-k*F|k~촭||\oD.TK_/.(|O;~G!fvUT@% lx|ό+oUJ_:`kh|7|{Ї.0ݶ6ɥY3g=/g9GҞ{FQg=w2?odK{s|Kx}#wҾ6W?M ?%J&0/&@v{bKn)?cͷ7>e=e=ӞU|KKįo?Gs7>ɖ&ݥ݆Xgi?7,U,ӿSo/QsלUw&kU,{%^lԡK}(\.x璬s5Yb+b\Cjw;d՝{o>ǭڇt^$u(R W(޹${9nM>XʃdlwNs}u6>'?}d9?0^:窿؀ZkVJVQ>lN^PsٿUKǣccsjj!]>_~}O#оHNڱdoꪫR?x ELy K7LZR~uY5Z_nw.Ǐd9|#[}Q}n&}Trγ&1Kms?sdXfO{zƻ59ʟF{Ǔ_rGϘru\(BU|G*Η]9W=>grK?վccۚ[\FUk}ŭ:_3_\(dͧE_Guq<'<ιc<[ek2|IU!DO,^B{R߲?]rm!d۪;vk!]q5ӯ樺j[m+kae8[n5GշU>οΠo:gAY_'ͧsu?ky,_۪n{/ۤUm8VRb,g-Ćt}_{ς\5'U_o旟ۤUm8VRb,gνjUϼg~MzQuٖc%u(rKRΥ6K9^c[S=VuEj玱}K;#elٖ2HwH<+ ;b{v|Z @ߎ^ʵsα#7xKvۼ1/m[ZbeK%m z[\[syLKl{M_7:^`k~^lO8tkυڽq?6ZG5I|6Dm0)T.XGZZgFN tMpOH |O?n=|#Fèڳ[5_/t>F_ا/q=KT۪Rj:NO 4eӍY7{Vɪ7FɪkR^\\(?Ŝkw6esZ\W~n[9؜?׷luU_mk16B7b)źJ.jTl.JMRz80I*O6'e9b)ź:}{b]RGq*kΦ&TG}:b)źAz)59}::RVG;oqun_I*=[ԇR_jjRL+wu껔k\璢>TR[WۖbO|W~eŘ߳w]'IRdɪP:w''|s7_;~ZO}SG rorXtVYoK1[-KkY<dcO&g;~KRj--?tkxXLkki5ZcNk3|YqeSZ2oPJy0?aj9w:w}SUF_ny ܽM8)t+_;V_oe))M?܎;ד>tpI֘/ni9gdI?IT~K{eW}Զ9_;:Ӟ{׿!ǶT??l(υt\kmE]1?N=P,uS\sTnN'}j8Cm_o9է[A NP`8:C5z%NQ۶8ro|+ۜʽ{ݷ1_e _Xw=riT_f%}ﳟli[k7H[_vIXI;kqէmҳx:gqX*6k[Vݱ[SSu6Yr>c@,T,'&=c%wLbO_ۤo)Ӵ]mBcZ7]UCmd9էz#Yc>9Uꓽ欺SV轅3sd:uU?qOT}vmU5gT=\>U}$kL:ۡU}לUwYo~ zƫmk8S>U_műcc83^n^s/UŹR#{_5_<٨KB;~[;>ЎOxݞaԦv\GB&xp7O?[dz燃7êVۿU1Uw\m{eQ<էmU}$kLW۪n^YsT}-Ok[mSuն۾WU_S}nVuGTqBl[$BZlU?׺(Pcx^sV}-|SkלUw2}'fo ys^w.k[_O՝Uէz{eQ<էmU=ez^}n?9Կ ?712@՗Tu!v#{Uv!7,I}@Ѝч|m}orU8j[շGwΗr1+bM nuj6 *ku5&-R]YndW_V[R[ݭ{03`\$ēa?` Baޘ chFs0`7I B[];Ω:޵{̬\' ߳+^>pW~bRp:a-WOw^M sEtsk8+)>ھE[@7%\IS|k=s8}O<8jc=$POxH[se[X2>h#/cgi8XlA., , .G7qE(˵R3WIe瘸.S{u)~RcM=)`Ixg9ewzs}\LJK}0JQx>L،/ur{/]~Ґm-Ye߆vq R>}N+㒎[1,)}Ύ[53W?kC_/PߣQ/GEVedPF0 >E.[`Xn\'A7ևg=q.7|wג~YX )˟9p u¹\'=ȑmO9nmg8:Sە_KNq.b ֪2=qϤrι"d2JYp AQi}\H-< FƞMk~#nlpfz:a-x-cO:_s7hmݖ7ݔ)[iu ,7N"m / տy~'E9͗con:1]otWrU<-|$儗ZB+(: cW  ܲ+E9%K.p 7ȂYRHF>_/>7"ɀ]QMqQNxŠ$K$S,8^c\) ,D7t5;O>{c IL ,YpySiM t]Q|}Gm*Xsr<ծ!|-u]<4׉myH ЎZՔ(,,⠃}eΗgR?חe~|9~z8zrs8[͗ͯg߷C?97>@H|~?Pd&rhW o]\|^0F}1B"EGH|dJш/pᚯb8C b|'zsIR , )>X`Wa\rg_^z-lr|Ƕ,86 R]Ǵx|kSj[ jmI\k:x=~>g5ύg@Y0Ǣk[}<3SI ls[`pn$4~ @?PcQs,zd!w^ډ;sGdkNIqQNxqǸq.wg1xr9s<1{M~jg<|Wxa!(:8$& ,3=iCzdDAl Tm4X>_-zlƟ8ܤ_qyt~ouuױtL<%Ls!Onr@7l , ooc0|tչ aęGCMNM=ḯ9^o||׿7l?t}:߾7R>w"s8_0h+㳯8H}.9B:SqX׽}L\{&So|xs:a![d9W\59^[Ͽ*E99X:'9O1is^VYUr&xjg5kz]sHgkz˓Mk̑54BbnJ<XS6_٨2!^m)鱦mQS-cJ1l`k)W>ӴySYo%#ԁn*?%E&p1odJ@_gSI)< =m{Cw{wM?ڏO ty`x#R6ΝmI!ۮ丹ޛ0md+Rzvc2 kuojr] 5Kj:3/&n&V73s?_|gJN!{qyST?{qyST?{qyST?{qySTIXmtaS.nY|! XItCJ/Hk I\),oC1h`! 5hj>QN ZJWE>198}x#^ƛe;t?ǗsY j)*jb5V8wS 5"j>b{ngZ Xq]G<8k\-Ǥ&omȽ<$nnޝĝIeK>l5ݥTx鎭$wsL,#]p[پ:&_{l+LE@'z<6Z7$p>P\5xۨt_Z%X5& {umm v'87|߸gQ"Q8wqܥ+6bˆy`l/">g#AЍ='`f[8s-D|#KݘNR$XH|G_޼swe}2a,E `y}/Cǻ9{C{x^EC{x1gYK_S/K+e¡٥63^w|r^=7{ZNvǏ=Z{9kw Wp>C {Xz<4Gi:w>s2ITK/znNDF;M]FjCǸ&]'LS-мPSIM5ǩ&_|믿>IItܲC㖝%Yz1,/)VH#EICmw=?\'|эZxk^[yX$ |@Pá7ʭ9x1x#"pOsS5 XOxk ߁5\2+HҍxTP0)||]k3~oh0l/ Xogq{Oxk6\4XPr+Os<*eϔ_#-9\9Λa}.CpJnj@W Ϳ[W[BxcZczډ|qjsT l{VCOqo-5i ,7.8[k<ƏɺyֳXH%k9?={ˎAߩ{onCoߋm@IDATY|V 8,2 KC(4;\;15'RUO2Ћp+/a΁/sSob▝ڟ7a}:οwx$׸585Vt}x?p\'Ss}Ύ˟ԉT8[v"ʗ-ܲ{JxHcuNZ~٥x7` h/%o@$oj?@Xզ=yOYEle \-/|a}gf}tAQ" †A&x`Z#v3r }Tc;b=Bj_ߞr/mA14]$o7_s7~B /Pz5aUE9VڟHϪA9-n]P.x[7*7kcI_NZM [(wxw5s8$qR2v'DzE#(HG87>KX$KkjAMqQ_I`'75",έ7?_'wVGlK#2oK}9Cp'ǃ$crG8'R[ GCC@nM: Zm-=k)⸏ܦ&9ë JAb>Ǔ Z?}Ύ3>gy*[@ZZ}9*+.)$~ST_g}vuOIjY(gU_PA;\6͗9!u"7o>dnlsc^9il` Lhrvq \CNBԃzOnn#u˗\Odiy\{޲Z=g_}ZyW7W1H _9VkM':<<ݱxy}};W'7q(-ίU92kB}WsvHmCn/Go=$p]>fUSӹ߂8+.|ވq$8pH ^ұs>1z-8n=q=㖿ss8Sq9[zxn|Zm,l(Ypؐ#JF/g$dO)F ]c L1_p8J,d1OmgY/Uwn E7g?R x8φn8ǹC^k?6I]qQ5T֝KH}m0}wJoiHta]yte6NCj:l[`pg$ }Iφ/7[3 ]-6I5Ǻ(~+/zT;b*X/},=6Do6B'"T ۡ9q.y>6P Fd~C.mo;6c_g{TePܯ\ W-{J/|9~*unÿ1%Lo'nm/?_m׿78⧐xizu-O__v5p<__1KG81cK*xj]>'1cKՃ>XC]>ѵjEU)콦Xc4zշ p*V%zjsܦśkgț8mۻ¢S0 ʙ?^$p]#pȂT쯱w8%@4p˞ 83|{.kG##&@E5`Iu }MWix#ٮaiĆAL`I磞9rs͗7}zH]wUn93c?n[mQo|[ 9JhL_ca_xWV/yVM^eAwƚe{ՙ?7^߳g5]{s=֙?7^߳g]gz0g{-0,B(-<,e0`6HDžWG,`@6)$ 6)$cK %E26Hs[?Gjo5nhz{G>PjY#Ui&C/H2gH7yOq{'t4|d/%O͗xpO1zsܭxn{',/7 !?~K}\A94yŶ+ô2 *1Xһ.KXoh},yK駟~7.-8F|7ɋeq'kl`dWwF ={-'s jc\swgd9^us,#7.EƘF4R邪42 F ]yEp=~|V* Y"{rAu]oKxqk~ @'->x@IB,_vu<_u9%Vlņ̾ {lW\tI?mņu)~ c.C籉Wm&ַud/"5p?FY^5Cuj8BM\+t]qh|UvpM͍^1ћM7r c,cMۊ5|>gLJʟd;y3w*ΗEff~sv|9_Oy>S#k6G\|j,8H}Fvx)r)ژ#@s(':M`@= pyH1Ϲ8}E&}sExY -v=SE !N={/qXbS T9Xeܫg!{Oޗ/S<1X" $o;c:C"d3-3䪼(Z+lX:Ț9Aw߻Zqi!gq&_8r㖽'x_Kzͭ\gcMsezWS{^|zOC'nF[n]Қ>_m~ :(a@,o`P?&7krm mP:ck E -ɦ|!Gt\ J:֨P:^J:sv=]=V!/y78COhg>g0|;ƞ.?ylacx>gسz[W=smS渭1%$s[ysv|Sww/ 2y ,7vtu%^~chkӳv]PNt[:)IrpncY:1< :&5^o޳է$"f2{c6K?T߉|0n }W|mo;s}|ݳw%ыuvrSWgՔɃzmzz^=s.ȳ<$o}pz;:f5}1҃%?7~7X$;1|9~jktܪ91S^Vq utcs}tڕ>0O  (Kt=K8yt<.̝c\nggؑn|vmuұO1r9ώkv"ݣssJRpl|b%ٱb]Db:aXZs:xJlgzPM \[uuj=շXViG #K.So@S.d#ZhM/Jv%05 lٗO.d7ne:<۾uS{%&@2o$<$<$<$spyüS'=c\{y>cƷmy߇7.3_ǟhߑSsSwcY/;u89%q-WM9ucY2WTUu>pm[m_M\zs}8{/o|֛볩87d<g{[7\^z[Tz5|֣$r$vù"8w K >cl͖Ȣ$@ ĒuQ8q!k| XґO|5b?KqyeK)| $k]p׸5sQ4=4v{T=oҨI:.ʈmpCkJ)< 4g捔=7|%S'RuQ㖝y 5gs|%e)h`x9߫/|QKlv^h-nK%p'im,z$⏮v3@I  9gXCǟw:x=~s:x=~Ͼ˜\z#$Kl/LcGǥh<6 eZ FͲy>  %)_\\N8wnl b0,GM򓽿o/̋}U_koO#Ip }K" N$5&t]cct9EXyZ'/ē0Yb\40Oztp\*cc00^aju:[q u¹9_^v^lNe۶^}=~3oz.~-@ ?տydou[v-U2ayF_oXxWFt'Rw&SmRΔś̿},-_@gXx|8Ņqdžeie&=3`/HEbZ聶_ .R~slH*&=3`O?|2Cq@?Uxq?ʍmo?/6$z7gy3|ŞjȌ+x7\\y,=u}ϗ5aw?=$DFׁܴ<l9>.cg - ťoXmgMW_-GhQt ugŇ8;G׈=տs=OH8ƞs{][߳瘙O\dg.?/7Fzr|xOmYZ=9xzq

mR9lI[Xs;W%^YRmKW1IMk΍7sv<236r1L13BF1!,=:8Hܾޣkl{NPgyz'ǻک{8.}Ύ̍ vDCc/5628E)'K:&Dq<pDk q5 [o+ :ocI:qk>ڜ|6x_u璎[9zy!㖽UGKO|ΎwSeosv\zZ@=$P ء}G|&Grqe\X2>h#/cgiv[@jM)/X]#lO< I0wA1dˮ6es~@Е̜ %:+,I\sExH9TRs:4ȍ\j Gj!,9\eɍX?7qc=>[~EM|)\:u8n7m@=K7vxHୱݗ+_xuvlYΙ{E}֣MɯDD4z=sW^ye\,|Ѭ9*{9fg{|IG߳[2kZZ>h?{v 3}K|-^K_'?g~Ndoɜm!ج*'u\a%{YAbn?ҭcG{UKN#_j)1*c'_&X?>n ~8KDR&]ӏ<*XVîW\:Z-6=bx`JGA߳+sun_l_?{vő.KzHO?QGö<$pJ&?]oBg+C ]eg gɷX$xI#cW9kI!cnjşVr>"}Ύ/_}[@GK]UZDFHvtŠŗQGi8HhHQKmNXÞ+E:.z=ZRk@yЕS+3\4HhHQK~9VB_K}QRuQ hnǪS{eMeiiҩv[Py#V',À,sWϔ9U\VyS'(=:qNJm\rvB^9y@͓ uٵ_~ 13Ϭ^=08qS ?Ax9~gd/~ϭ'ǻ|y;{/Mf1 L. (Kֺ3gg醮PW_6*0 |%|>:?zv'#31y_M>_VcMv]+nKW6!5lW&Xvr{O~TS Gղ9!>K /m-p{;T|\A^K^R9?x㍕nXK:n9:q{ =C=V|8n{zw(t܊-~O1e[=,;H8 A pXaЗt,ZipbG[bc>!SRCz#xFC*CuI;6wٲ.2ri/rXn`Gs Tmsύ|/_Eo6= E  R#`Y:G8k|9ES@qBZ\巵;;7K$-_.S+՟?~wP{7cc Qx!.rnl!n{L8.p'r/8^, ~m^XKiwx>j}szZFo9߾|Ί\ءPVK,>~pi^{ճ>qↀ c쑣%w8v6L-M<5M a5p/GX5nM˯zWyh=~/?j|k|ģX^㜯w_Z~5bv3R>`|8:psù=~5x|w׏_8~n\6JKlN؏a߷tù&} 51 mĞ/k;$ՒsL,^}9^/?~Gj:,Yp}rUna4Ÿ?^Ly`,0 `d1t's~@vxH2',m3o;gvWcg:m;\ZR|’[vxHF㪤ZpÆ\ | /ƥARK8vc.Ḯ9ǚ߭%6%s;ROS3p,s66y ?}oX?e9 osrbw)2kf.^;]V=82Cܖ/> vu" TWCz,gǀc|ǭxqGǸ& 5SAu}fBg-2j,FcBd+<Qjs| Ńb 6Mz'LJ KP"E(,1`I5հ-POu2o&Q"x)G|?_ǟZcBԯz>vFz%|_b%fZB,œWR@a#j+B2oܕGoP|X5$.RR ѥ8m&/b"R14d;<\~/eGG .I>$sr)_sw*WS8]'[+E[n) |;ޱsf6ZַuƌtiV>VZ-2a,u:.1Xͦo@t0{ނ(z]{*sp߳f5ZsL>9ƞrQcx5b{vլ&Yu:سT.jr u½FϮ$kcסy)ЙX=lVyR4_C,[RȭzTr%c8En߯ w}g|ϚGu{8y2ז}+G^e/u0}^p)\LZouٮwŃccL-ثv"{/{z{μ " ܺS7 3פ d c}@P _t8n-P=zRu>¹ꗝ\ιaH|O\tCbc/=:u_<-Ǔ:ҡGN _1Ws:/Ԗ]͘bJWEu5zjӽ$Qxp("$YM,?EY>Gl -#tŽDB|S?ctueИYG}џ[ &5:sO)ct̚44Qt ld?7刀K@$QxwDyamt<58uœKZWt<$91^-> rPR;is$z|_m*0p8ɾXnT6QqrI.'~1t%׾ņ.@wŅ9#k&jZ=|"s=s9_x9\72דCf~?s߳3d'LJo8N6v  MR1p֛iĖ%t&?-0 ?PO/Wsljj+aa؟?2]U{Ys(daFVQRXC.rs\p+C&!FY^nitAW/lzj-.ï%=?8ns1[`pGͪ:m駟^j6RjZ(X0E99{qy#Ç.g_y^Xn#v/t~ssm&ÿa-(ȂZʵI[ $@~`2`9s~YM}#م"YjR'~_7/H͕vKI"YҞ~HdI6pS2om7maLb<7.$\t=9E9;u0zȃ|>gٖO O. [ ?hP#Ib_ JԳd Ń96j옼9qq=K8:ṍZ9;&oG\xpc9Nxn|Ύɛ)سtcxޥ|N| ea]Kr!<nx=KN(l<]a>OO}۪9IArl _Hׇ~,Dj+ݰUޢLv·9q+sw]/1s<`TW\u[vq>s$|dGW˃MR]q _9n.~̑zH}ݷz׻޵C/0oT/1+ě{\65NqYlSn|>HέO^`;bM1v&LZ^!%_911\'kjg{Ok5lKk!cIq넩'j{ Ń-;mR+b:`VJ0:^vɂO%PAJ1FJ2@ Rx~.+N;D܇QQ7#j]b/a[?{-sjuY?eL\|jss)6԰<&.RVo{,0r[#.kr# 5bU֝b ?Kl˗Պߋ5:\\erAeEh>C_qj, e_o<7!Ka_t4b'c*ζxùS ;?Kc'cI pǧPesv|O!)v@#?C%Yxbqv <>^kcЃ%G1姣7@"xc8>Wz 0+ɿ"!ݗsܲS[9q#_ov`#NHeSssgNx4}Vv is_=>scYrm%sjB¬+"GR>R=yQc#l-=c1zB2g59u._H 7il{уg DM]-^edڔebͼHK[>@'1֍o<_WY GY]'fq:ǻ%YO6L=s|^cqܨ?KŀS'svL>9n{s]5I:BQ#vVZ'=:ssjvzXAptI-;8HNa=R 6=_?Kl4й`u9m5:& .\xRNX툔jWMsScY\묻H1U1j]1| ȍOOX:HE}Y:OktZ7sQ_ΩcOktZ7sQ_@mi3Ng_R s|kcSniL,]l^mg-?b ,^ ͖p䀇~t_0ou\v]k:vBݷ(Eң)xiX⃑9Ni}Q jroO ko<_?nxfsyɗ( (xiV3v U[k~m]qS\z9pSn?2x=>\zsL|#ă[ϹZnd09F1bԊ^ *fUOdV;5\E 5A*\ԛǮ'Gv[b!8v{LrT\8p?b.sM9>u!{M᜜.sM9>Fꛒ99_/\皂s|̡^r*:pA J0,ݸ:M jxK@dw)xe/R>S`p('q}#Kq!}9SME/1[ŸO. q_%FAÆD%,|xe/_.A:nǼcoJtJ g&bR]T#6y{{uxԁӋ߳|ss3od^}|gC_1ջ[^i5Ht݊յl [/]ܛ G #m5 3$ #Ϣ7th,JY@tpnOvtºc]\j⇔X֝#[Zlx:e8>=rq4?ӭz1mĕn<{(< 1p%L@?CW%F): IboDW,]~+^`]A*On$ oWQGnwD1:N rgӱ6~:ϯC' Wұlj9!dvv:1*8n.~ĆOg;g=cgb:6.YEz(N2r!ɋT_6<絶ZO^t~.hEvW~´c8bCf>~-O\{|\:{|Z,yK|AΕZ׬ǯ%{"辊CVrbﱢ~Hԗeޞ}nk-t>j^S\|ƟZxsh!>J0?zHOE(jYA94xu on"Xs@ 7z=_}tsZ|XZ<&=c|\'53o|2up%Րߋ9MzNNZ?|9و ҩu½1:aj/eG\e#&<$_VʍmΊՀm*ts3?ݑ'VD|e|AyƟ-w`·;U9w>s5o]r;5^߳j>7^߳ysxng߷}s9_zH{!yp85)]pA8s-T׋OȹC[濹e#7Q^-D@p߸5N^+GnIǃp܌3x5:ne5U\|~6x 1.6$\jTNa[vŦNau4^zŃ6 S= xmsGr` wnggxGt vuWV ~s7s:^>pg\>sFͮk"qy#\OM|[8ۺC lb my!q0TIDzeqk70e+\7tp6d XR@>V52^J:ƞš߃J|_)4}%BM>݇y#k|s>(|F>0e+\7tp6d XR@>V52^J:ƞš#H gR [U1-iD{*jϵͶ5mo5;(=:8.Cm{w1G~g?ǣjuݫ ^edz'ɿjK>[`}F:OmQ,pK/ ':z+) NX hNfp5QhbZR1z=pUs|_n5c{|VVgk]|8+a,1z=>Gd‹,{O$T@[C6ZW7"6A6TI.gQoC½8&iX\xBxҿyS2o>?_L8#"?Stt%v6e 'YjNR] ):k 9W5tԉ{/;:j9?Sh@>QJ:͹y81:?PM^ٱlΕo9q+s=r=|{/;:nVq6r3&r0$էkd-k):LJϕq+sߊs:>Wz ǭ8q|(~+z\1!z׻VoۗݨH 6s"X~t) }gmW_}uSOm scxsܲcx ?!][^|xY:1<9n&,CسtcxΝ\-\;qIi`P{Yoً/>||%k]cM%V|Ŕ&\v~*#ˋ?9c?^ yXuI a5|?<$ɭ4.O.3^g6tc|J1vqܲSxsFW]vQ#(^Wf]_NR~Wj;VMT-e ,[8[&ʣ[Z1tTk)Cq[}_Vng7jnOSm#N.z#U}ۓ~7|CK\lf%3k|9xqs9xz8fn}s=ygz^X+dnFק:hzasjGG~ҮYk,}렧F#V?^|ճ>a\M^]Kww~^]z ǻƻh?y=]]Ȱba RNM-lo(8QP`0_o nC2a8?yI|.Uǿe7->t"Яcb =1(fAe/ð(i&7(2 9;ZOW P Þ).h${LrVmz|ygS'R|8wV<1{1,s|D'Nۊ5:&vc8ƞeOHdX |wQ iN+T NvZMr7'p*,5EGcP_Wy=o?ےZdt _iى]m%㖝:=;q=~%}Ύ+/1ԉķىïI;k G ҶV5VpQ6IuXjV*^A0S?sf4p|5_[/ęvoM-I/~W%@Es`RڦÕt<ownwJL-}J/S7Rx[q[}eF*/V =܋>|H8w:MB||\w8f^Ica\#D7՜*5ɋ亜Zkt\s;o+uOIF:ENۊXsrI:&F5:9Ʈ9o+^ PR5 %W NmK=9rk)::uo_ĿHmQ;rڥ|Jߋ([q+Dml9l&csq+I!Q^a_kugw { DzAN1s\9=cj _Iu sy9._ztñl|Ss̹<q/=:aXZWR]>HCwwF.]%Uzm9C'Z^qpҫI }HH__DoA9M+k斬NXw [R |QJ{T]T=oï FX 7tev8tЭ5^=[4&2# @ldGs?wj!hoei_wF K(7gx:ڡmя24i{$%ղοx-5캍`|e3@-6>#=TW6jöWmnFzxlT{~5 uQ%G9\hC ˟l`ҳ Z{+KL: ʺXH/GO^{Ĺ Yq+8$k]~pj1<cu5rO{ k=7tN-p\z,#5t^cRKk\E|=589Y7Z2J 7tjȍA G1C.kxq&5BE`rT.pW> ^|&Yb \%Ha5/0zOjȍAsoC:? ߠ ͻ_p\kx‡j;&>'OK:^sv on|<>g'OK:^sv on)7MGydu뭷f&sɌIdpiK[s‘E0c˭]P-%5K:6f Xpc93ss_cߏ ?n8ZR4@pbRGt.ES!ESbW_Iq;ȂCiKKK\,=^F)r\O 8r,D>du!>7E#j) R>H,%`S+,clS8wʘH81!wbf|͖eC UzqN(N/٥ cT+ {2 8%H W *&&psAhrC˟֪{[o[˚]v ۣ?_H8vӯq5[tldz7Y;af"`Z㐺^\^?{˿Wo/~gcۮ:mF7f_[W?rp"9E@rG;KaV-zaEoY/i."|˝com2z [q| n<89c8ߊ[,wyǦV0-:ǝӔhԢh&p8V=Z4D@/^9 'ZA&gQ|ȟyTFep7A P=gJ> z&?O&Ľ(Zhx&;pgr궡-T.U; @/^9 'Z E"UЉŊZs=ʮV| +c+/(9:x0==8hO.*H/.W^%LN2 <'Ge*ē_#\OÓ >wG?UƹT!*{<+Jx-w-@)~/= #r*2@*Й+LXT^|Zɟ Frd`l8esv.~=}]? Fo|'̡-}ϿV{;B!, #aRm$LGO.c~وWZUWt'b0OU?tV,ƶ1ҟh7kNe.D ov͇.kX%J>EΞ?:3|!pMN:d;/ηrw-Uo7uz3t ӣ3oQajN gSZnit֖ 9(ȸG.>QE_MDz쳇z]J.蜪QzpYMuN@8KTCCKq* 3]|~ԟۈW'̝Cx}Ju-:>{Ϲ9a?CLmß/|c\|woϟ"1ȧ'@q}ΥwsџSG:덵)ZCwlz{B`:t,=ΏiӧQ=e^.CJ/,)V~?Bղo<%V~N>4/k?2mlJy7m<řb֖lꂟ*ɨOo}rPs`C9xr/:M-K L e{ui>Rx?yz=<dƋ,>8^9٩̵'渭lUrigj{ž\U!h^;qP"*ڳ]/-n /wGH\UVgŸ˝Cyi[з{?E哢X*v {<Ό%a}G%1 : Hkː֪ƽ8E1ֿ|QK9E&Qq_oE=~:\~R?sg[g[rK{o{oQZPȥ5LJM20' Yii(qc!{s+^~[vT|A?toSͅ@*^AFwDž乔sDn~ w8_𬧲ֵb}u{EF*x;O/o/] -/zں+u>g3cGߣkuj]>2sA'|v3uj+ϙ6PծM;Qhv ]5Z^}ގdr/ St߄2t?c:O9?WEݧ-yzp->o-eՃ@hV7:P@V&Ul(D ?"~ @-%DU8h[*%T|7P狓Y1? ^1[f+V 6WLG'ep5-ee049 ^!Upܹf]ϭh#)5_pƫz"(jρ:_bV-r#R  Kx|(BC-EU9nF{e|A0&B*)\DQ>gp?.OnK7ȯ s~s'4x|Hu܈/920S}z.-=qrOok+_h9o3>joUw^jӣEFՅ~hmUlG\֊-] t_˝5Q@..JOϸϣ:°Jl^m/ٟtȜ8898^yTl\f'Z>;O=?pIyT J xjgy[G7,%g w'Zu<`7vArpΣ1~S^3._o-H\'5_*浕Gkc9Gzp;OoCoη-]jO~Cۢe#E+5W۫bxZH⥃ */K`OGyժVj5䢵VCܙ +?0hUz"_ 8%YvJ4P Zn /QYgC])z ωCe{*{ߖPٞ {z5o[".u-L9J^Z۸^#Z\K/Jɩ_ǻv;~\ u€ g ^r|"yΓ˜G> Yq%Ǘ92&z)X5z-VUHB&xa*L@b+cJl\<ѻMs%:ěOe3X+tC_䗩p`{aT_e8E@ËX~Oܬ8m@<.!rͿ &PELء>H7􇾉֪p`\b9:mQ:@*}Z`.s}yxtlsϥgɑwKW+؊:>\c8%G&}8/]`+* Ru/%vog;t>caׁ30_&>䲬W1G@oxdD"_z(nAV'?k^l[hOQPak|Mؖ>uηKe|n98Y-M̱--MPk˲܎sj\RxQHmF ZL]3T$GA|b[\.wUWw oPT椌wO˿,)^ub~)~{q=XLǵ;_љ3]'w}fYBWrgwْXNJDžN/|kv-/e+9|[dxdN<翦j|H5 A(ŅV r]xюDgxQٞmYoԜ<1-L-PJ-rѩʅ?7sۢQEO}jW {nj sYI(7Ua{e|/g}2z{>^~6<X(XZ-g=qg;;WQ [djx| +Z+Gg=ߏG?R˿dsxg8n̝ցz|>ǵ½QA瑵ho 8=|m@'.m@'.m@'.__/~:j]PiJFmպ }9pY) sTYDo^oWi"loY,بS'Z~dݜ66z <>|2MicKlCS'Z~d]m}#`Mrq›9 oXY)8M A =#09H͓|\ھ#q;gK,cUz҄ |6~=|q'[NI/Џ`1Utmsl}011E qs*[,</0-*3tm=[LT]P4@ hbL !cKZ'vpBu`-wXkK^Tۢ63ZlL?N4~!aپs^;o:l8E ݇ Z0!.5x  St-|Wr ٘o‹ot_Vd6ˍ}_#z+=b[@}Mxltt{h_gçx%^¹}K=s쐉wK2:%_r=2E\[t!@O|\'%]_O.//۷|d2N_o7R)~ ;ڇ% ?#^|,^qe;'1U^7kV `al\?+링ZzVpٶ :+/C~:/t_Ȣv]5r1)}{?p; 6SXx]>ɗ}K'WOQ_Š}K NЌ?]sZljsy:F|iTa///ߌWdg?#Wݲ__룜9%vYV7PpgYu6E&&pxZBw|m)@ Mh1N7x-|C!hU`5n_^1S2^rd`Uǃo=ۂ v.s,S|ƻL|./!S٫MO,Qۊ Nщ/Ne6Lփfeɕscn+j\&WݧعL<#s,m%SqY͟t;'W2^zd^:|bTс0%T4:ʥ /<ޠ>*%@ OR9%+x+d ^TUb0EU2G}MP φZnKz)k^u *bhI&Zx)Zn#_2^lns%>y(Ea:E{%%fSs>vc;4l7=?u}zQMZŎU4PI/ 4[˵;ͽӆQ?.~34ޡ'P߱e}hŰU Zte[p.GWh@5]ଧZӹ=xЗ T7Cl,MMqR߆!i8(b=K|l=K|l=K|l+;0v:L5ctcH=;Txa+,7qJxf~ 8ᱏU[e1zLT(_o5/c62GUmho^jKgRykgvG\=m컫x҂u⽀uٍ7~ Oց^ Q9ꛣV~S p]wU!K7>kOR;پl/k/xeO6n[z+g~xs+R0RFTtNIᶎpr|rއs'vե#`*7^TVxLLX/qM_#r%O_!hd}mo" ӊ-]._;&Y[VOv-_wL>˷dٟ$[lWlg}oTg>a uzo; 0Q 3g<9WTX0T>WOuIF߃o@omo`P0NSk2@𮃇y\ T_9>WQtȊ ^j.sL9N]uU Ɍ60[hgX-+5-<1Qp7vAz2 vc4ޮ{n+N~st5 ؎qg{tP[>ensCGs] :cJ5&klkl_uY3G_|?mDr}z Ls-V'Bm-`ABu^xoE>2. :哟 _Bd!|Bt~p!>W9<8?Ts~9qƒqu*9P-}p[G G5|rdEߣn|17\:߀= ]<53q=#pﳛ/b_1 mDE-_Ώ1eΣQqex3|#>**ӉK4Nߩ_;&w:sƩ=Q9"&z8(]bE80's z7D>5Z>)up`^RSW<9^/gK?YShEQoڡ` tLسQ$u?g-!idр-|@w*|_F@/~x'b\\L1/ιηλ}~yy=ҩWyy>|;/aE-]?e{6Wƣ8(r] idDsE0+TߎwGWj=lJl6Up:7C6Jaz9%R*k/N;aƄeSnw֖̋ 9dEۢ6>%'[Qy=6{UFe==ٞ[T>㯇p'Wi?zl53_`7/Z ӅF# ^cÀUU:tpUg\,v]tiWd /n)1k1e==^*|Xg{h}f=|ힿ>./?o'2¡;&8%YYM%Ka!#-=< ~oW!hџކLɖOQ)?k*}8˜G[~Wf^-m7kUq<T_$[ޟQ婧<#W^N9y X]6:ɸ-9<7x˻-_˝7y2΄/Z k:gVrx`k9֜B+Ϫ^5\1Χ篧ig5֝:Kՠ;jKn\^kYp<7Z{n# 8D;ࣻ^8YΩ\{{yeѢz>_r;ky/{Ƨ-˯OoIx[ma]Ff 2[zb {ķ|GQʓӏ>z,6pgYEy] /Ы+/ys/9:ԾP}/PCzz{{N.zlCծUp="2ib2)*+- +0Y5S*,(yQ{q|A%dA)>[@œd3vL|?Kks5){o ;؆IWQ#~-xX_{kwcv:#ΏrsCen⯼C .Rt?Ko#^|-`Ԧm,gi)s ^rHUz衍- U9C: &r#&zpPQxDY^󿝕㿲Dmk8Z^_ 12=k2 sw u_ m8g2uo(y@'L#>/Ȳo+q|'(?_kr8> -N1Ni7foj_{4鑁wV]l5lM6΃Py]&>W8esv.~-  Ʊ7YsW7xG5q2^9J&:'lsv/>x(|=d{=>r\k迉FnkK ]$?۲ N&V[jt覓xoDΨO|bswo뮢g# H 9#jAxPB%w>9Vf_ /9ē'e}-^YC7%G%OgZ?R_09.޸ xnG`|=PRC  (7%*QKs%Z! R>^[ED[Ffߥ Ik*^k Zh@YP%4ET_mb* 9}!۪(9TNEnR'ZdA7TE zU\Y_V|y_cqso }Z ȠT2 N,z,$ :ɲ?IPV hƋoηLSLjUx0gmLj|ϵ{OƓTx0Σ1{Y] g_hg)>Ǜ.o!~h"[TU:P"*`K b`*G }l]eݹ|l}ۧ[ܬow[ǦUl֨؃.4`ճ?o 2M.߫ {髨+h-{?9~E}ȳlB3⽝6]ݬPu9%;88D,t[Iz:Y}?rơ79F|d%^[QB7c1xY&{l %.mKB %.T\MEJ\(8'xqąJ\pNVlkUmex: VF l|0Κ&+Z] +/y)eyc:>/bdk>Z =V{J[.-`WLĖ[|LQb?8Х {O\Oş%3]ܰW<ĕ?[|LQb?8Х P.\m9FSkkgjA3?X]bj+#2ݡ`ߦ? jv? 76[st5v>_rh9T\\ 5FŽv;Iѹ5U'k>9-r/6p0hsI_4 W_8Y:'C~^_g\dZr]yQQ_&56nD:?2Ӌ?UT+]F%'1Ahs+\.x(VK-ydUSf(ep}{b\[Z=65LVMy.s}\eyp.sfI!v_Oߋ=/>U8P9?An zoڝ/FlR  =~2їKP[z"|J6WpRh #pO|OCGk*p|Zµַ*-ֱE( sdK5ghL׊'998R_{^lm9 }>鳿j{]Ծ_whl}w]Ϋv[}8˜Gկz NGټ/v%v]!N{ۯK\\r y-)#R gV[ZՁ#{Um~*Zͧ?^ t~Kڴ!]I~h'4[x[|Z>3L9f{lZq7) ~ry.}nOP+ < 6|Ɨ\CYGo֨mįj[:x ^{|9,4:v_[Uz(Ь5D}eS%C/ccK tdc+Z+?3?-s?|C^zSH'Z/\[95`Y9/7!+-|v2*CzhFm?ZeFC/}K6Tm0*X,4FmހC&뵗؂z/ܖrY+^k{X5|ݖ/9I ~~9s0RAKwl+~{J[_=tO,s'b:DNwvsS[w!O9=ɞ#P7NڸgYke/f9m+aelyd [GCv5ZK7֍b^`ĖB*[57aoxH-\S+fQVXZՁ/e##QV#e'?_ke,1TMzހ-Q@DE(Y? C..%<3|\FlHn+6"%'V/lYљF{op*lۻ3) ۄJ_z5k{w:/ځ_Zh>_+d -Z_ko|{>]?_5=Os]{Z_k%q[;tT |;|kDaAg.9"_6P*Fm]--bǢ OMpM0`[=}v[ɇ|CssAkЉo} AGnjS/Ouh9p⢣*n텲d0d`/Q ;}-|$Dv}S_e2_-95v%=j<fwm?TާH㻣 Ȅo铿n+&E=mS綬2jy~Ck zvv=?vG=J|ضh/^q!,h?K{K_vy.οTG>2:u"U]ⶅ6TRME&洱%NSi-?lnN = O>&mmT ð_=7?8oro\A!ſ{Q5;}o^n2F<v-=Y 4yfd /:d|~=|֫s/92‹)_h_r_aZb.Gvڶ3d4? _5dn}I`/J1Ϳ߯Vu36_ >E?2xbio?lڧ%E1R|_ЬAk,[]ڟVnS9KK#7h֫:xh e=G"|>q{pu^)ߢ7 ="}}mB`i6'dEPy ̐C;u<\ZyKmx˜w^\=v ~ C?le9ڶv^K<4`L,| [&ȹOE~:Ά/}̼Cokh*.+'+o*OkӋG:,J8Y~2z_޳ :arIJQ?rn뾮<#Gr"ʵ9,xnW9/R|wN|yq&T XTॗ ؖ=au~Xc_ԆoA_s|_49FGokhiA4<'u>{O<|,nq<|jI.X|}}Kh~پ>ujRe}z|N]otxov rےs@W+oDgyfկ~xz鳿/^>===W_Wn׼@zVGt=ũhpl_Gnv0Fs{*gnݙJzk"g{(zks}-з34 r}WB]&~Nb;8BBnǹ>o:/h?Q Se#X5Z%K5]d9^q=ye>s_˖/秶.y{^ugGie&K=K7t}/^qGv}VzଦF&s1ZUʧwDѨOn~W~Wl*w(gBeR]xl;B_-JQ%n#*[Nm;CPE{'$vP@N1 D!ā{6yϙ}q'bxvgx#&ۅi,0J=#v^]qG^zJ3E'2|<3}o ;u4ċC/<y/>؂G%F'Q4KNL`Z47v=<@/Oɾȑ\mlm"8sc6#7; jʅ%7ϭEwus ?Qmfyp7׵sף\.y3u9(Yk#7u$K7 . `d[MtK#^\U_f<\Or`/l디/ r1B7*&2W:>ʾZ#P?I[R< ,1i;<ةx.sAY'T~ۺG>M.œT>"_7f:%dpѽs|ց{[ oԮUnp?E~F%/yɸiyA&929U"7Ua}g}{zW=}/;Rڋ/ܹ|CVT-yփ˴[Y=j `' (teŹ}Evշ!BHVJ$t|=@ˈ?rC[S Հw_r3񯻥`oѯ5D)/nX~[jXYs\/&+ݗn>;` ^"8/_`OQ l-n˞F^};_eOvG-|#;1>oo UW=?r͕ Qxӛ4nyx6_DxtS-J\΃JGLUoP__'\Cɑ1ݢ-\Koa:C!aTo[&%S뿸 }0\t@[x ͽ{م X[]}goO>>VK_K<qn74GMY}<6Cue|&^8/^*ӃxbAK/zBCĂz'. KR?[0|ϔ_o܂j̀O/D7[cO~l@/z>8|rP )8h5?9tefu\|m@=s<N6q9>rR}f}n#NyϿ89)W:#͕:7=hK๨Z`__R=|O]5سr6΃mK7UJVԶ0ltPRʅ@ w4 0,eRl%ʇBeg|'uNP9<%W+^\??n>Xo/ |GEF'zCeg|'0b}/{{({-{?ήo\ȫv0 xGͨZ_]wų|^ <4עΉU|擾Jj.N>t: ~B{yiC]l~)Z%ń--_/h`nF65&+H)#ٻd?_KOnφ䕬5 U4#mj|M <F_xn7;)oךLv0'F+92K6UzK9y@^R}OK ]_@L@׼ާ\XN6\@#6vh*9hVے{zFM'd@>`ɨS +'hx`{_l?'c"8PtОG/| G}q򥏒6.s{k<ftG#Кz-grGs"S]NBZKlD96;XO+6=0֢*ywYyOS65]Ϟ}P})#v>s>ٟ^e7YuK;c]ЉzPx&A~sj{6}kw~': -hpb |fJmbGM~?ק|ssk 92ښ^0o<mv2NJΗP: PsU^| *=/ո +jC9֯EN߻j1hok  L_t>ǿ1kmߟٗ ƻ ?PC{m*_@72n2bA]/qt?Owɗ8P :_? ~c`[|n_r #=km鐋NU. zǣV?K/ Y[ |'= |f)?Х|{4^? ~4EA2 .Wiq[ xlj@3߳^z}g.lg}xUQ*Ӳ=ap-/>e2d߽ЇUn UoWR>L)'!8C N*ꯏI@.J\VE2|Us]-O?敯l#ڹP 4<"쐉 ~S)ek>]_tzi,89kQlJf^"xD|r({h9q? /|9/ CqC6s,z_Ec1g+_Y0āJ|/uѿ_ʪ3*O%~ő԰KuCF.н|Y+^acJnc6>9v*xI/hxpеC:]u65TJ)PŷYy|xh}*ҩ@3_76XT԰Uy濈@/O@_b,3Fw#J֫:p&FբO:q<'تf{3)'ˠ*F{/9eח}?}|9xM!8cd cǃ7tbܷ z*q/Q|eXŷ3pT!NL%(+O?^F})2uS\xPng#81^S럹Θ#=ه% (:ѢO'0w&%n 8h?_x9rw܋ࡽA!pk|RWEg['FoGUC L0|nXI91 cV[Z^OGc ͗eU}jcdS:щRG֢]1 ω?ަ‹]'VN.+Z+90SN#8 rq=G ~mбT.dX!w +-_>ݩD J|Uq?u',2Ox)+! x=-~znԫjϴ^$ckW( -{%~?VaAq>hϗ~&X/Tg_Ư}>ݾ78](Di34E! ?GMz/ ?{:&ν}'W.ּHMwF}AjS/G]dWƀjd]h`ЇEZn*9xЬOOЖ^d>jؚlQ߀xtВXPEUdWdm#D{&3 805&:rh<ϼCo)n:-?笞mߛc}6-4CӖxz.6zm@wg%'EQ퟾BKs>v~9WMقo/b>^T2o;ϣPķY{|xh^" 4Ey_n ?iN)gLb支 P_tS@R-WOMؚ}\h]?r F#QV˃>y'6_e_y'm% xCٟ.}L量OM>r[&ٓ`jm#;΃kcӊ|Iߋ3̟ 4%㛹c3OcwB\g [TEs0P;sGcӊ3s2۲鉉9x5J_94^Ͼ>x~CNJ?4^Ͼ>x~C1 'NwFٜ!M}~N\yΟ}\W{O"_:* g6onx7ioÖ΋6>6QKxlc{zhW[4/ӧ ,8wPyNվ=!=E~*,:bCrnuy)Sqk Mw]NAv̹7aoōFe|Ϸ̹=}Χ^/]]SE+2aEU/vv~Bb?uN^_tCz ALtꂟQaQdFJqpx,69,O?OQ ~]}􃓙xd,c8d1oՀa #_%'!>mJ<tθW,wZ_=1' / %h)Ipێ*: 4jRՊ+v>w-ɧCz{CCk>DxtFT2gʣPŷYy|xh߲WN/x^ ɲ_[? ]pWW5?:3%-Os08`D:x\KOEy@~o|cڅ*}nEUB]&>p-Z;!g9} ^''!xQ#>IO|@T (kl4s "8q2/𢵂J+j~}@q(AĜHf#)U]įwYx @7r9t|:/@3_ ^|%r ᥟ* |]gnY?՛ھM7zs@],ꉀy_|N.x_2xnpZ_.([EsљCɸ^C9]+_32a$w`WAd*w}t\ |A*H֫| p8*=|DB_EU ~P^?Xowڊ|s܉{LEk==q7(~nQxU44Ym/rp~/ G>]Rj%-,砹9AVo+_ꟾBq,]ꟾByO?F?#0 zN彻-?mٹ ?cmP]y],~ODէVtUKS  B ;ΩVoDȚ7}=ܳy^z&7\t3O =>_~}/}q8 o״Ƃ?U8ŏ=P9`7 q]BH?, qy> Uoc" Żi}1~dԽs*o^M=|d#ǹ" :OAq^O̥غO{}s@.P_Rr~]?|zz[?T Їv(\g$n-7*1KQ_&/-x_iw>JT5o/J[Q?բ 0焑 d|XhϹǣ>y衇K^> վ>~Lo.օZ.EUJ"eLdؖ=Zz+yWGeYg?fpSOP{V=#_|nLps=ba:sy ^ml{*9^e|g{_qz/<wvPlynD >GS}zMٹ ;0Umɹ GZ-(gkao-Q3R4H|3djO*rsasA.GfG( =Fݿѷx5s)L 9߫9h׾ 7S9&tSwT}'U|At ]_׿Wezwn nWgQGL_ה1s ysڹ />A?}||?G뮽79w>kLZ)j}Hf~:_r"ԮkPi/o{!4'A/ g%q;u*;Xȡ;t.W:|Dgh'cdN@k}#KKJ [j?gLlCs.\Il*KjL4;{uZ8>|ʇ̍o߆K'Ӎ(9/Dv 57T02uzzu zxrWVyNMLd?Zx̓>> }^k:A֩O5)ٹ]}}"ORLAMXͲ՞ÈQ?(*xzSue/ZJ""v_; >5ٍ@?f}Jʷ/˱ 0&a_WIoxN?_Χ O;r{ǹD8x'>SqΧ篧i35{>/^yoE6mI8\.=QRYE _blpQGv*Lr*MGUE_lR1?\B z_- _\GUƮGjƏ1|{\ls*Ko?~y 7, ۖ|2@_vE\sq͏AK܊L\5:{K(RZ%u`Ȳ"6C5i&@AhŖEE4V&Enހ^6td-BQIċ(Z"%;;s֙3g5k=kڳg_>|'\\FWϟK_s%NOʿW0P.=WJ} fDio'>p96cǧ\R 󋖿@[>^_xą!څ˷$t¶ײoGkH__MD]fuP9Tm6쎡a_NJOH!EzvvRعa*BP% 7d|*(="={l#}kv6?lOl{W h&ms9ovOUx~;^YlRz5nӑi'eM٠}~kޭ{ Fyl86eG'<2v"mSIO\FzGS}=duSnKx@@_%nvkt|am72l`heW|~v@`N:MrK OSpU&G9v n#MUtH=WR4 Ե`hbcW]2ud|eGKwt_!`۰=q9v|ݸN7p\Ol.pb[omt!c?L7_oO.5VC%l@\TFU6eŖF\Ngeīڐ?8ud۴?=9`fV-_QB\F'[k<_NM\C.MĈAL{8.Մw$*@ sst:篦ߤRi#-5;41ysb+)hryN9_o^Pz |3!2}WP4Pu_Kq5 ח9noi-CWs ډaxYj7:x[On?[,\ƟpO]ϦOV 4~b+56Q"?ٖ ϲ6YSh/]ҷMɖHtS2u3/;=E/)ylDZW98\pK?>؈:6oe|jxL+6bMr]D\+/ネXc\FWq<no+̏4~W˞dۀ،&HU8yڿ,E=Ou۫cwm2Őҗdt+=:O;݆  N88xģ3V3Giǹې}#=<ډxpzƿ65=mR]:/lF!SlTKEF*M'\t-0(\[ c"z.WOTtS@G/yzr#o&_l?newu'>VQqЉ-yL6de\5}JqYR}J٩ e_'G}R]'k0%v-.[۷e_=췧.Jۗ~ܕ?1.RK:aqw}[c9.ڄb8BLd-?ԟ~cg̊<_CgN7.KE7DIEO5UZÞ'|D..pңG}X).WkIMT>ʗRy;~?D<rrG^"G/_REd':? ubs88:pp0u`;Pw,6ׁXlCݱ\csFN+ v$♢ TL'fO\&-i i <+1\ TwBt}vHFt!gt#P݁(v Buwkӿؘ -)+Sw$w}vPTHzt#P݁(hy);SX+YG!!k?v98[[8kߊy>PyAGU;E.RCe\G}#S?qH6.)?ۂAd؎Η|<]"-r oqZ=ǣTx٥QS U +uos(WRHWW|C&+Doxx4~2:x/qkq%\1%S[1_"E.ʇX_K:s;}l>>1?gFl~olQ;l]/V~-$oyW*7i]Z Xb /umpǗtC܋]R̥م^x77Oo^'~+v91Uܐ?QyE"LdpǟVkcSɃj.z+k1^_}cXj~x??+\ۏVk1^o(,c=x21X%=XKR賦6~4֨SfKm(o7C7A{WhppmuEԝIwb*\$q9 WKZciNl-0`?)_G<^ZrЖƟ;5ϥ1飿HN;g?ٓopYcS񐉿Dxθ㯵7<ƋXgؿ_[cƣ,u NJh1.cj_Zы0kSY$n$}vx'b8gLJ,hى]·t'P1.[.ʮqp-R=MXt-_x#sa΅; x璗c{{*lWzOg\ٰš|!-}Tu9! DG{o[v[տhW]1U|ߞOZ9v:?Vڮf+:rY"i6;mUcr# aKU9)䏒B: 'ape|𪣘`E9@ KUO)愝IU\?e+9Mfӗy '7m[%۶shEㆯ^? KFqW9q ţOUG|OG._toN^ .2yAv]J1\׊w*ɭg-K 7M㎝mDN|\.aK:q-sKؒ}\.aK:q-sKؒ}\.aK:qEz@_%rTjP\`$;:,. ;|#ǎwv#"ǎ78:v>@ pY[7YT¡SY\YiZh73c;A[cU=|$-zIru+ͫ7hsɥtߺ~_U*$n zk~?qx-;qz˗_~ga_׼5l(o9Je긚*5jC|\\[Rq}p٪:&o9Je긚0Wy晒zW (gA g]_ۿƟxcg]_ۿƟxcg]߾7  09Z;kydz6E_{/ƺ$"Vie<1ul-.O9TN;Gm+o-<Ȧ"}$%<~5ފXC_k>';:Es|TDpu! p /ۊrĹun7By#,U7/+rs>/].sjOz[meӿ>붛԰mc+v6!X8<\8L]<@6OUGw[I'۝G?̱.>Mʖ҈\$T_kcbR]۞n+I7}y(o2)7y'z!}䳟l~{Np']G%N,qk>vIZ"_ּdֶ_'*vV q޾/n{,etɜl"xq9v%$ rKG ST_udc{]*?ʏ$]կ,M8(Z0_z/ԓr˦mTR4q1@Cpn4q1@Cpn4q1 ׽̿[_CձWA^;˞Yw>#MX\{VHbUvtQzIy쎡'2\۩_HwbGJu} R-%!r +c\:ɭ1<ƻx=֧'x{_ z?]Ft?\ƅKul⹤?.AO@s6%d%ϸYX4!.qƂMfk1\yntЯ&L_{J,:]ruQz'gx_=j}2Fyq-uo[4I&H!9> EZ{g->k!M5/|OpW# ;Osѓ3njds/X+b.qv 81cw1.]=Tg`DŠK%GXC%59g =|k[$|yt,Sz/WtǮ≻\/ )qYc\c\8q{_?gh}^{Q zD$-Efj5u+>vA 횾7O9z-O5JjSO.n_L8+4T&6f.f߳/jr뮼3-{ZuMo(9f(DL=ƋCcX='ڣķ1^zq<o~3xA쏧"`%bcG9eE\u~T ^Ȁ.B O=rY:/%6]_ՆۼM%['9 Z dRi[3GE/qV#>[o5?H?z??S鼏9z-O5JjOs qkb.{]޷r-z1\1\[}tyv<˵x>fkc뽏.ێpr l=}l.>blpp.?oρ/1]'9sck8EziؒOj8+2IV\8m8PxmnlCgtǮH~a.YQ/E]Aj*յ(&vz ѕ|-{¯ӯk?VՎ>7إ~*P K-9\t5ױsq?H别ս.-p巯ro<˽1\c}.>q;Vro|˽1\c}.Ƨx;s|#±@Dkb\峲6E}=u[ ԯ3.}%%̒mOXђ:((w/V."4>i_pZ1\#15? 2cG>krt}ŲF:6@:XSt Bk]O'Nw;]'|<˽sǯ_ҋ';WT>ٹNUGk6=fБ2Ύ9$ᘢGM܉I 6սHю8} O^W\"Opa)< ii|$t]cuߚm }b]7nFm+P Lޱu;aw,6ׁGXl ޱ\c68zbs8lp:pukzZX\/=Hzt#¬xMq#VG=o{7ŊV'6<Ə-{ߪģoOlx[UG+[c#?1~)VķgeMXWko)pR -RYbkk=VI%ZZx][ZRLExt9 ~չ&.7E  2p'z('%̒Mߩ=uE^BT Hee;Fr,ƒq\مq" xYS:뤁vKcsdwq|I7GJ9S,G撵lx$?x2,sY>+#@"+1\&$+ 6O"ox+oG{"P8pֿ}>%;oKy,'Vngj[eZ/u,x '+Hep^WkyS/rN?K]ڨ1l$ K>K6}m7>?'zAHݬ:Exsda؈Gl^RX^$=2S#uQV]7G].E'"O$IIZtAsWlVe@kH ir.Q8pp5q5?G#:>xQGu883UK+3n 9-²x.wҞE6# k"g@1@V=׊Occ?ia j w]muk*J@ɠcmJ2jWn]냤Û" X*J/E:yxc]~\$Ǣ~JTY<ʪ̀.6;i9Qwe}"ljzĪ:}(T[ˤI cdRQ40.u50KD[5=nᣝv5v=xX 33yx.Nm<'wfW|hG8ɐϾ㟲FTɘ\}k̺]9@ }oM_ ЛG>\e엍{]1.wϋ3wt> =x#g yeOh}dx 9J&G9ǟ &t8VΣn,],_:k>Xb=b9nbˤQ}O}f@M5:pIXwd|\$. '7-'^LOz$+G_ >*,с.6}t|l06;b@@bsGc~l. Nͽvݟc)ǎmXOf_zhZw'~:?v׶ocCk[kcGN/FXףQ'5bEt\ùP'ΣuźV{iľRO.ӏ(>hetySHȉ(^3K޷[RТQ#l.wZ\Ǹ u.c1.s؝^LN Qd0ewr9G|aHskwy-2R$l".gc嚧c\}v>fr1.>L@e cp{]&e21\ss{.2vq{\nmeHl.;NB~ =Nz_rvq[Eϕ}t.w0.qH31׹ntЯ%.5z "88s}x/aQX( LyUW ȥOH?߷){RNM2BN wbd~b_W~ϭz^tVF84jwt럘m$SW\ݤ9/cq;01ͱgݿZOsr>'_ ?3&mPدCiN/ӣܱ.ĹH碝zx$_u05qԎdoON_UQ O"(9wˉ%ϣITv_tQ4.>]&67]ƾ{ {㸏˽cv2v{~8ȇ| m>srrZ(B\\ଘnwp{31NN \Ur]1\ulcS}h@|u)w{]{\mrp?kv}ўބ\ty?u8/aj:N3z|qT*HԁHЂ*ZTaqEOIkwmZWy׍Gwn{IeLz);O @!t^k`JC.i>'4Cd˦M-rrwlZ6jr1.w#wG1.,qqףko|==Ev UHk6=fg@dBG9ו&^H|0LhUj9t0bb@_t$Vizc\ '|9ZLu5oo6eņ$:ږ~sLcznԎr 65CNt֦s,զc{GNud8}]j6sl+nѸ);aloϕd/6t%;j)Ic߷i}|l)<cnpv{INO}-qhW~ W/c<˵E|=3&tp|K՟VW>@'>qEң6(v ye.Kuǒ#Ó9!D(g|m?9^yW({@/'7$~k_E҂ KVZ=ƏV{{{Z[_]>2Pɀ1]<~5Z0#g >͜]䛜3z0hnuZgaI.C7OQO"'iI.#JH+,{"==x< y +yJ ,^8u1^}V#>k =ñ;>32 st^y5rǸ uЕ0"j*?cXSeaA.CGZm6N ~]=׹ǂ־y_OdCzj@h7O3Tӻq"P]_f^Z*й'lWDdN<\vb3?1$.!.N,i$8l6!?s*R,?pw. +bӈ ];dNSNrݴ\ 8expc!_ л8(ŧuYT'%-K'0~}h{{JEޛV}+#7sAĥ_vdhq'</G|*MS,j-1Z|?54^=Υ0XC}bm;38 ?0Kͱ55🖁}t_R0Lhq">G|߲[Vhb}-{lUoŋ//G|߲[Vhb}-{lUoŋ//G|_Plt'΃to|c/JJys4G9ڻ9t2Gy[~@*?>[$= E/S' k1.Gܾ;k|֧䩌+^ěW/X%ԝ~#O5y4]3g9Ňz\u.cAAN>?%jly?Kl}u{rm=O>1Ym`~?S_8/./yL#1\8r[.O~7a$/߱׌o^wKb`S]}KR ? 2ervbNt??ۗБMTo}sh: 3tjWܼE=|* Uz{d;Zt(!χg]7_LO[6ՙT݉+q7Yx3@x#~<wK2jxNƋ4>͇~m}X*Tޒ@Gzɯ(Ǻ]ؒcQ?Mse) r"uwj+<|=^wRܟ"鮳.(p8RQ 0.uÉ`ܯW7ƥG|) ہy/Vx7}?xͧu"-, pCt7xJ,oNM~\y^~'ƬfiNg{ߕ}݉7\㟲BN}?^5u\O:F@9P)~%^8M s,qt`mǾx=v=@:ke}o9M5 pvAK>ݗιd O_ĿdS,'Si.@[,nM8z~9??=\y@(\?@IDAT`k giGK߲;x1-$l)f} k+a7˾ 4 ;HHv}'coyelZ-{WSѴT<2'8PFWcnFWxArs}k_oZE;WOy ?Y_z<87TX2CZz%Ƭ![8~7A!$(N[Y\t,?WaξX^^FqFO+[T-5V?O7[{250 SA p iR 'T]:/%/"g0ָn荴wyc%< ߒ1%S<6z\R]OSk:z31~sO1jO\%bJcDwU&_ $x""ۅ*B$46U<̉y< @;R)yZ&RWǜ&L1SCǖCy99nYsYqys=+ ӟ׿|0Dq鴅Ixkcj/G|G{7|c{0N?Wk?ǭfE#'c O. 2qPMD_ܚ1hkzB71=Og[箻L\6oŏv'VZ~IWUz׾]@Fb-}/85\M?}!KT3I1_ǾnpKϊ'$sr;cwӝxXp|olǭSϛrl46LJe(yn|vJ':)Լ&ȒD _6Jx"_+מL-ڐ> M}$xW/}w3Yq}L; .]"^21"oᣝqKr2w]lqv 裏Z󿑊Dx.\;GF2u8Ή YKҋt`)=|1W^G_* x|K{JؿbT [曎"Ď[x[P!2tqxcxQGu88_k.Y[ͬJbq2`":L7/FBug;~xb{1~pw!c{CP"::^_졺3EtE^;pcwWվn I7Mk_YkƩG?,@㍷I.f@e`:L>5y)IǟxtC[R űX{xKmcc=^6NSۃ'][ ^–t4|ͪ2.ypSW Nkm 9ت5]Ƨs_KYlUef3}󅍠ކc9QzbQΖhm~>)??gyg{(M`e<'C}c]xS'GےesٱC> ğAkV(|z)t9#~MDbt*9&E44YҢA !Xb}mۭxEzl/ǮXCuځM^җ8.t9V3 ; Twڧ/"1@˿Ԫfca>i2g|J bTĪ?oOL3@n NƯ zw%M5J@/Ekjeoo[_ZzSy`"\:.b yő<^wjGuMb_'gq1Ww5iJ+'pl3沰=bx-t7x*E_}ZEEN#]u.c_=qX!Xc D{0 e;Wbn&`KktĂǶb,p>:q1zxxką$_o ~/&ng=?(E??rFvK|sA1$ sdΕg޺ىZg#~r!idb &&gw!`h>]ͮM_/twMylxarBzV 0Ok8ƻM2z?crM_ Г:a+?޾kz~ckiۋGy1q~ p?Z(摺(~qd}Me⥲?H%LZtO!X$CE{Vڟ7SG{h-Z?ڋG߾Ӫ_Dxnpeh.h2c\tb QHL2\iDXٱ[j+oy[.x.m;;Gsx#Aüta9 p&uQV]#^/و2v^;ո| s꤃ $kaV]C$ sl5?c[xu,ͺe6iz__ 4N{_WN^yEc{۩N$;em]߾ܜU 5.a<&h*:0X$=~mZ!d%YRa/k-{^6Q1}Ư#_ #_(^=vc}qY.0uZȈ]1sx ?8]Nۮ b"'[Ļ}3Ks qj l"33nx/ dW["%-Ȇ,.r{Xgθ/]m(G#I~/}]fmO:oS5W}%@?s;#m8Qϑ9 wq-=m*e?)_75w 'N{ia9Bpp#ĜWΣY= 'TnKIw}w <K5~+^=>"n?w0M'>!*fxķ쥘[PSsBńo%s҂߲pl9T݄o|S4Qvuۚұ'_f573mqUCǥm~} zSD ǯ rk6c]>N,bӶul?t DWt%v靳!K<S+;Si~R[Vh.gdq :kv_YhXýtGo7 On mGm_핷Y #B,T\'9vuf$1Rxdpb9I0_D lN9,<*)),9IuCm!ߓ=4I?/׿ӁK Ŷk_^0zW<ˣKhйvUEB >bn^zӷy9Dۦ[?#oOi[?#oOi[?#oOi[?#oW}=}~w֐Z?'KO鏰bX_ۿ?]}ۜƶ>of@|.:9Q/qy|__z>w]Sٱ*NEI:hiѫ6RYl|cGo]WJ^c<ԝ~A.:pJ9 ^"xf-fk*ݗ/=:CcJEXj&@ e5Zg%.],Q#8Eu>ٹROKvtw&Kͩ4IOu]My|V,74~Oq٤Q(KG^%zg{Hs H'0S8ζOڍKrq& ՝Ώɓ#L1=p,{-4}Xϯ؏ R{K: ǡb[1~;ԟx? 2 AgNAizK>՗N K,ņQznSy4&)FZpE. kqr V1]^6Sw^xW6:8 ˲wYvcio.%M3ݙx1A@-ox)c$8H%u>f;ӷ1 K)&KT;_.w6CSϦ$. uk8K?J'ؽwb*q%G$Xď\`JE?-uNZ*:/מSu^s|Kb~ 3d`8 w %.],2-װz!/POonnP}ŝ‰G-f:[Oocz[rOU/cz!0fMUr}>ˆ7VCxUb5N]{l['+ }gTxtMM5lR ?*rʊJY4'+7C5wv6U\?!pK`<ƋhW?EzϏ>+ ?C*R?kb5q|xMXm7!\|@<"P֫eŕ߈эTEz饗N4,r@ ;uǔ߲ǘO?1~_[?d^O蠤KiA /- eseaoԻ7O/zϽmAmtp>s$w[sn][7~]_evމ+_f̱ĥӱp`xދbў~5H:W%}}{9yk^c=!X}pJ#R/|Z-z x>dQc]VT`[}..~%p1GZoI叧r*/.:Y`#WM}D۵xG;qkc u.bׅ^'"0Гږ lN\eCv|-E?ڟND ,6wz,pb;M[A3vYqD.geЕj}$wN\إx(̍?e[7\Vy=˽ q\k^/|'O sc>:akv}.؅o1]I8pY:(?dfu()qpr{%̠+`qg:;z9;sa٩KE|Ul%TOz 2>\Z4qea;6;=r28׹=rǸ }$3Vsl_zp`cI/') "mPcC7?]~8=d-rpC]?mSr]xwGvt.K"K]W+rk WxJ+vsC86ơ9i.?y':)xE7!\ _ܼ^{]2uMKEOyHϛKuZ ;q^3JI`X7 |YtТ+76Xmx-{ת1O=hB%ҹ\ø> OU-/=裄(?_(L#%Z/Xҝuc{YǏmo->תuc{YǏmo->תucyl5Wl>{A=]:sl/ϱWA>>x+C~ݠ@.%\ºnƍpi{͢˧upsiq{, 'J~Hu3DKYڈd p2x.a?c΃r܌?y/Mlry k|λ cd9v^]} u8k2===\XCK¢x:Ч:K{5.^} A.+Ǹ\^»Nr$|/;:kO}C':7jǒ]/.( sq1\r=do.&G9ǟ˗qlg.c/;u=O%=Ivw,ɺ /惋, ls0 %;:b:Wc\v`\'9m-{+c=F_[{HS?(?=M bLS3ю~uyr3&\~;uěpkN MWc8y'\>FB o|T ϨuoqZKvb,%%|iw˥Q':Ư=ywRE ;cHj9w>[74痁qr*kR,9.3IǙD:]\nZ2 ҂}xt\c\wR@gFԦxO tADewr=1q|`g%mִN5{vXp7qepsZ1\>.Gp\ƾ{ {㸏˽1\:8ry ekp7 ccrVztr1. 㨍C%;a7u@ruW=p%>~ޛ4 yd`8,oc>Ύ5BpPWo=V*?jD70y}+.tm/g!'6m5{lom=v/>MmGISz9 pr@.Gd06p]ɍ'@Dq閄qR.Q=d{bjL"q2d4?30竢'2*c|1.+>Dx:pW$@J>OY?2ynV3@3EPm. ۃ!fKp*,.0np8A*P6t+zx:8xNB]=d3^\ҟ wykJrEN$Y+cX.r,W̹p@,n/\.φ<ۉuu;G˴sLe݇ ,SۢK:0ce|%{OqFNCwc=kb;d]ypNؼ228ߑKvp%ۣT~Pk&!a{,X?4^x\}eŋ6n|#`{tr&O6m:z-b}f׵n;@;5;6\-Lj"wycȷ;1\ _8Hm2wyR}v>ccIQ?qB2w]ͷ<,: ɲZ1ֳ}EKL[Z*_"c{U->G>JzI_)|dz`iZ~5{+G?яB2 3vty31Rw 7O>6b+SCmu_o\vʲQg@A?q;Qweu/L]@\.^*iTҗt??:bnY^G~Ưy Ƥ:21K'E)ʇ/~zjP(a@Gw!Tw.۟IWHl[M{ rz7/rZZ!zL_Cz]z׉ ˂}衇N>϶~1$[p,q8\G({ݱ.՝6}rE]\.mEyUe.^u.]FF~?&V']&Cbh hhw$}Oul%jc xYt{'u=Ox};E_A[sߦn?6z[z.(\u/~qX:=6:?)\(>d@tN8cp]1גWߺd*?Js;U9?)|He\2pxs>\F]=C@wy/\^=ZxOz@^Aث: t{bCv{ Nk7tMj^ rmr^;@6~cvы^ݱӲ6~cv7F{+5wOl g]w .r ^Ї6J*ȱv}'˵q9uCP{\ŷu/ٹX:qAudxRm.%d@ c/ep{1y)s 7T&.6YK \t( X%<~5>1VO @+ev#wѶz|Oo[nٮ?!bL?ۢ n듚~[cZEtמ '-mGm7XU^͟X5{5al̓y>oxaN:?gXu.c_=k.Q^7NsOҿ |v[y|8Ir*kUj<p.GUrSmHAW8!]Aܰǝ(wvcap.U?n$SV*Mz'ZYu.Ә|gȗā{lDR;Y/G<Ď!WuKno?쳛<3-)",IawNdH%88n] ؚ{=w>kJ9q".cv{{Lp.0.q1)c_?o*.%.ׂt%l{o| [k?='>=FOG?c٩~+b^Wu#Q|5M7,> SEѣ997l`c޾%A1~G{΋n\r,zBD:q ;Jv)Rdx؝wޙ`K :5žOkՏOE]k|Gz <ËHISC͊soS;1Z2I0š%."iOc=ƿCInfnq>zxߴlw5aГO=TЄ~q%e:!_OE;҅t*\sQ5c]xS'>}U]D]\r6?W/tu39w@=l-aMO|0LVo$[?~+Y/&2X׹]>ā{#u. 'rw&9>G8$p!sgxBA  1`(&@dIYHI(Y(B(3:^/)$~|Wu{zQsꩧtwUwWC*\q:YWr]Rjtd53'Wpx;~'xag~v:wn-SRjelgwWX埠|)̠v]ś/jEm˟bRGP͟H]•OIP 0[y;@KZxK/j[v? ul;wZw=5\ 5m.Ǘm8c_ _ XRz_w 9t?Jç; qqPt yS5@OO8w<'ߗRo}ke锓Ȅk@kna֟W7z? ēL P|[(^5\<ʰ?;7+?'5D,C$F[/ـڡ"o>C}Hܳ%#w᷈])7Gn}bKrzt_񤿔{5]OCr 8e:|kd\ ܽ8tDtƒB s6;z5|.Rל8A%xD l qs# XIG6k|5S>D;L$geK bSj}cۋZ~fɻd6/.w%;5o6f bkt5Y _a»?(U9OJp $rȵ3?I)nF?ͶKRK8 AHdKй/:kU%ٻS._i/=>rp]w\<*~t*쑃+LHF {vO(NH{p o}cKiƪ 1xW6gG+lar[AxY4@."E>Zj ,)yxL11lo?=ʇº,,OOKoJ~t5"\Oyڧ/Kߒ{_ڷגo߫>~K_ڷOi_K_g~~+k:k/ >!k 1ג9瞻~N7Aug˪;yt^Pwk*/^FϚuxPE'rhǵ=jzmo>/_,ӽ`A(-)[Wl'S.=~K}9j]`g#QUS-.)OlO?~8E?{(/h?蹚%x=|}\~\g)ltT˯`ٞ,JrLs5ۓ~QҾW^' :*50{M Ml?-=1뺀9]Vj!B󔡗xS_⁏U®Kf`LzK~*բ3'Z)[ٸL&YjL0;buNڕKo b$%}-BK߅nVr|O9'{ 䑺=JPturN&7'l@q>ۇ8CWEh!t\_x &{9%SۊGzIGm˗s)/Zr3x^!R5O6QNRj0y'ؒ=yt{+|=k0yn쮼g^8\Nt\/œ_A JO<,ć\ǾAozӛao5w9렎\:y%oǨ /( JC%o Emj-/5s\96?0q|WR~s='%Fgq'}_ߝ[9t9_Ba3cse+s[#x5_Ἥ%xoj/g{Io/{nW۟^_zv>(!4zi^oEV{)}PAOW >KW>X~a 0gKc/N;:Z^|>UkJ}2fPɉ<)wZ8VR_vH/>u~ot#WY XKkEd5n'xroqoS83!x@IDAT{{9O͟L{!x{{9O͟L{!x{귞` ?oUohCm-mWՏe{+B{FO";J@0cROG1p7DL;vKOr9_Ȗ}t0+L0Hdpw]uK9W|I L6+^KpW0iP[q.d, xV.\z_u6K#/uEɑ= b/O._%(d>]]+ZT Vwq\s1,1?3|8<љ+5v YV53-șa޷r À/x7پ9"*Uk=sҙKGp? X~{[cNwgߚm)5>o޶s׾&r R}/Uu#sZ}繎-xV+HA[nAq}pxt;𢁢S%dun}|RY{l¬-#~ [>?ux>[k$]Ήo|;}*PmzSxN)K]o ى7e|:"g/ . @~)yZ}>uzb<%7S럲5ߧOZ-o 1ϟ:))`/زlOleOy?EsWE?ݺPY+7?K8GWJe'Uxk.L$LJt\:Z= t\;qxVES-ES@nJmJ?X<ۺbFEhcOtUNE 0I_=_/F_)ߒ $ʰ~#=8>%)(_Wl@uyK.c).A$ަ㒷ۀ+Wջ10 O|x;/h_<8L`+x5*Ї{,0 :tk߫Gƃx-[7k߫Os%AW9;zo ׾W_qN=l|k xxH-`j3݋ϓ~9+Lx)яkWO.z ]yZ;>%{I\22Ur3`.Z)TuAg;M5y>^A-_/yw.3'-Nq<%O:KyKPo%/i ]w}kACb,yxyTpx^W@SovǏO~1;zS8~~oz3.ԛc{ӫqy̎6۟^cv.|iG gVk_xN;ε,e3ŗ.X9)(xo=ӣhA8.5d]qq|sۥNfq"w%wUt"\Rur֊\:O{OxKOǧSgǧm8z)){ޱt|ʟ8>}>{B@*RA%@%<+Sĥ\ӲG"};f/I?&{_ Pǣ ɢ ~!aT&Sho'R+z׻-o9W~)yZ}e`&pxϿ {uOE<ђ/k X0^ $OlPx.'rox.nR&߰;uKɇxP#x*SCr2`kZ4L5(erhu Q+ˬ13iἚdZHjS@SXZ,7GuJiK~)V}+s-Ut^vŻ.u󕀉|SGt jCœ\ҡMj<> sDd6FE|0ۑs2_72ԿQk΂q,(KOHi0'3<ņ<)];㹮qSrtwg5X̑|zl5v b>)KC~Lhk820202p>o~3:( +t=V?)xx9sSGQj,TvZ>@w\x h\M@:el`NXs-y\O /KR0$,UOՎ` S^1I(_*W_~N|gI`[3񣢶Db?&z-;u<§9Z{Woo6}/t/?,~wWy~|֯KRrWsjq ŃO :.a<*s<@ V_ihelpʏ\A^ _;\ԟ/l; 9 )Ygwn8.}9.yBq򤳭6t[O_W sy\4qp}$tbL8}Ҁ###3D:,iSTSvST;⧿?)`&}dkJRZI8;_4w3)0tnM ASْ^Mk6ZzygKm 2U?!$8^<E~KyKqxe'>GRe۾.v\$,-<^8[etLh#VKQFFFnCX@Z x1%W[SٻxS}8zS\|ش&w#ֿC~T 986Pڀ_Q*t=NZ)MufBqTNzQ9T.)>?`E{г.wx[Yn6tk<Ox6>20202p'tl:~f}0(]q;q{ `g?ٚ`wAxV*_ 5G&ܡ;h@#s ~4h d/ȁ!:D}QIEJ9jT%lu־cOxsG+_n" zh7X+ZP|.sтn'e?g?'`{CJC ŏ/%Czt[mW?kٷo-^~ײoZ9}b  )ϗ~_؃ξKx:'4 >1PwE< T# #d`Utf٢4ɇlpId+fN$HP2LC֔~ڧӿz¿ciѺ"bhȧx?=d,8>zcJ-SynlV8V]q:q+~w8O\k; t?y;§C̵ՆCq\:s<y__s7Z& -_?v(#2P$-Z#Ip\N?|OX{ |vŶhϜl\kw89wMP y@J#.k37Ha?7~>O? _˾W?>Oxz׶ײOĀG_|nE]T_DoRW* u׿].U<!AuI8(# 0ed`MΎ{/I/ݲiƔc)/\30 IFp/ד-qי99p\6s\^>_mO{{Opm9dO9=GrI~zߣq[m-x8^1gK`^}9uSwǥ7srpmc/p8鿤%N>(X_$5J[6y;>)=࿨22<>0Zn54Gg #jϓ'D@?2/^y'BN :)/2)_:O--y^}xvX\!> zyjdD72p1 y2~l~@`%R?Q*sO0\>a/0J;gںCcd`.y$v+?)w?qk{+s;|-=ג_v;S{`cúT_9G9ڿ'w7Pw9~s%_~YB&U|oA8 H:>%wǏ W|zQlSSğtVm:qɁ;O|A8-HU,ZI}oj}m9.wleW,޾9.?sEVUD6и>qwHlϓYx,.K€W5AQ;<% rtr0_2hNkO&_A;t˯~w+HW{$ CR?kڗpSf ה}ʥ'1߿;lWKoJ>;iȟ+2u$?v%Ny؉'6wS<< Լ#^?wK ݇~ݧS-pe7%wOݧ~>s'vYz 5vtxytM k kKRy7s_X_IR'ـ4cn vxD  /yI]MV_Y ),a$`x^!*#|ߜ-mm_jz;v/Zl{_>?.vҷ?i JeɆ>s9]&x}@ =>%h<ƥ1^x-;VSvS?)-p|Ύsw ~Y+3`?5l?!xV9+׏ԷRX@Ղbpx qK0}}Mġb:+Ys Yt&K9[R8<䓻`M?Oh E:ȄĒo/Oyo|-l/ǠYh 9.Ox,ǥQItҩ$W'g|܃mk?qz}HYnA_Kjeߒ^O%OIkr=e3ėY_ơSOYmeR7GT.^~K')~ʱ:ʮ Ge(f%)[Z z?OJeNm@)XDIecdgdt}NġK& iu-.KO㤜8):'yjl/>^ }iyk_{G=-I;ř?)4_7w{ך _GXwknsWa~ O}=uO4/ʓ'S(~!^z^.ހ78 F hAq_pJr$5;n ;xK G`0 ES } rM}3G.Y%RRۏI!ZZ.E 7STn-6$w%oAqe'8.y -;q[moI6KނnxNrq\tZk-6ϵw2ccrvǶ>_;G0B砥?}Oq<%O:ym#ժ8.]gQ[SK#;J\+Uu(SpxGvst f =5ԓ9L'>آy?,-?mKՇ_Q@ e9oBc.9: j[hٷ[o1Z5ïQ]MlT Ep1P,S3O눞 M_KR΅Z-+"jF \V4WJue:KyKOǏ>:KylwUEl^ܺOBxhNw؟*#9>uƧqqox5ȼqx5rي-|^6S#pO:KyY?r& g>}]K*\$1/@Ǘʥ7ݧW,Oq';wx|Oגg{I>HԛRN,JRе>IqF'#= @nѥ+E <$W~N|n'Y!rCSSs-)O_{l/n/+>^+=3L,=c|َs:s2ә }r4'f.ݢ gk쳽>Ki[k^?,~ ѿ%RGB#W7ϕ>ΗO)@ѡNrGkoHAx^&&YN. s8Lr3c_vv. 3,2?KMhMIz/{O-SK}K'l?ٿπ*_Oy?[˳l/~>S-崏OMd<ݿW*jw](>)y x2 i 脒;DGz;톉"080p^/٦hq\ު&}hoگg--}93^,K 'W^y}ݷ[ RqrCπ񑟑2??Q lpn@PN|ss㒷ۀgoryc;O{8?m^b'B8?{xGR^.u҇ԆCpbxœj<-w6S_Mp/x? O%w79}bgS^_]}A~ߖe{ٿɕK{.r$r>Ljdr3ࢅk\ \x4F:`; @[Lh(?Z9 2xN~l/icx_}طԮqK&r9O2aπ̏d)N$ x>H&rOfqHjD~ky-| :~W!?Q&b: JR9ja5/LK gzypGh'@N2OAN*̅%o~[bWi]ͩSӧlg}v >#w7 ݑ ,r))~?R?S%R?Ig{)oѭZ>]ŀc2* Uwxȳ5e|xZZ:KkMG;L0vp_*6 ^kê@HtB 4 d> Q6ICp ¥ 0W'E/ %O@xo-۟+_ʝo|]!Z;{lԮ j<;^ӭn6tk0;* ]x8Ifn>[F~Om)k;'3:lea]{{]dm§8y;io۰|S¹'y 0: /}ϱ4c^[om?7X{xKRs@@ՂރãH?0 x_ ]rU8kmxi-&jEn']&~+?>#cJ WS^>3L|{ɧV pVwN:|dz_o[ǻo/>XK#W*HI9GT QFS4'fǝEq0V8Qgv:Erp^|r::tCO8'$Uӗ8\˾}oC-e'8 x`7ScK \zb6ܗ8?m췒<=/V}?[R9s*}V|-/POR9{-^xB;N\> @m]`󣩑2-xV_wQş  '0rap?w%UP+m(W\򕀞ZLJD>ojjvN)g`l2ܤ瓟v*|{soUD<ԄkEZOers~  (?p 2?25qV99v{0k2KמKRX= ^ky*ie`tIfG:2}(\Ck@P/ϵZ]`,] GtF&I!Lʖa9՟13+g?٣`bHu\_6|}{|JW)5O^?]F>z qŌڿ{G?5=?w/y Tq?scSۛZi5u[ۺoxL0v4ײ>\GK 1(䁖 H<0 x8q &F6̀_W i|v'tVt,HpeϓK'xIV{-91zI}kK%xS??彴Dž1k8<ʘg4u΀3D ߞ묞:Xc wiQtixWm29s|m6 oM]st^ <+G?w_?'[#m?wj/>^j=~\s(]l?\JMWGlji.!'Ԡ d.Od oxUqY}o;,|ջ.O.wzrc %5+l#%ǜSŷĿVgz212Ή L籰Zg^-l/OO^/OO^/ʓn,?)vYꯕ'4">ȅנU$2qB8&NB2?3"JOR%E%533tex.p>yӛ޴s)@JwL_+kkg-lE{{\P3^ kEx__Mtka@&ijoC j)okٷR `?G/0`_V<[ۻno(`m2Ɗ8SR?R* Ý~@Dag W#a}\I:!џ.P/$oQ.)dx:7,ú|םLx֯;":HU z"w7 쏪+ K@`+W:B;.93{}o$p}{fk> )[txr}՗@}L ٷSlK2Tq\< 8t< 'N=ί{rFF|`MfZ)-xSe }]g5qm+_)'Z};~Lj3|2R){-Бde]N~wˠ3v+cSO򶷽mR&O8eV-+Lo_Ǎ hf?4@<]ة?S/L9=Ӿ G3)@^7c.W|"luy6W̊WZ,[f3kkUnےhl/VZ^98.YxJՀJ3U ^W<"c + c P/v\rA2Hcsޒ;x;>aU`zW7oݹOG (##3p&\€}/s8?toε:n^^8u{{Ge|.Nj i_/7Je6aj@՝n :\E>Dؙ1Й~%3AS0;uK.(\s5]xz`iO<ĝw]?VzO6O[ ~ D.=Ngvw~SOY26:~|պ^Z {J_kig]~ w3D^(֧w_hk;ImZZ^n՛hFϯAZቀ̸RW*Z~ Gar30D# Y(~`oR^K~-~~+Kyo^[K-^osCW,ȅ _ HL pE|k`uU'z@!X2zm3p >W>D@pz{AZZ7oşkC[?~vfzC<|gQwz؏?\g@kO餬E3 N#ׂ}O.\(_Ö^yƓ[Ǘm?oOo_Eg.h?Pޔђ 4ב\5v}@L|=Zkx>ckbXb z}Eƿ"Zkkmkk1]$omk6xU',rϔ~":'](j-3FpÍ.f>@:G<|+{&a-)}CW"oI|T.--g~1}U1µc\~Ṫ外;x5o3P˕x'PFp)cu\E EП]T/emj6m&4yɀ# OVR9tky*cn&vs6y]39)ql7w~~IM}uh}Uꧼ>ʳOy/S^{gBӟ ;Ecyx㔍7Kl_pkv.q~N<כ¥[S6ίىzStkp5;\o |E |窱Я?~kg?z_Oto{k3 Oo-v{Koڧ~~-Z}ՓNpdaKRċ ^WEBX?D._ l6'jC2|eMsh?я@A\e*)gS/~>}K/RK}-c/~uz(#7= `#⩛Oc" uw_~ed`d`d2u)ק+_/ԏkPX@ѡNrng[o|'7.b3 ׿_km7 p]qym7 _o}[G SS S\+W5ߺ-ȼĕVgt  UН*% %{Z-l/Oyo_ڧZytOyƟ_>K:Sۿ鿥V%S~h+& ZtSۧV<-ykkٳ.> RՎƓt^P '=?\2X{rP׾Iz^1zXҫ_Ἥ%xo-} +,i~C/nEmL.P5y1QÝdiM̊Uh>'Lk\OݖoߒOVֶ%ߒ>_+_ߒOVֶϓSܬZP +_fVJ@8U ^WdEPXݺ?Qx;vIjxл {I]: _k^­ H>U V2/V)c.WVwyS|_ |5=Ɂl2N9S~̓g &Ezgش_Ll*??qxY/Y-]/r|T&&/*;92pc_ \ g=j'tA4 ?QdS#5[=b႓_+&6pIi@S>[}|k/l3>u>tu=v~?_[?w{Jjԙn߫πH߳`j't Sfv\rA2,uvmݞ]ReO];::{ӫߊ}駟^O1`9hcͰ?{}Locx̔?Oۖ {ⷣ?TEZmcm;KSoS_)Sw ^嘽իVr˥>S Lt £SIvF.#kM'AĥwJ{fWy`Iaa)|`ʝcR еKzJ_7xg wݻu|*^oW;T YjПUo R eߒośߒg{IOIgRߒڧʳ?)Oo_k_?ٟ}//Oug2U*TjN8]tJmb@k\#؉ t@*o{)5517 I&^NAG1~Kl/'Uig]/,ܺ(2d+A6eq,|#*ˉx"vEtm;v]A lU_րw1gɀ1/nٯo^OzmZ[/nſVu{R?ko^OZ?z.=7)SRT b"^ Gr4++5<`qxMMҞSNx-cVX9~GK%OI}{kg{SQS 2)߾.yE2x))?L@H?B徠~jȾ`_3 lKV{no[S/_ʓNiߒ/[3~O?R?%<-ykѽR?oo[SOST#o_-Rq2U ^(RΕ #8wf6uA4^^S=wSp<#_c_1oK:RO}<[?[}|k/l3'iOij/S?Ks kb"vdNk)IINg \~*%Wh~d d@@%ZK.8%s9q UwRlsqL*x7VZ'^y e<[Oӟz*i3E3z߿dڀnqי93s6.s]gwk6ܡq~ռ +s#IZ-:ڿl'<J:/zo\pYqliWJRs@ 5 47#sׯ@`# l:0u@xtp7~S6O]o wıpr.kti^'`f\Ο±qp>\˻O]}}췾?):N.wjVz_o[ǻozӫu[On?srLYxJՀJMWtʕ8̨n 82p52p ѵkJ@+f]O1Z@iQv y}{7eMxwE_ y?<ρ>#t.mmV[}~56^^k߫nM׾Wg[k'^z.@ٺ\ l:@6BZ@~ᦃ2:N${yЫ,oKyƟt+O-[R'݊?~kgIO߲Z/ҭS?ב>g ~[(T-,q@Jk]1pIM<M];R\Ɨ䲁<7ŞAt ]ǯ?@iA=-nmkPE}pK_R-Iރ>x>>&gʬ6{IWa~>;Sx l/x>x>x>x>x>M yA?8+Ra,z | Nqٞs$y4q l>$bt^,omLx'YzZ?M4!Hjo?/y5|Jo>^+3>}g~O x'MMl[Q4ؿJԏORP Q{u8ewɜwRvIO d:OdzS2;>gsk -5eD/pºw|_>x$/`M'SOM"Y&/~焏 K %V<--VkZ[k[[koٯ_+o߲_+oVފΞk83|HB,>SX@ǹx ުE#H Z'?&N2)/=0转\xMsk58^ӭn6tk<ٰ])5Q\sПxZ@}Jc /x6`q@/)O<ĝg⿷̅d{ S≾vg L|?u)uےWM먯q_ m>wrC犔8L)sT ; Ad9LF;Y_yxd$l@kx:M$t=y <&aքy/Wc`NK['}<bǾrSYUX_} +nmPimϖ~K4)kSZ~KSz[oɧ^-|i?믥ߒOk) (ɟC_w/J Y 5A9LL. #'fz_)ǰ?{-!W)?6i"'LĀޙܴrג|߸O~rwQS4_Zx߿;(֛`>I>*<ˊծ %ϖugo ugHa.2{OᲙd$-ע{<>s+P?W*/cT*A}/`k/>wxjPԽeW7; lM'jҭ$Kn72q\5d@;.d:=-'lSnQv|;oy[&`90ANa{UgO],ا>~=mRgߕimW[zoųV{)mW?KzkE߫u-YscOR1~,r} A%t=ɜ T<R{Iec`TGMzl߆?ߖO ۗ`}>jׁT9g//>G}`G^ߜ9=wO4?4g:ryoۣMնIG[:);/ޘ2:lokxRg-:I'/ߢ3scEQgKz yNitSyBڐT{\PI.Z">LwNeL<ţ I&tUş'ZpN-()zO=тқ'ZpN-()zO=hN9!p`"`]~n|*0cJ8૤ Y?J䏻 S)[NxҾEo>K:ISZl/ߊ'[tOV{k+o?[NxҾEo==dZy4 >; ,XC;`;yxw$bO}‹>z*9t8 d@ЁV@AUz_i焫W "̧ǭbf]??qX;Їv+ o_M^+? |S?S6jҩYmm/S_ߩ{ӫONm۟^SǿozwjuQ+*#J>?)U5.j`98%svCu#&ߘ8EVϋH)Nҗaπ9s\?NH+<-v`h{$ y`q_找=yϹud8.y -;)| Dy/)=/j7S+Ovz;(+QlEXR9= px5/| j@\x xs6SyL[< SNL g` KbЫhҭ ? NܚIO ytD>wԺ=\ QLI}q~}}~hp`o@JꯕO_[_/kk&GwRw+!k> ׬ЯmvsMl/.3j[}RF>qQez0G~Ki?_/~`v`l=#?k ~`?_Nu<ԂGNtnGuk/39.+^zȌ *⥝X<-)d`+'8h<.3>׹ xN\n,?"1=~'tdoqiEHێPpoIzQroW_1 cSN,ߥ:ܥtu4g.oX.ߥ39>KwxN0kU};|O]||_׫x`)]/c9QrV3tc~~S1drO=IJz+Q[Ж3Wїf8s e)ΕdE8ewπJ1E'.-/>^/?({キ{衇!Gە7W _ s ~3Vb}}%'у? c?]Q"=c0ƫی#?/%у? c?]Q"=c0ƫی#?/%у? c:?u :OUszdHېm:Q VЇ=(3hGuteSqImdH-;pY'{j[Ţ K*Km{(~.->O)rַuU^_W5*:A꧿vR־ T?N6_ 9rR7ς) s\h+Y#%GXȎclGW#vre_vdGDRc?}Ƃ,Nl-- f .U_k^# A_YE+ڛKw9"wnю vo xhFupNY+m^ mJNZ r-Jm1Fs1~/n؟㫵zͿf4^o?<^(71^7?c:hѯiZ_Ty|<TQܱ29;FYu>A!ұ/ɲÙަBRZi'3 wke`g2/:)O \ w ,d=b_xпt~Z+!pzIϷnW)-3}M^16\'E5zꎒ:z^GvtY>ԣLkoۨūcZ}x1^iMcjjV4ަx5{WooSؿZ=ƫ7_-MO }-u`G7~~OWUn^>сGtt;TԢ[ ]>^dL` p$;YZN3:d=_:xn޹p\޹\޹\޹\޹\޹\޹\޹\޹\޹\޹\޹x-Ȧ/Z#Z~ܟ"d\Brer&]N; Ni#rX3V .,_SpJ<28q_d0rc}JX}J<28ds_d~JN)o6"}ȍ)>cu'9>H|]byŴ-4qp˲{=afs]tS>Gv3aSe)pm"wzYe`<~ࡇ:??Gbuc}Dx XG=Gbuc}Dx XG=Gbuc}Dx XG:~b@8K<@wm 87ڗ:K,6Xېkk}ԿS{5{Mk7WԿS{5{Mk7W,Au_@mzfG?WS`jrfGf>8/Б3b"-1G:Iĺ6 S@_Ng}?wloG,\l;mzXn=}uzի&=OĹ\f%G~ѿƏzGcmo7ݿmǏ[vx#[7 ʯE>u7YșO-J~;VwnDlў]2s}:>c6-'uȎQV}ɏ\Gf(YEv`kmO0)}&S|OK3[es4s~/~O>(뮻{_= j ԚcIkoZjؿf]fkoZjؿf]fkoZjؿfW<׭Z몾>;|:q+w{s_JLusEc:lf:mytcz@_hg:,dtSY?Ё2CIJi'3 fsR xn\nk8kj|p8T_PkGa_o۾ij5Wij5{۶oڿ;oڿ^߶_-ߡQ-'~Sт.+>nAyfܚNvD9tlp"Gud(gu(.2:dGɥOo:IV2Ept`g=uH Ro- a??uݧ>Ͼ̶CƿnsG~l?cN6bN>7g{[#?c}xmu=#?g>Ҿs cu͑3.u0qTY%1d:ځmJ;/ck-pd@8~z _TwTiq9ڨ )ϟ%P)z?N}ݓ (<6J^sm^]ʾNJ 8oRwߚETNL7.3x_Eq҂c趒vuS&3 SVK`mZ|S/3nr:@yaw8\[Js\W[X~- 5ʦv VO:/}I۟ύ7_~Njmhkjm+o>F:9*31;6P>GEZ4h 2p<xO뭹xFwy`׋t[麷|͝~ҥK5c@@ỳN|~b4ssWw|u? (sY^1u0qݘmYl!Է,udP䈙?1dJ"vS8KU?qeE,Jo:d~1@_}Fm)boc{?5{-^1Mۿ7w5{-^dK,,y~G~ꪫ,5בAq)}Tcevc6P٩Nh9 ~*䗼$Om믿~ퟏ#ws=Rɮt2Q7<ۥ6dyMPJjsLt{q2+97.31\N SI{ktW3/gI vGW m-~rVˢ~ŋի/7᱀;cm Q%;s1G oo?/펾msGtWB}M3>yS1G2םcc)v tc8? Bld(guRf^-e@8~z#R>_Kւz/o5v@2mQՌ8|nsF)vwY_[{$#/G_#g:*eU-&nhhhح ~j|'~k +\gx]/p ꪛ2v#G;mxJ#/mmkN / @~sRu]ZOuzIWkVzخۢ4/G]n}cSCIV! -'? `N>SebJ?XŻ ]s w=ݽˬRB DRw,A+ΑmkX\6:)u΅-ុ,m_>qy> _w5jѿ߶lnl\~uxG^7>(guе%^z/JAłNq2[mRjc MvT pPQ8D Ё_^g_iG+| 9v}OVzܗ\O<~zA7t0 ̙ne|mӶf[\='Ɠ]: 28 cwoS;x+B ۅzƃy%m+T%WJ\΢$\=}-alQ?ܥdX\(BUo'N ɭ@"G6tt*oZ/&ybk!7/|1A" u><;g?r-?<]mLsSЃ\!.-䣮 gL?֏11p kܒ=c=#ڽ |3\);S #B9Ȏ : 5_6 q>k1Ƙ6d\^ç~'>'~*P?}#cb~-\~l/chZ"VmƯs3ۋ/c}I~uIqKյgN*Y).U ,:-]|b}, D>KsK2spAS8ruۘ,O Iskd/&z5mw- mݧjjm'ix>A8nCs$[EC'kœ&l-ېA!˦u_}|,u+b1E;qNsCBȠ|)q@IDATP(٢~WSc6EOdt`OuݘmSha;pbn c3n~3n1fG=f:3n~3n1fG=f:3n~3n1fG=f:3n~3n??~ b! [z?K/s?xymNihc\!1^c.͏b{mD;ScžN(jػPx^E*sϘ)jhn E|&K 6b} 5Tn٧"593ߚQRmsj8Էw9\#u} #:XCyAx%<`}Q0%?GWȣGu^ #:XCyAx%<`}Q0%?".Rծ ~O۹ g> RccGϦH[Cl|d0Ǿedt1bu%b U F! (Oztl8d9CHPЃOwDς_/ ݅rEE-16WQdpSpPtx&?2my*.>%{2yLmf\M#/щELi)PZ'[ב_P ʀ͟aޔfv*T(_8SuMН#`?=Lxk_{~XO<6y]/2NFvd̊\)?Ƞts"scM{ldc/U~޿ %{n_w%M)q2AN? ^~_{}re}vu]" 1.}xc(c[K.,q2}ԍV3;)8qT9zI7Mjgvmgg1ՒBsKp 7/ml6J_ʸU~x@~>{~1@?KѦz?x5?c{1~G{hG~W=G~Gȏx5?c{1~G{|uN'vum-Qq[_'4NC[_a'0+ GNzWj#¬̈||e_#}ɎQ/B٢nNݹȠeL'.ʱNRQ.TR__oҥKUu/}׿鱀kfM\l;ۯojv5ܾ_ݟ>kg~5MJ-?ĖxՂo#\ߴxjv}a{dѩ轎>Mw;֯ˊudf73ʑ]wfľR_Tdܤ e` L<i'^I1eB,~# lܾʿer7۠~˷m+s3Xl3b7uY죣Jx޶T!#8*G^V t]gdF=_8<8@SW_~9iˏcmϟl^yHNuuiqwt1]ݜ>hwmuz?M7ݴqȵŘs?kjon}nZjjZ}nܾsO]sU>B8AimʷPXk_vwo-~*-cAr%$ȎZSgȂ?8 Blx&rDnj:GyJ=HBW=vF8Oࠣ1szdQoP~TteQ'uUZg#mvZ>\>d\yEңSxlz?>y[z#~b+639Ӊi!.x.?:q=1:qZ|x`_q=5;qAk~I](o_wH>~g`GӖV~_OW1abc|ңtk-4I7=@@ ):*Ċ` gL_h'Nh w3$rq9eù$4_ >vJė/|8b|~6p<ݫ_NW0kEm3q*>(7 Fȏk1~#?ڗzl)uK %.U/刂 |݆ 1U|8]WwBO8M_&j飅NP/!#ҩLŌ뺩re9:q052N@[g'|q<Aǹ.+l3[3sĜ31[wl.;w_/ \vh=FWW׾ ox~/YȠ.GdPlN6ĹF'%E?էtKğҟN֗LT=ʯ+,/Rr:S6q@ryk,[oBSlc$&Qah./cm~2eB8JGuS%ݘ^6ƱO55kK,tTG}h]O)56tE;~˿N&obMi{ĸ5=V^^uAkV `>d`H6Зڣ.g:KV)m >wݹM> f@)y\ 8$Sɟ/ȥK]P}tgz$ŋóӺzN,;bu]7`Qx~0OJ>sej͏}gB+}zn_}=ǿ EZk>GdWEU(ƑbHE~N_ѫvS8 5fPc"cP\S>Gv$M]R?Td Qm=.bl+[}2Ni p^ۢhoBH6PLtu{l#֝ zLd7=Ov(rP%bx5?ڳ6]XCc|UOkGWu`O1?׻\9'3bc\dcR_{3^;:LJvL@҇#\$;:/pT%S:/щ%v[H 3Z7O.:%IR]G2>6SrwxGu^?G9zGFRNe3 \; mM2/1^jhW{haO{0^;\ƌ)||A|)"_]s\_g~ı.QW6~ng4l >gSw/N]ꑟXx^Y:?v\gإw.Vyp+(1Pˀ.*]uUu5Ãst[̟XySlLvЃm|BE7X:#7׾C=4>o{j65>dڧ_%|r4k~ʯ,25?syzNB-vu.b86؜əv݆ z K~ 6,,YS=ަdctpO_h'ۆ j$:O_mLY1f. /.7=3}w7x\绯|+!ڢϴ%H[B߹v1m %-gܠžsuETesٹvh_tXS3XA0~s526qt7_XcA&G7Vj1f;'h'ɆnÜ$Olp@nC75Ur4fk;cMA9?c@o :?0+ʪNM o~p;kD>ȇȌX`6d|Z{\](ʧ_ٗm7udBxS|R{1|!Cugtq_MH'IDC^.햺^g8 h8؃r tn']t0-/m(+>*$2܈*'X?%Kh+ƴ_{xx?_ኮ?zO?׮>b ^Gl07m/-9iÂ6%p}EC"5$#6SK->qfWĒ\~ ~h~haP\!c+3;/%SG^՝GOכ2V ֜ p0q rd0oǿd~o$oPLtu{lkV)ňN;8+6Zn4?ϭgYd2Z킊C]NRhm0.PLFW/߶owuƪ> _4\X&&|"/;-e(}J} ٛ˟)8*?1"$uJWNxbS9E }sݗ1ΔFN?kO|ZB Zse_gA3@lBPC|ƣ`k+EE'>؄ >NG?@ߎ_]Bbw+Q2tpc:rz]~G-[@;WBGv˙ 'ae8[o2s$a;me2c25O"tLJ oy[_}|)W}QjpA T#ӟؾďEv_넋P4V_k>d{_(us\Z_ۨ:7_k W/u_?U?cfk,΍W>V:SI,ԅx\+SD{ l6 `@EI97x;2ꖿlnd">˼rdŃmԉE{Kǟۧ'X1_9s菺W/hQxk1k<]:)SO X褊z ob_w픍/n߼?w=? ?.^%>?y=weoRp9o%ns֮SS^G\b 2P@;PQc A[Jz9ЈrϰǾH\Oщ=߄h1OL,8(/w7l:oO~^u=Pj%%<2~Ls:G(q<'5lhXeh3e2A\V@WigR{92-9RY[є|}XE-f\[dg[d"?nh1jhW]6,\qs_ݽ} t?sȷ?} y뷱ˀd'}&?}+CbQ`c3_t}jqO\-x羑^~dž z?-p!c8m"+~.QB=/i3~˗v9ӕ{|ߵ-ow㗏?@C]ۥ6dps ;!B2:|ory@;pg@ p0̘,|6ë<(g26l\1DWzϥg~ (}:_xw}|:ॖ?c#_vt.bq+¹/D$Ҩ>Wc{UR\~l"nGւ_s+j6u~piY$J,pУSJ_e: s~2_z׿{ᇏ@mRA] ]sW؟,zN¿@'c|͍1%/OqTI[ U+‹݃{/v_Q˗^#ok]1J?.[6>tS쾭jm5{y@;pr A8o3fk hwe8Bb*#Ɨ}Η_Ư*zY|3xN{jnL_z?>ri^W~|ɓnI{]vw=7O%ѿ,rFjvg#_:/1s%+!+scF^ eKqNUrdt~`o_]q%?-mdsglGX Rxs۟˯ Y\dƯoqXo~7 #؅nmk9:n߽2c[?s4} |iw_C-Wz +} @<șQu_E-I[ϸ{K#{/uu>f7G'_dbF8rJ'Rӯ\}c+K,a" 3>t8}pӰee0a.2fQjl :FikKɑ(B(ˑʗCb3c^Ϳf~?~N<?nߗ.U}~q;+͟k]ccV{N]~f:c(n&g,.<0|tc<`v۲'7c6~`GF{lXӿh{/D뿻iE`S}l(ˑ--h'Ӭ,:`TvNubw`NCFC(,rNMm?.^o_~9PO6t{K󾞦f=н})y 7)'ݿvw'廕 uMj8((Eϓ:xn޹p\޹\޹\޹\޹\޹\޹\޹\޹\޹\޹\޹\޹\XcX.G%4_&Bţokl/cXu-NuJrrvG%wŬvc_x=cѾ\rۑ..=,t#|. ]:;?1bГ߆-=ymi8:PNSbN:<;ux v@ةSbN:<;ux v@ةSbN:<;ux v@ةSbvxw?d0+QG\PvE{5~ۧ/`'ڲ:qAqzGO?=SsZ}g2:ƆW/rN\P6c{5~ۧ/` 'ڲ:qAbU\^_~qoW.[~@F(̽aJщ\S2p3N$T8pb=W{':zOsy2?j8gn UEWAb|?pI_[ W}?k ܾ0|{㧯>Ѓ⻌T$61b{Sx.TQ|tO?T cZ{W;xz+J,?VgWw5 ؿl~ul%o o;c?<Əv?cqN]W^~}DkhڇmY]\0.mH_5~gÉNcxg]F~j}c`_AG\d+{a֮hSANY-={&[ pp!9(^o |IV3_26>S /1%+>Α G1'62\œ\*xTx$K":G?0(EKO~ҕJd|_DHX/IG\dx'T']DIƗEt]/o{{] Xɟ$o:~b?KG^cJ? ~?/'x"Əekee0\4e`8rrQj${q\ٛ@KNG_?K?et.;mLcE^+ER7ӝVnַLr)_Ai3}]u+tm'܆ 油 "60R/뺧V;Gh+60=Y̦k8hw~,r]fX1~n1xb=x%>fOl`쿏y^^>4ިw>feSs@ @[qy*m.tYx{h}?*O|.O?1\*7-N%8oU@s7 _.[_6ig/Y\efV>1^jhW{M-Yw{߹c̿p.z.oTs[/н{~Xp^SUxc~O}{b˪ ؿ(Nm{E{">3/av^ͽuտ 0uO xH7҂Wkq3Vr˜_||'19i2p%gnZ(H8@+hIHrzq[ZмnJM9'3nC=SlLAtt21$3V!6t/u8`6&!1s}߂o;};}skh8@~87e\e@pAWI@2pѻ#6_=g.ǼQo9P+qK'}n{S›.qgaW쿣_k{ {O1``m+7uKG!P--1^8_e#Af=Oܟ`n^ QN0nP\O}j>2p2N:)~/7rJ'ӣk2rB^*]jL9SBK;t# ㊃?r?A`7=2m7qn2oAF>'^BEOwm?kttr3 gt˗K16o\gs! _59(]]:g748rovm6 pp9 :6 rzN[Vhg|0OJ~+;rWɱ8č8`_}bIk`8`_mbIk`~"]_WjW讀h{/?3[i|At9Q/ , `NX`\왌/Ƨ_#rK5 ËJ Wݟt\4:Dw;6kޅcq|q~E{=et/w{,U~d%No+ M6ou-3sKvok~u=8$E~Npn~Ka݇+ؿhGzrvp¸A]|tY%oHw^S OWh[GG} cfk8h'Voc.f@ mȮGv;!z1P~TteQ'uUZg#Uvpm:hos_lozo3gFoU~] _{_ w˚O}~oWQxg1o4Ư=.U~?y?OYo3Nl;-_Zҩp@d霧:%Y\q9aR_3 [ZVh'Lh ⅃t.}j|ź83̟{d(a> ).#_khg pt2L>Ob#6/mF;<0$_+Ytu;mq0X =Z 7 G'zx#2~lG;<0f >n 8ȉd Jېmh'Zd&.!T#&qi>.2@IDAT1GH#qy}\>B#.GLH}\q9brF*|4RqG\#$HS"6&2H Ѓ݆ җ6s]cwn+mir%!欰mdC]ۥ2fs:1ޗ+o!|<Ƞ! ;#Wc k.sǿch[R Z_t`:zG,Ns\n-q>0gy?1^wYQ<O?\ҩ`x^ev OWB{ekS'pp'8d˜bmѽ4uȿ8~ ˱[k_ڸ⟃ HTLt8Q^( --q87'k|k>'a/_شkҳcl?v~jH<׿CUk/tyj,g G /6oziu.co22p4|ZŨ&,]TQi.09\lk쵢\0Q>U.gL>.ud_|"u ]Mu.w㨦t¬I>he ͽ(G]ζ$ۯmK/Վ~ `[E/{kICt<2/w_Cg:[-B_BS﹠cs{ÖhG ࣃ#$A8uEl;̀͟0KʭGs(sU?rh=]1b|9o)،^~0.PLvLjC缕|^ݿ6-YaSݍR{~?uӶOwa:+:y^)Y{j-EBݧ--g~<><80q*ٛK)?-'ȑϯ69.<]ƾ)z.uD##6p|.cM:s0 {E-`q1gߵ.Ny ?:,gg,3Oޥ^'uy`/I%7[eg83?GJlةG6Åp_?qvj-t5̎x5~m~l/֗nxؽV0ovJݴaFȘY2\׹="_[]^ǫ:1U&t9%nӷ q1/Bk}o;+w ĝ'ֶRkfůK/􋃷ܫoi[y_W(#|]$P`\lFÃ3jrNԸOMxJ\c咽[k ۸ p@!Au ~3vL>aီtA83vL>aီtA83vL>aီtA83vQw᎝ue:Kvq]Cěomvv_>}ߺ/wIYR\> u.ⴲl$uzx/Wп=m_ H̝q\v[,tM`U LGǑm 1_[i8oh/% zLc[lJe~7\z,-}pyjÅ21 ex% %KvV?c5v*Ca }O{w衇!,d0km4]y@;pzh$Mt q\\`sdžb[o)-GO0_"2o0Z8).R˥q_W_-6~73pk}h7{zWY]}5/x[=m拓(؟;wǫkG+t .)8>Y;͓=/>gSS~rl<Ο?{z}Nۻ i=^)Vrcۘwjq}?„կ{ '`pj}"orCW'* b8`":^]t.Gu}\n 4 d~ Ŏ`c7?_cq܆ 2~|}DZfct~?/w-w ]pbwZ&u@/|߷s{u i0Ƞ$Nʈ7ؓPb>z᰿ihM.mlTWq>2WJ@ s4-`c6c1[_e`,Gc+3luP_ňsh,.\p?m\ ? wY%,J| zɡ-P\k/̗b]"JiD@0_'tT>؟x5k;&# B/FiH/8Q-5ym r _?G~}+g$Xr]5==CrOQ(DH^[?l"]dX$Ʈ.Xlر78qbXY`䏬ec/`a˖HG$Q")RDI )J%3=[?}Vzݯ^w/P}={=z]uUՃv3<0ġ^Ko?֌v7w8=~CF?G,=0Қ57\`6ב_~Im/w1^|ߥf.*[p;jVP| 4kV`+0UjVnq񦤤ɑU; ~uJߗf#+0Q^Z/K~-M9-c{1@s#IGnXg+q۠Y<*pyHŏt1*T^_}Oyct/|W|iЮ!1f $_uZ_U|jR$o~Vj?@6QS띵.cO+Mzg؟BD*|>K2d1xtңSXC#sQ21uh Nyʟ |#1;/]mN?T`y E)&9@w=8{Ʀ5d:B?Z^yatT[ pq "Pcj?FoOg1/ꉝ`hХL27q C,z.r+R>cdtx_N1>l.MwOīy>6ҋS=~?Mkt|3ky}_f ZU@`Uf9́EȻL~zƚF Jjjx]"K/.Gx_;t1WPO5xHst̐F}ˁF<ȡ1^ /k]~s*X 05~A&Q:GtjQ~#։D9x#}GO?G9x#}GO?G9x#}GO?G9x#}GO>*,ydPtPs,^C7Ts!> Hs#mtC^>/NU:Olү?׳/ydn;_Uo#h|)=_MK 7tүY#=四Ki.=4z׮^BT!:!אjT5]5ETžŁ J}}cLk.>4Ų_9c{[ѫow<_)O-9+~E-2xv)do܁ϊ_+jVmk MB2sxǂqYTڨ j>}X0a l}ï[{-U,:!e-T!̊g<פo?FtI;eC n,c:Ol1^Fz `ΦL~^Q0><1^qRsA̺'-Ktt[!S/]5Z}@O  9YWf9lNV*'[O[SU\rE?NHs8~Om.>}KkFs 64wV%|&ڧ7/HDۮ|bs|>мIjz81ٟo6o^tWig,:d|DQU]T^XydJ].yׅWS|<cZfŮx~x $-/ SӗNܵu$Ը15 <4^kV*~}Gt!e1Js2vx}Fs>IFP1'8h߸ho^NKďvkBME4inl23ng Fu[+p`+P/ةQPg2bAӅjz? u:^&'v2e?׳:o?+~ڥK?oghv曆Lv3mS|1q~rGF\s i?|CneqF^,k5Ze~qdYq ַZ{⁈~2\.,rhϏ>/]?SNyp.)e1^ń,:rE.2E,.sE忞!r}vE \P>']9uɯۑb~"DFi7l> ^to|{tA#6r͍/lԃCws>ZU@^s7_j.ԁC'9q=Xhc_`Q?9VЮϏyuPEڎ#JYc"g| <]zU>p6_^^x.֮o?:O`KmH~|A؆t׍=1{үPgnrnb/:Q2WZ+P+z^@sGm^~jp@$WKTZ}靯[(ع>=EPcػzpP|^cDLCe>ߢ2c'N'_z_kbWZO8ۅ`kAわy*ߒ^}.<ܸQo7ؿ=>7RLj%hi6#2>'Zv~Y 6/:E꭮NK.8c9ãVVi *BŋT:2RXd~rBB]jþ 1dGl""_r~с//;e»ǒ['(1z奍?oq+nmέ6[W,mcrD=:1lM_&cyuz_~pwzA)o||ũF0's1Z@M}_ڊ̙3#oۛ=y@,:8}DW??5{] ݐ^}\яMY0>|f3˜w\-N}3&Tx͗^mŧ3^_y }zWC.Of/4]4/_~"qQ_k?\ƹxOn[Ӭ77Wu~W?4gT#ks561wN9V ڭX ;VvW2q)~$mo_mP{ygmN%'H< `EiȪ} BO)3Q#ݢ(qC74Y,|.|>g/ڏc\j+_j>v;rgcEs#QsX|~ ydw%WQmzIXM@{ kݧ]]X鲟Y9u1*AA#^r-*óЈO\lҭ_-/6NzpyE}#%쐒+T0:hĻ<.Sk]{MzD(apZy#}>8 21ZZU^X\H.: }aJ5mSO5/Bs7G-+VV`*[ ~~=V<{V{RsYa_x_ߟnųE}?W 0l?NYOj}G/?HwuZ@Z7_G;3,/Y ~uWOT^XyR-Y#}+Lo'oh߬?].c)/6H~m\~t)俑ѓZow <;hxѺƉ7{ⅧSOw d2gyuh7{7ĶwbjVc[<Z4r(=7m;mcڊN믿=VBrZ9Vj_D_sU5ف 1/cBGR>Ѿh%jNn7ogӢ/^Oj"pq}wczgҷouGxvnMw,x9/>7^d$چ?W BU1,'*Շףퟦm{կ6^?qB3cOOjoK^G染sL}1^.>9&dʘN]u5Obߏcߵjx_AsX>]7O~q.6~S_s!:87og\CTZ+P+@+C*8HЂޛ?KJ jz/.llllbAiCyQ^kVmg`UV9|+\?nXO7vM3̫Əh9rl^O/T@iC:5 SI?)4 Gd~_'Z.ZBQ59srM=wp.s}LkGJ1q5,~f?ۚ[Ѥuճ0=@|@|!Y\ ~kty ^T#ػy iV ĝ'9/~9.s~+oNEvuzw|RNMy&V`Q^l֚sͧҭj:Bst󭓉 9ċ*-g#1['J\\~.a둲犑J~P:ig8xZ| Jytx|V`+P{j䯅<2Ji+@^oyDϭ HLV=W|kͷ+o:R]%kq>J\/Tz%ro|lp M[Ӿ%.PAC&o(~VL*T^XY^Zt2 2Ѿ;iEVlz//ؼom׷N8(EJAeվ$kU7d椏*^R}>a__}GKEK]z]ޙq!]IN >j{7d̃9ukWwǬ8~wgVGܷvui_ƦP~j:ܶG兌U}x(XjjvV^Y*9hM;R7^_ϧM>b{Gyy;ќ8q=ɈxR~В0j.:ԩozsB|@e|Xh ?o=Bx`%/}{}ςgZo6Ŕ[7)/,dZ—߫8ƃCwk?=v 7w9qCܣk~?5 hΡ~EΧ?O۩},m{nnhqAPrq^9m^.֏b쪙U?bBxlnO^ny-cx1En4~-GoǛ}2-_qK6/_ZNW8ſ%.y~!mgbI|+_i75o|['!WӁAK^t#R?@|,zh3F?֪uK 1W< cZ/&V}i-}Y##֋yƚQ[ќ}Gx|3>q銏z?v45L֯i.Sjԗ#_}Gy5w'R_ ZUW"!}*x?7}%mz,ප /4o{`?dw^hS jy+ gA<2h<)y@s],'/@zy'Ƌ^PK_(d?N6[ӛ:Ph39ۈ8ȰEFߩr%#O~s;_COLMxUV+P+0@0EG8\[L ~=TeNj癴ôiPڊ̙3|gsUʉ̜/ p x͜f]kX8:Nr1;~,i]Ň|m[7o 4s<4#9U77MTaKqs.%= 4K5`#igm0ޟӈ)T׵ AHb_ԗ9eNi+6@t'_9a9c6^.oyH5] T8Cέ}iۿ~?mLrټ|^ckY;#!jhZGsȱz W7/nC%\=%W6Y {S+p+P/٫:/bӷgQϢ?GVt#mH鱀Axǚ77ߜLM,ZCKryOkyW]>?]-ү:i_GvPrXDJIc76^\D}|Xniu'</k[MȑFυۑ¨nkVqOrE}Zs? xZj~~6mؾ7Νk8vX{rbdt`9Ln0iԉЇ Ӂ0~XUy5CTMsl^c֏Ђ_gDu?~PjNPXzo'.ZY}ޗafSi r=?7?oio"Em'WZz`Ug~ CgM z顾G΂SVsi}4mL[{NRtZ7([nc^x%COɮqb< \Lϥ[OsW^+v]Fni_}V' ϥoOT葫 Zr62x!KvwJjVj*d=Y9L2x#4wm,s4^/ƅkiۛoq +^29}ԁEZǍ}&c^}|+b]pą} 51||Nf}+ORj-s} 2毷}c=cmrKxE}ők|b9_ &b1Ѿ-GE/+~a@pgurߏ"tq|б4A-}21si^|+{7&49EB]W? !o9k>W7D.>(Y:K2ǵGޝ#'m_JAd'yYP0Ns21D2ϿǮ֚X:9yM Kv~"` ohԏ{,X V3ɝ$g.cſd<<~1m?[QҳWw~TこE)LN.Lgj&թoyez8A/;ӂ_ ݶ=K#Wl<Eoce1cOYovr~@ZZ=P%‹P8dع8d tVZҩ2E?>m/!qIIVl=\7wqGAWCNZ\URh-}xV>~I>"lm;+dn@IDAT;2fI=kEmg~Zʯ5ߒ1>/Տ9~]Ӵ_gW%+ק+^}ͻr~o8_/ L+P/LkQ]-?|+;‰m4iCcsTʹ=6mŦ"{l_T|j$:Ayo9kWM5>J}!S}lm'ҷzҷY_ +柫W_}x[!|Xc1b<&O} @o ^tW6t^8^W<.:\wZTz0fͥ, ,%EžpɧLkn A ;`i̭+⫽$Q_s-rx}cap<4 P79>'y' Í) gq\bJsmc>v.Fz7?vϦ81<"T3iA򀪖ڢFگX :;oX;O֓^Z$6-?adEdNt5ſpx)m?[VlO>dsܹo{sѭPrtN58\SUZ? / yd RolcXut~1,]h+G4+rJy89rZsVkVcV`?b3V+B[2!%$ \ݛAMx衇oYlIeºL||u۹VMs̫1e*P.Oiݼ6}#W7vQr1/|,Jz5"0#\3v1RȵKkǓx_DclTH֕ϴp"hЉʟic?' 2N=(8h2//U}T^X^B\j4䵂z uQ-mJ.:tˍYe 0V(d9 t]89cȈ'RE̹qaW|_~}#^}ߢ=qqX|ͳ>[c!jO1xK: h47bt A8C3^^z`?.c~..}6?|bڞ:5z/.\xq|s +):Jx+X ԗpꌣ:|d57xbzlw?oJoL}EϦMɴ}(mŦw6'O܁8xsYtP٥V~]wt&>yGт_?q^|!=dzA]&5*~c>%|_>y@K˖o<Ϥ_x0kZWZzWK(ӎYx :h kVV` ַz_ h( ȤB@"r^G=O5=X𿼶JGwZ^/ُ߬z:^_Hgst}sg6&}^|-}>g<EՈo>C1گX :;o19p޳U/u7@Eh},S2\xj`N\ҙArK7i ?xyj_>2GXWcLO*W>]_~ԥIw=LɂtC?-cr K郥ԖrV|Kcx=>Q yDޢ9E1.njY;|!}kޞΤN'_-Sr^1X_sdKJzF|+F^r~atep9 L+ųG* b"lE_rߐ C5wqGs恮`N`O'UN^' Zir,S1 R-I<9.xZAU2ei>w xr-:\ʟ}]T-~^#g3?:n|7dz:=N}6?]RjR+ -wl*էx~Bc]w'hGߩ/]۹}?8ck]9!*&g4~I?x?rFc}k<ƚG{Ei~5?B5Su8 TƆ^諘.ȏ ߓ&I"^) zsrdˆw?z/'O[S@Llȫ} |L~ZLWӿGӷ6ӂ$#6;mQd?!N|Qd?!x L+P/LkQ_g( SԐ ]џqÇ]6![>i;җr- ) 'aA굢F.s\Bŋf z?FLlOW'Qԏ5F8#8 1˘o 1o^q~gcGxb|_+p+P83XKXKΩh/(xaR?nw}8t?*A?_{XAW}#]Q`} }h/bcZ'S/h>B]K,/|%#hnvg,(_—c\rp>+ȱke|z-71-&S\2s>8~*Η+E}  }k~ hqG>zY SCڵ^Mv!_p$i^G}[ 5(W?h;N#_ uyW~^~ufVtHk('(:}!cF/xO\н[>9V^q_3T80G0ޢqhCP7k_ /OŖ-ki|G*EFߩ ղ`/K}&/txƁp_ zUjT@g ΋hXs!@Sy%=.c^T^Iۭi+'x9w\=ubX|9ˡGlN698dn|9lN698dn|9lN6DK-;YHL}l͍:xhe%WOЍE)r:CQǖ+5}t\-SG@:_I//źa[ʯ0/h. Cs*V^֢r:Ï v膬 |/GY;Vz{~2~HJMx;S9qb VQN';\q_ xMV~9ud^_pwش/tjn"?(>Jʇ8E〃Fq@KF"O&m 7 ?uΚϬxE*\r>AKfgV|.*X <5\t6͢]zҒs* /±F_ y;{t@wxJ-`SCW-:J׊l\~r[[[k9jIC57&)d9ȟ1>s*#W읟߼JLbSPᝏAɂ 1lOr5TrAkԮZZ^P+ɢ\}t.x!;Ql/hׅh NhL{Dv^N:ЛNTw>.\o@Wۭ1gQ&9hN {Kzb%=9r /_oBcڮmZt8^)X|?j{OнS?ckV*vu h<9kXz_7Lx!@SvF^xXࣇ.s^6jҶo[o\9P>8 \|y˪Os]j#9>#Js26fZzcdSɔӼ4.xQ/NJhKywv-xw0DJNB? '~`KL\s2dF%+~?WkT^{B@t5]1cgYݾ dw p]w5W]uՎ%Nb? O~`SUrkI_s=Z;o]RbPP])!D|E9e,,]/_Ps< {7ԍ>vqi|C.sxƕq1jP+ |(zQ-bm޿) '>oy/o%xyguxZC/Zk/[gȯ)-} 磟KGr-#ŋ,]~=GΣ+118}8>RGL rU,`Q6ržc/|"]z/ 8$Vlͣ>i:`sЖ ީ2j_Ǿ^GWs %.<>ǐ<8 .|Ir.Q#~N"hn|d=gsX%2|:#w_=g#~ԫqdžm7Ӆ)xQmu3c%'t^:5Cˇ9ӿqD_/.{1N P1>Љ:./d'c:/ءc|_u\_×_^z`n*7Ë6_kQ?bV߾"@lK~6m{6=#/R{0 .wVf._MzB~Wv<_ K\,7񍙿ǿb`\<^1ǒ7q_>I,ڈU}a20}}X42x<.{bA_C<.0<&˞XЗ<9ϸ.sK/7cu{WV`+P_{@~ 9q pZ *plǷǾ=}t~TRwqGs7PC9\?c?T7IcxA}\<Ⱥb鳏6º?xQ`K>XcSkuې 2Eszd2  4ۍ?pg8_z)WX?0K+gǸN^z5TŵM걯>v#Qm>w^|Nv^=Onr@m@}.\|b5ۅO-'\K^WN]ֳO1y]}|uٗg(ZU@3_gXGewY\by_г蝞Jq^ӧOpB{!@сWԸ@e-``}#:?߯|<+E9;?V>cW18_ۭp~j18W]>]cc~kZ#mjZpcOVh:< л? CrVj஻jN<@g_җdXlJ?$11k>[!-cw8~OGb|Kֱc_h/TuAc1p>P1\z`g>F|я$碀xո ^.‹7ޗ5ɢݓ'si;޶<ͭn:@q5Tbj-Ia_oUx0М=:/?u<'Gu!<>T80V}tTZ+P+0@PZq*E/ֽš2ɢOay%.s1N%z/OO<ќ;wy׻լfq|!j?9Z B;9N<]'6hn!!('W^<׼=m~w6'sxdwOPd'vQ5ŀ<.t}xr_>Ln||!8u ||!a`rlH>>|~JkV*zyQЙb\G79쏈 B~S,3mVPww7'NLu,A~\i=Ο?^;ȀF?Ʉ2!۟^VIv;Nʹ¨}'goO<,_N }--[Â?Wלa]~lBJY#W읏b|f?k| _Y#W읏b|俶ZZii-*W+0VV#dCOj/H~՗-~CŸjغ\2wO=xGn[M oՐ7}\~>Ih3]s\<Į᡻wrfs̽k|ɉI6K>G>cK̯/텗+4^K| _G_JF|E|Iq%/壯E{a%Cc> "׸_—ע1JkV*~}ТyzJO볰&&Lx!@SvF^x|AKXW; pرc̑"1]7bwϾ犃Ds-rӂ=ӷ-wg Erw"w.1Ce~\ [i{"m~/:Pگvg-nC${l;i.|_?ܶowPr~ t:o.-ZJ}B?8x%|/t-ZJ}B4~ ZUT`y!@%\Hq9/l/h\ӗ.v'uH[="@+2$w^MBT/{.yuaǼ/tjﯿҟ~Ň,:Y2bEk|f__lf;V+jZHb e8wH} / |МeFTv^w]_'rȂyE6ΣOx͜GS q|K2\6yJkt7oOo>[YC+>pЈ920Ncx"w [ǒK y@w~V|ic<_ Y~ē+Tzgŗc~*W^Xٯ/Kڊ v&+ |o{{8a]MxG.GVv>>óO@s_+.WƸ1-{^%ZcW=Ʌ:JzOk<~]p'Ϋ _P0u*o Ϋ _P0?}D//Vb L+P/LkQZ }b`/:D ]\V͏}G\tWEB^:h '7™(o-*EvRڨœ3ɶEpN+><_l-# `O7-˸ܽF! ڎ[Y/FM(67c״_|U[1]T?֫+&U/Nkm~E}8r"~x>1گX <5eLxrKlvڋඏ%w ON&h2$qO_85l]wOC ms|ߖ6Ss]m_Ԅ>uVVi ,_Sy,\I/H} / |МeFT~)m?VlOnΝ;y[PN_U{5JکyDYv_\A*Y}ß ҂}hóC|Z5Z@ tU@Ҿ*>m.h@s{MxB T.Kc ֶ Ȝ|;-ǮkߘqĮ7P?;8Q?v_3.4ګߧlD16YĪ XМ>]e &7e9<6%_% ZUA+\?L}t%W.x!@:l/h\ӗ.v7uL|_l4vNN\WTSӲo2]zȄG~j?_}(gZ{-?GܚZk[gy@<5Fj,خ>36D=~c'\|k}v9걃gn ZU@{@T@gXLw_ Jw^./E^xXࣇ.s^6j6{N:<]w=:qIQOwjB-2O1<^Uo,Ճ)A_}.GoZgl)^u%|I/źaf0/ͥ:xhe`Kʷ+Kz|Acqf%=Acq{#-jA-n&#$2%CyEׅz!|P|.Fx:E}YC%- O>5@/|駷 @'9OjnY?YW[[>]vȧ7IPU+s|gZ.t C:;|7.t C9;;|7.t C9;;|7.t C9;;|7.<>U^+j>[ZJ|kNX{Ĭžc/|@C\ s{6w666~`@M|W_-"5 5QEd²:#-'ˠ lj(ŎzLR5)=2yOq5LKzaZ'WQs,>=gG>Z_?[[ga% /tCۈ}.CƪZU@ \s<o&Y4.s܅9R,i^zxQˍ22|OI׉'{DCWi##I:50qA:^IyrGxq^:59?oQAѻxaK:ğ6Ճ[y>F0P%COOsA-}tE?vPŋ/Gyџ+#Cx/LRۜ :h 헭OR>%!h)p>l}--O@ Q{Z\ \h'zg/D?]W2wo kr.ʤ$>em䅗`u^xSi{~:m^뮻cǎx!C Sɣޱ9}><'}9^Tm?гg OD?z9K *KW}'K#\;?+4^1/xrJ{xb?*KU'Wϊ/?DǬZU@ʳ_s?Њ'.飛+^wx/( zـɑwz/'x߽^hH% rLjTj?Q>'G|E|9 g׎m}i} &WtD|I/Yh/h~/#>z닕1Q1?_W_ y,ϧۂ>c|һ\#G|I/_} Tx燾 Xv BU*V@ gʟd CC.l| V}A;^>r}䢯v:mK[w_uۆÅ.;ᐍcj RR _\-;3 /? O.?Q~d EYaEx8">=>KY1nE\/>ګ/ d_qh/b~^e… ٳg3gδܹsV`e+P/Wtg%TKxɖM2 vw_Mۓio}[nmDE',h@5?Hs؜ljasV^M-s9lNjasv.ɶ[Ӊ~E;mXǹ,\W ~EҾ9[F m5hC>:҂;hF}eA=rhԻ/uk;A&]qkmc,}:ߥ}-(Œl;@9>'9t_饗rnVV`@jtFzO5.ʤ$>eN}A^4'w;fz/?^ɿ?NExN8pBE_['~Դv Vsaı;4l)wq&60pr0p7:00-_֏V+P+0JU\qN L oeA/992o,R?W|.EC8QNj+qhq1>,R?W|.EC8QNj_t3ίo ̯jY=  ډv)KxɖM2;p/{Ƥ@IDATd]V]˪ҵUUm@a%7۸۳n%#@ %@U*,8'Z{}9+bsZkO^]79\/}Kkvg0ta"Ev "G~oLˡ}+u@hb%glLCczS_kܨR}΍kn=W]jTli<@v>qȺǚ_#[uъe_țs$k{?UXi<@v>qȺǚ_#[uъe_țs$k{?UX\&\ s a>274|ܖCqVk*s]zCOfƍzʻwG>r\a.˞~Lb<h{Qqzý|S7׾2g]k<~sVCk}|]=<[YZDv ݩ!k<8ryUs#w s~c O8r5xݑZDG_?2u2PaQx]}׋Q-a Hϒa17( K>up?5֛tބW,6r-xE x饗>ׅVo`_gyi`}gz]j$5t?_ڲc18ʗe;O.H^8kΟ_;^F?X5u_ ]Z&,l ;\ŵ|=}1a  Ra2d/\7󺲕F|-?Wen~.fқ]hjjР$}?+_X!p]%1r~^J?>+WK5~FRSh_5(gHz]{TG~G#?gEo]Yu?ZW{?sndW==??^2__[2fych22xbڨV1c@nܥW#{ e@oZ]f֬ov =` & ^u__xgj&uS3Œx=o[szw^S,X=~cKvO_>/_$gmYCR9-)z5ڣ_|xb5Y}ؖ>U:'Y/h=m_5}xb5Y}ؖ>U:'Y/h=uݟ'gzB߿̿Z7e&'],̿6n#mav0pr$4g0poЛUmرI7W}ouIs b%[8~%?-;7|s'z.?E.c/#I s8$11`{,>LjC#I s~8ųrv%>#o_7,O鯣G^Ou{f^[TLKwoϬkkmbiyxMz{mM,R1-13>^oE*;uf7g^yB˿>?2fZ/[ߊ @n,4zӢiFyϥbPk*VF^7-UeK\iWF3xĴjSM"k9p#!^]V]h/_|K>-7Kϯ⩍yC#LsϹu=u>Z}97Gu?3Q7/u7WO]~ͯ6uz!k<8o{}}4;HkLݰ{o=Zj{E'[YmkC5=]~n5jS8 <M z#@xZ^ݥ7ă&$xek|} }Bsf.I̡#ズ~vk@ן{?^5Ǯ:JWn]swPymߑ'˳0+>c+7u]\fqKaN1wfd@o^a7Ǎs^xᅧ{SH/\[:`HϷ L%)u8u._"|>1ȚO-. u="FCErVp׷G]dk!k|" R[ף.Z}5~j>u)QZ>yȚu?5H j=_ӯѻvfD:qnlŒӓK_GŪ]c1G2f@oLޅF% K'\jMj2tde{jlp=~USݮ}8:R//Z?q6ao.}td볶z5_zuծzFr'V}jzUW#kzyo+w -:*H/VFߓ:l3 @7 *g&'_=pz#@y'[LldF~ǖL2pա* vM\PO6:s\Yr|~{֋:- IC/J^1k>b" Sa17(oFMLqNT _|1p8Gy7k`&WWχ$琵ə3Zgma[=4vf[jkmYؙn=SueCcgvOݯׯ?'ރmtǯa @VrݮTs3I ҝa@oXa77Q=@1~85ا{eǛoyG//D)" ;0ICzcw.\ߺ_r{ɻ0>'CGnOO?S_';d r{1~5 CkN,RZ-)'Mdo=85 ޒKkC1ȽaD 2a27.v72a\*b5nKeڊ8 !ॗ^WYrEK-kIc]}"g~>gEy{~?g]zB>WHT\&Kxo]ߒ.ݤ3G2';ori&@xʮ7qye]̃ B:PxNxsni z^!k< k~~"k<8x$9ʯ~j~~"k<8xH'9Z.ƃ#k~$9ʯ~j~~"k<8xH'9Zxѯ?' %Ebiꭆ^?k|[՚}(6# 8+Y< <ݚ) 7 Iu\zCO<$.[e\g}V5 .H@k 7(˙Ѻ V~5cr_E>td+ޱ_ثǡxF.K|\֬~åБa/3Zae'ړБxWCZ\0lOrTYB2 `/O_Tt֫sfO#BKyǪ.{ Ŏ3;ul)=# 89Y0 nok8!pBTx$ VvnhP Uv\͛(558pl%e~c_YЯxkwS\r &1;COV~go=fzw.ߨK֒܇u׾DO=<=o|\ ֭r 1Î @n:Y Y{MO_sw4HG}9}( [hڙ(f|xb5Y}ֻ:k6bȯZE|pd1Zj<ٌYa4bӬ G1n8ӒKk@n,z#mtЛPf$5i]^G {o^ |W.].BbV8>$~]9WO8 rZ91;5j}Ł)k[B.Q;p×j|]s!oyZ_q`CԨz5.ŹtǼF80šKjTe|?wO{◗-cgu5 ql[&%]zg2?tOԅs需{O-$mзlT[q=./ҾJʅrIf>|XW "Gԝz#qvMQמGF~f֫1Fk=7>{S9oF-_ڧyBUVcUӊR&\KkS/Xk%j?5I2G3@0e㫩=^o? P.kG8`_]79\/~WoUP^Ű|hm=|ov>9`.!k-zd]d]8$q~ CxpdSI񬋼A޴7S9/屆ptI]}a_Hjrg]؃0G/'_k%/s]n꛱;kRzGnP[;|u(7# *pxS}r! K/b5nKeڊ8ۿ}w{W6/0ek`~ߵgq c#{kS[~|mrY_-LJF=O5~W=[UWQYZ}5Ə[kZgma'W5yjLͯ#<^ }uSo, }q_]|gO~mV|vHYa6dmF\uε0p2rdTg0 0Jx!ˮ7qU5#eN?//w>sX>.yt |.Or_glυ3֛Hzu#SsgmxjIj|t$5v.9V#9Z={|tl`uǑ_u6{Q<$5f{>:bc=?_ӯi|sYW2Z>`o=Z5}-} 7#=fVW\]!mJz+e s)7nȟN@n,@a@oެΛнޜFbOd3ɣKoS$xek̃ xgUc7Frsʆ ,yȨ ֫[ZUgsY9-{9{8m^5_ufBFIagAe}e@WcVcUӊoI0_6[1N,{iUbZb KbGd@oz7֖՛Pj0h%5[ z5\??>vkvg. R'5qQ|kMǨZ;կ_Z֫5G5֯j~Q>FnͯkhO$5/D5Kk~عQQn:8Ѿ4[N@n,zsfmt@,7 A$0Ix} _G>rs]5\`(:Rݒ+cё컗Ͼ֤Πz~r$[ck=k GW?DCx` Z%Đ[8(ޤ.p YGWl d]}!Cx`Adz} 3<yz{r&{^ȾGkaocnZS4 #07U3oF)oQOR{8^曻? s^xŻp!8蒮AltI׉E N6"4)%dm="U1=:H#G#yx蒵#s}yP9D'W6:1/܇Бz HЫ5}jV_Z_w^W׫[~k}΍4WjV_Zs#Q_;e2'S[OV|vHǏ=I^cWCld=Υ9!{T|vߡz+%0pr,g0n.nӓU*=@\KlvW{,#IW1{_)1~rv_Z{Zk(kj c_yfGk}mwWW~~||/'6{ol5GvÇd?ط-g}7?[~0΃EzZحE@n)-2wd\WrH>Ǐ'~f1M>p3Fk]ا?O|uيq3bZq-~[vƾ>h_mqlGz>Kklؚ^}N@n,-07ٛkUmƛ715N=/^xsih5`UX>{<ծ LM8t|șxXtə:=^]֕ƺc\9Gs W?Kw>_ג[0P$Ud q߬^Z0 _gk8pҳdGg@o&S*}*A<@o=s>|}iNqwΙrl7Sf]/gйss]/3_Hw޹˧:g?YV}mo/ej!ustϥqlM>=l '!Isr~1Sϱحa _,2 8 Y4 [`7ˎh0ox-\&6OcﱟYo.s_vx嗯>iUjm_n+YFwI ` [Z>7aϹ|tlgtXx_o5Է Kk~ع?8dϽCG3-XիͺG'g 7NNy aЛ-}r7dz#@Rӥ7ă)LR861؊}}=ų>Tӫ4iw|6h:咷$~Ǩ Ovk%(~ZvtM~5pƲK.eL lj38= RB63{{+n?Dzά^dkĎE0g=0p w&VŪ _Rӛxt'\]x7.>^|=G CXmX#V:`ĝ*_{[rE:u%L֌F"g[k+9SV~]kzxb_<}yB{lWc0|H},y~mO3oTlƇ~ЫwuizK}}mo& w{BS")\8a蒮{hŹ>vYu>R>=vF'yzuM*Im0lU}"scgtr7W8/~C>M5z^//e~w\ X=[~يq3bZq-)>Zv~miTk t0烹t&F+~u 5㣇;@nܩ# a _opr<\W-2|'N~b|k ~p_hih9/ #H>!)|kr58Rp}뾔[)9+Rkup!yDj'_M3/k2veB8r~[:R ɖ9^u=l 'Hxo嫘#[-ckzla{#A=` 7-0pc&ͺ+7`f:&zˆŨ<*jfhw|6|없R>0@_G֫uu^ͯkz5Zηׯi_i &ԥ^;k wu6:`3ؚ^}- ^( zc )7Fcw^|3z.j 59 Fs\WxtMSS]jʇ__e1=f_2OvuŹWߌعt̬}Ȟ{9_݇Ծ3׸Ä3;vdx4 ys0}rɧU:i*F>7Sk*/.ܖNS^qZWq?Zז !=y.jpq]>V>u쭧8\‘kIWck8` Cx`AԨ~s2Oxwj= Yㅃ)]Rj?rٞ zn0gbF5g{oō0tH9DWyf 7˛Å0`ڴWӄ{<<\&6z`'{|>ps.65Dqj⼩ɧS5ƃ#kjOo'yz[ׯ#}"o_W W?'(=fMÄdoC?fsb*fCj?UV_:yIXU.䀹Gx! XcسƸ]x_>kV]<;S}*fbmp3%G޲{.C_sr~يqlMÄ3;vd7` 7n@^R@x0 pqQvAj)^1ɫ8_.wЇv1ip=ky є*-:赾Aدb]\ Y^]sRoPoQOR}tu 1jxws~ /pSc!byWՓh5o pBZ!CI k=pVo]p"k}!GG7t_2OjǹEz^}- cl4VLl|H~]'1k%0^a 8Y" {ǀ.NMO{\}|f}{wC0[,uϥsI uuq~Oï݁'¹n fd+Ʊ5Zv`ؑa qr@^w]XpX`\TIjz;F {s''w-t)t5vQ>ķER_9^;e-Xk=vFgEGάQcrcO5O|?O5yBSK9Pjb.)g=r*f)3׸Ä3;vdg/XEw\Qr ꫯ^7\!c;1~Zc]o:Z|x-\r]og-d]_zŸ'?3eFz̬^d0|H觐^fފas UG c0p {"ea 7h[Up몥\&6Ocﱛ }n\}Cf@:Æ&<$)Y Zz yZmư/d8Z~<{n5Zv9v ~fߊؚWY}9&]cWk:= @n<2a ɛuѹRoP)l&yq =-L>2z.>!ÛCC n&HǡspwğЯ?O17يu3bZq=C|-T}kmFn+HǏ^[skz~"@x y!s0N΀.fomPj0.$5GX=/>O @35{U2+kHj[s${bܺxϧyBf=^q׉aW]v[{(9gj*Hodؚ^}-[޺uw=2Vx/m T eԿJx/x.9i*iJ9p v/_k|aMd]c[:{j:VOzoϾ_ЯL'˺-eL^cstϥqlM>=l '!Isr~يqlMÄ3;vda"7M@\`}-a4Z+^Ll$Éc~.oo\5Wi@壙/5f\$^Z:X>ZwYujK˗zĒOR8OקyBU}U?VOs\^Nl#!sfײ{p{ǎ a <@n:5 /jfPt|/ (~FnyQ>qHzB7g|B7}i/e||'_+fadXgV:HŎa_[1[!*v<ǤkPr\zMǣ0 i@b@h&ԿJ/Jbs^54 'u>؛7ЏMx\O[o]!~gzɿ̿^?,S7i 椖3"vIDAT1#Ǫ>c+ޓbkj[k;6w_1G:~ޒ`#]u@f 7J`a`.3V kx2|'N~a߻__|sx/\o!U #eﵥ3>_%naZ.[2i1 |:bn`Hk-V]v[{([i*Hodؚ^}-[޺uw=2Va  Kja`.u>š{z#@1Qǥ7ķ0b,ח9_W.]|xg,_8lv >qHjP{$٫$`zm|RѯS}>;C]'Ʊ5d5$K?W w>fd+Ʊ5Zv`ؑa 0'90EM5Ū RR}tu 1jx] {K¿Sh|;߹?}O~]z׮IW1 -Qms];F\KzÍa.[t=O>OeZ^KJT|vHǏԂ蒮iHs+V>7Sk*VtzjpSmiH2_pG?xW/^y啋}WMej9>,~O7ڐ9#B'W(W 7>}֗eeYals?ٽFG:C+GC|s\]}P#u%7GC?O߽([d+ֱ؊iŁS5寘#?R{AoC0ϑ:{i{ a )rNL]XPj0.z%5GX=|O}_:KT|4HbYG8{k"ɧOe<z9\;gW1Gz&[>k4Y]]@ 0,7tX>҉ W1jMūi=N{S-e ~c=&$¾m9cvﭸ9_u0=6zaA1a@ t&1Ū "XR}tu 1jx=]zQumvmp7+{Wl_sqp|[-cU[1#;}~m?3oTlƇ~Ыwu]Bs5@xt {s00H7]>ҏBbs4.5/}<يu3bZq=C|-T}kmFn+HǏ^[skz~"@xt/yg z#濵}x|-Zeb#t?6N|k|=@F =f_2O֌keo<{NC:OW1Gz&[>k4xk둱@a"7M@ ֛uѹUP)l&yq =-L>?/3O[kïwygt~5Zd2n^5[Op\u!ݿs:u[ӫOv[{Hҹsp\ClFb[ӫe0 @ d%4 0pbt;{`mkFbUoqq->:5P4wF!מo '_Q诅@lׅ==9v.}s/kБ 9zk=L8cG0  0 o es)\wﲯ-1ϧo\eKK>eL >Q5}#!sf'CS~f/{oō0tH9DWy@a`#0F7Z[RǫiP\7X% ^k [űM"'曻_?i/o, |i__f =K0fTnS5RWY}9&]cWk:= 0n8)@Gfv]`H5CW^u0ɪojzXbPe2aoih t5f0-?،l8V[18I=_ ?UcZ۱Ѿ[=#<G0@t@mt{ӛ~ИWI/軏Z6gXb1~,We2LFmw!} ܂yle5"ubnlM|ײi_|#c0I$e0@8`-)qj%N^8z乔?,yFпohfVC=:G wu廍t?،l8W_a;2 0\ ޱme;a 00@96d$tcK7w} |YO?\38= r m~ r]svﭸ9gu0=6za AtQ@mt{S|.i] 5#M<Ʋז2Zϖɀ&-?،l8V#5S vb*fCj/UV_:yIXU.䀹Ga {;tva `-)qj%N^8z乔~sԼ 2azBǙu7-8>[~يq3bZq= '=Ou=w_1G:~ޒ`#]u@E==J@ ԟnKVLRM76doz|0w?\<_O2/ǖQL7UT5z5K5Jט]x׾[Skp^IM|'=$װu3|HVckz&ޱ#@a2Eϑ@x b6fn;>eOCG:`[5e0 @aaa ǀ:ZRkS .fm[6>rMmrL( +]rfH!ubkݖmgן{+n?Dz!r4Y-cF~@#}s0 4j~dGǮ@-ũ!)\w {(?\ˤ!Ww]a5{Fz̚^}- SMmiQ[1[!'*v<ǤkPr\zMǣ0@2P/q0g^:ǺދO2?WQ{p|[%M^}-UlMjkgf;=w_1G:~Iu./ǖp?k%YDZa 063л@\( a 0p/?Fw)7ݥ:uL:6zƧQSeӞn~ t-=){i*Hodؚ^}-[޺uw=2Va O60`@b0|.VM-$qd-]Mx[xbujHs.azvNCuK|HVckz&ޱ#@a p+haN3@Qv4jѕ8a>1Kא]e ڳtIwj2/=cj Zk7!{T|v:RF?Dzά^Zv`ؑa 0N@n,@ )FQQb4F~0N=z#o=Ia+@XM6{Wa{~S >jWlˇ>պXjYoMW푎!H`=[5ȉ a 0p ;dCa 0@#F!W?6v:|cM蒣Eln^kHE钭s Y}wg3sZ=[~59W_ƚ< 0` 7ːM0 jn$3FR:()`fߛ> Qm ->꾰s6p.qtZ`3ؚ^}- gw0@/]6@5Xۄ75T[Ma4Y-7hu+[a?zu>?pw_;>[nYS5}H9zk=L8cG0@x0 y)s0QP1M0|.}qpŪn5ފWSl Ԧ[끱IZCvklc?[q##!sѕk_[Fa 0p {ea [eea 7'̇0+NreKa\ԩ!uѯS5CVxK05Y0|^a 0<_0 0pc0qfNS8t%{7R8|?柳 ЫXuK׉a-{Ԉ_a 0 h^4 0p#Ԍy6zmZ Q^oV7{k?kU%Ok _bnlM|ײi޺uw=2Va G@n<=Ga Ȁ+oisˀ+V :͹b:˔]f%UY zCoᎹ}t?،l8W_a;2 0@Xa 7Vȉ+ 0bha$4FMUmnhO%5{WԠ`3R{9$S5}H?鱳zk=L8cG0@ d%4 0P#M4kC*(F|^SzFJnX̫5ZOU[nas x[-lc0@r`@Pa 0e@͛7n<FZO;C֦7ZUsz^l|H~]'1k%0^a 0 #a G̀6oisTlpţ#+Z>- ^njtHubGkxn5r<&za 0pDrdTa2@3H3-'~a444UЩ#y Pż'5TKå ޓq-?ؚl[ӫe Ӏuzd0@aV [5E@5x4"mt@š+V <׉\k{]rYuuNŰn#6#[1ײ{p{ǎ a 0@na ƀ>5 gCn'Z`4[)Z{6xᛑ3׸Ä38;vda 0p ;d;a AnP> nPϛV=5k ֓%T6:ұ9оha3{l0@a0л[@a0Pgܖ$npHQޠmIǤlQ^CFŰ[>ǤkW0|#Fa 0  ;dKa ĀF5 4OUzF֣g*ٓK˪W[9Ԩy#5Gx9a 0=f{|l= 0mtɪlFR.Aݽ7.gtUSǂsglhuzd0@a2/]6@W S>CRUǖl lZw3v+F_a 0f@Ha 0N@}^֙<[rmxs>#G1ZYƵ&E0@.ٱs0@83mtI׵効'xaAv`#94_[Fa 0 ~Hc0a&纎WmFǯ56R=يa]r<la 0@@ a 0:kZLБVOzl5k_a 0@x0z 0 h9Ԗ{c.{mZ}=|-󣇁0@a`N0@e{[tՖ={ڔ=kca 0@8C/Z,Ia 0 -ǺΒ- ՜Wlͮ>ma7a 0@8'1 0 ޛ*6l9`+6:-|D0@a J0@x ޟZ,^[ a 03кhE@a Iާz>UZ~x0@a c]$zY/ 0&l5ԝ!62 0@ga6/r,@C޷F94<& a 0>0 03zKr0@S]8=r0@' l}KO^l3 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0@a 0;B!IENDB`jimjag-epm-84910c6/default.opacity000066400000000000000000000732531521151356300170440ustar00rootroot00000000000000bplist00 X$versionX$objectsY$archiverT$topbnopqrvw~I  01234567?CGK@aNT[ekqtu{~ '*-27<=>?@ABVGNWhiopz{|}  47<AFGHIJKLQdq} $/;GS[\]^_`abcdefgo~ !"*9:MRW\_`abcdei}  $8;@EJKLMNOPU`lx   '3?GHIJKLMNOPQRS[jk~     $%)*48;JK^chmpqrstuvz   " # $ G W X Y Z [ \ ] a e i m n o p t w x y z { |        + , > N O P Q R S T X \ ` d e f j m n o r s t w x <:         ! " # * + , 6 7 8 9 A B C D E Q R9 S g h i j k l m n o p q v z ~U$null0  !"#$%&'()*+,-./0123456789:;9<=>>@AB::CDEFGH:IJKL@N>PQRSI@UVWXYB[\]B>BYa9WpolySidWpixDTypSbmPUresUnTsecCUcolSpUoBgImSparVnPaStrWactLaysUsnShsWpenTTypSmodTzoomTallRVsavStDTmetaVspiDecVgenNamUorTypVpixRadTfrasUimSizUbgColVnPaFilV$classVactTraVsavPrDTtarsVcurFraSenVVlineThVautoBTUshLayXrectCRadUresiMTcurRWspiSegsTtrasWfilSensUmainCVtraTrgVcurObjVguiLinTvarsVlasModWpolyStaUbgTyp?J "#@ I#@T>#?<= e :#- "#@I\;""cd"eimWNS.keysZNS.objectsfghjkl \kMDItemTitle^kMDItemAuthors_kMDItemCopyrightYNew Imaged"sut ]Michael Sweetxyz{Z$classnameX$classesWNSArray|}WNSArrayXNSObject_Copyright 2017 Michael Sweetxy_NSMutableDictionary}\NSDictionaryd"uX  "SresSdel#?xy\PCResolution}\PCResolutionXPCObject"#?"#?"#?"I"C"#@"#@ "#?d"uR "ATlaysUanimTUlAcLs#?cd"mfghjl d"ut d"u8} "a:R:a@TisShUblendSnamWmaskTypTopacSfilWmaskLayUedMskSvis7$#@Y% ">BUalConTobjs"#cd"m "I!xy _PCBitmapContext   }_PCBitmapContextZPCDrawableXPCObjectd"u xy]PCNormalLayer}]PCNormalLayerWPCLayerZPCDrawableXPCObject]Shadow Effect"TfilNTatts6&'_PCShadowEffectFiltercd"!(m"#$%&'()*+,-)*+)-../3.45 [inputOffsetZinputColorZinputAngleYinputBlur_inputClipShadow_inputHideOriginal#@89:";<=>UNSRGB\NSColorSpace_NSCustomColorSpaceJ0 0 0 0.502@"ABTNSID1xyDE\NSColorSpaceF}\NSColorSpacexyHIWNSColorJ}WNSColor#N xyOPXPCFilterQRS}XPCFilterZPCDrawableXPCObjectxyUV]PCFilterLayerWXYZ}]PCFilterLayerWPCLayerZPCDrawableXPCObject"::a]^@`baR<9 =#?">hB8:"#cd"lnmo; "^I9!XSoftwarecd"vxmy> "I8!d"u@l "a@V@aVVV@VaUdimLKTrectSisIWfilPropSshXTantiSflVVcornRXVcornRYUstrosSshYUalPixSangSflHAD E kZ8 cd"mBC ]cornerRadiusX]cornerRadiusY_{{48, 60}, {40, 48}}"a:<>:@VrelLP2SblHWgradAngUradGCTfilTWrelRadCVfilPosSaEqStypXrelLinP1VfilColVrelLP1UfilImVothColXrelLinP2SgEqUfilGrSrEqXgradStopUpgNumSbEqS#@VOPYXRFQG@TVUHW 89">F1 0 0289">O0.7537326389 0 0.012562210652d"ۢڀILN">V<ValtColSlocScolEJK9"9>WNSWhiteB12xy^PCGradientStop}^PCGradientStopZPCDrawableXPCObject">EMK89">L0.6 0.6 0.62xy^NSMutableArray}WNSArrayV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}Q0QtW100 - tS100xy_PCDrawVectorProperties }_PCDrawVectorPropertiesZPCDrawableXPCObjectd" ۡ [N"<a::<>:a I:\$&TcapSSposUinvisSwidUdashSeabjXdc]@fV\U^Wg9"(9>B0289"+>L0.4 0.4 0.42d".ۢ/0_`N"> V\[\K"> []KV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"CuDEhi xyHI_PCStrokeVectorPropertiesJKLM}_PCStrokeVectorProperties_PCDrawVectorPropertiesZPCDrawableXPCObjectxyOP\PCRectVectorQRSTUV}\PCRectVector\PCPathVector_PCRectBasedVectorXPCVectorZPCDrawableXPCObjectXYZ"[ \aa@V@abcV@fVaTstrYXstrTBndsTstrXVattStrm |n8 {_{{48, 66}, {40, 48}}j"klmnXNSString\NSAttributesozpQAcd"quyrstqrs\wx\tvyWNSColor_NSParagraphStyleVNSFont~">wx]OpenSans-BoldxyVNSFont}VNSFontxy}xy_NSAttributedString}_NSAttributedString9"9>D1 02xy\PCTextVector}\PCTextVector_PCRectBasedVectorXPCVectorZPCDrawableXPCObject"::a@aR~ #">B}"#cd"m "I~!SBoxcd"m€ "I}!d"uр:fŀ "a@V@aV@VaVfConPtVconPtsVlConPt } _{{72, 20}, {32, 64}}"a:<>:@YXVUW 9:"9>E0.252@"B19:"9>B02d"ۢN">V<JK">K89">L0.6 0.6 0.62V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"ۡN"<!a#:$:<'>)*:a-I:\13jXV\UW89"5>L0.4 0.4 0.42d"8ۢ9:N">V\\K">*KV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"MuDEhi RSTUVWXY"a@a^_aabc:YhasConPt1VcPLinkUisCloRptTnextYhasConPt2VconPt1VconPt2 WY"eUXRSVTagcjka@oaTprev WY"eUXRSVTasc_vwa@{a WY"eUXRSVTacoa@a RTS"Wea@@ca{ xy]PCCustomPoint}]PCCustomPointZPCDrawableXPCObjectX{72, 84}X{72, 84}X{72, 84}X{72, 42}X{72, 42}X{72, 42}Y{104, 20}Y{104, 20}Y{104, 20}Y{104, 60}Y{104, 60}Y{104, 60}d"ۥ_o{Nxy^PCCustomVector}^PCCustomVector\PCPathVector_PCRectBasedVectorXPCVectorZPCDrawableXPCObject"a@V@aV@Va ԀÀ} _{{24, 32}, {48, 52}}"a:<>:@YX€VUW d"ۢڀN">V<JK">K89">L0.6 0.6 0.62V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"ۡĀN"<a::<>:aI:\ɀʀjX̀ˀŀ΀V\UƀW89">L0.4 0.4 0.42d" ۢ  ǀȀN">V\Ā\K">ĀŀKV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d" uDEhi RSTUVWXY"a@a)*a,-c: ހ߀WY"eUXRSVTa1c45a@9a݀Ѐۀ WY"eUXRSVTa=c*@Aa@Eaڀр؀ WY"eUXRSVTaIc9LMa@a׀ҀՀ RTS"Wea@@caE X{24, 32}X{24, 32}X{24, 32}X{24, 72}X{24, 72}X{24, 72}X{72, 84}X{72, 84}X{72, 84}X{72, 42}X{72, 42}X{72, 42}d"hۥ*9EЀрҀӀԀN"pqas@uV@ayzV@Va } _{{24, 8}, {30, 64}}"a:<>:@YX쀈VUW d"ۢN">uV<JK">uK89">L0.6 0.6 0.62V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"ۡN"<a::<>:aI:\jXV\UW89">L0.4 0.4 0.42d"ۢȀN">V\\K">KV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uDEhi RSTUVWXY"a@aac:    WY"eUXRSVTacqa@a  WY"eUXRSVTaca@a WY"eUXRSVTaca@ya RTS"Wea@@ca X{24, 72}X{24, 72}X{24, 72}X{54, 48}X{54, 48}X{54, 48}W{54, 8}W{54, 8}W{54, 8}X{24, 32}X{24, 32}X{24, 32}d"#ۥqyN"+,a.@0V@a45V@Va(9  ,} _{{13, 72}, {59, 32}}";a=>:<AC>G:J@YXVUW d"NۢOPN">0V<JK">0ZK89"]>L0.6 0.6 0.62V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"fۡgN"<jal:m:<p>rs:avI:\z|%!"jX$#&V\UW'89"~>L0.4 0.4 0.42d"ۢ N">gV\\K">gsKV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uDEhi RSTUVWXY"a@aac: 6)78WY"eUXRSVTac,a@a5(34 *WY"eUXRSVTaca@a2)01 +WY"eUXRSVTaca@4a/*-. ,RTS"Wea@@ca  +X{24, 72}X{24, 72}X{24, 72}X{72, 84}X{72, 84}X{72, 84}Y{60, 104}Y{60, 104}Y{60, 104}X{13, 96}X{13, 96}X{13, 96}d"ۥ,4()*+,N"a@V@aV@Va;Te < XG} _{{8, 48}, {46, 27}}"a:<>:@EABYXDC:FVU=W d" ۢ  >?N">V<<@K89">L0.6 0.6 0.62V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"!ۡ"HN"<%a':(:<+>-.:a1I:\57QMNjXPOI:RV\UJWS89"9>L0.4 0.4 0.42d"<ۢ=>KLN">"V\H\K">".HIKV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"QuDEhi RSTUVWXY"a@aZ[a]^c: :bUcdWY"eUXRSVTabcefa@jaaT_` :VWY"eUXRSVTanc[qra@va^U\] :WWY"eUXRSVTazcj}~a@a[VYZ :XRTS"Wea@@cav : WX{32, 52}X{32, 52}X{32, 52}X{54, 48}X{54, 48}X{54, 48}X{24, 72}X{24, 72}X{24, 72}W{8, 75}W{8, 75}W{8, 75}d"ۥ[jvTUVWXN"a@V@aV@Vag h s} _{{54, 8}, {50, 52}}"a:<>:@qmnYXpofrVUiW d"ۢƁjkN">V<hJK">hlK89">L0.6 0.6 0.62V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"ۡ݁tN"<a::<>:aI:\}yzjX|{uf~V\UvW89">L0.4 0.4 0.42d"ۢwxN">V\t\K">tuKV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d" uDEhi RSTUVWXY"a@aac: fWY"eUXRSVTac !a@%a fWY"eUXRSVTa)c,-a@1a fWY"eUXRSVTa5c%89a@a fRTS"Wea@@ca1 f Y{104, 60}Y{104, 60}Y{104, 60}X{54, 48}X{54, 48}X{54, 48}W{54, 8}W{54, 8}W{54, 8}Y{104, 20}Y{104, 20}Y{104, 20}d"Tۥ%1N"\]a_@aV@aefV@Va  } _{{72, 60}, {48, 44}}"lano:<rt>x:{@YXVUW d"ۢN">aV<JK">aK89">L0.6 0.6 0.62V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"ۡN"<a::<>:aI:\jXV\UW89">L0.4 0.4 0.42d"ۢN">V\\K">KV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uDEhi RSTUVWXY"a@aac: WY"eUXRSVTac]a@a WY"eUXRSVTaca@a WY"eUXRSVTaca@ea RTS"Wea@@ca  Y{120, 84}Y{120, 84}Y{120, 84}Y{104, 60}Y{104, 60}Y{104, 60}X{72, 84}X{72, 84}X{72, 84}Y{88, 104}Y{88, 104}Y{88, 104}d"ۥ]eNXYZ"[ aa@V@ab@"Va |#@,} _"{{31, -9.515625}, {96, 63.515625}}j"k&m(zSEPMcd"+/yrstqrsw2FtÀy"5#@6wx9"99>D1 02"<=a?@AV@aEFV@VaƁ  Ҁ} _{{54, 40}, {66, 20}}"LaNO:<RT>X:[@́̀YXπ΀ŁрVUȀW d"_ۢ`aɁʀN">AV<ǀJK">AkǁˀK89"n>L0.6 0.6 0.62V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"wۡxӀN"<{a}:~:<>:aI:\؁ـjXۀځԁ݀V\UՀW89">L0.4 0.4 0.42d"ۢց׀N">xV\Ӏ\K">xӁԀKV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uDEhi RSTUVWXY"a@aac: ŁWY"eUXRSVTac=a@a쀧߁ ŁWY"eUXRSVTaca@a逧 ŁWY"eUXRSVTaca@Ea性 ŁRTS"Wea@@ca  Y{104, 60}Y{104, 60}Y{104, 60}X{54, 48}X{54, 48}X{54, 48}X{68, 40}X{68, 40}X{68, 40}Y{120, 51}Y{120, 51}Y{120, 51}d"ۥ=E߁Nd"u߀ xyWPCFrame }WPCFrame_PCMetadataObjectZPCDrawableXPCObjectd" u    &  "       a@>  >: >@aa BYauSizCropVnewFacUapIn1TpathTapIDUcropRUapIn2UisRelUisColTcropVvarVal  "_{{0, 0}, {0, 0}}\default.icns % & ' ( ) * +" , - . / 0 1 2 3 4 5@R 8 9 : ;> = > ?@ A B  D EUcodeSUprColVprShTiSfraVcodePlVcodeFrUcodeFTsnShVexPropTpropUgenCHUgrTypVanLooCVprLinCUcodeL       cd" H Om I J K L M N P Q< S T UJ V{JFIF}U{GIF}_"kCGImageDestinationBackgroundColorU{PNG}V{TIFF}_*kCGImageDestinationLossyCompressionQualitycd" ^ _m cd" b cm cd" f gm cd" j km #?^com.apple.icns]public.foldercd" q rm 89" u>L0.5 0 0 0.52SiosUcocoaUtouchVMyViewVUIViewxy } ~_PCBitmapProperties  }_PCBitmapPropertiesXPCObjectxy YPCFactory }YPCFactoryZPCDrawableXPCObject "       a@> >: >@aa B  "[default.png % & ' ( ) * +" , - . / 0 1 2 3 4 5@R 8 9 : ;> @ A B  EX      cd" m I J K L M N < J cd" m cd" m cd" m cd" m #?Zpublic.pngcd" m 89" >L0.5 0 0 0.52 "       aa> >: >@aa B "_default-256.png % & ' ( ) * +" , - . / 0 1 2 3 4 5@R 8 9 : ;> @ A B  E    $ % cd" m I J K L M N <   J!"# cd"  m cd" m cd" m cd"  m #?cd"  m 89" >L0.5 0 0 0.52 "       aa> >: >@aa )B' ("[epm-160.png % & ' ( ) * +" , - . / 0 1 2 3 - 5@R 8 9 2 ;> 5 6 @ 9 B  ; E9  8 6) 5&7 cd" ? Fm @ A B C D E*+,-./ G H< J K L01J234 V{JFIF}U{GIF}_"kCGImageDestinationBackgroundColorU{PNG}V{TIFF}_*kCGImageDestinationLossyCompressionQualitycd" U Vm cd" Y Zm cd" ] ^m cd" a bm #?]public.foldercd" g hm 89" k>L0.5 0 0 0.52VMyViewVUIViewd" p۠NYselectionZ{128, 128}9" u9>E0.752_CICheckerboardGenerator % & ' ( ) * +" , - . / 0 1 2 3 4 5@R 8 9 : ;> @ A B EX    G@F H cd" m I J K L M N < ABJCDE cd" m cd" m cd" m cd" m #?_com.likethought.opacity.opacitycd" m 89" >L0.5 0 0 0.52cd" m JKLMNOPQR.. . ..55ST5UV55 _framePickerVisibleZhideRulers[windowFrame_layerViewDimension]hideVariablesZexpansionsYprintInfo]toolbarHidden_editFrameMetadata_{{157, 274}, {626, 523}}#@ccd" m " \NSAttributesdWcd" m XYZ[\]^_- - 4``ab4cc _NSHorizontallyCentered]NSRightMargin\NSLeftMargin_NSHorizonalPagination_NSVerticalPagination_NSVerticallyCentered[NSTopMargin^NSBottomMargin"B"Bxy [NSPrintInfo }[NSPrintInfocd" m      fghijkl   mtx}f _"com.likethought.opacity.preview.ui_(com.likethought.opacity.preview.elementsWfactory_#com.likethought.opacity.preview.web_&com.likethought.opacity.preview.cursorTtype_&com.likethought.opacity.preview.iphonecd"  m   nko< Jbp Ucolor[resolutionsd" $ۤ % & (qrsN#?#?cd" - 1m . / 0uvw...555 VstatusWtoolbarTdockcd" : =m ; <yz > ?{| WaddressUimage_#http://likethought.com/opacity/web/_,http://likethought.com/opacity/web/image.pngcd" F Km G  I ~knE MEELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmxy { |]NSMutableData { }}VNSDataxy  WPCImage }WPCImage_PCMetadataObjectZPCDrawableXPCObject_NSKeyedArchiver Troot"+5:?ci,4<@FKQW[bjpx| '-4;BGNV\^`cehjlmpr{} "1DNWZ\^lu        ! # % ' ) : > B D M O Q Z g n {    # % . 0 2 C E N P R c e n p r { ~     ? D J N V [ _ g m q s t v x   % . / 1 : H S a i t }      ( 2 D X a r x    )2=FO]hv~ $1469;=JLNW\^`b,:Q  $-379:CEGIKMOQSUWY[]_acdqxz $3>G\^`bdq~ %09BEGI  %'0579;PRTVXmoqsu|!*3@O\i}   #09FHJLN[bdfhoqsuw&/135CLSX_hmvKLNPQSUWXZoqsuwyNU\ceghjkmnoqsuwxy  &,.09;=NQSU^cegi~lnoqsuwy{}$-2468eov|%&(*,.012467hikmoqstuwyz '1;EOYbmoqsuwy4689;<>?@BDFHIJa      , . 0 2 4 A N P W ^ e l s z !!!!!! ! !!!!!!!!!!!!!.!;!=!F!K!M!O!Q!f!h!j!l!n!!!!!!!!!!!!!!!!!!!!!!!"""""7"8":"<">"@"B"C"D"F"H"I"z"{"}"""""""""""""""""""""""""""""## ###'#0#9#B#K#T#]#f#o#z#|#~####################$^$`$a$c$e$g$i$k$m$o$q$s$u$w$y${$}$$$$$$$$$$$$$$$$$$$$$$$%% %%% %"%$%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&!&#&%&,&3&:&A&H&O&X&]&_&a&c&&&&&&&&&&&&&&&&&&&&&&&'''' '"'%'(')'*','.'/'`'a'd'f'h'k'n'o'p'r'u'v''''''''''''''''''(( ((( ("($(&()(+(r(u(x(y(|(}(((((((((()) ) )))))))) )")%)()*),)/)1)2);)@)C)F)H)])_)b)d)f){)}))))))))))))))))*O*R*S*V*Y*[*]*`*b*e*h*k*l*o*q*s*u*x*z*}********************++++++$+&+(+*+W+X+Y+Z+]+`+c+d+g+j+l++++++++++++++++++++++++,/,0,3,5,8,;,>,?,@,C,F,G,h,i,j,m,n,p,q,t,},,,,,,,,,,,,,,,-----O-R-U-V-Y-Z-]-^-_-a-d-g-i-j-k-------------..... . .....".$.9.;.>.@.B.W.Y.\._.a.n.{.}........../+/.///2/5/7/9//A/D/G/H/K/M/O/Q/T/V/Y/f/s/u/~/////////////////////000003040506090<0?0@0C0F0H0y0z0}0000000000000000000001 1 111111111"1#1D1E1F1I1J1L1M1P1Y1b1k1t1}1111111111111112%2(2+2,2/20232425272:2=2?2@2A2W222222222222222222222222333333-3/3235373D3Q3S3Z3a3h3o3v3}333344444 4 44444444!4#4%4'4*4,4/4<4I4K4T4Y4\4_4a4v4x4{4}444444444444444445 5 5 5 55555555O5P5S5U5X5[5^5_5`5c5f5g55555555555555555555555566666 6"6#6&606:6D6M6V6_6g6o6w6666666666677777 7 77777777774777777777777777777777777777778 8 8888!8.80878>8E8L8S8Z8c8f8i8k8888888888888899999 9 99&9(9196999<9>9S9U9X9Z9\9q9s9v9y9{9999999999999999999999:,:-:0:2:5:8:;:<:=:@:C:D:u:v:y:{:~:::::::::::::::::::::::::;;; ;;!;+;5;?;H;Q;Z;d;n;x;;;;;;;;;;;;;;;;;;;;<<<&<3<6<8<;>>>>>&>->4>;>D>G>J>L>>>>>>>>>>>>>>>>>>>>>?? ??????4?6?9?;?=?R?T?W?Z?\?c?j?q?x??????????????????@ @@@@@@@@@!@$@%@V@W@Z@\@_@b@e@f@g@j@m@n@@@@@@@@@@@@@@@@@@@@@@AA AAA&A/A8ABALAVA_AjAmApAsAvAyA{AAAAAAAAAAAAAAAAAAB5B?BFBLBQBVB\BbBhBnBsBzB{B|B~BBBBBBBBBBBBBCC CCCC"C)C/C4C;C@CFCLCSCZC`CcCeCfChCkCnCqCtCvCyC|CCCCCCCCCCCCCCCCCCCCCCCCCCDDD"DOD\D]D^D`DmDnDoDqD~DDDDDDDDDDDDDDDDDDDDDEE E"E)E>EGEPEZEcEmExEEEEEEEEEEEEEEEEEF6F9F:FOAODOGOJOMOPOSObOeOhOkOnOqOtOwOyOOOOP P%PNP[PbPePhPkPrPtPwPzP|PPPPPPPPPPPPPPPPPPPPPPPPQ QQQQQQ"Q$Q,Q2QXQQQQQQQQQQQQQQQQQQQQQQQRRRRRRR!R$R'R*R-R/R5R;RARGRLRPRYRbRkRmRzRRRRRR^^^^__ ___(_0_C_N_W_i_n_s _ujimjag-epm-84910c6/default.png000066400000000000000000000212251521151356300161500ustar00rootroot00000000000000PNG  IHDR>asRGBiTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image GjIDATx] tWueK%/%˒l&vN,&aǐ@ !!!5вPhK qh@) C%$I@ Y۲l+w;Oo_ss?w}&JHHHHHHHHHHHHHHHHHHHÙ(%$$x g4`>iy,1JZT Ɓ.c+o^7#? @; t59h%4(` `a- D ށy1Qǚ?h8,MAiºQGyQ {DGGmչ\_^IXt#?A0MN?hGTѸo̙NII 3ڏZ!GRE1cF?*@?H+6ٮ?xR,' YڠpaAV''Pi2g֬YÀ ޟ!m4YXct3~xwyPA&bm0ma>aፄ~J8D'&"&C̙3)//wΝTTT4NuTosѤh_k y?~6 n tpv^$F&?:{lϏļyF>ON$ݽ 8 .t-Z䢪ʣ:-ף`G2ǯ T^Bd&E9 ^ܝA|P?JB1(1)D0Yxq($N4?*X򫴢i E0Ź>&,i/)a$C?dDMMGuږ7N'Ft2,`JZK=hx?4ңa p0)DDiuuuҥK'_7 5U3M3ϑ4)D@9 H+\ٿi.P~yERgk<L 0HOL:tꚺLMXkWcȗl6BҠTcIQNo/ 'n.P~t4taŒD%~ttthooNu73Zm1YRC?@kwZa|5N_`,le˖[na܍KÖnX|Gu:zkxRQ- </0TyhaHF1¸%TV\7Q?KS1dTPAD{yQtXT (3͕Ùdf0[)Xzu,Bu41tl%T>2'f` .پ}GuԆ i;H5P2yeLD>ZEkZ}?jhQCbXg~Nq,BEj J"4OݻctOpۆH p8VE ߬ޚ?\U+қYy i}?;$ /T/P☊WaWb[[.5s0/v."Ν;?E3[Wj*-\pUVaFU>^+u厰lذBuZ }Z0URxDLՌp9$k;'JB槏ڵ Å^L&3HӘI\ +% DòFVsDQ~2m{._o .i;4g6Bx_*-SR/X @sRsey@+KӔ05Z y글;zrp&7\h[fY%Ryy;"穞F]kq4=d#Z\oxɇ7LxI$e81})٨|͎LhS8g~QX`^d$Sd Ӽ|hR$ݚ{ Cps0MbGdmڠXWqny-`p,&`h~0q?,X`I4f :-~a;p ȃUrl eпQaAt ~? 10[N3 !x9 Hab!On*msFZ ƹ8ף0"}`Kh6itP&DG F #L1P]DMÀ!@(¢)LPxN]**ynTw|mʜ Uq??'aMGEI>XSHl; vr1U(sV{ĸ@,a !KK/8TEV."!%ɍ & h&|`a@Q ,,M4 fP7dPaBL|>06n85q>2(Tҡ A{=~a6aHM:%bCwuuj⳦ׄ@e@`$AQ qЧl5;xB_1Te!XwxE &nAi\1@ (BuZAkñ61X*\'Rl)-u\BѲG YC|^#'oX7 0DO'~ R:( 5Iw+aTB|} -!j4Lti@؅h`A[ saw w&2m[…HFPB E 碂.>hOhWt\Tȩ^̾ cw3MhVe#qu epN:mC@`Q؂'bBPph60c&qˣNI fa0|4PQPe<z,꼰j1mTh)[4-L-X/sl${? sz׳&} m]_&|B!OQP0s @?{0a 0σP0ă  f( 41îIk|'>p h}_ɅF LC;&GdӁ`\CDyt+q*ƞ:޸b_fak$n [$&dOAOAS5c*$B' `TX`&r 7X̔D{y~"מsӍAB 5S2@&^3]BB jKyr7~ ` 2 k\@dz:y=Nv1á#GlK@ $|/:nqK*98kas:  !aL{V̑ ~0? ha``y'7a͋ Xn+As;€2`mFu׋?Z8nh5h+h-? GS@hFx+3Mz$\9ȷgĝ?q0VG29@k;#,Xce>5dws 3xx4r3-Rt'T.6hH ) K݂Vlo%*p] ߕo s2fx eƗMĜ@K=sŖ׾x2у~0O@`R8F1`6ьoX@续׉ U{Ѻ[Yr8~%/>Az1ۀv*fmZ8J:- a_z/eZeO*f @Pv.nyeB9n[~d9}64qvSE3s#үjn>cz5|M/? M [+MWN1y®9Hlx1s֢gj xLIy:o[>̕+( L;|b羶 m[35t>Ӷpp:2Ç?V@lA^=LyTojnj2)M-3|\?]+E޵3}fH终d8eg{yj[6v6?9 j;\K{y>UV~Z[ॿAi>7d[-,/e^i!anZqݶ-I 2|Ƿo՝~n-ю:筝oWytz:l7v6F3Bd?[Y4ijIysx_gs]WGpWgO; CG6Lustw9X@!g},$ȕypmw/.a  gڷm-8SC %>FYq3q.m]tonrh3+~Tsi&)d L2y.z8!}]'o~ag1u|{0CUo[^2-oi秃 iͰf6>Dٖ/|J}L'Vp_qP\$ߵ+},=Yk.'iJXQN {2,E18%GK4އ yNӨ2hƜI cw^ȕ:r#Ư 7X|k~\+wyq_wcU!z |E2."|۝BNٶ@Q[<*N >E59o*Ϧ:/96;friߺ*{{W)Gp BF¦79gGl۴ѹa}setmm!,v0"4@mu^T"0%{ZV8wN;tW:` `j9{|H=?_.1n/VU>"~yY<5IpO U I Bajb!e,3I2-gu7qV/ߓʇx#wak*6x^}F1?.v/_a {¢4pQP :1\[ weDʎײ0uBKp'W!چ|vENuepâ!1,B'Y'ύl]oт1;6q-Q>=p?R`_  \1Ĥ z"I(B=y߃͘kf~.6daxPLr]@}b޽ƣ1x&f:.{ldGLEˢT&1vӪ^u&:m ](mRmrC''e-`vvnci'$ dC_Xg].,~m[wb!],fFb`3ZXɑL\IENDB`jimjag-epm-84910c6/dist.c000066400000000000000000001754131521151356300151360ustar00rootroot00000000000000/* * Distribution functions for the ESP Package Manager (EPM). * * Copyright 2020 by Jim Jagielski * Copyright 1999-2020 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" #include /* * Some versions of Solaris don't define gethostname()... */ #ifdef __sun extern int gethostname(char *, size_t); #endif /* __sun */ /* * Local functions... */ static int compare_files(const file_t *f0, const file_t *f1); static void expand_name(char *buffer, char *name, size_t bufsize, int warn); static char *get_file(const char *filename, char *buffer, size_t size); static char *get_inline(const char *term, FILE *fp, char *buffer, size_t size); static char *get_line(char *buffer, int size, FILE *fp, struct utsname *platform, const char *format, int *skip); static char *get_string(char **src, char *dst, size_t dstsize); static int patmatch(const char *, const char *); static int sort_subpackages(char **a, char **b); static void update_architecture(char *buffer, size_t bufsize); /* * Conditional "skip" bits... */ #define SKIP_SYSTEM 1 /* Not the right system */ #define SKIP_FORMAT 2 /* Not the right format */ #define SKIP_ARCH 4 /* Not the right architecture */ #define SKIP_IF 8 /* Set if the current #if was not satisfied */ #define SKIP_IFACTIVE 16 /* Set if we're in an #if */ #define SKIP_IFSAT 32 /* Set if an #if statement has been satisfied */ #define SKIP_MASK 15 /* Bits to look at */ /* * 'add_command()' - Add a command to the distribution... */ void add_command(dist_t *dist, /* I - Distribution */ FILE *fp, /* I - Distribution file */ int type, /* I - Command type */ const char *command, /* I - Command string */ const char *subpkg, /* I - Subpackage */ const char *section) /* I - Literal text section */ { command_t *temp; /* New command */ char buf[16384]; /* File import buffer */ if (!strncmp(command, "<<", 2)) { for (command += 2; isspace(*command & 255); command++) ; command = get_inline(command, fp, buf, sizeof(buf)); } else if (command[0] == '<' && command[1]) { for (command++; isspace(*command & 255); command++) ; command = get_file(command, buf, sizeof(buf)); } if (!command) return; if (dist->num_commands == 0) temp = malloc(sizeof(command_t)); else temp = realloc(dist->commands, (dist->num_commands + 1) * sizeof(command_t)); if (!temp) { perror("epm: Out of memory allocating a command"); return; } dist->commands = temp; temp += dist->num_commands; temp->type = type; temp->command = strdup(command); if (!temp->command) { perror("epm: Out of memory duplicating a command string"); return; } temp->subpackage = subpkg; if (section && *section) { temp->section = strdup(section); if (!temp->section) { perror("epm: Out of memory duplicating a literal section"); free(temp->command); return; } } else temp->section = NULL; dist->num_commands++; } /* * 'add_depend()' - Add a dependency to the distribution... */ void add_depend(dist_t *dist, /* I - Distribution */ int type, /* I - Type of dependency */ const char *line, /* I - Line from file */ const char *subpkg) /* I - Subpackage */ { int i; /* Looping var */ depend_t *temp; /* New dependency */ char *ptr; /* Pointer into string */ const char *lineptr; /* Temporary pointer into line */ /* * Allocate memory for the dependency... */ if (dist->num_depends == 0) temp = malloc(sizeof(depend_t)); else temp = realloc(dist->depends, (dist->num_depends + 1) * sizeof(depend_t)); if (temp == NULL) { perror("epm: Out of memory allocating a dependency"); return; } dist->depends = temp; temp += dist->num_depends; dist->num_depends++; /* * Initialize the dependency record... */ memset(temp, 0, sizeof(depend_t)); temp->type = type; temp->subpackage = subpkg; /* * Get the product name string... */ for (ptr = temp->product; *line && !isspace(*line & 255); line++) if (ptr < (temp->product + sizeof(temp->product) - 1)) *ptr++ = *line; while (isspace(*line & 255)) line++; /* * Get the version strings, if any... */ for (i = 0; *line && i < 2; i++) { /* * Handle version, etc. */ if (!isalnum(*line & 255)) { if (*line == '<' && i == 0) { strlcpy(temp->version[0], "0.0", sizeof(temp->version[0])); i++; } while (!isdigit(*line & 255) && *line) line++; } if (!*line) break; /* * Grab the version string... */ for (ptr = temp->version[i]; *line && !isspace(*line & 255); line++) if (ptr < (temp->version[i] + sizeof(temp->version[i]) - 1)) *ptr++ = *line; while (isspace(*line & 255)) line++; /* * Get the version number, if any... */ for (lineptr = line; isdigit(*lineptr & 255); lineptr++) ; if (!*line || (!isspace(*lineptr & 255) && *lineptr)) { /* * No version number specified, or the next number is a version * string... */ temp->vernumber[i] = get_vernumber(temp->version[i]); } else { /* * Grab the version number directly from the line... */ temp->vernumber[i] = atoi(line); for (line = lineptr; isspace(*line & 255); line++) ; } } /* * Handle assigning default values based on the number of version numbers... */ switch (i) { case 0: strlcpy(temp->version[0], "0.0", sizeof(temp->version[0])); /* no break */ case 1: strlcpy(temp->version[1], "999.99.99p99", sizeof(temp->version[1])); temp->vernumber[1] = INT_MAX; break; } } /* * 'add_description()' - Add a description to the distribution. */ void add_description(dist_t *dist, /* I - Distribution */ FILE *fp, /* I - Source file */ const char *description, /* I - Description string */ const char *subpkg) /* I - Subpackage name */ { description_t *temp; /* Temporary description array */ char buf[16384]; /* File import buffer */ if (!strncmp(description, "<<", 2)) { for (description += 2; isspace(*description & 255); description++) ; description = get_inline(description, fp, buf, sizeof(buf)); } else if (description[0] == '<' && description[1]) { for (description++; isspace(*description & 255); description++) ; description = get_file(description, buf, sizeof(buf)); } if (description == NULL) return; if (dist->num_descriptions == 0) temp = malloc(sizeof(description_t)); else temp = realloc(dist->descriptions, (dist->num_descriptions + 1) * sizeof(description_t)); if (temp == NULL) { perror("epm: Out of memory adding description"); return; } dist->descriptions = temp; temp += dist->num_descriptions; dist->num_descriptions++; temp->subpackage = subpkg; if ((temp->description = strdup(description)) == NULL) perror("epm: Out of memory duplicating description"); } /* * 'add_file()' - Add a file to the distribution. */ file_t * /* O - New file */ add_file(dist_t *dist, /* I - Distribution */ const char *subpkg) /* I - Subpackage name */ { file_t *file; /* New file */ if (dist->num_files == 0) dist->files = (file_t *)malloc(sizeof(file_t)); else dist->files = (file_t *)realloc(dist->files, sizeof(file_t) * (dist->num_files + 1)); file = dist->files + dist->num_files; dist->num_files++; file->subpackage = subpkg; return (file); } /* * 'add_subpackage()' - Add a subpackage to the distribution. */ char * /* O - Subpackage pointer */ add_subpackage(dist_t *dist, /* I - Distribution */ const char *subpkg) /* I - Subpackage name */ { char **temp, /* Temporary array pointer */ *s; /* Subpackage pointer */ if (dist->num_subpackages == 0) temp = malloc(sizeof(char *)); else temp = realloc(dist->subpackages, (dist->num_subpackages + 1) * sizeof(char *)); if (temp == NULL) return (NULL); dist->subpackages = temp; temp += dist->num_subpackages; dist->num_subpackages++; *temp = s = strdup(subpkg); if (dist->num_subpackages > 1) qsort(dist->subpackages, (size_t)dist->num_subpackages, sizeof(char *), (int (*)(const void *, const void *))sort_subpackages); /* * Return the new string... */ return (s); } /* * 'find_subpackage()' - Find a subpackage in the distribution. */ char * /* O - Subpackage pointer */ find_subpackage(dist_t *dist, /* I - Distribution */ const char *subpkg) /* I - Subpackage name */ { char **match; /* Matching subpackage */ if (!subpkg || !*subpkg) return (NULL); if (dist->num_subpackages > 0) match = bsearch(&subpkg, dist->subpackages, (size_t)dist->num_subpackages, sizeof(char *), (int (*)(const void *, const void *))sort_subpackages); else match = NULL; if (match != NULL) return (*match); else return (add_subpackage(dist, subpkg)); } /* * 'free_dist()' - Free memory used by a distribution. */ void free_dist(dist_t *dist) /* I - Distribution to free */ { int i; /* Looping var */ if (dist->num_files > 0) free(dist->files); for (i = 0; i < dist->num_descriptions; i++) free(dist->descriptions[i].description); if (dist->num_descriptions) free(dist->descriptions); for (i = 0; i < dist->num_subpackages; i++) free(dist->subpackages[i]); if (dist->num_subpackages) free(dist->subpackages); for (i = 0; i < dist->num_commands; i++) { free(dist->commands[i].command); if (dist->commands[i].section) free(dist->commands[i].section); } if (dist->num_commands) free(dist->commands); if (dist->num_depends) free(dist->depends); free(dist); } /* * 'getoption()' - Get an option from a file. */ const char * /* O - Value */ get_option(file_t *file, /* I - File */ const char *name, /* I - Name of option */ const char *defval) /* I - Default value of option */ { char *ptr; /* Pointer to option */ static char option[256]; /* Copy of file option */ /* * See if the option exists... */ snprintf(option, sizeof(option), "%s(", name); if ((ptr = strstr(file->options, option)) == NULL) return (defval); /* * Yes, copy the value and truncate at the first ")"... */ ptr += strlen(option); memmove(option, ptr, strlen(ptr) + 1); if ((ptr = strchr(option, ')')) != NULL) { *ptr = '\0'; return (option); } else return (defval); } /* * 'get_platform()' - Get the operating system information... */ void get_platform(struct utsname *platform) /* O - Platform info */ { char *temp; /* Temporary pointer */ #ifdef __APPLE__ FILE *fp; /* SystemVersion.plist file */ char line[1024], /* Line from file */ *ptr; /* Pointer into line */ int major, minor; /* Major and minor release numbers */ #endif /* __APPLE__ */ /* * Get the system identification information... */ uname(platform); #ifdef __APPLE__ /* * Try to get the OS version number from the SystemVersion.plist file. * If not present, use the uname() results for Darwin... */ if ((fp = fopen("/System/Library/CoreServices/SystemVersion.plist", "r")) != NULL) { ptr = NULL; while (fgets(line, sizeof(line), fp) != NULL) if ((ptr = strstr(line, "ProductUserVisibleVersion")) != NULL) break; else if ((ptr = strstr(line, "ProductVersion")) != NULL) break; if (ptr && fgets(line, sizeof(line), fp) != NULL) { major = 10; minor = 2; if ((ptr = strstr(line, "")) != NULL) sscanf(ptr + 8, "%d.%d", &major, &minor); snprintf(platform->release, sizeof(platform->release), "%d.%d", major, minor); } else { /* * Couldn't find the version number, so assume it is 10.1... */ strlcpy(platform->release, "10.1", sizeof(platform->release)); } fclose(fp); strlcpy(platform->sysname, "macos", sizeof(platform->sysname)); } #endif /* __APPLE__ */ /* * Adjust the CPU type accordingly... */ #ifdef __sgi strlcpy(platform->machine, "mips", sizeof(platform->machine)); #elif defined(__hpux) strlcpy(platform->machine, "hppa", sizeof(platform->machine)); #elif defined(_AIX) strlcpy(platform->machine, "ppc", sizeof(platform->machine)); #else update_architecture(platform->machine, sizeof(platform->machine)); #endif /* __sgi */ #ifdef _AIX /* * AIX stores the major and minor version numbers separately; * combine them... */ snprintf(platform->release, sizeof(platform->release), "%d.%d", atoi(platform->version), atoi(platform->release)); #else /* * Remove any extra junk from the release number - we just want the * major and minor numbers... */ while (!isdigit((int)platform->release[0]) && platform->release[0]) memmove(platform->release, platform->release + 1, strlen(platform->release)); if (platform->release[0] == '.') memmove(platform->release, platform->release + 1, strlen(platform->release)); for (temp = platform->release; *temp && isdigit(*temp & 255); temp++) ; if (*temp == '.') for (temp++; *temp && isdigit(*temp & 255); temp++) ; *temp = '\0'; #endif /* _AIX */ /* * Convert the operating system name to lowercase, and strip out * hyphens and underscores... */ for (temp = platform->sysname; *temp != '\0'; temp++) if (*temp == '-' || *temp == '_') { memmove(temp, temp + 1, strlen(temp)); temp--; } else *temp = tolower(*temp); /* * SunOS 5.x is really Solaris 2.x or Solaris X, and OSF1 is really * Digital UNIX a.k.a. Compaq Tru64 UNIX... */ if (!strcmp(platform->sysname, "sunos") && platform->release[0] >= '5') { strlcpy(platform->sysname, "solaris", sizeof(platform->sysname)); if (atoi(platform->release + 2) < 7) platform->release[0] -= 3; else { /* * Strip 5. from the front of the version number... */ for (temp = platform->release; temp[2]; temp++) *temp = temp[2]; *temp = '\0'; } } else if (!strcmp(platform->sysname, "osf1")) strlcpy(platform->sysname, "tru64", sizeof(platform->sysname)); /* AKA Digital UNIX */ else if (!strcmp(platform->sysname, "irix64")) strlcpy(platform->sysname, "irix", sizeof(platform->sysname)); /* IRIX */ #ifdef DEBUG printf("sysname = %s\n", platform->sysname); printf("release = %s\n", platform->release); printf("machine = %s\n", platform->machine); #endif /* DEBUG */ } /* * 'get_runlevels()' - Get the run levels for the specified init script. */ const char * /* O - Run levels */ get_runlevels(file_t *file, /* I - File */ const char *deflevels) /* I - Default run levels */ { const char *runlevels; /* Pointer to runlevels option */ if ((runlevels = strstr(file->options, "runlevel(")) != NULL) runlevels += 9; else if ((runlevels = strstr(file->options, "runlevels(")) != NULL) runlevels += 10; /* Compatible mis-spelling... */ else runlevels = deflevels; return (runlevels); } /* * 'get_start()' - Get the start number for an init script. */ int /* O - Start number */ get_start(file_t *file, /* I - File */ int defstart) /* I - Default start number */ { const char *start; /* Pointer to start option */ if ((start = strstr(file->options, "start(")) != NULL) return (atoi(start + 6)); else return (defstart); } /* * 'get_stop()' - Get the stop number for an init script. */ int /* O - Start number */ get_stop(file_t *file, /* I - File */ int defstop) /* I - Default stop number */ { const char *stop; /* Pointer to stop option */ if ((stop = strstr(file->options, "stop(")) != NULL) return (atoi(stop + 5)); else return (defstop); } /* * 'new_dist()' - Create a new, empty software distribution. */ dist_t * /* O - New distribution */ new_dist(void) { /* * Create a new, blank distribution... */ return ((dist_t *)calloc(sizeof(dist_t), 1)); } /* * 'read_dist()' - Read a software distribution. */ dist_t * /* O - New distribution */ read_dist(const char *filename, /* I - Main distribution list file */ struct utsname *platform, /* I - Platform information */ const char *format) /* I - Format of distribution */ { FILE *listfiles[10]; /* File lists */ int listlevel; /* Level in file list */ char line[2048], /* Expanded line from list file */ buf[1024]; /* Original line from list file */ int type; /* File type */ char dst[256], /* Destination path */ src[256], /* Source path */ pattern[256], /* Pattern for source files */ user[32], /* User */ group[32], /* Group */ *temp, /* Temporary pointer */ options[256]; /* File options */ mode_t mode; /* File permissions */ int skip; /* 1 = skip files, 0 = archive files */ dist_t *dist; /* Distribution data */ file_t *file; /* Distribution file */ struct stat fileinfo; /* File information */ DIR *dir; /* Directory */ DIRENT *dent; /* Directory entry */ struct passwd *pwd; /* Password entry */ const char *subpkg; /* Subpackage */ /* * Create a new, blank distribution... */ dist = new_dist(); /* * Open the main list file... */ if ((listfiles[0] = fopen(filename, "r")) == NULL) { fprintf(stderr, "epm: Unable to open list file \"%s\" -\n %s\n", filename, strerror(errno)); return (NULL); } /* * Find any product descriptions, etc. in the list file... */ if (Verbosity) puts("Searching for product information..."); skip = 0; listlevel = 0; subpkg = NULL; do { while (get_line(buf, sizeof(buf), listfiles[listlevel], platform, format, &skip) != NULL) { /* * Do variable substitution... */ line[0] = buf[0]; /* Don't expand initial $ */ expand_name(line + 1, buf + 1, sizeof(line) - 1, strncmp(buf, "%if", 3) || strncmp(buf, "%elseif", 7)); /* * Check line for config stuff... */ if (line[0] == '%') { /* * Find whitespace... */ for (temp = line; !isspace(*temp & 255) && *temp; temp++) ; for (; isspace(*temp & 255); *temp++ = '\0') ; /* * Process directive... */ if (!strcmp(line, "%include")) { listlevel++; if ((listfiles[listlevel] = fopen(temp, "r")) == NULL) { fprintf(stderr, "epm: Unable to include \"%s\" -\n %s\n", temp, strerror(errno)); listlevel--; } } else if (!strcmp(line, "%description")) add_description(dist, listfiles[listlevel], temp, subpkg); else if (!strcmp(line, "%preinstall")) add_command(dist, listfiles[listlevel], COMMAND_PRE_INSTALL, temp, subpkg, NULL); else if (!strcmp(line, "%install") || !strcmp(line, "%postinstall")) add_command(dist, listfiles[listlevel], COMMAND_POST_INSTALL, temp, subpkg, NULL); else if (!strcmp(line, "%remove") || !strcmp(line, "%preremove")) add_command(dist, listfiles[listlevel], COMMAND_PRE_REMOVE, temp, subpkg, NULL); else if (!strcmp(line, "%postremove")) add_command(dist, listfiles[listlevel], COMMAND_POST_REMOVE, temp, subpkg, NULL); else if (!strcmp(line, "%prepatch")) add_command(dist, listfiles[listlevel], COMMAND_PRE_PATCH, temp, subpkg, NULL); else if (!strcmp(line, "%patch") || !strcmp(line, "%postpatch")) add_command(dist, listfiles[listlevel], COMMAND_POST_PATCH, temp, subpkg, NULL); else if (!strncmp(line, "%literal(", 9)) { char *ptr, /* Pointer to parenthesis */ *section; /* Section for literal text */ section = line + 9; if ((ptr = strchr(section, ')')) != NULL) { *ptr = '\0'; add_command(dist, listfiles[listlevel], COMMAND_LITERAL, temp, subpkg, section); } else fputs("epm: Ignoring bad %literal(section) line in list file.\n", stderr); } else if (!strcmp(line, "%product")) { if (!dist->product[0]) strlcpy(dist->product, temp, sizeof(dist->product)); else fputs("epm: Ignoring %product line in list file.\n", stderr); } else if (!strcmp(line, "%copyright")) { if (!dist->copyright[0]) strlcpy(dist->copyright, temp, sizeof(dist->copyright)); else fputs("epm: Ignoring %copyright line in list file.\n", stderr); } else if (!strcmp(line, "%vendor")) { if (!dist->vendor[0]) strlcpy(dist->vendor, temp, sizeof(dist->vendor)); else fputs("epm: Ignoring %vendor line in list file.\n", stderr); } else if (!strcmp(line, "%packager")) { if (!dist->packager[0]) strlcpy(dist->packager, temp, sizeof(dist->packager)); else fputs("epm: Ignoring %packager line in list file.\n", stderr); } else if (!strcmp(line, "%license")) { if (!dist->license[0]) strlcpy(dist->license, temp, sizeof(dist->license)); else fputs("epm: Ignoring %license line in list file.\n", stderr); } else if (!strcmp(line, "%readme")) { if (!dist->readme[0]) strlcpy(dist->readme, temp, sizeof(dist->readme)); else fputs("epm: Ignoring %readme line in list file.\n", stderr); } else if (!strcmp(line, "%subpackage")) { subpkg = find_subpackage(dist, temp); } else if (!strcmp(line, "%version")) { if (!dist->version[0]) { if (strchr(temp, ':')) { /* * Grab the epoch... */ dist->epoch = (int)strtol(temp, &temp, 10); if (*temp == ':') temp++; } strlcpy(dist->version, temp, sizeof(dist->version)); if ((temp = strchr(dist->version, ' ')) != NULL) { *temp++ = '\0'; dist->vernumber = atoi(temp); } else dist->vernumber = get_vernumber(dist->version); if ((temp = strrchr(dist->version, '-')) != NULL) { *temp++ = '\0'; strlcpy(dist->release, temp, sizeof(dist->release)); } } } else if (!strcmp(line, "%release")) { strlcpy(dist->release, temp, sizeof(dist->release)); dist->vernumber += atoi(temp); } else if (!strcmp(line, "%incompat")) add_depend(dist, DEPEND_INCOMPAT, temp, subpkg); else if (!strcmp(line, "%provides")) add_depend(dist, DEPEND_PROVIDES, temp, subpkg); else if (!strcmp(line, "%replaces")) add_depend(dist, DEPEND_REPLACES, temp, subpkg); else if (!strcmp(line, "%requires")) add_depend(dist, DEPEND_REQUIRES, temp, subpkg); else { fprintf(stderr, "epm: Unknown directive \"%s\" ignored.\n", line); fprintf(stderr, " %s %s\n", line, temp); } } else if (line[0] == '$') { /* * Define a variable... */ if (line[1] == '{' && (temp = strchr(line + 2, '}')) != NULL) { /* * Remove {} from name... */ memmove(temp, temp + 1, strlen(temp)); memmove(line + 1, line + 2, strlen(line + 1)); } else if (line[1] == '(' && (temp = strchr(line + 2, ')')) != NULL) { /* * Remove () from name... */ memmove(temp, temp + 1, strlen(temp)); memmove(line + 1, line + 2, strlen(line + 1)); } if ((temp = strchr(line + 1, '=')) != NULL) { /* * Only define the variable if it is not in the environment * or on the command-line. */ *temp = '\0'; if (getenv(line + 1) == NULL) { *temp = '='; if ((temp = strdup(line + 1)) != NULL) putenv(temp); } } } else { type = line[0]; if (!isspace(line[1] & 255)) { fprintf(stderr, "epm: Expected whitespace after file type: %s\n", line); continue; } temp = line + 2; mode = strtol(temp, &temp, 8); if (temp == (line + 2)) { fprintf(stderr, "epm: Expected file permissions after file type: %s\n", line); continue; } if (get_string(&temp, user, sizeof(user)) == NULL) { fprintf(stderr, "epm: Expected user after file permissions: %s\n", line); continue; } if (get_string(&temp, group, sizeof(group)) == NULL) { fprintf(stderr, "epm: Expected group after user: %s\n", line); continue; } if (get_string(&temp, dst, sizeof(dst)) == NULL) { fprintf(stderr, "epm: Expected destination after group: %s\n", line); continue; } get_string(&temp, src, sizeof(src)); get_string(&temp, options, sizeof(options)); if (tolower(type) == 'd' || type == 'R') { strlcpy(options, src, sizeof(options)); src[0] = '\0'; } #ifdef __osf__ /* Remap group "sys" to "system" */ if (!strcmp(group, "sys")) strlcpy(group, "system", sizeof(group)); #elif defined(__linux) /* Remap group "sys" to "root" */ if (!strcmp(group, "sys")) strlcpy(group, "root", sizeof(group)); #endif /* __osf__ */ if ((temp = strrchr(src, '/')) == NULL) temp = src; else temp++; for (; *temp; temp++) if (strchr("*?[", *temp)) break; if (*temp) { /* * Add using wildcards... */ if ((temp = strrchr(src, '/')) == NULL) temp = src; else *temp++ = '\0'; strlcpy(pattern, temp, sizeof(pattern)); if (dst[strlen(dst) - 1] != '/') strlcat(dst, "/", sizeof(dst)); if (temp == src) dir = opendir("."); else dir = opendir(src); if (dir == NULL) fprintf(stderr, "epm: Unable to open directory \"%s\": %s\n", src, strerror(errno)); else { /* * Make sure we have a directory separator... */ if (temp > src) temp[-1] = '/'; while ((dent = readdir(dir)) != NULL) { strlcpy(temp, dent->d_name, sizeof(src) - (size_t)(temp - src)); if (stat(src, &fileinfo)) continue; /* Skip files we can't read */ if (S_ISDIR(fileinfo.st_mode)) continue; /* Skip directories */ if (!patmatch(dent->d_name, pattern)) continue; file = add_file(dist, subpkg); file->type = type; file->mode = mode; strlcpy(file->src, src, sizeof(file->src)); strlcpy(file->dst, dst, sizeof(file->dst)); strlcat(file->dst, dent->d_name, sizeof(file->dst)); strlcpy(file->user, user, sizeof(file->user)); strlcpy(file->group, group, sizeof(file->group)); strlcpy(file->options, options, sizeof(file->options)); } closedir(dir); } } else { /* * Add single file... */ file = add_file(dist, subpkg); file->type = type; file->mode = mode; strlcpy(file->src, src, sizeof(file->src)); strlcpy(file->dst, dst, sizeof(file->dst)); strlcpy(file->user, user, sizeof(file->user)); strlcpy(file->group, group, sizeof(file->group)); strlcpy(file->options, options, sizeof(file->options)); } } } fclose(listfiles[listlevel]); listlevel--; } while (listlevel >= 0); if (!dist->packager[0]) { /* * Assign a default packager name... */ gethostname(buf, sizeof(buf)); setpwent(); if ((pwd = getpwuid(getuid())) != NULL) snprintf(dist->packager, sizeof(dist->packager), "%s@%s", pwd->pw_name, buf); else snprintf(dist->packager, sizeof(dist->packager), "unknown@%s", buf); } sort_dist_files(dist); return (dist); } /* * 'sort_dist_files()' - Sort the files in the distribution. */ void sort_dist_files(dist_t *dist) /* I - Distribution to sort */ { int i; /* Looping var */ file_t *file; /* File in distribution */ /* * Sort the files... */ if (dist->num_files > 1) qsort(dist->files, (size_t)dist->num_files, sizeof(file_t), (int (*)(const void *, const void *))compare_files); /* * Remove duplicates... */ for (i = dist->num_files - 1, file = dist->files; i > 0; i--, file++) if (!strcmp(file[0].dst, file[1].dst)) { if (file[0].type == file[1].type && file[0].mode == file[1].mode && !strcmp(file[0].src, file[1].src) && !strcmp(file[0].user, file[1].user) && !strcmp(file[0].group, file[1].group) && !strcmp(file[0].options, file[1].options)) { /* * Ignore exact duplicates... */ memmove(file, file + 1, i * sizeof(file_t)); dist->num_files--; file--; } else fprintf(stderr, "epm: Duplicate destination path \"%s\" with different info:\n" " \"%c %04o %s %s\" from source \"%s\"\n" " \"%c %04o %s %s\" from source \"%s\"\n", file[0].dst, file[0].type, file[0].mode, file[0].user, file[0].group, file[0].src, file[1].type, file[1].mode, file[1].user, file[1].group, file[1].src); } } /* * 'write_dist()' - Write a distribution list file... */ int /* O - 0 on success, -1 on failure */ write_dist(const char *listname, /* I - File to write to */ dist_t *dist) /* I - Distribution to write */ { int i; /* Looping var */ int is_inline; /* Inline text? */ char listbck[1024], /* Backup filename */ *ptr; /* Pointer into command string */ FILE *listfile; /* Output file */ file_t *file; /* Current file entry */ time_t curtime; /* Current time */ struct tm curdate; /* Current date */ char curstring[256]; /* Current date/time string */ const char *subpkg; /* Current subpackage */ static const char *commands[] = /* Command strings */ {"%preinstall", "%postinstall", "%prepatch", "%postpatch", "%preremove", "%postremove"}, *depends[] = /* Dependency strings */ {"%requires", "%incompat", "%replaces", "%provides"}; /* * Make a backup of the list file... */ snprintf(listbck, sizeof(listbck), "%s.O", listname); rename(listname, listbck); /* * Open the list file... */ if ((listfile = fopen(listname, "w")) == NULL) { rename(listbck, listname); return (-1); } /* * Write the list file... */ time(&curtime); localtime_r(&curtime, &curdate); strftime(curstring, sizeof(curstring), "# List file created on %c by " EPM_VERSION "\n", &curdate); fputs(curstring, listfile); if (dist->product[0]) fprintf(listfile, "%%product %s\n", dist->product); if (dist->version[0]) fprintf(listfile, "%%version %s %d\n", dist->version, dist->vernumber); if (dist->release[0]) fprintf(listfile, "%%release %s\n", dist->release); if (dist->copyright[0]) fprintf(listfile, "%%copyright %s\n", dist->copyright); if (dist->vendor[0]) fprintf(listfile, "%%vendor %s\n", dist->vendor); if (dist->packager[0]) fprintf(listfile, "%%packager %s\n", dist->packager); if (dist->license[0]) fprintf(listfile, "%%license %s\n", dist->license); if (dist->readme[0]) fprintf(listfile, "%%readme %s\n", dist->readme); subpkg = NULL; for (i = 0; i < dist->num_descriptions; i++) { if (dist->descriptions[i].subpackage != subpkg) { subpkg = dist->descriptions[i].subpackage; fprintf(listfile, "%%subpackage %s\n", subpkg ? subpkg : ""); } if (strchr(dist->descriptions[i].description, '\n') != NULL) fprintf(listfile, "%%description <descriptions[i].description); else fprintf(listfile, "%%description %s\n", dist->descriptions[i].description); } for (i = 0; i < dist->num_depends; i++) { if (dist->depends[i].subpackage != subpkg) { subpkg = dist->depends[i].subpackage; fprintf(listfile, "%%subpackage %s\n", subpkg ? subpkg : ""); } fprintf(listfile, "%s %s", depends[(int)dist->depends[i].type], dist->depends[i].product); if (dist->depends[i].version[0][0] || dist->depends[i].version[1][0]) { fprintf(listfile, " %s %d %s %d\n", dist->depends[i].version[0], dist->depends[i].vernumber[0], dist->depends[i].version[1], dist->depends[i].vernumber[1]); } else putc('\n', listfile); } for (i = 0; i < dist->num_commands; i++) { if (dist->commands[i].subpackage != subpkg) { subpkg = dist->commands[i].subpackage; fprintf(listfile, "%%subpackage %s\n", subpkg ? subpkg : ""); } fputs(commands[(int)dist->commands[i].type], listfile); is_inline = strchr(dist->commands[i].command, '\n') != NULL; if (is_inline) fputs(" <commands[i].command; *ptr; ptr++) { if (*ptr == '$' && !is_inline) putc(*ptr, listfile); putc(*ptr, listfile); } putc('\n', listfile); if (is_inline) fputs("EPM-END-INLINE\n", listfile); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { if (file->subpackage != subpkg) { subpkg = file->subpackage; fprintf(listfile, "%%subpackage %s\n", subpkg ? subpkg : ""); } fprintf(listfile, "%c %04o %s %s %s %s", file->type, file->mode, file->user, file->group, file->dst, file->src); if (file->options[0]) fprintf(listfile, "%s\n", file->options); else putc('\n', listfile); } return (fclose(listfile)); } /* * 'compare_files()' - Compare the destination filenames. */ static int /* O - Result of comparison */ compare_files(const file_t *f0, /* I - First file */ const file_t *f1) /* I - Second file */ { return (strcmp(f0->dst, f1->dst)); } /* * 'expand_name()' - Expand a filename with environment variables. */ static void expand_name(char *buffer, /* O - Output string */ char *name, /* I - Input string */ size_t bufsize, /* I - Size of output string */ int warn) /* I - Warn when not set? */ { char var[255], /* Environment variable name */ *varptr, /* Current position in name */ delim; /* Delimiter character */ bufsize--; while (*name != '\0' && bufsize > 0) { if (*name == '$') { name++; if (*name == '$') { /* * Insert a lone $... */ *buffer++ = *name++; bufsize--; continue; } else if (*name == '{' || *name == '(') { /* * Bracketed variable name... */ delim = *name == '{' ? '}' : ')'; for (varptr = var, name++; *name != delim && *name; name++) if (varptr < (var + sizeof(var) - 1)) *varptr++ = *name; if (*name == delim) name++; } else { /* * Unbracketed variable name... */ for (varptr = var; !strchr("/ \t\r\n-", *name) && *name; name++) if (varptr < (var + sizeof(var) - 1)) *varptr++ = *name; } *varptr = '\0'; if ((varptr = getenv(var)) != NULL) { strlcpy(buffer, varptr, bufsize + 1); bufsize -= strlen(buffer); buffer += strlen(buffer); } else if (warn) fprintf(stderr, "epm: Variable \"%s\" undefined.\n", var); } else { *buffer++ = *name++; bufsize--; } } *buffer = '\0'; } /* * 'get_file()' - Read a file into a string... */ static char * /* O - Pointer to string or NULL on EOF */ get_file(const char *filename, /* I - File to read from */ char *buffer, /* IO - String buffer */ size_t size) /* I - Size of string buffer */ { FILE *fp; /* File buffer */ struct stat info; /* File information */ char *expand; /* Expansion buffer */ if (stat(filename, &info)) { fprintf(stderr, "epm: Unable to stat \"%s\": %s\n", filename, strerror(errno)); return (NULL); } if (info.st_size > (size - 1)) { fprintf(stderr, "epm: File \"%s\" is too large (%d bytes) for buffer (%d bytes)\n", filename, (int)info.st_size, (int)size - 1); return (NULL); } if ((fp = fopen(filename, "r")) == NULL) { fprintf(stderr, "epm: Unable to open \"%s\": %s\n", filename, strerror(errno)); return (NULL); } if ((fread(buffer, 1, (size_t)info.st_size, fp)) < info.st_size) { fprintf(stderr, "epm: Unable to read \"%s\": %s\n", filename, strerror(errno)); fclose(fp); return (NULL); } fclose(fp); if (buffer[info.st_size - 1] == '\n') buffer[info.st_size - 1] = '\0'; else buffer[info.st_size] = '\0'; if (strchr(buffer, '$') != NULL) { /* * Do variable expansion before returning... */ expand = strdup(buffer); expand_name(buffer, expand, size, 1); free(expand); } return (buffer); } /* * 'get_inline()' - Read inline lines into a string... */ static char * /* O - Pointer to string or NULL on EOF */ get_inline(const char *term, /* I - Termination string */ FILE *fp, /* I - File to read from */ char *buffer, /* IO - String buffer */ size_t size) /* I - Size of string buffer */ { char *bufptr; /* Pointer into buffer */ size_t left; /* Remaining bytes in buffer */ size_t termlen; /* Length of termination string */ size_t linelen; /* Length of line */ char *expand; /* Expansion buffer */ bufptr = buffer; left = size; termlen = strlen(term); if (termlen == 0) return (NULL); while (fgets(bufptr, (int)left, fp) != NULL) { if (!strncmp(bufptr, term, (size_t)termlen) && bufptr[termlen] == '\n') { *bufptr = '\0'; break; } linelen = strlen(bufptr); left -= linelen; bufptr += linelen; if (left < 2) { fputs("epm: Inline script too long.\n", stderr); break; } } if (bufptr > buffer) { bufptr--; if (*bufptr == '\n') *bufptr = '\0'; if (strchr(buffer, '$') != NULL) { /* * Do variable expansion before returning... */ expand = strdup(buffer); expand_name(buffer, expand, size, 1); free(expand); } return (buffer); } else return (NULL); } /* * 'get_line()' - Get a line from a file, filtering for uname lines... */ static char * /* O - String read or NULL at EOF */ get_line(char *buffer, /* I - Buffer to read into */ int size, /* I - Size of buffer */ FILE *fp, /* I - File to read from */ struct utsname *platform, /* I - Platform information */ const char *format, /* I - Distribution format */ int *skip) /* IO - Skip lines? */ { int op, /* Operation (0 = OR, 1 = AND) */ match; /* 1 = match, 0 = not */ size_t namelen, /* Length of system name + version */ len; /* Length of string */ char *ptr, /* Pointer into value */ *bufptr, /* Pointer into buffer */ namever[255], /* Name + version */ value[255]; /* Value string */ const char *var; /* Variable value */ while (fgets(buffer, size, fp) != NULL) { /* * Skip comment and blank lines... */ if (buffer[0] == '#' || buffer[0] == '\n') continue; /* * See if this is a %system, %format, or conditional line... */ if (!strncmp(buffer, "%system ", 8)) { /* * Yes, do filtering based on the OS (+version)... */ *skip &= ~SKIP_SYSTEM; if (strcmp(buffer + 8, "all\n")) { namelen = strlen(platform->sysname); bufptr = buffer + 8; snprintf(namever, sizeof(namever), "%s-%s", platform->sysname, platform->release); while (isspace(*bufptr & 255)) bufptr++; if (*bufptr != '!') *skip |= SKIP_SYSTEM; while (*bufptr) { /* * Skip leading whitespace... */ while (isspace(*bufptr & 255)) bufptr++; if (!*bufptr) break; if (*bufptr == '!') { op = 1; bufptr++; } else op = 0; for (ptr = value; *bufptr && !isspace(*bufptr & 255) && ptr < (value + sizeof(value) - 1); *ptr++ = *bufptr++) ; *ptr = '\0'; if (!strncmp(value, "dunix", 5)) memcpy(value, "tru64", 5); /* Keep existing nul/version */ else if ((!strncmp(value, "darwin", 6) || !strncmp(value, "macosx", 6)) && !strcmp(platform->sysname, "macos")) { /* * Convert "darwin*" and "macosx*" to "macos*" */ memcpy(value, "macos", 5); memmove(value + 5, value + 6, strlen(value + 6) + 1); } if ((ptr = strchr(value, '-')) != NULL) len = ptr - value; else len = strlen(value); if (len < namelen) match = 0; else match = !strncasecmp(value, namever, strlen(value)) ? SKIP_SYSTEM : 0; if (op) *skip |= match; else *skip &= ~match; } } } else if (!strncmp(buffer, "%format ", 8)) { /* * Yes, do filtering based on the distribution format... */ *skip &= ~SKIP_FORMAT; if (strcmp(buffer + 8, "all\n")) { bufptr = buffer + 8; while (isspace(*bufptr & 255)) bufptr++; if (*bufptr != '!') *skip |= SKIP_FORMAT; while (*bufptr) { /* * Skip leading whitespace... */ while (isspace(*bufptr & 255)) bufptr++; if (!*bufptr) break; if (*bufptr == '!') { op = 1; bufptr++; } else op = 0; for (ptr = value; *bufptr && !isspace(*bufptr & 255) && ptr < (value + sizeof(value) - 1); *ptr++ = *bufptr++) ; *ptr = '\0'; if (!strcasecmp(value, "osx")) strlcpy(value, "macos", sizeof(value)); match = !strcasecmp(value, format) ? SKIP_FORMAT : 0; if (op) *skip |= match; else *skip &= ~match; } } } else if (!strncmp(buffer, "%arch ", 6)) { /* * Yes, do filtering based on the current architecture... */ *skip &= ~SKIP_ARCH; if (strcmp(buffer + 6, "all\n")) { bufptr = buffer + 6; while (isspace(*bufptr & 255)) bufptr++; if (*bufptr != '!') *skip |= SKIP_ARCH; while (*bufptr) { /* * Skip leading whitespace... */ while (isspace(*bufptr & 255)) bufptr++; if (!*bufptr) break; if (*bufptr == '!') { op = 1; bufptr++; } else op = 0; for (ptr = value; *bufptr && !isspace(*bufptr & 255) && ptr < (value + sizeof(value) - 1); *ptr++ = *bufptr++) ; *ptr = '\0'; update_architecture(value, sizeof(value)); match = !strcasecmp(value, platform->machine) ? SKIP_ARCH : 0; if (op) *skip |= match; else *skip &= ~match; } } } else if (!strncmp(buffer, "%ifdef ", 7) || !strncmp(buffer, "%elseifdef ", 11)) { /* * Yes, do filtering based on the presence of variables... */ if ((*skip & SKIP_IFACTIVE) && buffer[1] != 'e') { /* * Nested %if... */ fputs("epm: Warning, nested %ifdef's are not supported.\n", stderr); continue; } if (buffer[1] == 'e') bufptr = buffer + 11; else bufptr = buffer + 7; *skip |= SKIP_IF | SKIP_IFACTIVE; if (*skip & SKIP_IFSAT) continue; while (isspace(*bufptr & 255)) bufptr++; if (*bufptr == '!') *skip &= ~SKIP_IF; while (*bufptr) { /* * Skip leading whitespace... */ while (isspace(*bufptr & 255)) bufptr++; if (!*bufptr) break; /* * Get the variable name... */ if (*bufptr == '!') { op = 1; bufptr++; } else op = 0; for (ptr = value; *bufptr && !isspace(*bufptr & 255) && ptr < (value + sizeof(value) - 1); *ptr++ = *bufptr++) ; *ptr = '\0'; match = (getenv(value) != NULL) ? SKIP_IF : 0; if (op) *skip |= match; else *skip &= ~match; if (match) *skip |= SKIP_IFSAT; } } else if (!strncmp(buffer, "%if ", 4) || !strncmp(buffer, "%elseif ", 8)) { /* * Yes, do filtering based on the value of variables... */ if ((*skip & SKIP_IFACTIVE) && buffer[1] != 'e') { /* * Nested %if... */ fputs("epm: Warning, nested %if's are not supported.\n", stderr); continue; } if (buffer[1] == 'e') bufptr = buffer + 8; else bufptr = buffer + 4; *skip |= SKIP_IF | SKIP_IFACTIVE; if (*skip & SKIP_IFSAT) continue; while (isspace(*bufptr & 255)) bufptr++; if (*bufptr == '!') *skip &= ~SKIP_IF; while (*bufptr) { /* * Skip leading whitespace... */ while (isspace(*bufptr & 255)) bufptr++; if (!*bufptr) break; /* * Get the variable name... */ if (*bufptr == '!') { op = 1; bufptr++; } else op = 0; for (ptr = value; *bufptr && !isspace(*bufptr & 255) && ptr < (value + sizeof(value) - 1); *ptr++ = *bufptr++) ; *ptr = '\0'; match = ((var = getenv(value)) != NULL && *var) ? SKIP_IF : 0; if (op) *skip |= match; else *skip &= ~match; if (match) *skip |= SKIP_IFSAT; } } else if (!strcmp(buffer, "%else\n")) { /* * Handle "else" condition of %ifdef statement... */ if (!(*skip & SKIP_IFACTIVE)) { /* * No matching %if/%ifdef statement... */ fputs("epm: Warning, no matching %if or %ifdef for %else.\n", stderr); break; } if (*skip & SKIP_IFSAT) *skip |= SKIP_IF; else { *skip &= ~SKIP_IF; *skip |= SKIP_IFSAT; } } else if (!strcmp(buffer, "%endif\n")) { /* * Cancel any filtering based on environment variables. */ if (!(*skip & SKIP_IFACTIVE)) { /* * No matching %if/%ifdef statement... */ fputs("epm: Warning, no matching %if or %ifdef for %endif.\n", stderr); break; } *skip &= ~(SKIP_IF | SKIP_IFACTIVE | SKIP_IFSAT); } else if (!(*skip & SKIP_MASK)) { /* * Otherwise strip any trailing newlines and return the string! */ if (buffer[strlen(buffer) - 1] == '\n') buffer[strlen(buffer) - 1] = '\0'; return (buffer); } } return (NULL); } /* * 'get_string()' - Get a delimited string from a line. */ static char * /* O - String or NULL */ get_string(char **src, /* IO - Source string */ char *dst, /* O - Destination string */ size_t dstsize) /* I - Size of destination string */ { char *srcptr, /* Current source pointer */ *dstptr, /* Current destination pointer */ *dstend, /* End of destination string */ quote; /* Quoting char */ /* * Initialize things... */ srcptr = *src; dstptr = dst; dstend = dst + dstsize - 1; *dstptr = '\0'; /* * Skip leading whitespace... */ while (isspace(*srcptr & 255)) srcptr++; if (!*srcptr) { *src = srcptr; return (NULL); } /* * Grab the next string... */ while (*srcptr && !isspace(*srcptr & 255)) { if (*srcptr == '\\') { srcptr++; if (!*srcptr) { fputs("epm: Expected character after backslash.\n", stderr); *src = srcptr; *dst = '\0'; return (NULL); } } else if (*srcptr == '\'' || *srcptr == '\"') { /* * Read a quoted string... */ quote = *srcptr++; while (*srcptr != quote && *srcptr) { if (*srcptr == '\\') { srcptr++; if (!*srcptr) { fputs("epm: Expected character after backslash.\n", stderr); *src = srcptr; *dst = '\0'; return (NULL); } } if (dstptr < dstend) *dstptr++ = *srcptr; srcptr++; } if (!*srcptr) { fprintf(stderr, "epm: Expected end quote %c.\n", quote); *src = srcptr; *dst = '\0'; return (NULL); } srcptr++; continue; } if (dstptr < dstend) *dstptr++ = *srcptr; srcptr++; } *dstptr = '\0'; /* * Skip leading whitespace... */ while (isspace(*srcptr & 255)) srcptr++; /* * Return the string and string pointer... */ *src = srcptr; return (dst); } /* * 'patmatch()' - Pattern matching... */ static int /* O - 1 if match, 0 if no match */ patmatch(const char *s, /* I - String to match against */ const char *pat) /* I - Pattern to match against */ { /* * Range check the input... */ if (s == NULL || pat == NULL) return (0); /* * Loop through the pattern and match strings, and stop if we come to a * point where the strings don't match or we find a complete match. */ while (*s != '\0' && *pat != '\0') { if (*pat == '*') { /* * Wildcard - 0 or more characters... */ pat++; if (*pat == '\0') return (1); /* Last pattern char is *, so everything matches now... */ /* * Test all remaining combinations until we get to the end of the string. */ while (*s != '\0') { if (patmatch(s, pat)) return (1); s++; } } else if (*pat == '?') { /* * Wildcard - 1 character... */ pat++; s++; continue; } else if (*pat == '[') { /* * Match a character from the input set [chars]... */ pat++; while (*pat != ']' && *pat != '\0') if (*s == *pat) break; else if (pat[1] == '-' && *s >= pat[0] && *s <= pat[2]) break; else pat++; if (*pat == ']' || *pat == '\0') return (0); while (*pat != ']' && *pat != '\0') pat++; if (*pat == ']') pat++; s++; continue; } else if (*pat == '\\') { /* * Handle quoted characters... */ pat++; } /* * Stop if the pattern and string don't match... */ if (*pat++ != *s++) return (0); } /* * If we are at the end of the string, see if the pattern remaining is * "*"... */ while (*pat == '*') pat++; /* * Done parsing the pattern and string; return 1 if the last character matches * and 0 otherwise... */ return (*s == *pat); } /* * 'sort_subpackages()' - Compare two subpackage names. */ static int /* O - Result of comparison */ sort_subpackages(char **a, /* I - First subpackage */ char **b) /* I - Second subpackage */ { return (strcmp(*a, *b)); } /* * 'update_architecture()' - Normalize the machine architecture name. */ static void update_architecture(char *buffer, /* I - String buffer */ size_t bufsize) /* I - Size of string buffer */ { char *temp; /* Pointer into string buffer */ /* * Convert the name to lowercase with no underscores or dashes. */ for (temp = buffer; *temp != '\0'; temp++) if (*temp == '-' || *temp == '_') { char *ptr; /* Pointer into string */ for (ptr = temp; ptr[1]; ptr++) *ptr = ptr[1]; *ptr = '\0'; temp--; } else *temp = tolower(*temp); /* * Convert common synonyms to generic names... */ if (strstr(buffer, "86")) { if (strstr(buffer, "64")) strlcpy(buffer, "x86_64", bufsize); else strlcpy(buffer, "intel", bufsize); } else if (!strncmp(buffer, "arm", 3)) strlcpy(buffer, "arm", bufsize); else if (!strncmp(buffer, "ppc", 3)) strlcpy(buffer, "powerpc", bufsize); else if (!strncmp(buffer, "sun", 3)) strlcpy(buffer, "sparc", bufsize); } jimjag-epm-84910c6/doc/000077500000000000000000000000001521151356300145615ustar00rootroot00000000000000jimjag-epm-84910c6/doc/1-intro.html000066400000000000000000000307511521151356300167460ustar00rootroot00000000000000

1 - Introduction to EPM

This chapter provides an introduction to the ESP Package Manager ("EPM").

What is EPM?

Software distribution under UNIX/Linux can be a challenge, especially if you ship software for more than one operating system. Every operating system provides its own software packaging tools and each has unique requirements or implications for the software development environment.

The ESP Package Manager ("EPM") is one solution to this problem. Besides its own "portable" distribution format, EPM also supports the generation of several vendor-specific formats. This allows you to build software distribution files for almost any operating system from the same sources.

History and Evolution

When Easy Software Products was founded by me in 1993, the company originally shipped software only for the SGI IRIX operating system. Support was added for Solaris in 1997, followed quickly by HP-UX in 1998.

Each new operating system and supported processor required a new set of packaging files. While this worked, it also meant keeping all of the packaging files synchronized manually. Needless to say, this process was far from perfect and there was more than one distribution that was not identical on all operating systems.

As I began developing CUPS (https://www.cups.org/) in 1997, the initial goal was to add support for two additional operating systems: Linux and Compaq Tru64 UNIX. If I was to avoid the mistakes of the past, I clearly had to change how software distributions were produced.

The first version of EPM was released in 1999 and supported so-called "portable" software distributions that were not tied to any particular operating system or packaging software. Due to popular demand, we added support for vendor-specific packaging formats in the second major release of EPM, allowing the generation of portable or "native" distributions from one program and one set of software distribution files.

Existing Software Packaging Systems

As I looked for a solution to our problem, we naturally investigated the existing open-source packaging systems. Under Linux, I looked at the Red Hat Package Manager ("RPM") and Debian packaging software ("dpkg" and "dselect"). For the commercial UNIX's I looked at the vendor-supplied packaging systems. Table 1.1 shows the results of my investigation.

Table 1.1: Software Packaging Formats
Format Operating Systems1 Binaries Cross- Platform Patches Up- grades Con- flicts Re- quires Re- places Config Files Map Files Un- install
installp AIX Yes No No No Yes Yes No No No Yes
pkg_add FreeBSD Yes Yes2 No No No No No No No Yes
pkg_add NetBSD
OpenBSD
Yes Yes2 No No Yes Yes No No No Yes
deb Ubuntu Linux
Debian GNU/Linux
Yes Yes2 No Yes Yes Yes Yes Yes No Yes
depot HP-UX Yes No Yes Yes Yes Yes No Yes Yes Yes
inst IRIX Yes No Yes Yes Yes Yes Yes Yes Yes Yes
Install.app macOS Yes No No Yes No No No No No No
pkgadd Solaris Yes No Yes No Yes Yes No Yes Yes Yes
rpm CentOS
Red Hat
SuSE
Yes Yes2 No Yes Yes Yes No Yes No Yes
setld Tru64 UNIX Yes No No No Yes Yes No No No Yes
slackware Slackware Linux Yes No No No Yes Yes No No No Yes
  1. Standard packaging system for named operating systems.
  2. These packaging systems are cross-platform but require the package management utilities to be installed on the platform before installing the package.

 

As you can see, none of the formats supported every feature we were looking for. One common fault of all these formats is that they do not support a common software specification file format. That is, making a Debian software distribution requires significantly different support files than required for a Solaris pkg distribution. This makes it extremely difficult to manage distributions for multiple operating systems.

All of the package formats support binary distributions. The RPM and Debian formats also support source distributions that specifically allow for recompilation and installation. Only the commercial UNIX formats support patch distributions - you have to completely upgrade a software package with RPM and Debian. All but the Solaris pkg format allow you to upgrade a package without removing the old version first.

When building the software packages, RPM and Debian force you to create the actual directories, copy the files to those directories, and set the ownerships and permissions. You essentially are creating a directory for your software that can be archived in the corresponding package format. To ensure that all file permissions and ownerships are correct, you must build the distribution as the root user or use the fakeroot software, introducing potential security risks and violating many corporate security policies. It can also make building distributions difficult when dynamic data such as changing data files or databases is involved.

The commercial UNIX formats use software list files that map source files to the correct directories and permissions. This allows for easier delivery of dynamic data, configuration management of what each distribution actually contains, and eliminates security issues with special permissions and building distributions as the root user. Using the proprietary format also has the added benefit of allowing for software patches and using the familiar software installation tools for that operating system. The primary disadvantage is that the same distributions and packaging software cannot be used on other operating systems.

Design Goals of EPM

EPM was designed from the beginning to build binary software distributions using a common software specification format. The same distribution files work for all operating systems and all distribution formats. Supporting source code distributions was not a goal since most RPM and Debian source distributions are little more than wrapping around a compressed tar file containing the source files and a configure script.

Over the years, additional features have made their way into EPM to support more advanced software packages. Whenever possible, EPM emulates a feature if the vendor package format does not support it natively.

Resources

The EPM project page provides access to the current software, documentation, and issue tracker for EPM:

https://jimjag.github.io/epm/

The EPM source code can be downloaded in compressed tar files or via the popular Subversion software. Please see the EPM project page for complete instructions.

jimjag-epm-84910c6/doc/2-building.html000066400000000000000000000232141521151356300174050ustar00rootroot00000000000000

2 - Building EPM

This chapter shows how to configure, build, and install the ESP Package Manager.

Requirements

EPM requires very little pre-installed software to work. Most items will likely be provided as part of your OS. Your development system will need a C compiler, the make(1) program (GNU, BSD, and most vendor make programs should work), a POSIX shell (Bourne, Korn, Bash, etc.), and gzip(1).

The optional graphical setup program requires a C++ compiler, the FLTK library, version 1.1.x or 1.3.x, and (for UNIX/Linux) the X11 libraries. FLTK is available at the following URL:

http://www.fltk.org/

Your end-user systems will require a POSIX shell, the df(1) program, the tar(1) program, and the gzip(1) program to install portable distributions. All but the last are standard items, and most vendors include gzip as well.

EPM can also generate vendor-specific distributions. These require the particular vendor tool, such as rpm(8) and dpkg(8), to generate the software distribution on the development system and load the software distribution on the end-user system.

Configuring the Software

EPM uses GNU autoconf(1) to configure itself for your system. The configure script is used to configure the EPM software, as follows:

./configure ENTER

Choosing Compilers

If the configure script is unable to determine the name of your C or C++ compiler, set the CC and CXX environment variables to point to the C and C++ compiler programs, respectively. You can set these variables using the following commands in the Bourne, Korn, or Bash shells:

export CC=/foo/bar/gcc ENTER
export CXX=/foo/bar/gcc ENTER

If you are using C shell or tcsh, use the following commands instead:

setenv CC /foo/bar/gcc ENTER
setenv CXX /foo/bar/gcc ENTER

Run the configure script again to use the new commands.

Choosing Installation Directories

The default installation prefix is /usr/local, which will place the EPM programs in /usr/local/bin, the setup GUI in /usr/local/lib/epm, and the man pages in /usr/local/share/man. Use the --prefix option to relocate these files to another directory:

./configure --prefix=/example/path ENTER

The configure script also accepts the --bindir, --libdir, and --mandir options to relocate each directory separately, as follows:

./configure --bindir=/example/path/bin --libdir=/example/path/lib \
    --mandir=/example/path/share/man ENTER

Options for the Setup GUI

The setup GUI requires the FLTK library. The configure script will look for the fltk-config utility that comes with FLTK. Set the FLTKCONFIG environment variable to the full path of this utility if it cannot be found in the current path:

setenv FLTKCONFIG /foo/bar/bin/fltk-config ENTER

or:

FLTKCONFIG=/foo/bar/bin/fltk-config ENTER
export FLTKCONFIG

Building the Software

Once you have configured the software, type the following command to compile it:

make ENTER

Compilation should take a few minutes at most. Then type the following command to determine if the software compiled successfully:

make test ENTER
Portable distribution build test PASSED.
Native distribution build test PASSED.

The test target builds a portable and native distribution of EPM and reports if the two distributions were generated successfully.

Installing the Software

Now that you have compiled and tested the software, you can install it using the make command or one of the distributions that was created. You should be logged in as the super-user unless you specified installation directories for which you have write permission. The su(8) command is usually sufficient to install software:

su ENTER

Operating systems such as macOS do not enable the root account by default. The sudo(8) command is used instead:

sudo installation command ENTER

Installing Using the make Command

Type the following command to install the EPM software using the make command:

make install ENTER
Installing EPM setup in /usr/local/lib/epm
Installing EPM programs in /usr/local/bin
Installing EPM manpages in /usr/local/share/man/man1
Installing EPM documentation in /usr/local/share/doc/epm

Use the sudo command to install on macOS:

sudo make install ENTER
Installing EPM setup in /usr/local/lib/epm
Installing EPM programs in /usr/local/bin
Installing EPM manpages in /usr/local/share/man/man1
Installing EPM documentation in /usr/local/share/doc/epm

Installing Using the Portable Distribution

The portable distribution can be found in a subdirectory named using the operating system, version, and architecture. For example, the subdirectory for a Linux 2.4.x system on an Intel-based system would be linux-2.4-intel. The subdirectory name is built from the following template:

os-major.minor-architecture

The os name is the common name for the operating system. Table 2.1 lists the abbreviations for most operating systems.

The major.minor string is the operating system version number. Any patch revision information is stripped from the version number, as are leading characters before the major version number. For example, HP-UX version B.11.11 will result in a version number string of 11.11.

Table 2.1: Operating System Name Abbreviations
Operating System Name
AIX aix
Compaq Tru64 UNIX
Digital UNIX
OSF/1
tru64
FreeBSD freebsd
HP-UX hpux
IRIX irix
Linux linux
macOS osx
NetBSD netbsd
OpenBSD openbsd
Solaris solaris
Table 2.2: Processor Architecture Abbreviations
Processor(s) Abbreviation
Compaq Alpha alpha
HP Precision Architecture hppa
INTEL 80x86 intel
INTEL 80x86 w/64bit Extensions x86_64
MIPS RISC mips
IBM Power PC powerpc
SPARC
MicroSPARC
UltraSPARC
sparc

The architecture string identifies the target processor. Table 2.2 lists the supported processors.

Once you have determined the subdirectory containing the distribution, type the following commands to install EPM from the portable distribution:

cd os-major.minor-architecture ENTER
./epm.install ENTER

The software will be installed after answering a few yes/no questions.

Installing Using the Native Distribution

The test target also builds a distribution in the native operating system format, if supported. Table 2.3 lists the native formats for each supported operating system and the command to run to install the software.

Table 2.3: Native Operating System Formats
Operating System Format Command
AIX aix installp -ddirectory epm
Compaq Tru64 UNIX
Digital UNIX
OSF/1
setld setld -a directory
FreeBSD
NetBSD
OpenBSD
bsd cd directory
pkg_add epm
HP-UX depot swinstall -f directory
IRIX inst swmgr -f directory
Linux rpm rpm -i directory/epm-4.1.rpm
macOS osx open directory/epm-4.1.pkg
Solaris pkg pkgadd -d directory epm
jimjag-epm-84910c6/doc/3-packaging.html000066400000000000000000000262551521151356300175450ustar00rootroot00000000000000

3 - Packaging Your Software with EPM

This chapter describes how to use EPM to package your own software packages.

The Basics

EPM reads one or more software "list" files that describe a single software package. Each list file contains one or more lines of ASCII text containing product or file information.

Comments lines start with the # character, directive lines start with the % character, variables lines start with the $ character, and file, directory, init script, and symlink lines start with a letter.

Product Information

Every list file needs to define the product name, copyright, description, license, README file, vendor, and version:

%product Kung Foo Firewall
%copyright 1999-2005 by Foo Industries, All Rights Reserved.
%vendor Foo Industries
%license LICENSE
%readme README
%description Kung Foo firewall software for your firewall.
%version 1.2.3p4 1020304

The %license and %readme directives specify files for the license agreement and README files for the package, respectively.

The %product, %copyright, %vendor, and %description directives take text directly from the line.

The %version directive specifies the version numbers of the package. The first number is the human-readable version number, while the second number is the integer version number. If you omit the integer version number, EPM will calculate one for you.

Files, Directories, and Symlinks

Each file in the distribution is listed on a line starting with a letter. The format of all lines is:

type mode owner group destination source options

Regular files use the letter f for the type field:

f 755 root sys /usr/bin/foo foo

Configuration files use the letter c for the type field:

c 644 root sys /etc/foo.conf foo.conf

Directories use the letter d for the type field and use a source path of "-":

d 755 root sys /var/spool/foo -

Finally, symbolic links use the letter l (lowercase L) for the type field:

l 000 root sys /usr/bin/foobar foo

The source field specifies the file to link to and can be a relative path. Just as with the ln command, source paths are relative to the destination directory. For example, the symbolic link /usr/bin/foobar above points to the file /usr/bin/foo.

Wildcards

Wildcard patterns can be used in the source field to include multiple files on a single line. The destination field contains the destination directory for the matched files:

f 0444 root sys /usr/share/doc/foo *.html

For example, if the source directory contains three HTML files, bar.html, baz.html, and foo.html, the wildcard line above would expand to:

f 0444 root sys /usr/share/doc/foo/bar.html bar.html
f 0444 root sys /usr/share/doc/foo/baz.html baz.html
f 0444 root sys /usr/share/doc/foo/foo.html foo.html

Subpackages

Subpackages are optional parts of your software package. For example, if your package includes developer files, you might provide them as a subpackage so that users that will not be developing add-ons to your software can omit them from the installation.

Note:
Subpackages are implemented as native subsets of the main package for the AIX, HPUX, IRIX, Solaris, and Tru64 formats and as separate packages that depend on the main (parent) package for all other formats.

To define a subpackage, use the %subpackage directive followed by a %description directive:

%subpackage foo
%description One-Line Description of Foo

Files, scripts, and dependencies that follow the %subpackage directive are treated as part of that subpackage. Specifying the %subpackage directive with no name returns processing to the main (parent) package.

You can alternate between subpackages as many times as you like:

%description Main package description
f 0755 /usr/bin/bar bar

%subpackage foo
%description Foo programs
f 0755 /usr/bin/foo foo
%requires bla

%subpackage
f 0644 /usr/share/man/man1/bar.1

%subpackage foo
f 0644 /usr/share/man/man1/foo.1

The above example creates a package containing the "bar" program and man page with a subpackage containing the "foo" program and man page. The "foo" subpackage depends both on the main package (implicit %requires) and another package called "bla".

Building a Software Package

The epm(1) program is used to build software package from list files. To build a portable software package for an application called "foo", type the following command:

epm foo ENTER

If your application uses a different base name than the list file, you can specify the list filename on the command-line as well:

epm foo bar.list ENTER

Installing the Software Package

Once you have created the software package, you can install it. Portable packages include an installation script called product.install, where "product" is the name of the package:

cd os-release-arch ENTER
./product.install ENTER

After answering a few yes/no questions, the software will be installed. To bypass the questions, run the script with the now argument:

cd os-release-arch ENTER
./product.install now ENTER

Figure 3.1: The EPM Setup GUI
The EPM Setup GUI

Including the Setup GUI

EPM also provides an optional graphical setup program (Figure 3.1). To include the setup program in your distributions, create a product logo image in GIF or XPM format and use the --setup-image option when creating your distribution:

epm --setup-image foo.xpm foo ENTER

This option is only supported when creating for portable and macOS software packages.

Creating Vendor Package Files

EPM can also produce vendor-specific packages using the -f option:

epm -f format foo bar.list ENTER

The format option can be one of the following keywords:

  • aix - AIX software packages.
  • bsd - FreeBSD, NetBSD, or OpenBSD software packages.
  • deb - Debian software packages.
  • depot or swinstall - HP-UX software packages.
  • inst or tardist - IRIX software packages.
  • macos or macos-signed - macOS software packages.
  • native - "Native" software packages (RPM, INST, DEPOT, PKG, etc.) for the platform.
  • pkg - Solaris software packages.
  • portable - Portable software packages (default).
  • rpm or rpm-signed - Red Hat software packages.
  • setld - Tru64 (setld) software packages.
  • slackware - Slackware software packages.

Everything in the software list file stays the same - you just use the -f option to select the format. For example, to build an RPM distribution of EPM, type:

epm -f rpm epm

The result will be one or more RPM package files instead of the portable package files.

Package Files

EPM creates the package files in the output directory. As mentioned in Chapter 1, "Installing Using the Portable Distribution", the default output directory is based on the operating system name, version, and architecture. Each package format will leave different files in the output directory.

AIX Package Files

AIX packages are contained in a file called name.bff, where "name" is the product/package name you supplied on the command-line.

BSD Package Files

BSD packages are contained in a file called name.tgz, where "name" is the product/package name you supplied on the command-line.

HP-UX Package Files

HP-UX packages are contained in two files called name.depot.gz and name.depot.tgz, where "name" is the product/package name you supplied on the command-line. The name.depot.gz file can be supplied directly to the swinstall(1m) command, while the name.depot.tgz file contains a compressed tar(1) archive that can be used to install the software from CD-ROM or network filesystem.

Debian Package Files

Debian packages are contained in a file called name.deb or name.deb.tgz when there are subpackages, where "name" is the product/package name you supplied on the command-line. The name.deb.tgz file contains a compressed tar archive containing name.deb and name-subpackage.deb files that can be installed from CD-ROM, disk, or network filesystem.

IRIX Package Files

IRIX packages are contained in a file called name.tardist, where "name" is the product/package name you supplied on the command-line.

macOS Package Files

macOS packages are contained in a file called name.dmg, where "name" is the product/package name you supplied on the command-line.

RPM Package Files

RPM packages are contained in a file called name.rpm or name.rpm.tgz when there are subpackages, where "name" is the product/package name you supplied on the command-line. The name.rpm.tgz file contains a compressed tar archive containing name.rpm and name-subpackage.rpm files that can be installed from CD-ROM, disk, or network filesystem.

Slackware Package Files

Slackware packages are contained in a file called name.tgz, where "name" is the product/package name you supplied on the command-line.

Solaris Package Files

Solaris packages are contained in two files called name.pkg.gz and name.pkg.tgz, where "name" is the product/package name you supplied on the command-line. The name.pkg.gz file is a compressed package file that can be used directly with the pkgadd(1m) command, while the name.pkg.tgz file is a compressed tar archive that can be used to install the software from CD-ROM, disk, or network filesystem.

Tru64 Package Files

Tru64 packages are contained in a file called name.tar.gz, where "name" is the product/package name you supplied on the command-line.

jimjag-epm-84910c6/doc/4-advanced.html000066400000000000000000000402471521151356300173640ustar00rootroot00000000000000

4 - Advanced Packaging with EPM

This chapter describes the advanced packaging features of EPM.

Including Other List Files

The %include directive includes another list file:

%include filename

Includes can usually be nested up to 250 levels depending on the host operating system and libraries.

Dependencies

EPM supports four types of dependencies in list files: %incompat, %provides, %replaces, and %requires. Table 4.1 shows the level of support for each package format.

Table 4.1: Dependency Support
Format %incompat %provides %replaces %requires
aix No No Yes Yes
bsd Yes No No Yes
deb Yes Yes1 Yes Yes
inst Yes No Yes Yes
osx No No No No
pkg Yes No No Yes
portable Yes Yes Yes Yes
rpm Yes Yes No Yes
setld No No No No
slackware No No No No
swinstall No No Yes Yes
  1. Debian's package format does not currently support version numbers for %provides dependencies.

 

Software conflicts and requirements are specified using the %incompat and %requires directives.

If your software replaces another package, you can specify that using the %replaces directive. %replaces is silently mapped to %incompat when the package format does not support package replacement.

If your package provides certain functionality associated with a standard name, the %provides directive can be used.

Dependencies are specified using the package name and optionally the lower and upper version numbers:

%requires foobar
%requires foobar 1.0
%incompat foobar 0.9
%replaces foobar
%replaces foobar 1.2 3.4
%provides foobar

or the filename:

%requires /usr/lib/libfoobar.so
%incompat /usr/lib/libfoobar.so.1.2

Package dependencies are currently enforced only for the same package format, so a portable distribution that requires package "foobar" will only look for an installed "foobar" package in portable format.

Filename dependencies are only supported by the Debian, portable, and RPM distribution formats.

Scripts

Bourne shell script commands can be executed before or after installation, patching, or removal of the software. Table 4.2 shows the support for scripts in each package format.

The %preinstall and %postinstall directives specify commands to be run before and after installation, respectively:

%preinstall echo Command before installing
%postinstall echo Command after installing

Similarly, the %prepatch and %postpatch directives specify commands to be executed before and after patching the software:

%prepatch echo Command before patching
%postpatch echo Command after patching

Finally, the %preremove and %postremove directives specify commands that are run before and after removal of the software:

%preremove echo Command before removing
%postremove echo Command after removing
Table 4.2: Scripts Support
Format %preinstall %postinstall %prepatch %postpatch %preremove %postremove
aix Yes Yes No No Yes Yes
bsd No Yes No No Yes No
deb Yes Yes No No Yes Yes
inst Yes Yes No No Yes Yes
osx Yes Yes No No No No
pkg Yes Yes No No Yes Yes
portable Yes Yes Yes Yes Yes Yes
rpm Yes Yes No No Yes Yes
setld Yes Yes No No Yes Yes
slackware No Yes No No No No
swinstall Yes Yes No No Yes Yes

 

To include an external script file, use the <filename notation:

%postinstall <filename

To include multiple lines directly, use the <<string notation (a.k.a. a "here" document):

%postinstall <<EOF
echo Command before installing
/usr/bin/foo
EOF

Note that all commands specified in the list file will use the variable expansion provided by EPM, so be sure to quote any dollar sign ($) characters in your commands. For example, "$foo" is replaced by the value of "foo", but "$$foo" becomes "$foo".

Conditional Directives

The %system directive can match or not match specific operating system names or versions. The operating system name is the name reported by uname in lowercase, while the operating system version is the major and minor version number reported by uname -r:

%system macos
 
Only include the following files when building a distribution for the macOS operating system.
 
%system linux-2.0
 
Only include the following files when building a distribution for Linux 2.0.x.
 
%system !macos !linux-2.0
 
Only include the following files when building a distribution for operating systems other than macOS and Linux 2.0.x.
 

The special name all is used to match all operating systems:

%system all

For format-specific files, the %format directive can be used:

%format rpm
 
Only include the following files when building an RPM distribution.
 
%format !rpm
 
Only include the following files when not building an RPM distribution.x.
 
%format all
 
Include the following files for all types of distributions.
 

The %arch directive can match or not match specific architectures. The architecture name is the name reported by uname -m; "arm" is a synonym for "armv6", "armv7", and "armv8", "intel" is a synonym for "i386", "i486", "i586", and "i686", and "powerpc" is a synonym for "ppc":

%arch intel
 
Only include the following files when building a package for 32-bit Intel processors.
 
%arch armv6
 
Only include the following files when building a package for ARMv6 processors.
 
%system !powerpc
 
Only include the following files when building a package for processors other than PowerPC.
 

The special name all is used to match all architectures:

%arch all

Finally, EPM can conditionally include lines using the %if, %elseif, %ifdef, %elseifdef, %else, and %endif directives.

%if directives include the text that follows if the named variable(s) are defined to a non-empty string:

%if FOO
f 755 root sys /usr/bin/foo foo
%elseif BAR
f 755 root sys /usr/bin/bar bar
%endif

%ifdef directives only include the text if the named variable(s) are defined to any value:

%ifdef OSTYPE
f 755 root sys /usr/bin/program program-$OSTYPE
%else
f 755 root sys /usr/bin/program program.sh
%endif

Protecting Object Files from Stripping

The nostrip() option can be included at the end of a file line to prevent EPM from stripping the symbols and debugging information from a file:

f 755 root sys /usr/lib/libfoo.so libfoo.so nostrip()

Software Patches

EPM supports portable software patch distributions which contain only the differences between the original and patch release. Patch files are specified using uppercase letters for the affected files. In the following example, the files /usr/bin/bar and /etc/foo.conf are marked as changed since the original release:

f 755 root sys /usr/bin/foo foo
F 755 root sys /usr/bin/bar bar
f 755 root sys /usr/share/man/man1/foo.1 foo.man
f 755 root sys /usr/share/man/man1/bar.1 bar.man
C 644 root sys /etc/foo.conf foo.conf

Variables

EPM imports the current environment variables for use in your list file. You can also define new variable in the list file or on the command-line when running EPM.

Variables are defined by starting the line with the dollar sign ($) followed by the name and value:

$name=value
$prefix=/usr
$exec_prefix=${prefix}
$bindir=$exec_prefix/bin

Variable substitution is performed when the variable is defined, so be careful with the ordering of your variable definitions.

Also, any variables you specify in your list file will be overridden by variables defined on the command-line or in your environment, just like with make. This can be a useful feature or a curse, depending on your choice of variable names.

As you can see, variables are referenced using the dollar sign ($). As with most shells, variable names can be surrounded by curly braces (${variable}) to explicitly delimit the name.

If you need to insert a $ in a filename or a script, use $$:

%install echo Enter your name:
%install read $$name
%install echo Your name is $$name.

Init Scripts

Initialization scripts are generally portable between platforms, however the location of initialization scripts varies greatly.

The i file type can be used to specify and init script that is to be installed on the system. EPM will then determine the appropriate init file directories to use and create any required symbolic links to support the init script:

i 755 root sys foo foo.sh

The previous example creates an init script named foo on the end-user system and will create symbolic links to run levels 0, 2, 3, and 5 as needed, using a sequence number of 00 (or 000) for the shutdown script and 99 (or 999) for the startup script.

To specify run levels and sequence numbers, use the runlevel(), start(), and stop() options:

i 755 root sys foo foo.sh "runlevel(02) start(50) stop(30)"

Literal Package Data

Sometimes you need to include format-specific package data such as keywords, signing keys, and response data. The %literal(section) directive adds format-specific data to the packages you create. Literal data is currently only supported for DEB, RPM and PKG packages.

Debian Literal Data

Debian packages have control files that provide metadata for each package. The %literal(control) directive can be used to provide this metadata:

%literal(control) <<EOF
Section: misc
Priority: extra
EOF

Debian packages support template files to define the metadata associated with configuration variables. The %literal(templates) directive can be used to provide this metadata:

%literal(templates) <<EOF 
Template: canpi-server/reboot
Type: boolean
Description: Would you like to reboot to complete the package installation ?
 The package installation updates the device table overlay definition.
 For these changes to take effect the system must be restarted.
 The canpi daemon is not started by the package installation as the lack of /dev/can0
 will cause it to fail immediately.

EOF

PKG Literal Data

PKG packages support request files that are used to do batch installations when installation commands require user input. The %literal(request) directive can be used to provide this user input:

%literal(request) <<EOF
John Doe
1 Any Lane
Forest Lawn, OH 12345
EOF

RPM Literal Data

RPM packages support numerous attributes in the "spec" file that control how the package is created and what metadata is included with the package. The %literal(spec) directive can be used to provide attributes for the spec file:

%literal(spec) <<EOF
%changelog
* Tue Aug 26 2008 John Doe <johndoe@domain.com>

- Added new feature "bar"

* Fri Aug 1 2008 John Doe <johndoe@domain.com>

- Added new feature "foo"
EOF
jimjag-epm-84910c6/doc/5-examples.html000066400000000000000000000054651521151356300174410ustar00rootroot00000000000000

5 - EPM Packaging Examples

This chapter shows how the EPM and CUPS software is packaged using EPM list files. The EPM list file example highlights the basic features of EPM, while the CUPS list file example shows the more advanced features of EPM.

Packaging the EPM Software

The EPM software comes with its own autoconf-generated epm.list file that is used to package and test EPM. The EPM package consists of the main package plus a "documentation" subpackage for the documentation files and a "man" subpackage for the man pages.

We start by defining variables for each of the autoconf directory variables:

$prefix=/usr
$exec_prefix=/usr
$bindir=${exec_prefix}/bin
$datadir=/usr/share
$docdir=${datadir}/doc/epm
$libdir=/usr/lib
$mandir=/usr/share/man
$srcdir=.

Then we provide the general product information that is required for all packages; notice the use of ${srcdir} to reference the LICENSE and README files:

%product ESP Package Manager
%copyright 1999-2020 by Michael R Sweet, All Rights Reserved.
%copyright 2020 by Jim Jagielski, All Rights Reserved.
%vendor Michael R Sweet
%vendor Jim Jagielski
%license ${srcdir}/LICENSE
%readme ${srcdir}/README.md
%description Universal software packaging tool for UNIX.
%version 4.6 460

After the product information, we include all of the non-GUI files that are part of EPM:

# Executables
%system all
f 0555 root sys ${bindir}/epm epm
f 0555 root sys ${bindir}/epminstall epminstall
f 0555 root sys ${bindir}/mkepmlist mkepmlist

# Documentation
%subpackage documentation
%description Documentation for EPM
f 0444 root sys ${docdir}/README $srcdir/README.md
f 0444 root sys ${docdir}/LICENSE $srcdir/LICENSE
f 0444 root sys ${docdir}/epm-book.epub $srcdir/doc/epm-book.epub
f 0444 root sys ${docdir}/epm-book.html $srcdir/doc/epm-book.html
f 0444 root sys ${docdir}/epm-book.pdf $srcdir/doc/epm-book.pdf

# Man pages
%subpackage man
%description Man pages for EPM
f 0444 root sys ${mandir}/man1/epm.1 $srcdir/doc/epm.man
f 0444 root sys ${mandir}/man1/epminstall.1 $srcdir/doc/epminstall.1
f 0444 root sys ${mandir}/man1/mkepmlist.1 $srcdir/doc/mkepmlist.1
f 0444 root sys ${mandir}/man5/epm.list.5 $srcdir/doc/epm.list.5

Finally, we conditionally include the GUI files depending on the state of a variable called GUIS:

# GUI files...
$GUIS=setup uninst

%if GUIS
%subpackage
f 0555 root sys ${libdir}/epm/setup setup
f 0555 root sys ${libdir}/epm/uninst uninst

%system macos
f 0444 root sys ${datadir}/epm/default.icns default.icns
%system all

%subpackage man
f 0444 root sys ${mandir}/man1/setup.1 $srcdir/doc/setup.1
f 0444 root sys ${mandir}/man5/setup.types.5 $srcdir/doc/setup.types.5

%endif
jimjag-epm-84910c6/doc/Makefile.in000066400000000000000000000075521521151356300166370ustar00rootroot00000000000000# # Makefile for the ESP Package Manager (EPM) documentation. # # Copyright © 2020 by Jim Jagielski # Copyright © 1999-2020 by Michael R Sweet # Copyright © 1999-2006 by Easy Software Products, all rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.# # Programs... CC = @CC@ HTMLDOC = @HTMLDOC@ RM = @RM@ -f INSTALL = @INSTALL@ # Program options... ARFLAGS = @ARFLAGS@ ARCHFLAGS = @ARCHFLAGS@ CFLAGS = $(ARCHFLAGS) @CFLAGS@ $(OPTIM) CPPFLAGS = @CPPFLAGS@ LDFLAGS = $(ARCHFLAGS) @LDFLAGS@ $(OPTIM) LIBS = @LIBS@ OPTIM = @OPTIM@ # Directories... bindir = @bindir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ exec_prefix = @exec_prefix@ includedir = @includedir@ infodir = @infodir@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ oldincludedir = @oldincludedir@ prefix = @prefix@ privateinclude = @privateinclude@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ top_srcdir = @top_srcdir@ BUILDROOT = $(DSTROOT)$(RPM_BUILD_ROOT)$(DESTDIR) VPATH = $(srcdir) # Man page generation rule... .SUFFIXES: .html .1 .5 .1.html .5.html: $(RM) $@ ./mantohtml $< >$@ # Targets... MANPAGES = epm.html epminstall.html mkepmlist.html setup.html HTMLFILES = title.html preface.html 1-intro.html 2-building.html \ 3-packaging.html 4-advanced.html 5-examples.html \ a-license.html b-manpages.html c-reference.html \ $(MANPAGES) BOOKS = epm-book.epub epm-book.html epm-book.pdf # Make everything (requires HTMLDOC) all: $(MANPAGES) $(BOOKS) # Clean generated programs clean: $(RM) mantohtml mantohtml.o # Install documentation install: echo Installing EPM manpages in $(BUILDROOT)$(mandir)/man1 $(INSTALL) -d -m 755 $(BUILDROOT)$(mandir)/man1 for file in epm.1 epminstall.1 mkepmlist.1 setup.1; do \ $(INSTALL) -c -m 644 $$file $(BUILDROOT)$(mandir)/man1; \ done echo Installing EPM manpages in $(BUILDROOT)$(mandir)/man5 $(INSTALL) -d -m 755 $(BUILDROOT)$(mandir)/man5 for file in epm.list.5 setup.types.5; do \ $(INSTALL) -c -m 644 $$file $(BUILDROOT)$(mandir)/man5; \ done echo Installing EPM documentation in $(BUILDROOT)$(docdir) $(INSTALL) -d -m 755 $(BUILDROOT)$(docdir) for file in $(top_srcdir)/LICENSE $(top_srcdir)/README.md $(BOOKS); do \ $(INSTALL) -c -m 644 $$file $(BUILDROOT)$(docdir); \ done # Uninstall all targets... uninstall: echo Uninstalling EPM manpages from $(BUILDROOT)$(mandir)/man1 $(RM) $(BUILDROOT)$(mandir)/man1/epm.1 $(RM) $(BUILDROOT)$(mandir)/man1/epminstall.1 $(RM) $(BUILDROOT)$(mandir)/man1/mkepmlist.1 $(RM) $(BUILDROOT)$(mandir)/man1/setup.1 echo Uninstalling EPM manpages from $(BUILDROOT)$(mandir)/man5 $(RM) $(BUILDROOT)$(mandir)/man5/epm.list.5 $(RM) $(BUILDROOT)$(mandir)/man5/setup.types.5 echo Uninstalling EPM documentation from $(BUILDROOT)$(docdir) $(RM) -r $(BUILDROOT)$(docdir) # EPUB book epm-book.epub: $(HTMLFILES) epm-256.png setup.png title.png epm-book.book $(HTMLDOC) --batch epm-book.book --titleimage title.png -f epm-book.epub # HTML book epm-book.html: $(HTMLFILES) epm-256.png setup.png epm-book.book $(HTMLDOC) --batch epm-book.book -f epm-book.html # PDF book epm-book.pdf: $(HTMLFILES) epm-256.png setup.png epm-book.book $(HTMLDOC) --batch epm-book.book --size universal -f epm-book.pdf # mantohtml mantohtml: mantohtml.o $(CC) -o $@ mantohtml.o # HTML man pages $(MANPAGES): mantohtml jimjag-epm-84910c6/doc/a-license.html000066400000000000000000000337631521151356300173230ustar00rootroot00000000000000 Apache License, Version 2.0 - The Apache Software Foundation


Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

  1. You must give any other recipients of the Work or Derivative Works a copy of this License; and

  2. You must cause any modified files to carry prominent notices stating that You changed the files; and

  3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

  4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
jimjag-epm-84910c6/doc/b-manpages.html000066400000000000000000000004151521151356300174610ustar00rootroot00000000000000

B - Command Reference

jimjag-epm-84910c6/doc/c-reference.html000066400000000000000000000304341521151356300176310ustar00rootroot00000000000000

C - List File Reference

This appendix provides a complete reference for the EPM list file and setup types formats.

The EPM List File Format

Each EPM product has an associated list file that describes the files to include with the product. Comment lines begin with the "#" character and are ignored. All other non-blank lines must begin with a letter, dollar sign ("$"), or the percent sign ("%").

List File Directives

The following list describes all of the list file directives supported by EPM:

$name=value
 
Sets the named variable to value. Note: Variables set in the list file are overridden by variables specified on the command-line or in the current environment.
 
%copyright copyright notice
 
Sets the copyright notice for the file.
 
%description description text
 
Adds a line of descriptive text to the distribution. Multiple lines are supported.
 
%format format [... format]
 
Uses following files and directives only if the distribution format is the same as format.
 
%format !format [... format]
 
Uses following files and directives only if the distribution format is not the same as format.
 
%include filename
 
Includes files listed in filename.
 
%incompat product
%incompat filename
 
Indicates that this product is incompatible with the named product or file.
 
%if variable [... variable]
%if !variable [... variable]
%ifdef variable [... variable]
%ifdef !variable [... variable]
%elseif variable [... variable]
%elseif !variable [... variable]
%elseifdef variable [... variable]
%elseifdef !variable [... variable]
%else
%endif
 
Conditionally includes lines in the list file. The %if lines include the lines that follow if the named variables are (not) defined with a value. The %ifdef lines include the lines that follow if the named variables are (not) defined with any value. These conditional lines cannot be nested.
 
%install script or program
 
Specifies a script or program to be run after all files are installed. (This has been obsoleted by the %postinstall directive)
 
%license license file
 
Specifies the file to display as the software license.
 
%packager name of packager
 
Specifies the name of the packager.
 
%patch script or program
 
Specifies a script or program to be run after all files are patched. (This has been obsoleted by the %postpatch directive)
 
%postinstall script or program
%postinstall <scriptfile
%postinstall <<string
 
Specifies a script or program to be run after all files are installed.
 
%postpatch script or program
%postpatch <scriptfile
%postpatch <<string
 
Specifies a script or program to be run after all files are patched.
 
%postremove script or program
%postremove <scriptfile
%postremove <<string
 
Specifies a script or program to be run after removing files.
 
%preinstall script or program
%preinstall <scriptfile
%preinstall <<string
 
Specifies a script or program to be run before all files are installed.
 
%prepatch script or program
%prepatch <scriptfile
%prepatch <<string
 
Specifies a script or program to be run before all files are patched.
 
%preremove script or program
%preremove <scriptfile
%preremove <<string
 
Specifies a script or program to be run before removing files.
 
%product product name
 
Specifies the product name.
 
%provides product name
 
Indicates that this product provides the named dependency.
 
%readme readme file
 
Specifies a README file to be included in the distribution.
 
%remove script or program
 
Specifies a script or program to be run before removing files. (This has been obsoleted by the %preremove directive)
 
%release number
 
Specifies the release or build number of a product (defaults to 0).
 
%replaces product
 
Indicates that this product replaces the named product.
 
%requires product
%requires filename
 
Indicates that this product requires the named product or file.
 
%system system[-release] [... system[-release]]
 
Specifies that the following files should only be used for the specified operating systems and releases.
 
%system !system[-release] [... system[-release]]
 
Specifies that the following files should not be used for the specified operating systems and releases.
 
%system all
 
Specifies that the following files are applicable to all operating systems.
 
%vendor vendor or author name
 
Specifies the vendor or author of the product.
 
%version version number
 
Specifies the version number of the product.
 
c mode user group destination source
C mode user group destination source
 
Specifies a configuration file for installation. The second form specifies that the file has changed or is new and should be included as part of a patch. Configuration files are installed as "destination.N" if the destination already exists.
 
d mode user group destination -
D mode user group destination -
 
Specifies a directory should be created when installing the software. The second form specifies that the directory is new and should be included as part of a patch.
 
f mode user group destination source [nostrip()]
F mode user group destination source [nostrip()]
 
Specifies a file for installation. The second form specifies that the file has changed or is new and should be included as part of a patch. If the "nostrip()" option is included, the file will not be stripped before the installation is created.
 
f mode user group destination source/pattern [nostrip()]
F mode user group destination source/pattern [nostrip()]
 
Specifies one or more files for installation using shell wildcard patterns. The second form specifies that the files have changed or are new and should be included as part of a patch. If the "nostrip()" option is included, the file will not be stripped before the installation is created.
 
i mode user group service-name source ["options"]
I mode user group service-name source ["options"]
 
Specifies an initialization script for installation. The second form specifies that the file has changed or is new and should be included as part of a patch. Initialization scripts are stored in /etc/software/init.d and are linked to the appropriate system-specific directories for run levels 0, 2, 3, and 5. Initialization scripts must accept at least the start and stop commands. The optional options following the source filename can be any of the following:
 
order(string)
Specifies the relative startup order compared to the required and used system functions. Supported values include First, Early, None, Late, and Last (macOS only).
provides(name(s))
Specifies names of system functions that are provided by this startup item (macOS only).
requires(name(s))
Specifies names of system functions that are required by this startup item (macOS only).
runlevels(levels)
Specifies the run levels to use.
start(number)
Specifies the starting sequence number from 00 to 99.
stop(number)
Specifies the ending sequence number from 00 to 99.
uses(name(s))
Specifies names of system functions that are used by this startup item (macOS only).

 
l mode user group destination source
L mode user group destination source
 
Specifies a symbolic link in the installation. The second form specifies that the link has changed or is new and should be included as part of a patch.
 
R mode user group destination
 
Specifies that the file is to be removed upon patching. The user and group fields are ignored. The mode field is only used to determine if a check should be made for a previous version of the file.
 

List Variables

EPM maintains a list of variables and their values which can be used to substitute values in the list file. These variables are imported from the current environment and taken from the command-line and list file as provided. Substitutions occur when the variable name is referenced with the dollar sign ($):

%postinstall <<EOF
echo What is your name:
read $$name
echo Your name is $$name
EOF

f 0555 root sys ${bindir}/foo foo
f 0555 root sys $datadir/foo/foo.dat foo.dat

Variable names can be surrounded by curly brackets (${name}) or alone ($name); without brackets the name is terminated by the first slash (/), dash (-), or whitespace. The dollar sign can be inserted using $$.

The setup.types File

The EPM setup program normally presents the user with a list of software products to install, which is called a "custom" software installation.

If a file called setup.types is present in the package directory, the user will instead be presented with a list of installation types. Each type has an associated product list which determines the products that are installed by default. If a type has no products associated with it, then it is treated as a custom installation and the user is presented with a list of packages to choose from.

The setup.types file is an ASCII text file consisting of type and product lines. Comments can be inserted by starting a line with the pound sign (#). Each installation type is defined by a line starting with the word TYPE. Products are defined by a line starting with the word INSTALL:

# Pre-select the user packages
TYPE Typical End-User Configuration
INSTALL foo
INSTALL foo-help

# Pre-select the developer packages
TYPE Typical Developer Configuration
INSTALL foo
INSTALL foo-help
INSTALL foo-devel
INSTALL foo-examples

# Allow the user to select packages
TYPE Custom Configuration

In the example above, three installation types are defined. Since the last type includes no products, the user will be presented with the full list of products to choose from.

jimjag-epm-84910c6/doc/epm-256.png000066400000000000000000000452001521151356300163630ustar00rootroot00000000000000PNG  IHDR\rfsRGBiTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image GGUIDATx} $Gum33=l}4e4I$l0 ,,`B`lq0b7@92 $ $6M ~ܪ_ȈȪ8X2:/^(RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)3M 7L) u,B RSys Z f HB &t~/u"kGrt򜵾sԵWW۟Xf`<9I/p^hyu#]T:k V," V U3V6:ZݯBl4 A_H@'o==v)5ش'sתs|Y_Vr=/78mp`A/ o@JM' ua"&`uka/ .68 h6`FzR "PP ,!;BrNR^t։<d|u}3Qp H>)_!LS=]B1ru.t|ӧ0m4 4X@B`V!HDGF >dp/= Gu{]W{?oƌX}nI@'\7? ~ z e岯vqQJ/Wc!PUl+ר6 ^45\5xOdAK$K/̙3f-N6:^^(#iv i%#/2x?|?ҁسg^zl^Br|Uݏߏ*4,`c5BZB<Ȏ/Ʈ6; ]~̙SAKKK%Ǯr7}i*<аK o.'#$: mfO|;xysέ:Fn>5\Hy5s^e<4HFEtH-W )U9&:Ayϟ?*d:ʸO!mls$/CccH8m}< ^\D9A,X`zYB Q$VTXU}X NaA26\z?ͥ3c.}ѡ^ -\ mmmYV?܅*Α\׫~lZz:40PӆH8s\ 5D? _s&E*c!mlc5\$ȿD|T~yϿ@hmulif& x.ͥc,^x@ ]FCG0_<׫j/<ϯ*dHF:}Ys6K,).]>F< Ay55r\\iVs.C%(߁d$̙#}@60$XlYq啼!mFg>,QS+k{qHӠwM\6WXQ+WVrdz@_+:Dޡ|STWs}|}j5\q`&IG; ucWz?P &J-FH"bPk\$#aD9UVEdYVW^ky+j\7#b+7,{UH:쓏!԰  =l0?ƿ ի2&< ?W}~5!].wsMK5'[Tk$ޯBlLfs> |$#aviu׮]k!* >׈oQ_;o/k~=@l.װКd$XNSp=`GGG 6:{= "[ȭ k A>k{h2C244Kggg 5|]{@/]#<-ް(?~u. ȹ<-t2ڍ0 DsGC]]]^0z/ /"TBs`pV>|fU'>Bg|i (C2i@H?غ`m;0e9 (J.CckT}~]/"ge</\MM򎙞k>j ~E]mѩh$^ À{X}+c}𵯵4\]v< 9[FUΑ~㐳vfBq:kw_/ybkw:SH([ 6o|Y H\]O}S:G^G۳tz^mˮ[ &yb{Xf̈́f 4jc ml +Y8Aֱ>Z_tm ǔYľ\;׈_=5^q.ԣ?hQF'Pkrğ׳cPqxxxJU Gry"ԃ"P*Tڒ~r]1#W1~#k$0,q H-N`-B9r~~KDu.{e6g^|Z_6?~cdYyjڂb$d- 6ƍ+<_ <$r?EpE@lBo]_W}Xs|u@kT}"&PjxPyM6U}6P?

nbA<,չr7Q?l rRjU#~bIv1.QGO*#!g+gqπ۷o\-!y:g[8voK}n?_3GgizжrHs'*C{FoZwYgp.\#~,|^_Gȿ΅Wg$7zmmNc˶~l?Wil&Xr.1wmù<[_ !q[qWDB{|PJ7lyھV\}w4׻4h#M@'"m'kgQSgH\?ўp6||Z?iOGG?|颰ݿ|=n͹<bi;ȑn r[ &-݃yЛ }߾}Ž{VrdtzU#rrn]Oڷ. o'@Lz'zSi5B9!mĝ4Z Ufoqn^_EPsBWu0~A4\U+vqZ1րP_i[7Cv֑6=, a RPFMTry*>?Sc#cLAEn/k[8r{}\k-",H+cݟ<_ |`}@=Q-|tpq.k鳖5m#SHwce[@EcEe`?1퇯u rOhM&8ˡC*cEH_Z}s+Eޭ|_W'U}sk]5JUTW28BS}K{j#g]qhyidՇ9_PB/WɉfG}`Bs<.kVeNd@XT4CYd/'\Ԡ=|9TY'?zpa«!F40w$sKyr"hd 2zkV]ޫHk/>RPS]d7c ;еCA"?~xry\}_TEx~ $A;%Yqb 9'?q8ǮU}?T"~Z\rN8Q!#6ԏ/诌*#rd kX`ؿĩMqϧe>Ի}ȲrnL?=j; A}qh{ LG';yBxDrOc?e ?wFlZa+zjV!'IL@ C?8+=%wҀ^,ܷL\6?_wY4^sv ! .7kᱵ90LfDwqO!qDyT5yv} !B l!&$Wp+C|rnM0d-CA.šCUGFA sJG_f'F.7,>TG:j X9Ǻ gBHqHslg`꜍@\o^i>\ ` +PKhXk@L46b! _ X(X,K,) >p|?sy\Z!g`jTFDS,,ZvB`C<]!B=46:> 9WX ^s?ϩ}^Eך4Va't0`50Q})_q..H9y,@ RHqԐ6l0H@ $_UV. ~4t{_}GxDZ@ &Rglqb[  gXh  \ty:7 ҵCk WHP6Pc"-r(As;I}!pR@ R0I|,s WY# _%<?=dz*xm7uEjkЖjm!ES@ui3]K@*aCE`2BԍmJXBz!IC*T|pT?2n,dPC5BBMpYk^Z |E==_^'3ȟTl~Fu.}UGW=?k !Z`H j1iTЙCb8p>PJ<$<p*!^ YPB$ǡ屨]οkF9$Ѕ*:.6 1" x/Yr-˘_.s.ԫ=S >s!^_!ϿkvA3W 6ºq.Y5t}@,Tف4$`M8i$t>8#d9[ DnJZC -dR$<{G>YX /4Fd-ɬ"sy{c'̚!Eީ ='>dV0Y !p(?`! I@#ރPqZ#Nh =? ԯj W+yBZ'>Ԭ\!`:FVpٮ)V%=ct@"PK GR _B$^O7}KB5  LlCkԊklа2$"&?IhWB? U2sÁym@n!9 W*P+ǚG?9+\B m۶xi)ȓ_'!ɸH{H@ sd[}W9 @4l195PǰZ1S =H)CR$9@4zi9HiBsc l1NX !c>تBihN B`eadρ$N|X ZZƹ%dm1M2^ ٶ?R`ZT} vB3q.CK༌ꃱ!{ f8=?{\cr cU fz6eC(^~bd-=OB' BQ9A[b~4#fl5U/^K˷LtmP_  ^LC$j&5R+@rm27Ȥ:l>ȵ6J9zi^nb ?tJE| !4J"8@a!|-n屭.'^F.V@P_x`|l .?fhX vu)yINr _}cA]h12Ӭ@B`6I!B 2M}+P&:i$ \KVol~r! y'jx77m'~h(‚q`$G̤9qtmh^x{h>F^o`@z:VKc~6 YM3:@f<{Fpym6sY >G`>J3hVą7)cC.+JVk{p#[[׵r/o֢?hDF#6P^PC#8 ܩn2λ>twz}ʘgcZ\#gߡCB7Z,ݸF3o4(8mDN-]׊XI1?/6o݈"5011'!%pԭw{-!8,CoL%@!;9Kkl 54 b< MW ދuEKZqa^F-I(|[#Qphza pj-k P1Ϗ/9 mo9W94r /mQFq-^r߱sG5%q=ﰡegx!c el@G/[V״_kWkkC૏|r*6 Uv>˚.Tcxh 1 m@|Pť]/8dRvܻuԽ0!u[LX$F[|KXW?+x+ .,ebpVaX2ܳ/{-!NJj 46Sp V8 Cjj[l^"g-3n|׋F=?>C?+[}P.ts ,cPoBꬦ52&0鴀*wABe+_`_l @/2A?zi3^(h&H\.ѫ_׊7o%ly5*}o,x%}_Z(GBg &^($ɬT z5+|0__|'O|rZ9B ku Cc?4bZ"< =YA\cBylK 坴4X_(GF(Ec[Ldj>mfǗ}@Qמ Y(yܟ~Puob^_2o5x$^:"=">xRC+ ʡVN9mu= `H/|lZZ?܇z>?о?uT!f [iAύ.By'kIWH9}OȿCNCUxY⛽TRhtkZP*#D@ॾrt{z?csyq1CWc{g4<2ܱ*A-4t"дZ߇qo9/D|/`gŋq}国}!# JrPs]APufC0ABF!Lr1d~o u1O *&V";d_Gdo'/>mO_AY>UB΃l_P\RE[80eX +l {)1_WZ'BBu,^fq-׮ksy}Cc隣/du8+ x٥$+&:V/::4@ر[uj/^vI񭝭U|P,6#\ĵ#k3ɐwTMw*Te|Ϝj_\@/K:uܾ'JozR+sy\K}|az3qLA"k:?;{5^ϋ4MƻnR /}J Z@< dX$á偎#&PUĕQt/΁t&=~x+WZߚ@`=rĚ( *AlM2 (/`*Hq;>lL:!eVzڽy=qϿC|'iܿ zKSΔ7\ @ }Y"4r1;oD#.-uƵy }Ϗh_@N;CїF"{$ʠ>7k>ؒ *f d@] Ûk N70kK``ݚ╝ˋo3ܲnu翳wNp݇Ϡy4NlzgSjpEdE^ɃfiW?LƋ/{A-N*^tE (@q;[ =ԱxU= _]0^ԱT!H\%$@Yr  \ VpeUy=PPaytLXtvȧ 9}_۽gxFM$X Lѵ_АeRTx9ng#T~&ksBKk]>;. suI4`Ǝ՝y,d-=eo1L9 B{ wiuu63]bm+ &:+︙ صU7pۖ2g]?`pg_K_^+v/ &(.`.:M3+6ZXvv/Y]oeu}m9=k#~mgtUg.ڷ)\}%$@GbDssYM*lc:7cc^iZP Dw?'J'[M_km=Նŏ/(}n|yF$YpHfun+i!voZ0W| ~5OxksݯK||c d>[o/}pI4 (zMAZe.5gk>:xrkM|52/ >1`X]@ &M)dҾ`YTl/>g`me!fNp@loh-趖\37D?Uo>h !]u}A}Ȼ[si^/R(Ӌw4?^|r#Pfy@mِ_V_0!n\Q)=C~$Dh:\^ ȅC % 5P_/\7<5]Vv lAC2Fr Pb+Joc^I4RV&ɲfn]] v?&hÐP#㜫G2þfh=:LJ6hjL?zY{'D@F!'ez^ BxY[>V"İۀCϳsfWezqQ׿*e>I4pmQiYEh`FC-/튜?@{mz̪ k7 xQxC˼k3g5Y6[{, g 4^Ԑt!m]G na`!۳z ̬9>Sy#}?:0gE sN`@a}皱}Y7x W/W"G<%zhq[}ۨ{̐W>=aK\ڥ#u /w>I4+ٵ̶t3+ ƻNǺ&g֯vaC~\!wWxCW>=6wn陙8  \4H5Folyk1cn/Al Qckޡ\׃.h-{}JCl.ӷ^pc+B0 gJJ^{>ʵYkq:8i}ׯ*~mtIC“z7:Xm|Ct9' S {bk3 23u>xME, p+sg&gj淮_Yw A[6^?KZӎZ3mN}?U vPK ^d#Cª& {nYnȌK7l(0Fk7v݋K<68NmY8[6X~k3 9;`Ul|*{.x1%$|5K{EЏ_ZƼm*iZ/2~婲n? -4Ds=[{zᮡy96IO+W +bEmw{?Sl@KM@{z4C{ mے)-?Txޖ~S[s+oէ<o۸{/¼c:$أH`ZCv  存?r[.xC3w{~xz/!Yi~8832ݿ5_wru=<~o]%7l,^m~? V1p+ VͿ'%i߾}ȿ]lā>ꭃY /߲im-Q;Dq=)4|Jd]؎@sh0.1XcOBӃ' .5> `K✏߶r}YU%_bA=?闑@s ,; {_.ؗML y}ў_8v: =b\}x ;߸JM`.|ϓ@ dl#/"&Uv-gƢ}^~>6Lj?<<4M+QdYޟn@s 6 " ֒qp In^LH&pDP׌=;7/{pxlߞ\7;\ϟ$&]`套ŽwILa^ϮǾsC'/,}PUYGyb2ʆԴ %5m>:MG o7e`v;0"츯H`jN>z9Td]:eҞ_8m  *>h@娵~ 0CT)"I/q5ig%0"0a=Xc}^ ^e᷶h!^#d,\fﲩcXu!-*N>/ W(Ǣ<^(Ǧ;PYT X1~ m/G·?%"x5[}!p ӦMӄ?CG 7PH;Ļݠ$]ÒǏs\,Cf=5T݀׬YS_%e%,7y _m*W\or%?' ѨHlJS.L,8q"'MaasY׿~|mHŖgwM u/&cl"ŅrHzh4t\BNS.fHK:Z 0ŵ luB׻}Ϫ[s``4={GA_kאyDg//?ȿ=1Pr&K)M"ʕ+K/$y7o9h4 X Al2h^6?bp{&EW ¿LEDI"_N)})iһ2>"ILeM8fDжD=k?xJz,j:AWy;D&U$񿼄%;CAXCZBYO`|T8Ke_tm/ 1 F^3*؀Sr . v/K/%i4;Is"VE•. N_deT_Z 2~]CmAb_-ׇ [aJV K_Hw9 4wCw_C_FB[.PeE *Ʊoy91h؆z1^1]KW.mVg =BΦ~Ax ~0^D_1hDdȴ /ޅ^X!&]N:dO)I*f[iX%OR`B`-DydO))"XH$ }J)MABJ)RJ)RJ)RJ)RJ)U6*_N^IENDB`jimjag-epm-84910c6/doc/epm-book.book000066400000000000000000000016341521151356300171520ustar00rootroot00000000000000#HTMLDOC 1.9 -t pdf14 -f "epm-book.pdf" --book --toclevels 2 --no-numbered --toctitle "Table of Contents" --title --titleimage "title.html" --linkstyle plain --size 6x9in --left 1in --right 0.750in --top 0.750in --bottom 0.750in --header .t. --header1 ... --footer h.1 --nup 1 --tocheader .t. --tocfooter ..i --duplex --portrait --color --no-pscommands --no-xrxcomments --compression=9 --jpeg=90 --fontsize 10.0 --fontspacing 1.2 --headingfont Sans --bodyfont Sans --headfootsize 9.0 --headfootfont Sans-Oblique --charset iso-8859-1 --links --embedfonts --pagemode document --pagelayout tworight --firstpage p1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 680 --strict --no-overflow preface.html 1-intro.html 2-building.html 3-packaging.html 4-advanced.html 5-examples.html a-license.html b-manpages.html c-reference.html jimjag-epm-84910c6/doc/epm-book.epub000066400000000000000000022425521521151356300171630ustar00rootroot00000000000000PKq|Qoa,mimetypeapplication/epub+zipPK q|Q META-INF/PKq|QwMETA-INF/container.xmlUA 0E=EѝZәФ)uozpb J㸫`LmCV8cs`t0MFq#v쉓1Δ*:OVYyt|:^:}`GTO<U!xg1M-n&?YWR/PK q|QOEBPS/PKq|QW,::OEBPS/title.pngPNG  IHDRxQ"UgsRGBiTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image GIDATx콽mR/ZcFDPD1QP87& j(Gb&&b&~ f"l;֘g5x~W]]]nx xgx?k{HUԈ} }.\43[2 L!aq4#Gʗc J!_XO7rCe_9W?3-G[e?k}Ϭ0tE‹HlOm<'lORZ0,!rGtiTämcU/ho_ l%Qik#w@}!nR䯹ү{kWyJK B#)!mf s]0d<ɭY̭pU@JgPo"AfeoM^CړZϗ_rݸ=~vGs8}ϟA^oH+~]e'ٛ㗞 xL[ ,VA2M5r.I⛌O[O||岋o-o2i2S+ˡ0k=Wk=Ň%'qFCc>k8>?H N_^ʱxc1 d=q?g 4\<J'Z$`u`J$3E1?o{Sm|aoo4#!|mi)^׳/-i_]3؂pm2׬gcocyhtI={ۘ[I<@v2I/ܦB>?8ېxr!Yx̨"KmKoGsMœA][af?m[ Tn,홐,9'\byO}o}a0 "ڊG~'Ԯ-ѬAw@*$ ܞJ%X)m] Hjoo#k z q| r,wgo_,ׅ,u h{58lav?APy&U2x\zi'xII K~h[#4)R&Y43ŷN|=| M|ey|Xy+}lo4/Å9w ]!} FeȜSO,(9yY*`Y.$G &Oޑ!?(dL"}'By.}NVrdR\^|5u:|ЍVž}"/t诰>s+zzz;f??\nJWz{?}08= }U yqw,<<g$D~_GO*Cv&+ Y/ɱz<-ă5#g۫T"7卒󍖯 ^Ͼa4'|o\#gc}W[0zSFU|PT)!4oʇӌhṅA8H L/^ 1ԥ(u:7|GH3ș)³xdGHnɩ5{& Z Ąh&۾"}dV{)+|sWF;9[[B&P=iUUwQ>KJ< gU}kq=Rߥjyئk/Li !)ޫG^`q!B%(9 $!CpR!; oUȱE6F G\0vg36.MhOKz<=#l<}?|=o&oB?Cq[{8|c{b$ߖK-_5)D {!W8h'Xgx&Oke?E4N'Cj<* 닳C33-CGw٘&=}Y͘/73zN~KΉ=6Txu1~5~^\Yp_UI̓s ÕyzEMiDoߘlV$xA~e=!'Fe{'xYX^K1& Jm|y zu/wٓ(=$_C%ZgBsm3{x{gB9Q, ד`l?Z 藡?U >)A]}om#d#<{~xF9{KI͔k<$B<\5?>MR{%hzξ8>zֲ%үŇð|' &/(F< naÉ(GYxbj&x8x̷x ^M7ۭD򽎿J_P?ڝ.XO_2)G'zp1>AftfbhGI'cV'7&WA~ 7h-Ϸ#ASWKqН=$-U׳=]WثefȗTѠ\Ԁશ=} 5Vp%!V)uAPCeT{<`15ڹŷ6x>}+_Z ׳Kfb=7'qLJORkx1&_oĠ5KE>M8+$)7 v&7 hd/SO/{~1YgG+?-8Lo>~ S4CQ<} AQ"~ OY܈@Nx& z#هC5~ք[ aIU:~+54E8GO)%h?eJ͐J}U9aY7\s< M`61FMU:|q[B@f-j{p/^,Q/ajOĚn>~7闋0ѯ>|hZ9dV4Y.dƈkډ¹6C( $yxpS\=vƣ)&? $G]t*bzyM*y`?t?,&g߄oQY?F͵\7P&_}__M˷3I_vQ_'샬`kn=nf믷&^p[>T*c?e|Ơr uS'uO(-"w)|; y5${sl2%[ T⿶g>n|d6,s4=[u?Y3i {;gJ)U9B7mQxz|0c'\sNJ(MJ+P:I|5O#l<Zx6J*éG{x9(iwn!@*B+?wȃա|y<0oo|ķ<օo~6ZioiBiw K YğV[5#QTe@xn=DI!3)U@O|~GxC鏆eO'#Y8Y%T'[pbV35ýG=u1 h7 0%JyYKw7"o[Q|.|; mco F[|o n'JؕKxzdlM?']w>DE]ohWk>ȳ6+}hgSۃˁ)@䅍 ' ^kSSGx~5l:Çwvyxl^xN䴛o -j[ {]̞tc ד{Z_~_--ω`zoK;HZIV.Ve?`nwr:9<[x"ْkl%O+r4C7!:Q;aW?|=fRk-*O:|lO2䫾ioO?_/1}q=wzVv,Q?7# ~EQoq|x [|Not MBά冈p<bg pE5 )9]A'&ƃ gŢ"gl^[!GG~#o-M7 noȗso- w.Ο絇C8+ *?w!ŇV$3Zf̭nID#|O%1? L_/ţmxZQVSG?lis[oJ{䛭z<&t,q9l/T;/=6Ɩo?O2cO6M_<ZIQ< BK # 1Y+2UW!2 nn';ϧ"lŘWr"ZSnrƃ\#"g4r4`l񠃝w'G#m9 S0+o޾$_K_*giˤE|+⏮R:}?rV"Ct_q: e&T$4%:SQw#h7M!AO84- F|8Ѡ;/Bf/#~}Ф mcZ<y؊oJO{A42[o jm[SzbVd䛭/IhBhUP%> =د|ht/COΟt>v)TlߞS'd)->4l"=,25'<)1+<"1} O=%D0ߢG}kOpU&6 ͈ns/y#<#fxcr>Dְڇ*|6a2gƙ2+<ͿC4/%NҸ$P*wˈ%4xpLxB e x4 KgÅU|h=7Giwn}OR&|##ʾ$[=jמ@?YSSYZOSߌ?j <˄˝0K&\3`1u,z|sc|wTTvޟ2֟&WXϖ %EVIc}!g7ӗ 6[ c~D7ԯxd!|6a>?o+Ts/’(>\Dbs<W ?M#ь]7o\O*I|/lߢ7L=/VmO m &bCͳ/gnxfxR|X~J|W^YǓ8sMS$Ї&"B~!ʙd\RGϒ24Ē:ؑ3\tA[IV- |/|koߔO(o%REN{댼F 1|"yUT]ρgxK3# U~?xۦ; tOZ8? py#(@SB6$هBr}`ϟ*I/.Df8Ywb#x΋ue2DK#P4if[|<[-!5|_x?Gɷ܇o r}˖/$y=c|ny\1}=l\>Q?q45$<Ϟq F4t#Up뙍/ 񸲎o9ŷ|7vٷRL|/i5gouC8|~73^ǠS)Sd%! LnI Blʣvr-Ck>6Ԁbw@WPn*^O\$?D2#w4ƓU=>XnBfI6.Q%-2|&uN'2Z6Hy*ߤ =Mg|kr|SK"?2H Nlzd=kk[ E A#%K}Qx<Ãzo99oRnG[wQakiD̞O߂ ǂ'odP {h MLRӝJϪC?ʇB?{"=9kdL-(~-wB|;(2 W#_2ǣix4x|i_&xЌg%YfӾ7aIgm/zλ&jg3~LJ#Ga?Z|;}5z>?#Iq8l [;6\dHxQ<~^݊DVxӒ(sZQ<0$3#$|;x|ǣK}lA|Ko}`ː/2Xȷ?"@><꿞B|r'qehOPc?cz&\4ߐy}w\ o/@T/#q|ƽ[J<~)x(7UEü㌇B~#,ZM0+N0Xؖg ##?m /|Q?=kWŷMf-_OA$>(/tlM$CD[u?VS?!ϻ @4r[*>pr`:L~ @/ޤxɱ)xZ#bx%'ْ|!YoH\[c'2d>߇^B3J.F pO,1"Qp8ͰWW;*s p> 2ZTPEQ0! :Q QԻ#(ؔ1lΏf _ӑox盽Mt^'ؓl^_XÈ']Ϻu~d.Ofde`>/([|&7c|>~Zgm]foo7{ 2U}WaOCb=7#]|,dcPRLIe9m*e=Nj軛Q #IO?[YxY<ޚQ>>Jn9F~QfHx7Cn'" I<W ׹5K1ߌo֟_(Րe|!Mäl/wXyv x2|ODZU mh8#FCD5[l<,`PiqSt x+Po|sM#J|=D%^)zFg?T1sX}/z^Im k/ |'Enx8 )NxB:PI2Ojg <|t6'rr|Oڕ[O&܅Mgo;|B_x|$ϸ \|Fw _&J7E\ji"D <%հ2&WUe 6P ^4/^ʷ-gvaoqzN÷(r_3E&K3ģI7\ޘo9/Ϸ6vUU'#Hx<]W|I}$ /vgULK} &ְYOы N˻ Ck, a<?Sj]@A RFaY & `xxo77C{ طQ jʗs['Q~~h\_ݚ^/ї{'(Scϧ^T0㟼xz W<,>>U4' d #)Ef_R8jf Iǟ[c'Z$GOO'xIVeiLVMs#gF}zii՗2uByX~:gYϪn|zA>wGiel2:ǂ\wA`%3.BlsI{ z[YUFUG\rЊ5a2B>FDy! f箈D[xh*xD>i 8'ڼHFb<9 S7<*o|c6<6 VAFʷ|9c?/,>ɇqx `E,<,M jE'3HdGHr$PS*5xNx0Y3~d@M}p  @EVo|ҝo/˷%ߨ|u|w#rǼ [/j}ȭ\^^/4s=Aۨ뙮zB*LǍ7k?o{7>!)Je]i_54=qpTs$%"qfXK'寧 GL³!$|Zߚs4|[o-̾ )7˷LwXR÷B}<8a/9 F?!Ǟh -LJ |cLi!J|2>$A93#ڒG~$#hf$!۽ɗ;M}w)[O(쭉|̛Ec}*__^c5򽶾T<{8zZ3\8>lf?M9޶7ԯA|ra>g&9G+υ*CK4k SS\+^ΘxLgK$"+¥[;|n]>H)QjH^B4 B<ND v93l'mf71T=}NoJY o\Oxϐ6Xs/j闀S!GVuC~2i DEyNZw]=x@%'b(Tрq@:C]\ʪ%RBPUaՖx cr䬦@#$<\Q/_}\|oom䛧K˷}j=~,>Aߊav>KQXA>`N]s1?DF `xw௉aO3V` <&!yyq|#SwQx_Y څo,VE|޶ocW_'*_!CŞ/<}V~^Oi0-? ?JC~awr--P>T*=b"W'ișT-з&(ICfmKE8IWL6ވBf$7'< 9<*L;m$r`(K |T>a ]v[V4Qx.P?T4Z9eOtpmi :E}B~J>?uAC^pz5Jhqx LU]LI<\X%@oo!/Wg_曐囉ڷ[ Wdns>XO'yQ_si寃q}}|Yo'l>J"?;zc4~|p)`qe4c9@״CG`?%^2!DbHsAvJ9glܠ7 ' 6OTtHy%r30+qN/M"|CA:f|d{ߪ[6c7;hj/?3S7\O?wy?gx[za ~ppls_rG kPW-C2|23Hxw}rieKrPߔx?[3bƗo=:Zҗr4gr9WX;z`?~݊#/>\Ϥ}{_*3 "!d .D qes90.$OJ%"FQ!:x ]^C;*|?S6~޶o1 o˷?T?o{_,}Q +TqrLg6;{G>D~]я[#%ۇql_~I}X~xF=Phx[G2S-~%/]۾(5.toO}\~}߭N;_Y|#W4epPB0O )cLgbFx`Jm4< cȷqZ[zjo|ߣŘ.ї@׋P-ϱݫJAR|~*^0<1Pt0@I$t 0 ]:g5C_6# O!W$<}V\o{l|[._ȷ}^R J,~ֳU/$ +YhHʻpYlҐ)OzxR9Uʯ`0jG*\OsQ='ooAm:n(aiH_}n{y}R_U/usB{>*/j.Ç0S݁uJCFv t_ψ{ilo\WƉ/(s3WS#n ׾6T$4\d<9ICR-l dC\t xg Vı.J <$߄8$ uO$dk7w[ _aRwJdOoz7U_#sK}[gDߩ+V^&GuD|pN?U[a=Yχc}#z4Bͳ\.2IC68Mz M3#I+ / Ó./G?jmof'x%o=1}=,]Oj^zfsx~N70}L/DN"Ȉl񌑐!i0!ԸrB%pMPq7W8Ixi<~#\ȍOh֖GO2?|>6翖oo,k.u/-ގj߂*7]խ aO'z5|a3Ft=uw#;T_O]~FSg?M Zq>C{ p`g; 2!'ǦN)W`yd&p3<J ߢxL9=|bS[ [gRֵ}PA񩧬ޑ9}.dVz뙇w~*cx{aLJl=b[|vҬjdN/>pVe >|Ws^d A&$.qx4 '.\HS |DŽoħ9z&t?g%Voz?d߂+rU^{+je3[]y>[Kx@^Od Y}9/+aj'MiJ}tw8r!*qxQfad8 IF I<7&)盀Ǚ5U|1ߘIŋoy5ھEd߲廉h+7[I oC_9\Mcl=z}Oֳo[mHU֯ >52ޫϗ r %@d^q r*5 .ixv[MߏotlߢMoʓoPM8">w'r{~r.`b9,-k˚?<G%nxΜx#F!Os <1H yG^]P|fۗ_~2fM/Q>!f\Hg*v*:UWG07626ߢx Sx? KM/}FP{x /S`%}Eg=JsU}䯥ε׋7Y0Gtss߮OZDo BN}hg+A"Š*T E7=DO1 |c8EoKVxȟv.[i=;Bx={^}?q=ooW#íۧD5 Fk򟏯qja1gI5:xRI.F?N _?/wXϪsǯIGA^ |6wS6$'>;?1M%-#䀹M)7PIr*NĐi,WQ<mɷ|d6_D/k= ;gy|xQtӳa({V{4>4GLrK@VLZrLw?\'ax}{>9:85˓cN??3`yƖ"9 7 9{x6@cxqSxnxAO+?^([qhN {x_ɷɗ  LK+OKI|1'oe84_|ɷd=C/'O=DQ 4YOHw&GϢ+VjpǞ;d#l`e>0 Nx$"Yh ?ޒK[>+E Frb /G"~6##Ef7mKUE/ 7υ ;zʈ G^Q~>^OhϪaG o_!/&Wⓚag8Ѵ_Ͽ˯ćB S"t+ҏW/d< kU4-AfS8|7kERſ#_MuQ~/%e9' aǽ[> iC|7#~55h-zsS?H8o<|(*oX|}K/XFdcR|K8$ESh;=gcڒyM~*1GrQՒp~}hg˜#B LcKY8K*͙<7"Ul(Z8Dlx$q{xI KVsfLO+4- Oޘh~.B+q I-Y<P#zxfU_II/}6]be}Y9zNj?>JZ JL )(Q W72aet9_7(Yl'G3;~g{e_KO3k"xYB-'Uc1hx2MF GZO/wg_Ϸ1\Zomw(z[1z&MAM_.5$u-}U(ڇ|_h@k!&J@Txc{M?  ;Z΄ScVǞ۩oݎa676oط2jПW:g]<=zϞa}yxc2fmj>nZdN=KKUjIIROCNKQ ĦIl}ۀ|[ 6_b==b.=&v=4k껡Ul{5&,5{1/ǧ8<;xa$?q0BM0H &KRr5}!@|>x/\y}7?7xu DnM/ߖVoU3;OIYW]/>[5>2}amLOĿg؄حo{Uկ:|O3޺8u8>Go-ۃkAVy5\S8neNZy>K;ɁNQGh!-x<'Y/P$( <-)r^Ͼ;ޞ ;7)_ /<ӗ;HIL ]=ϼTnzxۋ7$u>ڇ0l{vL5Am|%fRJ%[6q{PB-.|d4_J_ۤ-m~N/wioe|9ur|n!2 }/)@Q}_Ϙ lsKXOhs3؏f?w~m{KY⏢|'T> O(=1 ϳ\ɾ hNc+#Í۫ȿKׄ}Lƃ?DQ,o75(ij[w o^_Aeedl=M`Ϫ-xI3?SW]>S`K{[#޳?Y!]/%5qLqx+#)@!4( h ؀+HR;ɻXģ̱EpyUD7SWL7|9Q?x5V7%[7z5<[=푱ٯ*_|WC빥 oL(*o'[MYύ:g$|hpr'oUl_hm/!7PVSFKQl9[K<_&.#ܮ|h-u)_eubr멗o ]+75\gjwu 11en&kճoo`ԅ HߟWqcyxD 98J"LpJ.EO_#AGR0J'[|+<&:o .hoW,s?o'CsOh/_yyԞV7 D}]l[_fhվz!:W~cX$ގz߱~ ghA$ٷg3H}BxLzWWy,e 2ݒGh 9'1]^'hE!exEa&#J<&E^_7ֆoޟѡдr|;qeMڜzU_t8_^:5>,Oxϼ /'|ئ~}?d9]kgxE0TCXL\e\H M,44&#kDྵA@`Rt|l#9MSda1?D_j>RY-boa-Anڊz M+! G!)~hŇ.?*[5*9u5ӂ5=_M nP>]ZJX(%rU=J;-u}JkQ|dx]&\sqK7;*.V{{dk.;s109. ?~ԍ'0{>ԏ?K o5n3䵗_ zKB ]Ӌ[آ?G9*Ux8 x㍟"UQs%|{Cd`Z 6\H {9r~ 9]\'(GUNM.浐)ANJd-7\w(|7w;lLk몉u$robb{luv|a#osJ>mgm>੐@_\\n y@yvff/V 񐜐w;X-oO4=! 6,&| 1Nhpn7%#X* >c4wi=kkM4VK:q6?>7#.1m 2XJC9%w4B!#:\F% #«l*LpLuCJx"dzx8Ӄohp{rR6bWpEGzށvvcMekkD3_JC0H"2۞.P| pM!31x9&VOR2 &\|,*oG~xui;/ȷz򵲷xA  }]|DGBߵ3x{N~__y-u ;K:>^bԒr8r\iСn|igL7^WvGwt bO4g-xThhFjpK!$᎚ 9jpфI=jsU5zO7LW[%kHBl0?^v=;O_/ e+_p:Wui)}Sps+8{^%>u79?<[ηg?315OG;yy#$.t xmrwColf'۩1G(%:'ZI9^Mg 5x yxOou |V[!a< ڊo`7K3ז﮿D |;~؞QxᷣNlN' =~.Mٖ@!hT=CA9GS#0OU&^JyX;L})ȋJl> #dFpmCiL w&!턌cDV}K2BM'Pn;E9~f G>$RD/է_8̇ɿQy'PC ܒ|#A }۸˓KpUW43ND_v] / /ߩ3OZK]|F|}>(㥪{{c ~ h\u)Z?&\J eG(TD#̉ ~*A!+\#uz囆-I'ڷ-oo<}J|_CS΅__~}|>Rx[v?:%>G lx[oǓrdU>Xw{l0i  9kBMWG8=n"1@3oBjb]Wk!8 &df)ǥʷ DKRפ&.a*C8|Mi2+F(k`ڲא6*;&EĄoA9*m=vHVjq1 {M{[þCZ sSx?W. mo~`yܕ8܅)Pc Ҟ7 #wZ{0 a<990VƟqr* } ''ݤx-Ov^PaT}:LõLDr9Whz<P;&p°Gmo:%])\FriS2N;gy@A0r;=v'7lI)wZ/ cQGpfkxG+fߍ s2~W6ɋŷ?+tpL9wkK:"~#\4‰%"?d͌\E 1f!K>_# !T66] r$<25|+ oo(mzKHٷKns=>Qg:j\G~H!_K7"Þ?_G&M(:n~ I<\;ω\L\xOBHh954Tg@~3^lGЦ,]D3WH<|3NE((2+FV ylނ So7'_LB.盦wH~4Mg` =p~YW0үnpy!(Up Y_:+-\CkOz'ܴp=!-ߕ`~A}<܀%g~p=/sxtxC%-!Z L(<ѝ"-r.' TEYA&rZdULO _B_C  `<|/!f_ɷ.tO7\m3[2KMf:5 n6(Z{?m6^*^¿/V4j#}s5΅m)IflL|+LJQ ɉ- '񛼞%RU>'"O1l?rUr?YjpB \>f$@}]kqxA;xCm+W KuUtRO$jGz%M9'm H87j|[OQg\}fgJ?S j}f¿/Whs'1_Wۧru^| :TnGQɞoTico(Po·~EA ~Kf=9qT)0&]y&*WLBNd咦$| O;(|JFA;G2er2)J'ܩ~9p&rDQp;'Ǜ߿O>=?pq?K|?֋{c> P?D Cnwp]ɑ8mdMQƣIJq%Rz<ATIGrOZ _* ٲL0ȣT Z޶4 RYdDY4,~/  /ѽݟoމCQ8- ⍙{c> xXSb=U A_Q5I8.Eځ/D 8${ri$n( Bg*^rV3C<꾒omtomJtof/)ו][[ g\S{- ArYAzfؘed?;ɏ?~懐+%Wc2pSdxyw=~%}e npo)i;I/|<ǡw-B>8o%DFNJ^1=~7~q=_/S' ~ߝe0>_]h72O>V~|"} CّTIwLWhhxvʣ;d s_ yfrKeq//Kkyxc٢c߄Nc|cU}^JC?"9;3I8r7]>/ %G2_~'H?pMkqw( ♗G矆Ot;Bҿ#tMTie Mr?[&r&@X"aEIxpBlU1sUOZWb|.Gk42]#} n! ™6yoKw;U;|}UIBV~y(1d]J)ל!X OPWF*-+!F2&/bI7ۀo*MGSU3w57|SOVMd*+4-lMz=M3,{f6G.HwNf?Adof#Ӆ_?h8 GSl!5 s?M}\{r_/ް'w3>>Õ;U⽽t?AsS>k6BxF`-> : 4O<_'*hƣG j@ֶd{[վC<٧ Ⱥ;NAN\y`%4?.  D/D7{"(Hv,g?;Ƈ̈9 o'^|O@RU|D>jhg:@pjB愠3Pf#rXƃ5z<qigqL'G4wɟ&#䀒f  <[{}ӼNS uis@~7W/ 5*v< ~DJyPMd~j@>KVpy9TבՇpގW\ݬpLEtG(gO^!FWuxIFl|I<|-pQOTF ZwoWgdk!񜫌xQ) VE˷-od͡7|MV( ~lSPfFm_y .OA 롛gć;Ix;; sFj/qFY %?WWsb?\ AKV4B[xNIqx%.8)ES W[OT<&EV"/n x{}1&|N7r= c> 9 2mQcą̃ʶٝpWmׅqkKJ[r=дlO|O}|R =Hj90Ș9D&xL `O#< oi/5da#<3VGfB<nBc<uG ]ZFւa[OnqwF(GB90KoGr(>w xztO~뷾Fϯ\K88Ln5H6?i=ɹV}R>gxuH8|ۏA okO24'cd7 uA -Ʈ&x I4c`Q&' Vx4''&㑓8Ќ%| ^[3{ҾE+q#;o#_e-¿/ï}\??O|o,mz4(NF%͂?%%j}/߫O YoxIȇV9@U=f4,EWky lxG=ѕmp0-ْsx_!6Y):H囦ah><$dgNð/ 5gT4'''~۾>~o+s8j>h8~v O?R|1x#!o+CpU>ۯUL47j2;(Wf3YBPߨ2&G/Y:Co׽ oN}?Ə|x_@r\ x @Jy$O8ā#!C%T<5F@~pLS*PH[dokC5؂|? 7"a+|3oBc^5!/g.do" .s ¿_ 7~//:w [/%?>NƇy1)k8@w ޓ#'ƾ|(sl|[-~ףg}5 LǩD3|& B!ͩ\RC,mx{(|Sn8v*F_y4Da$t>-$IxtfDE6(jpNG! 2/Hۚ-M^o&\ 7P&F&$8Ynf*TO|ҟmy:5w76?da{|< y᣻šyNAGG/?S' A>P;G?x#!Vی06F?;8|6Wg3HŅ(O x584  -)#?Nocbpz|Kjϝuo.o|_??˿ǟg& R̩SS+f?뽟^ZxKp _v'_%jnVzFX1޸hvxxv>[ѣAN)Wb)yK=G]pã7P_E#Ԛ1,S 2䫷훟b7V??~d>o#pӝ$fQa(0, ?~M͈/OOAtCE&ƷtsIez3#&^D[DdUb,V“: 侎R4貣STU*c IHFH25<1B chpwGL#?mwР~^yvY%! MT*ՠ{LƭwsɵrQy/Fr79,y%(3T uBǍ ă"?9+ B=MD~ӟ>s`[BΣR#H8GzD_ǎ7-||)eZ1 e))RՙϺb)1:QFQ#Q#o*@1x3j&P@6u]ZS *3mԉHP En_/g,MxQ/ꪫ9+̳'JqR%qfFz>fηŘEQ̇>#ϓI^hHSn%Goc}=G:˼.L A%T+ SYPX`-:\pZ7s;uևm%s2I+{oaIݿ` ?٩pV*ecw;TjdV?L|ꄎh2)I*yG;.Sf‰}0,v:vg^O)pCmY~O}7usp"Eiot1^^Gr=I=$QR%o=_ehm6|0-lGPL._Tſ_ۉsȄ2馛I]L 4Žb`LmI]{oj.y_|g]Rb7De Q(<02A<@o^U~7#ZVP9`&2h sVGTQ;+x4+Ms38U'XC 9%.=A%>ho6p0lɤwAլߣ:LBHfoOxH0`xj7vn7" 2[K&BX%=/8ɹiKx{V7,ٳg,n|h]V/%S#'+ϧN"oɸ6h׾JPOluob 2(bM:_\ m>s0N8>&rDUeDP[L8 OlMRxbK1MQ7 JI5 wkڍر J\P ;w@ :VhLʬDvF8wV+Xq0>zNyKжN`aM:mƂ߆9_e󋄿QR^u72 #TCq)d<SFb`"k.2s- \&q3`-p;c>)m̌db#fDM{29vET?ZWb=tDClCTDIrm [1zSU=Cb0s>Vj#y' g'G$.i6o|a)NN`H>yyPg7x~9d<5uiZV0 =؈dlBC,و<I+1AF1}"-j&[lS38 9ZM0G.>,|c, ~?χKߟ.3UФ{>_*Z`;ؿc!Q~(<$$**9'JH#q-^7"+lXP!; [K_<+999ڬ+8% Qд|OȤذa>}Zh0clTv z;`*V [ s0m;ᏥG-¯؋+ɇ N@\5/MBIq+wZ#_zA 3HIGhZg.txTu4񰤥m<ŗ#&G! ['*Y:.uok ~3-+o߾ vkqc/4uvj'EBv$+#p+ۈhșeyM7]x{I.a `a>v|2dF:W.ܟy~9,48ȄJ TxLo0SIP(s&4<7IPp\oM;ߎi䩧2 z۳gϸdŬ}J ~DCtdZ%QԒRy+#֯_]„zcyL8I&߶_v?)8|R>Μk><~ߟM%;yx|ģA(3s=C z# I #ׁt$IQĚG0~-:ƃf_p3ɩNBh4®sD4O+JqȝN*`7ZO.|x۟gB>$MK-Xݷ28æc<#W`Kx(RP-T^uy|܍4t}(gɷj (:*!H9+_VADC_5MIL"kE]d ۑu_Q~v!g>|O : ӟAJ. @RMl22jR[M8Q٪9Va"BpPG4}G:\M&0T?.} s@oiF;`2)3wTة7 oK+|A@}>5 f GNH@P6o23H4X?l~~/G>s%AgqÓS , <5 R=N@IQS\ ǃS+2ղVUpZx衇T%psvF_e!_l|y00_+ BC_BNџ~pI'tM^xj#G7.e0{J9+NEQo˝ ~*Y/t6?:ϷTIq 6zT& x$ Px-D_8;RsoCÓlne0q̈ FYjk[h+EZڒ3)HGJiO&Eq|&ow34 2ɶM03E߬:AT+䊄H!jd9Ў>HP@vTq^M`g@(F1 Y`e ۘUTpR"KZn+ax4Q''HCI\`JJdRV98(:>6 2XT0|#L!&kP Llҙ6MYI@gA^TCt6ߟ٣"0mwTK>,4Dd8%+dJl_W/hұHXpL"\pBNt=]'ڞ˿g1o&#LX ?SlFXϾ%9|3.ÿƎ_q!@D(ڛBA? z,cYx<|Y[8<ٞ0- X0x{1[VP1 q_mL$;/N dܿ TWBS'PjF >)3)I7x:ElA7Рtju'%' \V x,mIt)lFKF‹K,2A3k*!HKXAZ o)[Ao<` T REBCq'/UWxK"rA$82)L"zm6VL$Qۙ"*ȼOlHEAj_@14> d>Q k0E z,h|xUӂx$cb}gJj۾}e` i"PxޗSje5__W+4Pp ĠC2)IY0AiJ@h*7Yo%2y7|8cǟ֟q3HaADהpz `@3M".v9|N,9r]ưհ?Q):Z7>×_t~fǂ?6!H$ej_WşѰ O II瞋5hqQ lJd,_BU3v>;,y4-A|pS@DxB?,ʠ{KUs #EV0BTR[ە+߹s'WFbp^#YX_WcGC}RU;aD mejL8*ЅVjm{|B|0F_?׆ UOKxԒ8%s=!;ߩ,* N%T5J 桇JP{*1R6^h=(CV ɖȕՊDžhظq@FM(uhCI$C7fc)8Tlo~(/s&G/_kqUU m[O$/ԛu֙6NeJy_WˌǎaA>-:;|__$u/3_nldI$xf dRoy&xO^Qk/P|v6# r{LQ礅@bgzbWWR>##"do|#Fz޽$A'xb#[6& ׯ+~"^DfrVD3NjT<r0d/L"N;ͮI[}0P&(s'>bEA0[Nϕdt( a"v1z=n'AS0 GY0Ym ~mN4)0xG3b5+S'TlFYrv>~ڠدM"XF\]';׭ȟ_Z/7sݲ /Aqk\DkƾPN T%O2%O~%[!J6XO~^zߠd/U5@O~IDڙT?. J׃^UJ6g_p"$ƹ0ǂߍh`qJDl=~`y`mfU<`4eh W傊o @I7Y/cXbSWxZhҚEko&W]u6t``38O'"_ ϣ/"|g2"ϧNa3§/3hOXNщI" F3^' TҰ/+8ԭnuVh@GrV8)Ғ'T?&.:KKj[HƯCM"bFqyh^F7|@% /?""?>!iq'ڪ֥hQ&_ Ƥ-(;yJl;ſ}vNh<C5I+TyazR0UkZ&2klb;p˲>lZe+! Dz_ *A8WRDnݺNMt^<4 _'z|gI!<埠z@^ U-oD'/RVʂVVP]W-4ZY|8#DUſcG<)+HנbieWl-L8%: ?vMIqx,|SaS%!= D<dq^2xcMeeMJePZCKrU0 .VWůl\Rvq  (Y')]n_W*AĐ"rF^kȄL my/ͼ1II_od"_ ; _#/~RhH:+c LKxsO({z=7a TE`4 1ϫ+ ͭL6%NZK$+_ ?p1 DJnۯc:!$;Ӝf@{?_$s8_wc!2Vÿ㣰!TIu8p/)JBxo+2AV0M[^3 ſs"rRF[W З۶=~]q$TF&^z粍!H”+o3]+(V!WyƄkY>ӟh' Q6Jjt`A{LN:?_S+<|~|_W<(4V5ARZ/؊lDC)?4' /c V"o9;R/b%4|=> _뀏g=P*gk.3P _?s9=.ſzꩠА'^"0_/~>caMT~߿?$rӦMMɧM"qc Xh9V`woოL*;~W);I>_o%zA)<[9j@ nӹJjЇ>t '0-+DCW Bzߵ%I~5o րiKZ;Vſi1:D.5:<)#T*6}{:i܉_LJmH3'eezO5l;(_w(~'k=Xq %+5=&ħ$lL#i JHOȯ'iW9vgP???bW刔 pr lHYkg_Wh[MPݻ7$!ƾq`C|@(_X%w:CD%n8:\4J>2,_qTƉV/$jHZ) uF:E: ZS ={$g BnVe+AX|!n}rڟTſe0K6JtUW}T˥JPV+^=F) K|ŀP>ŸƿBD}a:= WldNȓ CQ :<0`!F0 ǎzD$K@*WCT֒%+D$\r6+^Y*S5wbɖgN4I$6 BbOs7+ac0͟DɏRbS$)ǯ6I코x֠ruoO|w}7= ~cb%ةy iEBĜz?fOFU9|Lk%bAvyKWF*DZO4 iDx f1G?;N}e&b5^uY?/4Jkl]_ScJENڊDhOWCU$۫^?soc;N/orC{|-gXAi/  Tрk''o'$Q(R=(Ρ`լA^x{/'|rpVqmKs/"vNt7L Ǯ⏍h6e٠2)b5X~w~GD: NSw!fL'aeKԴg5Z,~T7""x(<1U{33HR!zI9xP M^cQhV0b +~x+SO=U9O~+ u[m!x㣰k:)-ѐSiKɾ9-G_ܽ{wIuםvihhhE𺍚/(#O?Se8c M,r2 _"x;Yg#  ZA ?; f z'>z$A!GxeYb_/3Mdf\[oow*~/>TϲGC8S0+XI;#W W{?C䷾-zhfxaN>e{ w~./-#D^_ w>Aj]?z͙ɤGd,qۿ.*u P\x 30u85s,|^. ,jGA7)F{-/TWΦfЫQӴy,#ا{h)RX T] %7[2/nO~s͚2j`>m{2@/|Tr Qs 3 w fH?揙|nOE%(h:"?;HDչ""2T^\gOR9mWbW#hhMՅ%erweUgG\yU2dǯWL"zey8|^O0XiX5J9_;A\XaɆn /@'_<"*9NkvԊ?H? ډÈ:ezG~TS GǑre˖} ~G@/蔺a*N!ſH'&Z^ՉbmvS+wW(o؄)itlG/P*.T*K5X۷sg?͍kkA 0eê gMXs _I >,οS O]O?iOR?h _Kp'w40O:ń*EQx'jH qebE(sfc}gOm׮][^*//쇚``g!֍pռY+~ '_mFgyM%1Ku9HeРfUOn{/4tC }vV||~BWȦ&Z1| X b&]&qDy Aa18HS/135g"ࡄFGD/sFu;=Ⱦ5yέ&5.zF0gsA$$*")~$K%kR>*s6m_hPڕtt`ԭ%-ᙦuqGNCT(&1fTz`ֻ\s AGNcGf_/6~IDC,qo+ĺj?-Hf c˛jY.[,Bھ>V׿T>&jjL"M2.Vw[ӎ ep)H]Yר8)l^NR_S'%2¡x}@69q[4&At[o51C~W~闘A| :,$i?@VG"ph2ڗ~&sԲ#wYW /vuXgh}R,#m*9Wa͛X_OOϛQ"&*,䴳_rmشiS,6mo~SC栲e9~vMtE8?h'sſyNol?yx&ԍE2 ,bO(MEOi` `uaC?K呩Fccm`Xjx,؟Yp/ăV-BpVyEfJ ???2VlÙb<#0}eb'PWz,\3xE6\R=N>Xljxۂ,Ņ^GXjY \V`7s#LH/벀9 峅?k/ \q؁dqΈ(J kڠHkR6`$xp]ֵ(2}/#nذ鋻vJctq;D+~lqrc탧٫Ǘij5_?+WTV_%ܥDOg?O:E(ltcNٵm9?gx&lGsQvP0"?0'IE2LA̾/TVrj6A-|K?5B *&d#AgbH<1xT^J-fVè ]9K7_lZ{?ﺑGm l"4_'k)8wPϲ/NcG.eߊ2THemx' V0X?!5?w~ƿ % ~regs#)&]ߟ6n _ L.Px˨eOۿۨ ٔ%mۛ%Xcg_#W$F"&=][24jJ.ګ!X],x+i}i\nA!)jzGxGydXM"?OH[P 5B;Q;Ԛu_hL_b yB3o |0_>! 7]~ ?a4Z&ri8Rb6"#"Se0xСVgOz?Pm*;s*-AKr/3<4W+js2n1-!mS;Y؎FEs\L95q/HR;FTJ&~,d?@l+FGO[df1X'#%xx dy4A}B%Ox$0UYڈ ' 5dh۱+J_/3zȣW5K'gs\ů^~/з펽`? ?NA#mc%FL ` 32&<_O1_zg[./iC=Nخ<o~a~?w8k}? epz?)M!W *@Ej]{\pZ #oڌ披?/xA=3@?u_qUxL ZgrƝء's"9s<*&T#TS_~ĩ!k) ?}h;Y.Nx9,>s'ümyWwo]BpmJu &ʸA/7mjm0m0^lC G14d Tu`cZ$ _~9W7gĿD#gB 3}5F#:!u|@/#'xadwgaV򹄴]W͛7dȻۜ55xt]wÈG7xt4a""B9h~6",KH|+D(28Wƒ>(<~o8AVqʄ6 ~7r'b--Œ.j+/h<*}PJUʎ$ 'M}х9xcҬızCm+VI m8L"/$RMc V ;Bzm\f>ɿ$|g:,"Z~#o<,48ńTsS4XR|$Q<&Ǒ iGjlQx`j͡r7++z7< /V%P]m_f1-A rm{-m&6u/3Ý_hLÿH[_I| TKuRnVIqw  wLmK=4+YNr_)D&A|-mՠ0M+TѠ6  A$\d8F(=QJA=6 4 )E+A'ӕ@;/o j֋]mPVMajerE='L(`JGa]p="h_??8',]G@WgW '`/|AD>&a6튘`ՀC|60k> Agž$i.[;hLO0g?N16?mXXfѐ$J2) %zuDAe'GBwvv8Юu1 w;묳1wa{AWYsE}/Y%+oHp &5{5kNxt>WJB B`vůZr jmW? HFo Xq mP #2>L"$~:e&@v- X_H&_0-0U$h6??Ύ:"9~j[v)yb A 7>u '~M(e(hÈoS̨g˫N63otRzw^s5|(K^+Qɹ?L۶mcab?ZAi'nML-lGrlů^>8+]+/gI?q=|Cӂ5J[=j|.WoܺuAl'% 0WcP|G"] )pVD+GJ]LNDStK!x#jhI<$9s -%q^?b66GCtQ88==׽uxau ^9I%<6+&ίC!mcy7O@8l ?/}p&ց1a pYw_%P(?>$n&z1Oա!~fX l@; OY4gM>  h(c2_2 Sn_s-7КB<5XSO6d'ojdh)̿ /ÑU @M_QyF1 |s%\I"EL-7Ǒ[60}Dp]T *_M)04f-azxe{WCΝ;35춷RU*V;ΐ{<_B9b/E.W+?gP5#Hœ:D:(p1>mH#.BCJC t|wrm|y7u Ƈy1?]/KH抭1? Bsڨ(:uDDaR\Ox|_ Q &//Hۧ^h5̤/R@[Vx) ;qc*:89lםvKr"~OhXWjYT0!ZNvTmWMjJnPCT'Tne_W?O}ڊo c4$|||叆$2ᏳoDg0 ~9R;ihdAQn8*$J5v $ OslB{~`jn+Nl=Bmj?ȏAک!.!N9bſxT *)vd*zj ^03zp ?McCغL W/UL3UN mе0a`5ǴSidX!_J@WѝTmM GZP_iSL 6 (/Q,3:xWCA P_+o25h? C5f\  <uDP 'S~免AA( es6ۇcI>qwE_ˇzկg Ξ8.r$[@QD1++pHrT[ߘWs Ho5o%ƿE& soU{EŸD1hc#kRC1~5V*"$򩧞c- c*l'/_bSE #!i4v(_G W4 ?O8xa xP#(R0Ji~eGhdy?( ƠT?#L":&F\%WY8Q|,@K|-luY>85'яk0m`s>t)Jv"ϴ'<~%RTW"$xri'}j'E~lʛ8o{OznUD4mF,[6~5 VBʤ(bieS~2C4N*Uʝ.g Dž|s+o9:-EFĆx+AKlT(<9iķlHغΣA6hX 0wTy0:!3/R?F=p'I|HIͶC6əTO~z֍.ķw8J}vTI'l/YiYA8ؾvƄ $;bv!jC|ά 퐯7P@_\V_vr4|TȊpM #H 9 .ÁjTh @qd-͚FeE48Rm`_Wo[ 3x$_Wˀ?0ZՔ|NZPpLjꉘ)=kYq/aE]]PqN[?47n^tn͘D:e/ gMѩRkh0. qJZ~3-⟨u<$}+G`kdSbf Xou=R{Qf3Cj+Lg6 g29fs q}84l9Y> 'qUSH+^I(+.c51'?I(ACWq.w #,`g:"69:Y=LU[\G`:pژs0o6_FB{]КU\syU`KܐQ ?ʔ}n&-UqI _KbH|Y#*T0E,yS}Գ$xsJƦx@7OJ~dyg: m+'⭻$YߵM8l9xD? H#X$R i&^{=x@ KDK0?@L=:{ I*-'q{ >?&-zWd 68 !S<́ixiFs0e5Z~5mO7/%B{9?.Az0Ȅ|A҉_J$4W)po{"jKrŀǿ~zUOL3wڅ6q &Td7Fh8h ߑ|(kJJMJ hDQ1Q((k2*?-躕Th릜Ujy) -}:LK**Sr*9%_< uoQVYˍ_^9Ԡ;Lk=~2IV2KFZIm<)*oڴOO3T$7texFr |o |'ϖk1ſ ͤnfFQǿ Ρ,Nj|k:!a BF__O Hi~g'4m_AL]Ǝ_ )Ǝ9#l9p"|Y,~נ\;kFDz2lfe|_@Su|6EG_)iu)+ (GPqԺwa Biu4Brl9'hkqOhj8K4y([5H+I[6$e\f_/~dEʗ6dF8?PkҧhEt }WpT?symč~խ˟K+!&lÆ Qj뮻mt$yo Aﰪ Q3dB&g_z߹Zbnel TҹͮA\w|VD,Ϳ0"`P[0A,h*:DsR;ar(zvI']r%W~;wԆ(+( s+YK JEґd:{e0,3vΰ1=eOj7P,Cf\Jz.SPZK6I*?1hz.>qe|_ab(a.{QYoP!͆a@3Fŷdl"3 Z OQg+C'Iz B%Fڔk_ ?4I;WR~e.Ԑ^j_ Yk5 $-)Gc)|wOoB7eX%ƋYF"PXOJb>!X\-[D~c3&NꄉnpBEojc~ B=쀯m u2#>Si`d(KǔIF涟)~5mV&ʸ!$r$򩧞2'L$SϘHo/5vAh,mb𲇓L"lԧ₪\#a- Bh+1jCZDd-1T3<#Yэ%["]W?7d&+VZxgyF8jE쉃o#! +įL"kCIy뭷d-~=, gaB~0JLP&q|g:?(_d>EXu2O)azHhQx,I~攁68pI3*6Ch4*oWl)U'Om֭{qϞ={jCXͩ\WK &3vZl7 [ _|to Sxykώ_<꫏=O?=${1S #if?-*A ?7BNsb߸ ( h*eG3@ɹS%|hsćͪ&DžAsP!Sǻm|MTxkJP13vTנ^?j0)N99( 10omAߧ_qٝ#?˃)&)ׯS*Ɗ?v4h0k_N$RY'DdG_ #@K&ÿ~wl0"v׊w_K[jxfCZN12D9#9xpPzC}G-=7y=s&0J^$+?Fyya׷Z5] ikOgSbV7^ yt\;W߹7g3BE q9#mN+{38cQ6T$1S5| {K*-&ow%kiAP#oJ/ ۠o$6h `NFaA#Aˁ{{c殺DkOܾ/ѐwVʅ_`j_*4/| O>>/`c' 9( /B>[4ki!hI()ԶB~8LRN|q(rr`0o*UA` Cđ._/:E-oyg}VyԧsV@;RS_h#Vmb6q܆Wgtߎ8ߵ$=ڔAC 7:gKmVccŚU ?$k[[7eVPR;Bx?)LS|D9hEq k9$JFk&@d ؼهeQN(f44"~rÈ-Y_aI7q_ĭj'Bˑ6Vˆ_=аe˖ȯ}k$RS;(·F#|匒tJ )m:*}||D8~2|3,4ɝGb4) `<*-Ba-u`JH*KH'Zݕ99V+ñ ͕I,+df1B%vr9 NlYv?| 3@4w=yF?jOI䩧z'D~+_1&N`8߱ gaRۇ:° _UK}S ~%O(A~8oC?c/~듢_$rƍ* XMDqԧ7Ss`vh>/m96ȽKגSJ;7Re޾U<:&=.'F &dRu}.2^U5>n$s]Wcϭm:[r^Xދl+ &ERް7طgCa3N#GS1|' Ovhsglw0&rlIbN8Oj(_S$| '.A%%!4߆ϘLj6[tr+ ʞ0*/fF?KE/FfӵXW튓F黦3Z9=Mf,Akhgdܹ7~ظ'gl3F龞9}_7*Y6(߽[Uiyb؄)Ta#4'V_^0y ,gQ'_X=QfcC|}uȌ+<p t&0w 㻆// M؝Tp$*fxO%sNGmW"wФuj.{~*k5ӢN Z2BC/32]!Ί7-38C%SDM"{6hXYEQ]CY>/L; /Q#K^>ˊ.ǛjM -.'0^Irє9? # B+s&P嗫߿_uݻgϞaZB̨jɱĬ+!G x4Izkr͸YM?o.pNK_m*4}S:!mW?#Ə}$!zӡ_$RGu$r&”mHa/R(AmIg'e]uGhP@? _DžD۱ L+F)%e3ù@G0O _K:YmHP/H߃xv-z:APsӆx<@H_p!6@JIpS+{b>޸k-Gd=/.{IH[JP'Eſl7ocI?ɧA0)HM$R89 |"86g_p|>QI~HBlj=,%vr"Qi2xM%:rxcKEh, z_WM2knH`_edDG!vpR+mcc.?aְg\% įTEh/G+ ~my'D~K_?oL"Dgdv0@^2/$|-ϖk?&x [wԥAkmS~0^ %,9"eT⠒t8Qqf?MO ̥b*įL"U)fկ~u׮]N έOħN]#3Ag ݈%k28?:uNOSwǹLQxDR`)0F`y`lGbN?R[Bx;>hC+A?tFɯ+Q⟲dQI>6x ~̈́gw{8oc+Ww%?HKT)PWzSdkFDٸcD:9m^d[Pi4~5?VBa6-l* F>, b1<@gȎeNyc܎; 4d؍i7_`54 HX4zMr&])Ae hc_Pÿ샟gCCQ_c1/h3vU\E>Ur˖-*8j&_U+m EAqFTKG=h𵉔5EWC%aBp4% eYx<;*.8Z AX-~'ROJm}W5'W7rF= ]!} 7Q4(]IQW(8U&ƍU&_הC &݂P5;-DO_HV|Ῑ|s?[0lPD"|QLӚǮ5R ]kq?$5Km>V5-%ҘhKg/("r"W-2Xi 29_smcci." ˛U'Ȃ icopρ?#^Bm<)*jG%P(SO=5$矷]#`{:o 0*e4%Qm9&T`O@נk0LmLڗy0;-Ǹ*QʱqC%%[y<4;&BاtMuYoy[x U g Yj9O3b?+_EM0eiqaj`o wo_:/|/5{]F_.bGZjiCOq*3+WI(;DdU&bGz" ՞ۧ\%Fx[o#j>KeO,I5dBH;qފǯfJg޴).WM%8_&|`Nh0v ` [)7S52| "ʏŦ~(KS)Ņ[//O-x(+12@yG^$#4 5N _;<'S'TLN 9A &$_zX߰_+'"?8ljI߱߯Mwvi_,RO_~2<L"o&ek.$҈ډ؀ 8Kg/|MʏL>#l8ݽ T0J/%?%q=4<:rTăyPЬA!GB'c^;ZI0eՈ jxꩧH],X ;Q_ 8.ռA> 9i|Zm6AY}bE._(5Amv#{%m?wϨ~FZE,)ؑ6IQWi3 mH0۵I4 FzCl6KZ1E"|VM119h_Jq H,4f)ap(ÈL ͠_[xFrDP0xf1֛o jOҾgQ&5fe#ћcR*Kbaʝ*? koUM*ZmȝR|wQf7qp'py%8g5;v;ïN9eܠ aɲ۷K_VdT, P9G!(+QW 7"´1u[MbAt<:[1Y񠮛>pJxЦ|^0mt4oB#(V֒)IxEe&|v"M(F'iY<>4<ዲx?((R`LfXyqu_sj;K4ʶ:nEHWHB#шg$IHA! b&K__adoy3˜.  ؀ uUV=5nUgmqtΩ|g߷[2{иjT ʡ`h`/aém<?x636fk .Q}w0z 507;عs(vh蠗 $tɦ$ml>#W$ IF@19ɕ0؊I5y U#] 4G>=x)&_K!1Wஐxyf'WI_=;Ч G0$^4 }jBSR3<`?Iմ1ArI;pL?vrQ{>>Bf7?'*P:l7Y-Gl#~Uhx@,߮$A69Vo(`}l@&5uzc:|3< ͷ7@_CB<bK4CfS!*߆W˵&WmSꎚu=J.~HoH bI]qC >$$ӓO?d Qnk#>nߑN(`d8R'PIӨWn+6D/۶m!Nk`B*ȘLvI/i版&ҽ,~ ߱O#>ܜh'!eH IA1bT|Gc-P,á? %beXzW|'PI&]C%<{LAxjqjfO|0<|l?Ƌ%ݳxpW&!I{?(ABxa+pℋZ>?z|?(1K$ 9dh̓(vMbqfx 6@bؿXQ6iׁǀ)zTGsmlȝh ծsG}tPse)  €]AWẕWc&ֵκiMzkcM޵?Cju!bK<Vt$ 6 c&',RVޔu.~$D#<9m?Zi "|~aB'mKLUh8φFjTj&/PNs9餓ho|ʤԃ7% n̵J(!?6ߘobsD iY=R4@7'"XzTCU1F~HC`DbiG,!Nm;Nf׈L{`Vg j$hb*{X&+7dI]@tc<\Jx@,,<~x%_h_Py)j նѬ![dQ'd4sÏwK_?װF F+?SZU~OY儿?p)OM $Qn8#p_;a1Ȑ!6I ѵaq@% )Dto.󻸟5G2_Z<~Ox+ 4Bx>q۞w7TK aVɋLXdbQG,(zD &u<ޒƍYx4\]ţhYH7AQ7A[%\]uUtg}p862?4!jLfl9&s}##Sf!`69/bCCbݯ<^GTO₿_O8ݻw?y5qPHYgR$_#pۆèKtsZ5JcXF5!ֿ*HĒ"Iei1rRĪ;JI^HFj莘aQYBbn;#<2p۴ YҜL<!xIMayojPÁ1|aoѠ*k#+ &w'~_׽5BCXkC6Qk~$960ovk jPP1BNrTd}_OeJ`&7E+b?H@Ɛb:qN-㿓?K%2!"uW90#K$ZѤ j"R/K'vaA0C-'IJHK1GC`h Y8qHmm`WXͪL/'ŀڿ89YWEd4ZyQ!E~'o~80?FNz*)܍dPV|n辁#f57UO=aVxHΤEORY0ڤ<\/l<A)#idvx/ߏX5І*mرc ^WgC۶/{ I˫qTT8bhUY~?>ev}vh-4|<|ύhȭm7*g_kajpƤگږ-[c R WVƕ,1A oe$ߖ. 69ᩢ5QAC!櫍\ە;O_o;gV/~O{0XY3zQtytQ ?D) Q(FZ; oN"aH:qH>zɧJ`dpgn}o{xʐÃTlb̀(/CW΍7e;ٕU^}_ ?u_sWJiۘDam[ ;S_pSJ2xزd{G h=IE/zVxhNC,uIąh`'/tΏ MԆN~OE\{f#uG 6K\x,<>,CX-*z<+ߤq#O >3FC=SN[|{(o?X䌵Z:O&'/,:8}k=ꀔ?]mW3Ҷɷ/ uYi"dIJ> Q XkDBc+ PtRG_3֓76\k 4_/T$pLΛxfxm?.}qXcٺ0fx_y2i;@bpK8Tے0*8pJO~S0蕗 ' |EK9m L@ၺ'Yp"cB,J:+ꦞ<ʔg8j*}Hlʗ}Uޒ ^W'e=쳹įM.g\RZC6ӈ ^j<?zo1V8un-NoS,}T( $M\uUw^Tְհx<5Qt K30\PԒ*0vfNS A"u'6~w("Ϸc$Mhx8 &ӏQ;eL)7Fȃ4e4x: F0nvOP[7mVįW2V_GPjmo3 m;{M_h l9nA wcP';`߳?aAxGC|^{m+A%1 b'yFV4~{E~!ozX<8X*8Qp c4<\qv(hxXބ!7[⟳w*jd_䤑$n= y&O4OT ,j{APM,c4(dȦ\V y\vZ3RW'__ߏYh h93C~5aq<Wm)|J.~T9mF\~OĕW^{ –XPDD X2 Cz/#1#"miLu-c"Y$]Ĉ x1 slmO2` 8RWc K6zT4_*PX?gyfCsR׾=U hWƫD@70R/'Xm#W/4,E >vmsOc-w0cǎ6Ȑ4hdTWD"182B!ke/ +Qh}@aN7B5E(k~ j- !4ؗ%f ohxR*Km?-fD!NWotOā1|`? v_ 'ioI0(1J1s׌('7s9b QmETm 3fxxQ:7#I$d5 x O9<P$DȲ"_CLkvsCC5yBͻ!?-ּbݰV)ukÜB)ُ@k/y..=tJ \;Zu/ ߓ4׽.'b#k3Pzת5f{bG_o[M v Avg"ugxea$$xx0*bDzT`Hx0pp!ch%ސMXvw67K-מZzH`_Oꑝa8O'Z_+A[g}~ptBCțx>Tr˗?)14(ylwP3i5y Y *8z5$[ j1?ӫ\9LZapgJL%H9  /`]߈3a`x/ ; x#Cb&N _o?0Q[{Yjr_?3TT\HJj>.YYYgP@8 .=a/76S-zt寞T玐Z޻>Ë2+ ɤm|!5T`6bHXCE*D4+~-o?/rH~fۦx'Z/ԚC(ғ?kNc@uͥmD<KoxHWJ|_TOD^AѣN Z]wݥ]Gy'vڕ5ڢRLkۂ `h 3k"?xP{oX4ȞGmp\y/ Pc~߾}xW~XըcEh#\Ac"[јv6qGmY7;?5CUkkcʢmp 1a|ciGُǷyco.ĐgKr9Va W(7 ǮuJM7d?&7QnYQ/ßhQ={§R?!9!@%oPJ0K}˂_=Io}[cf@qIhw (YJ6^@'ν=hyH~[g ~$8E21 RmRsuW4V^NNf/ a_]K(>6Roرr ~de]vI'X&`H̢Azõe/sQ>ޞov2)Xn!H8,<|- *> ]F~rF(ǓXPoK?dxj{ d? mUc77&GCꫯBX*"=x'r3k|h&6ÉV74%ob/w+r¨YA5/ߓ4gϞC_FU N q z1 RPvc[E7㿝;'9^i! UXĢX4]ZN-J'ɨDxp<E/Τ_2 r' U'W\[l[+9hU ˷ƹ<ԃ;b,V_}lp8npne8;dO/,T}}/w/"?!}D4= qۄd;&NIvـzZ BϏI&ln[hxF;{Zac'fCD!'HP ri}Ecʞyy}4*  ˑ@a*ADVMY~8V:_?e =eYm^y[ cOfF/#چ_җ%TސDV[A#cƘyݸ!߉gEWљueP #\& 3 O\h]c[p((>9FxDed|-Ɉ0Ҋo6d;5 }Gē ƞk N:*!hYP\OYgwB7xx!&W맏;E_O3ibΝ7Ob6^'87:xƎIkjJM_NdIAr8 OO:b2txjG'DxȯRx~P 7zH[ C &J Y9V +mf>SB C) LFa-s\͠5S: wp{6}c訂@_wW.?]`Ak1U3,zʏ<*7AB5^È4ش|ԼA %1 Ot΄C붑&4Lh_RHVăoOCl8@7YAr(W .0. ]BY?` Z;Tny0ďd}:~*jeC;AÆ[9-o}G41wU°/'޽ &G}<׏s|L7rBi G=W~Ԅ7[ e 5(E IVtyL6`CH24a VD5J7C"1ݍZt+Twك`.ՏsX{IJVܜ̞u*͔J!obі8{/6KӒ oagyk_cP<p\U4^-xR¬@鯹o L4wkq 6pQG3<)ءg0l<"G Z $+=@.3VQXT2UWoW\qŮ]{1??w͛p0$Y CFH >#N` Ա\|i`?Y6No\sK(z/ !?z3ik|-BSL4=:P{# &/k>Rxj?`6ehݔj$I)ȊNmZ3%'`IO T8ɍ5If9Jڃ rM~&nA MhY/??L:HEj Mq.H"Zfɘ㩚cI5)w454hF2-yX$X1'*4"D|epV[t* [xen(~_ǟJ$@qB\cy ??/|c./N^(!f)iw}_O:&pD CІd-(vU =S.fynNR3cQDЄ1rdwF/x"7^gDy!' ]i!qvh1b3|S5] DYO"&)Rš*}#B~'|+~'ȻK B*A~a܊Se z3r"ԝ !te<eoc<3R u aN ZJ6 #'|{;o/ Wy lx퇉?}o'*/_e[#$ ?҄4A<@Yz]<9?Ϗxr~yډ%XIo-W\c U$ xp G`xDВ {ާ,6C9 XpJchnEEp[nWj ?OO=T1+IHaS]y I/W]}ʏu#-DacKkžv(ή,CZBU{v=~k~8sOc=n_O'i.۹s'?4QȤ NyAd֐85pn@1ۘM jDnt,opd ?R{ZKch`C<0ΉzzUπ>ve]H:ϗ-Nq n2Fɧ~z߾}>ɜ6%;-OKVf)ǰJgAWS:%Z+k1KŏƱGZ6oKYrdJ@R7 t/rч~^'$M\xᅆƒs K-$O U@!0q_1KVZ_!*[4lD:izFG;sܤ!Ψģx,Hx@ixDx68B"^g5 qXLp}!oucb@+c?%|Zvli,3蕃?䑶M~_O3iG}4A^/i ,*G@TPIR-4j>c8qd84OXws=a?FRYJ ϡ)hc䱈x eA 4g4,9,w?9wXH;H_OHxgJ$iB,&!  U^? 99^P7IH8?r_AɎ_oV"@G="m) fSc9H$ 6H0QRRob֖% }vu( w&Mdc6^T!^ $Ba9fEВ#Ff'V*"xb^J |adٜ$ %y.0 r#I* dсCT&MGO3pݴk?0,fV& - y%T( f}ChtWKidCA<ǚ ?/KH z@CS -MS D;o[38` ǰ?Morh0( 4%]pxwP-73$['-@9\k+Iرcٿ4=gPDP+pp1d;9oBofNiSZ:(D*K ݥ?V Z5в bcqMȨ5ƣfD'RC19?VYW:o4A/՚A r; AnZ-m _@y&W'WBri/yܹOkT{?ǎs&M {@6j:-.1<)u)ZAsmNf.OC 6O :RIPO{5^2|YW.ηdr#4vh8Px\<,#ǾxX2hL XX& ?0Nq]wr=x`(uk.[R O?tP;8#gAcu6f)cN`@VfY䍯SMsSƿ8OaO8yvG0hDz4ShD;E_gO /fZb#J(E5Hd8/Ń /s=aE0S'* ` 5pMN sN;Gvxl˩z痟 t8%:>$]}xj!buo`9r, },mтWBn䂭4ž,hU؆^C~~AxPH\~L AkdI_;cg m9^FeӿS i(.J\_%2 R[qLl01~Ԓ&;~4jz  [On U|hG*Ot;j*_2$[5#)7_y׈HK<#ZN(& T#։!$:d2 I #)ĢIQ I{^UWH-"FSXn a/bss"f$BP\pZ*w yLXeյm,])l`ۦYii5]M񋏬yհ3 k8 v%!ǜZǣDk=ƏGKbDhH#%ᴽ[3<8n-/oS6`/@Ca>~#mH BU%خ4c'Mn%.eG\Wg/$g˝ȹܣ!Axjq(BwV0p֙όhXZ&ɤ={hO/v '#:~Rqw+ ;+Mܹתh\nOba!y8a "!͞H;/E4}}$g A%tMOCM3m;C$yNg-%ҨxL a{^hʮm/E54v,RĚ+d`9* XUk\~  Lh#z"GX  [ /}'3iB,Jb($Nrm +*bL iϏ|fZlBMYĚM%jy Z2Ad)ȢQDh H"Q 1vZ=MSU41e>^{ wjN+?w?z"K">h[`ڿod`Wx]U1( ;&^ZE`I8gL@~k{@V@`WyQO61d6 aAS8hg,=bytZxG)5GIO2EwZfx>z-oy1p< RȞx><6,?aA\JQNW\n-M Vn"-Zv\a?=3MZ7!yvgEܸcڿsY ڟ'1 RxM&Mp HD_4Q=@%ABAp|;5G.9ZoN a0i( E4q0 cڅӺ*}40=pM7B,BC>ٶ+?䂿+Crl1_uL'0F5a[I QۓmxWl#? K/-j^{ڬr]A$E'woߙ4q I2T)H %+Jc[$?J'tN #~Ŀ:dA[q0=m=&B&$1i :ԝ yD2΋?1RscxQGpߵ?$\W O'R_m<܃5xiߌ#j5/P 13D!j]tQpw'xbzt.vZhmJ\nBu#ڄnJ}& BNu5dGl[mFTX30qd(6<"\}ڟnga??{3wh@m۶s¹E(T⏥(+.ϋu{Q;=&-+S#k/| v hs,5!rʉ=<3}NLېr˽XK1'pf8g~_ Grj<2C!~ܣhU}.R^NΤ k z@189+  ^֝ˏ4<ۈoN߉Aq)(+aG `xV}\6 66+QnCq=8iZ8AJrh1ڳ*`)0\E.{":[o~4a?,\<='+ ?qx.dm] O=S%$!yT?J}gPO:?>ACț~k#4:[~Ȗ;#NצRi/9IZIK&`P b@2)x `֏b2IMUm0f>Hgp`}$<xZH"?IIR z9$CS%t3Tf [~q#hL.=hA2d_`ڤƵH9D & ؈פ qyݿ;|B ^ znWmvʥz-mr5ЌH$IdAxr'#4({.6C~OD$stww ZHװ,hZ \Ò[3n@ MI&[5oiE5?LȺ:噠&ksZڛ1=u(>쮈1f6LK~. ~ `6 ĚQ4,3!1TFĀIɉ8Y(>rc2`#5CoĂj*1+Ki<7w@/Ƅ 6'駟_I pAxjnIw[_%D6KJUm jk sTT!2D>b#3~gwmhu2$ K9qn.V Ygxh{V?xa{Anx^VaĜ*Y RBAk:Y{># ] Թ8e&YCQD4lO΅ms3἟A=~o 'OW-6w!l.g~d8Cp@DqVTW?xu@X YL;?Zihc0{g@a I<}k'4 3{яnz//w}w)R/~ы^TJ3RoD()wY$ˠؘ A%Jum}4kVe Xo! 0嗷j'sp6ËunVڿw6ikfN|lЪ/=W _@H J|"<|.l>ҌoIqtFiSBle\ #US%v;ē%4cwVOX:/~KoyFy /^җT 1MzE,_Kۣ'8LCI?ov V+bYCrۊ.vmĈIwŠX+U0-q'A_0M-iϒm˭v^Ǖi9 ZsGģgd*ZG8e57 2J#4\sn9Cƨ9MUsY>%M`?@`IIJ)TpzDMz2&GZMzw%|bLԽQu\Y"XqG,g* (x ~κ s91"޽ *ïW a=5TJY*vZ}I_ԉ*SEh^ nࡩ==f L,xZlH,.dNxfHgo _ } ~x욟/{: I(F|y3{R'RYBDxdM O-c)pDeX [أAȟ0|xX" nMh0fD"obqQ'=1ں1۷/J7x!! 'pBWDO;ѸCn[-,+mML!6 De BCioo3nS3WcX}ŏELW\{.t“g+Qfd#X>?r .) -wP!ᡜA:N4CI?n.47?BnuBD #!*+H3Sµ{i09I3GzRT ˖xIЈOEJapgcDZTKy:+<8@ 7db''Kw098Ɓd@l_ aN?ԟ-[@ /WB. .Dp:bƀhB~㇕v 5kM8:^nY;m?ZRvL.W2!8S~g5ğy5+ $I3Nv~ "sC a 'f >,m:ОOTuC{<ܸ~*%FbsСw]F6KL`!Hf$b L5MOtM6ouyKcBr]w}6œ=!0. /7P7z"b,oxprZ++YNw9Lxk^3:{Lv٘佦$Mh Q j0"G΀n ^k F?vG/N*,Sbl.(I!j"k';>y{>}R-%ZU!9ؤUF}+֭8}ԈQ ة‗0^%S`!|-b0¯cO[hC;s}XD.g{.ݪm,ƶ #y93T ρ3gӵYc{? C,R$} \8 g%d!IAkL& rms4GU41F`Zh21NxPM![%C\?}?M]L*aΝb4?^noHxV H` /j8^"|cǎwimf|s=7dY<+C4tulSg+I ђuKjQA}83)bFW痴s jfApE!d\¬{jkGߺuW_ ۠Fc)ʩ 5 , O%9 ^9:3Bg%BB,_=CnDCYʲɤP=82ɽuH#iY"ƐA$%|3 ?^ONyփ"zHj] <1MCx8p?ۼe凇ZTC n1Fk|"ءf_QVgtm 21gL71M7d a vm@Tx\϶6*cBvZDn%chh!,!`V?TqzlOL5 c[Fpv^cڵ 4˨ovtAE.J6ކ'c:$3-P.cPqvڿ%`f14CP7~kV.B\W5=f,7p'@rmɩק$b x)M9 3[o7GIk{XZwjx$e&{lC҃@x$_߂uT l-YZ+oFb  )u՞6 Dlw7~hO?}Y}0NZigjhgh]vjzfS]3:qjzpC|If[8~Xҝ+g%[gƧ8NN]Pi+MMA FDS^QER+~a̽p4o3%~cĂ⾌{[,bdG*≬gNTzޗ)@$u-UU??>V1"V RV.~n b3.K2F!8U,:5̈Ci?޽ dx6D[@sAk blX!O=+Q0YJ/f;T|,v vPw?؇qg^}Vڿ~.yVPx IJ!֘ 4υXᒯJ`GXKWG1i6:Zkͦg\D?E}c !ޓU"н+E!D:JnEHַ55 ۤF5@Hq\MH,&9%"|2q*C&5/o[]Rb街bZD1qELH"zH{: γ)lx\{{3\$8zl6.Aj?عm$RVYcZ=q=F1uBɐIejBtC.Uj!*j߈!%deY72'(h O?j{5< C0klsv6*PK#|y`b !y2g;[O¿|z@99unVڿ:e]UHIU.;I3zU8VW8$,xl  )p Ok7qlzf@{YQ z.!j|} SZN~OxĴW7;D>ljЖjQ-! LjSmAģJJdQ UDe!~*CX Ǐ~oY \\pkLfYmaMgR+bA߹džuI/u{u* qǬx>D! F;+MbDb Wشp__sdǏUGOON JDC.9׸zcsH>lP= a Dއ{ovmƄ9N).1բZBXf痴3O` YK8r*![ns CPCܘjGLR M*Zv;- h}&5x;J'?<1$쀏1+`2%I,n!i"xD2J  DAApC~$8ڄUu,$Xo D&00Iy]Ï+tg=ÃUU ߄<;3;f?Kb4;hU-*ѡJ?*7b^raJ$+9W~Pazi}!(VSE} x2$a_# ;c桮 -~rKCRrjno;7x8i&ڿ~ϓ(78-r4A*$}Ht4X R$e|Rfǡ,(u5WiphPr]D ƤaG1ػ!L' -7ըqyj% *BjQ-\pA෤(nd %UhNF󥜳\,q7~0%}||̺E9› S{.7]2`IVÐ;1k%T̤F``$vf5Ldf5c0M;~Ԇo>,>zҬ.~ T-'ςIy>VUi˜0[8.%&-`2BXwEsDޞkF<0$NhWJdU"8c6Q3X& 85D!.<@k;h5{k8'C[bE^wܩyF}ȳ'p/}KK/y{^'"VZЯ?Oӳٳ%0um#x\67+9pK~8UgJiN\~ ^&UX\ 0o}˓4kFba* D2vDkx]IĦ!$DNDGh i7hz&Erd?vC(ic:×8NR'D eǂB<}48LMCjrgڪ.xc˰ﰅ` H%. 'r!{iNEXcdoN ̂ 7&]ghuQaG2ۗgsavDO>&5 =2dF>~dĞ={"6kǂZ_Ya5T*I+xX<"+(@T4 ʝ;G?o!c8ƕ&F.{GG^77|"8TC]v{Ps g{ڬbIR->VCEpE7/x BU$QPtLW꯴C?#6ثđ C*]yn9cS#@p `~xOd嬽шM ri OCJhO<+ퟋ?)z$gLLт?㞤[m)$ Q/+0ӇVBI̞װגf4JXJDb6aɴ9m.Tq0l<(\h8@@M8/Α5tk9o-! (!! Yg9h{IXۺuT򀲑"Th@rrbX.`+Ax _8Xqs^|o 1Μc// }ȮzPoIv[YIe|僘!6h1 .fّydm#^ zS0%"44y[\HY ;|sqN"Jꂿ ~":91r#D"m̂Wg/~3M'i4Xkwm={pS*DO)%A'jʗs#х<&/pVkW'˼oEPuchvIaOAYÿ.R-&#.!舂Tj‚TLh#FI* ^o/L;S략̓:Wol>hV 4*iPKpQD"~ (Yc 4|MJygqS$NK(h7#1|D􊟨6&~2 59xGC,*uf/2ƫqPCͻ6տWVQaę9jq?~2o,pL _qF56AxӃW=h!Ag񇦇h ;8VdɊ( .)ޖ9=!Ex62+[H _/٬YFlLBG#&Ccj'(ZH2+{h?3gy&xts}|^NTſ)g曡ceC7*z_?*N̈́h`)r#1e IK| RlY%טc z[śx,]~ O ?e@MdZ>{z]GW/J\!jz^z"jgL"Ģ x\toy 7ٳ'˶%ܹ%lAw?D{O z>G3zT3 {`U)!i^)wupiq+hK_i?~FëjdoS^uЎY)_W2b;/Qwqw]朧!~(bJK.TTh&LJ?ŗ 'i+xͦ,-,z_ _,_fg~D.Dl7 _X\gٯ,9Jh:R72H~o )OHz$<b&r9ҀmUc~`&C$T?4a[WxwI4C:, וږߠh;@ݻDЫ}I/Yh $=Aނdpq N<&?Ԓ/J1ݷȦ+meރ1,fI3^hf6iÌLV)AҭFj':>яuQމ]S PX;g!΍ ?4q(z,Po~^= zN^MI<7 b CEſd(oEsNP+:ɵ!5b9a]w @0B.{_L&Sg4p86j#Rx gjDIU⼴m#vD|[]wݕ5袋H gdaKE#4 &xD*ƏX@xm;9´ǿM5//f4BVE، *OLN>"dᬕ~Q { 3Oϧ@C5]Y-ۑGgg't \($Jxm@G \2>O~M/[ZMda#2]5vxHx8!˫T<%I$dOWՈGGgqF)jggfA_ #ATdɆQſ5Zɜ٣U=#maHk?$.xJK7n ntcl)sGJu&H|A%dbC /i;r0 X4%^ ~_=2'O|%Idt&-~;q[^xg΁ >ZH1`<<$+“C_]£PylsDY|>amk9|ެ/EϾ% ?\5Fy(('%Z?g@X4{2{4dhԄ+n 4+5R4>2 ЉQghM!Z*!÷Eф!Hj#-;2 ,54uGZײ+YH]MMږ[oxB|E5asr$  |19toLަ/"=d_.!.F1ӸSJDr*8A`Vx (X#vD)4d )FRF!jFb`i#@~FMOPޕ.]%! _;_q vFi#XX*v7 [<ւ2WAqł_o 3>dzEEtw<%J ]MBsO,INA+K|=|>w>iʑ|U~/ {{Oο? 2,D JY G!*ILe'I!;!KӾ$L+oJ!Oqw2睹X~P㔶f8i[ڼkqiR茙ٜ+U瘞82%7=Up1]* % H vl? JP!OÝ欸o)\OU%ɰ-$k2( eL$8΃lF.:쇉fQiD| 'q3޴C ?S3Lx&H%Ӗ#HF8v#Zќ#~_rm )X(.Ȫ#WWφx eEӸ*z詌N藲*%/* ArFFiKy`Eqk?@Lшh&TU&=x6~}@2xyv6y*;QO(5d b_/Q!G2:8.oo]|\C${il+"K mPGL-r?_-~cFƽvn7]x$!D+0pꝅ_\u2YIi"aJJQM/gh&2WWD;ePlePzCOG9:ML\ `;.8(1[l0t%(t!KF=(F4\~2O MQPZ(ߨP<~2Qt詧jFQ,/. -',Ј)>EفlF# HgXNL- RE|/HfOơ&r vnOOkOfRw܀sM ?35rYLkӂ2Qo35DD< y`^)_<8G$ĺ&mu{LOpN&8 GKGy"˧E;aH3G5Ҩ:L?jgzk8'_oKXF(VaH-~g(>"m 0||̢ ~LY1c/Zh SoZKo0 ]YPڦ|JV(MA]o?bD5T1wO(`,Rb.v}Og'W_עU`hP X,W1(Վz]W`4s9M(؅ b~$Ezu9>Iov'M> s^H T뱹܈D:^x5yY,5+KxLkZ ,K8C̝'jLƓhxDRG9k UO(7x 3zRLy=ks]Ԁ^4V8!"'V=v8B׃Pxhņq{DP~"g?+#(_c,K(=Tde߃o&oa4~}Ԝ&X9?ЉPq^vxN^AFj kI}~2lKszƕn%{fAbz%Axd\_\+$2b6 ~ǟJ'ȁJ) @ڑF,h$CFE?rtkC?ӫx}C1^6,(З2pŸN&hCڵ+V[fN<LǣqYzWWFNx*TfG Ԣ JK.Tӄhbn 0Ws0hMpȢ aGo;CfNZΝKFhw ʹ_H6 LE<-/ةxDHD 'Z "S1HZ$ICF"Cv![?N8 =Px2"zVt.\T9SHX.iD*~Za|8P{Tlӊ|*N>_a^ta WFQ:&!\> F+(AwvE^s;TB>B]Ac{O㵹LYh-5;,~K >X%!qh{9,;$ qQ>iO_W_en7;B(`Yȍ:Gl~(M\xvфf1oMH! sbg|klj/~$/qxm(W"71Y=- sISLRcC;]-yNiܩϬ͉S x˙^k 1f_l1sIp5[ݔH9xUhGu>#<3 v(?@AD;($JoFþNC-|6L_0+cȒQNX-~cw8,E8i9MHaQ0r D^`J]nNf!!<~k$^!_'~ĿTF\?/7 f[b#rI JS }g2Fd$m(gFHEGLv@r gҟ1 )pZ!0*v\sq(AtEy^VDܻw/xt9nK9s)b'GT#QWF]q+3){­("GRCӄR4AsC°x@&B$SĨDz<܎=JZdiyuKk= Ma56!% GyVIW3pco;'5GSO;cK;F![q ۾ u +=b=H~6B:\nw\asץoaMxNRq,k}X!q8Q}r盝<jCd#󢃅Vu좽Hj05d d0b #sy 3R07ń%6$,×kR0('۹QvmELv-;34qE1D$09epgB[M5]438&p_Z.ך15q=3Ɓͩo;<O D!4f9pLy_ӁHwL̿U¿Mi6lȮwQo>Y88T/]ru׍ c:{(șBlѹ[W/ 5$5 ax`~@gfhwֲdV5Ȫ4idr6K濋zp$`;=k3^#g_߉{yR~o*wB$eZ/9Y'gMcE7aPp|}d1! \!_8xb!/D&>f\ӆBzax%>)2]w'%l>VloY1?@ $^" g[;:j$OvM) >ƾuͭO.+3I^NK0;seOy3DF|rJTt AkqGi?|uq0 Ƭ&`ťv(]/MPlxZO_b^; "R!nOX'lx0o]b 3̧?iχ EjIVz_&K< sY{~RᇲauhAS#Hq\y_-nFokfl_FgeMl$[n%yeE HΞ y}^rX4XWj,F8iLF?!v"~ wK51mě,3< ;}-fbBNR%?&TBRw"c:tģ giS(HB,'^(b7"3E]I(<jgDTJVpĠ/~1㇔uϐ@U\ {Jy !Ɗ~?!<"dh)#;ՃS16n]Wfǜ6ӡP 7| x/{ |MZZ&;jBa4AfZ8&LV%@p~ ]|<i`if8r|u{Ok| ox3HzvBxy70DBO<'BBt 6n{E0zA=瞗xxm<<( CTyĩǤ<)ӖdTă$9x>UC'~'`=ۣk+)*}_N?~'|YēP ]=9N9׏b $v{ B'_,i7?yenq (@ksυՂ֌aiqۣP:wM5 HiUH17uI&&MءExi߾JOSCuU,=c8<i/X02Eƍk=7"ulp אu{{K^b$G%YH !?ψAf6 6dc*ǯ+}x裏iqJ!ad鬳:4f >/t(Kp ݬE€ I!3$ iǀt1Yc7R(e}q &'aH_~C3eYpEɦq1-3=xD^J_gcx44^$bIph6\UAzI sΕW^L }0,-lĄ׹ҨTF"^ _.u{2a!5,VſKndeZ j(&Kv.mh&f},a赧Ƶ!ǏFyqDdNhڠ3kAƿ$)쪻JМ6ZJ_<Uk OHI+s(/R ;?X?#D@ wi]}HTN`E?Vxf.*+KeUedzjX|+`[&Fè̔(0QeΔ>C1 d|>P48@4y: Y4י8#) x(c1Jdu7{??_ Eĥ{lM$%T<]@Q'fo--fSY$4E D'\ Bɺ Ԝ=ۢekUzUW]YOGC֖(~nAT$k&r99U f\ XjCᷴXJ`:jWW=KC#,"_umvȥmP}9?̂䫯C 4^<7*`?HRIkG01rd9G7RUIȲnf鉭HUhA]WfώϵٿuH+']tN7&$5C ޖJ%h<Y 8y!Eyh=k#M'~Og!AM>Cbxx.YW34م&5=j Pb I$!ce&2 XO}CC8?Pn=Ew@h+Aj(X(;I4tw1Y]iYzq1'i$3rN= !%,x vx$tp^ʭ8SV@LbcRQ^( o6?!my  A?cyn0XCH(-y4EɸwY-~1S`: 'ay !vL:/o -9 j_+VP+_[Y1H2jx&wޢUzKWfQgUm%o~seeuA@ 5Hj,pOy/A#ex0m?X )¸lI蒤UG҈mcA|(4 \.A(pGa1ܟkhw?+[ÕFl֗J4:_:V|u{_WkN4s13(J?8M|߰{B\EƸ%H*)e- 3iG) zKƛI"춖&ȩRx ˑLjrVAn4"l ?Zr(oR+VEeD[=ŮiLX';mȓN:3CVB6_}*pp衇>F@H~u"}؎,'#\I_WAuf e9so"rXc/[71;]`~,|x f:93h;MjeCrKsB_;Gb7M'mfwb|g*Z/doɅ"LG՟ϻ9ie1*|w>EC~4;e8O,O`QpJvܿP!2 ؁"fȘ+SNq@Br MqJkjE 0d8u v(=?z3@*G+@B}@==+M6TiVnF E34ᱢ o4_sǞdPa`s` $^Ona5a.yNïśY0ћ_Z0괉| Ń#~ x"\kĝ 5RKU.) 0!OYBH5\qvSObEO`: u K"CXN2 RPc;x|=BPc ~b^  )I_Wߕe"U[IPAu 8l;#|K_Kyv|>Uj<4~8Yi(Y16TH'؟CSӝgc9$@3>"i1>Jzǿ-M4>H_f*A/ ?Hq@brEx'oGh `>!*)"@C*nq7GG,X ֕ōrȻ>sRZ֖: Wbba~Ep@pO@}#NnsMGf6#Q88@x_W/i 0dJ=Qwr PFűLW;O8MyrA9}R*:('^bxBjp񚱆j\h%o񝊟]!w u"d'Y1Dx y^OϡҹXel VQ F C!|E?Ox㍞%hγ{8k/=N_U}YW#yYa|αqoAip"FhEEQ?>]>_~6s̄WL-(^(j#nj4A3iB+Fkud4Yu">Oc-1mǏFɌ(6w;oazRp&`Lj?"8%?Gۇ/33a5T rfx:+UR%-< qU$X3;y83EwCAQ(\zH?ⷆ#bBɊJfmմQw:6O v#s!&ҏH CQԎ3ct8΢ )*8$ J޼̙#|0>el"~\a|UpŸ7@P^/KQjVCQ,Z&ڹhY/H6~ᐤ[q8-J`6.m1&Y԰/ѐ`'45u ?˧F[#(`u뭷: c C%eTpޛztE?&3 :(`M%(^[Z|Tn&F؋ ƙiЇ1k% c;#^E0xW;_ x\_/Eb4^x\z^x?#ߗc`p%QZ\á[C LnE. }27Z.*k㾰XMtk_W%߮ s4BQ{.Υ4!Nѹ%xԀffixI𹺖tɎELh1^#m Y?Yo+~)ſ#ȊhaUC=KB՘n7 )jbkha)~hC.(I$21j@rH~H$>>ۿ Fҕ.~21,O?O78b!).>=-t,ɭK+ ,>sm#oC3O^>_/~:\tn90}*Ik`D}'vRvKKa:0:mP`r-{Ay睇 GT/lä^-ҒNGWZ6>? O}K^77 "&x68!SgWцs5s 첲s_".x43. %( N#2 2ǎQſL[=pXf% ѐsyļcv2m+mOW!٘ ďG4Z^xm5(!@-$7q}{=J,tVrCmq4ڷWRRFyv1 LMDts3UŧŃRzDe"xlKăXV|2€ ݀Wꫯ(*rІLY3]/ ?,DGgH-5\tRWc?g+3e"Z#]t,YV5%I_W7( u}En ({vjȡNt쬆YIq5kDU^<=ch:qބPf51>=hQkoys_e_ q0kl$,p" m֎]$8 ģG*\#𱕤`HJ&e@1obOܳgڝNt.$wcG C_5f(%j=j z)g@)fmb[--X#ɐC+Fh8ixҲUſ1}sm.n(@1QV= 9K9ߢ 1k"'dN%|=a*D_!#F(>},/)-ۅ)ݷiPlqK'NQCKE\? ~u7td@m6@ڄ.H:#|9]{~tm|"SWz/*[2?(J_] Jw8hW4e:0%A,+# d.HI cDZPxmh 7;wmydH],FxGP57=݁IxdEzǣ=NɞO- j(RIETjyD@N=qpLE ^s585?^=__p ~`pƟ]SzJRR5oq۳0{4(ХZt-i+c{n|Ɣi;riERFz*\Fޥh"iā"4y $ʴؒs(p!F{Ve"H4h?)Dg0" Z%$+WNO`x^ȼ7c6珙G) Ox&QE<2"*J#Jۭںhb&~YhzL n{p(܀;><0Tϋ[ďZ">jL`&yZ|dYZ;\= @DqQĶo ;hh~hxx1E)_1HR3Dp<~~ǃ˳5efŇ$ 0GtCmꪫK-dĻ؏!d렃ہ1LV&L0Jcӹo|jK@]o:{ t=+gGBC(np#R L}6eeh5c&&Ajڎӹc%'Au.@=$EִEG1^㗩Sc|4:f|$4]H441ĊNnr[+%G9MvWx2IeE8'"Ì(1WaL d$+EhX&RE9ןgW^y)⹣l ( zphF@1?{ q'mB } }~h[,;#~рi13DVdFoNiڪ)X7o5+;hʹظەQ| _v-bZQ] Y׿hB, x ^vAz"Xk_ 7t.>hyh|:[Sޙ 1edx*ѓ:٤X!gҨ xdDabfSDjCп馛<]vu/Jc?R|A '7Guy6fsh8͟aRV8=+}Ze+یHp̕g}s9/h0>gk@Bĥ^NV .$aAޚčh5x :h%ǿjx/9 ߎ燸eV4 #/e0Infw/œ%`qR }}$5#"s"bb2L ]wd{<HÃ^5VKW,瘥k5/ā@3J6,yĄ> l'S{T]EQZg K_o!~ҿ7\FQڰYh fvӄ ρy2&)fc笂3HF|4s_< x{|7(~;^ >O/8N 9_LpLx82 hکFl&,4M.XuVh6¼W*b!''=.4JĹvbEZy2-?\S`lO? JT>K%9r0gͫ&aa7Aδ+M09=XdbuC=ZQp7!0sYbQYo0 J+4fk|#0cKTk_x-ḦxKIP_3\a|߇Ŀs`1exMP3=n epXj1>H)Dp =2#x& g0t n3?:%^95}nP6ޱAJt/yKG/tX_5tC8)0J7cd#{NJKEH IL{.#}9 +Ǧ0)״LoDI!Ԯ~{߃[9p"%ٵŢDR OWUPAMMo2&0gH$L^^1ꏼhw0<·㋥k-a{FwL5 4G 4Hef1{+Y-r׬]E)NjO@CT|Ci0|(+:O??=7HqA:ڽ(!Uo?l 'g{ FL JuCIA*pFͶS[WF5Xt?5/>sRРN[-k_s:M/[̵IM'r LY E??>n&0wٳGK7pj{ji 1ČV!cgm#픵Lt#V ۣ]gYTW$_≺CG3τ;3{ K_R,[+zdt)sXpO;\Xsp ` bbC۞ 5 1mQDKWD=+[ž_o?6bI~*R $?c ( 5:(K$3}&nM|$'3aXI&MFYxL@DY6h%kG.--1#2k*71hw 5cZ=:FY{9]R=Y0kt鋱X+vln6-'Db~hpS<餓R 3:wq|9bT!" DuY >twc zVA}5uzVſ'Fq2s)Q޽{h7d4A}.s.:ME=ں08z ixV,9~1>ſ|4ڹ.VWt̓ M o$?V#~d x>xxh`k i(3!o~6M* !a}e>8<ŕd"to_אQnbU}a~~&D-~byNUM|$NJ7Jr~nGq}3J<=!Ή#"A!r$ !9Wqɜm6Aj#S_ ~+_4q\jL:F_8M9:8LTҒ}bAtdûpJH4Ű<$8' ?b(;T6kB<towsLv|WKKse'?]vo`e_ObbM(Z,!QE$ǪhP5l>_(x,ڟ2#<Se7tS*6H:x&."&MVؙȲYVAVȽyYb#F=\!GƿE!2Ygkf4f._dm|N^ ɴ;Q s ڀs$d31RD5~}{)B!XZ26?8l򕯄ɍ6 Ӌ8酅х* =7/`Fdz^K\휔H_~ߝE2k&Z7^F1S25(: &=\~H1p1H^4!d ؑN"H3lg7.t(ub"QrHN%^)4U/k>kzu<"E`72G-.K,~Q֡ xzYǞ]r% lRXⴋGxaiP3'*3i~ Rؗ_8K -dlRRsR!7baQ,c`gpUWr!\dߣ}twv@gjyZkw 's1y Fԑt)͞UW J: ``C[5- `_/y[Ya*Ԇe}-HOtE/N\J4BXHGQ4&6xMx%^3JuxC(13F]/ bD#"h$ς$ 'n İulA$<&Oqxϭח . ;x"l&߰ 8$ CrH Ԑ!y'^s5(*3M(Yy $PjEY袤9Wb4hIi j=k+ LoKf?6Cv(J,HNb&@*| [ASaJd=Ļ94qDU٢kG|'X&n EtK2 Bq=V2d#:I5ixϳ.6r<@P@ B;f__^sivLRRxQ;٘ K{,;0ga޽FPWZ_*XD(Z/0"Ф)BaAg4pjF)L*8Y2F98$3aLX$1= !nEXف84kE#3 S3Z2ANFj9#XNQWV}(1꿍p7Y5>O/O_Ģ Z/&"vm5|>[kaG#ƿoYxjϋAu }4t)8HFICR(h0Zt#z"3bKcgaY7фeev nNϴ?'[ҟv[ÿ{=7ţ[y|ab* |/b,Pw.f [ wm4)0m늗o+#OPQ~T, ZrNJxn~ (<3 %pMW~, IH5 ہ[ʒd5 {*1w޴r[ZZh44!gIyD HBYCD1(eK7 O^2W:p>SHh,5MZ^_699Њ&T+M*]KϒH3@T8d 4>wwmý0[b$TbL^qL$GQ&@=Pk <g8xw'糑lNmܶ3 EƏXhZQdq䏵 .+,`>s;|ǰP:ej%`/w\ќ&4I!t+hXt)-$_ol xjFQ=ǜVſvǵPآolS&bQbN1AHp6cD#%&w=kȮJڋX?4~-k_Kokl#p;g)J'fLE<Oz $Թb߅E/c3WՐ3.Okػw@  mTM[ yjg-__W?7*iN/{S,plF.*\4AHWb"hS xEz|-XHGdwi]QdmhNU>E$lF|%fę'B"c"<6N.|}Af$VZܶiǏG.oůFqśOFIi<|: SE{y3ǓCz<Ó@-/?obW{]8,KK<>_W~9?K$M\7(db-PDli 9s`Hho|/rO|+r`8rG}4P'0y t|K+ύ(пEH3&"qMV4!j:Y:';K5## O|cr%~lߑoݺi8jIL^oB#I9j]hʅ@_xl[౑r䐲7hS+i$u/xD-kAOfC6QEz[9~-l? Ǟ={bEƶ L#8ڴ1tbH.fh&aܜ(LX'mHCjY^Bw&ƣ}x{믿[:k'gkhTk^G)ۧ My]޽{!7qHp&nŠ5q{$V;ʃ.#Pp{}b: nrWV'8Ud neڝ{SG_y-^!#Ch_Ou;>gτXFH]lmf|Zq`6qHkyh2BƩ;nxj1[6Kօ49OWkt OhWQc,5mȢq>í?L`R.!~w җtCӳoM4V[mh06T?@?f w}gp r-/Hi1`^Xe2cy$Sⷳ~2ue*\ĥ0MO6c-;]jU@ju>8`4Γ/p[zԸdiXtEaI iWQ\l$E zVoVVEhcmu=G𤲊NcF |Φծ}OWģ=?q}$XUR5wĦ^x㍞p5XBG'iSd̜j% .%~iME1QA\>#<lP[mmFDNlCrԔv,%[n:8FZNjв \ gRAK19Iebg153|~xmowK[FzI2UČ+c,gd=DuxY;=.@LjຬeA|ag.w;>1gHv'qʮr$a% D=X\20#JwQjma4SΠ LOAb?3?sgUN7&8w$J"nO 4YbQ||>5-,ZNnZeI/(X8{o# <ٯG ãDNZ*?)-L/xKoY<Ɵ<#c1}w<~YZ7m1~GR@;;Fj"~of`TC8VgT(CלB?,(bZ5lll}9_IǶ#f(xO=?![eP;ȉ [ܭa_`k̴Qu o~˸J@} Qg CvЁ;ylVa9j#v Ɓ}kpX[6/`)G\(AsCܾ/ﰵ^6d5 D"|##ěgwvKӝFFDpMt!'NAQ3Z}e%?TĜ~w_?o*u׮*-kCz S')U %}u]K{>q 򁗩x %AbXe n}=}>}Nӕ#ƛ\|7r És幍Y.*'Ga{G\<_&D)-G&Nw w}Igz=)ҟD2&3ŋƝ)bS_^z;#r"UV~aP6)Pas;V:"mt"Q}ױ? cnƢ}3Nڽ#P~SO5 &. &=3E|>⣾n@|8}`/:IP\݄#'*Nx3k;<}CſP-X^knR<=$:VeH-<2Jh<0qZۍZPO}qX1&,= d,trx-#A:#ξ~ħA4G9(֙b:e-uv%$kΧ]!Aぼƭ%|nbB$vL,cI`;ov-bzZtZE% <`Zm_V+j4,zj"@{ 0cY!W3}//ǁ[Z? R A&h?5%>ʮwGzǃQ*-سgϨI, _G3̪ccl<48e񐴫'{uyG#iR<SAS᪐hF2"k!gmGM,ci|S괟T0:XTO&*^}'ڼ*H_V ҞH+?pj@5Ǩp4!,hOC$xEY<LHJ9-4L_^3/ :[__Z߃/ f1d{&ߞ@:p9~hpmޛ7IV\C#`fmh GE;~BV9lly?,$VB$ V$ӿ3]Yy<ܥOtzެ{5:= 'l'OL~<4K3βwЫ(Y/!%xn+"_ +W )3 $b3D /wnD(UwBU~SC« E(EP]%X~ÿ._x7pb#3@ U$ @v# Ng{u|)(x2$]nYːT4pޖd8AR`|snw I?%GogI<㐫'hAI8{,3;! @.2--Cu/ .S ZGX%ʢrBpx h|գ'Oouh wm?\|L.V"p9(4>*}??9r5z$C] +:6ۀ|Mx 73 wW/RDȻC_}uם _:i <٬B#`5/8|KY:("qH{(y![ _EN2 7<вv?)ҳ3SI͝NX7{ hG3o k.Ȥ-&ܲu"<ڠцG+ۙ .IlA9Ln',h'*3UQ R<̷$Ɠtp.< IEI&ܢQ5] `,؊tveCFn~І,l7S[ 3&ad TUD4*; `5l"~)Jglu~/~FDq \4Ez>;?6,^,)cŒ2nxn@oēIExx2P@3HbX w_hp~E"(5pC:ٿ=RX";Z|og\Yxop֠w4 @nϼ34>^U \}mnO?~'[o}0 <=dkeDXaуkΩ73Ə4Z+a ZE)1g51儝} . ~s7X=awkX~{~%lx" u"zFPnT_+G?e1? 1uW hR8T:5weɭ"RMxJFPW(߫uTt0^{Ɇ0_I4dIY&m1U&Je9>r՝|3@7@[._.(s2 Ya#?2]{K@i eV S8^u"ӟRP}'6ޝ/i<xƜo{! ,C,ِ FCϿۿ \G ډ=Z`&-94_(ِ%bп: 4h2bkx&6eЫ,nmo|<ͱDSHOxW7G D99"B.7E Y vL<Qg%9'fRV(bjUrON_(<77YAXrǏr,c?Gk(l,0,SU~?&lDI\rY~;raZXhhaWq֠җ -kO\@o/0zWFȏ*YWsND L4H51#+65xe#SEU4EלL5Au !).j\[Tp w}|=Jbo{M3_dC֏!Ȋ 7WNpwW^j?(:r&lY|u_UB}'?ϓ q].s ]ɫi綆ϏjGJ|9A_t!wh[>d9I=-\E_WSw< ['\CPs*qQCh['b 0"t@)XJ(lw}7(l҆ #:aG.3,~Ʌ?O iVG$b}1tVD!wXŪ A1P ;&n>Jg@>'~-bse%s N5C ک]a Wd"B'zj.,44;ߺ lB'8 u"6"j5(ofPcZ.7 8_bEӧOk$J\`lEPr~pfڀ\*"-5G;Gs u}k?C\$$׽/4z[G6 m{buIl%^$ nO y)'ӈǕ8 ^-xixsg=I](\T@5xyȿB4r @mKEnfdK/T$= T5>*~_`„Vqʖ[T0s`ànSU/R0Vh@7ͨ'N|^A1Hȩ!Y h;q|DRD D'dYOqc;נhmGXppڐ+' ? h+s)>PiuJ6&NdM7WZv𛛰7CT4'އ:l$KǔL[ln2g@'I6!ap| #k##[uϧShH.IJdhL4xW."yBX!)1heϷx)< x!kBE< (\Ѡo+R;p;+D8_I6~5l(m3,빆uB`]Iyŏ5 \Pn#M`s(usϣ>zQȍ/kEE|}|+o&Ϗ7 ?M4* ?ɮQ*:z |fY$J<âY6~ZN"?6dIEHDE--GC0u oaR<ANn @*rhc&5$dh>%"K/=C  ƫ{/^ٰaC7r\Vei"<cFrW1;0#Zy$A'q"C ĉ{X,3!˧&A.4pNa^T_DquJY$bJ񐗧x}y7! 4ߔb*r!~)GpQ h`JK.oa> CiFQ$p\W9ÿ?g+vy'<͓ SYE_` 6Jl/Fܗ.ƥ n"Nrx>;$P3!#SUSEW*H\SWN"J.ѧTq]-xHjy%|[lo!n);܋hC.bOStRU7? ]Ic1St<󌦢ƴ.@.Ln} lDx "0 =CK TdЀ%=?2c_'whS2-xzWhFl5i3hTw|Kz]~u7^xٳgƾBݟn-ÌOZ$p +[1No5(/@V=0 `$Z>w*!f\T xA^h~/A5l\RV9GCo`ђEgBs/3MϷ`<jb!)jY%+z%ð&ř&Xq@js` kUH6&`s- 7l!Pw7ySYEŐ[ٝ-^:'N<_c nH82dF׆XkjG| K3C2c,r r-^`^ݐD!F3z;1ks[R{\'t \PG6+7`xM숧|\dod4tOL%%{χp Vk5~X?l{^M0h5_x.HR _$VApƁpTݫ+Q4xo u:"裏=z4Hqޑ/K6vl0*['@->ߒ\*b{9B7m[ a Z]T~x16&^2$LAA8ȲB\S"y#2S^{姩널[j3RX2z;Y _ YaZ!;&1d Ѡ,gx $?SYEH'"Y×t";r}=à67M~V,9oAw߭h(7S%LB-WW*TZIџuo넋L.!('?^;ݒHk^IFɆW_}T6B,pLqPÿ pV9|#&Ʌ "Ym)疻<,:+1^@MG+pgG5StϏ:#w#SS_,CUaB`*VRu2dM)QO1J'ŨF-`7"XA.l3A]rɓ'ĎI- %h(l$&O& Go*M4WMk+lg<}PP8q'㊆t̏\;~=IQ<+]U9A'Y9P'.T&J_J4Z]_~_+oN #Nr*^(l]Rs1 Y 5UV/ hW-~KzYЉթWX]'bu$s }1 y3 6b|6P)Oh]UpRjC#xQۯ/VLx($sSq%]& F<[';4;Tʮt?UgO~_$H6ѫW/f h41wg,]i6j\*«96[ŷ{):Hx{G[{+M ? 9LD!ɦ-xFßib QCUxd<ΟRd`x7ovd1~ lECjg-V&ZE\[~|t"?>#,I›RHZRK盏 m~V RPäH>39GRHڲIzwq%JEdzeH 1dnf_kQy u SΜ93Ʌ5QJ6\|c6\o5ϕ5<ѠL5+ ~&Bsi.-?.aWo_CB?E_*dJhV-_*;g+va- y@& q8!Wh?ExvoGS2|.ǒCW4 @)k ^1fɆBٰ飺a-*"0 P0ͪ g}hD}O>O~s[`'G;~nWAdܾOlpm:jP<,d-y^BfuaL֠ʽny-ļۚSk^g#ùl#kօ2_&ࢧ,ſ**a2Roou0zu;͆@.ĚvRZ\/=%kиS݄ 1H^GբJd/R3? [mLOhlQ޲ /P _楗^ /PK n wy{>Jd WpRQTe .h49Zz4{<$x4DŽe+4x_ãte% P-CS0oq(ռ#Gnrz FB$M :c&}DhVVZ O.p`NioCC,.\rC=twlHb L ~|c~7wHb) g \:'rX /[*ʚ:vL\5-*Y㑗hSzxo^V}wž!K,uy&\|Y?ޮViǁSQzZ"wg#RL'\1BXE@gTV\>-o?x/ܠTJ,_.E:A1\OLn1[wpݨhPu]&4}8bows-x'Y<*w] ͳe m%zVBņᇹK/UH6 ma+B\oM´V@(rҒ]xߘxE:ֺӧO?PDHDA|D_?Χ 댟(g-tE4'ruJG3(l\x< 2:Ջ8Tb-k ǏH [N"~4P:lHW8&h1-c*aBÿ^劆[o;Rz]\*3 3,5-r[o@F){xy`Kqԩ,X2\5y*)&:q>RіO6{x,Y}hwHx$ dz jCA_} }gܢ  Sl)5Bdng˘cSWH66dC/g'~}넾~•sB )mxM ք~@m}^veoA&=io?L%@Y$n|*tů,oğwȮ!4^V@O/MǗ?d$2@ 1>kgRt~d/vM0|KJh aV,\TΗC'*C=h?g}Hk/4_YծV9XE\ 1_[[> ͆x@YC=t'lE([ B\#=S+&?m/N8Fpa$+JdSb%>I U8:]Fj4JO4Ͱѭd[G2adsȑ# P@~=р;kVY0J6lt`=tC]5ɓ'{챻ロhH.q֤n#/p©uDs|'N)RM)ufCOxVz< )xWC(5od9C`bV4(,_+5\q}5#%$o/\$S=]?Zb9ء(<ao;b0ŐF~MONhT+k8![ [[:ȠXnrȄn:,Ħ߿B%'/\'_ .ٳX gîA&y"Khzv}G)-]$.o ʊu JEbޏWt{pҡQa4e&{Ԇna_Rʇ2Vs>jO]ao?fn裏nwqRTX'nWnjzSK f xǷޙ?/}r]9ܢ>Ol+t%.-xzEYu"[р(Ou%pb̭`kr3.l8zpc:5p/v*J(j Poe [[P}{j-7ޕ \1r]9߭h]"@tZZG&b<W]k4- ?Zv>MeDú vW*;v :t%:{;v'$~&g"D`B (Kra+$\<"H\ho?xe z_*v vL./!%/wOk4OLn/ y;ZVjI*r N4Pd'4G 9䏳-epKixbFhZbRUv>^z)Ѭ| /RdvtKXVnxD?70` |\ʇ;Pz~P,-+[gIq]wX!Qs7)&s!;eRT(7N'n+ɰB# gv@=%n: ^I&ᇂGE ]wl1քB*XzF)w60 `λ 6l 4 ;YG~K_ַ:2 I]C7' w[2Gc~:b܆c.յ#@Wqk4[>5Q~9h\4hl)h|ЫgQ&*Nn.f+`-}^$uE o*^c2i/VGcL–}CAc  1Pb<Љi"# O-u--~c% *|sK(K SdE&9_*I+FA# O3S!7[4xP8Pg#[gT4 8Dh =- ؁.vA&)A(YЙ>C9U\*C;bioodo|g}w=D" ?oL"IB|Ƀwq{>SqD#~(X$^KR=O5%7c*,ELkƚ?xxo(5ԕ8qݪj3fH#LrϭDʧZ]>X4Ŀ[@G-f Jp'74 S:dz;xJmq監baȢ9'd?@I 5#VyTC}񻅌֮aw\0@ᩧ*l!l%b˲q*֩{8ZElX[[p{w8rȷ{'.jH! H2C>5m:rA""Q:T4JaKm56Ac MN Z_4mYqNulhbЕ 2nr!O:x!Qy$bK6Nu@᪫Yơ{ &=~Jh-6,--~xXF}@%7|BQC>ѐ?ˎO ;?(bBUЩ[QkFgSf59ģa\mab;etoC[ :A zڍKkG׮isgh\mU&khi!&I6cAgf 0,VsJ?[[w?#-L;[ NȅD P 11?4?O R~}UPϯ7ۨ1+Y>t:DPp~sqI5ڐ։p5N$z%cþ^%' d?%^~_TnK$lt*ȅ"{2&DY[[|x_ PlXr߲ wŵ 6& :雟f2F_pU;}F͝ЂG_I-qJ]'zu&Cbl5*yH6lGV = '~h*/oo?hs̍7xS!Ik V瘃h>ԈU!=Ri2|l,j<|=&pESk4C`l%C[i& -p Ǐ& Ȉ!tUJF`R7xxb,@8b ݴ,@Oc,& n!IS[sO A? 6W(܆:tD Exr?S}S/y]? F{g.l*ʫjn|j>ZER@iߛ[[a! w?,T=,@͂g`w'0 qقZŸoYas-zE#II O/ޒˁxIfh ] tcLR,xp(o|O| olDn(Mz{%-I>ǟ<\!P}+lioraBPDUi,--=~z@.L~%Eg` !7hA焌'K8 G~9<̷&t b U;؍ yEb58_76p 85L՞i"BB=iՏ[[w KzfnK- })hifȑ#ff$kB =AR b\lH}IϿ^iuKj{ NrM&J< \|I;20x `x~;raoVc3x1֢!v-#Sdouҭ ֋se 6v,--~x/f[!N1U]<= wޓ'OYYpB#ĿPJCH3 e"90U%1Ooo+B{9xODrX`Res r]M"1o"1|/34nݜ(x6xND>~pԟEsEx &j3<'2 T^O4I&3]{czɃWyjxK%Ξ=%&xnLnBL.pw!Ė@xxo[?~o9-`  –>PBL#Gw!kAqv \KL>5f2D>ſO0e$ǚnLD8GP|pAvVG&liCzqY YOO6?L7߽P9߲Lvr+"7ᗁt?gRx0BC]eP}e(yꩧdR-bZ,O'g=--ԂJ'p뮻رcέ$)nXL.yxK/$%cO= 1 |( gu2D>ONIHII }VO!Y<Ѩ puC ,UYmgu8uPhAm,ݍ7%K2El}D>}`|g1~Nh[oo%O~>|01_{4;5,IQC(:9p R $# $.^nJIDz%9gd]bJy 5Я˕}9o5N~]S0|[[hpbP۩c%x$<&[dlx7 7tS{UMPT ZEʅT\I--;{C{8hX|z_G }1!_ ny8YNdCB=]: 5-S r~K NmF3CQz);)Jxdm曋,500UR=n?X<$^{g$>Ē -Nu'&d9U 6lؘv9xO NZQ2[:u8]wHmAf )pqDF''!|$Ҭ+_h Af-#gGdd<ټq| +Cdxo[.@O.Y00k</y#)ydAl .Bp*"DWSZrioo^j8O.L= yD'0m ՁWeHeHA8pzH)&vq `Rx?3 (ҫGP" wnI[AƣdZH OW"*4.x:7WnB˞߅fp]'s7 ;#'vu`r&WBɃoP*pwVv9U'g]Jkm,--W(~ww3g΀_MԄ,$-čXWڠ$\dHIO$fK%!K{wR_|y:Zhp:a-W@,]N _|b2c?5anx-ͱ̷ǒeb!(5T4&C$ކ{c-X9Ϗc%uEjW^yRŇ~8U,Uܵ$--kf= w$}pH/{"FE>~NCGmٌ"TW4hU/FKHÿKD!`GMe+E, eKm joopB6O.{ p5IȮ'YTjpo([AS 5p&\09։|ji Ylr9zKΖE/4`99yڊ8f^ȠH+KNx~zĭNW4JDL ~Uboy< gϞ:۰jկ~}(B 6lM{O1I@j{OBuP qn!H$NJ e%I1`C,ǴN 4槣!.yB%9!&v\&ssr7<8e]Ͳ)t|o'R&){YI& sxq&>^)*R`V$I%3{`+><7y-1Ҕ" ,JD 7iH+hzǼ:<`QRgooP=3ɀ$A‘#Gpr7jEIhNQAt9KGZ`JdCeGmqG SFC"m+*_p>+ e.WM+z zOGwt)6ɗ*+=z@xͷ&5=de72@10a37A!ciK`XA&7{--x= eB@UW]R Ε8T+*e #;&D-Hr!w8\Il$)H&x (|>Ւ/s:PJ^nΥ 90G6M\#udzR$54rX5",;h*QO%r1-?:ηP tTA^w{v ܸ>Up҆ 6lp ]4&6Yfqd3TLvԄ?PR WFE%{7dN<|xē{L 8[Z&n;8h)иS!(xP\;OPi gnB $ƛ`xIR&YC'l?K`}DhcBV )3E~V#(,ErB} G/[N(?(8KPy~0Uzhh"9%~?9~曍([--~?3 ^|('g`tAp?_`;NUD.d$"9Q^\>xxXj {Ow|h;|p W ?,eKKM=GI9cKj@dFZ"}2 <5Il'q&:CB6Ȩ|W}M>W<ŏ6mY?HwT87Y#왓ӔPc,R(o&i*Sē=&1ߔٝI ܍~98`[o{ [ax=UOgo1P([裏"ǵR = W-[rYaFKlWqkƒK2ndIp8wك>>x9/J!nFCMzԡn '$~ ^-g+|"]iȢEMg&NĮo>}"+iI,[7sk 6U,h]rɢ[[Ze|7L'Odu?u` &tedA"Fb/X! Dt`KWѐIZ- @͹*$?o=(΍W!#"H<ʃ#d]ȬC{΀+qJ lR-I/GVC| {a:]Ns;-ɞ7s/pb>vy.r\.+[[Z\jh6! MĝP 1 je$irI R#H^3 ̤EԾOAmȧ4ˠiEA&ZD ,!"AY9PO)l#4[W5x@e1H\`Æ!W4@ˮ*^V$ ET Y["8elG>"CEG1`~jx\2px8 DJf0fG&d<$K''2|smmk'!~jCV` Ta%]tQ{n#Gd$lx'aq}\' |1S P~2:4^O w "E{ d-&H#P OJ .Oiu7 Sm֤I Ԉ9+8\WOFo:B^*Ɖ6dETcA'Njj㉿jy|K*0gS{cc~Xx "Au Kû"xlX[ŏ'brfPf$- ET2WȐ<x=v9B8ra, \JH }҃)Hz`Ƅ#;p.[9zj1N>O ?%#U _B*A٣p,uhivåExtOs$/H+W+£4-f>ߖR&'N9 F>fMf }]_%o~g} 7|SJ.[[p=hL=w_ nZK-=nK . ŀ|=A CkpdY JD33>X 7ۋ&܄\#| CTtG!=EO?o#t̼Q=0.ͺZ=sO5VN' [Ts~<3o\EC޿뒱҄P#)^45AUX 7@/K?+BZe=\,-A[! P6Bh7lע x$JpY9pw@6}W>UYtf& u"S OdDΓlII? rM~ʕ!mEpLas$bG<¶yr,d9v,MI WύނN9G4 /8ߒwAiv4yӔ&O_a܁VCnx7}믿B3jY[œ^6H-TtAj$qv{RxG@ʼSX3d8MvHA9%T_6| iZZ:DR!wU`(2UI~BJH"?t" #'TSEA.j009J*OfѓF.W+fʙd*p;ژsioĊNWc?̷!HB9;N4w4~",[^z%`+_J$8֛L[[<Mk,xɽ'Ԃz]HNzE ٬ YϥIJLz7s%gEmYX$5b@:5,F1 }FHcM>웿tM]w=vRO•x@ בR1C^I a^ƣd&/Irg{rBhOc &WVlB)b;/@+4ܢ-I< (N >8$clu0E[9mq44 BVr&S# ܞ?W DjTIMKв4P7ep~c>՘ tSHGtY$bIoMf4#Jp jpO |kF?TXhD4G%S&ٝjo_%\<2Vذnnxw@N!s9 xߤx>sR 1r32R^?+Yᘻe}"4)2O28a."xGG>\#Y9Ԇ$I n8F!X&*x>1k@$)~J:}>՘d3RC|?qJ򁹷LNyp dEux(*Y' x(.Q?$)|ҏCCe}20b=%<ʂ5 YHJ ٺ7/i.<2 s ~eBX8$<$#Y'WX!dٔ K| O顜'68(%)r_W 7LXPR)b?Gs%FFd]^'\V]-T_K\l e\'T.2(pT_=7-W W _YR YHSgoB+DB ŰMHv[ped]b4NtzC!;$я83"=VmpQBB9>I9wTJ)YH~W>؈[^;7aǗ mpkjqJNM AK1K cUf e7Ndfn Ln$Vho0L)C0̇!>U#eČHH4xw RɘV^aˁ$N &J 7A&\N,s*$>>]6#|*==?A/mV=Q{3s}z<OJ֤*cp߄l:+Vfއ(5Ԁw˵̷2g2:nX~?+6ْ%VW\qv 7?Dwrxx /[{2Z}WO" eh3sO1 iY& rKJb/ H2w|㥗ob\FA꒒ ˙\H1!4ƿR%+GUKPnx->)4DxÃG&˚NyEB6Y(hHט<F7)VgV +cPR#.<$SDS'"YhՂIJ(-e2Ki7΀C>hrYxX9>|!AnxWC'ŕW^HRcxL) @ɛn ȽDraJ6Y3~RVnD||'qw\Bw+/;(L1 1  ቱA<}@(OܪK+[A$ ac,H}>V:zwwCSlL0;/ ~cU/=ޢt,CIp|&$^*#\p%-3L6Mr-;߈%'w 7&?O%Yt VnWV-I7c~Bc |}n8s $?U.xC<0n`p3 ^j!-8܂> Ł;-Ð E Ȗϛ}wK"n dY΀)K N!{"0'|p!f%b"1dˁ>&,]o1).앿.焸owڛX53\QW*G>:>|&NCeϨcrR<|N炑z333f5e)\m4-Ta~?sz$'@ 7\\s )B.[hpjq{K-f!N~΅]Ó rnVT48FQeA.'lu[dP&ڍOL%R]-q 1u> qFRXn+g  L/=q Jz>n;FRw5LlgЦƬIz#N4[ܥx⾣8b5x㊔ O"*/SKKa*gXjţ`f4@pĆTr=T\j=.Fc1h -I-e-!WX \pyx.PtX,ɳVH<X>@y _'0-*ܭGpoElW ."gOBVlkJRgˏBWb|_sN'g|D4O9,S9xx$/ȝ~Or|^Mz/ K '2b6|_ aƺ/eT~2n۳\Y9x 7@K|g Od),gOoL<)xZ `7Dw/>Ną B m>HMc0}pb=D5ঋ/nv&)\cLS]9j\ J뱁4BR[KJ=62 /GbW>"#(3x-US7?{;w|جa! @7 7+o6tR?~\(X "0?OZFUΖoߟ7W4$ JdD\0!Ki R#§d@er tv{W!hKǽO_;Kd+&?")Afd U %8(WoG`Cx3944n5\ן+)y<,+A[`V7/~n!7Y hpI'ePB~I12Kaϫ,H2.VR"C|wC`Q $G)x0L4GvW^3~6C% enm p \IoŔ5$/r K*:6QH )GLӼ8X7Y!Kr[-bjκ\il5GZ LEn ᆟ'^᪫ʚb<?ytǸ% s/E6k{ǎ: 駁(p^y>y lקK-lkV{Or"\ .V"= ;2pDGa9vM8>Q.G;?m LV%4ڎX;@6" qgwm\9ˢ$Gc"Td[z'orzxoqL`Q":&lE+1+=! E<5x ̊n_ 7tӅ^(u ?D<<% \ↈd߯e{}CM-\' X|, =D ig͏e1)7 w}Asn58:ULs&kA?rmGx(e:Y'ʱux6`R s|";:^ T_M~}3^2j3g\d10w.0 oO+ʅ/"o&ޚG!Var <˯Ÿa@:82Q%9kVxB^?7HvOng֭]./v\ӌ_6cS_+duH4qj[G/ќTa-[Ў*ţbf71'1~,d[h /9rMy/[7|I{Y+Aj,xr4'Oa% }Y:OܼLJ̲zSMI +8 .g_3v$z\]? $Q|DA/_%y7ߒ\!AS%m,A&ߡc*WIx(W$>֮Gh\ޟ$ HttcYci؃} xiܦ}z4;h"IH $oω*+{oȌ?H8ˈ~qw֗coݲ7KܛOg;ɩ!yFx7 ?D|r:(t[CA| 9ES[j.x|xi ? ޓΎV.֠G>ۍۓ=-f2\T3&Z;q ɮ~ssLUx0*>zR?w;wxNۆ^k㡶 xg(d0.2mcw>܋xx?ڞg'ߤvFC[ŸO:~uQ;r:j 7ǎC5a"g j:Ԃ>cl vp ]:i~|ydLiPo!Z ga|$9Cxį%{NߊA&ir|*z\`E&w4eGxЊG \:Eo5Tp/GoL|0{+r\+M@ŸO ~3nk7|_8tٙcnjGUıFcRY0l%jlٲlWvސuh%k0zBZ"aH3_9~e]Ca<ϒ#v&wRi&>چF%+Qh ջD0Z*4cj~fDxrA̳ l%d}!wZ;JZRC^掭';$W 7nm) @ eqJMSkb՜]K!pmoj\Us%Ѱ3 H'srr=)&LIqYu/ Ub|r<[NYa7B̧naZÌ >Ev:)"Gyx%/x{)r"&ެr Do-XZZ& 3gJF3;{vpn W\qn@dUk:uIYQ$ơل2mA | ^[zno#s")eK`pZv{]S#HU̷\_4|**}T >H&T|<3WR!bǧݙ' އGBpA77x#<,D4"V@l'Am{i!a.PPVзYOل?2~_K q~ɿ뮻 Zq.x}i:Cw{ e8j2Uy|YikFC.T7v0cߎUXj+ݕ8UXA 7!W|ϟ?;ggך>$(҂j]|3'MR}Ipƛ]a׎ }>d")C2% bw]՜P* R؈y g-<%Yc/_Mļ'|Mg0g1~{k&p5ީ^A$ ?_J=^sZaaapÝwyjcǎQ$ex ̙3P{<`ޞV]qěWf`a{@4D.vP0ڌ.%#!:x 0V02A^oO >9;)6!SԃHzaCͧEk㩷N<joP^1؎'z@#mu$|Mj"!]+w|!P :yQJ-:CK{\^- GUKcDvz=OT+1Pm07VnֽlճП?S*B5~a<?Or1E PMv[_9(_ "XÞiaکv&xGp2gXamX@TJ$\1 ?FB'(.?7#OH2gU_ޱ$>j'a7oHx9>œa^`yJ߲щ*Vj~+ު: D]0"NB[M͘2o   &~=r6,m8P᪫zPNz UUKΞ{j䮵+tYC-ir}i^;&:/$%j5DaFobN)?#e\`s}4Nda4,;1. 87}AQ1PUF|s%;;9a Y ʚ[74odu 'z BuMv &o P8Ou,} _ ǏS  %{RjU,?NXMkOS+a5zh:?2„h`,}&3F ?R|猧w/ݞzP؃X!g!Ċp0M>G &hWPb!z+ӉV+ߞ1lMI糶wː*;I_5- {0X^-/{NA6 q"͏/!/P2NXy#6B.gۅ~%TO~t: :w;:4NX"H *9S> ()ROL&<) 6# D (x:Ux[6!o$`W' DuW(pVm% 5nK.IOzR@K-B,&M8J}hfx|J7M|h`V;b-PῚbP -ukMW<.Qf|xPj2crt|%xBsb3zN mH9V @RZ;d-)aE2d ?. a8LϏ׻y:+n-$}ÒO 7\qZԠ j??Jb(w,=x\_PO @ *ߎߩc(ĕro4+<~Ìe *bTF+=j VhEP|Mo>m' U ɘHy?7W:T7?g{AP!FkSՖ-?_ jH=6lroV;R:Q "l$[h@5LOfO~>цB<[v^GΥórb p桁2?l& ;wL bpVm=u.h]H-:&x"z_/L|^ORͯz1W͛QEh=?N}0m/qT xQw%3Sxv2Q }hUD31U.4IAE2>xF 2!'$'D|״7moUDF'n|gkt?Ti4(;?̟ ]mH1)HJPg'5zN/~oπ;#A[GG36 Bp{dHy6bk˛x쓠x':v弽A]{#֗:UX6 <(t|& %Qu45}pرG$.в /R׃= 焎VOt>"҆Ol(An-1SË5h=˟ΪVPHѲξ_#v~TNF7p0ъ#`c.ݞ S0|,SI&Q}N e'JoHJx=)U4eaw'7T Pcer/WSXP5VVV4PO3;0| 1_ɧޒ GdD(V+\#>jUD߉0/6Kj4~v|eW.9vƟjV|Oh5e $Ym<(*c4Y}r<{c"U<ѻڠ$ Tz$ GKnCԿi|ECJ4u9/\'c~|$[Scϑ#!~'OghLAwݫ-`b 0?8˨ ÐXM)U"^x$e94e`(&2;F{E~K ©ϫo- { ;f4>Vr~czBg$\ [Wgw5V;e5O4A# # ?+q3?ۚ>MBðn#:Y :$e_#)c' f:?OioV3T,\{+&|$>tx{9s!LO*MR4?O4 g*#p_Qb1Zhݻc\e::3?_F7 ۉMxۚ -N;lMI!jdYL6/k1&&t6Hsx"4eA3V(:{Mӿ%w;u~͠9SR7و;i|x: KG`@-?珚PoCG^=^qHg@w"G<~>Nf|?},l$TwunXQ|6erB~m( }D0ZӁ>pxL' gt$; ?@,gv~w'9O'?&i|pvXCA!d_Y+1?gB ^; [I ]A.h–Pj3K4c:s5!?#tv_0(J(~7E2I;RĖeQzFxP>FQxJU q \z]B<:LyjH,{(I:~H?ym}>i|qX\\V/Ίn;;`=L+s%Pk/T}!c?"ѠF|%;Gp i0R9?7W!p<2㇭0U55> ?~-GՁ8xA %a0ǸQjv e2K'r:?-BǟHH3z9||<M-rQbS5RbCv?_%1dhX@ȐJ|xPIL{y`!y&r<ԣ B5?j2)̧$% NA924,|$ KX=G->kH.蜅"Ϫ? '$?7r0?0! zpՁ[(Os{ѐEhqNjGo/rxx+F=CTF3xT<[5>A_S&ȸ\WR| zTM)Rnp6cmmg8O_2(4> fKC;.Tk_ޝ|"LNZF@ \时Í0gcT$,Gտ1ÿJ.g^rjf /h<2.`<5 !kՋrYtdE#<#-90^2[㾪ggMї<`mȃH )M\d3sŰZ j;1QfȿOqpsS㙺z~3{N-B05žгϿ'~׉HppK  zޖ#`3s$)})y,8"džj{ϧʄyА^c@Ÿw ?!d,|%\gù +<{` XSMNJx:>8{{a~e4o~Q6~vT#jVzzv 4 tGy)f)Q=R oGBwF-6I1:* #cPS'!]q9-zx$ id}dۛܢ(2g;̡Z 梅?2~6%l?WhNwKuY,^6ȅc&,#e~.?~p3γӐŨOy:4 ~4|Q<-moCrwo j_Z/x<?(~l(Rz5+DR}>%(_hUR{0dˑAg@{ *T(mjۛjJh\/7 bL.㗿/-4~WT5L`տ.۟`=~f-}>G-ͫD?Ôe'^ 2!_=K'͏mTK'$vR@jnI O_x2A qVE ?„;ߔ?;v?F׉O|TQ=18^up*&=[*Cm~:@rJdI%,ЎR}֎G C7:ZwJnQ(/!ܑux_) 7 o Gr xA~{ױ7 VA2pPX<'  ]O i|ǟȗ :q+u܇:D] '#ak |RF 88^{~QƖJ0v}HErLCUEeUeY(l1c/v'~Q|o$C0gf]w>/ta+!Aܵ(i`/p<⌔F& io:cz[U 7n%(T ?8~I:w^i|kr9C5k r!&xj*d+FF–aXA4jh?֨.*~ͨ$~O*(~|d3vL"Hhٜ9N E`qҴ#[N$`%FY6[UI u501:" ,㚤9\6X<%r}Wk:?#dVSzp=p޸:8d> KQxfZT|&׀:o)|q #tO1ﺃJAR%F'f iƔ `RȳdANx"#!j|{nA9;[Cqu"H6 #wp҇ԽS "D^-aMe{Dq L*t|1?L)8?ha﯒nDFx6~4oZs:󊧠16~7OxJ*6 ]i( ]t YQө7#Pb>Cz:`G;9Lca $/7'kB{% 7A+@K0>@zxj~D҅ 8y6_QX ”x 0YoAy9{!U4>I [q|WO$O C+D~gTzyY&i:?zZAQ"^xLŠNS'7vm!jE%i 㫇Mτ?~/owd|:j:AzCCȓ$P Ǧ6:tOJ__/<P&X_ay_mN]enFt>p^x4t});9 {{j܅㑰  ͒sB?o OTO;8>J׆h(OC[^VlǞ/C.Vf4~aF6""t#m)$K:)~9 Zkna 4T('bYr#dÜTPMRyt a9MCF+كI꜔M& {tVqڊ`A4BmԹ oy'~UNm3zy:|T/11O3Hڱ-z!T%U cN|) dW0OUx&u^2147,mb(?~]4p(O:Ǐ' P=tJWƖyq≫Й]"&%lBmy" %Oxed[ۄQ.QdSVQrg9 c -)S Vz'lx#S曳=`/O'6i$ƣ5Ʌ?|O: Q'Pi;zKaQ^ޡ IsN͟>gۼc}yMdohSbTP9&Oڕb0[_?\ Kφ/K#*t4<s0XTG$$2 C_ä3 szх'+`}&;$3?WO d&gn->jO{g"/]_qGI4LټML8S2d[OQⱒ35Z_<::NΕ:!@ ?nLvވ} ¿W` ;#)bX?~FV_|~z {,>;?w)QN qhi922YJDAWO 'a+\c ,iu~ןռR%՗ZqT[?7_5?~\/B*30k0O;IY]=4|X&. :2*~HTC X\xnt[HdCWO:ڗW2jk {%xb9W\,A5D7ލ;Po3Q'~* _ ( _3ӧZze68 Ie'$ sT#* Þlm<|*(cFX|˷r}Q/~Xookf{[_ʰ;O DS*=gӉ!O_NAvc"yb10JşG1'`|>IODCx٩hTO'Q~^yQ8n{EQno;v#Ԇ|xޙ,?~2)Ϙmۭ0Y(IOA Gd,>{6JQn@׫զ$E]Nٛ50>J~5hpETKZ#K % ,_}5gK.8ΰԠg߮Ul\1XuEUaoaq~ޏ/ $acK E|)foXfLF`:]ZcZ&c"V_;28%XgXfk xl ij&ADWxU+|"2!q&C/ӝ7,{EaFK:W]2>O;_Bm0)*11/ԙ p䅍3\h?"Ͱ.>`fm+ ^v.W.S/q 1- T4|loꉗ©hIBgu@  Urt4^FC)`y!HsH_u]cpQ\tI sw0#v p߄vQ*42X>ϣ3cJM_o~Ƙw/k}ߪܡSz#]'|DNՕz8#FZ0L__"Ufu1&qT;o >.7&kN(lE\-sAǸvɅ~,uv-{`p.W131[%Z"ݿ/0DçԂ[~{5Ҽ˸vF6Gt)9CxJ_O5_7!˦d .zxgF%"P b4oْY/<\o}ٛqSU)R+A0fRĄ?NBQ6)/,31 c_Ehr6D[.p-pY|Up*7wfcU|iu~Rs7*6ajxd[1^]!ly 7!svr .dn`\LzvⱓR8<9jrx(Ń7Fʼnw} eф0k_Y٧WK&$xK._9[/ ǺD.ĞP'N^k뻒~wp{[=,P«DNVDŽ@ެ&foan*ҳ~sJA4~g=ry'4Z^/d]!PR;G@^덱@V׉?ou[_ߩ Md ~x@MRGf E- #}"(>]QgZ]wqQnOhȔMVBGa5;*^l VOqAOFNwę䫪P3hWJoZim!Ƌ3F&v\f}%3cYߨxFR{}ZC!ߒEiBs n5v/& H5x]Ž,hM ! !ll-]Hl ڹ(gif!g|8_xea5p~78yػ eڤ 0Y6pB5GJH__%/HOv ݐ*A Bgd!(cK0O%.Une0x+p}codل?~ѷ)0r,ϟ(r,|w!g^m-\"1 +P/['lj 'gLv_/o0 Xr'Ug> i>RP WY$tn 8eP7WD!?H?BCjO[ 9߁jY ^߫v(̈5W#)*~|W!Qodf2)+U;Ҽ`䒆OO OC񦷱L)x$G'HHM9^ 뺽Y]dy{CB |[ v-Lz V)lIov8d :Yt6'G} GA.n=yH؝%դ]jUy <^IC YN)&jSjB,&y3[& GK4/{}`?Dð@ E *]hVȗ4'R1߅ŶDD/^!u\iwM`(>P/Ps(H<o#K  fhXhX"4B2QP yP]^;dm/PhG~h ɆaM{cb0 %/3x $Y@.OVߦJ8Ps Nr`O6g3[ )õ ?|ؔs˰zb.F?f |P~O`.\bU ὆3nGg^5; /LC~&j?~H#?4[JfsߜTE-]8T; EҵR9fLDRtvwbiވ,XMKfJةz&5l ?A%[Nj{/O'9̧p|k 3Wщ睊xc xtj!W$?|~^e0m@a^^ Ӷg g:;g3f7׌ g`BGO&Md >.6 99"yj3L=Sٚy޸uݴ ڰ"ym ?q kSţ|vmc7~s6~FN?*1 X2_j2?'Rs$!uH4q:3?}y|gV'㯆Ϫ`bAbR"YY;2(@ԟL1YP^@Os}<1Cy xr7'TDlm'O>(O$Χc!lћ҉x#g)Z &'Tħ~xZs/'<*3)*A_>^< ~p1'cz=}(FPuS`sB^x^xD^oG Gr-ݱmބST6z %3TpX[?8~!gs#%ZIʌOGy95OV]hGhP<ɢTO<Vg/ 6Ǡ[|}D_|]P#hg_WQ_m!OHεhI0GbeQ S C/x$A6SЁoG;sv4 O$|QT%4h!36`-yQ O-{O?H֗"yjf+ӫ% I.g}<1F ~bFC!nF"ožXN( 0nw~yn~v:/S_6nJI )ǵ )2gZBEAU-$S=;jIt+gkEnPD񞁕z8r xedզ(JRR\LE!e6;u65"j*uϜh)*\q k}%{N^- 0{|V& ˝Q-]Y:ؐ\l?iȺA 5>vFjv"0h3M0,g /ݪtJ450 V4\I_7c2?Wi㩄F|}:[b#/*gG4؜:i/-+ʼnU h+ ;'$2X_ ?C;0m=g`2ODžF\;\` |>^.;,_+z׫xzxPx5{<R ;_>L7\89dqϑI/qG”o2d#J;=L3} PSvxxƧ< |GH潾[K]1aTTk(|v>c~_c%s 5rWXb~脆G%('Gc~*:RޔdvL{+,,θQ/]IGlŸw?֠Rq nEl :sg3%+c>#{W3bW#c*Ei/z[~\?Hgk)P?gJ1cG&?$^l;s2<J;խ)2Т)-FhCC%NY_mڛd}x([a6 {c''KQ+(@(m^_4S,-(CMߘEK)ӿY_[ۆٛIVP | ^ 3O;_~ힶC\3ȅq.w?PT߅;]2z%'.;Y Pu7tҗ?XΰE/YaHW+{fzZIx `oL[_ծo @EHT+ O'?FyrAg.PXz>~R}a-t֫9[T=R]=E40xk6ePUAk&`Qgm$25&?#> ]\RfE5ZXmzn'eW42(q<Όmse9p*G0xгIS9'/X_dWJ8U8껓Z=AQ?o?]6A]8?SWpIo_om {hzu/ zE]!EZȀn uW{^_$9%Ҿ2aیG!q/]Ưfӧ_۷yaDZ0x¶gP 6LtZ8< Jq֗قC7 %r{D'ΰ4Q.?- ʳdJq(krA,ܚkYog3uOV&kzbðnS1UxhoWO\'ћv|dAUy<@ _#2kS ׈_$9PW&"8>S ˷<Z/E"F`] тbyLSP5_&J )<5w[f^߰gp) ؂$L.w^RR$4`p\/8:'n|+^ Tž}zl?;[xס&[x |RËOA3?_t}8^Y *>bogKFn HO3,F?PDGxD(÷cKq/LsGwG`H0|c #$Hcp}xPFL}7#\_o$/B2?20FA}':-'2fӪč}sڈ߲zErsvz}4hV-T0+t;ʑ"jF'2m#NT[) T-=2CA$M*ؤhCI^SAHy>h>mո"ERU*<|&u/-o|)գ`,(}یp]?q ?x^~&6lݶC-WGlaҽ'wN^,9{"{BWOR|E$K{0uW6pZ{L_wt,96G~^)3n %"laR6cj;[8~~08p6εs"^ L(]㵾qR __Yz8wy#<S$H-w% Gݍgv*]hƷ0mBT{^QoNQS;4 oPL*ð\󓟁Lw\$> g > *@LAq/#6  DbP<ƣo|VR\"v}WA OT{c[q*"{۲&Y_ӧo6/#3,SO67wk:vʕ۟68VkAk6'%aH' <MZI_|KB8']uѶՀ?xQA◮o~jo|g>z$T# EV,/L㎲eB%Aa[_!aX쭘S+oZA5<3*kR R }aTyalo8yn[yWȠ/zuUOh8k #m#>ol^(L(;&ż~m입ƒ^3v5 hjf}[7ƸNa/~333_}kkۯy}nL9^ŸD|| QO3 VoX?߯=tE ;V37u+vFCmgUO+"Nj'x[~|À_B"^6*̳ F+սjmoSP?Oz8| uǷ}L0ݫ &Wz#$~șGeK ¯ZBo51)LX!Oc\i<`o5' h<u0zB6~Z <Z㶷k?7'NxV4tnp饗Rw8?j6Kv|?6~KJ%X1'e| 繎-zKƱ ӗ}gkbnMz؛n-|wit~gd,-F$k\Pd1cxZg hzs9d S~7)<UcS15 bT]?X+'t>ӉyX sˏ褆dÝwމ[5t f?b\Ni *" 0hrig_?^޽r^{;,>2uѭWB&u=~_n"zyn0WY/ܾplŸE`m^^v>5!c`hL͂0,^ўOqMlwA aaۣ sTGo0 8׊O7?C xi?-sߙh,@Xp%r!{w2rQMl!t}yGr"}\?~/S2hp5#dz|U5!d_ki-LJAT{8d9ceQa `bD=l~(Îo6\SZܢn"zJߜ%ij[%E 9z< Ə⩇?R8S6@+w_%RDCDL}Ԗ#}9o+^P_Y֑zx{Su-2V/,N6Y  ox^W 5^5R%c|' M,%R>5%~t|ky-ڵG(<Y|5se2l^cqm߹ M4]/P<ڿ<JO}˝Q^za*k>kpZ-貈[X}㻪 o)~7&x11>LݦKDžfz `.Q;jF/Î@a!J22~;9?8r8 [ jg⑐Ř!o<*~?v??{**pv/sPm)/7E(*ģEF=Y 7?FH ®/U"OCp{ 1/,7V;c4ex+/W-٠Yzmx׷KZ jk|Þ?wk|C \xctߝ#Y{$c>%w O,Ckp|#,vc@| 0L#H;CoOu ~>Q s *7&#`a|ICgM*y BK6'5 2p$?xRoV g/WZ^İ)o<2PŞφn^u. 7;)q 5 ԋ6g\x i l! a+)NES )<63CDCתf{6_/\hM[;_1JW0w ?]J~<40%.T >6«h:LZs;&Ǚ-Oa ;&}gØ kov$j5-- Uz,0 tX__Ї$/~-٠!/Çy0T!Ol?EeE&BΧs<҉?>3wN{~tI _O~ \7lR_b$=e eŌknCAU+">- u}IQpLߒߦT#13Ik#N"/н0($͖TrFGtgŸ{-ƽg*".r>]w pw篧A]p~; %n3^Ʌn Ʌ{g-'d7( 54r`Do}%UW*9: 2A`!s+c)hK>"*H*$77 [_XuUEjrpqJ9ӖE*dAI蟟ԧMoz%٠(dop82Bd 7WCӷb6O #67/;F.PMӫnfȭe3PZ?||i2Z=62浕CoPUr}{kD2X^jKX71(Bɡ2Xv02(s<xޘkgv8l 1z|sby4P&,TjjCPp G S(ORz?9r~LhuRWB\Ȁҿ#O Fg&M~I #Z4҉=YR"f'Va5gg㣭N$/ƕlvK2[tޚsӻ]o튕 7|{N|4^?v|i?}(׺CYTKRSJ2@\foMyFzm2A~bmaLDQOC{Z߆ƿѯ"@['۲J:UO>fgg~h g0I`F[{΄wX o9/))! dz#>߿FTgۡ'n㟟JXLE 3}--mnlބ,']7ϣn0.o~L]6dP=(I?JImƶB/G2MIQt,OQQ*A:ِtqBysY$>_oǏ}ll~fv%< ~?ᯱA*qL;?tvK>߿%dX3 [[?#^{1ί 5esiwronfYf+8#jY;ե%s@u,XI%pJC¿HjH9$!`d\onXxԁEȺ3?]{;5=֓S}J/C—w}1CoJ hH)¦-7CD/8^c%}rJX_BgCD<|-IPBqD J⠪`l6>Q7O ũNO(%! 0dP:t ox~_ɆvFĄgR’+ ؏&)ߵc ?~ߥ@Hv^DftWOaMy=3խit@6)/Y({|t6Ca Yd{?2~~1C}27v 2\ޑlp *:zx$MV;uaz,bmy :tK{(H>60BL4`4vw;oj}Tս.u9W{sZou 6A^_㙵ט0?C ݲ{v7}?yC_?E H$9Hqs9v5#M|v?R<&_L7֏3e;rEHmŲ$<~<+U < !P6>_IEom]BfJVD84B z,ǀn K%~ӟrկZh;摌0-_}}ͫb2lu]oӀ\7h`X6#$~1rZ0~5/ə{/lCKO.ȐSǸ18Ѳ+LC ;ߨZoE{dab> gKG/{u"?CO;W`UF~юXk3W ُ#4q?;O#E.m!$2]/ŀS\3R ]36I6XpoM:ミPUF?1 c?klG~yg7L{&i{qlyhsu߮.e{k^mwE/f{FYÃ;  '㖤XZ g21*lF֛=&6@+#)f0?!2h- 8s9toxs7I6ğAgG oOE.%rbXs M3k?7jhۏ:ͧnR{"l1n_ƨx$?.DiJ61^лei+ r~٦U]Y0ix(!<G3IV0;zzy< <ӯRсzt H{Km#Z{\atɘlO~Y;ɞU }<;4.330|~~ONn8 (QasF?ANs~m_?#]Z=wM7?WxdGoۏ4> uLjw_\yðe0줘A1S5 N%.]t}:ugE?޲d;x!Oc #z~vb\8S1dmi|6mMq/羱db_":sԼ Hg_u#mvvHg)MM_'\u]WLE ;_tvY#.H,*LO=L}w~?VOT D|7d[M6Ȑ#<1Z_G?_iu-(~k;ۅxvnte,YR'e$%#fsc, gɒ2r)Oʍ<;|eoKxp~ @ V4xOXc3dç?Gy _W[nLxWg`]oEGܒ\xNr4ŰsK'xO_KW R$xtQSV?yl\ 2j,?7#\Kw;#wGPh O N<*a 'W_$MUxT=q@{G.:Un"蕫Ɇw~{dÝw \Lr@~7K{\@7FGzUœ SR=>cO%wGi/N~Ĺ?K\\8Ʌư/'> _؆xDMM4?m/8k~'^saY5FKnw!W'HNg#̊RwkUƙY<\m5uOcW#>@3@mg%L. %=HP'_굯}ml#ƷRwxOsh:w\?v⺘co흙~_sƧ wǞigN%_U}~aT{'U>>H%#2B;Ao3M KQd=~|¹梉5YF7D7+hJ @// d=Uxz Hfe\Xo]-o8X.^B:6p" 0%[pCb7RɆ>I6;waP*?gǿCœh1O̅OϮAjT~~aEw짹 }?w'P%>wlCz؞띤$؞3Hr,Mn6GL|wwge<.q"10\[3Lֱ"䚨i!'5aP*^tYj,1v2MLI痏1"2D!!NğI .O@qoUFeЮ"%5$8Dk&J6|3y=$p/8@*mmArǿYuڣw_B ,w`? Yɮl6?g>|`pg6&QZhwTlf4=A>6L(bJ4#~D[vk#lbR9cǣP,1هMmmX¢bok"@ aK'sb`y)7 a8tM/㏃d=V;߹Żh7íE3 1sߖBl@{Ƴ]'+{F|1[6aA*}U<"Z^CJh9R<%e/?<,k4EA`f*ihߘ6k%G2Ev2>Y qםCjx{nk{"< כ_z+_Q-iHK"3nWj NL_QW`=5Ξ=%>O?#$n0B7v<;T1|_o']5Ə'c2 Gt=+[TI!TNƯ)k28Es{׏Hl  F=1>n )QE:@f]wQ!~f>3CşGʗᨢLlͬ7kb7ɑ[aX;nH!S ae F80ҩ&x~…"Ɇ;3klsd6f5wAKz~ϖx2RD=yO^.ɅU9)r,+yl߰}?)ۯM;4uɆ$o5#jnD\Lx`*A)kރuVB\'L^Ecn uqQ!S8Q!\MY\[%b'3C~y[mQ4p3X!Z_ >K9jQWxkQ⻡xJTO.kz`<+7l|ocɈW<ֆH4fhI֐u"SiAi[ap=xsj}\5fUۀ^XT7q~gzmOLI`%8TBz F:lٜ$bjC!o.^~_~5]}}xv]59_-|XWY_Um &xjeM1<+ZPio2yOH̻KfPW~)r-6Šgc̯Qeכ12|A+˹]L&' d2$r!y ΀J% !dû.c>f4|+_7nESކ/WjH*IqV9bk 8/(o; @)[Tpd=2=zo?"wCXO>o}׳ۻw^FQYa|ÿj1!Gwl܏OHBaHV<+\ ֻQr#5N.`˽{DA+u8]"~׽T'|rV12?/ bc~{_n$1dGG>I6Dܹs [*cn`ǿh<@d̲Sp noi?̀lf?rcsO^}m.\у4jd3H<5A+g̭VCGj[{kcƁ=41ᱩx4$Hob'y5 ^x|yB?/n)tǭɥA[&{N{L=$NdZiS C$bCz3gDɆOӏ<%x{[nom k';-_Vǿ OO0j<_?x|l[U[y}g} .]O<)Z!ǖw[768}^{xI.\\f.E?J 8߆37ַHdkHxަ pKx ȅ' ržZxO^ɲPbCz~~Ǐ8͎0Zpj@Rua"&#\ze6]R D2lxblضO ~OovEG\8}̉ͅkt:{o5QLn)T8|M-/o|j_S!2|¨c0t.%2?">!1ZYVl#ί:ԯS:3zSx c{v.Oxީ$~5}<}{%Æ+W \>__ ?,6ߦ0"hw9ܸkZyh~I__p;g? s|Ƴ'710Q>>~d1WP&?r3=^,~g5pD2eqe)a\6P-F,e ?#z Y+~~7GɆx'Ɇs^O?|$ח杽;ŸM 0RF]i?eFw~S }}ߔY#?Oo0n4/kÌbmx A"3S VѤ I6G?rUg 2a3cU{WI0lG'c5ݾwt q&)JgK=ٮG?iPbgqNN_v?A#$<|-*U*c˳ղ< <}Pٙlq6mzk:zG<̰(#DIȀ#t_XTX)}@܄$$+$oļ[p2nm sz`g[Eo?ٖH~6_*p={^րrj90ưx)^?EF#[j1X0?y CXnN\@@&Q 88́;QOO'%%o%?9||]-_9AAR]d #9g[n_'W]oKE 0%\?{%-&oߜĮFс-A]ECn@"1 IxA2䐂)c-"nlp<sO2z3("5>a0.-Crx26d~  Im&DPy8P DvAT,0 N%z"Ɇ~hېQ'7UW(/Usƹw^ٮPyd5,BA<2l|WOU8I❆Kը%1!iC|zAjHfo[C1;0s)Rp9]QOAT1uͯu;wmכg~G]ob ϐh%F%{ܥ=Ğ XBD\H￿T!6)5!m#;H ڏ:n.^zd&ՖO3N5|ZAud/ |!c} 8hbnh#jז:w;[t'_-y;>+apx5fwkכ6 $! իWO?ªEDf`pʕ0t8L'L3CMkHA(}`Da(wwO=ǙI _җ_oA霪`7wfo?}FC[Y뮼3"< @ϔ>n}}M2 F=kwGiMǿ=іT""n]M-xlFf'3'𡦈k!OvL- =dŜ_/ o2ːl ߁2  '3gdg?ه~I$Ɇ׾x+ ֳ).}VݣKKa'/oɅ+$޵w50$dcݾw*{Na(xiRCu#3Za<81lXs"y{-08d߇ָ:n΋XFN<*c#h.z*ƞߺ6mxBޤ)t2._ayQ!' ?>|:Ɇ{<]PMڳ3oߣ|O`7?SDQ0e `Ʌ7Ě<+ j6O%n}})e4`A+Y lruTiȍvоtxЃK<聉eU^_ ip<h1A%'ӬtVO`ʶa|םX;Igx/\;zˊlv~4Z$לgXA_R!`oSx}aFLu9sW~Ʌ /x'p-i~}9{.'A;W⑱Noۍw[?s*+Hn5"Tte)%HMpvp<]8E=ݝ_yz3l`] QҖ } vSn}(0 (MH) dGI6,$}:Ɇ{.I6?޳>$Z 5,8a W_|ÒYxËW=Y|ݾw"қ FTq:C[Smom;~qNYo^pY"kjaOP8}Ϛslc$ׅiaȓG9cx]3xwz#sͯZ&e(y/,@VH$?mH,C@UX"08!lء4;v_"4Ɇ Qs>e^=`.On~}w#C$31 U;:$Cm?|wcS7vawŧoŀcďTJ+RҶ<+X/ MQ_"v15< iRʖX,c~֛@,׉$gWpjVg!?$BJ'0`H&!CbɆ{キ/)t0䜭;1slsW5 ǿwn`&/&M4+W= ⟅ {~x^sr|;h{ hqj~)bd]ă'x<dh.9v#m޼MH{x ecs EKW%y~ IIj7;1;1D"%o~uI/8*[E{0MxnX6J. OH}! ;-O8>=4*Pt A*kǹ ExDX k۝O]_wg; o_\"e-b+8S/Xxz lMh AvV= )WKm\_HCH6z6XR*#m&$*,n"p$P0 ڍ^)~`\bS>L׎1sR/e!O^O^']=wn_d_rj[Sb0b ۃl0{[:K'#v;L`n = xϹeݦ h; '*Y #6{<fcui_o#ͯ]3r$SbbK'\HWD.S wF,FՒ PݾbY xHF8EvzjީJx;p{CO/ Dl~1^{A="ʓƝBJ2#-͜)בm`vփT x*0?zT%+kۦ7H ]#D|Sv& @%DH$z"Oi=9 l8}tQVK_[{Npehx-.3?uCL^މ3x}[S=;E]`Q Ո /F.//Z]+lKp;EMdm<1x Yem bxp:-zqhJwe䃈[X<Cd7Ab;e\x|\ݾwE<"yB\1*W\xΉ5_FW d"+|P#nsZZ(TU.-ǖT訊5ΏGc@ގxWJL7h@~Bp?(,l׿d\$48FwNձ,\y|4]tgGd~^;E.:<>d~xx ::Ѳ a1O)ӛ/3&DP€?c9 L+O g~aG$b6+_JrT#?NcK17/HhɅS?~oͯݾwhϮ zQ<Ϣi8#,V hwwg>sQ]tbuli%\ǜ5X 7 ơ'xfSeui>rfu3>KcyVmqWWh/_|A ^T ʑD*!% &!HDRϹNO'o}[o .Kݏ(Ͽ5B΀V >׎EJ%y4A0HS!H$|G}Yw%^x|koqǞ`=~f.>(kX=>}aX a{Q! >ŷX*1 Ob^u|ixdȥpL`j$H+l<β/▵"6?i5,QdNe-7~2fNI2%}=]oukkP=!OR ɆD $F}u ) _Ş@aO W"9J6>9d˗/IK_Z.9^\GY3UÑpO['bYtn0,I#6w ǽ7~v7Ù80IRl׾@n]Ȧ:=gZIjv⹃̅bwB-Lف)n}/̿/dRY;AɧºF$[#Cw| #vr+⯦AQH?p|S(!R&c ĝϬ(*>Rx)cϐ>+Px^t Ӥ*/`ʫHYoo:p =yCÈG$XFl9D8$ ɆXFqA'`&zkw)` \x Oȅ~h9>ݾwnկ~_zsؙ>p`D|-O om6>c_;~Rk!w-]spgp"E#O)8ecwz8edXMYMoƛ_z;2K$yb@r͐@z}+ ! V-Ml'>O%k// yAd Z_=8.?8w;@}}sƳj8ϳ &x!4]J)(“a‚!Y O c\x$&g"2pרĵHҞ_1gf3p89)I4Q &~ ztLfЄTa?gXp'KSV 1lDv4ך]h>]Ʌȅ؊aKH߷wn5JB\ EGUЍ@E#Eo.DUx??K$bSQPۇx_S(MV9W sf٦ //ǨC*g!tϨr~[7"_8  $5%'"(twǝ~O?>2q \r`pфb<?luxJ u%o9Z:GOYՆ/#F!q^$(=/Ѩ,{^Kfz7c<+zU/g$UlF.ɆdUW@Rv,oȸx㍥ 7"PѲQYz7߁uټc{j@ra_1j.Z#}ZE0Ruu{wqG|(G*?sO|?Cԃ#~EºF8]=5}jۮx!~OtY6*vJ#DxK{e6"<+tR"ެ?<2EG_c)f Pҋ{nzg3YokCk~B?a c^ZZ_텽p! @ @& M0JBLSS*Q=yϣ>Z$pX* =zi?"~́ ]d_zv\:OݾۗV\iZE^H%' 73_Az{7 mhJ)!?nx&F?j0׭Q0Cޤ h9A齑-Ϭ H_q*߁wddzhmznCeh3x_^P\7-t>`2@7ޛƐLCl Ӹ%f+7Hk_Z1t٠sO.N({%oľz+r!go-tn}}jȅZE+^H.ğΝp twiO}Jd vZBі'ȣd:VHiit-4~l~F[V!ڋ6ڤ< KxZ1VI^osظ4FZo#L.\8Ao =j5*0=Hr2Hd'pbv"e1~иػ:;PdhClGJ6|dv.HkmAQ®d4hZC.>," Wrݾw{W9N*"[na nw8g)c /! AC; z9A|:k6(>skHg7ė\F-+ ^~];[XI"~/]8ϯ=f̯{fw1BcAWa dCJIH 2$dc) )08:>O%/D!f~fpA{P:zf{[#EP,)rڋg.ܘ9.ݾw!g$zM*">#oٳ 7d&D ⽚$wDjp2a.vSб2RQl_̳$MYF'Ngt,8Ls۫lZ}kCW{? PLȦ<\Heg ݾwnﴇV\TWU1/*)xhh$(#_EG3Ǩ0vK w[:>m?t=)LOd+&9{tROHOq 7|Jtz+mi~]zoU>6 BzEw y|'WE J7? {^^\|3_[V-a~\EĢwnm[EZEDr!yZEcX @zO׉+m!W`ޤ_vf& 4<?*xol'ggFc$Fh3]Vyu> j<~Ex\$W_.{aw_7XQgI@B3Ővr%@_E6P SXϨl2D!z`;׵~V!ɮn}XɅH|oU+_X$Ì"J$`2y.0AzYN:YEfMYYQ ⩣ 5A ί 36DGnmitF׏ڕ+5TFA\PqH@X),53΀b>S!}׽uqgC0l3ѕ7n}߈}l jW:k!"--86!e%!5^m#<` og? a'E+pq8<w?!s{DqK, mXoCb =x:PoxD& Ξ_2tmg;H)5mYoFr~֭-_.ͯ}N-eKǓ')$>9L> H]ȉHb  pk^~~Ɇgy&I6ѐ K&//L}ݾOf11H#K "b.@d@RYd B,\ao*.u?+ÿZpi(^ ??U( FAe >ldx1yF)%G`-l\j\,Hrcj*ª`^EVj ^v1P!*rZ@>vO6K'in}obل疯Ic;IƱ8!H\z 8@C:?F_56?ty NeUmJ혉KZ2T?;Rk;C4\ok<\s<ƃJr  Š }(0Fh D>%0 VdC( [c\M4WWMV1ya#"b=" A '0z^~$~L$oB:-4H' 6mȲV^CMonQ㋹A^HlO}ɠqzjdbI"9W%z8a&h Fy<,ǯ]ש*FGNszCϐŭx2owJ@Z&P 2N%v… qi&E u% vyptn}C+/Ln@sq^eS'!Lm4#N.鉌 (T{xdqLyȸqăj҉`&iGcϐq0v!JsH m#<=&c&'m80_8&n+(EP#㩎?$ xeD?z@fxDj<xH~'cW= _(]Z< ޤwe@"s. S j(Ӏ?l5e oՔY/xR}^ ^"VZE- }1q22_tON? RƯҙ3#!_1ݹY=d~7#DHq~ϯg<] 1%#Hukh1rphA_Q=y>Gy^|_!٠yĚ)`fim}޶wX k"n6Q2lP]5 !5Ph W1Î?P5ko]K TF;v@CpD`>|VJ@:)D(=%C͢ |/3=1lWs= c=k06sw2wnYl5l߮Ć]V%F.ދS◜0< bK.I䏊 6}G?,;MÿGyòs왑`׷OG"!xl6+g6hߏ蘸U-5>;=%XmxjIRP.Ab]<ܗJ: 旉Y-~X"i Ɇ7 щ (ă??%j4WnK[EDrx5EQP$Xt8 bL"v&I \ +/. Ka [ggP,ҁw04#;`G}vHRQ!&0$ag +gV@.lUĭzj!WK"C9eR, x,O.'H2n&p [yXA$BIJtkxjWwS6Ǐv4plFKC^t' {q,ڒk_!p~GJכ$:j+ k '%sC%IOo^p/z;.c̘(}e3xޠzjݾaxtRbU]=i X,E^ a F*D;B $gP $2z b\Hjsſ[ϳ2f3|RaP&FPΘpJ'JMdRsg-Zoxꮨ1s__>)@2fp@17[Kgz^%2? {^F/ ڷrc Aͦ,vn폌} !sa#"bMDj挬50 +M1Hݗxt$rb$!ޖa]'#pB1@hr &6,^3l(ig 0 \C#$5rOz³uDʷ!2*d@AH?dCzs3 78ěFM5zx "lء[.3ascW _Dm;7c'(84 ?yJu"I BO._\'UJ yD;lJ)uݾw*"6*$ŀty `$|+&"48fGtr kb-@** FP$*4vǿZF[]^5ru2NoߍdXF_܄uM#wkK7Fl\䀁=Npށ0^ %c[`hI; DГ88+]:;MfMГ+1; D \AnHGT!QɆ|CGvnxC%ODV%I1ZFY #k=ؿ/EB4{\1AoK5΀'p։0>Sow@At2zډۧ~h(Dt.Р=z@C ! Zur~tB[l}wڿ⋠V[pJ `Aā`4#D9B A* $\FP$ bO(~꧑`O4lϔoǃ)NxU8vPW@4`<{?lnx۪{ϾpfOhwufwEK8v%g8>slV]Ou~gxR Tz>c ؑqgdɩq8 #O?c\7)XsJ6S=䓱-^:m4٭5֖80Lp ԇP^֜@ U{*AaŐxCG?l"x?EFCV9ށ RT0*@$8 f+3\Ҍ\ A73a X[)M;y[ۉJ{vpFN(c2ү6x":H_.CYȆxzے5۲`<áׯH ̮V=At,&0ˀ INh}"pcle9`,KwnshI ™3g1'{Fbֳyh}))nкH[Aj-c"D1t@i' DjF$YA qv?<]6?sĿ 6FP Baw`5Q"稆G8x;ln:z9Y8ϯψ/n 5< ڀ X-P 1ꕫp"+$6cDC }mUDzmUD|/>:mگ<Kq,S1+h7 @Vs?d#?GA% K C ,̎7Qt];QvzJ'`xzv~]3Fл)U|~x*b]WIY )fwb<OuQkI ؀n%ybFkHLA1H 'hljy駝 (C4Xn평}ZE5[E5޲HglAneS { )*ڢ]`gXrH&X;$V/E.N"H?'-$T:lz|Y\b8vGSt $k sx ;J6lFv5] waC@[Ez뭩U? + f!}pȭ%k!t]F~QmXIEe m="$9"܁ޑئoO OV;'k.񾣞 i 7AјH&4[OC&4udF`wx6*c̯y ",n8pM '#8F6uD$&+iCQ-FV\TH.VF\x QF4j'A,^ FB@ZVl6aQh"ۤSp D0 ٬\&?a`A C#jzZOImm0;OchCW̹DQ!K$j$(lr-e>XNA)1bt81֛6T,G/.u==Yok +CZI'( dC| pB0q Q'`7).\pJ6<=\x}o67&/=Zl#6ݾoZEFZE&sOjQZt'lY=B6aAks0<¢! -_3ҁ*/[A;tQ~q˖,YLFo?3d?M''/\?)᩹5^:Q0o{*| gZǃ\W<ĿҎr&֛ozk?6TN5xzyj-04I'm~m ߎI LL@M DRK3J ٥G*ɆX@(b1Eݕ[m w݆ˆBA1=1@ZE~5GCxW]Qfݓ2H% ZA+AjhHnMq3۹wvEeF2%nOuS_ N_4pbK]_ע>tQ xJ]d[< O!35huD-ف&޴8C82/MZ{g6"Vb.m߆s% Y05DHO%!`6V >`TtkHŀHk%Hݾۏd_i"Bk"x3RΫ}i- <]eٞv,Cih C5!o&Y"FgY$KEiy+ 0?T Á]ǿFL>JsQE;ZňǘW 3`pa̘RKODeTDcZ|k!X@쟈G@C͠o ( UjׂDTpzLh@rC9p>s_ yyDYa^ϼG:&I"pu\<6@}]!j#[#Ok_Kgs"ڔw} /\c[Af[FB 7HTi ڛa -܁g ZvEooqJ{||BZ! (CiN.pAk/d ɢo]'Ԇx6 b/ ѿX` B"Bv&)4'/Ml|~l$`+4VdqhgF9y\$^pSBCWɾq2{cy9߾0}gobB>OU Bl߈3,EF2!p/2ᢟ+u޳=>χ < qEe:q^?:r/V+ "t~Xnp>l? u":`UŞ4dЅ&<2\$#LIa~/>o qP!xM;u )N 2@cu<ΦtrUʓ>'. GE" 'Bt]$ؿDߟ#wSt Y )91F ~I5JB;k0yG `+$$?c#zȯm34Q1Y>·#P ͆1 #SNx0\y<50i] v1{`oA?@eҧCaE@*?`+O\@%A'_ ᄓ<:9w|{"6O5_0DŽ3Z"yMQS;{x5~;?5mR$HM(9aTp#bE({(Yc $,_}|Ź;GC29Πςd o$C:ohlDw%gxkK/z$1_X2/}ax1`DTP,\xf,,2?[6w[pzqR6?9Xzy3n_7w|(V">}{߮2? |=ZO14\hi`yKع A$}L`x"\b[ Y?6|ïQ ɨ,|B`svx S'>vW bs .=9鰔d/Q "̈́B>ZIUFc^{Nad1V`_Q*Kgۗ,Lc_ ѩOH ȝr N A." R!6t ql-(C eK `y:@9Y||C(8r0@:ݮ^ v^h-kj'ڔGy`NV@d +!hT׆^R4d/%ثE kiDw(_5Xɯ3]mWOOG OR.NIS"{¨\sn-%)"8ï™%}\\aK!^> ?[HD=ܟٟ);/ &g?Vаn>~7Dl8*Z$*B.\giCh@Z1KXAhd ,NAV7ȧö ,?݀_NqĜAdsaӜG |;U3~&g? cbH {Ih)Y>%lw>|ioM.+ 6ADHKB:O9C 23bHAlXl 5/!N8?7^'y;o_W 3x*[!\o y.g#(v0֪& _H^]-{jQA(@Dž¤hKfD8^Oa\k5=ʟ~<pF$9-G!ǪY(\FW}B}S%?C>>9D2|#Br+4,h?}sN%я~4R6l$I;0*bjTDr?7H)Y}c#{J0.?/^AV0"= ㅘ@@)N-rF#VScs$s" ^rn6W훏plO쨕Qϓo`Vڔr1@ yb_} cɛU<9)Ory~jMk#W' 0x.7} 7W͌*|Ixˁ緗DR=CdjX"p>Y`W(?f _C'|l(>e!np#<8*bjTOOa YD cm iS˪'si)e)X_bҴʲ iP!\\^PD㫷停-Sp`~<6"ݾ3`X\vTDC )r!OF$([2S]+@V0pw@x '܆a&k[-|GPe1O׉L:iG{KmnH,`@]7 %$]솰$<缎 A "H 9y#q 赸N=ڽTbjd_T~uTѐdhk3ʠ5j4ˆx$~<K)zܐlLv($+$#IHR0𓼍>$Air(\t0SrACtoi~ |rʿG}n@?uzdHM9CRm-h+7͛hߴ{&xq^ϊgӾ}o_L!KI+Pߓ*5QHRԀ) 5D` k.)F?E8Q6l^c3c8o|`\jTD t|{FEppA+Oqb\ P%8ɂnrJE(D*Ǖ/pyXΠF54 QbA8FcBl!ƗX i @j|Fk~|Ej 476M~XS zrJy',y .3Cٰ,yWo-xC籯gf5y-_E5?`CA!qQC6R 6|;y׾8+WVELj.o~3 Ъ@h0k sl$Ip6A>O/'l 1w[ \ ?/]ueYs;xw^3._F竾Пo{ u7T~>8ro?K0r\Ѹ*`\P[㹧mOo\~;},+㗼oks( '"+$N6(CeC orhԪj|>|pFE0*"|oόSPʬD)'I pE0( `ݿDD D Y0)I \R12kw3m{w!q>y/A'y|eF.Ÿς((P'8dc6oy &Lڍ",ygmy0Mt,yrOghCyFڗ&1iilY% KIIm|8%!vU( \`8\e ?P6嚪( HV4䖤{6 ?$ P[ np3ڿ'2q*G9YYg`JG 0ؤ}wcoھ,SJ@6Qf_C<ɵor?]L^F@HƇ1&Xh,.|%b sa[!~__P3K# ^(-I8 /l2*"P9~|{ߋGEh Ͼc ݀qT6~7@f ڨ@P ЇSAtDY|}&dΌ $?9Z>Z'6g/g>;U迓? ~_@CHZf,I&O|b3ke˯eɛx d3 *kPN(ɓa_:m}́=p_mZi_3~įhg  y1G!V1?kF,D dR6|K_ gq/(z?? _{pTOO/" s E4ͳƭߟ i )W,:Ў!YO?ys\X+zcWª_%1LFס"RTX?!#$om>Ie[?哅S|VF ֊$ 8-d IR3vl"4#rԝ,;7 X+V<2"cNONR`y1$Z!Yzon=l qJE|Ȍ!DhM@{o_`MFE…0*]z[Ov ^°O >0NRn yk4B +w3[qID'&]ڸ?-"V%1(x[;!'=/2Ak~%RfVg~)?Yq 4~K?'Cq)S%~o@syD/8ef{9o*E՟淯8FPoӧb϶񒼕­wEMuKuIL=f2ٙ½wlWLg8GhC. ÜuKp!|ȯeTD~*H ph[Au 5=`( X b @l!AB{9/j0PphIĭsUx9}e~|oX~W[S+ZڛSda>@`|Z%4rܑ ɼ3wn0賋cS1,~ydg E<|xGqDpϘ 4 X.lX(9( I,k+ | OBiR1 Ϟq{>apf##$E14@^$z?TB\ 8"PR- Qd(U{ mNކ|h|>?b3fsg!r+l NP*|N"$&u(>я[P8Qp%w{;NjY7eT)y%<GVUس' $5 N3I$i LIw:7PQ!?,;9Qi4χ^̙_ʟ>R_5f*?lo߹ Q^.iCVDֈh8(Cp5yc'j F>? l%&Txw'WyF O^m. k4 C@8| 56aC _BC6YѠMLw烪6_pTD`^)bD`sSěpZC{r$H=XJ;j%`05D Lw#  i>T/a0@R~vN+x'?"-u2atluNXHh.*Yd<,ɾ~P<}۾gۏA6iM>'<.vّ R7 $?! 09 ː D|$)46Gmp (ENp.pFh`6E \9ppQф$уA J+6HM5 Uk0jX85I~Uޅ|IֿɾSQQ u؀>W;iVx2. ɲoRESgCyzOZD$D"i cD<NA 0`L 32ce oy[YAvX*eTDhHbqgK|պ oC5+Z>pGThDb68> CQ['Aqc.91#ڿIգO?|w[OV+&PIӧ+FA8 ` 4ɩՅ! J['r|TD t|{t$oϼ_lzH~xD0gIzrVLwHxsȅ6;cżoxKE. ؉c{ZrFc?Oi?)_rwxDWa9=g"f"uNViIC߅>@JX.!֜cRI@U 4y#6UL?y,J?}{җ:"e9Bk#y=p=+6}σv? .hM LPx2q X7}F82VNT|L hF*ēB\M՛_pm4<V?M>Vx~,<#<7gZfq˾}B>p>Ed@bɯoW7LyyX? '(BEj%+%Zxw-DI'׎YC~FPibBrPHD&:+N*GTKHD!+=)%I\Ûǖ@p [ |o6<3_ciDS-!x4G{[[#W+77*y|U_i|f0wSJ%녑cHf/a‹Tgh~Ao]Kp65yάAN}:;/ߒ{x -߱/'\ktm'"ł,X{"RE.eu=E.l!~)LU,fχf! aQ"u5 .$m2S;ފ?ϱ|1I`gCq+<~g&zy"ĺ-P@Pdu(5*!}Ď Ρj|7ǃPwxY.~ V:lX1by@ʆp g>lPr )JN:({v]>ESHN18\v4@?q胇.FG?hЀ`wdNlIjFH/ϗ1"Z)2|(Y[o z“cp7?!gί[K3S*}{[VNبbwRBon &ţvm, br<~:zM~ υ*yGq]x3mz{% PU[{'̿8y~2"(G3EO3{9tͷOG=t^sVaR`0*.KGۤ˗b ǭl< zb@>kܾj_N6, x0^qJ*` h ~PX"FgL1%/| 7ho 'A0hsABsףWL;᳨v՜jyv  ŭ(J @ @"l24\h$McRW48G +(j利덶m)hΕߡȎ{9U4漰ǂ[ #m SC;:#Kʓ{zA%OO;7 NZ,+'I}Mti߂7ѧm_-fO}1;8mh>3?.,H5ʆYDxDʆ}c?(>\ʆ$$!*&l_A 0Ϩ#7puitTG"@E?/_CKr\! Zi y(6cJE b! HWA:ǾDTqZ]o/WD̾U~R|:jc~&, rt I& -GIh'Iy V|2OC˳`%g[.u]@tƯ" ^\2O4ak 2p(m(l/+Gx_~ 6JxG 5!,hn"bߞH&F6a:!S$'GP9 IQ{tLbn^!PI \疵_,i|)?8XW4˯櫛?>t?sV8I~byr,y<-i&'`byh_Fu] 6y~ mM.VO'޼| :\Qgj $ }  B D.e ¨ݾ4B_V a`īhir@xaQ`/2<P@rO \`}_/ C9HC`$w.O 8z%0[OO&Wƭ1ag؜1e9~{kԼ؉ 2QĢI8#ŁQ6`/)@âo~ J'񶷽t;+jV-܉}fC5H\K@=q6fBkk,^|3̋hSdaQ~Qmč 8pMhUFH9h",ܨS@ Rk ^ u9y"J?>eGXbl?l'WO>?k.cxMs[y 4h/n2E͞Cn{ONO^=MT֫$oi~8l5ȯ;V%*j_^\ONsdɑ]2 ։5%>)]ߑ%X{q<;W5KlyZS=eK2KBcw _ dqΥ1𒼼9eC0*"@dTD1`BPí .e6Ar,%&/pCCr :zH \HV!1IѝO-PG#WV#`HmR}h\S'7j59}{ċC\H(0pDQ'ex]CCʆ_qTDZ$-h!엓F$ 0apYEHdX82 H 5H{[^\z͆%|CE7='_@Z3c~)6pmrКEYZtV,yHyo; 90r bݾY&܃x+VvH`<:yk O>ذo>볬 m1#WW}}߆F|Ux`ǂ}oo؏X=eC8*o;7ϵ;gq r ɓ37I NtQ+gGwN`4;H[!*AHJ`4pDP&>$)!EF !)_X7̇ȏZYǶʟ \č>!ŞFg]&7U~F1tW~Bi7rxjc< tYςBڠQPȲH@EhM7eMbm<`Lh_}el'If 2 ˓)M@d2hDPBַU;:b}wp)kR<  F?`qV>`A!V ϓR tWy.FR 0 Ir`9's@ο%۩?T}|lO v#'qVmqq%vN<"N$ ixԊ8ybέvbyFڷXm>fԾ~}Ӄ>fHi##ʀI *>@ K"ΰq$Mʆ8*=yO!_JM)n}RРxx^k 5Rp34` UO(I*GΪ Ԡ`c#!>?~fX!w5 zeG^i|ؓx|`oϧ3_#~W 4v5SD/;j!<҈{I,ٷ߲x@wa1}mn{_A$^e> 6e[ ́62+e2*"/,"ĂsTo)m .kg,Zm8%2Hb _C줠D H =ɪ` I.QPnx m$W>SN=_pr_,6Zdtj ʼ4"|ӵ!^'lcҵx3Dnlyˉ<}1.D&'e629V}l`ߊ7a}˜ zx1svdd &ŧ z ,'HKbm9=23V.35?C?dog~gwjCJ $6$6HPh! :2LTb@ 9`W9@&=9*r2F6X}irO=p`Z~jW\ HW>I.cuD%ѐ sI?_ GybW$0׾Ih_v}Go<߽Kx+z?*^ 7Y+ɸ1埱 GGfWs,}[0i#p->Wkqvg(A;Z5j"8cHm:&zD(*1d&_ a5aH~?MȯtS_|^g'5U>ɟߞG 0DMW{OZT爑A fUrz(=o&/4}}59}<׀-<0׾ew6~z7K}aͧ2~ 擋稥%A'so>D 3VXڀYVDL1x?vB `Q5>*s%pD|f=lRb^<;]ZUr/ϗ~jԣxKNf9ϹY!7_^}'ooկFI/BSqRk dJm\ͳQT -ƩqCR0B a^~nȬ= Hƻݤp~y<uu R8 y7,'#Gt(0$Lq⯴g/|  /A<:ɳV/6>[@\1;YU7B?r9`8Wwh4G{-2U.hPvkcD"Ġr~t ɎjcorA/BteX 5qƶ Mh1kYKUO(#/ݘ{/F(x  t "0|g>}{yD!Ol!V7Ftm_bA+^*Aƙ^#8#DctC RPkƀ]2d(.I)H7YϳUDͤ_-s6m$YSӤ<GZ hV}mkk_'\w$swDY?/ʨ`q {x'\89c8pA<U07H_?Oi&8\a_C];*ws;&;>R82{Ip?L1x@3b=`,[<ѹNU{W@ o3cmcO6ͬn̏iL%m&Otz'QKR8:xofӾƖgui!>gRDG@aAFkpH@@~8=8&h]}o(l0P Q=M]"I~G~*R U*1¥kQp"]m4NF{ߙ?̫]?u['"p?e(ų:YdR&Iyr_[HAQϣڷR1j_\ߞaۺp?ũR<5Ene4Fl=4tI@ 4 oEhC vuC|H`{$#0ωoR0 7i XX z ( 6(c#-vpb}o֫+*h^լ{!Cx<̑^YM|Q9Dwv*+ '9?_Vc&6iiG ƾٷF}T ih_(/ȗoW,2boҦZ4FU ߑ롱鄱?ΰė|91q22yrA'L\+7x]j ?iĻAJ46$`h5 | GؽmOqT!\EiKR^l?6{tnN&VxFEhct oqmeWׂ*_WHB~Op0L_r'?YAj~̢erU:D)Bvc$K`,jib_mSiAvOTe߉W{O8x3]!NO'(@ H3)m9335 XSK!/hFc.V4c)p$W'4|-R#*1pNtNq~mڬUwm+0|xk@>;v竴hyDg//ПG'Ǽ~!2ya6uah%K?nBD&  E8qbIy[I/Sf<f\x#M?65.:f\-fPJlbtAץ}1ċOkO<7^4sq~8r9h7 XE-|,gX ],@,Ѐ_]Fs6?3 R %Hr DF[H<䎐9ےcV>tRBQD%lpɳwe?Qz%/?@<`4%Ǭ`4R2q?7%ݱ"ui) .̥~"Ŷoۭ>í7qLU8웵&{z%C5<1>bFd4FNOr؂ xRx*^hj -hvj1`@;+"$8g |\0<88~dOPKG{[K=Ԝo+n{zP|XΏȿp4pʊ~vܩhRL RNZ~y4Lm_%>mO,}R% Q615 %Ho^ @R $b+X8F0>.O?/"+IW)AJ)DTΏ6]\a;w[o)H˿Q^x mⅇؔN(1/g<058^y|vGۥ%0j&1Sv'>vE|_}u_@hxQךxZ1_r'u Mdԥ5``A}6&(1 OPPy7x/E^4 t9^ Y(- _=\qQ)oT֚}~EW9?˯켻gN+3Ds/@Co)jԫxH2S Gn|]=O j`Q<}s<Z: }3!Bqf览o^\ۂDҼ7]}g$Pw9U8$Bb)aD#e=,LA\?/]KJ%)S~(r4Ь" /~< M'%7 < [$9+w:5*o_m,UT3S ʆ1##GN ^9$'k7 fh`3lay𡘤:eؤX%r})0.v<׫U|xpA>p}|K>ɘ>-4Vp'n$?p>H2)s ʩGAE:] "v L I0˜q ,V >֑?ߟW ga|x?*>!||fdʾg&B Y5e=/m[-d%}=1pD@k6Q@^ ž V4k_'Eo %#0QvD:uxO5z5x?-w<>q6Dy8GCre(`@gXZzf㷯nmgG5@Z7yoxIڷxCaަiHDt X(q6wR MR)g),r4A}Wt{z Qc2,E dDs`@jl/hu>H(iJ]Aq$`.rHig1le| ^?GWs;?NS>Xu #NvHuwR)<Ѭ5:^M#gMr6 GuӾyfIy#4<׊"} !yRҼ)I0-#构 nNmV NjS͏ (%i,1&xic#@0W,oG3&uO+y#{Gb˟> ӿ 1Z*;̯#'Lɺ^HSpAQGy뢳ʳkV3}]ٷa'M5zX~$dG`on 'P &SݭGxL5rJ ?n{v&m"$i :wY{nw"yqD)`ʆ2X@2Z(gF =H {r&xAtЦT?D ='W'[?k O|yf؏^E`FގٿN>qWߘ: 0yp[arZ9FF-5<ˍ d})ľ;>wLz\Ԙ*(4H L6VU)O$ 7S:<۲]= 9_P]!WgO6]1L,VhBR}a(&1 e=]r72ĿKX! Ft nE<_C;~Y l=_D=8s>3pʿ#̉}_ӏ\fjhsylΩ~Mc{L<#N1;/c=8hP΅LX:o^m+I0|#!B~O;rU p[_ " R‘B_)4K IJνv">^W2H=Nyܾ9}} ged6}FT3◇j6}YEL@h9@Ȝ ր 9qFr,bl3*z7zu<\*џϜOON+%G84<bm4'7Jyr+fc'd3댔'}; mjJd_),_>6^ݡ^\zȗF @'Z遣 @Q'ɑ 8IܬPhc#:.'d_<'V땼9 |ޟO~'4@gvȞKf֛S%w@[y4}Dk}tʫ]?Nm*~/z9p <0#FQ!>0 bJЪ=jO$_?iV>yCCjϞRϘ0O#N]ʿy0g=Z k?AHx 8fn&Ijx!O2" bC\b}6g3ؾ⻵gR#į,qk/t O":;)851z_HkQ4BT2nd'ۨU۾{^?^E@SȺ-v=l֓eH8ݫ6`,dc-8zYFJO]۷X}s4ƾ{m(~G/3S "y+--k<$V>CL/V"h6ufjd>(̹waW~ gί쿜l|(O,y-%tc'Fe(@ɥNyDېrzy .OA#OvcWZ;}Nqsڅ}x0^D}@HdDr<"[1 iIZ? ObN.5z5_^?ϧw"ҟ]w>kHBI/ύ\܏oz)< VGޟU9+m8(%\\þyv +~l}wfNjq|W,"?3X߇3fyaI-y~zWkLM|X!JB:/\S"5;/n}xmU?$[?[oğEW8VTkP/zw&\=^ S'r,E~ oJk cri&gѕxZR'y@Jy<a}$G omkDhK> ^wX|J@Ov}^%yM8ڗh̾dN>GWgA ]ЧqQ*YK3 c}j=,֧V:/aU ?_kx= .m % 2߇g铈D{~m{n~Ƣ O|99g|~ p]oC`h3X\L-ydxY9t;/xWMGU~3@zhHH̖% x)֧/Y`ImN&2Md\  ʏCpF"xnnp=]ӵIAȖ/hm߮(O7c?t[#vywN=f=}/~R}  !5pr8<~=o_v_Z$P4~'zyK_6_rdV @hEL5gBt?w~F^@`>h9fjܟʯgxlB~O`ɓ'Vf&R84jL~U>]j6aʨ{y& `_ξd*O> I` }0#~Fq9Xdo'ؓa|y[7&VFʿl?Ofb{S=<t1E#T# T@ܦ%H <9$CPڰ,yxlM3c3r{ܾDsHK}0y|:/i}HPDI}+mT$=K1d%yRr6bp|۶wX?aI4&s|rJ h`#v~_o$mY>]V<.j)%KkzrM zʇ^OoA:`{Db0-fy +e_VXl_ΰl˾~"~ F7J}j&·|O̿iHqՃV9|*u2}0Gjv?^R?r4hNfcjSsv!?Jh܍@˓ebyľ8֧I } oev1w>cj.D#5MdkȜ|97W%GEn=u_={yr?g}(yj>Gݝ@m+;o)G ibB9&Ny y;Lm{Ư3^&ԧyOۯO*Q\hs25?h+A'=ÕMbG<=uD~7\ s,&V|-Cאǹk`ByreM\R{y~0Aw}[VDAN$u?Uw'抵gse}ju|[DSmGϣm|ݭ?4OW=yH!%?Q<ީ o=W4$-L,ǃfolb5q/'$m-g^ޙo[yf7OpƋ>>v|dwpyav`ӟ1?w麽fm<?M Ϣ?T0gO^{b`'kIU5LD+~_+njݎs^yY~*`,X=<~*?2dW%<a*gǨQk̏P`_>sl; ^JYv/Y/Yo }zg:9 w&\?7$^d\ۙg=N}ɿw] "|2mkDؼPyVbuʓ{=FoCyz7+/(_}R:X>لy%Njdc=l$"3y(y>xs lQ^׃s}_-y,뛸VpY7oxm/[G `IFVK8Qꬓ<5Iyԛw'U$ uW޾ ! QŅY} .6XeuzC x<~]]?_Ix n'YH;_NOw'jeЃV #ҵ]G!>,2ݭ@uC`2y ~$ɓ$ y۳R$z13{޾Y[OE!^bN'4'Qx?y( Jo*džgm|A|ch| }e`MyU~h_ [ǒgZ+/%h4yg"c<xaO~`{illl寺7OE0^uc=ώλgy5xSX?=Y&&U?Ow%-n}h?\%.W4|lw)3ɑ?/&lW0ͣ1`zSyH-A%NgNY6G;yӲIu}gO~<_$?>oOϥYm*~`bP\DૃEĆ.Is!LcCY{T|A׸%g_qƬǾH[zþd\Mk/wc#[x8`EڞQm?5}NJ3~γ S6w?_y|my%gkٝ6߯1s3<~%c? hKPlL7ⴘ?+IPI`/W+ <^j \ 6m}S,iC78,FNj;A;\S<}m=7܏d2HU0C$ġΩ~ylI\y8g@:tczy[,jMoS,?P6\b N]fx/ڻmg:^Xkn ih5a?7 y|^;?n߻t_`ܖgfx;ؗ"^R6ZD|OҎ\HjȖO.J UMAjb}7yk о}mLԤ/_!^ KxQM2}z(zKR?5L=Sgx4v#bO|ͻ3K_(j&PZǀ|}lܟ~W~e=e#z5~=Ƀ(g 3X3vj:"5$9WCqyëŮ苷y`.|ó-20[cS$ ᮤ}joN:m[>k}15o2A/įGV/5iߒx ^H0}&pc}?S~͏Q'O׌~S=0NZ2?g?<Ei}nrr~)__ !=N\uN؃oqyr+c0Ƀ-J]POl3&orw(^PI .JZMY\?Um=~tÑV@tmx|ʟ+?>)Gm$Ѫ-[񤓿UT-Q'=z­;<PPu\ 5ѽ>Ppר?~9LY4awzg]IӬ ??sCs49ϸř?+ W_)ymp>bʴOB>'Ns(q<2A^H96Rcac#OԄ[ MŤDI1W2{-/s7/7/~B5~E{U\/DEVbzh?^t_y>yPg^ ׮O?QA/(80?7\՛ϴ_OJz0XZU>3DcIF)GӋtD4L<$5y`Jj(cW.xjVc߆k_>/~A_{)7OѾzh.}Btws/g+nǐ?ɉ}FEFD?E X39<ɕM?|~^ ?NãHJ5(a[}k"e_m6Q^JL&^,^ĥXYOclϲx_ mK:>`Q};S1!cgǃ(v9z 4=Wd?bh Z|$0f$Y)o%dcHE Qc˳bN!qؾmm~4iEy&Ű/8:F!1~o6ѧ6iyt8;^ӱK3{Z ޾|%t7NFt ¿PCA<-`|rE7j?`ŗ83 @JANjyOTH[/lzƴ#O} }E3  >~asc}n/r#}Nן=;$#'*' *?ėێak`scopQ&CK/;G+-%vv$u}ݶKrld !m*>U1J14%++{fоImjꇷr}^}[5r(>i_۾Ƌo$j/{\n}μ'/ϴKⴥ?d_냝&_Sna?|&vJ:М30>IuG$PyK>myO>~`=ǯeOC:]|%CA>+ׇN졔',$+k^忴;{_?5RD?/Ėi ȵyM9<{'ع@J'Q 'E^*vz; } y /t/}tڷ ~]/i cx5>^-X=;V"^l}B/}L",g7z@O?Knl܏SNG,Im̼ODφ+]PLkKYSm'`Ev^x pO IT,+.Lp!5f#FSEJke͚o{о>3^:˩Scg^+ jS~xZCE١m[ /))X>#FI{{v Qy{T;#~D4Waݑ>)_o}[ښe OO7}>鳡?f>y[Gpx>?ߝ )I>q*E`f*i]c`̂}/'W=Vu+Ư^+I y6meb x)ӧӾ&캞O#[ |g3~tXz7ߛß&w-}۞ʏ",Xb N1dȓ$UӉOLbdO bf6L g*5ק>K028qVo_C@+:&_M} Y'^Ŀrٷ>w/et H`xiO`=Sdx>#^gcGځ?[jatoC~>\O|AH8-9sf6\ٖ&.I&+<w"Hm*ޢMI]3GQ>?fˣ3}z}ũE+#'_CEfstg2^@xyg'k=?Żk@C}ϞkmS;ZrLw-;?|SFܬ*Xȩ"H!xmRdxlk_KYO}z*4~V`?u?Qn ]>#?tϗVo>GD=syKοaLd"qvF|zyR^cu ;H4zJy-O}̚.Aن>پ age'^34^6]O}Vid<6ơtd|;0?>e~J~8^@+**!?uߒW.Ca'H ոSUoc[ʟWqV#^M qbɂ6x$[J;9K>Lv!'"x\k_P -׾WƾIԳ} ڸ}y)0,~Njhl%{{ehB_6>1c?@)>ha5|3M"xiKM߸o_n_1HxU )Ϙ"%嬗D/mpړ:9_/|'J?ky MZ_{Ւ̊_3iN[/CC;'8C[֟iO;Tz`qKl?sGI/ 91ea*Α3ѣC~0HO7|&v3dcLLуS^^,y6o|F$|}SgXO·[Ϟ`8r! AcԐ!TlɣE*R쏓'5*V`,y־\1M®eߗɁϾ m(mb};ԺxixI3/>gO~m uGEQ>?G 2<]MP>`޿0?cm\X4"_w%?ȟJw_BkH X <M5!$YL~PչeptQ{ܾ* 'ƾ<}*Wܾؾ>w/\Et#K>'R޿;}џ$!kDB}'޹?PrKz}i/>e\Wa\>**OgZ~7sfϯ0<jrʳ"Sm )߳ TyX슾}W3ڷLoΔiK[/f_ؾN"V/w\p}`HGUTGN_+Y}]smx {ߐS} 4j a!hbȓhoUOy]Q/O3}=wCkߵo46~x}9~uĀ<\.Lb=|>p!gr0~'LD)2lr{_SdypH PlgERc`sw}kC:/IaC}˟MY?zNu=?4Ov>"%==߻ uRINFLc)F&fˣVѠ Mh :?H<컻xgrY~eۏN(Q^և)擧Qr2a07cbq+R+%i*pQE>sYQnN1e$p7zUE[l}g_Q^t־`k5i_M>;E֧Tt2^v$we6Ggx?E,}֯+M~ |3ėY1W}>?w9( i!"OB]~e?.Ґl&]E: z)'haE-5y)q}ӚYݚܾ$nE97߈}m}ubρ}[ɾk3ٖ:]ק/ƞ⌗{,}Mo} 3#?0C|9?d~?3Mַ'vüYϷ 7OkWɟ@_~:us2DK~cʕ5\&kE,yHǰǓøjM5yr}ƾ7Kݡ}U_5`[SS]/g/{N29b?p ?2?ώMV~EO]#/OÝ)6o|Rߊ%g'rX]4qiEy7ѳUࢽjmZ<:Pdc_p}j lTRa uz4>޾qe!I}>Uu|zEm[zCj>`iφ >Z }N?6ُkL^ v":-?)Zu 5@ʟvYl'?O~?󽧩 Rԯ\,A[#O(~+RԚbS&/GL5/~W:w^}2=sz8>K-;sY$sf̚P}$ߗ?϶<-cA'8Ix۫iu)I[%=DKJ$z("T*%GyR*%TRQ\BP܋=ks9c9[9v[7czB$h0'rHxKáD<<|6$y !^%;uB2Ԥ=2M_I?zlz|Ɔ`M5}w }+'s|g9 >sa=|*$=l{ӟmGFB~tlZ?CKߴ?.[7H{إ~vM%C#_cOE3 Wh0`C|'IJLPc*O\ǯM+%MM_3&C7&/Lmӏ[E^= }|3?AkI|^?C~->[gskUh2@75?;1V=2!/z T &Tgxx9X*b$DSb1|2L$kl(d?f@_^Cv lMJw!$>[4ˋ铼 <|A^7yϤ% tTB\ĤQ5}վFKr~~6s[M⑞;!+nNL=#_2 4'_"A'!:+C>A j8_zǸ+"&F9~ҝ9U]^2&&NP./vrP^7>K`TџGӥ^?,ܱ~OױSp>mS1h2Šk&u$ɔ!?5gW=cCS~{ԍ>C|hВ?X󀟳[g𷪟'ߦ*UgB ŭrR#|i}%3`kWoU8WԢo>Co` ]A~edcKd/COkӲ?ShWo,{maFܱ:)y$'E'[ {݁>l>p*ω{5T4T7NR4WI3Y :2d+u[O}ْ$< ]JW^P]=|?y|NVng$;Ke0?~36maS X?37ygqĉ%4r cգGK썄cH0 s@%JVm7o76}Q^r|?ݯNП PK/CE~pyM5A~v{g)PnڣCɚ7oy FTQzCc 3 O n?euC&Ҷ}CT/wK6wX~1y X^ԇ!z>o\j4c_xyC 1[N/?$ٱh?`O~ku\?a}?6'߆=j%['L(9< bD$3R9g}ƧO1}yxB ɯ-&'b /˼v҃LyҟB|Fk|SОf臉Ӌԥ~ESG bЭ>i?ۋ3gmOuOBb3'Lx+]o>I^z;S30os3cyoO,$%`?0 M#/o<}I~ 4k:/$h4`hv:~(nAD ? ~iӿ^5 '?(qzDBu5mO#!?SSCÊ9kCՌq&:dŒOdPG`j6&cy5CKL,Ocţ DH+y丠%?i։ OrT8>I~9ZI|ƪЗgE$[¤K{^_~-/BےMɋF&/'DOY3II3W >{Tb}L?aOsJ?01ʿ~~3[^R!ӎOfuMwOy7|ȎCԟGC _|eCu{*VL ¿< ?O<ʳ]m_n 9u y]3&2 u5xpLe!_"چ *"O|MW2ni?m~:6qutS?_b $ϐ;cj/ J[4&>+X_rs,TW$+dhHxHv1ɽ&D OW kirk|ߪ7ce)/O- ȯm{4>3NVc54>M5!o$/g >:>3su+_}G }5n/MKx~:?zЕN<؝V~3 w3̸ɚ"O[DS U~|#|+' i 3\+sj$QSOlenU񛜾rx!vZ/nf}m"O;mU^ȵF!>ҷS|(>Uv t)w}mϩG:~Wd.KAkO;'rsjq>L> yg3~:0?+a|/Glg8ȗ9挛i&Bxp1CڀL,S8H_!<-(%:S-$j|R[Nyq'e3y*æJ8nAc~4C~H&O eڸΦM/# L"s^7 P9 B! !g^$iMvotFMԱ`R0̲_}g@Nj? ~o}M|k2@#kf0% ;I$M)y0jwH& ]<4xL8S X"},;ew`hI&֣ȯoĮ'§jr9 >MrO?Ǜ'yO}4e"eKQTh:?CKa_Ko2ZoC~؂~8 cZЇgO?^yA)Tf>M8H[b~~pr9<*yA9>%{ < %ә6-/Y*eKYK.g?|clY7ڣ~Xзsc#bwT U//'h u~v$;NlxTi<"^Mط;lMP+i-oإa[6>E~cNP+_\~(?P @]~Dioz$Lˆmd6(B,1IGE5;$lK#? BNO9<%\ze?f?|.%n:~3[~nCz Hd>P9F\HƲ8A9$h!3 \ $LIS/g#[3c|j}z}XΟ?*yϮӟS!y4_~^7Xӈ^̵Nh'ɎXn"fxJt\!< @~IӘ">D3@18-M:sϊs|>>{BK=._^hO~.u5GB-?LR}_vo?gư-=(T ޘ <Ԭ p*{c |f }Uf[3Il΍㝓$۽)re՛X2>^ϐ su+s]ڣpsUH`dCۯ73ɣ~1?Wo[?ӟ 'W% N)UO"^RͰE*xȁ*IVT/͟r-G*&#]K)>奇tԕ{ {ݮ crQs{*|<~迿7A~~<.GL/V~g$;͜5}T1bp:kIwj!N<YE_]ȿF,whHx$e@'H_o0 Nc-_AF+ga}LdD`jU@' yЙ~3?oU!uܪ<%~qU>?DJK$0q~hE:C?, I~g}ӕ̈{9Ș;N܋^:ii\!g72&$<ǒ\"gǝB2y[>} O}o,8?z4MS"L^xa\^O־t$zҒRy7O>k:7W&[B+C{V|sK7iLj{֒ZLH˴GVQ|M)?fdU@ߔsߚC'X]?/O_ϟO?3|3,SsD&&:Mrp(d=~3ATK~h6C^bw\*|VoωK8_B |֑1>&ɚm_CWԟPn45ۣ!Vo20§ ֿOh?0){Q=`1ت?绂(<ZH.ߢu'E\Ըf&K$%rrxܿiH֖P0稼<ƤY\~Cjɯ |q8§?y}1>nFjQ|TC%|\9'a/XRMx1\mO~I(i^(vd%ہ)ہ<OI1y̘72>Af#B2.>K7QuWݍ|7& :~Hyc{~ե?3LsEy~oǗC?T/T??3{S y'<4\9ʗ/BBxסj/Oe&K_!B~o{G>.(??M2urz"àJJ!O33\n++Y!bW*|r~XLX(Q+6n\O H<`:}\+}{?$hXgu65\x$mm}_J\LIt2ׇMib!>UϿ_|wRWXaVZiWb-L>*nQEc\r7ѱ_qA7ϰwq_z#;믿>iB/뮻gc {_'=1Sк~΀Wd"ZvTO 1&lla,a$ M$<̝li&POc[L'7W|bW:묳;[G<{qzЇN =W$/yZO 9jB4Nꫯ>vwƒz8kG?хmK=7qq?r˩AN;$O4yS=?7o}O/cM6dvCAh8xO%  Q˚8;n~$UW-KPdҺi`FKC}0S}O})%IJ>iv衇J$7xZ;|g$o_̟;Ԯ5XO}&}5t(`y[ޒ|W_S[?U:oa馛%wV;C뿽K6{"ZS wQ4uɂ1fqMyH$yy/_:Hʾ#`SmaBgHfZ3}HB(yU4#J'0~0޴sv$mv<+;<.- u: w֬wxM3bΨZ+1+BxbMeiL些Hyc'o_4>5M^xa߅?˿ Ҿ \ 14ȧ?]v٥=8dv{Ԫ?\y!$g$k$~ =?0A~fRstǵ??)n yJx#jSH34x,ͅ> 7ᡊ]wg=YJ^.Ui&ʻ׌ZpP ut U4Ph _*U O ?Pװ?+U*mDON%|ϢXKd]^VcLlxgVxN$S4<ԸS  ƒ}Q P~ !n@ _B * 2m$7Ѻ:[^[W^x2䅼idI;:oLs-|fK >>wg$ЧhѢvȑ?? ۰EtoյG(_r{Az|ig~ߒսM6"!+jS Rtw`~d챧Ea\RZ2h#1Q`v=AD[>#X<^Y2')O~r6j#RG;oz}I~-S Y^{-R?77Vyq;oUyaQɋC>I'q`U$>&)i:?b QWUP= On&R1.eH<{4}U(_r-rq5WYߊ}+ό5NÐZU{j۰/9wuבGy'o{GүO HzQ];?O(r~˟޿">0s+v71! Z '*K~f^[fO܎`IY-{dnbBN.߂>_=~g4$K#- Sѱ1exxx4I!}x Z -)'Fwgpկ6cToNO!<~[jnDG?{ lL~]LзeyR"ǧT^:G,O3CsEa]͒D>ڿ!9k6Xٿ??y{#xы^4V!O?Ğbwc'`{ccT 6ؠ]} ?)/?Y~å \KzK$+%1_WߎQX#Hm fC/}Kڻ镯x㍱TBw]y_[০~0iKߴg$ (2t_% sإ3 Ƨ--pJ>&|V2#ŒxHE+_] :c'Ѿϡ/U}}?CX}+I߿wyhFٺߎOھ V]~I|P~MEPOw=> `nF䠛zBy?! >(> Dtfg?~/߿Ё|v]z~7c)O=)OyV)ĎC^-~fۭޚO>4 _Ȑmݞ'ap>?A/fPСGjs^7ܤHb]c"c3ak_lR1Un0Ilwr`Iu\Fej)^FV2ڿ=yV[mrGDnOEM\~\Mb#-1mP43~KL#жto`d9>G=_<:L~ń~0Z1ұr~P3t _-/{H:vi]K?*C^E~fd9C~I~)iZkuI'AUh#~)a_!GgS<-sec@JaHxbF1VtǧxciIyO?*gXzi6/y]y_|I#0?WO}cPɯd>9>Mo~7dLsCP+-&}w:_?!`wy-a-lVXqtlܷ bayyW2o2{|>x!0{1)lB112џ\s (L1W?Hg?S*Kڛ{`g1o"^qkd<>g=Y|ƪ]7,}#k_kKfBE6~Lrusˡ=lL,z Hx*i6&X[یIM6jtdMKBXBxi\qN򱈥 I$uC$yUU40G,ȕ%Ʊ]o> ;=ɟ .s '{|bOoP\n/OC) >kGr]~` 2|I22{?d@?Yl`_7!i#J{*OVO։p3J$ܢA$4!f<[ H&DsHLbj&ˋ9[`䜄+1e/NG233Do|ƬB | +72v /b`Fm ߺꫵN{!aȔ\jU>{6̐}8Y|KD\z饨 ߐ&~я~o_x5`G>rO./[CH3TNI.I'9 `pw^<'=?'ϨT\611Y+`(|f2(1k6}A"ciOɣ0ɈݹѯD"@eO?t(K^8lCx+zE,j\<1omӗ䷰ANdQg(=A}.>ZZL2 )/U7ڂl|-/|fK9>{1eCO߾馛\_j@׍ɗ<']vJ]j{/2ˆ"Mܚ6?lrLܶaA< Tc0CxEɢ0!D6&U'=B|>}c{lkNJO]?Q?qxHoBoLL*\ L̥+%Z_aDxAZۖG?6)]A]|gQra}eBx 52vG3A{N3!c'K <1|`0Wn1]zW }q`7[B_ aO{J(2 I׫: +b ːfh$#hX+'M_r#KK㷺1"A8 GeFge>AzZiU~>{P=?-ʝ2ç4.#U =fB׿>btQb"tzN1t 'ojH?S~t>0r<-k:j3cog?pu&h+́ wt`0x Wnp ?OpM-ꃬ/?!&;voE῅Ia H$BY"!lSa(WKC`@}wkGGBqas|#!0Ͼnџj7}L^ob@/| +|e}z)#CBWC{ C!7# @ <\ 2uG KO͐^ qxe퍈y  .1F9H]aN"h $?gdpl1>z&?d~Fm**R EH w] ]."pam׆e,T!گzիWgpU[n]IHqM/x 67>"@g?Y^C ֣ƈuexӟSױy;U*lKcOQ EJ8/]1 N ޜ,3K͆ǧl0c?xHX/DnIIkrT5 w&/m侎qr'N;rڃrk2g5D$ E/z$ÿ0JmdP>{0[o vCU$! <okDI9>oӐ# WI7I'#кkFuYoy[!{}+ા5G}QquǍG`>!A\,7;(ܣW`bW9 }| T S$R^=y$٣g}s/;V0w pyqa.ЏLC$$kb!&1F[*g`q[$Вl8w9wꫮWł n }jM<ÿ0Vǒx-% ?r&^Όwປ6L-DU[! _J櫑sWc2? r! o n aT@; ;["+?d/I?UqQ0oUGGqI{H~.p!2JSoN""s<6$_M06 >[7g 9 U#䟢q`UP%]-7\K.xv鱈BKN!W"ZT^d(33 甆Jglj?^C6}Cf(R'+s 7\2'36tu"KLK_mA+Ȉn\K"O4 q1O|`$/h}YAd"6 J&;h!"P>~"[&k:xE.A*Hh[j-B3Cgcƴw/?u)nj*<|b P6d;D9t{^/M߼#,p!I-νD='|\k-.yA5#_꫙"s@L׽,)oIb#5 hI﾿/:ȣ#|"k$5q)U5fd`E;H% ]'ohr=!P4+{/N+ }埼x- _l?3 |"Ϭ6؅^҈\4KxgnRǽO&ñ%b'||**qG>}Ҥr* Zc\f$zP"X#:, er_@T4m~Dn8DUQ&s /h (w?D~P7>[/wQ5WwFG9J[ZT0L6})?bH|~}Wo~ˀ3١ 'tiV3F:!kCZKk%4_D#Qz `Ö|P̊'CO$P ou* edi-# ͌NΘM e\G#o/fwfw0`fB/./jt4;O./MtOEc$Ϩ->ʉP-w26۠T-gAj~@,z(8I|rjDjrUZM7 n ؟whdÿQ FR(_<$n sٌ|ik.P^ r Ͱg~ℱ_ ?vaxo'BƿZolbUT4X B;/+$*ȃ_+ž:Ik'ϒl ^)r^h[q}8Id&?/? @WE_IJ Bn̨Be۰+m>\ {") ?g hʋo 1ڰLM#b%^.JQ9OCx$}EECH&*<:1j_G?CxF٭EIG^9$tGοq41\ k9yrE[zWc@e%)"yˠVMI6w۪xDϨ2@*;xeԋ}h0s%K :C1wAmJnYbKG3>2L%-ſIcό*τk6I uK{biIxJx\%t0)Ly b cN=$LR0i*+JYXI 2UC)ɘ}P8Q{Њ첑3Ǯλb,b#yP8@o$/ 7rU%Pٿyߌ ]RFև ;yKy.D ,A{z(%ۗrLRkɗsnlhcoI=ƅS-p"l~B.IWʖhCmn+!%{?fbDGiZOH2ةުxD𗣡~Fg%ќbI%i#d>G,eMad~&ч|}p2׊_q_i0~$iXGGI {C`q}('IML N,Su}]O.XVRClXwZ|Q}Z׺78BCrc*< 3r s _LE&xb +ycA@.,t1>Ad_˛ :/AG+$ǧ_Xq   z2\ʿ7 4^c*ߠ=!f&%AN­)aFh`w!%a )s0=`T8J_m7Hj~\hZ4v_ʁɃ_x^ }Q },!=K䷤7|s (8r琇ҋ.r-kO_FS1 hAx9]}ÜfBjޱ >Ą|3!+*e:ߎ{Z$,T*4k`!<3 ^ϳ%^C*Ukrr(fd,=6IR G޾ׂDnk-CyPS+y g$$R0}]' w@IxԏӒ<\|2o$f] f}w%Oe!/_kt\G zB}g_}^^?P`=fK&A23IJU\+tĆHQ7oa^'^({c &[-c'wx-WmA\_>Hb}CQ0:`fqH4C6NJ+y}8S9$a_7uGG%ۋƛW,juX$&e\CLƆg}# $`"p}c򲸗}J.PC`^!X-/})cI?˃!'g!4ŗ]vpI4,HG6ρCɗc_6zF뮳.ҔvB򀗐LSckU%%G{M1)kmCyj) ypOdP~~=l\,.O4\VSm߻M40[M_P؂묳NVM!Yiwp Gl,ڬ+ 9y{ 6W%M#pB'f4` \!ȧx %ڶPTƭRFn pEFe8OT q",>M3H4bÃlD hA43xhA={eYupM=i_p( 0j<H`8v.? cygҾYy][1)}^rGVYJԟ`׼5mҵ. 9>̋+ZbvAdT2с\2[K'i "A1'BW@ 4r=\s5з@IEC{"%M^x#Ƞ4y ђHuQW.zl,Z 8܎Ok[yϩ=gD!6$Z⟒xV?*x~Դ r?uYFzᷓ/$rL( &d!maIc?7 EY D8E4}䱙C#U[+uY!Xdy|YpN94% A[zz#'`:w>Al/-t҇ECd ?|,Vz*5Awd ,,?v/":CZȠ?XȂ\7+";^򎼌<р},MkpF3=8>{ 8Dod؅F\#5Jbf(&쁎}z(>ym쳏*֋m$r3ًlbDRQh ?Y[ 1%M|"7髕 [07:?nKb5F ^<ĦRI,Xh0Z6A LJZfə2z6! bq7xwKLd9y&X._XM/ <|"Ą6 I1h`­,3A<>MKj>XɊRƒPɎ%:SGHTX*)Pf.U<>pto޴&i!#&94ѡ|ڰW"3$n=jv'[ SɑIA? |$YMs[^W 3*l=='$\B q >5Eygd@1 *_z&~'*C3Ccxdogh # HGB tTl"W5<sT\N-^)ox\/ߋnS=DAC_Sƶ٩ R^p"k{%uaѠM4?K ܻ.i ' cll^CЇ&_qCaZ>::(dzxy$:45Q%/q͈DC3y)º^r0/a.g",4ɶG%[ Pq5ZP$%毊= (݉%wh)Xo?WjlIYSuW'r \ 堺H؝vj`u(avgIr%?$ψjO<^+GOIY|&o/5w')3 $F+oA} kkUE#qGUs r9w.Sy/_ڃt_c]?%Tph^U>vo04uV3Th~2u3|z?Q@-h=TBVKt"ɨI~;jCVgc̾ě|`!*|)LĊcWMNr-)*xTxU+$Kߌ%Op5L|}qNL<ګ')h05u\_:UU{-9M>f!!>QڇCޑƸlC̀6TXN'_-D#SgX'?!$& oUӵq?~KEsu",3rTX{I$G҅3 ~ W[_S0*i3cL>\ KV01T+$}і ] &R*`/+ͨ󿐾*?;I_N)÷RAr0fBLM "6R^&P& $PE}ii*L=Q%<| n>ݖu!% G˯=hQ)m` F3$$GFy1?$ TJh^?I; ?`6<FhLD;Io /K܃+od26ľK.qI+=5RT %F0;tsJ$?,ٝ%IBb6?~]]/LgPEW #eC;71\I^*l#Iaf{g9<^? O YY\mҋx5|z?߮fgb8mP cO Mm8I_ˊ$1vѤ=7*o^v\~Fj<3-!7?6$20K_z̯`L >E$FJ*} zCPFIʾ0ϱ >w;:TO8tP]mkUE4y!<1 cڃs0G.mP'(oIPDLO\ Ϣav {/x ~懷3DrX1{Q}?@ߕWK6 #Ѡz&FS#.t{ )cЄ{8T%3boN%xxsqDJ%,~U?<)yUFnHaҥ!<$dceG3QSk.Špdx`?%<}UE6}\ zWoƘ1ox+Փ̃ oU,CfCaX?cpK+Ύ| |;"1e=p|。\Cr<x|f|c^*.Ga륽~$oTLs3ۿwȳ[%+O/f'W$hp -*0lq8c?0a_~90SNA$eY,>L4 G{w!S]!>2} {#r٤}yA!^z׻*Kgy&uQ`N|U JK3B^迅.ߴMDCI!3R?XZj/o*|~SrCgC +۶>,]?)=_Ƭ:vw3v ;%Qb#|cHwsd%ؘ)!#$z2T.DiTT ρg?hNFx،.8?3XN|A ``s=Y3](_aK[I>f#'"TAE}C-𧪃2f\|T܅d(H4ofbx'Cx-[iNN:RnŠ {@,j$ L܌m' q_T>n1@ ρA{ivW4yW_}5C_rU%`U'H1f`Ԓ_ $\yAF;"M[믿-Xi Gȼ>ԞȰ#%r}.Jgcs(Q`ԴT䬲[nahѢ %; *fV F|HنBI?os* U^y *y)ZRmV.剆xvɌj av3\w#T3np’ ^2f.64q ~rrgLaeTLPSu8&LAאj ^twolBH.o҂Q(_r= ! Ì=eO>O&|[1!]Eތ \IdaP~M+d_+Gk% v(D>WoO3Cw86ﰏg7?`J^ӌ$I~b8T xf¶1&[E_O=T P7h_T}/N 髲6ʠʥ7+h hLV~1)Px- ˭>웰$4`5 6q0KǟgN|hx/0$sHJJ޵;>P0a 1{s9g}QMۑk]wETo$YWPK%L|\Djv/"[0.f0PRdd2oʆp :eeK`Tf3g{a6ꪫ0=Kbc3=`T΢6ۥp -v @WGj7-}oȋ0{pu6wç6~߸8/jf[ xԧ>u5#}Uaa4(ORZ|f牆9 U9 ϟJш3|@6dJ=㎪KJ=>r#Og|e u/Gm˶{p} ~~w DŊ V[dO#=')⨜Ow#J2^`VBVI6ՊwT8^;7̄ZHe %,aU$ <¡alu>$~Nk0r5&p 6dy'?We'DC8eGB_כQyvzuy%^!>7pC!?_LME%]D$:ByفM⋐î38k`.WK/01) |qR1}8'/=O4Q|ϹpX^_vea Zaߗ%$2D&vF]<Ƀ' o1UU ~Р&(xJEҟIB =_E *_ ru}+sʈ-l ~Z>։+gۊ/"yP>oSIFdŖrLQWk#Hr+l^Sc ?<7>0i+&9É*р oij79}/vy7b7L/(8% Gn$z?ƨ曙_я~yH("˅^ZBZa` pvG$/C/7ٞ<}J4 #K×]vY~%Ɋ,WoP},t=#j.{orv/2X}$"SbMWy%%Փ=?m;m#Bd05s6 oh$*gǨNU2ݴo&"۰x'/~_kG%(V &x4m[brd* IcIx_3<06`jȄS}9o|Ce0a++,V'7@lt3-Oy%/I{ 1CQ c`? s\b\60ŖBy򗿬%;7>"?gS?COD>׾V`D3f5Ͼ$=ϳxN@FeُD^Г Gn3ll g|3FQrSo[߲II )C˰$'s3~S?+pr,_eÏ'fyUZ>:Mm>f;IƏ1-f F27vGۢK$cBciEi)M"QadAg$i LBN:%c~oO3|;!W1,ޓ/'?Y;3g?S)G$y։ڡ/%T_KX &7ah^NSŐ@}׷-12a}1S0Q%о]o_B{7Ww-r#|'wyx+70dқbH3)_}rb쩩4%ΰ1l? R?d@&2{"~VrCͳ= c+B0},n3Q߽zlxX8aa$<oQp(%IurB&^kRU{*x4\,\/Tq%Uc M` 7!螐-6l&Ar=IO9/o1a 桪*bP}iVudÒUA |%2//͟"ƁyU59X#}IJ-R;PVW_}2Λ|i]ػ}~AªE}cロGF*VNh-?T %C lhKڲJW%i|:?)ˎm}ƛ3f|Wd}ı^.-6f#4#)#$+Cb7b$g{Kxx969}x/ل$S("vKWj۲a9}3m.SK~_}!w{YdZ_~YG3ѰryQw` ܺ'~7] #2!]oD&zTO">4ؗ }.o,|cS}/wYbY-f'|} _V]yZW]/_*$}FyMf'^wu/,!cL4${ELzZ 3$'ȟmS%":IϞ ^WdE1?sj_^#&+=dwM%ŘGKGD\="(bz꩏wڻ4cD*Y_ג/|qݲў$`M1E%/NyߛܩӟԈ+0A./h:^g;Ї[o=Z9}Q%׿Z׼̳Z(D>qCcծ>Q_Ձ}DUR9? 3q۝%!bUiCMO%ܞg=b6%<oO/}\LNCجsl^i0\{f$(>M6k VlgRȍ !I ]5[[IJ)z*DOE')W^kcj-%M}{rxPD 'GO|o2[Vo^7A\K~Cy'~;$H72{'T` C҇rKhF8Iuk7 #Ӏ.}^K˳Hu!̶|G[dȁž?E$}6!%;ٜ .@0@T ST/L-q%??kY]]wg44+%s. ?]YghHԆZѽZwUVB~w_h7d4 #F;ǒYڻzb0N6z- ΰvE5goC ><<<̍6#?|,'$iǪv~efɟvE{}qYo~S-A5BBfLJBy` }cZI}ӟ.1M4e/"v%O_W^TW>#'"ïZ+js)чȋ!);Y]m_ؾ8['?." ihu,wCӟXBxP.f80 WVK0gjڱB*jg *3"ZX}d &?Pp;ϨJrQ?Tb@,\ x`9g'ß>t>ͫ_jW#[cCŸ cE3%_O^T>9n1>'0O7Tdh#P!WGU$+W.o@x_#8/_ t_j?d٢1wewH*VOE`BWRˇ~ -Be_V{Q~ *fR~gfd4^L73ݔ>I>$ s4#9I.1x$ O}Szիp`f7鋑ra8/{x],wo~ Fվ>vA*}c~U>Reiҗ$ߡ^~%L3!/h@p.k:p|1Į˻CcKj8Ol0O_WXħEOϞ, a:~3Py+-weWWpno{/% ?ZH>h&|eY/IRѷ%oQH:~zf4x@%BC1~64?@Dqt6B~ ݵPJdw/I6 3Z`seOWux~->fC2Ǐ5r!Cg'e/E|[?iΣ=b1 *'adbLC| $fB(L$v pB Y s"JSq5׼oG! 淼-? }3TpdnVR}`?#K+\~7pCt4$oP1Wl : "-A1_Z0>ٯCN?9 LR]rܷ˿-ZzG6)ƾ!f#U*ۗX/OsZ eH.l=_UH}Crjc3nntП<T }dO k(7ΐnCc\[atҠ_JN? 6;⁞$[ }Y e>/Bw$P6`<q%x <&̅; _mRc#QP:)aDaiJ諱%IhF~]oވwD^ཕ`32=0 q^7`>,O:Kz[2ؗϟ*2كIH071Tj /J#=:IR2Fk{nme?CxB\XAK^I(Ͷ/yDr8?|G' jd$LjPf&YT}WNyB@rfLb'2?="WUeiDS_K&_+/eh4j*fC\7fKC25a ϟO|mQeo_BϠ8vp3 0*}˔HD 8B~": m7$\K[9 1  0=y{W8'm U})'Bydz=d|g}xM026xҡTzhǰ۞W.oH|&3aÃa!@e`Ac\bZ3hY }cgz05'C؜ŘW Ҍ Y>DN;Ԫۇ:c=3BiHN 9CȻE)Dc*xPlPbA< M_TcvWrk oy"?&/[Q(~!yxM&={N^dsMd6!^M[DZ{`klKK%;vv׃91'thxض65J|~F~5\y@ha{ƍ .n%/X\ّgϢ>Q8_r4~ښo (w ߾m Co)UśyL  ƃܟj!=M6 g!< /mH|[\^j?m j[(ϻ ~Fk;cP } XQ7 K/M^M '^ }>]s _7qYv!ha6"E"׽k_T|RZԳ>SOE>䝙ǔZ}@;8j ~WW]W+l~䁨|A$zT5>X'A{2eJAo*;`R ~d,X(j;;Ճ$;vxU]}ă_❌xV*M) 'L<X*\MI7yK>T\cЅW:p0ka3Sx_}mVVᇘw 夓N,[! /﮴JH6S<ðյ^6 ˳VXsCPLou+iRI=I)D) ~@7G;ޗLTیlʀ" "N@Gcĸ' E[q`DDBDW4! ;0l3#3/00pOuN:Un?$YT9^9wl9BPՐp gpRoACWՕ{QsODhy~7~ChxQƟM>l[| 8_OmMQhY= 4JpJ8Y >'>._a=Le4N[poѯCp}@R(ӄk8+C.ȟ,οKt/\-O6Yo Ogp nAG&I ))R *@:C\:gfddę(ti c<]B(u%/?p?p[w|]q˿֏^ LD x9jxw!uxIL O ߚO*2%!uC>X?A+J]R5ܞr{h<̡0/p}`:+ dhO^$|C"` ^<)y"S /UR{^}Et̟ɟG%7->\_jB`b ;?l}+n| YZJ ]h  ϯ_aOO}j(oM9{ۺj&)_aG'.nHBI(gm'[h wi J^`܅aӢφH{~gf}ԝv+y!njxꎟpMȖd4K)Rr)yTiγ#Rf$B ˜'o5y _}+_e 0)'~o=d~_q wwH5_|' 9y_o]^WVJ !' GcLEߠK&[gh HI~CRzԣ> #8{ ư$A}gZp_◽eAZs,s!= 'Q+OCМrŸ~a]AB/(Grk4> _G?җ4Ë^w]5!xOLˆQŽe~?Tp(lSڗmU=" vaUЙPd uGP1mN^!تzeggy[<ϿocYAܡl׬_j8h}Q~^?y6K.ɫ>'{ibyxft"xlC>~p 7\{z;B]X&mqٻ- 8TC.fI!k__-auqN^`[o T `Nvl=~wϓh/ +rE`W ő$MOyC" x}'`G{+!0ep_,9n77:^|''$|\o7M7m.|8oX?=?8>׿zիB<(N^!] DխO+,HB=k(҇px֜ꫯ~{{+7Š7p)w ~1",bCVI 8~x^&0^UCq5Bս?>b=?=y|+y0WO^!`!a.h(|?qYBV?3UEu轟l>M;BrQ8pռ %[R\~Y\o;yV?:{An;*4?,gՍCwqÝd04;<}hN۶?Ŀb(}vo"܁؀G%P/8ٻ8WX:kKɝ!OIv\g[_M+x+?^9;cY<5UoOɷ~m{r[`/ {I{x|Uq޳'"*}̄BEo1~ͮR'ra<{C+v}OKC/jEI.9p(074V}e8C leHρ;\Qހ| _{~<:@4|J^L{H?5O8yvU'ţч% ~\!qbc|/?Wt`= Ee$ !CpH\qڛFH<oG'>*:GW'y=3?L?O:{;x$TT:?0;>z}?@hGR^֕e+4p Z$0ԐN)X?tJ0A[bf9@rQ?}ڙ?U6@%l|a|MFK.|voE=K>ahz ^1w^g|\$]Rk/o _5 ~|i)_l'Kij7V;9LSAC)iEsb> |fp0d-./ C>|fL{3E?[WT1-O7 6k6r] tfhbIфNME$.D},'~g2S0x87W|"_C'_&iY|!|k&m/@ -EF |rxE?Pd">&{/}3-B/}ׇv^g/}.WAP_η}*wG^M}<=fAezD.ؔTɞ#18>∯ѯl{MT8A|WG{p)?<,5|6Ghwn"aEZ\7WgzƻgT| Yy MA#ɊPh5M\%;ēKS>3@W4|}aj]aw*_=˥"|vbg>5x!^ĝILS Si.4^ķܡk|3sxk ξ)?@| {E챏ɭ{>?-dAP_?0(9 z .`u&B(ɏ"pM8vGB^G_kS\wG<#Wϧ~z k/=Vl/&^ٱ|bz}m^{ԇvѿE1Z< Y߶?M׏=G#Wd\o\۝箅$]Ƭyd&prp((4%6Jf(kY<\QMϹ|ko2v%1R4?VIF~I<$J9i2دhO~O*Ǘyla5qaIxTF}!?`MI=>7oN߶?M׏=GFrl ٚ L+)!*nx 'd YZ?[S(avUOT0oVgBV_%_K2|瓥qN%RTo^: sOw{}(S0aC`DDgբ0>wA$c6N$gxUd@P:Cvf RRx(9#Ip*jhG rx,򝗑/D wNVW#دl/Z;|m|&8|R^3pgOp3>3>O(">4aCx*\!E3MwǑ#ԟm~ '=Lf`1qCYǍEnkKnp%||7>~.glg*>$a0QzòaxZn/GWnj~S{sR1DFΧ5iaGEUO90F]#ǡIȔ%=co 5TًAڋ:,Ys[D?{ػK|AP3;?$綊qyq'7hnKCt?2l'Yjdr3<4!P#Lx5ť|?(߬|Q8;fѭއJ%9|c;?s`"+BOwB~܌Lx<*{$S#|o#>d/xx?R{aݧ'~@g){_ON[o a+tP;|;?xr?t?!Ea%x|F%+ C.$a= ^Y|5|QBy_獗6;G@}5P~TSx8Ot俑_ِ gr(>J bLxO.RϪlR<}K^CogONU&_G5SL3CW)aɽ>Y mgwYşCAZ_-)|>O5l[hgZa*1߮7?i<^{_CUG8 QVs'S.ĥH<7:G5ˣ Q ʗ^N^{^O~O>ٱţ>Ӈ]vgJSR?ca}~ aN$u x?dQ)7r1?$?LU(LKV2J< ʗ+_~?Ws+ë/O|N>ae^+)?abO?7mqE3ٍ#2y1aA>\aWZJ}M뗞J=>LIQznI`⇦y$ yʗKԉx8i:*Tkb0Ik3\FF#_O% |IN乵StRi!7k/O0 ̷9(?JtӠJ޳ӿJ.>f_2~ZTd^XP-mo+ǁ붦kÚq'ޣbe+?O|uB|"\ŢT͔S" b"?[Gs4YT|賀F  {<.F?~qxjolb_dgkhGG#?79a\ LOpHp|v%)#qxViݩC"*d;w&_FR2#7{ٯ'BNT^C|mY>ɠ4>P,#~B$ٗj}pOT?tjV4Nj_ ~PH*Xi㻤?>룖|5=5Qp t]2"w+ӂؙl?9|˗g˝tf,bL6-G{90>(Gvhhuԇsa:[)}ϹŻ+yp16 s~nplNKʩ+q_/eE4Q#J})s/\7ġ~䫴O>a}a&I!j$}^ P?35;#}uW&K^Fǯ|U%=x_j\ ӌ*ZZCy![đ'46rn,ly:r#xY/£8iI~#؋|No\?jdS[Ο g2KBOC|' a//|F*{ьb.=Y s[.پd>Kw_} f#oZ'#~2X =_.>7(|qm?o9[\WM(ge[h|B)XMÈ0OCE]dE|vo܉̧@"K-Glg?{`9ڇWv:ײ4f?\o"O:ycMwWEn.;)u,췓_n"\u?Gٌr,_n\?gfmqb>5]|_˷~'>>KP%fBkMo߷~gZ9G5sw>;Ჶ4vja*ӇT8?֥fak{Lm7_,iH$ʼn9z=Yűf)X x yyk*ԇ`&g34ٌfqvvm'_eBS _lɣN4|bBjSP:dD jsfH6\+lj 2||J*峧}u)}aP([\?+Nj%??U_LDZߞgtnj*r5;t?VT^t?H'я3ӌ|OUʷf/pKŧ^Yg {9Ϭ,s3x<ݽuԇWS}^9~!?ِmG|xF(4pZHQI"x(_|s9|/?PܭW6_49O=y}5P?V:1Q/=W F":Kzs)~~b|l)(PKT@1Z՜gZaQ&_nK]L\*]SIV=iep>39z m5݌>k~SZ?Y}_t*h'>7*_+#T}+qXYU hѩ lۥ@9RNirY> xm._`4|?DSXU|U|?szz콩煲qh;qET߻4zQW@c8ӬP 'tH\$%O "baPH<@O|I~;w0>,Iy,fCLc>|¥+^m= ٔO?"{~~ Oru/S>4ٔz| ϣa2'3fnx'*yXkR~?|lu3&gfV?¡/} `h όw೅|][g\"בy1>9҇>Ƣpk?oFL}~ȥv)H Cc>r!"6B915I:4r~ BY"rZMƀzf3@wh _`+4-SA&w4{Q%}6>= ~ұ3?9㑬M*}CI<9/`t?mVKaqZi=gqGw!sS1E_q?{ q@P:fyo犲IU){*9o;Wgys6qAG?Ϸrۏ"Og׊vm? >9ik@x3_~|{k*c &lxȻ |$5qTQpJ9/Сg;Eekuk/Ne `7دF6{E| hBj^0f{YM?gE 4 858j3M0kw}00y׺1:E1ԟOn?s7G?.swMF_jN8?Lwj$ߛ?IE5"" 4'\G}Nxv0D|Zʬ |텼HFʷ Ug'0sW"g1ڥ56}p9g>|&]ԇ!S_hҿ \Q#[ aɿ'//CJ%kO~O#˗;Sϧ'*<{TP?Y{wsOh?j`xT>+(֩cP |~@x!oo=6w8πo_X*fHLGÄ5V%1ZkKJnExXK>iq? 3ȗtF ۸*K6S#_O~5A2Tk/ n|S{i*ߞP'7i@Sӳ J{_\*&ѾW#Cg0>âW59Uc~= gc+_SVOoܨ1 kɆ72~!O s^1a|:h5tXYDx'WS)yöೃ|}ExFC/Z -= `ۼvѾJ̗@yw3nTQ-.>~$pލ??_%E(E{zWWrC9dw'"cE<7k "_n7[dwn$_j_' @ۋ~U|V"É;v*%O?+T/.hX,>PX<(}mOÔCxIJ}(۲?Z;~юߔ/5_Hِwn >SH7.c<⯎r-1qIS6pӿ"F.iS̹vkr82q O\*%7kZjuԇ~Կmr{䷫3\2T>xgϴ(&qd^9)'F8a0x||/e~J<-' 5tJ=s|toɼO/% .l5FI{k/~f>ӿ7g EoEhH>T+ h49ϰ}n/)^w7k^T>Hl?\|o.j*XB]D8um0=:d+d Hk|Ak1g5+TtǗ"|*J> 4?i7X/Į,%9ꃦTH>?Tѣ^K8l>Mwj툒 IyL@0)f 9qs ү#\)䓜n4û%F8J']OBz>iNʣkﳕ X|K-O?'=TS/{Wi^qyPľ 0ZOl,pgS~¿M>AX49?]aZK‰~?Y$H 2$p?f&KsM9?6{ }|⣗T#Rȩ6rPS>vgk$FC|Gs3°wMNW'a๲6t??wG+{MRK*6 k%*N(c k0m`9v;rR$e!. ޞDOMTO%ђã/±i*_^肌be %@M3^KR3''>cGe}>( Pϰw˩=wm98p]?m5r,\Փ͓NxplmIջGԌ]f-$@|p %ϙ;1R>/r.1'n/^|B?$5S:fhgCwf{L>Hξƾ5|v[~b_:fOY'7l奘o)=c 7[_t=췁IW}$dA(`L \c>MDăHS)_<|6ӵ"I*od3OYM|D)6ja_Gxd#FCQzэ2L8_sfxޙ-GO< ?@>.o,$- Iwi*@t>ház/+ŚFYDr'?|'S5(+ |r`/mgV쥄O;;7 Q4٥=dHdG$h-V/%}(?Uq>p~Xg!q/:cvXJy{\LJ֏#꿟bVޜ$d즹@MCx0rdrK %}Řn||䋛8rxȦ_| eϩci>a%gbg~xi15Oޱ>ᄎLLԾ=lK svÏ>/$YVTߔnO~ ?q]?rge>~_6$?d[P><0lSdɰVhk!I6>u.Y<'-[gW|u:yse?tx}k}h#Q;# ?t_?}VOEYW@R'EAhM֟3jމo5*nAS&_PM6{4x4w~娑oafٰɗ _{\|?Kߟ}yx30ģx@525>oU@=sxQdԜ7\sǖ/γ\??;d5 %B^Z _?#PY>5=xh:|xEHvRI*~.jSb>":>/fs1T|gE \4} TQ..kwGEW<- 5rNB9аanCN'Yi||%1hZJeYKv;l/+P?sz Շ|Y{?Oh_Ζm|{x}?$w?JB,MA렩RҲ֔k 9 𩁁|ΚtMj[zN9FKoEz>;w1xg ޻q%X&eȚð`q> 'O7 ?OAƼ}m5d?!rh<&=C2[oj%x?g8>^-qot K-k/7!Ii+е|%>%[%3[i/Nj |+ukMBQ_c/E?sQ|s>9+{ţ˒ot/@n4o'eA<6WIkE!opqXJl8@9׊>dY$9\<7\b%킅GODl f%~!3G^|Π@^1^?6=Y?3crͅOtG6"E׶(p#g>"M[_o?K =֯|XįvOnkT NMd].H/“ y"QYy|ἴ <o񳦾Emg zٯ^繶4G{qx^bKO~??_[TOG=>(xZ8[[Höqz=~9AsG,c\REh"jt/tov|qdHدDB> >o ~|N®i;==GtG`/c_B>U#ϴ= aghYTѭrJMs)MQ.EϖvZqS =YGo}&_~O8g~H2?yH|v2{?6G>Η>>,hGG?Es!rE^F"$p[UѦ}ċoea$5!n ϮTw`# Wsf+_(-._ᓵR>9fx<,~ȧME>39+#Z(XT&_"7% g>T'>̔>3#~?xMU%OӚ2I%C:lq))~ |;k ?EXŅY/}PP ^Ih{w*<F W.#TٯO/D {k>}'K]'A O!> ^x*㑰wwOVЇYh#_>x*ןWd84~c|Q5[74r4\sUas'QP̣S)"<Va|H -ɗA~z -oӏOj}>_">R<2c_>?,C7Q'Q~>؂% *PE"evPTN"ٴ<965oolzÿ{ d@n"٤D.q)}Q?+J<|w;W?FSm'_yGJk_BswDs%I˾?G"lg?'\yl|xÔ5#C|knl_{ZSeg>8™{c-~M]ٱt$L<xdkZcGIy);4Y*rfpsS:]VӒZ#_J& ,DZ>S+ZVs|j/^Yj/$4[gΟwOZfGx#W RS?"S9}^8ht~?61{}o 9]tPUoN%fuEG8֒) k_JZDgOv߅NǘbzG>W??7pZW3kn35tM'"ikOh BӡFVsͯHHO϶CQLl|x񔯉OO|Y)2>jl$|<_D5㑣}ﳷj}8LįEP΂V俅h"o䆆ЈrSO]눧|x[-3Qo/Ex^gG2G|"ߠ'hG}8V@xߚ=𣴰)k0"sbɤ3'7Ă ⶙x Q^x`+ By.̧`IRgmQǑ/m9Rf&'h셔?t.?ϕs,3E|5F} i>d}[P@O[OK^g}^ֿ5{oi%_r%hqO,Ѡo |9](m&SGSi$졚|I<0T+v೅|we郷ôG&9OV6~ٕſfK?_m4O'mm^aC z pM}qwbGExpodsH3C~#4(+P)_Fnm8dp/mz= _-ϖ<3FOޛ'izȿc<x.m}qч~޿Aax맗?qJOG~GT8OD=HmAej ip?qekϪs[7%.#}jE5[@/e !>ۑO\|:{WQ!u {8vW/>0_Z8l>24ߨZ_'[1IQ|wK$[<}?LZO\~B P|ke gYf_l$7Nn0[aqrx Q@ KH_%|W'm/yI>=ٳuO">R|Hy//O1F/K)2>/1޵'n|G?7 'm3b¬#a-Jfr޳a, /<_<ۅ.ʗCk/+_Q\Rg|y6|Ye=^ūsrR'[,3[kXܟ{ϘO-'k_8gHȶ}?Fn+6 PL9}ϝi.|\NƇ.3(;f49n9pSDE}ȏJ*'!߹|KL/+[,_(_ϞuO=pg^? M? |K+|N}%|:9r'/(K|9>I++"Ƅ,&_%=r6:eTC39?oa>f7O sHxlʗtM^]|AьV@Ƿ_jj%|="ϴ$10ӂl:!߯#Ld~%A]/_Jh9K9؎^R'0 #yR'{ O?^FS|C_5?~.{HL4mQ~zn*FH9)8YA'1e  WIYNZ E;Jbrj4DS!_Eq|'ɷ^*xrڥŴgSg,SN:_L3o9$}|l?SՐWJ}pɗ*-w⬃0{C3߬}6'_824é~W_1v\Xwg#Cz|skL;M1?Xrgl\K2-ȉY/>ng| أ-'G􌏲?Ү;ҥKhfz3<5x4hSX5luCݽ*|O!x|K:_6^{9 'g|R|<]X}j|Ŀ^_viR ?vf(iQ3U17Kp0p~j&r?-CQ*o5(_Z |;;Da<=D<괕aK>*>W?K}<0l:Ŀv7mlR:Y<'['D{'R1~T:~|/|W'YV^ʒ?(,V?-Q} NGF}nick_:H7~? 3̜h0tXˆgwgbC+|>53Ɨ`.uij@!+J>500 ۞RFRR/|"O |}d>"҇m"HmK>MnHq.e 9a`ǣpEdM o&%ӎ"B?ݍx(Z{>~qk }vx&3RqJ=\H #nu _ŪtllKj_" X{:{'՞'o/]5-K?w|OG2z}ha_٬U-FnIK<%|* ci"_>U˷^3Ɏ ?u'GQ?_oy+_yx㍷r˽}雾!yԇk;;[.}c~m}ߎ[F_1ʮ>_@vĿFOx_!eKbŒ~K>|Z\*eW<)~ɕm|gJ>9Tϣ4;x3q["_u_?ß.7۾۔nq{ܯ_4`wА?k+Aai?cύ|cGˇ^vNF?xS@Mx+ KؐpZ2FǓ|t᫚cZKʗa-jS*\|c>+ROHׅOrЗO,1 졟}9/qįGG*?:OxT6+a4Chϴ ?v>׊n%6?=oOɯ6fbpA wwU#y9WS:x*Y<$AY<M]@s>)ݢTJ;i /|ɔ||W0Yg/zVsi$`:{ƟOgd?[ogg5y^???KKxf2>Z0M=_}og׊*]?E'xV?'M=GUhoȣ_m{81)d7h \Z&Ƴ+`<?ƓIrIb#~>flI_8r/&_헙=So9&l"We/<珅yL"{食3nRsOmܒO1~ ^ДAJ #җR X^Zo'Kįn \z]{K$Ii_K=G l ) _ yăga~Agh*=ܺ3& `Lǔ/ǘM0|>"b"_y3d)=X{Am 8{Q) 0>t~|LZ~j݅O޹'\wu?=5|Uщ/}?,eT\Wk;}FȯFgWƻ*?^ _?ԟ"[_~5!p N0=IgglH~5B?w?WQ. MI$;y79{GHd G!ce`{hL#lY5Qȗ{HH},?6fM擼oh/i9UoҥKEKvC O5Vç?xů櫋xw'?rA'I2adgđ^:pxf6@WYNcH<$KG@^kڴj~br[ =;E@UL!7'':\~HxjZr~ݣ3g/kGO~w(>;J=5B/W840c_L3KiR@W?xq~? oy]Swg|$K=OYrځ,q_S!2{-)?c\ )W,;Tʏfu7 #s?HrZȷOr%|c/d%{J\tşYy#Ϝ;E|sg>__ʯJG}0dk2mS=)۬8@xq~V߄thWɿ{>'?6_ݽyߑ&ஈa{^I#ysU&!$!_b 7=^4.1"#)n \ _eD"&|jNr{-㧿l _:e:U2ӆ*]?,~'hV]vӟtn'J x &O7/y?zM~.7ϯZ7ŦWCe  oc0қ3pǸo]*痒3,L"%xduy ,s`O ׽xοф|ɟio4U"SP/_Og|>GaO\ |݉YrַY? |Ng"2{mOO^&?#?<5#׾6[AKm<:oU4v=F>^xZn_x?d-cѴG+ǟ_npy1$/.\d/)UK=MJ̾rGçA?W'w܊.)"W\>O}]r//~'?P 2$WavHPO 4*~5USW)fgl[e.υox1P!ŵM/9 ! ۤhH5'* 3ݿ4wfH0E/cTW'!_bRgmY>mb/v8҂Ϭ5>w'>\s_7r-y/tg>y+_\x&nOSRa*ǿ>k~gZ?i>t1WTe#\$ɗ%`4 xo&odXa<4~qdP[9ijV@&7k||$_yoY/P䫷_^ =#p|6">tL>qŧ~`=q<1kOn!0/~xTtAO Gߺi ׯvŻqD1//UگMOvs# Y8ԥs a?)T[%ȇY>e2S3>=[l|+qx|wp(>$iUY?;ZO+"R|~?zI>tgw2r'XIijxr-R&m-/YAMI* 9Q'y*I)_yI |AᬈOG߬x%Z^8,峏9x>}6?Syםt>@>L]?י_ LJfGG㟕{ܩvDs ?w!~a-5W.s#$Hhyl[F,5}+qȗ[94e >s6";t?li/5t0"s;>39l|eOC?g Q}}O't/lίFxao{,oEO4oK,J GN\_x5O3?>S7'!4J!M7|?n,6*ir'lC .>0Aqy,&fp=ZFS<9f[ӘL䫁a/ȗ /7̧,_Ƙ ǧIf^Ch2v|jOOghߎUػ|} >,[>P?^ef]4__G>Yvnw1>__eQ{{u{u$U3L_5~>1!~wWCF`ϰ88_/yKmG~~BCI> 9_WO+KK꫾tK(̟kf4R`*gwnn~G8͑($K~e]/~Sȍ+gQX r)W\QnS:֛8Y /^$,~GJE9>}[T_;^-S'#k?E|^wu\y~۷}vMhF<J^{þ[E iW_}+DvL=qBR?o??zֳ,adCB!2y;jO'B wxƋ_o]}Cy'< ?xm/ omB/, ~|+m{:Ļf׈'|8g 9ӈO񟓳$E~.HPDO1Q'2͵3ьquW%bR8bQ7`Scೃ|o$S#_9 Kw!؋O{9/r/}񧲯P20{W>whN /~BU77U+j9Qz4O{o2įO7ʗO(g 'CWK3Y|?LY} Kp@ĭ75g7oTCS7q=cwDΰW=pK=5Dnΐ,{+4?.)i:B^I{D֙M>ʗۄ'DCRɗj||r%UeKR$~LI>^Ȑ^@7ƓO8d᳨А5o6d>u~?8{\c} ~g~~A*нe)pk~nJx7==~}qIzJ%l_xJUʋ1|`3W/7?< h3Ԭ/Q??71DMQPdҗ92}8JmrPcwTX'(lӭ}|)B}GFJjTwU%ߺS"_w{'?O;>WJ/F-b^_Wd{9cسoo  ˫F=qP\xӞ 5\]]῎_>MjjZnB_ċ|fYC7r~{ak . `Q:߳!A67B`,8_OG##Crģ1*G`^<87H5%LY>_{Rvs^U6&5(TWQ/'c{<ggCe!qQuҥ韾[, &[$fʚ|4E4^,|H'~aEm.Muƨ68aPWANvԦFq|Se8 'x $?R"͡aչ| &쬔/D7b|i|>}-Px5؋2Wc')җI۪3z>8=Q B?'}E#,+Ģ|}_}(ub+?s?gPms41\/T,kjGm~X?s>?܏qO`(Q> aĝKɞE O8^(k ؂@?@CPJp OփH ]GjkQ$䚟f/W/ K{>3z>ғOY?3E ðwhsA{rР! 7e +%€j6FE"0uv{%n$6^ a>#>lZ3ofW_Go6"-. xyRfP*WT&!}&0$xȧi$I+,Nz>F &5iMI,'b#h/f>3IHaS>]Sg֟?zԣ×ei@A?m 0I}k6hP>L3hK?!m,Zؗ{$hƟo`P\"=|l;iiEDAa񻬧6TJĥI9$ ;7OtlL).0+{!#W4 D-N#/7}J3~lc7NNm-_eHOko_9ĭ^J%$zp},|فOo>l 0`{c_  aD9!O9dT_<  ]?}%9mjϯE}ucS>[/tVC3|xﲞ@2hl rt5S@O jш I<&IQsr4{ |o6!Ւh+爜|AlO>qjk|&=i{exO}KKCO4lw}\DC_-(j4&Ԝ2^2Xk`U?uے&κ~qoof{>N<d_^NߥOz2"䭋nn߶*\2$@܂!EK>"dw~:~}{nA2S,;C O۹7\wu7tӧ}ڧ|կG>\ K'>Koo }F+Pl6K7OT Q ꯖB[KBxVY}APgL+C|[_i^o%ϲ~G$??7I_LuA^8@Ջd A$=Քg}9{&14h ORS<_,%_?)_knO췡xY5n$ެOO^z^gM<1y&'ܞ7Z}xS>L{n%ɯ;??E\eC?? SJWJڄs|neTo{'PgYCCo>m' \~'}rI-"SOx㾌鉫/4$(>͵zU1R1fy'tF(1u{|f~O48W|)}0g|CX$_2[ gM\Gq@] ^9X eE5-tk9LIOunn}Vɡ5J}RŴ| WgF0SZ\ sV?|_ӇOZ]z?)4~p5 z߇}Q `KB`r?O48דooVW8'??RY|I+!^O^,?lj#~#϶m6I4JYsMgl)5yFg>ah'Ly!d$m$_N^x(U`O5QV['GښO_qk?d>I?= ">HΘ?*|fL?_?sDܹ30W|AΙjYVq\ŝi8S, &fijR$_T/_t)OBd\$TLOtB5;3k^|4{g4l#w/dqx_w,s˝RiG+ܘ>>e+ܰ [no_R C&/0F%##V:?Fْ> yNS\uă$pmFQK uKG'ShO)/Yrk!_K{ULTS~#H泃|Ǫk/擻'|7_ Bzԣ%[q/9/ @ |ߖ_iUޔ7;Go|#_;yMuOoYҎn(y#%b#7nIq$>076ʵQxʊ+(_T'BFq򝥂"o\J!>s{ DgR*{Sc/>4؟ԎOPho|ޛ~\ӦCxަ >eAWxy}9w >?3> GH/nU_8:Ƌl>5*4~M]M]⟊+7 `7Z_Xy/fV]@/;3uE~T>$% 5A2 ~HlmNKViT![ !7J?^4|=D: g4#'4Ӧ|1ye]H> Æ.bm# }cDT#_Q|_Wzݾ*xZ/M~+=2+vK2o[Ļ"[=:O ~+dM򭲅I w _?$kI* OQzܕ'/9GF45)ȗ~e?t^4|.3|t"/ #G P^v^?<3;{"Re/SBOjǬ@%Y}Z{#uߟ>4ؗgJgɗ,u/ʗs 'f|Btl'c0't-\>Uj^F?]o1b>_z§NwS?ipI*i=Ԡׇ Ѭ\x}&"YWw 4&};i.($ +X>K~[>ŋC~hwG9UV._J+nG7n4o$*{G.UC^Sす Ysf{IJ֕,O,#_"_'_( 27ipV86WS4^^&/{䚥 n}7tSgA7=C׽..^lM IC>L*}<7i^RZ-Ui! 3yFc4j<쯖ʯl0n6c*?,2|A:t🛢H-We3qC8۟hEcLKIERɧt?6>5H?׼&3T]';__(xEg{Iv#H\i_ aG]fSr]K>0~~`>|[>OQ,m4UuAE|ٯ̧~g|an/Pf/R?d.5^|Ϭ~5oJ9r}o| ?ۦa_{&z}0I{:G tJ#jVO=養zGNF{]g?v)$%+saӰ}_ o߿{lx\x}ҥgd2>mzYxz2T\xJn!>..46DZ{?a4 ~.!Y> |xwY_h~7] ks^&ϵIQF9sP?O7M_s5 $ygw|&\y>k2S  e+[sfPO6Oy>S?ԅ'kO"7J\I |&z9pE L|?y([d(?^a`ų[D^\N2{J"o9EͧǁO^&OI?^_hkPt~9>m7s?f}]xw{laWŸ[M \Ug*23|I}OH)ʯokʿW>'?(,oikGjggY#'ǔRp ) JO rA<<$IW}WSNّ`Jf@'~hO͙ZKѵE|!lx|KzY%z{S![-<8ܛN]~ XO&gȞ/P꧹ʰ>krOc\Y*kوn@u>9޹c?cO"k[_[ hco7Cͱff1!P";,(4cK@8)x;!m>3ɧm7P]3|K!gMzK^GSHKX|m|r7k/5z>Y3 Bq@{O(rwGajp? [\E}g\kg4MD<kE&*i FoUF)}| Yox7N>W_yv+jPf)z^ق=~;ciDet)<@c3pg!VSƓvw'k<%#e[ɗlTY'3w^c/|p?S|rvgO?|cs;!>z%||̧|{n 3ۮZJh5n?G{AlOki>h<ւi>!򍿾 ٭(?#c|Wʗl//{7G^wl&k/bB񍐿,3Q Gz634>|b ⮪J>nbXY6l5𩗯plq{6 | ,_ΰ}mK ā0T"|ަ,4~z{710OqJ}0|c}gh)ۥtW,#3K> ,zW!u'//uߦgE]qTdo%F<'H]Bјy}'[⸃&.+)_9J;#w\,ߙ^vb'.,\hޛLFQv剆^Uz܍ E /j?F%?0{=b~K >Th:;C>6~}꿲H]?OO7 Ѝi(H Kk`K&j4%gbgpj$9< 6/(_W*_;x-a'AAr(l)7sSJ{KS>S?,6 azݵrE=y9u"s.LMsS?rdE|*϶Nꢟ| Ї>tOQxlE^x#Ɠ֠Yg1/+dOaS>SϿ|pJHI 0_8^psor,ċFa| ?>^~]S5c ~<=ɤ""tI|ϳ+ql&OD ƒMnrd*On=7A'H]T0רSwsk5ⓚ)&ޓGf6 ~C;?nLrѦ^? ьHu>7tr{Rr+u:)+Ϩ~a4q{@3Y˩zyoDg$y| 9lye<$Ar$i^xF_,@8$;/mn"&?~w&u5)}+˟.PG\"lAN;ЗM/ɱ#T<\t koʓw[ ybwKdy3OЇ~w75|7򓢞 _O KEׯz< c(_yJҞŇ绾UX wՋoȟï?SK?r `]qWzdKLAO~:gtJ ;aE,=HCD>L(i[噯_N]ISM=^zE~˳%r$Zl?N$k[V]tQR \̹> 'hӍq& W4DI=yϧ?w23Vwe2G$|56ӱzZ3?/mf|U7i]z"=F[ `?76/4_xoiOMdp_*o!BzI›l\4/pv`)@3)q|OAy^nwd(e̬_D幮~Y@4+ )IMs#?IFJ _7N-wK/T]UA4~$On~k^ɟ|_w[׼&f p;WrԿ NJҐZT^z< Ο碜QWu(Ϥωm]Gd?~jdO]s ˡ7EB>g^%5) ?18q6<< 'O3<7hⳀ~SD*yqZߐ/yޢLe̛<5bI֯nnFKc0r=8O0k!vh:MO\ިNbUz$ЯZ~/yFMN&:I+3[y/,Q9وR)rK٧QgƟjyF~[5!s=$>C=l{sqEeUʿ&e?ZIMǟϪ)Q蓤:~XGѤv\ 23Ö ɵ#Cn&4$}^BVpxB hrU;*KɓӯlJ l_r"e%_/+?;?KrS=ğ#4T˓[4\z B2>~%ٳ˶!۞~WW7Z2W'03j(ZopiZ(hZ T>TEsKlz!иČKjT<ǣLȓ Ť=ӯ>o<կ6AAA]y=I=A{?I[מs+rxc,7?Uq\~ vNiYϥ49?~%[BSe*a!֐g]; SM+NK\)qEQWy/t$| Sf-/._7ɔgljZsEyh_/ϑ Mf,n6oiizJs=C{&-gu{5l/s3ߞq!,lq=<.폶e|xq jɽkDlm}o&k*.*:P gxׯ[,߅KoF8LSy㠈~$/‘[_+߾麐l['Ӳ&+(av߫gqm&7;m?f=zО5洊?*׻u=JjQk':(QcEKKY'Y p$OF__㮟+ʓIfR,O>%F5e_)gLwzYu&`TYJgGkV?p $N֯x 5g p|]?Qx`#.B>Qhf8]S0 2xFCɞh(}#^Měݫ\Cc\ӳ.<yVN%lկ^W~5pgY73 l?vQn^6=PQ-U<~{g?%˫-|\8EƻqjA' c-N1#d"ޮü^x  C'O3rn˳ON3U|y Ya?:o|?M4S+F@@h4y{ON❁ F&0NK5YO]Ʀߪ,_!(S=KY>$l_dI<. hVgx@,-nq=]=hkqe{ƈf~HZ0i?Y[緎+ֻR hڌi7Nk?LT#>Ogߖ?eFj/ %!8'U+R5\i߰]Y]J_wG5krHYRD RU f9 =Cy8 ~IadU~h^^)W~S|c|~?'[>o?Z:EE0TQmW o'j?EBkvu(W #!p$1)ϙfS!ٕ~&9Lү/J% Ձ}GK'a?zeLN6(ˬ4*ϡ<5M;, ?c2l͟Eސ"ף=ԍOtEU02UA~mCԬVv=>!!u~sdȫWEhI6&6VĬ'^N.#$hv)lkE-r8T cHy $ TPS'dz53U" V)ӱ<9>x CZVgEyZ^+l~QKy]OWOT{g,1y}m;#?; ~$/ȟĵ"gcBWs/~ϳO7rgK:~q!k؎5 m]w4wXM#_FQyZ[_*y&|Y_ȋmr_O<6ȍ7zmF5hE쁩QWD޿ DlEAV@U{nos}lϙm+Ϲ ?y`~FşćSS(~}<~jRQKY?3kҁaE83\ {I)%rFҘ?;C)%ri/>HkwPү jkw;Я'OVoW'cN<5c~Wqya?k3/%g@{}'+cSzQ|u!\}~Ȍ$+|PJ2?>w7ϕz0$%~Jax?\k5y5<^qsvt0eÍ^#3ьp&OamMtsf<2O}YAS7aWl g]*%K-4GArFxoo<ǃy ZMqyS*i_3?hOԯ.EӤ~!9&Y3TEOH. ?\ #v[j؎ӯU'7mU/ނYDdoDHg~ %__}+oS/U幧|?W^RGףU[ڃ<(ͷ#{v5׋ ?įTe LuJ`=܏tʟx[ܗ-xxN}wӃLp&΍/QlwAYU3`_Xo?  kiI7*OZI/Oi⫨<7NE51?T\/Sٙ׋f/Rq. m#sIZ?] xK.>$RBdN̅(\[K<ӛU6.E)\FJ8$w*ESS6{~k؊%Ε 3hٞe~؞=+gc6vER_pmXHKx;hُYO5#&1OKkmB# '_d8,Lyxߝ8\ޞloƣT<[^%ΑE,_/ʎhiS@'s[)-OsgHCE{ adIsd{hSjKs~hlcz?7_4ÿR ~9h\Rp7^䜱)>l)xʙ%~B psA&rKo)ʚTz9t{Y4%WX;ڬzИr?WU]kzXn.?ߴZoQuD&K{K?y׍-`ctŽs)K){_=ڮwG J2hn!]9ŃZ=fx <^<W bylBrۊzoqTT:qTlqrt%P 3Bv/DkgG#Oy6wXtLOR}ȳzd7hoWg =s!H⇱:?Tִ ކZ X6-_P߄Y)\q_(Ě P&f7cndՊ2a)L?Е~Pɓk'W ypF9o<)ڜ4쳙3:C sK؛=| {haRu{t|8,t6ePJN~PT9&̩ᬗɽkE\HH{<9YjknanXI3 y7ROO~S~4_o_;3r&O_%vY?9y̟stUb!v[;1._#m+>$7~ I|.6rh?.1_g!9jlx44aօ̘7rñ^(s_v/S͉E@EWnl|yLJZB}J3ISK<5id<5ދ}c]4$=~SNE֯4~؞珹U|؉?o+7ǯs~m>?CIGLQڼHy2$#/xp3] lj3QԔCBȑc:Ë}ʳ}幎Sg(b O9$mCc{.^q-[J_?R&;\LrD3\Q9654 4lQ)-}L)_AH_<%<5e]_rߨ?+2DyjĬgn]1ɘ_ST䇘Y:"2?x˓J3&$%[V= >_{XSӍ=3l?1\k{pA=6?D4~[/G3Ook?f%K [d|ùs4Er渕Wv x4UTᴕ"03Elxr4%;[W#O~l y۳gK>< ܮ}w&VO=ӰmzZO8?lݞo[WwR.߭;"EC:ڡFqr.Gp0 xR^~VP4)gu_1˿w ,h0W)y\F $4U 0ֺ)<*e?Vߝbf/~ jX]׵O=(%\տ֣N 1蜽=,~y+ %˺_ݯU hz?{ QlIͼ|_&C-W2MJ$;eoEJ]~5W|ԯgy#Jᯱ>jJnTQxo`7kXԞm*3#ǤA~)"WCx'oYm(f% S'R E Bߘ RV)OsCԶ/)*|zg<3"_ٕlT]g\וL>8z][=-SyT퍭+I|x~i#9'a0roPH?cI0Eᚔ>Fd;ՔUx,ujCw]z~B ?I~8~5_gC~ɧ>Es8ug9;ȓÓZQPʓuۓ,G+If9 Fe~ϔ}wFr:_姜=Lue ?P¦a\{YϧM_6_%E¡E)QBph+le'Ð$._?g4'sB~C+,_WMѬh>~3sȶq,+>>bh<=Zy6NQ{Kۃa"0!M3iwϊ|>4_H.?#*\zS@u ;gFCd!P4l)w|Z8IQBwd~_T9`~A%_AƤjdky.[_Y_|ia+UQ ACQRcmӳ$y.Fyڿ{~~m/~ͽv[UGc,?T눜f5#&eQ&,Y":8:9G^nF%"8’OXcn(OϡWy ϹC?Egn%ɳ1VUx=(?y\͞Gz 菮?o~KL~'GW;vNהKsDO dI4Ugv/9{|%~%/ۿ׌Yg:n2cD5*˦dKOs4x0 ! E77L*I<"*)HQBɓ*_C3_OdyO4o')v4yKy*}*L$yJ|U=KW୤~ ڬ_!?LT7߸(aoQ4?fΝ;Z'Oٓf<\Q"p|Avd#g <* N뷔}`烮ϟ;-]gU*_~w:T39[qt;\'&6 NrHN5bxxmF婱?F5+ŀ,O -7SG_K4Ã} y6ϹƲg`QYwTg ?,l=A>\+??>Ar_L 4Rm}oORK'y x49fGݲ?/'UA{yr miN8Eg֣3_e+C~; ߩn o5on -h2 L#,M)ԖG9# 9a&lh_9&OjV{KUyfAsC3Ze=:C>~9au{Ww87TKkB$4KWïޯ?}  oܜow<Nf<<˹7Unp+9ziXis3G_b4GD+~]l;__l\ $~åsQ LIg'򴭏I6*ȟ)/YCz|lrz?lŞt{vzeҞw쀆5VWO'KOOc80Dhb ! p5y0օJ=x:IA.DR@T^kg zq~$Og/Q,s.vy"|^>g&WyX:*n˓ÓZ{_*Cx=[߱ u}f:->iw "*ѷTVȑ3Ui 9r3Ly*΂䙏 _<֣=tE˝ÞsUax쀿+ڿ~ŸE"W' z&jW4't2C#$8DV { E,% ~ 7\ V; ͔DЯ,O+j*.O~GKKV)^wn"pF]60vrxK>a ڙ eH*̞Jՠ_!ߤm|}~.C[G(6Rُt iwOLyG m]q,o= ~J{_x=8=lִMwZmbCn?>?E/+bRsd:D8pL#jLjx4xZqErMbNX֯_OqU<3_ǤQCZ_By/ɳoyjt}R.qC룰a'/=Co\#"\4qKzV.n?5=nH޿y,,/pRxlekO9JTntMxlbē$Ox1+< +o+Frt\TNWHHyﰫM&4__?N''͝i2`yG!ZQ?Tsa~О ~lC;ís9Oo۟z)n0LAN!cTŨx½&$<.P sC\ɳ~49K ?yFZ|NɂLC{i~۸?ĥtw/x`sjXԘϓwşiE\_߻]O+mKF|e75~.Yw9lw;L>ć^G/=`,|Eٳx{>?_.?yl25#Sa&˲k5g-`/Qy/&G{xOp ?<E噊gJ4%1*A^UJrt{KKA>IӹR|l$n!Ժ<mm3ҖR#?kWAjmAЅЦR|_^a_9y7[%T-+Лuw?fŇ(  B^'ZZ{АY/efQ$YQ<тcѯFc&A傑$y& .)9g!b*gO؊'ɳ=qOjo%E[1joN+'dOlFׯ#G0_^s,rڊXr'`gYAVoY!z!$hXApKGjO81R5WgބSO4)Ws ѯMup_ MK(OSЩeoZyyj Lyr%b??֣x_`S%?~x=m%t+E2|aȇy_g&kuk}]Uxc’ύx!a6G&M!~a*v;|yԯj4<מ,&=yVUMguyF=E}93,*O=rQrUJL~|^KmsCTO4i`Gau(/kZ,BP'Rr @;B%HoaN( N.ӕ-qjY_/Q%Ci~C3U\L&7]#O_8/EIhsèNY>3Y?ey*3i}a=6)؃+_|hο¢N:Hg㫵Htɾ: ~w Cޑqu+&@\{ IHJ •Sld )ގI(W/N\[)NѸB˅2W/OY<5<$o4/p{Vg)b~YoИ6j\ke~?jϣF{Y_d*ZsRS~گG?j_-Qd U&ttKAz<9Ђ?zL=d%Op?Gp>'ϊt%߃w'9cYA#kWȹ06 O<$Tyx&UO>w?o=~_xW;yzի^|z/~+yM~r";eFlu|-YU?9eK3lJ]!M#?_yw&8EccM}Rw8wܘi>@n>*S}!Bܿ<7;lz~??f֯cQQ׺ֵ6jϩ=7ćF/7*M㥾wVrCNNSmcTQn9"Ssi-DOp)7[y+_ʂLx3y饗 w]s^$~!̛&5uOِ}u/-nq袋vmɗgt:.u|^p}9/_Y$y%z׻//6{8'am݃xo9uzu?ao?q=׸F~I 39~]?(?׽uk_r)΄ɒ$Zy<쳸=YV^ߛC΃B׿7MsOB=yK^|u{NxZTIS=ow>~֊?W}uʌq|; {Ks{ OX"v&~|7CWG-x&$J'O["4<9H.sR7=kkd<<(}p;я~K_RDZzyb?3?/|aXR|#LS_l|x{yÐ$Os9)Py6H>/^!eO7sFGӶ>&٧ϟmףѺ]q[пW؃SC΃R\1y xIT?J-󹌧)zP5`}$K~gYdeʦqK{(H=!C?N=bl*!g16_Hf'ga ~?BOǪCgnՍW < ׌0B8r|FtFgH<1ٜr'p &|P+ϺO'_?)OY$Ʒ"O< C!`KW/bڀ=X?y.9d>/N1r ܥD<#g[Y&󧁯)CArD"TհA鶬ek6g \~%l+♣w/Rqt)r$O lJ$~bMJd<: GH5+7.r깆~q[[V7ʹ]x(o jABFVQIgx`gJITI x3| Sbs}? j任$P0=?3?_bS[d96IBa#|/_HXj}T8zdgGՇ=<;m uzMiirܿ?kR[_$r޲[VF#yϱǻ|,"JI3>+tJKQՇ=OadjK(t2Ot9$`oM?#c/{7op[|_?;~<$鷟 6n xG8_zx~~ m2?#>Bzå{nڳJYMgQsΔ료J\h3aIx8ji)\}uiom}G|Hm<[':6I?7ņxt"|0-R/OCy:\^z>3#0I-W`cyC?>%̥E&ZJ3#ADW~l1$d3O ynE_\On{_[Ua8wu;tVYW=q{WC'2=p< س?vqa]i&x/G"\ሞT9{]+:1^>j aO>T!7Bş. 5p+]$CrI'~ y"ٟٟ9oK~;=ks\:'?\>>WUqk&7h뿢cB磤i /1{{-j k]Z7эq{ehNs?sH$)?>w?ED*ş[L!')D{-+!*OR_ Fxd`+BƟd[ACq{88:C7(~9_ٿl)\~K)=Ȯn`^r+Ɛ%+)IG/OPdhGnu%DdR~"AW?++q)q9!Uh_/x {&}]Wd2Gs:/ŗ|ɗʯ~&rSJGsOyhSS;TG=_W7X= ,\鴬GC|=:N1c { nN)P*y嗗⇿˿js`U9P͞E*]? mCG o/4koj \zМ?&ϫ])BQ7vlpe%?\\݆G~eܒo=Sj_sߓV8`K9M3WϜ+|BHǥ⍜rFCfז$&9\憫G?G#oGS'_DzlQ5 E~o+%lw󝱻J磤VH405ӝQd D $8oq[ַ_>yKCQ9{@MC IX6,c>cZ|pPO}Q ׾6Y6m>A+7`U-7Bm>P:ǿ{`+/y^w$w-C0 ! 􉆂_j?؍'P0Hs^_yzn8¦oW8_E f8ej<'hf79=>?|Z\B~'V=q@fg#OOE8H%@(Ix0` 0CYSgȞ _EHp'<??g?J@RmO ,gb%\NϤKbeZHSGO4OHGT'IoRᶷRRJ{ Ӡ_@ vZU\)T N>R_Ɯ8 HRyOO6l3fA]_褕A8~pc]=yO F zD(rx{wStLV9//"őOw<Pр9ǹycL"2%[=NU߈zpPЇ>0*j?/ %}ɟ_6eҐؽ:֤8ߞw4a.?~DQ?2W|mH~ò<4-0A#P?~We/C=G"?|5÷;[tITS'?0䪐Nei5AR%iy:P/N Gs饗ߎx`Eb|skk"AuɟUG\:)T byaQpzp 9b7N,jx"V m%F_!KJ4u-C Ag4*5BdJ4,?C[^v쫿 !(}B&7m@YDH֕TqEIIIu a.~)7-7qG"bT$_V2ŭGH~;vYggQ@4MJDMrTG_=!gzD` ߆à ;|g}+&szBm='0?(@3VFƎ;~Y|Hޝ]!=OFY2X %aa~!y;+mrBد9F?row;UM_<'{rYroXN\sKܫ3yx/G"ۍ'ɓ#4ݕ/҄GùJe+ a=0ׯ2ےB㞗ݵ\/| _l} P ,Ū\iacr)۶˂ ) lM7AA@K-㕸 8x> 2G#Sn`cu_ufށDlWJQԓ`-nj2es "j_Mj)kK{@,_xP+%,hҒ-LFԜ#GhrU D!mςg%}t1I=pJOvKsoL;*@$̓'Ti+zGF_koi7PuXO}S'ɇJvBkʗ~FzqJV@Q'H g"{rGƟ9jfΆ_ޟz~gSRx}nb\',wXT+~3;zkAOVk _CBYq HN#p# OPJi_\Չэ>I1BC֍!L@-CN/+SMimGOk<*o3q;,{Ɩz4'8G^qaQbbOSy [;-xIf$!Z0F_Iɒ`D PܛJfT3~M9$^ɞDKũ_)UW2|۷}t?`UEƒG@x)9E(Ꙇ~ PG3麟:,o1p! m= 2) O9oF R)T~GĆP 3ޚuȖ!0ف1$~w1cwR p$VA<3--A__BX(P!F )߰"aPv:8-JFˊ0T XNQ`\`ZaD&H4c 3^6N|8!n5E!~A'4U: N_T8d4 !"Hl ._<$YSh7_d*3RAg~Pggɸ(v~ p/w]mDMm=||OtiFFc)ʉ[pXDF=hw CǠ%%V#Uh2{?گڂԕeKg Dxe]fO&? = >c?a v9+ۃ恜 cS$Z`gw\*jƒG^uߢJSI.AMȝaf&x\kȏHt5y'>G={UxXNvpa 4U4D=n䂊ggwh4轢j?5d=E~Yހ._Brdo'7dKye—dw>61%@J<<5Myί0Uispz=:WcA:!n:EgRPMI2ZI(EjNjчկ(jmJm5&C>dow)!#H>0e~kl 8x*Ҽq8Dcy{IjaW n}Sr嗻5-nq&ZD2^'PGs?JбK^|M4 [ӇwJyj(-rƒG"$!h|;G9CW`# =/ݡMo ޻oL9>ӟ ;_׺ֵ恑 C'fkU,C.Ok`+W,YQr x!oe<Ѧ$(A)<ț|C;)"Yn ɬOOBtj!ѓ\ǽ=S."Ҥ=Kg'i C0_+c4I9Jt,D!7Q ^Qw$W?~0ѿQ :2.iCj" !tŸ ,44؀`8A۶`7 qUE/zEs[ Y'X. PˬR,{h8~k_lqBNf9@h> ?A!fh̀$q_ؓ@-6W>G )/s&x=DP`B|rh 7TqdJ_~7@O=~0Bi.?#&zCsD7>~l?p`,L >V>4c0!ޫ?gYjL~?)0/>90_nIӐp0oY0G7N=a3?,kJ¢tהt{,`L~!py XZ@TMY< !ɒQVI'Q0F L~o{Ⰸ;%R r8&Bld4=&> /5rY 2šum)\fIRu{ooR8CaG+DKFrg7 C!L_;)O~Br.m<*|0fl/fI`KilEF-:jzDy"]V%|X!Ֆn);bTqDĻp6] .,KE8y"X`DU <#eDT@ِW2Hklw=!)Ӗea(%6'p{fK$}d 8=,Q,.spW>/rL_O4Xl][AL( 0 (*1`P=!\V A H|ɗ|y}xR/ sGwHxh|71Noɼ:{P42)3  ;OOD}qv߱fp gr__oQSA Cs A,|(!oe{goċKQ'8FWPL#6Ǔȡ$ML7츼ď=H>"L$}Ҕ6v/~ȿ~S`ߵįܟ?iptG̀2%]4bէ?OxF3;ZZrx4t%'crk<~=ybC/oDq\Itqd*p#@8W|GtWŶ a.nNMh䙄 8q m{WxIx_ 4 "3!i7+!5CQôP 5>#7̩2(!`R 4p V4N?Q}h0'w8>MО9CxWiD4G~l0?L3q;Q>>WD*x tEX\sC Zt኶A$yvAVst4DuT hyI z!Si]mT~\B z?hQ[ITj¿rWxp7Ջ$V%IxHM:p@OQ檿=hZY,8CZ\ɻk7h@WF(5O_*O/1(?.[멏Z+nbPO'"O`PԀ>1&j?6o8~pGܪ}tsT_좑It\;|m-A>DDS0y+$5nk4auΜq&KL)`'6,Qbt52*GX'yb;'vB"(~ͽy^t}7%]hV2wg{WUǦ]B}{dȵas8nj[QƅF!~CYs3a*:Lj܈}~FQql LAx(I7>bM0"(W;4Ky,3?J4n*T,~EG Gፋɟ47H][CIY xOcpf^hG#k@T Jy6/(L/I*t!0 7:O6 A/pF^jaQLnfQpQ`Ep7W|y΅0 w:S U8R%}CN$[#r$:ʆu%DXjRw BYHY'o9wxdI(e3I|л6f{Ȍ?Q}W _0/D![>$G5!gp%]zaE`ccɊ3E"HKP˵@IRHsVBD CA2%P_P˒,X;;9}O>ݻ}>ݟӧ>; eۻ鳸䅎>3R}=%\`%U1@13 g}:HRh2-`ɧ&Nv M<> $/4|s;?MwOY[!9>Ѐ =ҷqEkG|i1OΔ'QU2ah5 89xwC::j@|`GD3# XPIzN$;MGyӿCID@CR'X:peA"o85J ѐESȑ#OjOĿr&tg<к?Qg^lw4mGg]dсr0+=ȕ7"\!y}G~ aR4`tڒQz'B=0 V7.ЦqLmU$ F.l&d"C b( A*)(mщGOJ ױWLu8EahOnn$ҚBN$ o4|!CoTد$z8Dl@V3Hv3Ƀ bYhrE\'!ot>6 ҏ\d|݆}1W~bOc I (.hM/D:Ǟ\c >ZyP=DKBG%CʡyGi.c!_S/Mߴ+_࿜`"be3N1gJWg⢓9K_Vxr,)rz{Lܭ?Sq %Ñ| v\ ah[H>jvMozu}C\H\d-/ aN„]Ln6  8vЀ?*l&Ӟ[&zƂr^Ⴌ8 D.CӣJd7Ff[ႭE^caz я~4Wȁ梢 R_f&/Ӫ2|csaF诡o</Y I4y>~FqG)q(BVFƺ YLÃQ^3U_y S]/t{")'hVM`h=^^IPs^= 'cV!Pj Zh^룫%F㟒3>Ѐ<MC+榥'+D%g~8ڬ.*1a0 AYLAvz^jЃ '߄CMfK, )mʐ_k)䎮/c3fcp`A^ ܋֡s %/yɸa#&n_ ԅ_P/|Gľ7PpRO\?M?F|aԶnHτ@0lQ )ø 7>$|yӥ$!j > ʃ>0 WSE6DEJGh@\>4o{2MGMqkfRat0WQ$ڐ / _R:s.!߁k{!.O'FxJg 3#v2#+pEc.B?]>p8aG%zE'DVB{ðo E7IwO_>O#smI>ЀC/s(>`Z!.}МR)JOO?*ꉫ]jZ@;zl\?>JHB(B CkAe{7_|syha``Iz{+_@Z"2#I'ӟ7jU%O]׌~~0.a!pT /9?Wm}~,.2 pe:C L!=ax/ҳ13n `|HC"/LB,y{Q]_e:g'&BQ{߁o{ےݻLe!_Dw.i#wxn 4 _mo{;߹ N.S [J7Sv]kPf`뎖{~x*j$ͮ_ {*'DXEU 4 2@cq t|Nސ| ЧG`_^PX ?NI(m\Xf 5|$`,2wjDI*). H+x 8LH>9kK A?د,3헕i_LOOfp\E#lmptxL/W5 3DᐋIFdpDS ?ezHW̒JLO4,(-S&\ W@'fdWzSrk^xZ`C3̋җY.ԠE8/f|HΌo1ִg;HyVϕ*їx[^|<,aY/'d߼ԥXO8@ؤ}QPc_ wgB7[G y.Rjpnȗjə?DE/zf7|׿_jnĪPGY)DCr6%/C>5.UowJ4Oe\08ey^" \<)aoU\n(ۢC$ؖPi26G4^UkZ~r_<ΩvsC0$կ~P_D?W64ӗX<0KHp!b'>!yX6"Gvs ;c0#JypRs4 es -0}{OǔxcOn(Cڱ|_M~.3$'K 20V_c@C=cщs8WA,n(L꩞UٖC+׾_җ*8&~ԣ5gp@0L}Yfhts4 #2OOTA1Qi\kZn63o 4,r*Räk[*Tb< $/ܝn$~ z،J^MY_&(1țft́c6!a$?5]G<)Z̠/M.LzѤf Df28*͹1@=h'I~)D.SdtTʧ;rnfiQPQ=[yC}7MXye!cz)sI5=:rHg !sHfN}٣ J{aw؈(J׾xeﱹ{G/%DpzԢ՗w둲z/+,p 4_?GJYe/?r1U:Tv"X( 9KU ;UyW^v-U)q%|r֗$P=q;B{Wc9~rH_*:׹L`Sg 2y/ q 4D7E{ Q4gALOWtW?oP$c#w+_J(!4e@˷æZ!{#BcR{4~M*% x@Cu׿u\bnOByg>sH$\ԮLzgLgrZAiH!y^]q? d7D$M>4[$#\l*ӣa*ftI>OņV?cӆ"dO+s|ܔgxBS=%=wTаcZV8lK'v%}TõQvkʡf˝\k#o}_4~C$3E}5ץ.u!rRHV~c+vE烨/Oxe(2;! '8y˹ 9鑍K2pv?;@|I0Mi دϥJ %` 2YÅ%F!oDžd=[@a2$s2O4XZAI2G3eFۣR4ymʔ??zFb/>jMSv@qB;J,W9G=$7Gu4zB50.6##Ysȓ~*ח> ?~FdY5CCMoz/$& .C_ܿ Ӊ+u^/17tUt,|P"ځ3+ {T( ɊʋLlm??'(% ]pFy@/JELGO{t;(k%G@r '%cwQve~(⇤t4o!j0{T:ݠt1zgLN>RADA ~Z9c%67J3t-Goߥ_v\`Z8\Z4'34%=~[ $s6Ϝm$YI+=n w90Hb4k$&vIEۜm/VO#3ƹѠXb 4h8:? Aѕ~ .̮O$+(p?TLfn;hMp3dZ*I$`7t_."vq Ed˷i/r[ '{&{4 [Չx'U 4SOTMR|4=`^EHAV<Cu RI B[~>t>N{x0|<p/<(=-J`'?p]{ZHb BfQ<Ǩ`rI_ E $M7rZ|%d7S5\#kfȯk&hBx&NGEGON?i}q{`n = N+z}!Kh oUEO\bK"ߚtE.GfFVS-=')j{f'vnڵ>/-ώ#<32_Ȉ_BK~ xe 4HJ2*< 2oߓ%ӎ+\Qviב>%9FSǑMoG46N-.yP9Q{sF峈j}\/ /R2GA^?C۪%țLʹkc9qWJ{jLWU(wGzk"dD?l)vT9GtbM#Qұ&ϊD|r$3s}xx~C2|/[Py(aef!^TNyJїoi/i<)?R(%Ǿ[SFj8gg^wG.:"@e<׏uB òIi{2iJ?H4@s4Qvq+W^ nv3ʃlO5wdyCQ[[y{䯣zbl؉1Ç!ﴊ"v}苬iV=S՟/%>!(y׻5 ze&E$ DWю=>=$nnwC.9GyFx ׿MF! =])_+8x~jޟ:4?Ow#oZ,ׁܓoOsVBzBTr&'Б_hgΡqAdӨоϜ%o)=o(/,OlSpJNT_D-6CsżS) <=-"S8ż1iMB쮓 5mQ}:p>ttk\PS`vص$y0h8SH~ɾ'Sd5$:0|^S7q_= N?SH=o9 @T=|xOMVUr6Q#B̈5S ^?,]>L_!:dȃdo?Swk]Z+3p u?־z^hRa3,VP߄z<G?`Y ^a))4Y&Id,'O˃?׼58.j#9`\# B[)! o1&fw~?jO5=_qMo("  ь;~!k;BPfVt^+  C0)cB"`'?F"_]JWBK_xbB< 8ZC|JwK=%Tݏ)Ϙ {\x#)G4CGX :Vi_% Gja jF5p9uz7[u]je \_Ó9}-!?~Z׷x %;EB&_hoϯ}kRj9}\6̡nooepk0o`sP>5ܶJ=y/TGb$!?!lw0R?儼Pk=qc!YB›R!\A|}h^Þ%+BhXX*>MD! /r}bx5kj7軧[s2CyS Eۋ^|CS(O)W?O?oW~dLr;er/:2AsƁBZS Ll_<ǏWͬd:L[_(P56^:r}<\y}/[+pk⧩,g=4J?nZ Hiz̑CcgSV=y13ᑵvV4b' Q_NIu8zo}[ԅk}CdAg2 =ū_c]i^eϐ )}p7Ňsi0ݙ|fW _wP>'{%h9ͼx! ?YId upO!=Ezp_<H Mm1>f%- !}AH_?9VחُD$U/?\#InW=ne߁>U_<>M5G/ CMH3xCe{$?qā3؀%˟GD#useM#(MR_[X_R.nF^w)@%/qi:dCwx0@P KV~p܍Pȴ׼&7A=E"T'W%K^؍w i!'%~> IOzRX̝YQe/{Y-oLA ^]i8͎`Ѻ M\CNgvGSVW > ߂zhz,&c<-I is 1j#H??CB=mO𯗺ԥ|_4E 2Ko0j@(?GBgWs7O ~Oa8̚ {lxɵFmG"س9=^9^ HSr}l:Hšuk\vYL}q%5~Y5crDe?ed >U?!Mc#(Ip19{c>/\Ca.{%'*Y0^հFA]"ȅ.tMG @FQaPS!BNNp'F~yyE8yR@~6+Gjd>}J0N# @iyͱbПfrVD-4 O//{Nl>9!̈́aB!k pCT0@蘱"rɁdO1l~i?1򕯼us2"_};譑wO 8Sːq0-?r1؁#|~b׿^i{P>vB8;ڣ* ~qSeT'Hӑ%h'& }LGXGS:)Wy 񖋣 x 8ED&Bbx u>d47v& }[QjGӋl<4? :Ʉ'~ H)!6kп_oV3Eoc|UПNHOO /+{Nh#ek)<3&A9]3dlM&l+"$CNFu  rg̭[@+\  AhO37WFy8%v78h!=\R_d3k CQ3'{?:&/hЧ?i%?C@nq[ |lP|t+Us |,'O |#3#qS[fy@f푋p) oxCndZAq=?Z6K[M!z!chL#ȃK&C*ɿ=yZ AM}vz!'?9Q1fBys^U'kӸdxhSR#5?RZmBPb?o$mziN\VѶ\7u#ܚ6dXMez‚(eKf FHO~G8\?$+q>yӛ$Ec74(Ȳ{_ekH,QԖ{/n})vQ NbrsQc?eӆI~C2Od/tX IOyS{"˩1^]b*ǼL54IU}8$ɷӅJu<ۣN:E }_HA(&94_B(D6&yLIM]#_Yh}Z"wJy.j*V{'ӏ!iW tCʑpzdCտ>o"WUC7`%׊#(#UwU˲ 8<FH . =Ԕ Iٟm&l!BdQO}N mM$(C_a} Jv]sW9ifon_+SzL?їf%(/U{S(?Il^<(ǔo#T~'v`mx!ɧI 8wvh#"&۞r)(G2Do:/np 14#eS{^yCr) FaHQ; 6q ! ,>`N'CNpz/aJ7KV%Eȼ{[ߚhPC l)?b7)FolJш)>;&#4kw1Y x9oyM3f 6OȺ=I~}!l1 jd3M??*WrJJ8ل3U7((nbLnٶa*IO"(IVpGrIE6o& , Õns jNy??)`L98.8I_/;:Dhs9}qK+?277 ;tFJ'uMc.H?*q6&p;Pݕ|]jH 8Ⴞ>1n8 9[.(K2F~ \{{)ow/})b+Q~Zk"IMnb苁x$<=b4aeY/`Kl1)| GQ7gx׻ 淼-ς |oЇ~Xk@ =K)2IiTOc2e-6 1np M[Hw韐`j3ɭc>ǟP=D36<lm ?fz v6_dTN&~k)^|TO1iuGCx(=lVw*üiOL#P/8 |)=xrv{; 1V~&u}KKK/phS?iDw~vBx|/V)V^=%2 JWL9 e31dxnv3S'4I[4҅^W[)js;Mi#O C0H ^M mL3koC/T]) 8ǐ_V5:#3 P(ĊR<7$=ҀyzJio=9.H(4N$zp Y@rÿڠݡO^Ho=(xyy_N=Ț?Az޶GoH ] 璗4,u 5FO}*U~ou[URJ=1,ua: b pMgtQrHCW YQdsXNKj{=nv1֢DRu3C(A ֋;8zꍨьT顇Ήg#SSYΌqh5`w9vaw?D4PD* x~ǛF]B[/L; iO{ZtbvepCK~.٘-ڥ@(NQx^2ř)Wqz$!Ѐr?M@ w3-5> ƞ|-7xK?LC4t$H׽S|G"!9b~k׀Hc O ]rxJ??eSΊ2eK~s${rW18Be 09q΋\ +.Ǒ9lItfF׌f<9O|Z8R0LzF&㲼fFEgԗຌ?9Gwk)%WM\ EÃJ>%sheo?v{8ZJȊ|`$5y ]BOzғLQI޴( '^0"<= |cB (hjzAbAVgPFVUey@sM+ u&M EaH?fsi?V߄-??+ (m=6 c|61\Ho"4F<>?JoNZ?qjܿ} 2מY%^\G(57EBy)O48G%\f^F/*M20 -."cKӗR?닆կ. 2wn y'mns:x=!g$(fsܔ~`#14LAǭ& {ݞ>A8OF,㤓N±?X^W${PjV 1bLe<(بU M[kRJ% o;Fp zիJ! h7b !5%.d1 ܙE!Wo|#p$ƉؐjOMxgGC6 71=P5I ֋P֠h(G2y;&>yXVg?٨.<*tCz} >"P*?젇4N;-0ԥpwk^{'ydBb%Tzqe'6O8 _B_Vyn\*:>z S~cbL 3ro;q8rE%QsMOpW1 hg ;$شD^pOȠy{߫ܪMc!VSNYN7]}2^Atcoohя~_b1(l\qSB(|ҶQ1vYn1x6^Qދ@ַAͳpD EސD-H!Zz ⛼O߄ԋ!1 j_Fy crYH? ~P +򩧞CqWswny[vhvկ~5 @8m,fJS0VOd _.?-ߏ:Oc. Kν<ùJ2HcL[:E/}K Gy6-sh8QKh_:\(?.;mE/8"Ww]G(8" cMi-2Ex3O.Cw'V<' B~idpg'fKt,'.@(?ؿKi!38."j?7:O 1$'\mjȃ]=ޡ O~?`f6Dʝ`h{{}!~a>`,qqGf@~%fHwzs2LH1|8Ԇ?'HE ?!puߧ?T$2] A!aJ5$ p#C#HWAJ2|iI]?1^>'_=e ҕ*GUݧ>)+ 8=_-;:Wm@zwqI=RaB_QP-MۻW4Yfa[QA<:)ISo}9_y<'6__<}I}qAAת??IS)OʸN_Qr4 om?,,?ߕwæqb9~?Fяx&ʀT T>_D?炦ʸ0\Oe=>-_ a~_oBNoBgvR c2dzXz(=:PgJO8Th:M )7A5S+ю8MXuKn}fbP[_-Y%}!G䳑;@>塶}#^DL68|򓟬 _>bO3ZOg2؋f6xcq o~5%PJ;?2Vz׻5)A3?y4q{92.F76 9=rW?YQ;W8f# y/y( # M 8= 2DIz= G3;#q}z}uZL ˍi W槰h7\J ?K?䳑OjaEq†qQGsO{e#y6/ڂ"?Bs*㧸޿|oUm9\ ( t*'R/o xyeSi 3栿$~v3+mdv y ˥\~ Be{. 0'?u֗i}$ww^}Ғ4#%Kkb?]~N tݪ_ix@wyTć4y|_͍oQ<.ϲoY|+k_Soz7 kxvnƟ[?j3{\EC8 iP.Qia7rүl3Qmez' 4a|&~1ZuT0FY_Gƛ+܍d^ߩgטn~g?egk9?ǯ{ ?]qTf4 qABF]j}\dk)P,>d/Ly^;rG}~eFYQQG_\&]@g:h^(3 VhrQ.3* o6TF@Oe"yrSDRF oq~*׷S/=})Og'}9.M>Gj}cA] T^ =)O'/qK\^}o-׭}#+>W?V,jr)Q }{ޣy5y=ƞvI\*LET&{$C2MIrpLX ֐eR I&*"^dvBKՐ֗gFEE&jpK p ['YON>1wϲnaCB;_W3nw7MI'4<ԯ1S=u6_9'o]k|X? cU?o~3}'kWoiOmtWgOA*_85uL d( 7WkŤ$N26OPCD[_%=)vNX_,On}YBM\9g}\E'MG#̎?+槨E mKO-__u  5<Uo$H~׻7}S_Hg8ΖW~wT0v JfO"V~y(w-Ŕtꩧ}s'wq&?AZ׺Yzֲk"gTgql?s?mJN L2FCLr$s>NK\C55Խ%~}eݭJ~jv;})O;~j!X_k~k_׹u.zы/I.xh!O|cfp:_W,g9`n .ϫG?Z=~g.HP~E p$r"L zֳt3m+/y?^X*_jdnѣb=2%\K"?Q-_q&~ gK}!R$n4YJsarwӿ/xs㒮3<9Q?ON;Lj)|[Ҵ=./>֢_KT?N%4?{?s"uobe/KC'tcB(w·mr@O}ʯnUK~v[~cH—t|: n<*J2\$Ǻ?r?eizplWw*o߱Қ~szK?MІ f7\HWo_]'~mzл׽(C]qK.UW$LmВ 'د?s~gmƣ^}W闎 +^hs9~dq{F~ i|FrZz8]"yc;69j_ώ?MK4:Leq XSv\8i.џOKe3E7,/XW _j}/Eg ۈ} c,m jyP⃰Ihv|[kF'.A|;\mNCr=_M/b_ffDGFsrGsz/s}`}+sMAz/`e򓫊4)vtq1+=Cy 3yY3G/| {?gJ%wgGyڕt^Î'wxKTDNpi$5nUzgzQ>TY_q_%h!kfF":RRKeNgh}}{'FG/ooNvo.{QOWmd}l@~~@<zg9Yr򒗼$ k3گc z(.WDfS=9`'*[_k'_p}8d~*Oї!)z?O.ƺ黏zȊ`$k׿/} Lc~N; >_/\ugkɃVF$?S5g B}W Oh_ޙ_|G|?198&<TGրQm%4ۯc=k-?#,<8.^٣C {?a9Wr乯`/*[D9sQMk} *f1w1W_~O̿"P*_ʟńc3'χ )/x"Onw+#hsh?I~wUWOFiZ_KM􅊏.J_LR>E鶂x.$}9}9?ӏuRi.Xgj3o/}Ӽ9iZ6tl~-PBǠwN~X f_?_گéJ 6AA5яc=~>֯.aԗzeޭ³?c1?8~fҟO~}GPCUBݎBυkFDӒnə #UC=zK|~.s}eކwSAI6o}? XO${2q~Oe_q-/-O+oɃ~ ZaER{G O,ğo`vi (=vVtXGua!B)J#i'iȐ 賓Gt*l:}iagJ;%͵dδ/2+YxXLҗ~N7O),%~*]OeQ4{Bk'_2~C˕JɃ3ʃYv1ҿ_JkTLko__=Y>~گ DAnuzcvfJz驥R.U΄y\S5LIX|}j}5Sˬg2?@!m/LvN/NJRg G9}/A槼bx_6r򠉹gʃ[‡6|ӽVcBo4P?h}kdD5ѯmO,fA{Xܿo5Foq%de%u06TdjRT}[Z%=Z3)?3T}cە=,{?Jy9R aa'ϙv}\voaD3l区2ӛ*ːH&Sry,8JgaLW ]|}B֗'W(W)'? }1QӕWO__OϚYV{gnzF EL6d.}IKߵiz~~a:~+BBy1ZI>I;\Ď?%=֐^]"?m?ew1l>9moFw(ӿR_;{NY~7~~o>}ehs{H2gsA#M7/u|[˜ͱ7?b}@f}1_L&\(w>ːyEO9\}usG>y~6O=~ϡvi8 ՛Q+a'->8z''a9dIy.$z1Ejϗd}之wsӟ' g7 /Os/ݶJEt7!548:yFdꐏ#grwOK䄅@^.k}F,a]O͘4o}gїpbg8(E#J}Y|gL>}F~ZUCi]AX tykYȑ‡f,؋,Dz9K8>M?ZQo cG C-b~']@rq˔2p3KqR;Ln ^"#9~ 74c4=Qk[_*HX߾Vgt}5"ɑhF}qb{DgTΗ6^ ݂|i)c5ƷGa'Tu'ULWo?&7=<wBv=}\;$DɁi_?/_X I T(g(?_Vz4L9&:x}LwN}ml+Tϝ~n~-\ xvp|1(>ӟSc[$F>Bg2?3d9~vة;|]25Ω/]hq$ <*YP+᧩>y2ypNkOY|p3*A+o1L,~ȾhwL~mi'GVǧgL10)B=,NSk}җ}ORs,?M~\KO4kt.;yX=Əυ`^0A8ѫ˱-4oMUN4b!r z'*{pmx4E3d~j詺 oUp}ר/@_mr9)>R)X?d2h&?CrTM*6raF=kd?ϒcŊ~KO_ǚAF#2"Bx,!BKGY: D@,M'JP wɻ |*쁙~ү\E(iX a4~p|嬯31Z.2Zh~n,Z>>kO'Bqb}9h!xURaO S;y^<%pͺ_Oqj7u{ !\EFu:s\DlsbBº qz5SRC Ñ!SI״&m}]lʱU¹j+닖.W_~R,/һt2pAO-;[}Cz'ئ~a ?{ =[JC!{jSCW~]+Y|[N' '_DzvSw~ w|vk!̬Xxw?DSsxM'vc; ' mk pR!C~rpK#ȄO%=z}h%y" Qg/,o닎jM0klZJ_8~ R z 3ڌZg|*|5g)^PrxH/V|ȃ o{`g=>xGA[7'5w3ҟ“ozדR#&S ~ 1fauv:RBIiiʈ&u3n&=ʤ uV>~>tv~FU_9o?ng9jJ_aU!#-OM-!cL òi~~Ә欀9 𳼾|;΀2?sQ5~=\щtI|2*?#?5 ~Zy2!q}"ׁ{2$=Zw z=CQٖ $חlSq\_7Uyo}GȰTZ*9[(-/]_Nϑ)L\?}q?chth*~ XNHS3'|p|(a!8{R{}sGc/?|=C֟I L =rF(d8'^z/#^_:=A.>\;)ԿqGgKoY_rr/\;͎Y_q*o2?=PoRӽk$'9#TO'[Q{<;n}?ҟ?3f_qK6K[Ɋmfd~ubxi&zէpDUC6I'ws_63DrMtigo|)\OulkZyx2=] ߬IҟO"sL"*џ}?z,.^6;rxu=S|Ĺӛ1 I$&V~FWOmϖSyğ%ӣsn< 6~g5ڣǸJ,J^'_>tso")9]2ѓO\JYPPw`W?SĿ;SbPȨԔ7 ed1]#BHI9͑ ~ hݢZ:Ō27Ѭsr4t$~s/Z =Rj)g<(ea!l0<֮GW?L{z0gQe6ypQ0S2=$łiNI~X~.a}Yu}JoC~o}]sPl%h9]L~.Aߏ&~.䡍<LJ{g%>$V Gҟa͍ne4BDr3VJ4§aK( 2=9mioU8k/˶SMRѯёNWM<ӟ?ؗt>韅_g+w97bA.H/>/G|L I֙MVɈ]ȖS@ys󣋬b?Wg ➝ӯor}5ЬK_,/*q/nqN9G/rES%3tfOMiei=^)k^yzErR^<yWq]E}31jhcMIg$ϧ,k_N~ J'ѤKoBL*7&xAB 'pB3ORv#a!=)'R#_)"l0Au}U0IFOPԔ)&)i/=Sˤge̐hPf'GVs_;Z<$K![&, CyßYo`y4N}Ȁ:EЄ7"1@Cppg&$=aN'*wL#E {=9Y_ABl%/9պ__;?,,'#/ON_Tz,"*}w3g~fʃ%aYZ<$KyȥULJ-g+PqVmfߕ}\}/,%ǴZ`fB7 bvT#IG4LN_ri)z~*?͔֗fƴ,b}/msg<NJk'KÇqb9kZ?֏06PJ~ \\^x 2&L&c8QX=rfBz@)WSa`G?Mi)1?YU&w&UFBQ৬?68{teeyOx*3;)b6KgKQ}p,dy(-]M>HW3?V>de<үrfVSGcO~){i}INxf3"g]]<316 !c 6]ܺpGTt@a}'.rt}e $s9$?e26Y\Zsi}ϲcvqtk?y4l+~v"냸Ly,N]RO<g,\j {e7OTVYKGgc4.F%Qx-1X9Ȓ'cg=;n3><, lWSW|h+hu}~:f؞fI,?9} ;ǖ&~jw^~6Ÿ##&~%~7Uȃ,vf.^t_f,O,aIlѿxPJ)Lxʋ6EǺFF? ^>Êd/z|EgߟѿUO)aBǭ5rX3i *436-" _O$COpਞ9\d~%O姩Y%~6XtL|}si 0T~^]C}9 > r.`!RG|LR@UЉ*~:U WE>]?#D^Nz==bTTppѯaMX(5FЯBUӗi8S^14H2 |΅ } Oor-PŪ_땇(>h!/d 6򬥿+oLSˤ_o,}m?q,Tgt7=9﨎GnJSNbuA8zfRu'7!e}z+rַ?I!oǮ&~}kK-~ 7E3AknHp~&K՗Яdy:ʃ_s m|ȗgWD_Z[оNFAqÙU ߟf"mwꩧZ+4IrFO q_%=3:ߘGhLO#dt}gї槾kO|Ԍ3>N4=Ajl.‡ߕg/Ϳ{4蝆4'lLTH4gQ[ o@O(?Wz~&ӣg3rDLXߒ bE / ?UeMm t?"2L*_8_< үZU&g]_\c׷*?s/5'$3F>񼨾o1~nN p{t4aEїO5B/_jLvo(:^S}M\Q}c!E# b>97ES~Y.6nj__f+&3| o'Cbgp)T-tesy}sj{<~V&ksHM{! ZڻWkK-~͉WYlO)s,;!\^==5\~4*zlBfKrJ#d_J~1 $چή/K ҿg8 xwM]~sizT,wQ0` |Xסj |ӳWtTY{W8y!!*ñpy6ynk/o X5?k'z-?+IwF!xa!dąLZFLH BKqƇ2D:2ei}n}*9Z+?qCO]U_zF_BϨ|YD>y1}wakL/= yjGAyPڲ0)w6yvFkzy^F{ekFw[O |2</mG_?m^M$qiY?Lgj1h2\lR&5yZ"IIx:ӿ#:J'xk ,h!kH OJNşLOQ?v oGzys䡥==\ܿJ7~*i'hOea9RW&߻,dhn]8Y\>~g;ү!kw;7~*5 iVOQ>;':*uDXoͥ3c{30Ex#B}EJ^P4skW@]ԬoT\+|$sBrkY\>E.R[u9% ' _M s!UsaiK|(B'& <>\]ue< g_}:ͪ=?g)'g1 /q'ッs)o 8z;AN: w^,zFsy?yz8~YP?5q۱Oz}E~jWOjn;}DcK'73/ R~=Pp5=zjjg<(R:~,hUW%OJ`2>U)HV·D?c?MZZsH?9w $?Swp"cԁ99[Mh{T?i?5S0~)+nr{ k2LdzDw_1jpzJȁzVtT禝(Ϯ2ҕ&+?7޺s4gK~ΡZGݤ,~j*? ie2ԯ 'ˌq,S E4_x?Y(`dS݉T'NݿY)bJ.7(-I˜Jz F-3گo?m[=rZKi~rw;*Z~s+]6Ǟڜ+Ђ'ݧE3"Or}cf4heBА(?Gӣ,ӯ/w:j7ab}(7""r;y}W/+έTun3$s:,gW?]?i/mPyS_\sW >(Jh{A">/n+?-(Bm>gSiOGiP_{ GTjy+ ceyHyW\䡠=Z_&v-dz go=?ʧh:>)$ P o퓇 Ϛw9+/&G)6<>~γ_0"!GTbn+I"?oU⏛!fJ9K/ڐz Nl[zxXn֪$(%j@-i 3EV~i{vA?/N[/YC_?US v"OÖ/UyAKGa_KO/d(tS8haf«UP-mZ7~WR°p/GS_~f,3|F794~I_MMig(f~Hx%UAbOhO7`92#]pJߊӟQ2\ o_Ҿ+w[X/TM"}eE$:DCBw`6Ht['*(h`?Ml*)(I~Zߥ"ěO7w~.\&~FDv^'&<*.;yn);w_k2 y+o_Cފ/#cZ肤o?Oz~oe۴מ.2DGC6 >s#@]hb Td3s}5,D <HK,QE^,~:6M ?ELw!pYK+*-aQ?J}gma,{/FV@X?Muq\vM'Usf3 %myOmo_燻RbYRBN0(xHK.erq5>a4lO!#N#לʆS?/{~x-/R#J%< oȼ1=_!?ZKt\X;(moGwG>'9 xn~ DڦD,#Ix'"I88<8 Ae_7ȾV>q 6WU}񪲯9$78=|6H>xQߓϦY<?~twKIz%!/:*?<]峪>x^JcT}pd<6˫i~ׇtVvlο~jzO4UJ@}i®={͟ˆ/vzJ]ft<9o5];/kĜv< .MAK| ÎVrvɾF>Z6ɾ{˚|g~#}}>eXuCxKџ Gvbx>7?ؠUS˞N^NUrgcTxHBJ 7Ǐʯs `D'ޖobUp[%ۥ#T˄1bĔgC?|6g] ?*h.!}?~U?YKtGr- ?a@p3N;cϐs .ٱh)4_?!ۜx0ߤq.(׵"7){o7O}6wF|xSaoasG1Gg`|Ȗ߉y?#gY}]?fqY>ԷUw}tx'[kq'pKV|8>u,[^Oz~uL.'T"(J'm_ j/j_᭚d >-/4Z%IW=gl޽3rF>Ft{Gxw>WA?06J} }GN?#g~CU-|CͿxyd1')ٰB[yR/ؒ r+{Pgf, 0Bgطho_.-B~/xjz|Oc2zTFFks#;=_?V'y~~~ ?XzJ=x_%G\,-D:UҠO1s_w/RMC&-|V5dߌF<Tz}þb/7x_J?ks:?奈ׇFX_n[c!#ކ\CfRLxy3Ɗ DQy[>FNJgɶCS>> rMo_COs)BupI>ɴd hXI.,Aw6__}u>8"LЇFX_vz&>VoWcl}; CǠaGRןVZ-y6ξoW6jƒ1֯u-|NmQ}CD+F}y72O!s{F>-i8-7M&C> y{'_?6#XzfV-za>?@>xٔn|`Ӣ~W7QJSUPġWܵpK{u|WrџIxz/Qs(=O8>^?O| O\g:_5^Tr*)x &sC_tgH0ŷ(b1KV>Z{2ʾ| %s_x?1Z!^>/c|g2𹦞oI?CGUEyC?OХXƟO57s|'ooCgZKrzOJt9_K/"^O?I?'{X F>-O>!߭㸆lkԷDo>۟/z?0`鿜j|}[-"r<.² CJQX+7 P9}oɭXրs+I鰯ڻ-Mo}u>l/*xZ/+O(>v>G',!IVO8~?w7 '# ۩ 'Z'CS=,X7ΌߨVWmYp=d#F<5.kCw|ЬjuF7Opx1ڷxה 8蟝ϕ|[_}`_=r݂op1aW>=ׇDCѴE?)·p?Dns-3¯2y9?(<ݰ\;о¯WT#{nY0`='³N@}Ĩ^'|Z|yjAisvSv'$t׉[a@95z[OކC?|7.!|w?YV5q ?%OB8˝໔}&8F\-pxP< z(.|(4tOy!/s #FXO7]7Tߌͧ_xId{̧?I>[7V೟}N>R?qاr>4~HG=􊋯-şM]Ms/W/oZao\m@EoO7j0yDџY3ϊAY?_lzL兩7jwP/avrxЬ|B:oJx:^e_ %|r6>WO_|UG?\Lo+&@_՟ǟ]ᏪvӓvOP^'_Amvè7@Ԣ8xh_:2n<˫?.gH>M[?#;WVw,ևNwTwį;8ğcb!%WWiz@E=>w^ ɉ:qu{R1 Vconaw}>x'sgb|~~??\UV=H<wϏ;>['դ.]-UxnRv\ᔦqMׁPx/R%h| u/>\>՟=kfⳫ?T- NB{1}Xǟ꫕y{xK:K?.h# qT O_tꅈs2H<2vQ1AC>䭶<ȭ"W-O/94=5}M|fk>) gWrT*)O09^>K~|r }SGPHf 㫳?!9"}?WWS-? wV}v8|zY(:T\[g3m?GEȱffrc'* ~K!{~Ԏ -6}C4ݾ>ƧʪOW7%[+9?׉w~ww?zgjab~S?/_=EW}|CG'-![g_RrƝ<qwC> 7E_eOkwŧ'^3k ?|=UiG%NEws0XT>E{<~]oal5u<=BAxh*%-Q̷(z0*d(*+ _x-Jɽ?|œcB+wԢKFB'Ő]7>^/:/&> iy?| c0/As wWhQT}gׇOtNzXwNj7֓7D|g06U>h03?0#/mzŸĂG~"*c>ɋ$03",޾OZ0ixcl`/bx)"F>'Tg'엏XH;?҇`ԇף_kH}7+q/TO~_/ϳ(Ep#LT^nǬ,Y _rS.L?'oTz!/o-FjoqΔㅳ/*/|33'R#*s|ñ^q CK>FO:/?0WzcP~OTZv'=y6GlZ_t/Sa Ƅ^܈lZ1o@>"~g}Y0=7^Zd1^Q?۩S;rYt$ol&1H>U|^,ȩ!\W2_s{}(:is?>!ft~:O-۬ 0HrDCYR.c#l?xr{' FEcyV׼&&I q/!|oEee 糿 1Η_|0b3,_|'P\؟35}p{Z=o|>Zyd~zr!Oi6 Opx&P# ='sYGݻɢFqWʾQMԍ)u|'>: ^B= 2"}m&Ї4O~Ff,0޹g鯭8:gX>1ܑ{I`ġǚon6]C4?.罟eswgϳ\0 VѮ)G7ge$&i5"ʍܔU\H[^ -x8_Q D}ɮ-P3r1pbi+}/FKxyڃT;x#^,ic^iSE#蕏ze3z?tF'XC/WP;ޖM3GǏ/ ғ <ןߡ~^DzO}+uok9a9!oxO+:w ˩:<' $c '*9t:Ծ.>+ moY҉~ u7ӟ%8\?q^2/q'q?|>8goWѷ㟥~{?YdH(xIENDB`PKq|Q  OEBPS/setup.pngPNG  IHDRh% iCCPICC ProfileHWXS[RIB D@JM^*U:IP&{YT,`CWA\ kŮ, @EEY 6Tޤ}|߹9g3wdU{nAA.@PNNIeM@(')Pڿle:_ @Η >+@hv2pkpr Lrř0dEL!h/ EWB!񨼼|U['o9ӇsrXQ\ȁBIA.w9[rCcCeCce5yaGEQk@|Aȗ,ihҿ'9,PC1KĎ\<Q°x%N*EܨeY!E A Wz8+>I=S$LUIN\2aq'jG,q6]88ViIx\Xp-`~YX,Y I)8`|(A + V[RǶrCb vQ6wlr1 n8 "6BM z{/EO01` E${D d8.@+Euتxڂ yo<"<8}p/<>:P[uhTb1J &Z AֹP@old\DC5|GxJh'<" tDDE5Y8_s60[!k<!w[V\GandGigX3\,҇ g,=A BBA 3qD$@b$ DD,@ʐ&d;RAN!v҅ o(PMT5GG?ƣLt Z.D*t/ڀB/7N%ڏLcaF-qh,l+Ǫ:kX'֋}‰8gpm 8Ɨj?_û>N#< adB&a*PNE8L8 n{""ZwB& .%n&Oۉ$IdC&EBR i#i/MHV!T<\NC>N ?#P(fOJ4ONYAIi\tST 75MG@ާUQQ1VP"TAe.O4 5C@ҖvNts=^H_N?d0v01Qh`t0^RTTU'TګFQ3WqfUQ֯TwPVS_Gs F_cӄa ;gݚDM 0l2}m}ZZZZӴ*iu09+Z:@p8Ǔ3s2 , l J08836/%dFPBhx[aancg=N (:BF\y?,J âD?8⸘q:Ό=nj'}|@{ ҄D 5V'u&N|9E7EҔJJMLݕ?>h\&L9bⴉ'Nʝtldi=i_*nzXzez[{23Vg<\ٓU+7 _gfo;g07)>wD!7ȟ^`SPR9sʺ)}p. "(i*ԄǜViWOQEǩSNS&:zϊhi4s̮YFfnc2g!sQc-HZмP܅ Q".kb%NK6.V/Tf_V^e)oe6,\m-++E+o]UZ}uk"4e-]nu˝˷iƕlt"RrI[mZ6C7TW (tgZKwWٮE;cԸ۳읰}MuuYe~v@<<\ڀ4LokjlJij?2HKW~}h1c+S/<>xDɂ2O=nrtgƝi;~¹s?qы\rxrCK?\8pJUcڏwvxoDhp :oo?{ݢ'/}êXӵXW`W룸G|"y{Sgj;>?s/ ^g+W/ou~?J?|~!}ko b(AE32x: 1448 872 Rh{@IDATx ]Eu%o!7JT) @QJ5 * | U(ǣPЪCC @ @Շm3 @ @ֽ@ ^K@ @ @(&@o1"  @ @=X[2{ @ @ :˳UyVXB @ @` DA]& @ @ ~dǙ6:+E  @ @`&0X2u5Ƞn+NA @ @@YdI Tu^ur @ @ 0p :>]I27A @ @ٹ<,& @ @JJ&@G=} @ @ @ 8m>C @  m-_iAݧ  @ @PȦklX !@ @ 16N1A!@ @ @~t_]Si{ @ @`&W1JjޱqDOu`f@ @ @ ޾vo[v3H@ @ l ڝ.[z2ۊg @ @ P`Ⱦk+= @ @A2{귿t^1}'O03 @ @ 6lvϽU}ְqOe @ @;ڿVy >  @ @ `=z֨8dO$ @ @fڿj޶/Zv2{/!@ @ @ F`cʲm\[S_l5P: @ @z@O3/knaYa.?߶ɠn+NA @ @@YCVmXOYvٕck[i @ @@;4j"vvUk1Yv~'W @ @brmVOZ8a? @ @hf."?EƬv7&ˎ+z2{+N!@ @ @@̞mל)E4<ٓyA @ @ d[d7ۍc<ͮHO8ɠ.iPqszP//@ @4M h\)k=/U6dYl P @ @@fם]wmbU#֯l{U;ɢUOu[q7e'/2 @ @Z%ڵ:@Xv͡"X{oR(j0访deUl_ @ @hټe컳i-֧]zcg&ڙ}LOݶؗzrl߲v] @ @@#޾G*^s[[Bl!{z:cv1]Rcv;UǶ9v˾ @ @뛹eNjjbm؊dY;eO*ɠ_c7{cddcvG@ @ 00 T/ӛ6^ggLCxVc-}UlUu]~ʎ @ @I q+WR'}YeeoLZ{i"dPbefo>O&ɪ @ @ ,Leo};}/g^^ ` ]:v~1npcfgȟ!!@ @ UoC}Xkaٵ׊[竴 ҨeofP6oW eѸ=u@ @ Ifg>SWmu[P걱e}(g׋=Q݁لzz&cʶ](!@ @&27wk=m.7dMQ Z"OQɠn [a'kupe4GEv>i>L]([@ @ 08 z_wa[X7ҡ>Vwәod fcO*k/o./,lҖc>+[{(cCvkv_ @ @@%_7Y/oqkM )k~1"}v:bv=ғA#| ƪMjdt?jzەݏZ3ԇu~YrׂO@ @ 0 ɍǜ 2n̶NfS@_ lu~UCnlٵNoMa kcf.?a){q工  @ @@o݀-7foUgtnTm&sm'[ϖU?C}Q=וCՋ]$yu9n>?5um?Nrw6ݵY'eP @ @@Yeo|vg]# .zN1Y+˨uW\#7g8nX =˖]߼ ^w3z1cFuuu\pE6l4iҴ#Gn:oRq@ @ @ ṛڵk_xWnu^8lذښZQ~,ڕ>ݘΫ6ӻ>V4;ku-ɸ}qw1w[F0' c:ϣjr)] .'ݟ@ @ /W'7k>w화v?[&zڛEbeMIoNoׯ_?jѢEy9G.N$A @ @{AޞLlٲe2wu׏nZeR5Ljw27e#V]dl1Jz2+j0&Mᵛ.{2nL @ @j7ksjYc7ݍ[ѫ7rua{X ճmٲ[IwcڟQO=ԗ]V[mZi@ @ l,^^F&;ٵKq^WT-VlzoXgr#t'#.F>T(\윴?vzK/r@; @ @ [)\ª'h힠ɢ+kWgo(Zv[Ю^JWv$('Mt{46H@ @ l>_oP[teIwyݏյ.[P>oPɅ0-`LݜvZO@ @ @`snNwڵ pn.3lﮞm+gund@ʠ.Zv[e[٤#[Ύ邲9֛k׮1VX ׬qQhgԨQR;vl9rdݨJ̯ @ @`s7+>b -ٵrV֪M9vٕ7z3_P&q?Y @ @$wo0vkd*^Uoig_Y}h]=ۖW.s6{Zҗ]ڷzϪUҥKEvvvAJa&nĉb2f3md~m@Z"^z"O~ȷo6%oӆ7dj^v8Z E" @]nԽe@gl֜a~cF?cM^~ykn Vfo>g/&mٲklfP @ @6>v0ŮMv1}h7hԽ =?ϖmq:+4-kmlf\{2cEw4]&C?[n[{C Яue~F @@o$GP;>]deP})O8S"ӷ$$Y-Zڿd  @ Ы/iY&V=ӵǮ!W;|ߚK4 m!bSto61_!@ @  Z]]֦5lu@Ƞ-N/&VI듕fU.X^]Se&[ƴб;:t)]{'-"Zn~]̯>!@h#QcWaAŚ&Xe+kDN柮d(W\ :&H}k}+e"/ƎGpeIg[wjgH˩w@ 0tw/еa]K,s|nB;` V$=6 @ @  ^yMW$/W63+^JAؐ[9anNoe'ڗ[Kc&Z&1ʠ66IP_z@zN2Wuvt#OwV*VkqOrM`w>xGO>گS2iCE5l̻C #}@Wivyه>lP{ j[Pv6k-w׏6@ @ @`p+wwY{gg ʶ4ݍcǮ6koey}I+ٕҭYFƍ'2-#vt^\uhJ*9A WFO^ 9ԏ#M"_|߻Enʖ2 @@>`w]e1+݅̈́6ߡ}L|ot?C9hlC9@ @ @C@a^l[>4TvdP Êi~}XͦUic9ȶQ @ckWw:[~;55!eh[ GY$;l#rk{gcJ4|zMF] z[oI-םkt#2u_hbº (<[)+p}?|em)C @ @ >{++}u?2mB1}h_iȦ;M:P~k׮0op]b4`Ea~a@'exTs8>vʱR|2|&kpb?b"Gm:Nd,j7j3Ml7-o 6R @0ovd\[6c:ϦiU}UWeŰʬɶ  @ @ 08aǕ*#uel2C w/L5fҥbk˖m[Nik7?[2VI eӑh#Eoֺd'ISP"{7jcG`#]ԭ69F >fEwiﺫ/jfa>ĿzoMV7H@ $ݽAזlz[{V:<1^?3¹ZktmJgN @ @ 08 d+̫ڝ.w2۾ї{r!U}C}X9ޤMʬk C]=,%lVM{Ҏ{+ĝ5k45j&-F @`@X=b?ׯNW03# @7 lSj@V_le˵.Md}ճl9]'ԇu=U jipaTdLoҵl=쟭S @ @}C2_hmV϶rk7]i㕱6>ȬMٲs7 ]AhM@ @  B k2+k:k6LbS+T~eq?lRu}ٺٙ >e~R ԹVRn2goH["5H@ @ @`/4r+[ш}t:ȶEukE @ @ 0 dڽv:goǸc0ݠ6م +[eVջy}' @ @|잠:]U˫gujY{g ٶXLq1!@ @ @>`elB"aڻ)cg}[JӼx.M @ @%'-+8]ڳ+ɟA1 Ӈv!@ @ I v0ZA$(խ-+[N7@ @ @`c*9m,1ܠE %=3_"-ZS @ @{m4糕6oLߦP{Ň[[dVG6n>B @ @ Z={eN7lCZ1dPήMwk3"'MԝmS[W>07M&VZj?o$*V5^{$G O7oBi7hcGmcHUkocHUkocHUkocHU/&mOml<nPw--,7$ @ @ 0 d7fqL_Ds>+ѵiE7/[n IلXfe^];)9ꞏ#@i}O(sS_Q||{,c O8폘Wύ2o|ok?91ʍ&mwjzw0ڀڅ@ @ @ cX{&cv ol=جߨ#cGlt$0\55&$LğH,z"hAbğ ,"Dp|F!BN ,GVqPx)QR?>b<5rpX(F*4-@orWū)_Ԟ)*"EXOQT)-jOǂJoQ{:SU E|ӱR([ԞEBߢt,(c?EQPķ= )*"EXOQT)-jOǂJoQ{:SU E|ӱR(ב5& ۶6=R;A]ϫw6@ @ @`pp'~a=fgPASy 87ͱ]?%g{2s?v/E lB}_+*O84ŇR C}OQ¡)>, dgfMaT 83PSTğph ƙ&ğ"CS|X 0<7''@qf桾?񧨈?H233MXټ3GFF36?#9f7T2clپ!@ @ Mê@ʠ.{]_-døLɐoӮ 냡">% E^#\\X{L/EW`\\X{L/EW`\\X{L/EW`\\X{L/EW`\\X{L6+t`sрO]C[ 6^V62YdNU1:P @ @6je 6vV(k?-Ԁ>*D]rOt`!<1r8G\h癓 3pΟ<}xbW87wPEhtczc_nv17 @ @G `~a٫+kˎvA䧧{2![&> 3o> d_# wfcړxΟƝXUq89]L}qSd8isp(:O؞GqXO/yr"]AUj#fzlԙKi@ö2XOl @ @ E v?1/KˎgvAt?m ؓY'e0~>)7>$zappsd^DOsad~ec\dؾ3-k?LGKAz_"Q7lŎ|eP6 ޾6C @ @=#ÊSuK]c:=p{O_?}mg8d*Q߀믿^Uu3KPURվ3T_UQڪG/UW>ԺKUUꯪ}}RUUGkj_)T_UQڪG/UW>ԺKUUꯪ}}RUUGkj_)T_UQڪG/UW>ԺKUUꯪ}}RUUGkj_)T_UQڪG/UW>ԺKEN8ᄆE{qàT j` @ @@?r/ɠH>q 2wmd$#5sIFyZgWA\EyvF2jo1 3g={vp;fd_t+ GokJHO/ގ|iM0A7V%0TnP++W= @ @ 0ؽGoWhzϠCuo-X6b7s.zu*:~B;/A٤+@!'9JhkE0ÿan{!W߫|\/ 9E^ȕ#j \B;m/ !Pȉˍ"e!Wo_Qh{a4?jrbjN/ @ @ /2{?|bRc4#1]֮IO~0B)/?*#?_v????>W){^ۮ㢵Ev< D< o⍟ $Y)<<w''kDgy?L ݘݗx/:xW_0SdPJW*G#b$1=O~tWqmv]-G?G)'gil{R<[OLhcum8jmPjP͠nH !@ @ 0xpŵ$Ep[S]UQFt8ؓ{ןů\nA7D3w^+}fi;};[Q&}^i]Ϡ5")XtI͟; l B@%`bu B;%#xX#珋sL珒   sM珒 /+-֔A݀  @ @ 2t{}KE"oONyKӫgc"$C3Yq/"|DO9R?<~mDVs${jSL^pf{ɔ.|,'N%^+Mݏ>*ru~?zDoՌR?oOI\|ȷ~-^k?wȳM ~՗OoL.G4o5<Ÿ?5a1~JTa/5#/J\5`׿:WXP UT؏ ğ#EѶK+cJ4 0s(vi{~nb8ʐF@ @ @ij ?F'F᥶&.q&&ww;?̫?dDǝrg+5k~,_DnCҋ'Gk}ߔ¾GkfJ{YG|':Y7f`[ςo,M1?{E^y?wNO-ϱ |np>*ῥiۊ\f6sM׈\e؞,[T ?5]h&[=#&.ڇ.55NK䳖␟o.l7V2?+Ǘ~?EQPķ= )*"EXOQT)-jOǂJoQ{:SU E|ӱR([ԞEBߢt,(c u)j|:B`gPmVC @ @ @o dP9bEĞ̄r#R ɋ\$kIqƊE~mTn#f*SEnڵZϮj̜E%/{f}EWC?Rde^4]dN;E|K3g^^3ߜ3ЗDޣDD>kR?/Tdqx =f6r''WN}`?E&K]'4s }n:M[GK}5O}ضU/+1LS7+a}oˬp3M_QpM| d 9yo;ğA( uMMaT 83PSTğph ƙ&ğ"CS|X 0<7''@qf桾?Hٺ!C`gP^ @ @ @4-nC?i XjyØ첿f 'fPf2/u;`]J}_ˁ}gD>˾o\f(q}?6m¼D<:?ÐzS^J{XJso'iW5d}iNzGE{Hdߞ"|={&8'c<|bgŸqR<^BϠDu+^wu77/G^%Y3J'NP~{;lqhcz Dn#\`X{Lo"c(G>5_"c(G>5_"c(G>5_"ЏϭL]Y!@ @ @>o >+D,%S|]7Pϖ=Ra)ü*%tå;6tv k ۚ@fpwf>F_^M-Zj}$hpQST:5͕>aίsmUl6Rü:~c:̃g\iF[J3O諮w$y{Ts}e̎9xUl5g[Ʒa7&1_."OUCx.dcp#3'+'<gF;8i5A{l @ @ @Yzf7i'>Q iohw>zKy[cw>z9h҄߭>{O i9f/?'ekɇaOشE)hxJӯW.X! ^뗫#<.{YwcO|qeuZ5|hο-rTo756k+^OӸ*^o-h[߈?EJ~k$PċGyq4MXu1QtqSd8isp(:O؞GqXoiBEh @ @ ^!@u`miUĦn)'ntJ=V}5~zsS$|GjY{ ',ūy}kÌ\]>)x5*/ka[SR]>' [iL-?R>AyZ4?i59GdGist^ɏOo'r. x=nc}j '=?vֵ̏|v? w&u-/"hi]gcȰ}g2?ZZ:ٓ \ @ @ O ^Zc:y@IDAT>=J5R{abP˯[f`mF}ԉ8dsHG>sڌ;[ }!c'Q)_|Ai/O9ӟL>wԆ|k7ٸ5:Z7}kv.j7ʿzd̈́~x{5z<͜~N9FJ]yȩ˹1S/=Es4^11LxUeLjRl`f+HwOϙ3Gf} '6ڠ^06ˬdkE֟wOO{ Hj?G9OO{ Hj7azM^[ok (ws݀Z_,7xyjRz3i^F:Z+L81;ѓA-!@ @ @N UE1.v->+'>Z@mr[5W<;L c,߬ ZAVW/-c' º_Gw}w?B+/ 9^]ȕ#j Fr !ܽ+@!#'@u|h @ @ ^"@u/-r[9e>1^[֎e2ZwU6^mGJY????eϋvqppp\)vkOUB * @ @  m(~j icOz5kE[-8:^z%>w\(!@ @o ̘1CjDEW1P]4oڻ'@u|h @ @ ^"Л)ut!md(C7B눴]7{pPQDOyl> Y` p<䓻0Z#z[W=ҸG9æ"7dy&%ğFnL>a9ѬkDyc=ԨhE4zϞLhillzdP' @ @ @,̠.;ag-zGO,s_0L4s7E^(Hb+ԫ 콢s=2˜7n̞F+v=MV/@~ZZjkWTV1~#V9گqtֿU#V9گqtU#V9گqtU#V9F}s*2͠~;dHZIܠSOZ@ @ @qm{1ZAΚ9<,_92? cqgeOLO@__>nϤ6 @4}ÀNwPoƔ!@ @  dPycE4bOR;A,㧄 dZ 6VDL}vQTWQ3 m|WSz\މ"vJﴳrw6J]{ @ @@ 7eb'qF~v؏ +ap9AkS4B| UofY3kgfu_ά=N}:v;iV5y6_}{T3Ƞ.K ;@ @ @h+2ۊ3IJk'0EeEBߢt,(c?EQPķ=OOIG^0UҞT{*jW[;F"RG2}~:V&џWc~NƘE>\qä~[\N}I|@BDžCb}zo:nO`_a @ @%c6/LOnbOfB}]M%/Ǻ&&>@<7?ALw f+/,K_ɇ,rֽQE rύbxg4K`g^zw9X+nsb6y,}3"m[.~|">N]y׶a*:_G2=CF$|HwQ{[Z??Pyq _6ľoogo9O\>!f A;g>}[\{\~^|7BJ5>\q.))8{w>SC Z$07>6od{Ax @ @ Ƞy(ֿɐ7S?a|M1.ko-ğ }TԞ\5垧4-;Iߍ$6boEĖazĝKs]]ä>nBښ$6wIǞ,E~ 4L `3zU\=MFkF"6e<^䘶gNkF'?)_kĨK5BIίCקq&ɨCtڄ>YX~sE.X=Ti9Pq{*'502{>=c/<"aː|PFF% {  A\ @ @ J ^^03vMSa\+B?80.¸)[>Zsy>$4vc 'N_ŘGd"Q,= rgEvw8Ds'SgJK)&f/髢:sD%3ν\R/RGy>-1Mzs![K.&(d,] .^yt?3.ӎ$I*;Ռso5+rGrk/\~ "=d4gF=KuץxU"S5ƛv-ko4ctl:w yR]\quR?ćD^qrJ/*3Ty=\avԗ_?R{i+n5^Y?J|Z9y~>KboOD}hgm>yxk |gʩ*X:6ZoU:߳O5[/ժ+DuU'޽~~> _RWWخmjGS=Oy0=צ~z@}G1a:y}ׅ}Ql'R?s8ǟ{ v9~Dl{W^{2쉺ZT=g>EWIK,=/>vQ[o7P]߷]V=/?~ 2΁c*_wu,OsxMTغ̟S'\Ou>!U[ec~}K` @ @ @J ^"> L쩹= *v"{WP#NiP~jD9lg)rkMkҌK}3I6o'\zhn8~Y>]E.}D3nmԓDǻ 8/~ K G'3 g.w_mb?-L s`f|)8!vnJ}9zWިьL1]$•7Pzq"IW/RvI.r3mUpMsH3n9K#hj2RSt>Wu4"o[.Ѹzj\%oH}\I"똟\!Tfj&.kw_'38pDu9Wv4\urU$O4>NQ6J*c7c8x̗ۖ.}3wJFI'^Oo,21bJәvsO9+Nߗw-^]oKdz\r?Of/}oxP|ˤCt;wb_̆ot g#139)?&$g㹽Ӣ?k =g.;EQꫮ1ZjNkJS'X ֿW]t>ƾ%_nuu r@Eϭߙߟ9YO;_USZ l?|N$ v7o?}g|B䬧yNEv!"wX)2"qEߵHs>ھ/~xq#~\zxn?3Y>3v_8;"#t8Gz_?'Aa|By꿧_'1;5,.P&7 @ @ @w|'Gaj$h:}+/&\V.}b?fR4yQG'Y˖-4g(_K|TӬɆR۰0!Ε嗗\J3ݚ8o9WڻymGlW,'K^yu !}M'hW寻#m[vI'[|ֵ+k=}$9内ʏ&,ۯ~w;b=D[yLӌ#<\;V}Jkjj6Zi)$o sgom;߭.{ϜXEGm/#̱/ь'SяU?.*<zK:q`, +_\[f\9g`"{n_bSXNſyx^`~wӤ:@G|;oq)&Fa۫+U$~S_}Iwz"w[vI}gi!d4}@h9jPzc~ ͸I WnQ6_~=CkSl?7 9_'yvZ-9v=_c~]xi/ĩ'D?N#{}`= .8͈]v]mu8eLQS>,1J$xN9wg~3Inx)}tgKmtuwlY5^~i:3OxjSGQhOrw?˄{db9jG8;uSa)3~v{MоfLo?]"o>4/} /S>6|g}RhgID$<Ҿ/n9u;taURťWN7.;eRy"y^7}mWi~ Oo>QN9Qll=^r/ ¢ݕOd6iR @ @  ~7W1G 3)FDF}uo<+y"7%/bS|׾9iڵ:kW&\S04'UTu?Q˖,G׌>!nO9 |0E׿zc2/zUd?f;L#{Tws-DU?$g;:ͨzfUOT3]wHlD351Ͻ~{\LiZn`LGߥ~ݢ W5 Wh>\U!gdwk y$5Z6OC/:~eiOWXg|Ѻ_Go ;yv ~^W~wD&&k}g|N:"u]t)T+b?"WI;5Y/I\7,^. ;iz]yI/Fw'yWuRyN~&^,{F wWbxN|uxx3%M_bFHZԟ_7RU?pOE؏n @ @ k'kO\'G+joMRt/~L3|ȈMm~ak^s/\ߡo{&TiCI/lև ti{D,zM .Ҍ 7M[9?fdfwۭ5oHϐ ĽMyp͢QZ 6^ﱋko_>-rddWƍeF(/ 6eV=ϼLuzN3xk|#hW?LۗhfL4ѵS4ɱ_8/32C`vkRA{?lXXX~ۓAe.)DnhO2ͤ=D]~&jՏeo"wc+0z~\6b%Ku:CgRߒS/߭`wU/J{A*z#M][O /~9zrk~)?8WAl />܏GRƛE^~y"z㬺(ч˳á#i"rg3ߔz/):~ǂFahG_$`aլ'8h9҆7W64t-.yGu=ϯ~]2\WbҮjӃGܦ2O ,mhc #S9y{{O=∙b0/~2OERgܑ4qſͧq~?`\fz{?A {BGaSp];AyRd?9;Agݮ+:VSc/jF[|I'5SYޝ4^6c&Lȱt]_\L-];k*!a}mF0[qk>ɔ(Mp~4}[KSEi^NhgXRE5B%Zp){MdC^ M"/z>% ^j|yA6rnJ6~]ENJ*9}gOiF1d7~lvl-G^ y*59I]}JtutI"C\zK~vqr8ieRQ+{=pCEJ>kTM̓U3R:YѸL40qiWMI ЮF6?ZpKn֘#~}]HMM Bcӯf{+7}*gz}by圮5vF;0_/T\@Cz%"YEgR- q5mQeSp޿9KjtR q?ֿA ǦqYt=7?}gpsLO~_?'9y zNN/9:O\7e]MsyF}q?S}1_/N /3t>cwHx:QZ `߿y*9BOt-4\jQB @ @z@> }"SNnH'Ԯ|qpK|䦚}ThbՒ թ/s{qE&L'kfKD|Axl_nroWJn##okz_ҥ֭zCڟyD3FW'ߖ)eqkJU?c~7iKy/9x¶abAٓBQ>,'>LTkVwI=Yj9,SE֭Q~j xzS3 &~]ڗRNvLj|yk"핶֜7^ ^Ҝ)lAEȓ!vگ˫ڤ˧"޿_#>lשiN?v+OFF[qvi 5 aj:RmЮV݆[#TJ#K>}{/z"=;tRwH^}m"p݁RLcUv,9t'}jc_>fM_qWiW 4CSՆ#>-S8/{~D?WiFWxs⶙fԣzw<\6w:R$sgukY0`MkcRX!.[ Lǣg,CxrKa5g/Cy,kLFt"&Y [W&6p_ ;}iX$ş=~h~_0®f2 yl;3ec%b{6(խ7t UކЂͿT8Q`!O+o`o~=B磌X[_)vW:+Ep4 =̲Hyb_*ء5-vExz.6u| TkSTZkpch{w.EKMXyZ"Z VI{=ݣĥn\er}~=8 ^֘G_j Vvd1šӒqboL;l$GkbyOnq֕lujwnN5Az ^^sctlr{/QÓEؗ2t'- GwΏgi#-OwgilZaM$@$@$@$@$@$@$@$@$@$@pDZ$oV<ވ_x]iǑ4G=uD|Z7Cz` +L٩?= J 'K?ew#%_3@3'J%}F}_/y??^%}bP*- oSJ$[PD5g];r\5DҏKlW͇\ I@NJ `. /eر\fFf˪6KwsnM3{J" S!;j(P9%v^)KOõb{W_G}{ ]kA7MyD=eв') Cy<񢞨4I&uF=I𥽠(w/rWcΦ>뽠S]gS$y[K^Rf$]7N_n~xɍ fZ4 q]B2w xL~^W2&3ƨH>%b4M0М3n2ؼ|Tqo$rˌpjZ@ NҞSձ_$͇,{mv9K}Yɫ̯>น /L"|'G<'F#v-{JznfK'h[igC}$&xp<:P3EߨUI9Xn #.Yzt$|C[%"oMX[ I,X5G`!.˗Jz؏_/D'6u[sX4/:Kt |4>qg r:}}c\r[Ҁ9YX߳8f^j,0Ɔ7&6u3e8$}t@pQsy}%WK&fhQgpB4K<4jS1&4>!NAz8gY\J,6Gs٫(g bmlzZ1 3m|p%Yg{ ^rߟtx)bd#"S>#HqdϋD-y}|^?/BҲƮ|}Reazr0>󌗚96}#{iXCb[1ğh8Y"          H kH~s5>$^ܬ[iF@ܷoߖ:EnG1i"x?pPCebOԜ3_wl~(w]Ϳ>)a=gïȖMe53Z _j}&vӶ/% 4  IV&!]bFxHR  ߙZ>qIz y{CB7U(!p>|d>i7e_Lҿw pzNbr|oܾQP2\7ܹY?4g<ˡ4 ˰_|%\(^5~~F}\:ʤO?J<>s긔D9_x 8ގ7}e N̙=/x2Әnnު=Yjw0mC"wmKPM3Ae3gΔ%%%Xg{zq[==19Yi?( ơ܁a].2"/Jײ*1hoRX#Kw`Na%7Ţݟ,(uH u/3<;lwsQkƿlIfX*+xIPp1EYE%b&Ogǔ!q)PzT 'l8Tր@R2֕'**<~,/+!4u%j1ezj]B-ѕ2F]uOn'Q>׉:g1έ=DФ]/HY%v>ļǥ~8_,v}b#.a2}ﻘNeZA^ms u9&K rs/?)0Y[gnݤǎk!߯_f}P>g737d_}4-^볁"V?ﴑI>*&         h5ZvV˛#U:T:g;{ aF:0":%k[vBCr(㨓 5&$R0U:CWk@jPkՇ&v*(%I:}5Np()C{]]|&y^m4⬋?-'jQWKx@WpAu yQ[Xi8zLQy~C`SCӝFA]}hV7:x쨤i]R^TŇ$,08:gD;VSRBߥOcuޚlۼڑP=n|tzij1<UNkկq֪ߍ={KOKz8CU%Fql.ei2MOgRNWUWW2 vi~7=^b7vx0at+cLNL hW[["]%`[P&vYM([Q[9Xo3~*ᴝKhUL{o RJJkbܐbSR+c=L_yRbA|OX{'~o%>o*z ="h'SR$/s"-Pxd16g}mCߔէ)%1/ DA (`ES7/2x)+;a誫!=ǡ~Tqy_reUVrV-ᎱP.w3 5Pu|G%P>$p^X".L˜=ĵV^(Wnݐ^jhעX( wny[;g{B™wFFb2D/bОSFIrw/$UmHб/p]EX9Ȳ8ie%B<8 ׊TxlgLZb}PP-q:"wCx|8,~{QNS.dX/}:ҩ$~Ժ~6YRmn &O|>>SmSvCوh^wmA~)“&3?-XDr2|hH="mf?5s,HHHHHHHHHH\ F)'~8NxTUypl2w@I=܎acߕ[w[]^.V=r 5TZwQvOR`-;߁vЕ*t/F]PVю6%1PSnnYhoJ^ib!"t*9E%vҏ9?s\6_c} lz`Su^1`ά`~x q{Xw31Z^pc$-ΈL1Jx˂B:Imп#GMh)si Jl]G::]ur;Asn>U[%}N' Qf~;ng>'rMFO^W؅WfKorX<i-6GXa,~Y3%A aqZwk0Ǝ@:|ȍ[<7Hɟ#gn~-4Kj|Rm+V]X| ?2wx7l3IkR1L$@$@$@$@$@$@$@$@$@$@::^SD6"-\1Bt擏~vRjO\iW kJCkݱ4ivK$9㺣$ub(\/L3}()8:9 _}@IDATYW|[?qF)lYI! {B굹(gi!ݡb881=/5PN:cڄP_v 쪀С8[>P(/a} I;Y&gY=Sc8N@ҳ|0uyQ%F}؜}JF8ݹ$LQX-|Ck꼭:缵j%qҪaQ٣U"oMv?rleн zCyv[xh}ʣCC#P"&Zh69f%ϰCG'PG_sW!          &Иs5>$^l`N a?vր7 =YZZg?UD&м7>(;@"D ksVܡ41F Z9,-]+1 jbinaV_[~jxyi&cl<9ܸ9 {T3F.~ÎϘ~nL\t溕nDy fz6o}gqM;z^zPML7UWz6YPP 3gۥ bg7I$@$@$@$@$@$@@Zrss6^ژncoi*_~# UUus_^ X־׸Oj5#"V?ﴑIH.笄a          hЃmT3x)(qƇ#` ^#(v.,Y*]:zg.^uWg kklk"Za5GX(jLh[Qƛ#mfQiOo;w0ks5Zg=n-&>᭦yQv϶UoX>c5oJ$@$@$@$@$@$Z.■ūCu{iHHHHHHHHHemcs 9 t{u$ ث֑WHHHHHHMh䠜G<,6HHHHHHHHH.$TPh:QjfP/Gk\v5(      /mW6PA6Ɓ          vG Vr%g~\luf %3ο q5N\s<&     h[mFo mB          PAƆM|c&b#P,_Jgw,_t՟ -V wX?\i ?οX]er\i ?οX]e޿zOAuoHHHHHHHHH *[h(T4uyoVG]c xʋcp5Hu=`7t*4't*4't*4't*4˿P?ڮ/ڿ8gn$8f#         h*57a57RzH ǼrSfɿ}w'     8s © g,         8PA}m)f=5=X=Bl \n恍G;bt`SqġnnO.98\@$@$@$@$@$@$@%9/ 7 6<8l \nuz5lۛ%3.}<7Q~G w[lź]Vzݑfyl\!52X|>J7H[v=| I;\7^d>5Бٗ8|u6CОX ^+ڂ}q~|(?S';(Uij[qM7&uqؑ(a <_u7B2b Vo[xW\N{txzs͔%__Ҡ׌4ݕ%%/ƌ~ܽW:s @ ӳR}> ^Nh-]~G#         6J/ޛy`xUf,J݇BuGf\,~gNwٺQw;#6tZs&myut.=,P~ ҋBUx;S.᏶@]Sm&в.ȟv`tw+p\(ܵAIw'OJt8}L">تX(|PЕU)73μ*O:s3 4 1]$|KC{>?lN_I^ *qX+,>8Cq Kׂ<,H'?'gl:xXwMvV>AmX5&(?(XgM?_DVܯ7ǼQC-UFp&>X)vt/G,|8 >y((Jj[|Nqxob$Elzt̙N!Qt?.N %=Qr- JrRsgxI:vDM?+z-cexcz2! J"P&ՄiXZ,b$YsVc;[pS{_$%bSc *kW$|UlM%ڥv$cĎD'*6Qg_q& 6q=M4~qG_hI?kĎPj uBJ8FmcWL/˂pֲ?#(aGTP#J)MS崶kdQZ} O9`+!;^S $@$@m>s[+rΪl W֏|:!ʫ(3f@$RfBRr|؏SuN06J|>H#G55VzM5BϞ5՛}Y_x+!ƴ+IKgwVѲ±:@~˂"2)a$%ü"geA/Z<[lQI#s {J},r9gܑL1ٱ[}"KOg]P67# {"wBXR["OEy9߲Pȿ`̯~'%#s/Y#V/"6I=B}V$].+ 3W9ø,]#9ǂs%bϽsp,̋?E \07>,^5:P&Ϋy:ڽu3NqDl[H^r.Cǩeq9 z]V~aݿ^%Fi^ wVWQkK^^ wKNº*,o\yE$@$@A~m\c $@$@$@$@$@$@$@$@$@$@$"*No3Uh^k7RCaOX6@ ]QL~^Hyg[%$W<-kJ*9PLqӍqPAA8ale/A?[{`$IY|AeRۡ<6V%<* 9%Ғb?yyI|TpX& OilU5>Γ(D[Oz%rbî6K©'Į*v^%Kf͟b^ s(e%El (%Pw~H FxKN;{&-؉r+ 8O{I%oǔ[uhϛ^SkL}KW_+I`.x /yS?ͼz@s߃_pb4תPNks|>bF5e͓Ud|td@1?]Abج\/NҳoDVʻW޽\*єTzl7.Ʉ]ΧKef&M j3@٥Jb^~PlV.$O/*aUN7\»2 UPL?nY .|h+c^u=$p> (wCZ)dVv V!v>tz;ZnWd_ݛcߓGÚ_rWɊ. 'AY+B@۲V!(NJsseW񟚪>vf,牝ٍo~#wI9c|PcF7`kX[.<{ !NJj$GH c ;fC ל*sX`}>P9R]q(|ɶ5 _'6߇ttwwys;k5 ZXg>;L5;C]Z#^u\BK{q ACf|1^ \s9֪?t o?e㦲9b7! j_-tȺߔ`?.~_WaK+v)6b}u3m|>7Ŕ,[9j eϔ3`s'eJXGcB o]Ab  X,kZV'[ֲWP2zDW*^'Z5߯rZKH6ݺe hF_Q^sbV k=ݘ⧁KnfY 5JCPjd7Qnl:bv)Dlsdj,О'xyg[k%w++!c? B̼H6E׿yؗb>6qQu8ev2&%cMI ;G~1z]7V u18 ^ hʮ|vߛ͘4s6 3ӢbwhQ>Y[ #䛳_)[zvyuc6"!{Hޅ~oF-A-I׻lfԒc`AY1M|f*tn^r'~quek/Xsu]b_![7AYO@S]9>g@r<"sĉhOQ"1""RNkғoJQV3DXS^v(vøSִr; o"}6ץi̺ʘ(]Qmܝω 0{^')oW̼DbՇ2| XHȝ&awq0~ f\.1SC̎~RۆIgHܚĮ=JlL^eQH!`UM]xG$@$@-L cٮLHoQky?_ܬKn7 @30:f*DL@*^on<{K#iL'tڰ8kq%WIz!({}$}CvkࢯMHWoL~(̇b2O߳7%#ݍhi,;YP+;-׭~-ӯ5,cJJjc ͳ-<^czHNY ^X2SO`v>`ue9EcfIOxm9{b䜆O&](Ċ(x@zk~&1Ve]bT9$@$@$ x~4m(|7͛(< h>%{.e %ղ,C{{? 1-#N}ظKm9bŊ/P>_Zfd&vbF"7o3K0M@m4.2!8tImV¥NPLjZ}r7'PQEe@|}^>q]Z=`ܮ}gb^2Wf^I]rjA.\Ǽ7`8a|rsa yub~ml|l_uP\V*+5J^sFfuX74WNk?BGk0ҲRRc<Ƶ۵"& @M@Ǭu4          8'=<^~tWgqī i?Yq@V'۷Ά@(ӳ%CWL(M6 ̛6h(g΄R0) 82H(Z icrWil*ibYED. +HSuNV#_])nk͸TqIHJDjwI_$vqwZ=8|@WUQD'%L&\*0.GrA $k9N?Z(LH Wl24J I9NR2K?5JDyy9$  xBn.~e,-[nҾcO\,_? <\N coֹhX[gqyE;~j5i#|TP;1L$@$@$@$@$@$@$@$@$@$*/Nb*6NT9=g5s@`n7AQu$|S8ٴ_[Sv*'otɛFQؘHHHHHHHHHHbSa~7@q).h#SF=\2pq=5Z{]7'PQ1k Mn.XXSf9%Zc]"|>H!FcɄ^#$K\Y \Fkx+!ƴ+IKSwVI͖Ma,(&NB{o8Y2+B~ӝ8(6= I_grׂl$S% >TzZ؜rP~&]vlV}b"6Sb,tP~={'}-ۧ梼EFzhˑ3_AY/i +X?KEnr[+"6Ia?xԻ]7Vg'ps,+6홇qYFGcsЏ q6{sqW_J{2"wO%~Co2bo|qYktf^{?fJ45hD˶Ke YK%w2;t*K^0eH7o +Mgxw3X~/)-,E; >!a*rfeYYHHΝ&t]/6U_~ y_]8%䀩mOc}M\*~k;яgIXWYܧ)sCF}E!$}[P&Q2&Kxj`>w=r.ڈk%!~nKւ<v8COv^ɷ!i:}ԬӁP?}UYV%:xh*fX6KxYdz 4 },c1QkB͝$6Y_O7ob("$?c_^ 9crV\Cr1@$hyZ @$@$@$@$@$@$@$@$@$@$@I7^0c'|Tb8=VŒWy^8+'4k? }u\t2mPpiOl>"G4VC%9mWDa i٭B3n ^](ߣ EaΜef\9Tq}r|_B\0Ω=Aµ,{>`ՠ|w2)P[`  X%<*g9ždO^@8DG_8-IAa3 Ǘl( G!}_BgsS7BvYxBɩbg5 ,qXdzy)f|{$=*:kj g%m=#_^RQ FxKN;{&-؉r+ 8q\0XVb / E`/*uQVG_9]%h\'c8cWc%H_uhϛ^SkL}KW_Fx_2 d-;yb+8Aŧs0 (qڅ4T[^"*\u9yd??/ڋ=n&Q@Y02X䨸s})^rc.N+{Ď)\/1|wi ̺ʱ I9Ey/:)a.KM!k6Y~0aYXgyss$fĺYD/1O^+rT5[131-^?Jz3*v+b玃cieV!~Zr#0eh--Bݑ)̙[uI+XU&)(wt,VX`kMt t /3Y}mf?۰RKl0V◙JyxHe`h볟c~y0*PWo23wfI|~wh.HZEPЂh/Ȣ "         OmmnoT9o6wXDZwjXοqcV|Z<™:ڿ'_DnQdr扽vWn<".L;JPj^(_W,ʗUz+wEIzوUw/kǓ8@%jY-Ag"3:C!73oxu6Z'+H|ǵ0 m?()YP>?apm}P%R>nY .|6kPDm 妦.> (CW)dVv V!v>t \-+2P/9=8i+%wA9hY;ptz5mYvn!(ѿA̳qp3 4ʿHx0Sҡ(&#ubZ%߆c{*W^YE{PϤ&eW%_Պb_sXe̫3]x3:_Ņӭ'}{ Oe@IDATUn8xG*ֈ_f,牝ٍuɥ\Otlʫ?1"\?8L($7W(*vCp].O>tX|*eKH2L16/F\bg(K%S*o}nإ}C!QN_˚/'׺˸rN8S:$Ͳ&]zJWeb˧P8;yإ?{.ߜ3cq?X%ϬQwf`>˜_G/zVX`YmOMK0~X'~8,g?V7FK{WogwɘWρW]cRUQ6!b<~ⱘ_oNJa&1aE(3д~ߴyܭ4>?9X6;nunjTPבgIHHHHHHHHH9_;uyo2Fȵ<7_p9&nu>q+/86.w46ck՟YK;q-75a ngPj ܅6g:o`8|\u/;{ [>+ 3G2˂/?_9:o͜/9߿G=ź_̀~`-[rtlL h](PJ~cQW@eAhY?"ZֲWP2gU!+¯xQh ]p4nح]JlE5X]{JXy? \r762 jpvgEJۿ40Y4iYPϼYҳ-z5̿qHEȾ`гeͼH6E׿yؗb>v o~"bCUA=(eKƪ:0/sTo8˲p:snOqeK4Mmd-PU$YgtRϓr7kٓiBjUZO4e_7zEA⿛{f?JY춮o_~X]טe3"xv05YEA?En2ʺN]S& aV޺yΙEl7/D:O7$"w].RlWE X͖׽ق>w:] e2^sB"{04[$jQN׿O&M;VԀg_Sb1a5fNS۞,3yz%ݡ%:|G"џWJऺJ{JuKr#aSQrWkጳP:97R?88Wupd\]y::Y'ǼrO?V@JJ=oZ򤄏\usr3[>_9MGWJXOޕV˺Ů< ؇& fW;Ik~حB6j ee-/uPf!)WdƵ6{~q]X6˦;oTکi,bmm9aJ, PŘ <=%Wg*ߥ+nbQ$bu!)uF^|>(*5fu?q*+Tg2́xD6*|83 ҴAf]eL.ݨ6$z6LP=f2jWhF8N+ûɧXHȝFglYq0~ f\.1Oh5ǰXZߴ43a͎ذ\V-BRLd؆K'z*/ o+eCs]k븩Ӛ vkmn 9^ <qU c9+N,Q]Mc{&d:M [/sXԔ0auX{ٖV21غcp0 UKUSjf Sp0 汍Đ2 +Lw^k/_ؗdH rm\~pWup.3>:TPGNj$@$@$@$@$@$@$@$@$@$@D@_6Sq,&RzswZ*݆3ƫ=.SR-= ';viء)׋r]FZvO?ŝ'WSGA=ɵ[Tg;[xoc[@rRؖ.'}0qi +$p~I~Z"2jU[x׏S)0QUNO-K0Eʱ)DLb.6Yjʝ˺]Rumi_nFh^±F!JhgcI_r/x&/٣;$d rzK{$p@z͞SAߣKNIE{5q[5&"Kǫw| :=USkwswJ)NM=:[Fݾ%nV[j3|gC*\J)C\ CZW c9̫W!){#kWkeJpn#SΫ/6(8it+~q JK%ƋP]*)cx=bch8[!Dje@Nؿ4pCy|.sR*dSum]kB_y:, η0GDGƯ8JD#{sIӟBA}qd ,Q;Wt~gs]t: CxRp";[[{Mt_hH OҜHE_O\x:z9&Cb3_On5QRnx[(Us /{+$KyZ>H#^sÊm5WKZ!BPA          "Q[>cx9RP^~قڊ;yINRug|ӤjkHǫȟk畮o Q2$-()_4NY}[3n;N(uy?S7ޒ#y,(\mSI/43y~rM[23$!

qԿWߏ_D1dYV"μݷr k/zR<1Z‚km3'"HS(6~emo#;G9?I1P6؁8S{FrrIRʩ"c;1gf5ӳ,kďyR$<#2)_eo/rj4Qj qyVh-5-aQ׹8ӧ۶Nnb'5C 既Rg]2-~333Q9qyeƩ=NKq2p$ EGrS`Xaktۻիk PO7sjvU~h(?`MYHϻ-Unq<|Ȑ9ʙu}]_f][%o}A \j,1W}S;]L4{^ (`yXlۯ?/sЛ>&gfdAi^)a3XwQ,xnsCRggcHDI[F{MS~']$k2P~/7oh[|ݒ+)y/> l$o5_“3ۯ.rrDMvo->}$+!}_:]?0[4-B/ߕpѣ͜4VmJbgN"VK &GʏO?"DZ֯h@dlX  infM U}=" 8 h#j FT}4@Vmի1h Ϝ_>Zkw}=?[h?a}kƛcnj=uv43? ' .-w$=pgwQ{8ZIc[/ 5Ǝ{_C _ * Ŀ[W/6ث5. }5 OMwtM'͓tZy|'^~<&I'aA۸.NО#H3[j#ӘO){`T<}r9[͗qKZh[x2W}Sz]-)_0Mf4u_/^6j)-%tF}o[t^fܬf?nX=fFj>pͤIR窻K:ْ^9G#ܹ.V|DÏV{%k+%6Q#/z||\2Z `NZ&Hƕ 54r)mdJHVIӴUΚ˗麟@$-vO;ޞ"]WE7ͺhܝ=UZ*yh/f [a ]pۻ4tz\w. S^/X)g YKب_,?)a1ICOj3jE9C뱕<FHmscsaAdd0%6:ˢQؙofHI)eSA۰Ͳ ve/PX؆J_l̔ B @@@@@(yEc|[^(%ɷ|iNȲ/sp#\ջ[ly;'Dݒwꗟx\r@t왲q1!3v ='9As%mݷQҵ6Kj?lD ,S&k_*'^ -l=}l8H+=oSc9珗IsSQ3dw'Swo8Nϝr濥.OnP'?ҌLD= 'L_rWmVU7kFhgU_B#ȣ1;^($}d!S/_ZUj/Ѯ5eHߣ^㆏vҵKtyi72E#@:Կd_}C?Z4yl_{?zI׼?@L?WL;n.Y--9ߞ~Kjߡ٬:Ai%>*roo.7$W띺'׊]k> GowZ^}-ѥͩ P7_\͛Te#F_ڵy1c~OOr?羐u?'5S. m^ԭgmjI\rgS݋߷lo4i=9j}@@@@@>}ri#mD;hְǥz6޽o۱O*l̓/m;d٧h΍>ImtWIwssFJzF|M<$I;n/~Li$}Z6}Bf8\;}$޵Sҗ_-Z~F";o??-aF=u|朇m|6; S)܈sl#Mܮ9(U`-Z9nFGa[Zu-oSkn/Oy8SuIk?Sιt2`@PdIs      JmK_l|d>B%;.}+Aj71<ȆVj"UgM5":No,~Wu}@U==:Kvvw(q'fp|h>*eH}Pַ:H КCwW3||X#ww{}[#~G#˻:޵E}{Ckͽz;nN[G:s+ /k+ κa߻V#vL V:%DٟiSX`wKg.!@ }Jm     DPg|q0|Oz&l݈hpi`жigZiq'ݫx:T_y` kdw U3LĶF!%<{7dAgݩ/<>^i' oBkS`wmj6u5`WJ?Jzxѿ:׮I"s1iB`+2ǜ'^|+b\̿[V]/'W:)W)ןVh5ʵ|]"u9o@@@@@DPD"2{DODLk3:d"w:|Lot؁i&'zmRp8}GtwOBc*rŚ*Kb 3,!Kb 3,!Kb 3,!Kb 3,ߒ&*=G 7@@@@@*p0zZ~7P} '#ؠƇv"||ͻe'ol7lwJoݬʯ%m$loFVtKC^U*lxwK;52izwhIth֥K#[[Zَu΍OI۴܎Xv'?By[ y?zpqaÅ}qǕHf#7<`.v߫ޢY҅j׵{>MΛ0FRdh MicS;߁ϒ߻|IǶ? 3Pz(wxOKsRS:7-|MMONE>Tz:Iw=UaǽlC_M:5f,;E{璳ϛ SFLWYOY"a?5t<~#7HDNjLtv?#S|$"`z6ݬ_$VˉLh9!Al5/SwcvEU$2{`d2X&k$Mz~_!G ͏U7i6xٴF+     $$MwJ!y~qFi>+ ӹ}#oI.ʺ߫۴gYu  dz[#/1)<}d;jN.Тw: W[uLWGNvtA鷐Sn KֿF]+m3>m+ @Ws}*8N6JpWR#     @ZKY}Nn3￟FJT8b}ŵo1!<2u24߯F$< sjcS P7;]55 ܛ8vn7i<ؤGT,dcsΐ kߵ9x$;5rk&=970j-ja~F6|37Koj(=? -Cf$ EiKEkLw!KnwrFͽ&)+$ *~6IXTG3.yl}m1${5m_/~~?ho%Iu,%UNluK$K~tnܬ\sr=~ .Fxm[otæsO_1I{d7ѥ}D{^K>~v5qLnx,]mgF/%“u}/ E̳ߔ+?YEܤ*{]kuɹ%]m'YW_1* |U/Jb3Oyj|v6TcV]]F/O<*"@ Tj_1΀Ƙg@@@@:v@%w];-߷Kq0X Sr s 軕Ji'IńkN#ݴI4/7n Ft? u4p $㓗^ .ةHzTIz>MN&Ǥi b wHy^#T0_'Q\*K;Ju"׽~+R_*i[H;f̗)~ o?5/Jzd>P ӻ.'sۺqw$_#i :)i^pٽ3htWב\3h AmJ:s%]񢶻oFXj\}35rrPp\?zo"[zi_%6}p_Dև%ΐtĹ/J:h_1_#/|~Dk++wo=z^~M)D+t]7Hu5X!JR~[˓t^saw:Jry NmYG寃y-ٯ_7m5xM#5dcEJ啿駲jDufw$d?/(,ԃreOKzryscvt,v~i7j=/j$U/''L׈Q3}l'?gt53eΦBX!]O}t}kم\"=K#ϿGǭgXsW}D߿IFqYWK̺2~Ʈx4S`>.<ٟ+^Zn?g]~_|: gR޲U뢹K/CW@#7?|Է.XksnwIp%"犯DzGS'I:`'kW75{믥k:~hlz9q?Pm_N'k&4wǵY2k7iCRv$u˪ ?۟lT;R     PNOOxΞ'Oѿ:O^Y0f]zS2eӮ?߼vJ=c#=Xo s$SA &+ m$/{F҇Јg SM=7ߔinI5ٟWaZnlھ=i\\:Gy'˾׭ L^~NXKntli`gdIFWoϕL%hΔ?ӶetlFr#IzٷtzvKL6ۂl;iĠ͜g(?5?q+5CP꼅dA?aG%$S?w-wҿhY6r/ΑtD1^cAfh3=5͚HS"/]օ~ŶM%uJ]wN'.<6y3n{]b;;gvhӃR~mߕͻ~-Om?4M˃%]Wt]fy򘮃1/u:xz}>xf<Yv d4ɶ&ݩiʆ@߱ϛvk"quͺ6_~|t:l1m/4*[S/_9"i Y6f^#lI{OMgOƜ\ҫX-OwV =R`6Fht0ߤkUab1_~b=dohlKa}G퐔m?rĔ:DΚ'{5+5yi7z(/;'G.6]8e]JIے^{hI@#7>r_OJZ}mlj޼;̍dpL 94Xit<M(Y'H"C43:!T]_6_7Y]:C:lL{6r:oTf͕>{딿\W5Ti4m$gYy|'\WsXuYW:]Vhs kY: }^7xǞaz(taʥ+o&4R_`"Nl`*]׽׮u:V҃Ok~iG{L$m. #?$~gT}xJ2Қ=(vʹ麾~s>f$fni-ъv/~:m4ص_6CWФa1iԻ>}='wЈ5& 1)Kc}Wʳde^n΂#egk%}z vϾ&/{v͑M $]5Zz_N}dDžߙH}_2J $6B@@@@譀m3VF=9y"7vM?`y+"+2kz2Ǎ4| MKVz?$}f{6jl٪oI?sSOgG p"{ J۲6ՎF@#*-mI-yUi˦˾nBU[Ɲ+&N0Se=ϲl"8ӐF/Jר琕'u$e.FNWd42Qv?Y7zШQ?&I㵅[~dYphd'?Η͛+I]fK4tjS> . {O0r} 2߿Ὧ+G:lZ;Z;vV7̸Kl_}8 j3O+r寫7{@yrqR~'-v~elTOݘ `'o6A-q?u+ ?{p$f}{&5Gy5R7X:_/9a7.wN=h_Jz|pm;Ćv,I4l?Y ?lUaY|{zDQ#}iޮW%=_0R/{~0s'އޣS4pM`QS~}xɹq].1wkR<拓4"O\M;W#3g)E#AOK:m"{| [p_r[?㷒.[2Xۉ|;5 _lwYUų~?ҒfhC#V~esQ#$}Ni7~#>l=ʌuu]f]Ƭӂפ)*'< 9.2O<]+5<}yt_eDQn;Ȯa?2p뺝,.L\zӿtilQ矓 oͧ6ٟf4!oܧ;\a{(2_+__hYk;tDsYo:_tM;Aӻ|B% LawF(޻R>~wE#]MZJ~|jI/]4M~ZѺ7뼬R+nX=f%f]uvxlIKe\]+W>"GFpFΙxMZjՉzku .-@IDATGKS q‰Z;`_#ћL_VIz4mGU&Εt_3KiScYWJ]W麺YW?9̓ϼyXQ|f{I}ifdv j.NSLmFv':Ǯ寃 ޣ up.4^Dt=_Ra :8Ǝxy(wxοD +^,[?^f[s>L[?{,3t/%NxDW6/Ɇw%.2[癚-e鶏J=5z%*"6|nmW㶻' RN^g}Yi`Ԑy{ϪOOi|t_Z2Գ@ŹN@@@@@WjW-Bi./IKsG~\hFr.-[<՝FgeJ?n])ͫJʁ޲aerD\[J#f҈Awܕ+4"p\ ki(eBwH~֬s,s}6et׻#tN3/f^J!:_7$=Z yyl_{?_#׼rPHWّ}S~cm-[Vf=a66v]IW)v4FsXwҪֶkǬ^!Fxw?<2,IwiH^WgH:%g7Hz${Fտ(پnQQy^;/>8Ew=2[:_bY}21 6@,7O6.isĈ2]vInjSPu?&mbiwuo}my4_l{Mm&'A     'x';D`ƽ9w\d !e9_--r/B˨Wppݙ^q@!627AX׼$5.f ,x+̼D"j+4"rRsٽ%=u~iyD}W"ӶDzjM+6ʝWtٽQuJdKs)u8O[ښ'=}zs~D@hM96xRWl}K%S}w|ɒ T%6S^NG Zl@d Pj72ᩫЉ>}#     , Wh`ޝzw?Y*Hu|O߷4grY]>4r6?&!ien]iMer Vz8 e홧?rDYڵ?5˥?{foșґ|+?233dc]?o@Jn# и#w&sDPǕV@@@@@b*@9fxWvd)yuBy"ս1BSϾ<̗~zɚu?x9kI3̿:7xyuWkB̿g6^26jnQ}E_I2[`NT()_6KuN='    TV>Dn'+aI|9U惻%ݺ]I_#=zGqa?X|=O[ͧ+T Kd}؅Vw#ߎæm)   @Mvn~i&Fli@@@@@ )Vw<2}f:y@%55GJZN@M;w*/e]xŶѥKWp4ږ7 ҈ѭo{i܍?D֙/?\śMNz_?F?H ]Ahu掽(gް'Jӏi&IYvrޒzbgLz#:vH whi?#njzO"K.u:] %4һ-};%cth;n~G=SߣO|e{V=˼3{I׼Mmp~ԞZb_|ݿ   Y TgVG;      (1.ٱ%WH | FBmidp7Ey%# y޲wH!f8(zIuJzp|(?;yX#7<Ue;ߜ.g۫ZoðKGU͆ӟkN>ݷxwFNwwݭÇ;%ߦaAƳOeVmn46z>{9ۿ=*.o]z" h_\{q_wW   $4W0V"a     ЀDPW٤"'݈Uߓ(xDZ7 }sNߎ%}-*qX9C#{9$6y?sk7GqsO<\n{Z5zx{ygHu<Ϯ}Zwv@{G;{9:-ЭI M:Gi$3iujFT52}hX}c&=7vM|mvmj,пNuif! WruJt+b b+ן ,>br\}pOQ|5oYp #    e2HKϓ@o}3H;&+ 柈mzǜtdirVhys/Ј j(n-K pجK !&)&OyF\Yo]{˳e#|h;)Grɦn~yx-0\9>9Jv3pXߝ<{ޣӶ' CLۿonj?r=P7 Gq;tѿJ៷bJbǙ,Lʼ2jT\W?sT ⟊+gNASqe^IS5X/rW3Fٵek<@@@@@D2M7$[?n|扔=>|@eBoKm]˵titιRs/I[.N+RN >Xluw-%`m"4żݝZPlݘv;Ü򏷭wJ<Φۀm0: )bY]pw#;=mK_eWSϲz }.#  TVA+\?~Ή3A@@@@"+4IqQÊg#/mU -jj뻑a{ds I{sSdԀI/o^Y.ku,d *gG7KL&؞/^mqw[{Bmߝk>o/l~^h5}.w6.c;hGhc+vdvՏG>z/:rG9   @u W+7OO;"?@@@@@}}!4r0ޡ0RZ GK;M <:lڻix3(t>#Ϊ{sQ?vH7_tO05t/?^{4gl̯ޝo3JiϑeWf[& 79*N,Aݾ-:.N[޲'u=kտj'@@@V&7TJDP'     @DPgm,m09l;Se"ŴԤk'-=Iw'鶷55C҈h̀I~!ˆ&ņ݇껚_٩޷K#V}mF C0ٳS]98?dd Ly \`@1K;|;k|N#hӨa4״qvmv‚d_a}>.JQ @@@@W:u~YGgƩ     T AɸIO䠍u#t@| 4ҩT_Gɑ/vf jzC#;P~5w<#z|0@ߜR~|FVwg'q߾FvO=s~s8 4#>Z.8̼M{ߛWֽsh9I;wt8?d}G=7LĭunMʷ͂?_i?;J@@@E?{{]-P Vgq#    5.@u_M7BDFCed }efl-Ol?DDw${{w?+_7ψLD߭hn #*uUoM+㎇}@@@*_{W1_a AJ     Y AhwE=qON\dwGb믗wN~iTx}%M52H{ǝ,fއ޴;sh>_~׿w(@@@)}dm~ $    ԣϪ/r5."RXO0u89AvMGP{9ځ2*[A sulп::k6 Z/R*\+J$Kp ן6_2\9 $ =<     P9">')ѿ|%8֟V-/;qJ#i-}17LͲ<,5ӷz,?Km,#R3}[ _JHg0^R"JQ@@@@@ S"3 ) L\qHf#7< "Fo\y!E8߸^   PED',Q8=꺝ZN @@@@n"3ߓn|OfHλl#qr{i<XȘuHgFֿ- E@@ vn~~aM8      @J"S>y2d*vbC-W.P[qQ\yE&   @4LD8    ԺeA720E!'ee#W/Y@@@8j7!@uu@@@@@N>r}6ՂR#8,XK./믴H&@@@V→nB|@DPW1<@@@@@^EODzZ_XY_H«(>믰 A˖<Fǯr`r\帺S#_Z)G /'W+7~!4V "k9[@@@@@j.T؈HI_q{ۣs{֟` x>):R M)=?r o>.ſǿOK/p/SR-\zOG[KyvK D8C@@@@Խ}yxHyۣ^_1utYIo}[uA>   @e;3      PSDPWhyc[DKc5֣qXWE ։Wt z2q"  Ԧ@}9z%&s+WzԬ@@@@@A] F$:IZ/IOGtˠ_   5&Pd`IiUj% :@@@@@2 :ShcJ $>',_/WxOdB@@@S>ŮΈI@@@@@Z ̳>ى-t,"}     PDPg` sd=잍Ȍu5_XvId~-'\ }5WC [/q5?ee6c^0WS]yS3j9"~     TF>rDz%N'qKaa%HV_ӍTGr1/fY?YGfOog-ӛeyYjo7 QMA]Sˉ!    -@u];%>k?<<])lƕ}Rو+?HWK6@@@[ls?K)w%n#nC@@@@[d'ߓ7?Ҿ.Hy\ǦGڧ2O#>2&umu7?>to H@@@jB=qf#@u6     R`iO|G wп>bs 4(cFuW^pq   P5~_5Q!F'a#    .@ugЍ LD)a~9"zYpUfi@@@ NZMyuA](@@@@@ }veMnH`/.5_+-?`@@@瀞*U>A @@@@W"lf}'Q??bW<*+ld¥}k%(ϴǟk5X_96ԈVQ poAF_Uƚo@@@@"46/iyoi'f_'^/E,멏t_Jŏ>.ſǿOK/p/SR-\}r o^/7i.@@@@@z'@uG{xy{{0'R迠׫`#2W g]y=zV[V7o]   PY,rNu%g    Ԕwa   @ 4NKj!Ƈ    ԩOlwqYY+/a9K}| xX(#@@@&G߿$T񠉠ah     @= Azc5d)C5٠|g#2c]W)֟]brq;_a 7GS{DPrb     @u A$~NO`ڏ+OC4qqa_i6|þ)lƕ}?l @@@_$"ۜmu~êÈ۩@@@@@ :=ىd͏K9Rױ)w_I]g[͏?9:]:idR@@@paGvܤA#      :%X 'C/?l']>}| % nXwŕ\\d"  T@WD@щc     @ A]t#>QjXb^_6\EZA@@߸qS^DPW<0 @@@@@)w(w*iS~[-(5K2J'o2A@@:j&DuOC@@@@U*Y_(ITEϏe/s pi䚿l 3'@jZ)G /'W+M?5bůr`r\帺lBc 曳E@@@@F2MDzyEډ=W9I `9 믨z+0Cc迸OK/p/SR-\}r o>.ſۯ>tMpgD"K0@@@@@ A;?'.'aL牔=/(*XLYW^Oַ|)[#  TVA+\?A]?sə     5%@u+7vXhIr|Ru\n:\N_}D& @@@>jS::TN @@@@"ϰy| x"  T@oj2:"ku7     PDPz"0㋜;.rZ!e9_--r/B˨Wppݙ^q   P~_R"g!    u*@u9;zqGV~$E t#D}j_/se.?֟~E@@@IQj/59 U1{Uia9#fY# \F+\/[L{ пVQ poOXk5X_96kX5nl@@@@@ LSa#"'af|vbmUy_X΂+*ཞJ)L7P/SR-\}r o>.ſǿOK/pſb?mo}S/?-Q8 @@@@@wDP{ISy"m z >"p֕өg%m_c   h"ODP\r&     @M A]{Vl=){/m[}Ec]X'_u+roy#oA   Pb|̭\'ZDP@@@@@*"@uE؃'i'=%K/N^};_["  Ԙ@%CVTRC@@@@TL9'+Ob4;:F_0]f$[_W? !@@@OZ;#'SB@@@@jA2Rd'.Bpbek T|ȓ3l):   "ZCCZ9ƍ    Ը}5̸w"㎋GHrqdu2e\wf׿o\#  T@WTb|     @ AĦ}gNg񑕅IѿB"?QWgYˏ灲02@@@jR{KMNB*    ԳϮ' 0]0|Oz;T3̑ {6"3[b%&)_Gps&<_ &lsLոJKxd\OAte~YOi戠n%     P"=yx8)ѿ.5P [^ O7RPLFƴӛeyYjo fY?YGfOog3D34uGuN-'    TOw&t?HWHf#7< "Fo\yW/v@@@n^E"&,Q8=꺝ZN @@@@n"3ߓn|OfHλ#qr{i<XȘuHgFֿ- E@@ vn~~aM8      @J"S>y2d*vbC-W.P[qQ\yE&   @4LD8    ԺeA720E!'ee#W/Y@@@8j7!@uu@@@@@N>r}6ՂR#8,XK./믴H&@@@V→nB|@DPW1<@@@@@^EODzZ_XY_H«(>믰 A˖<Fǯr`r\帺S#_Z)G /'W+7~!4V "k9[@@@@@j.T؈HI_q{ۣs{֟` x>):R M)=?r o>.ſǿOK/p/SR-\zOG[KyvK D8C@@@@Խ}yxHyۣ^_1utYIo}[uA>   @e;3      PSDPWhyc[DKc5֣qXWE ։Wt z2q"  Ԧ@}9z%&skmWuG}DBY n61 a6b+6bbXKr!\QKT\ 8y@腄~sowݽKUXc1ǘssh2ݲek@$  H@$  H@ԋ}jXկgȸvD'|t2j?/OkKU$  H@ XqnQJ ꮤ$  H@$  H@$ z88Yi=K1XJ߱TylYƄh$  H@$ %P&^ɬ^+I@$  H@$  H@X ,';m NU m7NyQM`?n$  H@$  L [yX㰂zΜ㖀$  H@$  H@$ XAPXlT9֯Zo 3q_l\ $sIY}wڸ4.$  H@$0V Iԓ>CO$  H@$  H@2%`'v;s;z8++I?,U~̧+DKե]#PXVq k  H@$  H@K@(K/Kr&xVPO84 H@$  H@$  H@˙#BA`]q/0.JKn@IDAT-<ШlZuh&c%Q+#uڱ̟A#aF@]#^Xù\s7̈ ]#WXO{ĻfŇz/H@$  H@$  H@XVP/FEnp<3&_GrunoK?8Q(iK3e?8Q(iK3eV8; XͲլ^SI@$  H@$  H@lVPx~:ߵ3 L[u_iO{ <ՙ|V^z?mo[{=  H@$  H@M`Jo;θ9e e;$  H@$  H@$ &`tӖt2.F{[=[7⯰p럸,=ק!90, Uĥ.t^򕇒Iw^ B^:٩ve;$\F{xhos~ƁlA) H@$  H@K@ɠo̿?ϸ!ߕF($  H@$  H@$ jXxS8K:N,U{+PZ-qG:=Jm~=O< 6$9[EML34|R$  H@$ "\~ɚML$  H@$  H@$  ,qVPOroV$~+ɟN ȝuL#MhA^$O[Zؗ 90䂁_s\ՆX`] t?_!X2eVU ꉟ"( H@$  H@$  H`yzLJ_ҲpX׈2bX dP\u{!P9Mڽ*cg<0*E{{UxN]|$IL]zW\pAEuD4xIpOyU8t,b_f7/ͷKp~??~-_Ϗ|{_?l+ACzHpv$  H@$  H@$ z~'.1CP8*[!xN;N"Ovx^:GMرcINv"޺9Ʃu:ƀC~R3*jg8uw $ZPZGO|Ƀw~'7xc3*4d__gDG,y/CI%.%  H@$  H`q ߿ ydZ>oH@$  H@$  H@DzW8Iƭ:-P={qG4 =OI[.#G$IE4Q8q"A/:u?%~҃}@SN]\:dաxT*S|&uyӎd#׿IxI]JrǎIgk1J H@$  H@lOAwv?^'{v&tVPO9B H@$  H@$  H@˒ 5#*A듦0R%j[f|Bȿo߾y{^ةl>~xJ-[ؓr$E+:6I< ~юN{Lk< Dǿկr# {WP߸c0~$~HN"W@Xa~w&OI}Kj#sSd~ާ58 ðjuwX H@$  H@Hsd'rR&PVPO9B H@$  H@$  H@˒#A)ܴWV?oM6%"TRf͚dGqbGMҏ [t;:юN;iGƓ5fXA\uįrhs$ ._$cJOU3$8dĭ T2y&YQ]Է~{j[ꪫ,URx~SSq:cm[ϠTխ̟!2B_s\˨o+[<ןo~/]oYsJK@$  H@$  H@z7*"{8I\t]ve ^$o$9;;@&< W 3VNTTSxN{ӎ?;KS'y'ݞotE;y8hvtIXBN>щ&>y2Ї>qIOnH;ט_JcT37NSKd.\"a8ȿDfa_Υ,/Ys) 2`F]AGv k=<,uT%  H@$  H`B ,ߟ=Ӳde** H@$  H@$  H`yzO`(jX• EiH{С]QN;N{ӎ?vtڣvUƊຒt'Qe?UuƯN#껏H[-]w ?- <ɪW tvtdhX֭K׮]Ν;|+_$~-Iy/d\_]w)+=t$  H@$ yߟx%. +$  H@$  H@$  H +ϰXxJMKW?l%f]*7??Jr͸&I mV/!^^TS)^W^?d8\Gv]>kpd|MIL g\HOwT_ ]؏ {<1id?y}#I!?%?n!I ɩAI$  H@&J;AS$b&) H@$  H@$  H`-\~ިTHE('PQ5EW"?$=$w28ޮHwb}U8ڡu&c?t}}٩TޱfUҟ1+{k>ĞKw$ɸϬd:YWW[O[d~u+y oxC7xcrK[nM}ޑ{|{!izρӈ# _pQ?G7OO_*7G7OO_ߤw7r>KھŸ;! H@$  H@$  H@+GAOXXNUAOlO^ݴ1mLwܑFռ'л/],Luwj*Fgq>iGGKM_=@3gwy'/>'ZN4TNW7UVI9";nڔfΟg҈>O%/I*GTTYJ^ǼV.p Fk w%5?kרJj<~׮Qߕx?]ʿ+<\F].'g>߿!$  H@$  H@$  H`~bba$_P5NO*?׬]OO?%y$ݼI#dw xNhG# ̲9 Xz''v %~nwP機۾9+:+8bĀ%{kїK5l۶->$o$o$$Wuѻ\jb눅_f H@$  H@Xdg"S^6魠^6SH@$  H@$  H@XZ^jeX~)dkܪcsǎ|gk^~6ɋ/8د 7JΒN؎VQ'Ndy(U8U˝#Q\xbg\={]֟x|O /0IGՍsVd~$w_+~j*W^Mdn5)Xek܎qt$  H@$ &_п?WnZ$  H@$  H@$  ,(+dŊ3.驫_Iϐqc~*׭["ME]$~IY!>iV:Kxb[ka:TVБԲpg܎MɁb˶##?gsVR$OޒQ+?UJ@$  H@$?q:N~vWWVPw%$  H@$  H@$  # JI t; .,/}iwuWw}e".N0aG+K~I*n߹$gf,u:|㾣R[seuћ5^w.'FivtǎN{GdrKk|$}N>J/Olby{;q`6H@$  H@X)?K2Nb2\_M$  H@$  H@$z̳SU(*ceu~Q~}_4o9/q8%r~37ꃎ.r%bڣ=IrM7ݔ_N8'btL3F,kY=e>5ߣgt*$  H@$0qZ~~-ϑ埸 Yzi̓$  H@$  H@$XA=)ΚQ[b_~O|r|$w])AT2hGMOU[&p H؁%=]=zJ~-˶G?W$  H@$ I`W/YQ[A=s$  H@$  H@$  ,kVPxzKT\v=yi$5.t~I _DOr=:?$臎r?rG{i׮]I>$O@S)ߙVw@c'7J=tn*muz~cr.[׹gX#e|`߹vo|k\]9s2Z~`? ǷVfd+W$  H@$  H@ 4 x7Ց4T|͉mݖ^ؗtc\W7Y/'Oa*xBz߾})ի1z}tO__';c>ow{]@܂5BJ/?Q8{HRz;gBhG'! ~JNj|TDcG=ё>hr馛r͛7'֭[zvC;c#r >uR|U 83 L'XhM M7{y,&&ޛO<ZB'^ [?2`F\0 1G jׁ$  H@$  H@$  , +G!O`x3s׏yO*׬^B/M@T&o۶-1N2vhw'|2mT=<5H=U5L U:`G=z:x\+Uǀ ^#W~ik7rޕ+_q~;ոm;`<|Evt#3^S9}$׋.(IlLSM\nmTPƕNN6t{h^giY_x ~0J@$  H@y ?K k+ `4K@$  H@$  H@x XA=bÞNf.Y/hޏJo1Ydp I^I^wuIRI\djc_&LggIRA2O=T+!?֭[Q_oWu"X g>#||s+䳤g[ȏΉS;ؿw jc )CGҿ$K{^v+oXI\͡CR<yTNs;F4TE^Y3F{xhos~ƁlA) H@$  H@K@ɠo̿?ϸ!߳F($  H@$  H@$ jXxS8K:NK*_.^$?O&O #GrE kI~T^Si?=/TlLN 뤜һvJV*{챤S!͝1>m?]]ۂiQNU|*̝ϥ|G8Tb_UUf{t̮iܾUIgaxauu_"WCI4'S{ᕩ˩*tNhP9{U-Tf3^*?tE%zi*sڵq3q3j^>ċy:?PJ@$  H@x ,RGES*q$  H@$  H@$  H@XA N\W֥#V"|ֳ}No~sTRSᙳ5?}ɴs$ׯ_$Lߟ$ySzckrG6=enxtwp(G8J¾rD'ÎN;{W5PQ~H2q8_<裩 i9۶mK~贳c|1OR^ڗJ~ƫ$  H@$ $\~YX:z̕#$  H@$  H@$XA=aIjV<(Tv[|;yQPqJ6(KOI'^[Jr\';TBǼ}J~]]Ǩ{KꫯN:E2_qG;:m8<@j馛.i$wLS9κoOJ/{v̟ +|ןo ƽwq[Wߟ9i_w$  H@$  H@$ VPIK$_ e`1sݺu)e]䭷ޚ-ܒ$wRswn:|Џ8HݵkWB)fG6>S:4so}C<șRgⴤ"|<.OV MQ6nܘB?SI2ysN1? (:=?L~ܙMElS9gTO 7)WVWXE*RĈFQaX?ʿ38,X;gTcqXv*Ψ(`tߟCzHpv$  H@$  H@$ z~1CP8Щ\zu @*wEs'I߿?Iq┌C|0*>PIys75%%v{b{I'>Q'ۨx ok~P9]1TS/9 kI/fHIyiooP$wޝ$io{M]R-팿m]%eb?G$Koc~]~茇CM6#G$yw'IE=T^vAɎw_25IuR;YIV9ME([رE'n~q31nl$  H@$ %Awe~Ci\e j׀$  H@$  H@$  , +T~'==`34#{{{I>I]6I2*ǎKQwؑ$'/Ojڣ=#aG*k;t2~! NؓUwINJeb?$Sq~U:z ^n]20O=Tҿ/$=/I*r#O;ӎ|衇#;YTzoݺ5QA]ڌuEvdW?ާƕJ H@$  H@Xg7n]nQJ ꮤ$  H@$  H@$ z88Yi=)T6#T#o4O?aT2:d'wRO>h^xaq1Oi%;cT6?Iۿ$'2x'z2z&_t*C4wOS98W5J:\[ڑ8!!?nQ.TK@$  H@hYؿ?G§gRgΌ㒀$  H@$  H@$ XA= .VN*$rOF)~T_>b+}CI~Nf%юN;ةh?Ar;?qqc;:~ '+7*cxԯQ[u_im_W13ݻwTRx/$<Ӟ$f=O8ߺmkXnmҩĎH}>~i:\N\j3PFI#C9T md?2CPFI#C9T md?2CZ'PxVŞϳ^γI@$  H@$  H@`VPxrl>__M;/`|ęZל8]]$  H@&hw)/YAK@$  H@$  H@X4RPXqZw~G%Ԛ<7C{PsGe2=G0믿>E|ޛg<IR qأ, j_)?ü$~h*<\O8ރ |3۩ywo)G?$?'[ޝ_$anká20^~<>H@$  H@DX'zrଠ^%  H@$  H@$  ,GVPyVcdQ kJj*Ey%=|ps7؏%t"ΰz)=;h~76 2|fB4wSSKEuLxG}P{u!c{K~Ꮞ,uN?*ۗLTH9r$THJv*婐2*Jf\#Fr}sƍWF>8;:J.W]uUTҟxĉQqտ;v,5*&5oSU&&G/ {Ƽ`G=iGRM'?{Lb_ {,%K%sE.]8RhG=Jw 7ᄏG^~I߶m[mO+SZ_)nIE4{7=R L4֭K6mJ{?CǏqcG}2E'/N;JÇH7&I *&>29brF_ZgFW\OEJR#Uq=?Ute2kgkuU\OeUǡ$]LZZǡ$/9a]ScYq(+kԃ[$  H@$  H@FD 4 m'7~ƭ 'TRS|%ur -[$;:??^ԅ+L+ d1^OYJY}o߾O&~ر~TF&;z9N?ȋ6ӏxio:gcGSaGM}k|K^$/$Y׌# ^_u@IDAT [)<7Ÿx̟苜9ŸO\P'b0Ѻp~ |W]/!k_"7k~-rJ3kfQ+DF$  H@$  H@$  c[^ ] wTc*G7ã4کKѣG{#<zNލ7&;H*i'rA+/%/*g'0FĉiϞ=I>SI߿?I*~d@?F=u^q 8]%Xg>s\+^$u 9>~o4s'n?]9\s[zs{k<[z?suGcVPBK_ H@$  H@$  H@+G NVZOb#qڬq4G;w&SY=QLݻ;Tn޼9mݺ5It*/N_7^$LJB~'R+Td?~<٩ . ѩBNMUՆ|85QI}'THGիW'?mt(&/&.:юN;iqщK>贷~ÎN; {*۷w_v'|3=V37*x睗u%=_(}_׿_.~W_>c]S*Wa+)Ь͋0+f' H@$  H@$  H@/+Kk IOWl+*|?*Eglg\/~QYjIlg\TRQTr}G$袋^Ga\hGG;:㖌vtک"`ƟOBu# ؏q8g!?rT\!Hi{B(^-q>|ƊHu}Mir5uO/VG}o4zǻr@4t!`uJH@$  H@$  H@ XA=bT:l;*/T:[vHKyi"u~lO;|SӺuܵkW7oNT782i;:юN|%N\*שTNSL%3wH?DI?dG(׵kצ< 6$yr,ܢ,y_)w֤~<9V%>%?0i:r+)yh-#W/zy g:,+%g? H@$  H@$  H@+煯ٹtrEh&Fj<{{NjQNMQ ؎ʡr/ݿO^$~%_)MP?꫓įgX;b_TF߿?ڻwoRT.S:cHT4I?(ߺ~5VΒJmޯ{0H?&?+RXHX؀A3~3"ZWeO&Ob*~3ZW7?whXA=F$  H@$  H@$  XA= a'B '(='Ntm/Z*zo.[nM򪫮JrI2@贏[ƼT0sg4rϞ=i(TJ8q"p^۶mKy驼}^-O%3͝HN3b?)Tn޼9P'N~v\rI/)g}H;4:t(=rW4H*(TS!M|d)o<]91(YATHÝJMr"?J`G/I/G{lޮ2k{Cs7w+ɘh7(}^*`!ȸpF|/ȫ33:D{#/r%Bjq84 Eu{72*_X,ވ˨7hXA=F$  H@$  H@$  XA= A Tdr,8-'7q0n ;:?d^j/GBIȑ#=ܓߟ_$IqEe]SO vmJit*/QNW^u"5s" }bY'l5]E4TR#v^Qe\_d{̟8Km{R{Wz){u=Rj/Q{pE>*Zs(=smKzj{u{=%  H@$  H@$  H@CV8Th;'`]OtFEo^ }Pٕ'~'/mqJ|1u+L$;GGN4wE?N4ĥ2z͚5.JJ~q| ݐOr]\qU>{CS},28:ǽn}ѓ9Ϛޣd R|yO8 i'ߠqЏqD;1Utj߻/]Ũ[\?_^c0''DNI ɜG% H@$  H@$  H`z8h³65IbELeܼ7q_i|1:m:w?Φ.{MlTBs2;coʕtGW)+6/ %?tPKB'EI{Im~/E{r؝c7l#ٻ}}{21_\9oJxONՖo۪$  H@$  H@$0VPAK'Ķ$r+o~&Kq㡗N(;C͎w'ر#T>\5 峫}UL>y4==7㝞:VJc|'8UN#7kڿt0WNwO^ o >ġ$ɋďؑJkur{+f\箄鿊ڭj[;d2ן72wex?\+w}s H@$  H@$  H@J 1'.u|x(6Y1b'o>A8{i9)Ď?zG;vxٵǸc'>Q;:]Ӧsf֯N!6ʕLOXu%?>kס% ={xQUfoZՇS/r  s(gxgl3U u$_w_Su$_ÿj/c^b绥߸m=,|`><\cWwFJoȞ_כ _+VzXi&\~[o{k}zqb[| "p- ~,P)8/ \<X8?G z ~,?%d"֢?%)몸˪CI23CI"K`z3X_%  H@$  H@$  H@CzhtصRկp"6ָUV!C*fvc6鏌q?'.\<5̙c?Q!uyn\+dW4p {"WVs?٬pCOT䏜é\ |hyL>?gs5s?#39"d}8wt^=+d%EI?=ʅF{DŽ_eKux!p觪ai>#͟Y̚ZVm#жN2ΟZ?Bi4`sh['RO_FX޽; I~'F.:/h h_S$  H@$  H@zfx"կgȸZ{wqlSkMQ1wȘ?\3s%OGrg*٢H"SQ$#siGnL~?6`y=8Z2`~\iU>#{ADz:b~ls(W`^,t_|z} A'~WQ7={ ;j':?b\l7 sߟOɮ~$#M i, H@$  H@$  H@ Fe 6囈֓|7]Gq0ӌckI'vڱEÎb_\s(^%W^ǫɕ_=_wݿPLqkrs'<<0+g{ϸg;V#ps릏U5TX*{NՕ3zGWF~#O)@Po ħ*W/AJ[GQ12 %1Ci}:*zQS/AJQi}kl~PfPv$  H@$  H@$  t'`uwVCy'Gm'DkMLUxsBKE-:QNxKzN??J}߉|_8L_;ϒ:h>2>x(`]č~B{jU\Ob֗V iUSmIVSYYz"|@PA$ H@$  H@$  H@ԃֿpFk}BϺ_"vJ#۱cGy/M%,:d͏v?mqN_΄K|xَ[y|Cg)5Snȕ7뭜 PTrXrs9ՋVpx i?%gL{*b-^ƭ&9CG__l\ $s_{8dh[^o 3qtʭ@2gp:_~έkh2 +f H@$  H@$  H@7+獰7w&NNhxJ'_-:?>!moKر|E]XJ^G?t2hyMcU8F.9/M}xv_ #k*UՂ{;sEw!lRrB6J+0𿎟r;Oħ '/3 #'2Ƕʎ+P#c[J#~}ԟOy;+>+_^7s2G_T^7Qkkz>+ H@$  H@$  H@C-S:!P:9tbDd_>`jTNj~kM{$|$/$WI9GkG7#uj*ccިϹ\Q|ԑ]=Yj~Þu^n?UUZSQI^#r;kjSji9"qOͦC'$~&u%wyd^߬$~UhuY>+v}/>bZ+Z|jG׏_H##7@bRv#O`vBQeQi{/seѶ0_^JK \9aYm}~l_=o> D_ ,Y\Xݘ$  H@$  H@x/:@=♧qb 'm08?<ްaCʶmے|_ӟ$?%y饗&y'yd%25#wp4?CZUU3X=TL#KNNr7\|x&W<+UN[1֣;zT^l%og]5#7'?[ݵ]wPG~GǓҟZIzӎ$Nɯ8Þok7E2q_䡍o[{K5A׹_䡍o[{K5A׹_䡍o[{K5A׹_䡍o[{K5A׹_䡍o[{kL>@$A$  H@$  H@$  H@e㬠sȳ'TY6O7ʍU{Cho~ j*oᆔ]zWv[GMiO{ZKInԣv*yic^ +8+qj] I֕UsU5ڑ>R?+6P$u<{~k&'e\f7=:/N~$.F{xG{l7ŵZ >^F4D{#~ظvȘho7F'Bjq84 Eu{72*_X,ވ˨\Cc}Zd\gG{#/r%BjqZp[A0WKJ@$  H@$  H@"qVP\+R'P%ʱd㴜LZ~*׭˕IիSoo'я~4{7+"5kIy5Vb~;G=N]ۿspuKs;CڃƎ_HUټ{?Υ {8%4OџPL;n-P3 kqdYj\uѶJ%{5~?ܺhG^kEon]R{^5_߃oq_9֝@A) H@$  H@$  H@PO<z5@sNZ~K%a*c5o{R;3OI^}Inڔ2|ѓ6~i? qkȘ8iǕ1S \ĩ :Nv/C9Ω?/WJOc8xJhǿr"WYǭ:7ڻ/1A9߻\Ei\a;v,m?I7\;-]CwW9w3kػwo2ɟI^3[A/[wBwn]:c}qoz{ޘ"m26a=:Q$  H@$  H@$ !`ppW`5x =ip]vmzGG5'UJ~_~y|ӟ;9$~jQct:v$HҎ=Jrߪ'NRꩻW&{ٍn\=}ZRگ}y{[p;WmL.:-Nl/]8=J~m+mG>&R^ネJ ?$w "􎕺o3J6*/m ~x{|3>:>W~%oX%ey0){?hYn]oߠm牫q$  H@$  H@$  ̓8xb>{P1M%5:TT/H/$o$9$'cďЉ:A;{OhgNqFđh8:dԁ3kf5Մq$%;gVă2*OAw'>~1lor_#;uOkx?;ןoneWV_vꪫ@/ zkwƞ `Kɇz(g>l:?o}k%Ne-6;$׼5)ԟٟ%w}C?Ag_mw|0_6_mH:5dpI@$  H@$  H@J.+T*qt=1dxMh~*8w* jک y{ޓ^ޝ;w&C8aGҎdN{IFZryrΔO ~4O=GȐ!N<ڣvюa?$.{Iҿ/Nt_73&4y.KˠgK ^S)' 8=@1ސO\įo̟ 8p+zIFz ɿ1Ucǎ[&JR8w~%y Ǐ2ٻAnْb'~H_&Q SW YOx!]e H@$  H@$  H@@M h'.䜬EJp"^DS{_>NE4B;__%g?;ɍ7&IܤD&3tJvڑīuZ$wHs"O7N-f 1 5َ,8p/O쏝?i;:1_Kأ?qr{ &W'CI_sº*Dz*PL&p- ~`-P_O@a]4&4_5Đ̛KGyHrl '2]y7<9\8'bK/dcȟumVmB,&VS!kɼ3OFrԜn0GPA @ @FK_3OHݹRdո%dռUfULwT"}aVYgR/{|{yzm6/{(t oL=wfn[ %YmƝtSOɪK_7nCl*U9} 'x^2/y!^.Y*ߚO}㵺m7+ʪ?7sΗ̿y1"ə{/g|˭GM~/ ⓔgxms&g?֯6G=/?hWۿeKWґd @ @  $2˜{+V(C}=N̟'ck-SxyVyX=ZRW\q|3^{oswqy]q?IIϹfp_4٥˟tS>٥˟[zf*U1c?<Ӽ<蠃T#i>/wxS?+;ۈlOΑP/u6bͣןO>%ls>fk׮z*f]η{#TF/*t³7=*e~I~绦dݷ+ʩxao!m^iYsG6YY-z7̯xy!f)ca8jd.ۇ~ [Szd1_߻=5yOJ>-u/MdUo}ڧT귅~3T_vw>.[V j= J>4c<"pmͭ_`ӳ96IvNph@ @ @` LnT"yuMX?t!)3i%H}oH+*_. w,뎲*lUY{N<nE/zQ~[mtIWkTVEO?훪B'C*kN>d:>_qTAm惞=|yߪy+_ ?-/=R-o=ήD׊ׇRؒZ18\;Ufls*h7U]9~!¬2vAVZwQ=۷gw: O<9t{(B'ϣ?!߿w"ThZB O2Nϯܰ3|.ΐo0ΓOr|#o4O]__%k]y~{pg#]6RJUD[]1iNvN"=3l^8GA=~ 5413R3OKm?[9@{sX^1=Qu?>w'>޳#ȏ z>zڴ>T޷>.P˼^>􏽼ӏ^G <]yȕz{PɨY5U|w:s۸;ɡz&?ó}ḝ=?xS`|뺷 ~_?ysx6t7ܺ3^~/xPi}PQo\%/Ͽk^PYPڹ+/?MWΏ]&K6[I>DxI{ogèp7C3;TNc޽sZO~B/ Ҭ}.? !̿^pe ;_|s}]*Mzag, _n*s^?PIg*a_gz}0kwS\[~u^NLNۛC?zFE Q%/ @ @  $35NI*WRwFQ UꪂV*uU1+k7|wuW;W8/i|҇ʯ%eߵkBώV̦MYmOQ?ODϿ#rس{]^κW^$gr[rn?(,{. tUˏ }HW_y{yPU xN lK/ou_ u 3˿3}˷/pTO}3TV={ޟqwd׼P~T~zs?̿0w#J5jDetL@ @ @@z!kQC@]V"t$#难Smv[+U*opnSN 3tOKOI{Uک٥o۲ngBZRϔ>pCE*dT,Vj$OyCNgIVgkogߖ*j_Uv:;}7Pu->^~KK?彷/WM|[“to ;g$̇<гn/_^y~/Uw?ٵ#}/:}m`fנkߤkɇvF>#}'2KK^~E3ӫyv&IsB*Ct2t~3\]wf!{y aշӹAς:W_@C_OqQE*sU,*s%=\y wowq^q9ڲ +=NxdIn*Bl9cGxI'x_A8CKy[,]_6IqIװRC|)?O??#ϧB}?GQg#7FoʟEߔ?kHy1Wq]tYԪ[W:.Zf}Zj`-/{I/*e|WΣ_~󣯾ˮZ./_i{Z/yօ cz{篽>2TʿyWo5kK~wm <~*?[XvIt}J!n||7ܾh;._(fs ۏY{_p=8啡soP)3"oUorպzK>*?p!.{|GީZgE>>OK0!\,;^>. w*_>3W'z7_+z/]_yy+C;o+l>.6Z!ǭ$#  @ @ @*PA=Q;@wg( Qw />|/OPikJw /?{q^ןߵn 3o6"iKoB` zNZl\ۊ^s#Onӟ՛.g'~j|?Vz[O]7^.WVz,;|1go$ן[j}~!o?w{~/?wz]{sxN8o~KK8$,o_yaX"clBu8` :`)xUF@ @ &zb?cѾmr:8wtڢDwRUɻ`*ܻQV;to9zVtBBeI'ydx*TԿD$mEXeok?W~տ)]04m~7uזz_[ܕ\p}\IW88ӈo2Ͽ+B-W\Q<}>w/Y0ݾ˟<*.\M|*w BEuw!Ws>O*a>do3T >@~[[=:/: T~pÃ^pc [xן 7{頳r ̷p?T_p7}ӕ{y_K>*~z'?Bܽ!?/~cVRN_/kֆ_~ia|oy}ۿʿ >xya^)USd;r۽sw GC^ÿ-6#9Bo0^ult 5ׄykz_r9k{ˋOyK¯_~\8lZ8oy?{} ߼$NMݛvաBnsgU;7|X-6[#QMH)EVvbM @ @@MZĖ|Û,mH[o1]vIwm;/wi?lM=) 9U%wO337m2ZώkĬBw_Ui;~YˊS岭pJ2OJj\-(W̿@F/)CcU#|ދO`7xNó8B!Hxunwnaw?P7c$@Ve*%aCxLV;ũ":U!-*mmeڟ,LZQ̿_Ճ04sn?#ϣ矟f$O8s8z E{u yucz1[U?k0O>nczuƛfT>._VA݌t+wz@ @ @ ~Xc&LR;X CKw\"#ƧƥnF8+ &i|7钪XVe<-[x{wn htU>ZȮ%x%eo,yD痉hbw̼'iW@L25 k4^1 ;f^E瓉Ӵ+ &i5*.'d|?3vn:2lMZ">fo @ @b1{}~f,n6+LS }Ӷri\v2I7JkH 7@2n;oXVpGz;<={TANAY hI#)#)5H O ɉgOJz+%'75Hߢ'+-c9޷ um3.c5El֫1r}jܿs$o8jOLp?l$SjɼYS(%.m[ϔ>i;Ѓ&<;Mbv^q1H@ @ @`n([t:vK ^q1̮vc/aKsAWKQLV[5n/h^4TP/X-k.:MWUmˮ~d>ؽNU 38ھT|L-'wvī;}ITUWvc2'?K}qOٰaO XoV?tdEXTu_* Edli*Y=?UH@ @ uzc{]5.~Mwm~钂e$o1]v+v}?˻?[~wezhElN؈8HCܴ決ĉ=kC 8ӤYx؜s߲eg{Gyd!q^.[E?^M2F^?M/ox<ꨣMϚj'v ?{^%N~Ou϶]2l=ڴ+JoV?:!@ @ %Pwnđkr_nT]2levw@+ʔ-x's]_xi\=!f*>Z6HM%_@/8ONοl"%Ipe8zEm/H?/|'ԳccybW 5H`~k_1whaj^Ǫgys7{g{7/5kxj*Ԫq,z[Vfԝ%O@۟]~I^ErmK2hi]q1Y+~RIb 삒v6t$ @ @ 0kn{.6Nv+vsNO-ؖP6x믪+te.]qvQ=2h1[;Mq4Ӵhʱi޻W*.?7mg5ӴhʱiޙM96m^M96m;)ǦK)Ǧz{g7ش{ 4ش]o/ߔcv%Дc]nUA梴v钊D6r_)m[V|$q̃^Se.? @ @[?!]2Ej\*ϜϷLquY\ݡۅ: ?_yQ8@yTΗ?XG?U?\bGonT/>Y@80 jM}%gguّ @ @d( A%P7޶@kq7n|*߸~RE nj?7v8yjz6RwD{ IJg'J9 dqןɦ!'?n.$لIq l돛J6oq\)?ٌprrOHg$ɺV7޳Z0IIJ}AbqV @ @ :c)s&IܳQXm4on{\e;>|=;jt5ѿ0? I;Hَg1N_v_NKl3?GLA\f;?/L'g Rjc`?#`ŠSW6sz9|#Pԏd.K3TaS,Qv..? @ @,5A]ўmxcRjIX"rAq1emԿ,p4)S}?GQg#7FoʟEߔ? 9:))su6R|S/(ly_QHM}?GQg#7FoʟEߔ? 9:u,tQ56;ϬM3M}̯I ӾKl @ @pkZtaqEѮmWkWʹPAcc*˵+Ѥrv<`}hYp3cg cGnkoB_pkOU6dBZ ##n35sH i­/?/by}C)!ts8[gAvX)lC @ @scw5ضMܶ{5uC&Nl駟%KvZ5]c@9[+9bK0c o|Vd?/ucv?~Sl?q"uc|q(688ܼHG1̞5οE矛((ۘ/߳>{ǎ;wUQaqpbƼ= aw8az]twڵ0v@ @ @`pk~#>Z`qmnkݽZ.PA.y6~}wg*ށzGɵmE)=X{?.m.{](Α6m??^ڼs~p^׌6m?\pc ^s֭[w[lY͓vNx)YKUڔmUrG=En;kcvI{…{v=\ @ @ yGBU_Z` AvcerM-olKUs⬿}t2Us}ŋ9oxٲeۏ\}S믛}}G>u֥|+?;wnݟ]NEkw.]wSǮve i{U]q+=&ƕG|l~˺mb]0;ϥ݉:ي @ @s[؅⾹B-:ڋŶdٺ9bnuQv+S~_;[sv?yJ}_J?[`+V֝{?v_cXu%VYqP?οV/,q/SWFa~bG?S6mgw߹zW)tu[qU*E=\{e //;{wj]~+cyl\> U@VE0֮6sq%~, TwB/qwWo>[v۹֮ /@ @ @` u;@ܶ<]s ig׏t/A z/[ĎeLjqSR/ƹbzo]uԪv^nҸ+ǽUы1mq6[]mR> j2ٴ]Y.l @ @hYݠ+ml^-[JjmOWz*(VO1^e>ӛJ+PAQM&ɲ8+.+h;nZ?1 n»~c63Hw>rK2hudOɦRyC @ C@k_uYU='{Ylǭi==)hQZIAvj/Y/DI\As n(c/'m_fwXίI;0.Fq.ꮯauýl`b[X^Wo+O~ @ @[jS淶D6vn[1"21ro!'qMݶrK($vmݏvX9UsW[2dg1=eW\JjSq!@ @!5aSvHצmtKm] XA 1{a7m_tTtIkwWqq'c.G7H/mvLw6RA~٧#zF @ @mZ:X|U{1l{MA+nszG6VjWS7O}^7X5;nѴ,AɶWҋR^e2/m+oU ^^l[܎)ư @ @ 0.Vub\v͍MAcӠmOi߰vU튓~H2N׏k[=68K;3叵@ @ jW)ԏkSum/(ݶ{)F2X*3 (.XPADqAtJ/W-ӎؿOv1xCB @ mUbq^UW(J$oR̠88S5L:Z8.P zlŠnj>jo~銓KUϫ@ @ 6 u*XWՋqe۲Ťs'KKZtJcv'nڍT#>vA+ڵ=T[7^mǤݧTSnuّ @ @hBg,]qQHJ^Ÿ1i{XxTw4_ծ8IGd.bƷտ !@ @ 0G,]qOomutVɣHR$O[]q19Xu|*[-/;[Me1Wq[6!@ @ 0*U7cqU6NOk:bex3 ëIcicXbv$m٫J @ @$jqҭSkȧX?.y!@ @&8믪d >QX9D&yZL1&5ޘxc~ @ @-⬿^նn|6**X}"t+݁բdڭn^7޶G @ @.')ҭLmL׼@[,W+nTRXv@ @ -V/_ծ8I[Ե-bm m[حT?)Ϫd:Ӵ-YfmFGKGB @ @`&]W۸.{LM߶]Y~}@-رE֪vS~5o+m>G @ @jq1]vIKےUmVcfޖ(|\v.WWڃkobWS< @ @e.ruj'k/]|V<1O>jJ_.&mT\̏ @ @3M@ UM[ՏOےE [bԘ$_zoUXMo<=XQPlZk[Ŕmm%ՇU튓JoVoۣC @ L&x뷺(ZtI'dSI*q\PSoX']2Nq6>eO @ @ Fl*.>.],N>I#d)^2gjge*.fDg-$}=quU'gVWKZcq1K8ّ @/c~koUxbH@ @  K`V~G^v.cv^K=K){UfE@nv\njkS|vKVS|J/~@ @ -6jX\U.qer&be]]Wի#!@ @ 0.^`/WnzqqWӱS1ik׶}FeJx m3H/۩vm]_KoN @ @If]]o[ѫW@ZڛƩdl @ @ q%`l3ծ,T;ŤmoR~?+: <>HsW$mdX @ @(h~oko[W?ȚfrZCv3>nۏZ/+m֏@ @ q%`SLŗlQwOS{)O]#? Ui.O66X'SկLj @ @`2Sd1؋Xn7]ܬ.7ݶzllʪq: @ @f]mo*OY*6cuXvVqR{1.CS[Y|U&l8u @ @ :.c~klVWUl;\\jުq_$ @ @&@݅T|_f/9nuvڶ+dl\4rl̮ecvL'xV @ @@j*T-{qאlVPk.zVmcŏ]GB @ @` 뎣JX̸c?fW;ɪqr6_- Zf5ME8XMŸԶ?AB @ .BÎj}qѾePA-$UCSq1l @ @hL/VoP ϖ]*ֿU? 9,nBSdLWT @ @dT7͇ސ8TPkm-V͓kꏵSjj/? @ @Jɂq6]bTq~Gb_0$m@ՉR586צIb!@ @ Д@kZU㚎vCZ;d75yRq8gev6: @ @h\]*nbR<~*ijBN4iv @ @`mg8W϶5yڊKI5ێS^+cۡC @ @ .RWmV\*O/fm)oLV/~$v*G @ @ "0gc&/~v*G @ @ #0hk)ӭ^v˭f=UkG|+ x6Qae\&0Wa\y<hp<8X~϶0UeT=_$׃a*-P%EpyT OX%ulfE'3́,಻ۻ`T&#"QAz[n Xxp ?&i,EB諵_§I^S+aA Lv:d={ lA04v qZđz7Yw_>+ѭBD< Y06m뫛i-W5ǟee.H;A'(jb&ʱ Ɇ9JEYZdI$Nq.vIeOdz ǃpcC=佉\F]XuA fo4KbWBD6 x$_ 8u6|l$K x.#E }ś-lT:ۋGiajl `2$.%tYտݵ6?e$%tg>æ0sNRbb/1!<&~?"l2/sQ|PfsAֹqPChܻ7Kr76\I A>ۚI-dY ǫ`@l 0_w, б?𳭰`W̮f7@GE8L0rzl_/@m' S}Ahwv f݂Jxgs+6螯r|zuq qZY46:Uxs|rx|j =_.쿢>;q?=8:\0M'G'0t: DON/@}XN s@__t[uIˣ#Xz: ^>"5D3iV7#*넆 E5-ڟrT虗ylM? z|X:cdݝ˖sWI*(fjlZ- U $ų-5@2}?9 /[¦,FD!gf2d@B.4 Ϯ OIR y i " IH5y8"QlZ~K22¼DZM i%W9Zm(:EFoYkl9"yk=]`KmnvgtU j (A ׇfo$,JUtlg#^=_q-*;/&oB?uqo 8 z<w"b: 1C 6)AFx0AGF%b۷ˀx­*_iR ']2a6÷Y=ٔWذ@_e f_Vy aU_ie, s8b+-_+֯UpT2{yZf1Bܛ-kx=n9NDEc܀/S"mTHqN&+"CWeWp ȯϻo'$+ƏJ'( PF93:9*/M&B悐 .Pfuf3B]Ɗts8R34jpNJ,QHy!ugU}tX`t]jz, nx8mz nbGo%BfY%Z$~ 7 _"Z@=AmvTa.|wĂ"b:deA {"Dӄnͮǂxl/R GQUNV'<-jizJdVg$_Lo WD;D=\?xx*IIzbH ~CJuO%S5YÿI>|϶ch-Zc ҇ᏻ:;8QR^ 'aa *ǝu Za,#;^n@wJ-gI8\iQ<7;۾g5|K-kUS DQe8 D!~ݿi }8p?dRmDqK~OR=U%P~Ge?Fjy i9g_N߰Y_?,=!n<ʇL?~>RﻴZ-cLl 腳YO*i߳TjXg^=Ast٥֡Dy9RꟄR!Y&eFu^u" / )WD 4<yG/>]eeh;10v05rp=%^E kPCi"Gv~E@G NcN/8Ki]byB3&Vf?OC8"2r8AoGcPhўxc|2zDV(r:pC]/I}9xAGwt}U)/A+ fd hS{"Dt9F/s7hl6 L (MnDݩʒxϞ2psϟYo l0̕ %!kb tNQ|wg)@:g 6Ra|G̶ScI/,D;I|މ9Y|8!Q.dˠòCx΋R<)@=uec(`!,~)3wV2b q":fn,a4Maefβ$|̈b_ڒOo"E a%i v/)"N7YrS-m;E!pgG8f6å:uNH@*,bI#oHp5?NbMG$YP`[c, `;f:Js-;S%^M _|LNOTFoq0r#(lP6Cn%҂a޺O1Eѹ9<4j2ƛ{ lKɭW?Tx29xPR//W_w3#N xG} hp&$i)L!}n9Mx_-D9^y8Èg5A{U9G=^|&aϜFr,T㹳"1|OFpIapK+ܡΔR11N8:1oHQtC##Mr O#ɮɢfDS pmp(-9 枉ܐB8@Ɯ m<~h 5pIS.$ #.8d.(~ll9;rUbG .;FL]i}C2H0Rl[<_6VgdFNN(`k:+Nefzk<11n^2m4!$]8E0'z,* U:XvWyP"iLƫ7!f$gt*s̸M]bD/MͿI'P尷S_a8(M(( m0ܗ'W:9\6qNot2$H6r#IP ABMm+Ng0VO+m2AZ}k˂rwQ}T751h|1|~LME!u5$,8 M/D5BCIv#wv=uqTI3RDZQ]M.T*c"Q!gӍ/ ,b1 ƝӋ##s*ծhqX{R]s%y!t6e6&:'` :$Խu˺NQ3됒`W)t䟺Fu^H'Ql"N:DL|r)e<()3#'۬xo&]DmsXѸqyۙ:BD>W-pA,1#H2>QI^P>ۊCpoÁ\RKygNrUhQe8teEjSG{Ֆ6SY7{B !&_Wzk$ fW''?]PFf67^#x5pMH. 9UVGcncދK;G0!R whv|=[0JʍMYHgzv1YtՌ> ./*X‹ jbj~<.1^<>yyHT)utoU_ppITdvɵr 7$t.\$bl Q]j2I(lQԫJ(CZ%^EɘZؒ:<:!?CU\ϞҔ%wPUfhg#Kzk$'Jظ4#Mb_Zhtlq{^ 3XT٭W}LR08Oeʱ]։A="NeW|!94JoJGEyp|Tiho%d۔WkkߑMdIO:Z%5tċѱס() *Kyq_1V 9?AWKH{h A~XL_'8?|}$`&Z 9͂[`kyt'hFi4GN/QoS}*0g?Q\I{OYF_ˀNfԾ} fc#/ dp_(%T][ w:`wcEhÒJ~|c:0VD׆3oZEQ1SM,9w]([IoQWƴUeӸ\ҎI1ɐ̉ 9v\w%3yXpzR\ 5Q>p'v=>H)O7RXw&ofbDjLΐLڍЎN@8-l~>eϟpd_g/ nbe kgt`xY@ 6X#rT%v& }r#Fp':ۋ.G̊l\%"zz0/,rV;.Vi$~8.ykax*ߊpeDt}qr$y6 +nq8U KEj9U<ZcbJah,N.>M"ޤ&87N2T1k!ppm__>;`X "mx/p[r⨼HXrni lk+uEweNz9f]|U K`·t>LS.Wwi%F(^Rvp\ %@q>;_qk"]g(6}z1uчF^o7llըwз)|b*8(GvBFʙ Fooh(u؆dS]wQkv3 6!J^CﲔN%SU] j C;xxYip|~_P"q-KXc\uM^n L0z%ґK3vU9A $utF@*owRoqe<c._T|L s ֖n rڧ6 ?5$.(9SsީO֝`ׄC+`nGx—|3&STune=WNv7`C&֮ Vz%69Axfsy (7uY뽐%) f=`f-iɽI)*tҠ+ f[gX#R"˵'YGuʵ;eɦ$(M=f|mCQ\ٟE?LuqTș /1I4_',&r|ݽu}0F24]C1=w B4/jFjڶU)<N +pa) hy%#P$K*QUuƤ>HIyGEYC< G`g[6:0~)n R-U 8IG\#bFzt H޷c%bKZ-n<*۫AH7䱫>By0S1+EIXm˺g0/vHv\aDMX9ͮ0ur!]NYcl'ʠ8ڎ|?%+kX;8dT 1> k>y@Jf}bmհQA=YޠO7WoĘmuqy+'A7}2^6;?+zTy嚙NƪYH)%jbqX¬пqecA} 4MH 1TEk+>CF]} Q&egt* |AE7,eӑzG;b^4( ,l.Ϛ ?. ףJB#vU;ht嘱%^ -7$~ٺDSx6qpo7nΗEҫ!tY=Ɓ/C^0;=FX@gOĝ/QoHN<5mroL7k@շ}}/YS_V&I9v/^#?LU9pk+"W=>KHtY "=7#>ָtʻ6qdgS\wM[{Ѳ`?,,|-Nz9Z`wđ{@t%)yN;;Ev魧6yǧJ-i_Zij[NW /UHϕר+VI] Gxվ*5Bnއ!dzmF:uC4>1l.aѺ:ͥ8{FP'?7膎/XSuAhe}X=t:蒷|ԴdGÌIS5g3%su]-)s 7И}{` Uj]tONTFrP?ԟX4O4QLKRȼBE,Qa[y=dz~uR@1Fێ.?vQ8{6[y5d&>w#:ү~H>̟9B5ٷ?PNzע̃d״NXy|ʾڥx(>S p*x%ҵe>NZάz5yLUqNkkǨ:!!%ueyڢvgy̆Z72~:Cu0 kX0&4툩[E`Idž`!q֭s-)DR1teg6ţ1U֪;5uv5oNW  tK/4)zE}fw':|ZۃR*/{u0v ^uG j{29o> ;jWu"J+.R&|3 +G_3.<^_coWm]YT2B N†H GG߀ɄFBSV[ v>[FG jѴIpYQ޷ 1nZ@] ž np pk.h~[o>lx'akS/-{UJ0v|شx{մpӬ)J_4џjYeS¼e[lqݺVM;Y{i bQL*jۘ);qa[0#d;ZXX2FSwn?0$睛"lZղύ?F=,GK?)n05x,JBj0՜2#GQ&_i+Iq Oiun/^!O '_M?N\?{׽bTC(1ˀGg/0yְ&L"*?&FdALS#\OSdEqy{ Xb`pӭcEMYA?&f mM7ě0+ʉ}ǒ23@qMf=:j*J#W!I,R05\-\𵹝 u? = QSjYZ b\Y1vDˬAW;3@_+p#u4h}ݘcJ*uUf`37T-ɲ%fh*R]ނ| jW$)%{`",[7q!"R5 UN{i4@U;⛘2yYGK'ʪ㗗а٘wzR NV y ,v+A9^NdB˩J@3b7jQx6}J0[,MtA)me?\g~ߒk,?~Eex/S)|ҙnrx(W[.7U.j[ne$L`ц7/^|*?HܢžRXe#~"wX+ף`lL}Z;7JJdh&n=1f4jdYe}ƨ0GBn}S(]CT(O|@8'Cn1zrD%!!0񝍪 ZdZbJJ>*l^"H5uTKy]Br^M}'۝`_O@ch"2e6UY]1\D0'jɅɦ!,%g8:fX{A"6 E £A@3K#."^L 2wp$4-"߼jʉ))CJi =kFGENC*2q*ZLpIHP3A/ʍ5L2JٙUpp%Zæ"GF{#o(3:"ݫl3i{ँd|Q2V4ت֯0zȯ}&#L) ]0/VvJY> >ۮp:;A0`HWoҌ.c٭Oecx55t'|~EDK[=6}Fr/CaŵB\pJ3w 9{Ύwѧ@(캧f'~T+qƊc #̢QfʑAUI%Hf>+ک,: /PVe C<7nImq;jyjj-TXeR5[>czG9מ5|ď*o-"-{GK5Q,dô?8:lVg 4lc:A6G60 FZ(3oڀ8d_rR@ ,AD9'٤q!+l9wzƉ 6 |,ƻ cT)πR=A؍_橮 T Ơ1S:ǀp]kq-hjHn8#$̄ᾜcdP`cpbiH.;RF>f%a84ה8wħpy^2Mchٞy6/(ir f3Ճ4PL];Q=w=]%h6|-!Z>M+5?N qbX7U-Gǁ`;7kY *HɁO`)u3pu%3,22L6  $Qh W.n.FQbN<[IrA*ɆlR1+І_zKN@rUghHƳzU\̒p|"zD{bWR>%6K-ܴGgـ }g ă(#U΁s@AjpnRc+oe ,ߊH0 @DE>3L0mٯl]f* ( 4NI''D6ˆ 9n7X/8Ѯ9=QExypyh7ϊK(A %.,Qn*Ze>[8*"~qͮ,iBZ޷gC0-1g;r3o18EMGZaL#{iܫoŪD%m J}0 )˞m:XIRe=:.:<&+w/U*w  vDT5Ӳi :r.9R(qzs.C /&as{a/eNKt ^Gl/R($Ii74mɘHD:&9멿9vB]4E>aa&D=JX) La X偄sC`x%;F# Ж4~A 5<sv呋msxG+yՠ,s{ml/Yޱ؊LGBr&0ye, ~SjB Üe°gf53((=#؆o6.@7U9@44`DF4ja}]h#㣑ɆCq'xs^prZoƁIL{V8S7Hx12u^ʠFZƻՌSB͙qSklWUBXYsǛΉ8kt(oͦja9kZ`Wd 9YV}ln^12a8dN1\H i.ERYmb QB)0&2mYxXS.Uh`s~Li7gM~|B Q8bvp˟1OKgm#vynkp/x҆uMW oìY.̈́70&́z r`aIqḏڙ0,XQd}bǸN&/Y.~v(x4#,_Ǘ"ؿ<_}}*nb28p^?(0N"yYXU"p=>}yq|U'x}tq5@WG_ν9ٿ\]Uʏe %#|&c FoLgcxdѸ(S ~ bHXW[/A-_`ĈF+xwqTd恏$ @xJtwTTxܩ r1`[4%>'w&M&8mm8zsɫ}ȡl{Gͣ1p]ll| z n sY(6{ .2ɘHYa@[_v0jF_P#0N$Y]&ҪϑTudB@B f260-p$ @X/7Q_!^ ]}{K7wvdGis82P^B8|Ja0SѲy܂(MMS0O   )[haYT0kAe= 0 iWC)EYyZ^)#l`$pvgjJIFH0`rd߆[ P<%g-8b :r/8ҿ_/ZpDTD!*L,EoNo"R6&Nq.\qkrC|ls>nx;_F;bd3F, ʳxpKHƊb-Rpj ; P;s?.~ ~Qa'M%H- 6lD瘸^-'m-ǩhC }լ!ـ[gM ub"+UN#|HaI'=Ɣi׍Sk/'u?ϰ?~z _]B+r˸Laj6]6v6pZ?a L(YFviH\vTYp`9n?^g[Ob[ԙwcIu58/+oi^?o ݇ӁizcMӝdrԬ˙Aٲ r;▒+LE߈}:?|r['^fA=6^ӟ3ohܤ..c)xs8l0|wQ'tfJLijbld8 ؔ_X5drsyƛ*V8[N$}}=EHvଞ$am$@1)=DzdStso?6dc1'mt))9x)R 6U ݘD{bR uHnRw4GxVOT9m4aj6 V\+@uAD?_ޒKuO'8U%ėc`S8dF¸xܥˮ ]l-',_w OiZ ^ ť Q -zL%vx:zꘑyVD }褧FraoA*bX2'TG|yLJG ]ИvzW6{G&fsY6$kBc~^O|[=`o kJu=8n\+hR%zAXB^k#uY'<ĎWa.h6) oeb U^}o@dv ̀RndJBM Y \Mb~UO)-0µb tEXgժ-||!` S8VNU!ܠjjzrZD^J@Jծ̏b6%1os戴8οB2"a ]Rk?yd 1sy88Tx-Wzcċx`@ /':{*Y7dMO^ZdC@//i&=*Ys4 -p4(_ٚL_AaVs;T9Ėw Lo _ՂGu;pfOQ0+h.f۹\M{D!Ulaeb2FeHchN0Ӕq>[+.,u`,5"Xb m/^2ͪa+)xKlq:,!=V v4ezJz/L3G_3zȪE&`ۭ7M J2So#޼iHfZ3 +.Ԝ_^rm*ۉ0v䤳l<٤Ө-3ury$Tپ۬Bh4 CFHdԡ毖n=vϴ}RkK G{ت}WXNuGHJOZ2bW7 jά+N[/~7͜mo|xӹߺZ1# 蹻Rd<౵"~ӻÖ&ӯء6;OOwO'i{ QQM'ةW_|S#9`>[ U?k}8QӝF1G=)IH~šYN1T=DܐR\8A*%uЋ7ƊtNbmvH~z2R0Iְu u*Md+jbS6 {ȼ<;i>cSd\UGC)hkpY 2?)f9ֆC8γ{aHtuG7RxsJ@'7xM^-w'&m,0rǒ f|ш*NbߢL/zfllflޏTyK!pxPD闋 [Br+*9˔ Yk?\QE(? E=~m.@4c`py߳+t5j+,qfG?j?J*g{ z&],sL,O/_YPfIV|`751;v$*q8($:15)&%C3DuD/[^"z[˿+4< `M[5zTJc5AWzf``IIbR1W&&- -S#M)xdL* CW=š-y֋vi)6NujN^~Z%׹ԡ<{/GYQV{<}Џ"kpgJ˟zaN}`Yͼְ Nw>{2qnϳa,w. 0$qHNS`ş043sq1b$v%G;GXZ]͙x:id(VFŜխk7P.>X7}1]Si܋ *y[-%G2% SXSk|p2F=4HFehr4X&ot$9S$Y_ǫ61G/.N=x4AJPpwn+e˰i} 9s&) |L,t/%BѭPx$lt"dyOS1Qƚd@p i%0iŴ񉐈Ɖ^GHaCqhyGr;Z5.FJ#Ey5S}'BES͢Ҿ!^PvG4jȿG6PQmu|| )LYxy>Lc%ӬIJ۷5 y8 "œMܞmаjX޲@|M-S:8.˦(3qR2/udHvm9^kf&a> 3'?z=V44i79uZDuN3BaXK2pnnQ ;7n(.a)gP3avlĶKw;=M.  n_U=Q#-y ٧1aYAE^m4 6HB4鶲mr~:Za UL,.QwJ`Z2I+9m C Qs nNLM:[0nal7;QVܡ5Egjn_j`EvzȱP^}7bV0Tj޵8]@08D`VQiy6.޽F hDŽTXD;]' 3,ǽ,`.NOLzH t}irMÍ^5w5+$̧Gx/{s LAVC}Eݻ7:1|%z7z{LEb O+m`X@ÜRȄ#*fc4bpXR>BDyz #34̐s!o:Ak}^H(Ԫ謷wӀjnjacQZ. N;o=2G"e:_)†xI HFtiF66`F7J*A c̊ \8R%8~mԠ}Fcä!pyUr$ <EC_يw\rI?M["Xd:ӇAGlǿy$ .ĿŰ{&Gf| ~[^loH (ƣ`_*9 X72LcGLW6^A$e[`X¡J^ts!3=SzW:@;8]Amp=lڍtР y;y;H+dw ^ΙB&-vyϴ)i~o!@ a`S ZB0.;o䎏im5HC{{H;td[ qŐ]I>W&lN9wfO(JB{K&@WIT nOOJlnh럯}{%O[+֗ ^E5Gm.ÑA~x!7)imUؔ`ՕbP-Y,w׃Q %B+E)fUP†®e:\a@jPB>s%5H䁻očP~lxK 4ݢZ^?X ֌ݍU`گ-SX3V~%A+Gy46}_PKq|Q1j OEBPS/nav.xhtmlWr6}߯3 l61$LxOa P-Wq^ف$;I,{t%/6\eB&RI C,;$׋~hf_}V:BCVZ-)VԤZ:s|CZm[ȄN ޞp{ϑ ɷ C HhćH61ZOuB}co;> acYlO&fVr8zIPw>W|#Bo+Wh nI$G)8 T JdЕrю# ։,".c㙩: JyP*%x"Q ?WLƅ &AhLJ۱`;% R-kigv>2+ɢ b̛90i\=tu  X7)O:1r z u\qa쵶#l#83H2͢y,U) J`sUJLV7{؏v\nӸ;oqDpðLt;@S C\/5Y)OBRM%Rmkk%wnűnl?5[ktJX(ih?A:X[[gIp 4{/zSBOѿGXB|u?>0d84Ã@0g"dWШ[LL\\l,Mm9Øw[S c}HE{2ֿ?cYӘP!D߷-I5B͡}Ӓ":O -Z:.+ZBRi0kU:J7^vT/$m୥}PKq|Qoa,mimetypePK q|Q A:META-INF/PKq|QwaMETA-INF/container.xmlPK q|QA@OEBPS/PKq|QW,::dOEBPS/title.pngPKq|Q  OEBPS/setup.pngPKq|Q^㨐[ OEBPS/body.xhtmlPKq|Q_lH= OEBPS/package.opfPKq|Q1j D? OEBPS/nav.xhtmlPK ;C jimjag-epm-84910c6/doc/epm-book.html000066400000000000000000003077571521151356300172030ustar00rootroot00000000000000 Software Distribution with ESP Package Manager

 

 

 

 

 

 

 

 

 

EPM

Software Distribution
with
ESP Package Manager

MICHAEL R. SWEET

JIM JAGIELSKI

Software Distribution with ESP Package Manager

Copyright © 2020 by Jim Jagielski

Copyright © 2006-2020 by Michael R Sweet

Copyright © 2006-2010 by Easy Software Products

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


Table of Contents



Preface 1 - Introduction to EPM 2 - Building EPM 3 - Packaging Your Software with EPM 4 - Advanced Packaging with EPM 5 - EPM Packaging Examples Apache License, Version 2.0 B - Command Reference C - List File Reference

Preface

This book provides a tutorial and reference for the ESP Package Manager ("EPM") software, version 5.0, and is organized into the following chapters and appendices:

Notation Conventions

The names of commands; the first mention of a command or function in a chapter is followed by a manual page section number:
 
epm
epm(1)
 
File and directory names:
 
/var
/usr/bin/epm
 
Screen output:
 
Request ID is Printer-123
 
Literal user input; special keys like ENTER are in ALL CAPS:
 
lp -d printer filename ENTER
 
Long commands are broken up on multiple lines using the backslash (\) character; enter the commands without the backslash:
 
foo start of long command \
    end of long command ENTER

 
Numbers in the text are written using the period (.) to indicate the decimal point:
 
12.3
 

Abbreviations

The following abbreviations are used throughout this book:

kb
Kilobytes, or 1024 bytes
 
Mb
Megabytes, or 1048576 bytes
 
Gb
Gigabytes, or 1073741824 bytes
 

Other References

https://jimjag.github.io/epm/
The official home page of the ESP Package Manager software.
 
http://www.debian.org/devel/
Debian Developers' Corner
 
http://techpubs.sgi.com/
IRIX Documentation On-Line
 
http://www.rpm.org/
The Red Hat Package Manager home page.
 
http://docs.sun.com/
Solaris Documentation On-Line
 

Help Me Improve This Book!

We've done my best to ensure that this book is both accurate and clear. If you find errors or have a suggestion for improving the book, please file a bug at:

https://github.com/jimjag/epm/issues

Acknowledgments

We'd like to thank the following people for their contributions to EPM:

  • Gareth Armstrong: HP-UX and %release enhancements
  • Nicolas Bazin: Openserver and Unixware support
  • Richard Begg: HP-UX fixes
  • Dirk Datzert: Bug fixes
  • Alan Eldridge: Makefile and RPM fixes
  • Vicentini Emanuele: IRIX enhancements
  • Jeff Harrell: IRIX enhancements
  • Lars Kellogg-Stedman: Debian fixes
  • Jochen Kmietsch: mkepmlist fixes
  • Aneesh Kumar K.V.: Tru64 setld package support
  • David Lee: Build system improvements
  • Scott Leerssen: mkepmlist fixes, BSD package support
  • Jeff Licquia: Debian support/enhancements
  • David Maltz: AIX fixes
  • Joel Nordell: SCO fixes
  • Rok Papez: Bug fixes and absolute output directory support
  • Holger Paschke: Documentation fixes
  • Phil Reynolds: OpenBSD fixes
  • Ganesan Rajagopal: Solaris fixes
  • Uwe Räsche: AIX support
  • Ralf Rohm: Solaris fixes
  • Jochen Schaeuble: epminstall fixes
  • Jason Shiffer: HP-UX fixes
  • Andrea Suatoni: IRIX fixes
  • Andy Walter: QNX support
  • Geoffrey Wossum: --output-directory option
  • Jean Yves: BSD package and mkepmlist fixes

1 - Introduction to EPM

This chapter provides an introduction to the ESP Package Manager ("EPM").

What is EPM?

Software distribution under UNIX/Linux can be a challenge, especially if you ship software for more than one operating system. Every operating system provides its own software packaging tools and each has unique requirements or implications for the software development environment.

The ESP Package Manager ("EPM") is one solution to this problem. Besides its own "portable" distribution format, EPM also supports the generation of several vendor-specific formats. This allows you to build software distribution files for almost any operating system from the same sources.

History and Evolution

When Easy Software Products was founded by me in 1993, the company originally shipped software only for the SGI IRIX operating system. Support was added for Solaris in 1997, followed quickly by HP-UX in 1998.

Each new operating system and supported processor required a new set of packaging files. While this worked, it also meant keeping all of the packaging files synchronized manually. Needless to say, this process was far from perfect and there was more than one distribution that was not identical on all operating systems.

As I began developing CUPS ( https://www.cups.org/) in 1997, the initial goal was to add support for two additional operating systems: Linux and Compaq Tru64 UNIX. If I was to avoid the mistakes of the past, I clearly had to change how software distributions were produced.

The first version of EPM was released in 1999 and supported so-called "portable" software distributions that were not tied to any particular operating system or packaging software. Due to popular demand, we added support for vendor-specific packaging formats in the second major release of EPM, allowing the generation of portable or "native" distributions from one program and one set of software distribution files.

Existing Software Packaging Systems

As I looked for a solution to our problem, we naturally investigated the existing open-source packaging systems. Under Linux, I looked at the Red Hat Package Manager ("RPM") and Debian packaging software ("dpkg" and "dselect"). For the commercial UNIX's I looked at the vendor-supplied packaging systems. Table 1.1 shows the results of my investigation.

Table 1.1: Software Packaging Formats
FormatOperating Systems1Binaries Cross- PlatformPatches Up- gradesCon- flictsRe- quires Re- placesConfig FilesMap FilesUn- install
installp AIXYes NoNo NoYes YesNo NoNo Yes
pkg_add FreeBSDYes Yes2NoNoNo No NoNo NoYes
pkg_add NetBSD
OpenBSD
Yes Yes2NoNoYes Yes NoNo NoYes
deb Ubuntu Linux
Debian GNU/Linux
YesYes2 NoYes YesYes YesYes NoYes
depot HP-UXYes NoYes YesYes YesNo YesYes Yes
inst IRIXYes NoYes YesYes YesYes YesYes Yes
Install.app macOSYes NoNo YesNo NoNo NoNo No
pkgadd SolarisYes NoYes NoYes YesNo YesYes Yes
rpm CentOS
Red Hat
SuSE
Yes Yes2NoYesYes Yes NoYes NoYes
setld Tru64 UNIXYes NoNo NoYes YesNo NoNo Yes
slackware Slackware LinuxYesNoNo No YesYes NoNo NoYes
  1. Standard packaging system for named operating systems.
  2. These packaging systems are cross-platform but require the package management utilities to be installed on the platform before installing the package.

 

As you can see, none of the formats supported every feature we were looking for. One common fault of all these formats is that they do not support a common software specification file format. That is, making a Debian software distribution requires significantly different support files than required for a Solaris pkg distribution. This makes it extremely difficult to manage distributions for multiple operating systems.

All of the package formats support binary distributions. The RPM and Debian formats also support source distributions that specifically allow for recompilation and installation. Only the commercial UNIX formats support patch distributions - you have to completely upgrade a software package with RPM and Debian. All but the Solaris pkg format allow you to upgrade a package without removing the old version first.

When building the software packages, RPM and Debian force you to create the actual directories, copy the files to those directories, and set the ownerships and permissions. You essentially are creating a directory for your software that can be archived in the corresponding package format. To ensure that all file permissions and ownerships are correct, you must build the distribution as the root user or use the fakeroot software, introducing potential security risks and violating many corporate security policies. It can also make building distributions difficult when dynamic data such as changing data files or databases is involved.

The commercial UNIX formats use software list files that map source files to the correct directories and permissions. This allows for easier delivery of dynamic data, configuration management of what each distribution actually contains, and eliminates security issues with special permissions and building distributions as the root user. Using the proprietary format also has the added benefit of allowing for software patches and using the familiar software installation tools for that operating system. The primary disadvantage is that the same distributions and packaging software cannot be used on other operating systems.

Design Goals of EPM

EPM was designed from the beginning to build binary software distributions using a common software specification format. The same distribution files work for all operating systems and all distribution formats. Supporting source code distributions was not a goal since most RPM and Debian source distributions are little more than wrapping around a compressed tar file containing the source files and a configure script.

Over the years, additional features have made their way into EPM to support more advanced software packages. Whenever possible, EPM emulates a feature if the vendor package format does not support it natively.

Resources

The EPM project page provides access to the current software, documentation, and issue tracker for EPM:

https://jimjag.github.io/epm/

The EPM source code can be downloaded in compressed tar files or via the popular Subversion software. Please see the EPM project page for complete instructions.


2 - Building EPM

This chapter shows how to configure, build, and install the ESP Package Manager.

Requirements

EPM requires very little pre-installed software to work. Most items will likely be provided as part of your OS. Your development system will need a C compiler, the make(1) program (GNU, BSD, and most vendor make programs should work), a POSIX shell (Bourne, Korn, Bash, etc.), and gzip(1).

The optional graphical setup program requires a C++ compiler, the FLTK library, version 1.1.x or 1.3.x, and (for UNIX/Linux) the X11 libraries. FLTK is available at the following URL:

http://www.fltk.org/

Your end-user systems will require a POSIX shell, the df(1) program, the tar(1) program, and the gzip(1) program to install portable distributions. All but the last are standard items, and most vendors include gzip as well.

EPM can also generate vendor-specific distributions. These require the particular vendor tool, such as rpm(8) and dpkg(8), to generate the software distribution on the development system and load the software distribution on the end-user system.

Configuring the Software

EPM uses GNU autoconf(1) to configure itself for your system. The configure script is used to configure the EPM software, as follows:

./configure ENTER

Choosing Compilers

If the configure script is unable to determine the name of your C or C++ compiler, set the CC and CXX environment variables to point to the C and C++ compiler programs, respectively. You can set these variables using the following commands in the Bourne, Korn, or Bash shells:

export CC=/foo/bar/gcc ENTER
export CXX=/foo/bar/gcc ENTER

If you are using C shell or tcsh, use the following commands instead:

setenv CC /foo/bar/gcc ENTER
setenv CXX /foo/bar/gcc ENTER

Run the configure script again to use the new commands.

Choosing Installation Directories

The default installation prefix is /usr/local, which will place the EPM programs in /usr/local/bin, the setup GUI in /usr/local/lib/epm, and the man pages in /usr/local/share/man. Use the --prefix option to relocate these files to another directory:

./configure --prefix=/example/path ENTER

The configure script also accepts the --bindir , --libdir, and --mandir options to relocate each directory separately, as follows:

./configure --bindir=/example/path/bin --libdir=/example/path/lib \
    --mandir=/example/path/share/man ENTER

Options for the Setup GUI

The setup GUI requires the FLTK library. The configure script will look for the fltk-config utility that comes with FLTK. Set the FLTKCONFIG environment variable to the full path of this utility if it cannot be found in the current path:

setenv FLTKCONFIG /foo/bar/bin/fltk-config ENTER

or:

FLTKCONFIG=/foo/bar/bin/fltk-config ENTER
export FLTKCONFIG

Building the Software

Once you have configured the software, type the following command to compile it:

make ENTER

Compilation should take a few minutes at most. Then type the following command to determine if the software compiled successfully:

make test ENTER
Portable distribution build test PASSED.
Native distribution build test PASSED.

The test target builds a portable and native distribution of EPM and reports if the two distributions were generated successfully.

Installing the Software

Now that you have compiled and tested the software, you can install it using the make command or one of the distributions that was created. You should be logged in as the super-user unless you specified installation directories for which you have write permission. The su(8) command is usually sufficient to install software:

su ENTER

Operating systems such as macOS do not enable the root account by default. The sudo(8) command is used instead:

sudo installation command ENTER

Installing Using the make Command

Type the following command to install the EPM software using the make command:

make install ENTER
Installing EPM setup in /usr/local/lib/epm
Installing EPM programs in /usr/local/bin
Installing EPM manpages in /usr/local/share/man/man1
Installing EPM documentation in /usr/local/share/doc/epm

Use the sudo command to install on macOS:

sudo make install ENTER
Installing EPM setup in /usr/local/lib/epm
Installing EPM programs in /usr/local/bin
Installing EPM manpages in /usr/local/share/man/man1
Installing EPM documentation in /usr/local/share/doc/epm

Installing Using the Portable Distribution

The portable distribution can be found in a subdirectory named using the operating system, version, and architecture. For example, the subdirectory for a Linux 2.4.x system on an Intel-based system would be linux-2.4-intel. The subdirectory name is built from the following template:

os-major.minor-architecture

The os name is the common name for the operating system. Table 2.1 lists the abbreviations for most operating systems.

The major.minor string is the operating system version number. Any patch revision information is stripped from the version number, as are leading characters before the major version number. For example, HP-UX version B.11.11 will result in a version number string of 11.11.

Table 2.1: Operating System Name Abbreviations
Operating SystemName
AIXaix
Compaq Tru64 UNIX
Digital UNIX
OSF/1
tru64
FreeBSDfreebsd
HP-UXhpux
IRIXirix
Linuxlinux
macOSosx
NetBSDnetbsd
OpenBSDopenbsd
Solarissolaris
Table 2.2: Processor Architecture Abbreviations
Processor(s)Abbreviation
Compaq Alphaalpha
HP Precision Architecturehppa
INTEL 80x86intel
INTEL 80x86 w/64bit Extensionsx86_64
MIPS RISCmips
IBM Power PCpowerpc
SPARC
MicroSPARC
UltraSPARC
sparc

The architecture string identifies the target processor. Table 2.2 lists the supported processors.

Once you have determined the subdirectory containing the distribution, type the following commands to install EPM from the portable distribution:

cd os-major.minor-architecture ENTER
./epm.install ENTER

The software will be installed after answering a few yes/no questions.

Installing Using the Native Distribution

The test target also builds a distribution in the native operating system format, if supported. Table 2.3 lists the native formats for each supported operating system and the command to run to install the software.

Table 2.3: Native Operating System Formats
Operating SystemFormatCommand
AIXaixinstallp -d directory epm
Compaq Tru64 UNIX
Digital UNIX
OSF/1
setldsetld -a directory
FreeBSD
NetBSD
OpenBSD
bsdcd directory
pkg_add epm
HP-UXdepotswinstall -f directory
IRIXinstswmgr -f directory
Linuxrpmrpm -i directory/epm-4.1.rpm
macOSosxopen directory/epm-4.1.pkg
Solarispkgpkgadd -d directory epm

3 - Packaging Your Software with EPM

This chapter describes how to use EPM to package your own software packages.

The Basics

EPM reads one or more software "list" files that describe a single software package. Each list file contains one or more lines of ASCII text containing product or file information.

Comments lines start with the # character, directive lines start with the % character, variables lines start with the $ character, and file, directory, init script, and symlink lines start with a letter.

Product Information

Every list file needs to define the product name, copyright, description, license, README file, vendor, and version:

%product Kung Foo Firewall
%copyright 1999-2005 by Foo Industries, All Rights Reserved.
%vendor Foo Industries
%license LICENSE
%readme README
%description Kung Foo firewall software for your firewall.
%version 1.2.3p4 1020304

The %license and %readme directives specify files for the license agreement and README files for the package, respectively.

The %product, %copyright, %vendor , and %description directives take text directly from the line.

The %version directive specifies the version numbers of the package. The first number is the human-readable version number, while the second number is the integer version number. If you omit the integer version number, EPM will calculate one for you.

Files, Directories, and Symlinks

Each file in the distribution is listed on a line starting with a letter. The format of all lines is:

type mode owner group destination source options

Regular files use the letter f for the type field:

f 755 root sys /usr/bin/foo foo

Configuration files use the letter c for the type field:

c 644 root sys /etc/foo.conf foo.conf

Directories use the letter d for the type field and use a source path of "-":

d 755 root sys /var/spool/foo -

Finally, symbolic links use the letter l (lowercase L) for the type field:

l 000 root sys /usr/bin/foobar foo

The source field specifies the file to link to and can be a relative path. Just as with the ln command, source paths are relative to the destination directory. For example, the symbolic link /usr/bin/foobar above points to the file /usr/bin/foo.

Wildcards

Wildcard patterns can be used in the source field to include multiple files on a single line. The destination field contains the destination directory for the matched files:

f 0444 root sys /usr/share/doc/foo *.html

For example, if the source directory contains three HTML files, bar.html, baz.html, and foo.html, the wildcard line above would expand to:

f 0444 root sys /usr/share/doc/foo/bar.html bar.html
f 0444 root sys /usr/share/doc/foo/baz.html baz.html
f 0444 root sys /usr/share/doc/foo/foo.html foo.html

Subpackages

Subpackages are optional parts of your software package. For example, if your package includes developer files, you might provide them as a subpackage so that users that will not be developing add-ons to your software can omit them from the installation.

Note:
Subpackages are implemented as native subsets of the main package for the AIX, HPUX, IRIX, Solaris, and Tru64 formats and as separate packages that depend on the main (parent) package for all other formats.

To define a subpackage, use the %subpackage directive followed by a %description directive:

%subpackage foo
%description One-Line Description of Foo

Files, scripts, and dependencies that follow the %subpackage directive are treated as part of that subpackage. Specifying the %subpackage directive with no name returns processing to the main (parent) package.

You can alternate between subpackages as many times as you like:

%description Main package description
f 0755 /usr/bin/bar bar

%subpackage foo
%description Foo programs
f 0755 /usr/bin/foo foo
%requires bla

%subpackage
f 0644 /usr/share/man/man1/bar.1

%subpackage foo
f 0644 /usr/share/man/man1/foo.1

The above example creates a package containing the "bar" program and man page with a subpackage containing the "foo" program and man page. The "foo" subpackage depends both on the main package (implicit %requires) and another package called "bla".

Building a Software Package

The epm(1) program is used to build software package from list files. To build a portable software package for an application called "foo", type the following command:

epm foo ENTER

If your application uses a different base name than the list file, you can specify the list filename on the command-line as well:

epm foo bar.list ENTER

Installing the Software Package

Once you have created the software package, you can install it. Portable packages include an installation script called product.install, where "product" is the name of the package:

cd os-release-arch ENTER
./product.install ENTER

After answering a few yes/no questions, the software will be installed. To bypass the questions, run the script with the now argument:

cd os-release-arch ENTER
./product.install now ENTER

Figure 3.1: The EPM Setup GUI
The EPM Setup GUI

Including the Setup GUI

EPM also provides an optional graphical setup program ( Figure 3.1). To include the setup program in your distributions, create a product logo image in GIF or XPM format and use the --setup-image option when creating your distribution:

epm --setup-image foo.xpm foo ENTER

This option is only supported when creating for portable and macOS software packages.

Creating Vendor Package Files

EPM can also produce vendor-specific packages using the -f option:

epm -f format foo bar.list ENTER

The format option can be one of the following keywords:

  • aix - AIX software packages.
  • bsd - FreeBSD, NetBSD, or OpenBSD software packages.
  • deb - Debian software packages.
  • depot or swinstall - HP-UX software packages.
  • inst or tardist - IRIX software packages.
  • macos or macos-signed - macOS software packages.
  • native - "Native" software packages (RPM, INST, DEPOT, PKG, etc.) for the platform.
  • pkg - Solaris software packages.
  • portable - Portable software packages (default).
  • rpm or rpm-signed - Red Hat software packages.
  • setld - Tru64 (setld) software packages.
  • slackware - Slackware software packages.

Everything in the software list file stays the same - you just use the -f option to select the format. For example, to build an RPM distribution of EPM, type:

epm -f rpm epm

The result will be one or more RPM package files instead of the portable package files.

Package Files

EPM creates the package files in the output directory. As mentioned in Chapter 1, "Installing Using the Portable Distribution", the default output directory is based on the operating system name, version, and architecture. Each package format will leave different files in the output directory.

AIX Package Files

AIX packages are contained in a file called name.bff, where "name" is the product/package name you supplied on the command-line.

BSD Package Files

BSD packages are contained in a file called name.tgz, where "name" is the product/package name you supplied on the command-line.

HP-UX Package Files

HP-UX packages are contained in two files called name.depot.gz and name.depot.tgz, where "name" is the product/package name you supplied on the command-line. The name.depot.gz file can be supplied directly to the swinstall(1m) command, while the name.depot.tgz file contains a compressed tar(1) archive that can be used to install the software from CD-ROM or network filesystem.

Debian Package Files

Debian packages are contained in a file called name.deb or name.deb.tgz when there are subpackages, where "name" is the product/package name you supplied on the command-line. The name.deb.tgz file contains a compressed tar archive containing name.deb and name-subpackage.deb files that can be installed from CD-ROM, disk, or network filesystem.

IRIX Package Files

IRIX packages are contained in a file called name.tardist, where "name" is the product/package name you supplied on the command-line.

macOS Package Files

macOS packages are contained in a file called name.dmg, where "name" is the product/package name you supplied on the command-line.

RPM Package Files

RPM packages are contained in a file called name.rpm or name.rpm.tgz when there are subpackages, where "name" is the product/package name you supplied on the command-line. The name.rpm.tgz file contains a compressed tar archive containing name.rpm and name-subpackage.rpm files that can be installed from CD-ROM, disk, or network filesystem.

Slackware Package Files

Slackware packages are contained in a file called name.tgz , where "name" is the product/package name you supplied on the command-line.

Solaris Package Files

Solaris packages are contained in two files called name.pkg.gz and name.pkg.tgz, where "name" is the product/package name you supplied on the command-line. The name.pkg.gz file is a compressed package file that can be used directly with the pkgadd(1m) command, while the name.pkg.tgz file is a compressed tar archive that can be used to install the software from CD-ROM, disk, or network filesystem.

Tru64 Package Files

Tru64 packages are contained in a file called name.tar.gz, where "name" is the product/package name you supplied on the command-line.


4 - Advanced Packaging with EPM

This chapter describes the advanced packaging features of EPM.

Including Other List Files

The %include directive includes another list file:

%include filename

Includes can usually be nested up to 250 levels depending on the host operating system and libraries.

Dependencies

EPM supports four types of dependencies in list files: %incompat, %provides, %replaces, and %requires. Table 4.1 shows the level of support for each package format.

Table 4.1: Dependency Support
Format%incompat%provides%replaces %requires
aixNo NoYesYes
bsdYes NoNoYes
debYes Yes1YesYes
instYes NoYesYes
osxNo NoNoNo
pkgYes NoNoYes
portableYes YesYesYes
rpmYes YesNoYes
setldNo NoNoNo
slackwareNo NoNoNo
swinstallNo NoYesYes
  1. Debian's package format does not currently support version numbers for %provides dependencies.

 

Software conflicts and requirements are specified using the %incompat and %requires directives.

If your software replaces another package, you can specify that using the %replaces directive. %replaces is silently mapped to %incompat when the package format does not support package replacement.

If your package provides certain functionality associated with a standard name, the %provides directive can be used.

Dependencies are specified using the package name and optionally the lower and upper version numbers:

%requires foobar
%requires foobar 1.0
%incompat foobar 0.9
%replaces foobar
%replaces foobar 1.2 3.4
%provides foobar

or the filename:

%requires /usr/lib/libfoobar.so
%incompat /usr/lib/libfoobar.so.1.2

Package dependencies are currently enforced only for the same package format, so a portable distribution that requires package "foobar" will only look for an installed "foobar" package in portable format.

Filename dependencies are only supported by the Debian, portable, and RPM distribution formats.

Scripts

Bourne shell script commands can be executed before or after installation, patching, or removal of the software. Table 4.2 shows the support for scripts in each package format.

The %preinstall and %postinstall directives specify commands to be run before and after installation, respectively:

%preinstall echo Command before installing
%postinstall echo Command after installing

Similarly, the %prepatch and %postpatch directives specify commands to be executed before and after patching the software:

%prepatch echo Command before patching
%postpatch echo Command after patching

Finally, the %preremove and %postremove directives specify commands that are run before and after removal of the software:

%preremove echo Command before removing
%postremove echo Command after removing
Table 4.2: Scripts Support
Format%preinstall %postinstall%prepatch %postpatch%preremove %postremove
aixYes YesNoNo YesYes
bsdNo YesNoNo YesNo
debYes YesNoNo YesYes
instYes YesNoNo YesYes
osxYes YesNoNo NoNo
pkgYes YesNoNo YesYes
portableYes YesYesYes YesYes
rpmYes YesNoNo YesYes
setldYes YesNoNo YesYes
slackwareNo YesNoNo NoNo
swinstallYes YesNoNo YesYes

 

To include an external script file, use the <filename notation:

%postinstall <filename

To include multiple lines directly, use the <<string notation (a.k.a. a "here" document):

%postinstall <<EOF
echo Command before installing
/usr/bin/foo
EOF

Note that all commands specified in the list file will use the variable expansion provided by EPM, so be sure to quote any dollar sign ($) characters in your commands. For example, "$foo" is replaced by the value of "foo", but "$$foo" becomes "$foo".

Conditional Directives

The %system directive can match or not match specific operating system names or versions. The operating system name is the name reported by uname in lowercase, while the operating system version is the major and minor version number reported by uname -r:

%system macos
 
Only include the following files when building a distribution for the macOS operating system.
 
%system linux-2.0
 
Only include the following files when building a distribution for Linux 2.0.x.
 
%system !macos !linux-2.0
 
Only include the following files when building a distribution for operating systems other than macOS and Linux 2.0.x.
 

The special name all is used to match all operating systems:

%system all

For format-specific files, the %format directive can be used:

%format rpm
 
Only include the following files when building an RPM distribution.
 
%format !rpm
 
Only include the following files when not building an RPM distribution.x.
 
%format all
 
Include the following files for all types of distributions.
 

The %arch directive can match or not match specific architectures. The architecture name is the name reported by uname -m; "arm" is a synonym for "armv6", "armv7", and "armv8", "intel" is a synonym for "i386", "i486", "i586", and "i686", and "powerpc" is a synonym for "ppc":

%arch intel
 
Only include the following files when building a package for 32-bit Intel processors.
 
%arch armv6
 
Only include the following files when building a package for ARMv6 processors.
 
%system !powerpc
 
Only include the following files when building a package for processors other than PowerPC.
 

The special name all is used to match all architectures:

%arch all

Finally, EPM can conditionally include lines using the %if , %elseif, %ifdef, %elseifdef, %else, and %endif directives.

%if directives include the text that follows if the named variable(s) are defined to a non-empty string:

%if FOO
f 755 root sys /usr/bin/foo foo
%elseif BAR
f 755 root sys /usr/bin/bar bar
%endif

%ifdef directives only include the text if the named variable(s) are defined to any value:

%ifdef OSTYPE
f 755 root sys /usr/bin/program program-$OSTYPE
%else
f 755 root sys /usr/bin/program program.sh
%endif

Protecting Object Files from Stripping

The nostrip() option can be included at the end of a file line to prevent EPM from stripping the symbols and debugging information from a file:

f 755 root sys /usr/lib/libfoo.so libfoo.so nostrip()

Software Patches

EPM supports portable software patch distributions which contain only the differences between the original and patch release. Patch files are specified using uppercase letters for the affected files. In the following example, the files /usr/bin/bar and /etc/foo.conf are marked as changed since the original release:

f 755 root sys /usr/bin/foo foo
F 755 root sys /usr/bin/bar bar
f 755 root sys /usr/share/man/man1/foo.1 foo.man
f 755 root sys /usr/share/man/man1/bar.1 bar.man
C 644 root sys /etc/foo.conf foo.conf

Variables

EPM imports the current environment variables for use in your list file. You can also define new variable in the list file or on the command-line when running EPM.

Variables are defined by starting the line with the dollar sign ( $) followed by the name and value:

$name=value
$prefix=/usr
$exec_prefix=${prefix}
$bindir=$exec_prefix/bin

Variable substitution is performed when the variable is defined, so be careful with the ordering of your variable definitions.

Also, any variables you specify in your list file will be overridden by variables defined on the command-line or in your environment, just like with make. This can be a useful feature or a curse, depending on your choice of variable names.

As you can see, variables are referenced using the dollar sign ( $). As with most shells, variable names can be surrounded by curly braces (${variable}) to explicitly delimit the name.

If you need to insert a $ in a filename or a script, use $$:

%install echo Enter your name:
%install read $$name
%install echo Your name is $$name.

Init Scripts

Initialization scripts are generally portable between platforms, however the location of initialization scripts varies greatly.

The i file type can be used to specify and init script that is to be installed on the system. EPM will then determine the appropriate init file directories to use and create any required symbolic links to support the init script:

i 755 root sys foo foo.sh

The previous example creates an init script named foo on the end-user system and will create symbolic links to run levels 0, 2, 3, and 5 as needed, using a sequence number of 00 (or 000) for the shutdown script and 99 (or 999) for the startup script.

To specify run levels and sequence numbers, use the runlevel() , start(), and stop() options:

i 755 root sys foo foo.sh "runlevel(02) start(50) stop(30)"

Literal Package Data

Sometimes you need to include format-specific package data such as keywords, signing keys, and response data. The %literal(section) directive adds format-specific data to the packages you create. Literal data is currently only supported for RPM and PKG packages.

Debian Literal Data

Debian packages have control files that provide metadata for each package. The %literal(control) directive can be used to provide this metadata:

%literal(control) <<EOF
Section: misc
Priority: extra
EOF

Debian packages support template files to define the metadata associated with configuration variables. The %literal(templates) directive can be used to provide this metadata:

  %literal(templates) <<EOF 
  Template: canpi-server/reboot
  Type: boolean
  Description: Would you like to reboot to complete the package installation ?
   The package installation updates the device table overlay definition.
   For these changes to take effect the system must be restarted.
   The canpi daemon is not started by the package installation as the lack of /dev/can0
   will cause it to fail immediately.
  
  EOF
  

PKG Literal Data

PKG packages support request files that are used to do batch installations when installation commands require user input. The %literal(request) directive can be used to provide this user input:

%literal(request) <<EOF
John Doe
1 Any Lane
Forest Lawn, OH 12345
EOF

RPM Literal Data

RPM packages support numerous attributes in the "spec" file that control how the package is created and what metadata is included with the package. The %literal(spec) directive can be used to provide attributes for the spec file:

%literal(spec) <<EOF
%changelog
* Tue Aug 26 2008 John Doe <johndoe@domain.com>

- Added new feature "bar"

* Fri Aug 1 2008 John Doe <johndoe@domain.com>

- Added new feature "foo"
EOF

5 - EPM Packaging Examples

This chapter shows how the EPM and CUPS software is packaged using EPM list files. The EPM list file example highlights the basic features of EPM, while the CUPS list file example shows the more advanced features of EPM.

Packaging the EPM Software

The EPM software comes with its own autoconf-generated epm.list file that is used to package and test EPM. The EPM package consists of the main package plus a "documentation" subpackage for the documentation files and a "man" subpackage for the man pages.

We start by defining variables for each of the autoconf directory variables:

$prefix=/usr
$exec_prefix=/usr
$bindir=${exec_prefix}/bin
$datadir=/usr/share
$docdir=${datadir}/doc/epm
$libdir=/usr/lib
$mandir=/usr/share/man
$srcdir=.

Then we provide the general product information that is required for all packages; notice the use of ${srcdir} to reference the LICENSE and README files:

%product ESP Package Manager
%copyright 1999-2020 by Michael R Sweet, All Rights Reserved.
%copyright 2020 by Jim Jagielski, All Rights Reserved.
%vendor Michael R Sweet
%vendor Jim Jagielski
%license ${srcdir}/LICENSE
%readme ${srcdir}/README.md
%description Universal software packaging tool for UNIX.
%version 4.6 460

After the product information, we include all of the non-GUI files that are part of EPM:

# Executables
%system all
f 0555 root sys ${bindir}/epm epm
f 0555 root sys ${bindir}/epminstall epminstall
f 0555 root sys ${bindir}/mkepmlist mkepmlist

# Documentation
%subpackage documentation
%description Documentation for EPM
f 0444 root sys ${docdir}/README $srcdir/README.md
f 0444 root sys ${docdir}/LICENSE $srcdir/LICENSE
f 0444 root sys ${docdir}/epm-book.epub $srcdir/doc/epm-book.epub
f 0444 root sys ${docdir}/epm-book.html $srcdir/doc/epm-book.html
f 0444 root sys ${docdir}/epm-book.pdf $srcdir/doc/epm-book.pdf

# Man pages
%subpackage man
%description Man pages for EPM
f 0444 root sys ${mandir}/man1/epm.1 $srcdir/doc/epm.man
f 0444 root sys ${mandir}/man1/epminstall.1 $srcdir/doc/epminstall.1
f 0444 root sys ${mandir}/man1/mkepmlist.1 $srcdir/doc/mkepmlist.1
f 0444 root sys ${mandir}/man5/epm.list.5 $srcdir/doc/epm.list.5

Finally, we conditionally include the GUI files depending on the state of a variable called GUIS:

# GUI files...
$GUIS=setup uninst

%if GUIS
%subpackage
f 0555 root sys ${libdir}/epm/setup setup
f 0555 root sys ${libdir}/epm/uninst uninst

%system macos
f 0444 root sys ${datadir}/epm/default.icns default.icns
%system all

%subpackage man
f 0444 root sys ${mandir}/man1/setup.1 $srcdir/doc/setup.1
f 0444 root sys ${mandir}/man5/setup.types.5 $srcdir/doc/setup.types.5

%endif



Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

  1. You must give any other recipients of the Work or Derivative Works a copy of this License; and

  2. You must cause any modified files to carry prominent notices stating that You changed the files; and

  3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

  4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability . While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

B - Command Reference

epm(1)

Name

epm - create software packages.

Synopsis

epm [ -a architecture ] [ -f format ] [ -g ] [ -k ] [ -m name ] [ -n[ mrs] ] [ -s setup.ext ] [ --depend ] [ --help ] [ --keep-files ] [ --output-dir directory ] [ --setup-image setup.ext ] [ --setup-program /foo/bar/setup ] [ --setup-types setup.types ] [ --uninstall-program /foo/bar/uninst ] [ -v ] [ name=value ... name=value ] product [ listfile ]

Description

epm(1) generates software packages complete with installation, removal, and (if necessary) patch scripts. Unless otherwise specified, the files required for product are read from a file named "product.list".

Options

The following options are recognized:
-a architecture
Specifies the actual architecture for the software. Without this option the generic processor architecture is used ("intel", "sparc", "mips", etc.)
-f bsd
Generate a BSD distribution suitable for installation on a FreeBSD, NetBSD, or OpenBSD system.
-f deb
Generate a Debian distribution suitable for installation on a Debian-based Linux system.
-f native
Generate a native distribution. This uses deb or rpm for Linux, bsd for FreeBSD, NetBSD, and OpenBSD, and macos for macOS. All other operating systems default to the portable format.
-f macos
-f macos-signed
Generate a macOS software package. The macos-signed format uses the signing identity in the EPM_SIGNING_IDENTITY environment variable.
-f portable
Generate a portable distribution based on shell scripts and tar files. The resulting distribution is installed and removed the same way on all operating systems. [default]
-f rpm
-f rpm-signed
Generate a Red Hat Package Manager ("RPM") distribution suitable for installation on an RPM-based Linux system. The rpm-signed format uses the GPG private key you have defined in the ~/.rpmmacros file.
-g
Disable stripping of executable files in the distribution.
-k
Keep intermediate (spec, etc.) files used to create the distribution in the distribution directory.
-m name
Specifies the platform name as a string. The default is to use the auto-generated name from the -n option.
-n[mrs]
Specifies the operating system and machine information that is included in the package name. Distributions normally are named "product-version-system-release-machine.ext" and "product-version-system-release-machine-patch.ext" for patch distributions. The "system-release-machine" information can be customized or eliminated using the appropriate trailing letters. Using -n by itself will remove the "system-release-machine" string from the filename entirely. The letter 'm' includes the architecture (machine). The letter 'r' includes the operating system version (release). The letter 's' includes the operating system name.
-v
Increases the amount of information that is reported. Use multiple v's for more verbose output.
--depend
Lists the dependent (source) files for all files in the package.
--output-dir directory
Specifies the directory for output files. The default directory is based on the operating system, version, and architecture.
-s setup.ext
--setup-image setup.ext
Include the ESP Software Wizard with the specified image file with the distribution. This option is currently only supported by portable distributions.
--setup-program /foo/bar/setup
Specifies the setup executable to use with the distribution. This option is currently only supported by portable distributions.
--setup-types setup.types

Specifies the setup.types file to include with the distribution. This option is currently only supported by portable distributions.

--uninstall-program /foo/bar/uninst
Specifies the uninst executable to use with the distribution. This option is currently only supported by portable distributions.

Environment

The following environment variables are supported by epm:
EPM_SIGNING_IDENTITY
The common name that should be used when signing a package.

List Files

The EPM list file format is now described in the epm.list(5) man page.

See Also

epminstall(1), mkepmlist(1), epm.list(5), setup(1).

Copyright

Copyright © 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright © 2020 by Jim Jagielski, All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

epminstall(1)

Name

epminstall - add a directory, file, or symlink to a list file.

Synopsis

epminstall [ options ] file1file2... fileNdirectory
epminstall [ options ] file1file2
epminstall [ options ] -d directory1 directory2...directoryN

Description

epminstall adds or replaces a directory, file, or symlink in a list file. The default list file is "epm.list" and can be overridden using the EPMLIST environment variable or the --list-file option.

Entries are either added to the end of the list file or replaced in-line. Comments, directives, and variable declarations in the list file are preserved.

Options

epminstall recognizes the standard Berkeley install(8) command options:
-b
Make a backup of existing files (ignored, default for epm.)
-c
BSD old compatibility mode (ignored.)
-g group
Set the group owner of the file or directory to group. The default group is "sys".
-m mode
Set the permissions of the file or directory to mode. The default permissions are 0755 for directories and executable files and 0644 for non-executable files.
-o owner
Set the owner of the file or directory to owner. The default owner is "root".
-s
Strip the files (ignored, default for epm.)
--list-file filename.list
Specify the list file to update.

See Also

epm(1), mkepmlist(1), epm.list (5).

Copyright

Copyright © 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright © 2020 by Jim Jagielski, All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

mkepmlist(1)

Name

mkepmlist - make an epm list file from a directory.

Synopsis

mkepmlist [ -g group ] [ -u user ] [ --prefix directory ] directory [ ... directory ]

Description

mkepmlist(1) recursively generates file list entries for files, links, and directories. The file list is send to the standard output.

Options

mkepmlist supports the following options:
-g group
Overrides the group ownership of the files in the specified directories with the specified group name.
-u user
Overrides the user ownership of the files in the specified directories with the specified user name.
--prefix directory
Adds the specified directory to the destination path. For example, if you installed files to "/opt/foo" and wanted to build a distribution that installed the files in "/usr/local", the following command would generate a file list that is installed in "/usr/local":

mkepmlist --prefix=/usr/local /opt/foo >foo.list

See Also

epm(1), epminstall (1), epm.list(5).

Copyright

Copyright © 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright © 2020 by Jim Jagielski, All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

setup(1)

Name

setup - graphical setup program for the esp package manager

Synopsis

setup [ directory ]

Description

setup(1) provides a graphical installation interface for EPM-generated portable installation packages. It presents a step-by-step dialog for collecting a list of packages to install and accepting any license agreements for those packages.

setup searches for products in the current directory or the directory specified on the command-line.

Installation Types

The default type of installation is "custom". That is, users will be able to select from the list of products and install them.

setup also supports other types of installations. The setup.types file, if present, defines the other installation types.

See Also

epm(1), setup.types (5).

Copyright

Copyright © 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright © 2020 by Jim Jagielski, All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


C - List File Reference

This appendix provides a complete reference for the EPM list file and setup types formats.

The EPM List File Format

Each EPM product has an associated list file that describes the files to include with the product. Comment lines begin with the "#" character and are ignored. All other non-blank lines must begin with a letter, dollar sign ("$"), or the percent sign ("%").

List File Directives

The following list describes all of the list file directives supported by EPM:

$name=value
 
Sets the named variable to value. Note: Variables set in the list file are overridden by variables specified on the command-line or in the current environment.
 
%copyright copyright notice
 
Sets the copyright notice for the file.
 
%description description text
 
Adds a line of descriptive text to the distribution. Multiple lines are supported.
 
%format format [... format]
 
Uses following files and directives only if the distribution format is the same as format.
 
%format !format [... format]
 
Uses following files and directives only if the distribution format is not the same as format.
 
%include filename
 
Includes files listed in filename.
 
%incompat product
%incompat filename
 
Indicates that this product is incompatible with the named product or file.
 
%if variable [... variable]
%if !variable [... variable]
%ifdef variable [... variable]
%ifdef !variable [... variable]
%elseif variable [... variable]
%elseif !variable [... variable]
%elseifdef variable [... variable]
%elseifdef !variable [... variable]
%else
%endif
 
Conditionally includes lines in the list file. The %if lines include the lines that follow if the named variables are (not) defined with a value. The %ifdef lines include the lines that follow if the named variables are (not) defined with any value. These conditional lines cannot be nested.
 
%install script or program
 
Specifies a script or program to be run after all files are installed. (This has been obsoleted by the %postinstall directive)
 
%license license file
 
Specifies the file to display as the software license.
 
%packager name of packager
 
Specifies the name of the packager.
 
%patch script or program
 
Specifies a script or program to be run after all files are patched. (This has been obsoleted by the %postpatch directive)
 
%postinstall script or program
%postinstall <scriptfile
%postinstall <<string
 
Specifies a script or program to be run after all files are installed.
 
%postpatch script or program
%postpatch <scriptfile
%postpatch <<string
 
Specifies a script or program to be run after all files are patched.
 
%postremove script or program
%postremove <scriptfile
%postremove <<string
 
Specifies a script or program to be run after removing files.
 
%preinstall script or program
%preinstall <scriptfile
%preinstall <<string
 
Specifies a script or program to be run before all files are installed.
 
%prepatch script or program
%prepatch <scriptfile
%prepatch <<string
 
Specifies a script or program to be run before all files are patched.
 
%preremove script or program
%preremove <scriptfile
%preremove <<string
 
Specifies a script or program to be run before removing files.
 
%product product name
 
Specifies the product name.
 
%provides product name
 
Indicates that this product provides the named dependency.
 
%readme readme file
 
Specifies a README file to be included in the distribution.
 
%remove script or program
 
Specifies a script or program to be run before removing files. (This has been obsoleted by the %preremove directive)
 
%release number
 
Specifies the release or build number of a product (defaults to 0).
 
%replaces product
 
Indicates that this product replaces the named product.
 
%requires product
%requires filename
 
Indicates that this product requires the named product or file.
 
%system system[-release] [... system[-release]]
 
Specifies that the following files should only be used for the specified operating systems and releases.
 
%system !system[-release] [... system[-release]]
 
Specifies that the following files should not be used for the specified operating systems and releases.
 
%system all
 
Specifies that the following files are applicable to all operating systems.
 
%vendor vendor or author name
 
Specifies the vendor or author of the product.
 
%version version number
 
Specifies the version number of the product.
 
c mode user group destination source
C mode user group destination source
 
Specifies a configuration file for installation. The second form specifies that the file has changed or is new and should be included as part of a patch. Configuration files are installed as "destination.N" if the destination already exists.
 
d mode user group destination -
D mode user group destination -
 
Specifies a directory should be created when installing the software. The second form specifies that the directory is new and should be included as part of a patch.
 
f mode user group destination source [nostrip()]
F mode user group destination source [nostrip()]
 
Specifies a file for installation. The second form specifies that the file has changed or is new and should be included as part of a patch. If the "nostrip()" option is included, the file will not be stripped before the installation is created.
 
f mode user group destination source/pattern [nostrip()]
F mode user group destination source/pattern [nostrip()]
 
Specifies one or more files for installation using shell wildcard patterns. The second form specifies that the files have changed or are new and should be included as part of a patch. If the "nostrip()" option is included, the file will not be stripped before the installation is created.
 
i mode user group service-name source ["options"]
I mode user group service-name source ["options"]
 
Specifies an initialization script for installation. The second form specifies that the file has changed or is new and should be included as part of a patch. Initialization scripts are stored in /etc/software/init.d and are linked to the appropriate system-specific directories for run levels 0, 2, 3, and 5. Initialization scripts must accept at least the start and stop commands. The optional options following the source filename can be any of the following:
 
order(string)
Specifies the relative startup order compared to the required and used system functions. Supported values include First, Early, None, Late, and Last (macOS only).
provides(name(s))
Specifies names of system functions that are provided by this startup item (macOS only).
requires(name(s))
Specifies names of system functions that are required by this startup item (macOS only).
runlevels(levels)
Specifies the run levels to use.
start(number)
Specifies the starting sequence number from 00 to 99.
stop(number)
Specifies the ending sequence number from 00 to 99.
uses(name(s))
Specifies names of system functions that are used by this startup item (macOS only).

 
l mode user group destination source
L mode user group destination source
 
Specifies a symbolic link in the installation. The second form specifies that the link has changed or is new and should be included as part of a patch.
 
R mode user group destination
 
Specifies that the file is to be removed upon patching. The user and group fields are ignored. The mode field is only used to determine if a check should be made for a previous version of the file.
 

List Variables

EPM maintains a list of variables and their values which can be used to substitute values in the list file. These variables are imported from the current environment and taken from the command-line and list file as provided. Substitutions occur when the variable name is referenced with the dollar sign ($):

%postinstall <<EOF
echo What is your name:
read $$name
echo Your name is $$name
EOF

f 0555 root sys ${bindir}/foo foo
f 0555 root sys $datadir/foo/foo.dat foo.dat

Variable names can be surrounded by curly brackets (${name}) or alone ($name); without brackets the name is terminated by the first slash (/), dash (-), or whitespace. The dollar sign can be inserted using $$.

The setup.types File

The EPM setup program normally presents the user with a list of software products to install, which is called a "custom" software installation.

If a file called setup.types is present in the package directory, the user will instead be presented with a list of installation types. Each type has an associated product list which determines the products that are installed by default. If a type has no products associated with it, then it is treated as a custom installation and the user is presented with a list of packages to choose from.

The setup.types file is an ASCII text file consisting of type and product lines. Comments can be inserted by starting a line with the pound sign (#). Each installation type is defined by a line starting with the word TYPE. Products are defined by a line starting with the word INSTALL:

# Pre-select the user packages
TYPE Typical End-User Configuration
INSTALL foo
INSTALL foo-help

# Pre-select the developer packages
TYPE Typical Developer Configuration
INSTALL foo
INSTALL foo-help
INSTALL foo-devel
INSTALL foo-examples

# Allow the user to select packages
TYPE Custom Configuration

In the example above, three installation types are defined. Since the last type includes no products, the user will be presented with the full list of products to choose from.

jimjag-epm-84910c6/doc/epm-book.pdf000066400000000000000000032504431521151356300170000ustar00rootroot00000000000000%PDF-1.4 % 1 0 obj<>>endobj 2 0 obj<>endobj 3 0 obj<>stream xڬctfm%۶mWRmm۶mIŶm۹}O?=^xk169!@Ɖ'9CN.0p21p$RXX`۹;9Q(Q"C=hnjCD`ekg q |P r2[5$eʼneU6+"ygC+s#"is##ց? "#[cZsd%Hd@h02{ f'DGdp6wtNdHd``wND6FV7 뿱`NFvNDʋO'3j; ٚ45rcaF mnN2;Y_Ύ6ŀ`j`lpt WDKvvV7r0wrX00i ? "icbK~cg?;C;1QoI"3A+_]ZJ-3E V[Xo6NsG1s7ߩW18X虙[L1G`ci_Ҍ-WX'ewLw[isHH֍ȓgaA'3 0e89i푉N_15g lt"dabckW/߾w7i4~a?-yɀE{∵xnfЭTySVn+0Wzy% 7-햾V>즉 !^* D h+/YQW@Z(|$<.ٌRot+sz>^Qx zml6嫾;oeY#>V*ϹUS'HH'QSl"€()5tvK9;s/k)k磄pɌS>{G722aɋhE1JX驀l?usΣ`&ӌ멼*KrNAmB j"uRFfn?H5&U{๬Pն/|Ghsq ɤ"#nL25Nϯÿ^]~b0MjSf2lMU9Uq>10K5v8̾L$]WFѐiP+۟gx7={zP5u$[(vϋm_#-0\LgyhNJ-5"2~wk%GE,)(pI8eq.܂e܈ޠN(b*ڨ=~/(&H3_ oR$!bB"RAٜb|j< z\1 UCDw>x m4QmWT( V򭮺ddps *K.4{t A? c <+)~d>߳w~ `l_*NV~?T#*g޾G[+3. J%kKq{RŗF*JêTc{< p-i^D$ r=f[H*vc ?VF3<;QvWrr߆v6=K*Ҽ8.ZD=}>v C8x th !>Em<9R)Z[M$Dy%ClX{v2inEPPC+[h!j~g jx4Ïa)v$<"KxHމc'YoQ'?"FO&XQ4_ b4DPA'5 ΈeX;yr -^6A.92?$h"wba1F 2,yE'`5WG y#:'!ˤw÷Y{X(24H"f}imR]Ǒ4u"+ƙQ#"I <џ~LLƟ>|$\^RqwvF[=D FkcI0zLG8mv7TŽ0=Fa2%Co@\F-TХu)7n_ \y_hD\YgZؼ^a|9$9/X݃ ~s-,S"kvfQvx=IӉwZWkc&h 1&{ay.^(^9膖}2r Ozqkx@\j6Xij}=n~EZQ' ]l<(g0 eʄ)#*QF^; !حF8]d~\T_x06qwH{1=psU[y78 b ̊Lj#gn0eB3o"{a[ ) Typf]2a (} ڜgi= l<)s{RʇF)$F"ysy-%C!ڎ,d:Jsexr6'(}g#vF3LdEԷڄ-!u6~(2Zݐ >Rn[8yY JP >jTKVPCp׆9`quc w{;44b`HK7 7j#/gwzC`|DzB`bx%Z04|8.8odp߮aǥt!:]ZC#ن2O)JgJ=k~7z֝9U;ZٿpTߧCy0"57@1Qr1.3##2=wO0s2l6aJ-E6{t^j,񥿏'HdDnH4mX9QP..r~xㅛ2 ^jw~j,M ZKYzNJpܘ.6* bQ*֨DDmɇȠtdxB,9Tc3b6`놷PFGWܥk}FBSZH-3!?7MK^KY0  \3ӈ׎Vt?sZX9:+'SisB<6U4RNaMpm]şa] )ŕ*k.=ZԷ'v)VNQEG&O=< 0Ր<8'=D߾3Wb nv0\-HCD'Zxo3l4}PBp]U( b zp4"0d-LϣruRV&4b,h-V0*ԱdN]1f39wRP0u?/lR*xՙW+{Qةm+ -.(PB +8}}k#CmYiT?&X2݁+z_nK-,wmٙƩEԉSPZdNSgޚcȹLunҮvxa`T*3A?A@[օMCқ[^}- rG-j\Dx 넡P|ǡ.X+E;?x$S BE$~ply$4'&&lpE{#m"fIkn˕kour=N͑JQK/::!, /xKnӡt XF)cUh]g/_fF-FC:RX7Q !Yh h"jC3 < "o+" 3ѻ{&")Hal#4]P:P:fœf@*K mE`x$1ם{3=I0fg#OyfK/8|h~ed%Jct@*Eńk4#/'EmCgh:b(Bܤ 9s/xɯ"?:r5*[h2לy͇ņFNI7$3q`;ʲNA\TvQPMމRj5/𜂋Y zV &c2wO݁K!|Q˅pP0UҤAGrG-"OkGvgaU͠B:oV .p~xMN%I*Op"N@JWVv D[Ä=2Iyan+ITe0Fq鉄4\3̔zqmRN!}w_=YdbԱ|37_<\E ޣSs7(ȼ1'!QΓ3j\A6|f-[Tv+:GbO NpSVRP,Z0ϟd߅0 *\ ^NjbcN1}*pq`'L(6 wQG J͓?^Ls&V\H,l8;R69٧xHo4RI=p *)/qiv<ڧ4Y+o<^"dA,x6;7KؾxpYPV觞[֍,D,a@$ML'tU".vop{ !R*spt"댱mؖ5L 羴E6 Ufz)N%r a!w\˂pg>BQ HECT]w "蜏~t]LP29rX\W\ph!L=Ye7-T (Hԝ3{n');xF*P| ŧ>w$fkI"O<U{F:8d߶`+K˭UWt r(1#Ӿ~ךTVpXBҪxq_TCXGlO.8,ඁKqi>WxX?pιyinGEᤦb1;6WV`V%L{*U'{+ھGvG'4jDk'ەc)HKe&A֖|>f{n H2g\x)eXSNJwU_p1AWl̳d5Mѵ~퐎7SaybrgmVGz-D#fJŅBr̅GDR B:$ĒQY}zimk!YW e6dPOZa{B#ma55XFoF[2$ -Lxj  Eu}_>]>U +GCU9pkԈÀ-v6S/P!nbDgՆ8mZȥ2yH=t0_Dopv㼸PٷB/3\@e}$~scbIcCvWpdAЌϬ3i(6B-4? 7 ^\BdQsee$4$7ҮR_FӵF*v5B\!Ƞ&XiL(a]èobzde7uQ28'MQyȄ4fK 7\eAYx}EⵯTn(}7IǺ0և^PX݆ BĝHEUl V ߄'h !!]c^$0~vCV]4aF\[D6F+(AytH1buAosu¶ڂ9X{`SƵe]*s| ]#xFzvk:  !i4Qs'DXMB, Q SlY"={Z (Tc+#\FݤRq:뜠ҾǪ)N`zjGPFyj2]!g\0 չWd\&^1Xt#Xl^u('Fܯ_vÖS1ر?6Z=)F҇ub\:[t X0"b( KM43SU<=J(` =׽MzUt" Dr% 6Pltk XY ]`qހyhvu\'k Ɋ.H,D1Fu>HA@~y1,FqiDYb݋o"$5268 r{<< keҎ3օ? ʁ곁L'/*tOmУY!ma~`\-2l-uB(xk6<˜M a^ol"L#k^E_ p+qP0|Tal%`US F1oH_IL@oR}cSP~J^Y,&"4 F@y0'o%%^QdFQ6)i)s^I"nB&kêLa(z&(KI/ /KH0.`{TUqBCyxk.\~쵂&onByjf϶cb_R:e*&AddZsF5NyUə}C)ם-7|$S>2Y{݇/:Ç$$)hDqMCR|p>DVOo򘈖<$ koᘆo\ #~^Nӯw6&7k42'EDvG8f r]"F\3#%IF^:(O]OP+|hi9sZNV%)26.Ӕ*u.g'C6}7DL9Ϊm[J~'~``魔/Ki<ӳBIW+ jT?"DKwTkGt>6] zE2 6i#RadDaWrһrdϔmV I#? ONЍe*+>Ց3_2iPjMcB{Q5/%r/MVo$_Bި&G%!$G258XACD+k칞6s;5 `HvU,i/0G&&:e78_ֱ^DY^?;kGYW4x'g~AX=т[|چƝN):(XsԶFyB x(\O Lvи$|L)W;D4A{V6~eDgG( CK~ѵ}U欒F!$aYiw'̝m>U R7.+*@^5fQ OsV|+wK.98_vWaf :Baͳb-JQy3w|rZp({es jet3GjL+"R`?ݻj@yO> eU(fY.gilC '29V!Zp[GDXڮfroւ+QgwbQGwMgJN*zwVH/+7$η~8&r杍Re P(5!ު-HE/>x{;|R?t{0#ﷸ mAYÄk "( 64X/NG#>C``D)5?O :Vxʛwx/䕃3摲cBOΜ-~x 9^!Y; F{$,φA .R8uw vBȯ{R Kv}͐jDv5w{9/h^SS% L@Hv.jky@J'diF.*1V^H,nr_> ɚ3ڍur3SB3Fvg1!Ox4%y*q$ݲzKe_= Ǥ'E HOcެK[PؿN8F٨ |L':?{꒎[|u? Xq =)Ln,kOlQIQH|1Q4=gZ?fd Cf6 {ͱ=lr +C4t kc=EC-jk"tn&cA&;v\O ƵQŐ:Q+oux9 cL&N͵^7Z7%e9[Z7"^6'⢒:abЯH2>|=ƾ(92-5T}2yE0"u#F }Vgj QGYS"UhC$/XL0"XL6,Us4Qǐ.;|~qc* m fҌ/LVJqtARZWA`PaߔXktn5P[T4̬ pՐTU2jcI8l| L7@ ˷H+(嵀7Kg eMb|r ng5L!&2"مo1uyx+Ax7.7ɅP&k%pr7}oT9MI| {a٤xv9|xFYIv~HOW]w𲵁m>C@@K{(KLܤR-fM˭\ȷk* -8A#rN}E-J̛狇LPU,crurvtoZڡj[:iN7;e8̰MHpߥ~ە? ̬O I12pQ󭖙-lպNqsԢoovzwGuz Gk,wIzr0IJG?.=E>b+B<< -"Ul2Pm:S5ޣm6^QYDyptk|3Z g/`UƯB#UZZE/B0THP(/1ekt"6tHO!aq"6Y}697ok%5#\m|l~+ EO!oU€Nea9,]kbxǙN7ߋS)Wge0]0)pj5H߄d3u}gCML x0҈c$̢`f+g(àljx@v #GtX<.5(_9Xms>*+M3_a[ <8W:Gy!$* ޕydh߆ęٛ_˷d_$ϋz=> rfUϫ_I_-}ϲ <2gPi՞Gu:\Oeu>v$jUy@ہt'(sBځ ?̰#^O:B=X*Ƒh*8C|MV~ ,=HUIvQ'9y47dLzFHޡm Yȕ acfޜbI[B&= *^b% =:aT#{R4L6Ey#WR> 2Pg^0?iQp_f;T݊0݊t?0;"^bat3͆!Abfv(km|Uzx1*Cl8>تyWI9픥v[mФ?dZ< mWt]frig ,Z /hߔY攫Q{kܷKfc7hUpm6 ܑsnT"-9At/vپxh eIRt aكH' HyDWf Uc=By/IO|ݽ;}Ϗ| $'ez7E g̹=mn0Vi#E=iL{iT Czt>4l;m*13%)`QSAuZy6R/Ҹmaɰ#خe &,t̉y~rM.o~+F`/o [A[fXsAPcm!گ ">z~=4u2kb+ڻϨĤ%(kFˎ+։Efb|‚0c^DgM >G.]ͷ$ZZ&R^T@ucy|&*?y5 y#贊0 %~ %v@b茻pֹg!+%T0 |(,o]QrmJl" Θv]>t`wQC< b7x*ЁAz<= v=y֬-$C0ތ2\|.>;2aY3'=Ԝ/%N؄HH (Й|Z_Tvo2Ors2D:)K&wZG>v@9Qj=PejŮo Qyw]}p,cܥ[|O\Afk/HO,8{d6n4 /z57:&"Nv< H$aȀ37]Eb[ێ-J wâie8Þ+Z]EJl2"`B:C-be.)7@h ]K{2kBϤ7sE|.B6lHOYc٧S/jFoKpCmvVsEi  ndy z#x 1vyNWD#;JڀbXayEC/T%=C9C)Z<'I +5S͉V1L!|U^ 㚇1H Py6ӿj$%܏ei,# Ɣ J~%$ .u,946=C2Uk^'S=.XB!2<ܰ{EMb)]ف=(O0eCzr.'79%j%PRAsIL#T1cБ/d 6ggT|N֋me2ۛTXG5XT** )¡$&ҬԨثe*fR[:*{W NpuhvS;&>5)zg>iZz%D"ZjPK['dq?zSB9=F;;1H E/1ppbN:^!kd s%)q?Jgy&L5h/'`XE;TNJEy<⺛lw 䍦{vo:7ix+_a1tm[2&צ8H ?lޤ&55LjM&Q Ń,{44D ijz$-{c%tK,nI0rgZ9!dAD8! fz˖1=DHNy*|-Х8/4cvS&[w @b?'CC= *A|P"GZM7A.*E{t~0oyO.B]ZͥG LpiֿY\P[z6mz70J[OZtg^ʌ4Pʻ>o5@Ni 2yW$$\5c1^p+@t2GPṮQU<'Mv>CtRɰA$Lt[/t- `i_> ֥~@z;G/syeRn_yG9wq-(T8Rp9t^Am" ]J*G[T-9O=;-K7#" Akd7,TL.!lR#-϶_f+^.HRQ ^&N9gvK*h @EQ3&aF6G~0>Hμ#Gl? &ƜzJZG-?UTa# ꮟ&nk}(Ջb-`Ui׆KV.K+DJ2 t6QFĎ@-w4w'Ԡ.NE٨}E`GWS|Xf#ק~'wt>s&m% )":;D;5qDj=`>\**ag,/ B&rƵn(:,TiL%)&}f0u懡D"WI{D#BkP9(5E^-~?/_ZEk˱텚Ep6?\HX<۲8qh;Ќ@׿SYnWL xa3lOum2z+Zc VA`[ 52]sW#GC(Ԁ{(1Lc[ɉ!H }m"WXYXMB!70w༈О'#y^<54wn8"|i6-練GXOעJzP!yz=7f︶G*Ĩx$YT*^ZÑKfޯoV /po.HYjeω/2/Vy#F,T{њtjOU`ă۫/(ʹ;=ƨ<̳SJlh8G >ZMK7y'J ^m_ОyQMdz<5\4pM8vZ-ADRDe"apK;_{DMgďƨ6ZisiUWQN+I38iF ĸRpm62=8M,!-,`[„z_8$?OesAeUU(˰ tr{HKYK8o4r{\|@ܶ(Nx/꽷'y+P鷧"_$:]+~3gq0#=O9HE(FKFOIϓ28 vА0Rþ L3ev)J6S!Nw#*vRBUbg65$a' AW* lj0lZP{˿)"܀d sirͲM~tP.i'єdjxrጱ5ܼ\N93?Vڭ.A[ oM\) {[-#LE=NfڸˈYF- |yMih2}V_iofVab!u~@?_,%)T*=|Pӎꭽ]D*aPzF9ݟㅲ 4͐>rC 3C]&r ƵLOnEgE%/ ݄-p[h-AQ  2Arv:ݼXh6/NC=ҟC UE%&`u){ӷ?xѾS;qQ@n3VD4SpN }ɾVF2&AAqѯ!W u {GD n*}p ξئXu<^Hk`B7]$ʫQMfƖ)JeyTCf P +"gob%7g$T{_] 9 ы[!i!"PD6i0)"[9XK rCR` "bVˏQOO:eJEG^km\)w}E%P^yBz~WSR_#Y@7glBStE]U X2{NƓXtF1dT#-ܻ+6>4;q36FL۩3^Bԩ}2g} (G1Tep"݋}a35줩w_`ذmxcGX| .1D0XN Oq*lTD8`J4{u2NpUfcu"ݙ^&]p4jE'G[#I=Fg뗨שs 7QdϽ.\Lq6NLCai#ݹ*ޞ99 n]<$ʻ2RW{ ,0.WOۜVlN_`+Gj1 x.A{63dt&3|_xF j+@'8o0&HY!/jX,'xwѸtjܔ_%f@,_%_?["V1$+uu3E)b[H9?y$[G1nWHN˕g#O. =)(-@ U#M=|ǧfr )ЗVqw*ܴsѺ5W"]P!4IG؆PvۮD?3o-a]~(O3[Ȣkbޖ/RV]eNmP WIfR'vۃp#!\r{.@z&(_k/dINX'W7X˜o2kȵVJi RXiRphe$ңt!Y'(Dצ >1rQrM&-̌e-`b0=XQBn;d2lM܃'qw 6US"/H{}$f3z;Hb20꿩j&P95g3 0E$5D&46iZ;6DUtsR+%,ӑ'33g[j\SYgkq2ZMZuN4?EkdT5"u*fdIJ~Ԛe.Xsvk}`IZaa4⦞YuLc"'rp?osJ^@R}eduK!?v=R^ɲQN2=ɰS4<η1OR ov.zF@/n}X-9 'ay7ܵyQ!hm&‹䤚l5n]tбסdt혔=A.aMNC{o<-9 F=-pVvwc&F䋸27쎁'>O#n'A;2IG`OV ?8WvICd§-MHb6 H]4PᑐhW(2yorqG<؎Sݽ:=X7񚋃:_eZ8hN#,u4J΍jU/c?v9 s3[A!fb?[9)0+&/Ï#YaqqEIv6ST ]Mra7f94R ٜ\۪f7޺J9 QjCPҖTrz1vb71P=12Up2 [ۦs69L~vbK@/XGTkv0ATNZt!/fO\28p4u؁˒O]u.\/xm\˽X'?ds-_DlQA_I1tvFv3x,_ױ>|þ*^z &Y!ENxd.}߳@"4z5gvƒzNMh0O9\42EF)xߕZENc]q1צR f;@ &Fˀ^9KŅ?H̷IC.vÜ6P 4$~]GgQOv<&mI$jW^,&;[O` +gS 0q,>‡ GXM ͮ K;񪸐ζ4g*ؼSXD<rT8g ӏY8sz{^(R XCvVҧZ_,#!<g0y|anh6$6NZprfY{,XNR錐0ZM>C :I.ļ&:roq>M-ͧSYR>vluSXbbdbkp؀m2$+tzg+EgX@O*/1$/l{hQr%,5nẉj|2BviSvVaPQEK/l`U56#Q{d(tCq^N87Of"̎nA_4IY3z݇.wl̸a0S"s!$ 38Sxb`Y,\у@pi.Q CP)łǍݒ寴BNbrOH$UuUj+%G1Ӯ\"˜nY-=}s광 [ X|no]cf"MF %) ybTH30@w>S39Mٛ5mG0"Ʀ`VHݭ{}j!ӖϦ܁RIYJ /fɛHlU,? 3cgjѷf- cwkX vluHr,?ԜTkmt;Cص9BHII]sNZ}0bD{N 9!G|?sxgn%cއݚqW4-MHziO4 < .>&1%h2d~-8% Pء'˨2`c8u{e~j }ӿ>HGQW61 ICc_B\W)ٛrl1#\I1&4VF  3%Ɠ2ڕVPTgEfaŎJO_32*qk,0Hڳ?- #hI\:.!\r6F*)th'):AOXܑpG?5ļ_0 b۬_XXWQ߱iܶV!ʲ{/AU8C^4.5.4H.kL*(NbK`k_u11 -ӲsOË"р>פDԖ ļ(F?Ε =CUC7_|AǨtԟX_f*e &e& Zd[F)?d}* zpq/,o=f,0zH!+']a]( Zc7BNVݦ{ElŽ3vL\beeP`ry7+ $+ PKuIQr!x4|moP%$M}tZl>/d݊gז]`r2Ih>>,3I8P1<..9E Ջ}zC9^` ]KKVvn.pp{p! $8?(ǩ?]Lk|7&U#O =5g䑐vh79:m.]T^5o%mgܜ>t?)JE#;e,gA`?% }6mVt[+Vc r9F$VVeސ%DGAH22cpW;TW}1 DXypax ZNo9$DDf>zY!fR4͐4yޏ4H YB?fl=6(D~OkR,t+:k ,Q=CAAkD-# PL iݪ4LcV28JCI=emV5rY3k[5'.ԐJҳ&AT.DwЇ)g݇Xux' /zܱ/l{ pа,h0 $A:M}P)0vd6%sZ])Q'ks4؎8J ItÓ6jTہSW^6;I&L*qXHE?׷M2Qx]X)[bHkbQ9pvJC&bdi <<x(ձC1fH|`LCF?S;6(noZn/4EIZ6_]hTeJG8JTw.@'QX*f%Hh5՘dB$̐?D\'als3NJŻ/+0'^`dq:3G/fR[HBsnGie['P^̧>`g*d/vΎ*PẀqn} pή(֭"x[_@ɃM8u=OўLiY%b_䨵KE}B:-QAr͒*EF5}1rm =pB/]ՂT{_z[pNk y 2*OqC䲇,Z|xGch-K0bY<0~_TK,<%T @n;U %Hよq8Y+M+W20L>n_ ڇ$x\\2jHk%Vc<5C&mq/߽s(T2lPM.t FT|_v#f8M%:)O(}ĎTSK%Er9Ծم"@ 'QB=n!!o`D:L>2z}9ʋqsI28ʩCl}lal$Y8pفO]mQRi3YFAq;kGh3t]^Nl %;Ǖe{j=ǓPBO_7T2F T5ঘ6Iga$Ѡv ؖg7_g-˫$P-ЋMνH@\7tRo&AAJ G'[ѽ huXsD(rt\l^Ei0J5 KvE8Yo$;rGDn BdDG)F 髽*8R:%x"Q;;,a7 En;_@9U|ERO[?_Qu+IXz% Gete>$g1g=w}:,LV4nXaQ]4ơu'1'9%L# H-;uz] ]{z?Ixe 0 Ù~ݺ'=Რ;3.mJagFJ$%nլNOipPDxOF Y\`}%Nx^öI@Z\#[k,i`C3څ|():wV5*D١9f#EcJwIl?WY})G.5xAk@@uyeC DCoo"KnE[OStM`(0^5)ѸG (KxGwmE`COzѓw`UϩVN #t(Q Ğ>9tna% G̢{-+rɠ|<nn(n4D$_=KLS?V!wlcGFp?U.Sz_}.,;{LVLkFm˞p#׿\]efzay2x `4Rկyx.$:_=9Tg؝hoΡGJI]: >6 p i;9ώCU29 s|S@.EJS?Q0}]wW.OwӐMUfXpµO l]1w| +JC.:M ,˾RfSsAUPk;R|cȍ0"`g/F#Z=Oqԕ ŷ猌 ɔ@&=4<\dwa P$9A dK,ZÏFGg(^y 9=E\KT7ݦ"| K>n9%7՗C9B=G#_#!t8qs-HhY"cq?'ԛ\]Nk dPӮ_({OC 'ʠ>C&UD&}c ՠS^f#=#k5EC9r F, ^˛GœmcS:ގC-MI` '~u?\f1Sx%wCϧ%-yL/^% G:!;Aê?bEFh9Fe-þLuCD3{5AjE?5@PCB9j(q,Z' 5/P&!u)O/xlY'_%=sG35aoQ=,Jp3_@HHs2Gb;%OvEJݞ$ȥx>IQ,=m;9gIh>\r{viBAXu2H^'f" [3)nF<ܭϝ l~?7?WPrrwj,Bi3Zim%ԡỏ;.3}<9`<~Z:W Јt2aSfhybnЉ{ %Z3~%g9ԑ#`c(a켿@D'a퀟"QL[!1ۧ넫-bOXb*xLY,{e ݥ_f>d(ڨ^w6:iy ]!0B/yIbnF{v\hCbQ9_-qRď)NL F^'Q~uZb}XtRz(n}Y湷Ye#i3LDlx ׁz8p6SMhJbzJy q˦Gg*!dl$ow'wPKc%J],^+xx(>l8N'>>H*bB5,,7{ Ni/мPB kM )mm .pzN>6fe?Kd@^&ܞ kv71t SwfI G# SpCj":zKNo:rNcfb!ثJ֓R+?q@+X ZĻ: Q\>>›Z(Qӷ zc/?qRON4gGQG3TX(tK!{jQKˏNBը~9]," qSB rXF:͌ݶkƃk@&Rjul1yO&P罨&δdJ߰Y[qL2]N:s獭,0$bK Dx2ۧ{߭#u7dp$*zVS3F~^Xqg"\A>g(1r#ܼo%/#6.8VGl9iW$% 3n]*fEE#ۋ&n%gF xY6OmA2Ǽ+瑷qܛ7&`}X7S· Rﹲ'|x&$5yDʼnfas쟀,Lc:B3M*HxS ${NR/9" }AMoRՋ4Yy++ &^t.|IÍ<ٹb tZp\ Q"?xP*._vXBhhmY$ dcl{ e y{>g\~6}g^Ԁ $(@ϥsQ^o2lIZ3 mzVEkY51_eέoA0g /5f+E7dO@K*p05$~ǁQ$We$ #̈́y,D0ت =ح  ލ@Z~lݳvܲ7k@:u:8,H`r u*cLf"3p[}1Ep}i1EKՊJT*T|hn\1\6ot>/#X duanԶ[p{-6*]fF$;DzdI{8ysǁ-!ܨYEP3&[Trwjzk#\H-Z\|d Ek4q^8s@0`λHC*K?M gFanBm"{ rsqR'num~(͏Kqz Q@?8տJ39 TqOVβ2{~Ca1J4Uˍ fl'itG/`rCu"+["cP 2j\: N;]̢c61@0.}gG7?;~_d+7kUȃy:L>CFܖON1)D*,rb$ЦpL v+Dn3-k kCȏxv ћN-s;W&.P5]rH7VcKsϛ>ȟ*7@r"'A#D0&Ӊa [٥\!xfw<;/'}KbafSY*ȸdQx~iH_;H,XØ Z$OQAGSﳵ,2(7~7%DnjwΦX/ K}bN$)Q:CfAHcJ8I%cj "2a1߆ P{v -JV!"6WS7$뺯i*UV3nm*w=wRDbtgjx"Hap)zt%-FS$N#]H'蕪Jj*<#nQl:K8[)SRWuJ#oL|nBb#!5I[&,q _(@*4dW> B SJ%ܢvQߗpmUicS;}{_Bp+jhb MLk1z>1eWyɠkJ@34ӘFejK(RWv1iZ)Ɋ`d*0CR;q#KS綈}ܝزu,C:fp$5b o -x2x.^|Q<5DCգcI{Ywڢ! >ΰ*.j^k P/ W/vxv4W*URY]&@EWt)!wcn/ARDeSɇ"o !=!FfЉӤ~j)űL,T]+[Rj,^w9B cIIG@2yn@TaΰEXZkrr.@{ﲚ4/`<y2Z1H "H] dZ,0v%It>_R$J,]ٰ/OiCpי%> :\ؓ/9x*}JV_YZPul,lLɳo vͅ0 OfhLA+8^þf) 2Ty!rLx}e^ _e9ëHɲOYv=ӗà.\-`W 墲>'tm>pƥ@^7¸wd:#κd|Z2L_;>zX#s\w>ޢ-F$#v玸&/W3c$]άFӟ *:Q\ϫTа֑ Qz#ٕ/U=No`6̷pT  Pg'mk"8I!Wn+ý@c$E&h;x^5!}m9i&hO%<3qkbC:QźUPg-qxTzFp|a,O%5J+uSL&c/GBw[b1o;a՝L}`D0ޗӭݡ~\b1TI2 Ŋ 'Qyd5H[/dNɅ]>ja|Q$.XH:yWG[ҷtD@'6k8I?{ٕ %_VsoEHllNdm'lk;E; l̜̩IEYH)G5|6~6뻠A7sbm.^Ő/\$o%l%`–k.*E3<Aox/X|=(WuS!m"?)RGJAqrZX\9#qҟsW0l&d0)-BG䦏0N)x|x4 #d;sg={D ;`U{v/HStlU (|~:*,bpEKڊ2e;r CۀAd9 YpR1uڹiS5B"SCuH I@dvAhg hU_P9#284vr>K&: ꀽx̟ak>tƺicY+5oaXn)d| &ExH>Du[GOrJC ]F-үz`] 6[ewpoysմ9[v?U[V 8 ˴ "˳tr#N4o*_)Ovm}p]4V(ѫMA>l+cUAReXׯK-vd5$Y.+7sA\&)ע`x i^v$^KrϜ[^Jòmg ߈eP 9g Lqb*c$$ǡ9t̋;\#ܕ&ڎH'9a87sP#k*B/;\1#k}MlP\!ጟK×z1PxLDnU Mz7t0a|;+q1 x-+ޱ}}hh.v,G]* UX:Pwl}?uB Ѵh<\w(A B'sŹ+OgsdKSd~QV=B`YSpWe:RpYڂ9O3t[4izzNXYӀaш&Y5 bkq@~aqH4m:D@ OE{$O(uOMib9ƟnwAj(q䶸T'ZIE8"=MRXR!@N>Jb@mD ܚ[ 0&]<#9?Wɕᛤ p9Pgʼ%j0%8ҧDCM`)T bZ/qu,8ȑ+"2^RMr( :ܽ!|Ü?<>VjO[s>ɘbqsl}R0f"w0y#`9ŧ>IY&:hU5vIOD.3mܸΔx ԐX%An+ pSgU g*^X?p /L^2SAB\*Czx쑰 V"sZVtYd?9Л\C5JB0~J҃n>2F Hno2xQu}_9%Wf"%_UȱZg=ryWpw ^loHx}oGwb`!o&!眮  XWԈOWEjxLu1$$C!Jʢ3 L&kMz' G H̞#[zwԸ:Eo,/A:+;c#I@ةrK|Zs@`YkCjnm Avdԭ@\cr*"QP]r b2vSΕ4'1KȪ.Egfjc 8q츧(ߟmͅ\EcGW#YQrV.pxԺy/{t Bs q)nȠVY(w5ONٸ4i+vP0}|KX bǯPZ0lϯ1KmEoy~~mс%> SDUn!arbs}un6a.Uk%<;g$.Oq~_)p.6r4æ1Dj1 h)ٮ`!8ً).6߁{ă"wg.d`L|p[*em%oW#Uuf>B.ŵ8+0pVdô3cb@L_y~25y-v|* 4vGW83>z'Sڤ6͍΅%+\}F)aj 7ҝcr2Zq0rr(9C*Ht!}"=6R7ω (<Xp^ ʻ D[)a'lGERYRmPHq~A g#T~rXv Frpڤj0`\Cs2jЉ=+=`c?_ROƆ8־e͙\%>,{{9.Tt>)T~&GAL  rX-=|m%$ r@Ȱzbٯj|:3-f ~,*F7pZ[5+W8OgQ0fpѵ`o|b{l8_5kњ,jrk{#y .(yv1?,Sc`kA}HKw/v+W:&%V|.'M""I믜3N9ϔ\&IǹXTJ#+i,BGAtj*T񟷽 pCӶ'M3Ҡ~Մc8.c"<؟$ujFRJnLQsϙ.yud&A_j/ 0X]ft*] ~Z{VU/]T7b8Z->1<$ &6 2hvijSsQVB3)b5}?+ЍܑWzk~oLn |:BM튒)T[|Ƈ;gOUcWmUY O ,ꠚHsy/& lo$E=fi*_֣p+ )wyuЈTFEm &yӵ>Ke=s|N2GtwS043M&MjЍ3B03l׋i'i+ qܢ&ٻ&y$<08v#, j--[u$6CNzD u~Ð۫_IK<+_+C.h1R:Ƞ{&lL5,$m C=OҪE]{A zM=m#c08W[dʅ?Aq < F##3opS;~7D'p)gy83oZN&`Pc 1b*vQsAMz N0 nl?y3Sp6$I*^HtoH$?#s.R$Mu w+" g2i1Jؓ(g_!TJ;Ӵƪzy{v9^*Fͻ;X\arJiI>nLۯWlѴϒm#KjHxb6BF\Pm2R FY"(dx&Y2&;is|Uƶ>jx7C[e>RNt='+? _G1Y^ Um&yJ$dϹBIb"2N}9y_tG b!drA5k=O7y׆Se;tD]RzihnV,J[>B2Jd&`WyM}W`漾bӅ3[(V|@[#bj4Oa3m>6ܓybРMDQ*~ h8σ:ϗGOt^Px@lj;Wwe.a1r^$F6]}X6ˣ+;.uTmF21CCzT7:|&ToN V) hVLŀA+C=cNӀwPs:c Lb2q)ǒ8N+h!Κ;h|xCH1 } y,mNڜGҁpŠ=(4ё{L&$$4PU MԃL`ź4b9u!fCY_dџ&F!Gy31UK}ୄ<pEkK mBRWBF "` y"͉ zćjΨb~+:R{im+F<&'Imļ; .[%|ڹJMܻkt/~Lj0E?Cɐ7E̻CE*./V4  7m# -g\ ~, Aϵ8 )!Mq/>WCP*Owٗer]9T$1:Һ\"Dh4J@:EMtHΰ Bʿ z"J3^rN޲&iw7~`řN7It/LII 7S+<zlj :?y o( ;BHo0\s*,=R-N*x2g1) h#Ht+G rmCn[ N+`iQXES|5/ހM\?;dLjt6NE>`ґ %eiRsdZqYs_i\NޗϪ sn\l@#%_qGH({!rAKVyMQ$7Fƚ7^uγ KfcLɷ?eZfa.|'KovA~{C PDHpp2e[¨V7isu=i^\,߾OI[4d:a+(A۷& (dum,W9Jx,A2_(s(H YK|biQaJ.)Kl d& ݹe|9Ʒ2f[UD˿El di3y0Uo(A-;qz$ &qЏPg}pyUWg39ȩܲ!k1LXs1 0ӱXaDN/~x'TrkiOx2hiFh~J7^͹/D' Ѻh+ו"k;ۊml>)RHeA'.>df$yԎIbY{3HfiUO##oYPDqQ˺ɢGXieU/+g&Z0p& r]=YiFH,0~_L8JK!A'"J V+>N^D^q61pWr]+ 6۲c˗otYdz*xDYZUEFk / ebiR MbEJûr.W\rQ\)M?@~$Yp4HuN~%.uRiEsOF 1{2>d#.Z ;&-O^43>6Ԁr .bX%͟+̛Wn}|d °SP ?QHt#g?d-/?;dTi]ͩ5.a]wMjlO hy$v^$L>>l(a'3QP0GDPAA:7mA8L^Id+vCU/?G$9VQ1/cSC'{[C'kzIendstream endobj 4 0 obj<>endobj 5 0 obj[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600]endobj 6 0 obj<>stream xڤTK6NJ4ȡC!-9twKHw )(!%HKH}Z[r-3={QkJCMP + @ :;6t::i=`g 6 v:Uw `s]M:`'gk(Dޤ Ae P3sp8y99L: ma~N֖V.010HZ8س fl ;;_0`'79on`+ ;@N`5jjgm0ڃ!t90ckk_q:Y`rqqdBb.>gt_fsym C,! vt+Hḡ~g9xy9`G k-O_As_od ~{;'W:vG`KX@` ``ls(n* w$%oVv7?o îowN P_imPb xy ,o.oPмw- Bbiwgv[YkCNv:Xa砖- O6 g3#peCAͭ!Nv<<oo؛{@6A_ :%.N9 m¦ہ,@GW(LKLl<@YyP;;ӝv {lWHkf:bs tsu@3 <@+O+yQ:ہ @/ ;<@Q8'Lu]Bv7 t? vǐ<|@}SAm` twż@_ |G vK`r7tDž(qxw(uw@(c.**>?~8wp57P/Pu?Pgwh280)߹ _Rbmmfk<@_luK^ؽ%M4`tZC@{h}m!>=w'`B! :CNC@{z!dzC@{u}nvXq=;]E!P)%´w{sXv M9`4wF:ށ` Fj v8::sk܋9L!DdnӴ߄vv`{﯅&vPKk33eG ub𽌆)=>g-;Le~{&7WmUw&C 3W{aZd/`j+ [u|`wu󇉔=ϯ/=,\~ 1L 4/X q_38*V {Ss&xL$L$V9 ;W:?L$7`b'[OBJFXc 'Ld~' A! Ca E?} TW|@qjl O?iڿm SS?r LZ]\<yjW4NjI'сI `?tX g(=I5VJcП`Z|`p(\0=h?ikAσ/XOoO>>Sh>am=~:za?u?5CtSa+:nֿMI] ] ] wߝama[šߖwu`ְ/(0lNtZ٦j[/E;߷g>. ;JZilz@T: 8KY&Xig]Wz!:bL luBkUIqqirURDxfh3?QfrEFWhjvc=t\Kbm2|ds͵sAV!ֽīLBpW{S\u&Ѥa.qGUw ʺzQxyKUv^M~xѤLM6K%?^͟Q3U<H8[>12\jT*|mrgqmI)%y! 8,T/I($)gW鐫cQE+:Nt)J Rys~S)u{ǩd= m$ewUIM(pzKQ #DO%BAA j|+e[I|B#*5~cuU"} מ d`(DB'caD0Εt ɏȴE92(jv ce~;`B+/5좦~r0]5Ԍ/Q(CaTn 0sfC$Y*O59Ty0 '|>*mAI:e7%תz_U+2zh[G"醷ȼӱa1U.WH$#>U^לjY*mqi7 ~g (\r>pĀۺ텊ms!Vgl8HV>s'FM2[BHXCРh:5ؕ.7י3=̧?U &tr`+v j/ }n#qn%X"[*br6%m%HhiuBJp]$L9+BI*;]'Ye8Ĵd(R_G'5T{JB .::\aiY!&=nuӾQ  C#\7!;{ـ~R;XMβONj<-etX*Y '8 .NS7YDps`Gk!(Muܕz׵^Y_i/plD8ykqxUSt{?{JbbpW;Gz+T,_-9QQt[FX^C}E'hP^.J2Kz`@=Gߤ5qm(dc7i% =դNӱ"/C=|;4(Ypۗ˪`U4FD1@S$Wwo&H*6+jSw}$ig9}oX +B oNP5 4Xy,.H$;%Gʇ8a#_tJڴ1`,5E<ߺGdFr%8%5 hxԞ:&ݗ}rzD_HgF1:lƏ7N=]%P|DkY5kjLyŗ*5{ ]Zq_ΧgWdnnFfU8.!#>x9Qb{q)&veOC/֚&o~.`L$h2[66$i^dl #(V7 &2DH2Z]jRJy =)KDnFrM*ѓ8"gM&9$k7UwnG,so{(3.oYhzCl|.7^)bKӢ!xCB:>r{KodK1jhKv;ie{:܄%$R#l1\q.){1o_Ǽ+R&SSn@j&*@w瑞/"{4hN2Lb"/W}DR###up?zP0855Wj@:]߁<ν4 7nDH`y86*dB* UK5Y\u|C|h^;Ӟg6zO( y?V(>MҴv! r~0:}5R w=I99<iN[~o8#{y*ڗDHB[ODB;fRԙO}Dld9yf¬X)XR=_hpiC)`4W4<@5rG`Q զ1Tψ 8β{=.妸YNnr,5CBY9"s}&#&c\uAO 8 H7}Q+Nstuq)q"hhz^u:55.] (]1_Tq;[?Qsr{lo8==I[8YOzt͐BG ?/)=r+x} E$/_-a7o&g*H\s { ZoXKE3P:Ii dOiǍ p&XNq+R PYR' hJXG&5/O`:X{wItZ=5Y]Fi/ G4R[Q+ӁhI(ԝߐjJL)&ZUFt_79yk[ bb)1ۨ7Y*s9Rc;L H1'%F*mb޹2EvO0t8ϗBJS;5近,#ݩ^3#{:F"єGҮn,^ vQ%^ca:o éJq@.YO_Z~GT8 "+̞t7tݢhP%.\IPW; RMPL; ʵX=x6.lQ~ R|x unQמdPU LQ%CCjQPJ'Q;*m$?u,v ʌ9qaGG)|,j];V_|'77sz_zPQCq~ָ~Oủ_0:%qt^߄!,YfyAT7 ?D݁uVrM85e1L'3 ?VBg?Q L{,{lZX cAj(2=܃臹V?[%Y HtQW$cr&?/M3gUZOV Y9# {o,ŗ#I9t8aY^o> ˩ W*{Iut& hiۃ Hyn[sh$=E?$k񳡄^϶Dk S |C%ClQ~MK-k1ûfgTXhWX UJ1R^VÉfVld0D&j bZ8^~,”ObͦpcT1qك^X_8'1WÜ4H'ܧD9%ns[0ܟxWh$D8 Z"yl>pj&"r9DɪSw^GW}; =V6eT9[C/\J:sTM!gDJۺ YNn B}kԺ+-_s[G9:nOgٷ?kOHLPOڿd5=["?P>рP3hGjL6HUsl$*]v?4<d҉E'EI1 ե3nHsڙTƅbHL6)D[qiw=1K} K0CvxdO\ܮ|mG9DϸT5o4'W|wh><)?ߺtH&VC4ݶ܌͑+(HJҏf[& z8Njc5O,&Ztg0zE^,Uઓt:LzN-= on04ݒ1ho{ gP'RpVV $P`OyjtDP?cR=)/ #< ne%\"Oe#XqiV|@439[LZϑ"b% 1ͰQ}$E ׭y/ֽuZ'$K<ݟ7άoc]CAf+?)}Wd1[%X%f Ji 5۷I#'D#7?*GUx\s%^{Ҹfuw;l Co.*QJk,K(*z%'A ZTLXASrB4v7#J"Bxc8c_' OFIJþFF67lZ]-S|ا2h8Y 2p‚isG!#)4ɾ[Vn?!ꝍ7B)훚δƣ* \o֣v V y|o[( %=zE|#rw]8$F! ĥ:6b0my? dyW)ޫ^^'/cL7-~RôJ4G/p@wMԶ>8jhfu,YLBO|;^M!7@*VRN#a R+nKtXĐ^LehNԜj|RLyȖl*ɐHjcǵ+\nآS`;TJP\*|O#|KHmqVvȅu+V_"teT*kI>.xǼt,A  UGzXRy/5;1^BڌL4\s`<=^b\-9]*3#1iP61۫ٔpܹu! tUlp:hC75&q p0aThy5IqAfsm7M=}Z6`ضtCE%b,LUAR?泏Yy]_,ANkM2(*jF"y")^X~ &O^gIOO6uW&ߦ( q-&O s7E|rOwddʂiQyWH,#:jO!dvZt߫G4^3K>> vGݤIҩYO~Ζr|1}*0v فi1Q"5_se--y,X EF '8S*E\rI„5_J+̣}%ۢic#NrZͥrD'¸ @,]%C5l\,~/+P&ժPY ?MGk^36IOCM\<!\X x&MZ4%yl0đ`S_WbN^jKYOTM1/e32=؄ey83̫!VzϭzwiyGG`vmօ%AP\'HɃ?cj pɚj O@TYMG.]ATNJ¼Ԓ 2gdWpVEx6Z;xǤڃW#}EnR30T=\6٨lL_DOTs'+^#H.qH=)yINg49vd tSl̀y'ּ5'M_ Ǝ iL9pr3?ؒzp5מƢ>tig5FEM (oFpi`&k|P8S^?}5h%guG2EC8\\ p({%CCgP  s՚\w ʎd"ŭ;OF$,!o\:)s?)oӔhh-p].++.?C BH:V#K\>LZO%|,YaN0W]E#ԉwB 7 xF/vi$ K5J7y?“qˤ@5B6SkE'dgv9!2BoBxЌ*ȖD6-6{CI%ds_t<T hBՊ:A }Mre7>VrCZ_OO5p/ @:V9+-ot]q% U.SVֈBcбyAIFu>O áG4:aj ߯+=8‹vUyc[L_dsY3e rPc"n:gS,+hi^O>&f(L^V-tYy.[i@^d eS P 'Ƃ}";+[|C3xlFS sH/[^ץ+iD܋K_rvx4)q5ڭbzx"<}zTO_nS;=/UE\d%;K;z(iYaDF)ոPYvՋVVi–Sl|{7$5`dTŲOw{bOQҝ$fVIb8mQLOAV< CPxpw2ٰ$rg )q{53| $VsmLI컼9Ȧ<|5Y,}ytD&B'ֿC-Z%T]n~z," 2>AH6A|K7UF?|~G|8ewhx21(`#$os/]k zt)-e`(bE#e_]S`Ғחm)/i[ʾ?WuhV؏vaѺi?bEy'\aރ1sF&7| ؔ&g҅8MzF-lnEbˉ7u3WAǼa/7. L =4peďvýh4g'Ql70.j#6Dž4 Z<{承Q$UoJᗋ)X1'=~*=9\jXԽq2I$Ѥ< $8?֍Z`|YEw-!lx-05,)a yp"~PqXI7d4~Uz|;o> 4=a~QuȱB\<%wHx]ygmE$(FUtē.ӏ jﻛ/YHWqp?vf]~%^V(htU#aHKV7 =uA!hm) C G$>fI9ƫĒLw~"8_($''W] :5_m X"c `9 }wnA7,i>—jBrup>N ~3ܖj@U`J]ºIrnFR4fIwb֎Nn߸.[v[qlSwĩ\Z\|ed$PUk JՕ輾Fͣ4cu]E;#fjGEsRdJŒy#;!b6vD]}fz!z c^xj]:T"z.afFSW#dr ҟTB;>'m[;B)L-kE-*9[vu=5! {o15)nhPٛoLKOJAypvi%x5̽؞姴qꃦ>X}Ov]wdwq[Abl|4W[ƣ8]}hd܀xNΏGlV>5I+8\LaZIy̻ҙ@!i4Ҟ~!_XoqBBZpH)VU "30s~RBɴ\$;~{I؏4AG93 g ͬo}jTz_-M(Y9qdEGWT" ]`eQf/ˏО#xa%.6T<8 ~^.Ѩ|..uz,@ .Au!zٳcxI2_6cKsدy&deV %fL4 /š>HU& ?| *bK@n}º>Uۨd澷Y{q_pkejR q>!0ȇqHc;mt# "U`9F}=9!}EB&\У @3`[bczXVHc畮~jeΎ!TɶqL }D}UC*ZUNBjK~4aJ,*ޖc!xuIeL.vĕ؍MRGsơ2'u-PBӚh4ȼpR0ĿǸvME8i^DSu%jFm $?(w>Xstc b.{:(uDYW*OAn$ymC=cxLpЀx3bZW0?|΄,veZV:1!ZtäH^nYx`Ozpčv=ͭ";O*xFcfQ\[uݹix4U?hHX\g/ '^4ɕ=7$̒XÞKȇ#PԾh.*T~<H7oarvP_6tتK[F` bX zp!{—pE':U4 (ɠP9((z]Ua$y9H~ފZ&9E=åOEVjꉥ\jzonLP9yZ)\5Q{@ϊ)ÝaH@/z}CƁ ˴FAiѺrLf 哗o̫ڨp> D6[TKSTqLr-Nˉ8,xl(qiFҿ7ű:._ Ww—so((?\_i2ܶP,kJLxҳ x2R77D@u3UdƙB gٶHz Oa#zc>JK/i $ Hx$;x wv45H]ԮT}>ʵW!% hf@n 瓙P!Ni&JިHo(w 0EClW#%Usn|1p6cĒW{ YSMyD۟OJ(SL0rpx2*f6Ir!rn7ڳN2rIVDž 촓>\A؅A+]2{̥[,@>6'uYzYMVRYԌ΍%\qm]ʭ n :n.[!;oshHҹ !iᵇeB%B E}̷;1i*+d E> \_koZ3 C C^P77cף[ eh%yOǔGx~Sf`8d.lH 5Ir,oA'9`Y!=UQğE*?sk!=-.UD Rqʄ/O¾<i !'b ށ*k&.lz1_1hw(?z!'|YR EZ.j ACh"ȯ;U .ܑns]!\H׶+)p!K 9pc|pH҃7 Oj7 .hBo߭YYysN禎Tzb8 y90,+(pTG7LWK& HOi*pljxX gN*Yn-0/]K뇿S4ga׌P;(0gaݿ ;j4l@8A "ЯJbM?M׻P.#Ε³+0 8[Ș‚ IW6@Կ3]j_ĕeª}}8Aۏ(m΃\DYUJ Y>-aM^9m]pi3в : Or9>N,%UN%p/hMT\Gyfr惵O݆[Vj+umzlx2臓[sj761=m~d+ mü|c . ?f]# '|0\JXQ]9u/\.q&%^\Tq5ɻ. c측DېmPvBeq|bqt} Ƕͨ+pjӤ 1ԣj 9nUUj<* ,ͬ^d/U: %C MMe&p;Smm!,#o [ਗ?G7;io!rA\Q]:+gD &.Rx,x;ѹOd@fbtօ`!wNk5f& q)U[`Zy1ʷ ꍜ5/i#Ęa|(~WHeiB>LNP8T7۹'>  ]stV]^ _%4UE=k'(} V!HP-K`Ea?="; $x jx:B3Ӛ+uhiQZW=ùQDԪL=9̍̕L= =eK)@?x Uo K L/ b,~SUAj +=箩%1oLpOx=F..B>M:Rn`[.BgolZ:zN^8SIwVc4=t) `CiL6J<ZD͙5<4EzEP"aO:!|f*bTO*|nw/WlQ+}]΍WpacV䰶TD7A~_c"N^Dt>Q3ݱ ih*+aY[ ;mn#e Xӫƛk%ِ Bz^# B2+B -wF4ۚיQB)M$^1ȭ.Ro1K0d2UP iW1 25!Gd< TQdڡMS}x򸈶44oASyx?>[{1_A3Dάy"~ -!zװ̰鮅*/|ʬ2O<0wsҚ)khZORFWp=r(Ă< u%^|_^XEmW NK1f/ƍ }27X jߐ0k؇cb;N+P17u|.6bt_"[FB*} nSf GL7{ 8=- v0Xv_DB#V@wSeQmIVcn%t&"gF/T`-%-5pJo\*5<EjШ6| S74#dc} @v0z3R(h u=L/te^Q?ex =K #/DV{c)zhSC{&>'h;H94&PPoUPXtеҞˍqHZ{JSN;' jVYƿ!>Y\tB}zŪ{/X\_" *  ~hn܏gd$^(qa&b, W|K`o>,ѩ9 Afe}XAwW.6hgxP2̚cpjp0p,+uVc37T&vQ!:M:dE#Z`X^yZԙ;d1"1 C$MxjʡLA AŅ,o6#~L,?ΊHKg .S'K*0T㥛1tׅfd)ݫ+`YEهk`|dtSD}뗗]c] h3 sZwEכ6Y Pn|{TBM&+}t 4g G.)X͏CqWw0ъ9$jLPC'̈ƍN̫Me$gڮFyg3Dc]q%{+}D䏜JA 0[ñni֩<cHFXA؋Da:3*|AKCϭa.hk4f7 9fKIk G4RzZydVqeY@|& 3₅&uKL1+[S}3 ؋Bk3clԿ-R[8rwuT'E/v$-m>5y fHr#$ ՇvIG3KywI组_MKHhQ~Icu.€G++6^fiPm8'ECB !F H;sV@:~Z,$O,΅M4!ꛕmbO` RBHRF j0 $ñE)@!M(m:.1D(ufXo[Ky8#a0ky kXbҌBÍ̐b3 3sIڝv5 5 э-ɢ5D?^-E2@:\;W:p+*&M\ YV<&`}7`uߌH`Ȓ9O N1 Ǥ׿R'!2Kkz֛BqoO].vzYTU"uS%4%ں2ʜԯ aXL{ᠼ sd?AM2  mX}N V~}L.ͰxY;+XZ>@)DU\̱ e ˂y8ހ [;Cz[%C*-LZ>BI|Y4$|?2QŚsur?;*[$9τrS%Pr3nȮުr5*:q+1y 7$Qk25{yuYwDW@-1|ÍVtb [ xs*cX谬%^! ^-)AP'iglѪPR<#=#^gȲyox 19-Y_7u„-veS VMsa=#d-5nvH`X ~@Da@K4=By5S5pǐ[h.GɆ˼`ZJGYŏÂţZ,Wն[ -H:T尽")ĦFֳ0},.zj/^!oz@9M]1q99~7H2DSNx%J鷑C5U48l+-?u󏛏9{/kk"o#q ;B0neOƬ3Vخ_nb1Jw,U﹇$>fr )z||&ǯmokm?zX_c 'kUiTXApjUKwJ3k~벯/#dWalZK߃xJIV76cF惚t:,D76ITUiq! &z X)k;(J}[%FC'$1x,پL ɚDD]޴ 5]h;c ˶Q@lO@@ms/i^}Q4cEwkU;*x|HKQVkLR17V6XqU1=kE(?\G4V_$QvN<_#o1.+G3g]Nt15tmZnN|#x*kWd G}"%K:pH &rPjAÁ'ůq^P$չ5{ZlMtz3@(ml-0h Evc"sa7KVC0iA߳qmEɳù.9҅wiR0%ׄ%"ך.-Ru NHo -"|J,{GUvCq#Z[:K~+)2FU,L_LSb9[ilO# tXi0[ɂ({ ,wʷܹF>GZtkFWVW!8|qzo;UnpY[\YZӀ5pt DDLv46ӈڀ6D^[,%B8vm0tCK@6'ܷ ENb\эoas g,GGn@S;!<:b/"! %~+5KJߒ,ӌV&DWy̢٦rk屗JRat&9̎%@1V\chV!JôSy}Z'4nTap,_lXi׮rrT+m&S6c)#wB.2 쏛(5qY _m9P+)f3-/q3|MKɊ ؍ xqJ|*mnWma+ﺃ_ &.:^OM.+EU+xPkaZ DH۳JNR@ZBRU~TsH;AcǁmʋmFf^&b9\#Ӗso!YE\>hw=iJ{4pq}^:F1gF\a. poy65okV6ecnEmȩk3Q/7eT̀ 8eh_0?$?I܍‚I@ DYj+;h\|\~ﲋlMF.TLmT;|kƑW/ #9SQy/;ς?]x4\zɌ/$K4'`8*vW.!DzYk,=,7BU^IGK}3*s`A&`ǂӧ%2: i#H?sI0Q_ޟ6Ưp5Q9i٠A1 `QYQٿ woK(A~ 6J[#5 #z pNDwa/ UG 4xWhۑRq XSpUV9C$Əuk3H,Evn/NS0~*9,(g+ux-{][Sі,L{At/IF[+bz؁'m7^A _cwFxb_$%NWs/Rfצ:MtH.GSsL<ߺ\ LعrrKK~UvD򮷿@y&M4lx[8s#v Zs踷QC7P]XOZ{ x? d/zU|zAܕ)\wֽCZFr z/Wi(?ь*$/3~RVuPR7 e؟vQ1.3O9!q-"jR>ٞrVjOS6//řrio]'|ʕ果+DD-=~ѥ5MM =~0 e[zins7 3=gM|-/t( I|Й5 hF̽{zEe=pJQo-![FV5a!f wPߵ7-JCUyϨtw-c\h& DxEs_Wv5µk( Mgcǂ &EmYyA t-̖<^w횎΋Gch@*Bk?Y?1|A=-fLvc/f*;4u%;X/E~i Qfg"0VL(ɋ0D/ iF aO9_ڿܸ'Nex3L¯'F ׏-.ilS ՚΍|)>!I?O$,D!ҸzǡІ I5 ߿~yIPѸLPJ!U%u6كUTPJ55J.;)軦۾J"IKDǯcLIR$@_j7>c$lhVŰ P7u{ p\.㙻[ N_D~ 7ؐ"\ 7sEIU7aHgc h]J}bpa>$^zG0i:$v{r˷"]6jf-_>\jSk}-˒\ ,D ImdV0EanG#^d/XBI&%f.cs2n#$F>{^QBeBc+(|(ȗy$׷iߠc\BM>NVkdb|;zf iAfujd L9dnF6HӞ5ɍnj6ݞʒyBQ(U&4@~T措[+!~Ã<-z: ROLI= a Do[=N9kK:xUDxc܉LQtHIkVNSoڪYȦl(-2W0I~ 8nǃK=!"$lF+,$j˹vsjXm-k~-/)z5:q hZʑsTaLz 0ϵXcpJʂu5lH7SqE2_cQ!gyQ_rٮ& $JnJ6 Q]JWBo 퓭6A.|n~,O.TpQQsJjfK1(B9NVF"LY Ր'>LQ0PHhiGƞ5_,gEdR:_3pVj8,IaG_ԎP# }PRè(ftw7g$ xi+>>wh+8\8I@JWPT~7I/-)= c6d5M`ɡ[I% Fv0Bfm]w]t>[f~/ k4t:toGtiO$#լ,Jտ~,b)nG 4 Yq(g <7>>LœDڟHeۼP1_%ܞ.[,8s(Y8]} lH?̠EfOto:F{ C+P(q S? R¡0:/7wxmokBUf-_+H]Z֫*F|U#גF4WhGD_=7z$ofЦcN*Stkҡ:~h-iA=i&7"oek2;UtPC9>o?]&ˁQwu`*ė h%UcMSW tl|剖KoW}*GBQ%i%>{D15hp>3nTg<:>D,mJ9eOիӖX_*A'h;tr:#xhC#{؊& gmC,5.gMm!D(gN\X C>Ԧݴj#K6: F{#vh ?ߤ7:Vj 4#{ji!ϋ8bb Û̂U?AXRYIO,8 ZU)n/oKfJ.;=M<+W `.О[a6KξP`7zg;ך%i?'HJ>kOR L/w0SphI 6W~[m&Ek3O0*&ؐ b20{1 x(=@UaК00LsYUWA~Jj`2Q"KҒw[a"1~JI3הbع\0 d/|@y~/GǖwSC*&m^~-ש3YS\-M0)\9(=#5$`xQ祚cuu~o{bu"\T?> . opUe3ᕖ|1FC?"U:}F }r+F@P3O4QX*$t: s0=yvBeuH 2'EE& :z4!9 0 :|x $EW%pz'uA3 ylG#ȞT֍.- c}AxcY=# 4k2|ؗWYh U~y,֤o_r4`{lFܒ"l,豄٧ %p6΅rDם̄ ǣwͧa0/VXꃶylP8Vqn{ He=v]69'ƶg[>12P &7>Lt-9W 3n`-_*x#ҡrka=`|tR-6zPɘK}~O`Btdu+~Ur# ^g߾+BQa2 asj2LYH *xA~e.F`PךGl҈yNng$[Ox9I60!e]C Ylۃ~Ħ، N F)fx++=G 9orx-_\Z*J +4HV$ ʅ4$xY0b ]]&!ohn(wo=2%p}w_6^c"OaD1`QJ\+ڥ-L:?n핕:Հԙ'<ŠOQJƛ~< M)Q(c%bΜ֓2I 74 ȸÀr.2ŖDۏ\C%棒(F}dTHUjAg,]x[ s(G8+b5CeJM% iJ+!+hF/>Sh#4$ّ;y@ RGY5wdwƏ,3! 2QD^+ڥ- d6c 3j(Ũ 5SM3wr-6>`0ۧ L6ӢPϮ/ Og iu͠|j0{4¥SC{*&݃Nmh IZSb Uk+],p'V|UYaÜZ+3-EQ!+X-lSez4usȨ3y2ٳ_[.xTЙ#˝5tb'ڥ k 9fWXMBOEx%!WSn ew*$/ZuUyxJ2VE[l͸e.*E}, Pd)K }X+j[]_Vp,uP%Ó04Ѽ\H4Ƌ1e`TՐ:&,T#4%SE߲f:2*0-3z2!k1uY4䛝%ȗҜO(u}5 0a-L2^-'%0l5h7csa6ۙƆe.=vDa"sBLQ6ʥťH u@-\T;q.Il&G6#G~, mrH=(Mj ?H3Gatcgt.qrteXt~!3g(Uqel9aG;?tO 7c~\ت'X, qgc1|&qeȑgQNml鋞W{R蠭OJBKp|F,Y_EMцN0]'CA7x[Wy >ƆMcz]8`I31_ێ F95Аُ{qoQ /3#)n(J!gʷ]Ж~NOlou66{:#Է.gCH9h!ObC8װvΘҢ3'QH ǝi$ rd%UqS|ɎÕףd[31}]wl@9ԅ'`ݴxяuumĦj4xWxW ;'o n~6Gnrxw~o8De܎0ϷRcЧO!H9e7WsJqVHb~LSkw3s#w/n^1g>|E0 >qGeen~+^KVqkMg-=BE ;bZ5' <7>Nu_~twRIYqJגlI)Sf<}Acq9X8TfhMA2)n0.B*fu5 .hYs3r W{gǗ CI[,\,; |&IG>k]" lh}F1FGy.oi~aLuVxt|Ed Bnp=/h3hpG.U=5o{|c )SmVg{"o7^<К9vNZ R1@Nk@D[;?5x`T2~zkX s)oC<Б`s ,Eu U9pėg .V*9/, :d(;6e.MhE:7>\ɭpz 2*6R;EWzx<>F҂%y\BoQc{ԇ(nȴ"x[س* RO,5qE/g!wM.L(cJWIyi % }FC-PDg`M2acq<#;_i{5vv18l`@|BjNy$ۜ)L[LniD`F^Iu2wQrc=PR>(۬r҇9>q1ە! G Mǡ{+ugy0!eϴzjJTfuz܅g؜7A&NeT)-5ndSw 1Ja~}բvos~aA{tJs;h KE4^ Y5 MuȮF-/9p$u v{Ժkv=w^vs(Ep>O柣CgtWx6{ $BlCw`Q<&I `1=ɃfH;c׫$ ԈO!j\07_\mȹLM4gWFAvPMqVX@e;:DiF;W" 6\bB@6Cify80&2 "K4uՀX/3#Õqf;"ɍ%` ao2?|C*-*{355ʻp#Ջt\oͲ,{&rQŰwMCaVagSZ;NٗBMxW#AҺBe"~(xXXU(.zp~y)_V^ XxyJ 41[q2,햶I{[_\:F(3})ڎ>YpXo!}SYu?6*mc7W& Za1P?lnN l/LDp]ݬlK_،"RdqҠQtْk&vQjHk@׎\-O4GLdۨYM[4P \4X{%|=ItdFT;s d2G t9r,p^K'Mb7wOk}JB66eE_.mt(33$i.Xѣueﺴ8=IٵdK ^Hr-T웱} . ?G={ؽa2]Ol$w r8jR}#b6[A=wIH?0 ~rA.ztY{jjV@n Onwo+tC|1!vΧn`> j!y- Ÿ>lS/J%bF跌|bțnd/{+NX2?+ wG8S]g iHZ R1>` .eiu#_DmB|K{@9{}wwaVuY 9VDәlASC_Z5p?qZժ:Pl11[;rhG )ntSr<+g d)~v~:J ~9tGMJ" izՉT5=fx#~ |-K++?Y!Șe$-hr &Hxawt07tO4z5'zZSFZr*m*U^\]\ 2|0D5Was*ԳQl2[Ct).%[֩^T\E-A r6.1U(lzuB:se3¾f!/50qNB7"*6{f|FG|0YeTH^GAɛ@ ~o)$-g(pds0(Q1%Dk ʈ>8j:98=bcMhj;ś)<Hi ̬pxl ych׸l):汴O̚+t{3=_J]24aQv]8eG@+BӡA UTxۘe'@a>{L\:^_a{I\9*槸zyC]96#y! Ë ̮$ 5z ˰|P7n-ǜ]:-Ldq [ aՒOqp*pԬ| >vlA`Y.tWz{A1Tޢ)(/|S0Lr7%(]%V-avWTvnYd2Ɲ|\B˧ Kc Od={0 1b4ݶ:PWlK+2ry7݃'ZQdu}\DV#sRJսߜt!9i(FAڎy't캽a-܁@_ ‘x~m{7_S1 :xMd̶-R Y4:>+T5;9\A"4m(.8ٹ)?^uX<:@Pr^l[p56,y`"(&|\%.NM05;G^& ]8[$q @ڬ.[҅:Pd>Oxg^M6_~`:lBBZBw48]kS9`>N2K锬1M~`a?}_Co?Y̮˺YaS0zga/.U= }@i2~wIUe {I5 g3U2(uXM_0ý}M+\ dqK6@Ưզm}]4~kS^у0p8F=.xg!ף@#簦 R]g\iN<]em-n?#Sgl9gKbHV3HDa4z$5mMv {i:h@J!h]`OEUvulCQGc?,[2訊o8!+)%ęqD]蕖?' , "DLJs%JRS԰B%)TXdSe6"wQȵ5KMRTM4#b2겉 Z6?sawK-c66=pt%Z}O۸g1ٖ64 W_hn)Aj$QTC]%9#-Ʋ=h>|4%5]<#Q LY{'jpJ~کKC:ͧZnoq<=z !W( MaG-Vu@0I]s:)c z[em-Pnxmz|ģ #frW@㚺nw kX:? X+}ö;Pb#']-XyWS7^vV;Hl+8?weG_aJڭ/KzA @9apL)G G@NYFW~Fʙovb3rmnR ?cJȘgj"0)vBPO:G#1(8MiFƓ `U2p-syg4U{a_Yez'4p7 n`02cZKg yPtBw8fQ,w<Z _N[V9 &&nU +E|mJ?dZoe iL$6j]N 7)Cur9m f9!X:gqҢM3FLK J;sTHFˠn:F@iŇ)Ld$˫dlsQ|aR]-\Rd$WjAN;26_J\6F:+~3;/1]omB=M 40O:e9jzsK.F=4BlX!ʚjpS N.* n}+WO="LVse>`A}ȼ)5)LC;cʴ&,;MG(5$hKjWj_z,| R(tC|ay!,}%;XˢiWĜPԂ|҃9 ϴGJ"]qy o[@g@Q {U- pX QwP):!zʝpL ,9xM Ru oɹDo7rESeq3IЕ #Q09^vFj7#5o^Ξ/z_Zɒyg g?WppSq/Y'" 5Ʈ>_Ž/9_$ZmnA:߭i< FT[Q5Ŝ>[kU?ڷY_B(,%ƃ-#zU wjyam M*&T1j!} 9tU7~>Kp}HT=hRϕ։D^KJ!k3TdPƳ:ټCW/.8TY0P"n:F,JzAb8N]S@",L\ ?W8fȼBӣ<(.~oZs8~)oϋL$/oe-p gFYtmdθމjm}x' /E_3!,|^PK>G'o?7Hk-}Uc_gQ+IB̏p Vk{DPr H/4 i-+GW48r^?:b4X!Xtb;#DNվ|&_Le@G r1eEe$'2yL|&kμB^3'5UxRNCojkyD\n= -qE-)3 7'+R5 =@jp"+.SPB,`K ͝v 되HgaU=y Oj5YD(RΏP҈:]lak8lTXy`Tŀ9ލlƌirS5NrJ'~P*fUe {>c&TNdU.3?ef )lk0 /h|S$- UQS<|ri&\k_\? e(>F-9o+1J,6齣-d+,x`ƲG9]`fEQxd}8'?ՔspƯXBȍT{:NT"i?{9Gm$3"E @1 ;؊%`&U}a5^\_F[ s1Dqb jq7$>hȼ4աjAX'-k^ q! {;ANA[j,!xd kjiWƘ͆ڷtLX;MKĦ+Wރ]WK+-?z!7/ɷXtkN5sdz/>/{{y~|EZ˷/('+aeA\P^.%_f3Ȋ+=2 C<{~ht!^WzuJm :5'B^KkCroe-M(WHבD) 6ČoY܏1*Dƃ(Ɗ4;p:'aF7>i3!x`hyޠEYo_ψ_orX  Nz ,hNW:srC˴J$tEFT`Uֻ](TdZAvʡYɅˏTE/bucMc 91jj6cAl.4+ĢKRtp7G`@kIWDU,e zI4_/<'M]^Z%c2ՑD/;Ae[)7+1zV+<pI hqB&OdV*t };Hѻ:leuD_.B&hb8(b .Y %M1DZ'bᩞ JF+'Z5=zr@a2׀?M 96\gʺ=,PvF% &`vE܋ˁ^E $qt뜬tޏ:T]9͟*NN.V`ˆ@9+drJvIqvp[ aP.#?eFdʡ輦.? K"*~÷P[.(`h>9%z0;.B8n`Y4TnPɗ"[y߉x7?$WEo`BL@b5p`(*ZTLg@`mRQ=pOqv'aG$CݶrțLM%gDzlQ4'e(E]% EaxUhz>[Y#hsM\EqH:KiG7Pzߜlͧv0̒ik&(F*|?љJ>i^dk;ek }S 󰚽,~*\V4?A)zk_B Ga+wH\lP 2502[YQ{*Zw木tV}< ģ;͏`KuW2vi[cCwo5DUU]0bo( Q.:*STO԰&04RW+|HN*͎(t iHKHuU[bS?i2o@wQ>,w-vþ6 Idٲ܎m h9YQ_gp &%5g荢l 쎩wu$g g[«B ;Sx2|Xz_r rdEUƝJF.ʋJf؀6=>yKF Xou-:L5)àRաB A#›:o;,p&2eImYG;4S s&Btay!U= {9sqs RjD[U`ӬDv+z- D\uw8+}Q_E ]Ԡ!"&fMA0M4q%MyM}ZH.I`<[ O#pR ʃZ從fkcd-(a^~)KL)!CÅ&!b='ְâa OWLRRbָ* : `.p6Q۰Ǒ1vPxS&L2X83ϰ조<*/F)0:%bbTrL:H.e7LU1:\3;PՌ]m$*QzeO Ee$,!#]od'MbqƟJ\RX+hrLt-ǏϦ5r=ǞנkvC '-=,(҄Hh >L/EOoW qkJl7 T=#O+K*"uke#8sb-\MtգI#|uWb3lBmKC!Aܾ2t: /K< >cY܆4)n !I4zTE@C*xal=/j& h}Ӱc @]'ґ}OIKOɡzwl^aT@1xA MX?@1gwD v"BWLt +`8؝: :h*7tEy̭#2Vn6T^r!"B }{t)|Kk*ax܍AaDH4N\f`]>U݈URAh͸*Pnt͊2/-o[^ަ0却~5Rz }5d>b1vNL%u8Q$Z='~SwJ Kr%nONE)Z/͘Ow$e'5o.:gȣG֛7+ڶ4/"7tt}a,Xj/᭕_o`6'eb8oع| |{Aݵ˔Pfv}佲HBki~f7eôg}qz`IoT=cxp~.(n}H,Dq=cCZXIBtWJb1e*|WB^U)b]ԇ5L suV6e0AZ)Hbkvb-᜴|Ki'E!p0x|2[`vŪoʀs|{QT9k8y:u~o, n) aѱLj@;~j8q ?n9nȕ.jxXeTtnxeY!]tCe?dgrZ9SF7ʝS(2#g'hHҽ>[ȍӲBE7Vg (+;s3k/h]?7o2͢p`"o )ҹwx*fvXDN6E3F}6?')?n8j,_*S_D'Rva#) ɟsЗ_,tWfiL^oML)>5\@4eTqWODLBfp9 YwrB=_<[-A2IyL55[@#dp'#:V0ii ^Gi>7h':| $K}t-3W0$as !FlJnJ׎KV/J`]U, ;ؠo"PU"xaH1N5^'<ƜTDBYٖnlyj t\=6!t&EeE}^#]RMm#Ml6]|8*SMzi3fAd6wB 8½tݜfʷ~3k=]x!p^Kvq)ncǂAv ڨ} z!+w%~= I?~bzsCbFUzSccNH3UN3EBN )1O$% (8N@iW*ޖY6"+kǁ TcqgvVu*YQAdSZۀg:OmK&E}^r19vc Cyol=;I_}R a6&TSYt@GL*G,MZ20DGfB;fσ4?ҮFB hd'q*T{A|a{ej+mGyb )BJE@LBeKIoGӿQε7TD~IxjqVlHR{#<߷H_]~kqS jkgHM\df2 | U?>L.8*`pф)672JskR-O%~9\OŸO+R׫_ =j=a"a˭E>,R :F9w5u41t-|B [Twmig/Nd?s?0!o\^;S*AgrޭPg6{<e)j'B0,mY pbx'~՚"5D"7bfܖ}Sf2,t!sC n%& FsYKY+gl]. |ww fzףp% F0~zFt Bh!^V1 `|G<@Z3-kdѼok-Kʇ76LHvB^B|/*X2b6Gt#fq0xMH]+BO(jiwؿ puUdY?1xX̄S1k fFJ+3Aѯ =T}I΅?5E /oi- Sj'^g&tkiA ?gvO-ۖkhUMqrcԟD?njMɻ*TqUԛSW`%ACc)@*d,RAl7oAC5<)vA^ [~W R"I-LG^|JB'ѥO>qh_%{=7aڔ2+UU[}Ȓ8y3>\F!Q8}WF:5=EfEro~՘][{{٤@Ps%ѺlNwsc;y5fQz۫g#QD|iprʹ@h]1{ l K)ԇ+kH@OςlS;4R}*/#vu^L^ :>93)ch3U} L3A[˺Obs+qj-7)Kk#Ct_|v@*_YEĆ)c-ȇqh#`*ݙ8K 0~wuܚ+xҁ|sH5@;î-"זN`qqW@d}kI|uǾ,XAem^[sHm{ &-L9RD>:/)!L@e^S vaMjxF>!0G&TJ\GW ISbzz])ҩQōThrY#1 +l^sYg|I%*n5⻣Sˈz B6r Bd!tuv°TPuӝZ͹XY:l[&/^{/5~s2A&I< 3Tv#d\R@|5nXqNHyܒײ*XQ| gl=662;+a_cLwdyl-F5 )2{kd2Qԋܓx[^g ]՚ @`=-ǟHOz :S=W{g!:P6}eDk?a"z\/B:D0p>ꙸaĨ =|s]OU0-q9Il檼#״og|g39 Ϩ&0Iyw'Lz4ɳXY=#7dF-B7g=}g蠡ZȏSD+(XmWc'* pH XWq8rS^ɍqLQMtMdJ {qf.m1.j1Z*(r!l)Gy22/WӰ>jz+GbU-\EgdJ] ξًXDW7{pejJhB+'Bb e[x P{:2&I7 t[yJTa/aϋԟ3iމp@unP&M AfUMW%ꁣ)16]7A/n<+Y"j?QڵP6Wr"=uMasXl<-ΩtiyH $~YrvE_ֽ֯{e a*o+r-7率A` /- 2&ei~ 9,-٪m{48)ZDi϶[)w7V~J%aCAK 2%. N>*c9|"fw$3^|SdhJc-4~/w@G5S+FQ4}6zMU:#dCe¸GF !Tz +(`釥"MΡƾi$`D1<B- ީ!Mh^aOd ØA[%N.s Yx}*GOlJN⦽tFJQ`t] Fts7~n6XyV%Zկ~Yb@:q4kH*5/r5&QY /<sĆ]uǾ`B28kđc W0JSuJ.ԩ_AF57/[Rjs^ /ZIɚ8υXaE(mϬy+<"(I qnQ.g-@Ig.y1n m;z s6EB?rʛKI\C-Xr!ڬ5!97s5[?.8'ޜ O:w&G-q 2/5.vic1&{N_nj:+붭Sa,# K@kkj|OpJjx`MZ4 'lԵQvI:߃oo(x]ݙ.ш:[Rnzp-8n.H'jD dhwQqx;܉MYYə3NKVdőձy~{!#% 4{-Tm1{R]6pr$D/!VYÒXLIӎ 7EO"K(])t~Mnk֜%.&ƾ&s "y6@N6*>4Q=r$MqkzC8HV~Dњ'(̘vdʈ&g=F; |-us*(/Y]sI|{#ܘyo_ԥ;o&e Π+ Hw?w/b$9$+VSscmϭ9,u-{Z+olsæڝR|N*Ѧ}}4!S=_uhL6#S9Wq SP$y$Fnf^O4vKS6{uM" 7ENU'<{ NVdLkIժik(m[HҦAvn$?(M,~;@#a45fU- ܟLŸe G *ml~c'wYlDu)^o@M8tv-sN]T#Y _~#Ea09p@Xx*zx`'|r!qyT|VzY3>N>YAey:  ; *=~=7|xa+B^) BEyS#A)͸Ǐo@*['#/0X"EmJ qnHOLhg 8x ߝbl1b! QXE#椀e5Azтd15<09S^f:)Toa_yW]H_#_~_. M"1l-;6w'>lPaN>7߷pR%Y. TwF8\y46CI'^8N i<א `1}Gn<15%.̋F}N/iE%;>,'dV]K`]OB2(~daR:/ɗ&ts{B*K!ZNX Q}[xD˖Wݜ7.3+> ק'ހp2OV#뫵 |2ylϸ,ǘb~Cn➜y7JBJoRΜh5#wdsr: SJ4C{R9 L8}ܷ$.B޷CP7zzЪK;t]qn{Xp'߹5 jR6.^d"tl06b3͐Xl16F@R-8>g^Yl|Z D':5¨PtӺ!H'zUؤ)ВvFAe`u@ }gG Q oCk/؊pPq$(?*Zz=T ܁Xb0\ol|_x!I³>8d DUŷ Y 0I?cC%41?3imsC|=NyD1rާ]&zo(]> 1!Hj fv}S 4Hy Jbt'LPb0"|6MDW0 -Fރ_+ ¨D@TMƚCx*mЁ4|2=pzXd7wR.B^NPHNf trn}\ԻvvhGe|f&蕒Rg2rb q6"W'^:ٯT50{?7d FnlAJiwث.4؉Xߔ rT}7=ςĄTK*h)/pܝ*^@_G;wi7sH21OdAߣ 8Fӏ;ԘoՉqp<,x \$vC* _nF8,Y'ikKm)is1sVʲF<] I m=724#7?D2DOV.Ff%RS7\t>x֩OlڮtݒmV?Vf558" ];MoUzE 5[G35JE΋5nɵ:nqsjd5 (TSv'm4q 9VPFZij6`oUJ ~DS'dCK$l)_˰zxh sڞ} 5fbr9 'a(ݻ뙶S~bWaO3=mـU\AÀ2>Яd&7%X_Χ"˞a38h\H_P^[F^Zi~-j x/v iZXOY%&X[Vl&VMٍSW%"6D^3 -|P3s7Vc¼\:S "M'*ppr ;?[=祁AA $i HTfu}JmdIU `3ېa[oX',R#k)g^= \[ױ>ygRJ9m3_˰|ڕ'?Y- &ӫaNEUo`CB!.$$ˡ; U%&XpDhC)I'BX0 zzcpO06s*=3)i7tqJf͈q[hR?A 鼸J~88I-utkC, obd@o9=Ӂ"$=)Vs4VM?z7ӹ`/$CW <aX4}bKCcF :ID|C!܄nj354t8(Q ?;o=MJfvk/ĸ<3TacufI&b\_G{# hHD%y8uoٮAn7Ё/'.87\{&'(̈kbD70B|}˔ҳ,`xu( Xz ͘t8|@}(b\s,O(-J)wu0sڸrP+GifɁ`5љUz".CK;݆֙sZ%v˫o(JNds8,і׼VՈ#f2KVp27ӊM\QSOYz#6F uq $9;ev)4̙E7,Dx_i_81u B-Pya|}&˚x~,>k0889!^1JBA4[oF.`WuU#{ Z:&\L3*gtl@d 9 O*vߪA"[\w2;'4dnIݤŗ팊Mٝi$NEҚx RsQUP{HÒnZath#|3=nA\pq>36. m+:XcDa6 Y_>2Zgtgh" xĻbmٵ-ҨU;D͏Kw'}?oVá+l/@S#DT|떻XiF{g~]|C5 ȞѼ seו ' L6퇧υH]p@O;@7S0DPV -ïeZ1 g#w{pukVD28 V8n)b MT *Tfzf>J%o1]{Q[;B>\ 3!i9|Xsr8F`l NR+Wꐆ3 fI]K>$ !?Dٱ4md@jFx]$(L7d*AQwj'R'%F̏l`ri$9E䁨lY?)d2| 1LY%'*c{@"g_SSW.A]mH~n.zr cDQmk CNżP!UI0KӞv|^'7pp%9M'PegAԟ-U֐˱?qB=jg8.RtFTԾ7Lk1GAY7z{k*l$4h:ܮw/KG#i䰏ވ,uXP Auʉ@jZA(S5/i2*~P_hwEnHX'::/w +g>>92Qs]_dCًzA^Dqvt= 0XVp7ڀ/ Q]DVkT)p%~KxL+Ufd|BI2?{RUX }꩸گ&m,/: uj zv)l6R(YEI+#'^oV!($# /"ork66X# ;~὎uB)Z@㼷9OɴtdUuZYa=\4{ω.mۤHu͕)hO)Gdo%YE<<*}β6FtŦvv^(_ Fu8\HR7hl*kqIAoѫ)+Sh3I+)OA U}:R}k^$`*%G}JGRDv^;{dY/8}Uyc2[Gp;1AECDAk)GUҥG MIY,c;3KA'~ťT>^f&?a-VHK'\(RSXrǦɑ"XÒڡ#Eaa0CdhQn8sj:\JL{MY=QSzp\x2a54f \iæmFN0M <]!g W` Y;py1ÿVG`6%6RtDNlaZCqlЖ$JƜJ/bd0GdFKr* x\rIYC-3WnzHrAy D|xoAVYJT*ν &V[fF6&nHW,}.E'oT:E~,gu t3y#H۪PA>!ǑoRZk{r(SXUIS?(#w@h@CoTA@J0߅m#F4O }8FѪ@8cD`_|Y{& rVU+bq9`eʄ\THg{+$ G$t~W{@E5Ǡ-[ L%40H̎F )!#d=:ލg(jW]&]{& UOg.4>?O{>ƌrIv +yxcD\:5ݸnsl&N@SfbVdPkm@A/hf;^;"4|(䲬 +V9j;u,&$ek5548"[ T-̖'4Ee$@$#K kW&*e1a^l"w@j@f_8w,k  .ؽ3IJB?n@̪eXU01h⼻sE96t=QgaT|J 7XqHLK7Ҙڑʩ&/t҈BԢ W;v~B*Q]M;2˂z͑1Zu4?(\=~ ,-P+Jx|!Lg]⡧Z9uj-u*C? D.9¿!{UG g/*I>AkE) Vn8PwλP4(z'FTwF~s zY+zZcb߉RX<˥%FfN Hr66q@T\Òn_xHZʴ.;VZ=ǡˀNoB  {ux"|}e8;[ܙBÜogksӠ*71ؔ&) 7C>"'^dbxw+\bfCu_ # W /4F|o>\10nm\\BkR\:WCă Kz5;r}-C fzoIq2:Nt`AX"N=f"H K$ѽ4f=j;3N߁sMPR@f1$sҀ5+vn9.5qi{7xTk1QGQ KaưOߛBw֐pkT>jX^Iſ5jʔAcH- WȴZyXxMp7gb{Qcbȝ*;8%o;[R `Ih,A8mITҐQ)^p }F+mY8iv*/:Pvea"Qx_ {[}Hu]vn%;J&:^n~VV2Hv,bSO/bmW9(|b3_Ϋf߭ƯTZks=8t%glM hK O: ' "G2^w^ȏY0*A-8F01@_N[`S MH)Wg yq+Jqwkgg%թ5bln[=dO/;TqȃTM RȪ,,qM:w<8 7iMzax@r6BWU(|lmceggNN*5G "$`$牖1mk; ##GMɠ\MJOߛɕ7cx_ \3MŲտcv&`ulFZ4tČ!YZ(1|uJ?`9`5rF|K2wE<.PĹ:-b]"6i4kJsyj;1?M<s&(ƦHEʲ5$P# cQHo'K}5_lXrczFkp!un"[4v0K(ķj?i:֜UY^:YO 4T \q?93u  }#6ZR+ `tU&nB)p`xY䌕!y?SpcoΘOd]1AC6ŌO-J{AeױCVz>F]h9SX<٠tOgލAۻHXCTn䠬8C'iBחnm|-< } L P!q8ܷG^ Ln/߹ $0L͹ n]ͅ}/Z@Ԑ`[3q8w2x; !8Z`I4"?%FE |8ba*NI"y}ƃׯOV> Ys>Ua |$d-ZoƔ~0ђJSI74[1Bhf(6_)Ev*ߦo4ts|/Kܠ_ېj, J}^2d<|c{Pl?:CIF$vmsB+e}Zm{ B0*0NQx Mjw"ƪfU'GH {\2 5-\OZʑ|LI]$mw*m}-iʼ[q :=۶rChھesAFzXًqiEyęmyi>ج؈N[ cǠC1)yPdZҗzAk^]z|Rҏ='#N>@9Ƣ1rwkxA@eqk'n}BqF9^-L|V7x@OLA61G)vfZoRj4=zukHgWP(,kY~Q hfj,"ɲI=@[ĭiG&.9wɕL .g?Pw!*=, 977?s' Y5ؠ^[O`,kdjhrUs!sJ ogHahśC?ӈq0>w7KX P# 6PP3_ʩwzW-,*hab#B|H7I1ffi+RMM8n#C`U э<;`6Fj AlEiƿ?t i5rFOdD}0M|l #X1|8#5Pw;)TO?T%B셺q]hfJ㔑\Vމb\yv 9g *E\j\9I{WLq=e.XCMly!Hl2-AC~W5d "=Dm1DžGyb[sIplKrsd4!FЖxW;4hU@v(lDMzv׆ќZȉgQr3]1._=mzO;∠&ൂ8K  4]!Iިv5, :Ԩ bv 52ivQ&&Hd0MS]տͮp.mq1yh'mU4n0~?hE#!-3*" [e 8Xk!1UxC -[# PD5xI/O|kt^q%w`Hʦ8*>}Òf3lh[ l)(<,?Dr(4z9Wrիevqeϛbb o=鬲KA݄SyRSxbIqrR%N @?$%Rv8 3s:3P)Cd(Ol ffw4oh?(,H< XAdDSO ,Ew m̦~*'Z=;p4}H*=ղ"尌}9]-sw8AӞtG)4<ͽ(N쐢vm%G,FLMap\3E/,\krg_#1bO梩нa \_m6@qmJ6g+p`rbDT^ȵhzJJlxGydKS0~{p@sEXkbѸf*#yG ~Fqu4Q>} amb=[G7~K PY),R ؒg` (]"cdw < ico;(m/?&L 0=8p;haY(;4G o>Bˢ6M٨5|1;&*B2ŒhiQr&L~%ۓp[MaEhB,qO0 WWo}.j\m'#2X;IUa$(yA3 _5,!ioG}#Hf~,PV%}``#9$TLz@AuB>.. }@~]XhR&ֵ"Ԧȸw8jGE_b^[TN5.~NG~2 R :r[r4\1 `!DEj tĩ\N +(hQ7~;$ ; (P3÷`Pp\& -;Lr!@7^GorEҊfdegI"L51{ß!U5yjzs__xc<,5DieeM[ !&my=) Agq;F/ѐl_7F{ eqR毹 =dsĦFj=+Ú0 r0ϾCt.ѺD9]2!4 DU스Ic<ih]DX8>&+=37ܙ׭Ĺ^Sǂ BTp#dgP3'sw4ۙRen݁ "/X8KN/)ܳhswް-1xwϥoei%mKM j,z(0luDj >eV[E3%ix4alt^a`_n;;I&_;_HwwgB:M@ }b $W+#,oSŮyA+ #q;oĹBPWU)\5J?S)k "Pu}Uyc S~I?rP$yFD<4C@ Z+g%Zj/I$A, oxRҸa]B6K8fyS o xT$#{AxxxY``{)RIR ڤy.Fk햄1(5(< 4Y_CA+j¡KASfhω CYZ:.\ZpV NCug"p3K$]^/V  ڌx\o9qmZ324|aroM]h:;cZu#}sDwu$Kw'f&7.Yjk#)Z : |JרkOܢQffq/13Q<.9\5L||5v5ʚ=ڣZĝf3;[BBգi7ӯO,dY*8q|[t %])pQC?1Џ]ѷ,n%>8'PIi ?_Egk ޚw\a=8Xou<ÊhK=) v,Y ؟Gv^MZ {3|hD6Hw$Ӛ-VU$ho`[qFfG)'CוqOk=JaԧH ]51?wMgAyQb^xS!gWdP/H%پZ5@ٙCϠFqe媎PiX+V*PoG\yXRg=º a _f].hmͬ5)HuSʗRG r>mht_}va@b)%!M%6^"aQskvEo|u1/O0}mT7Zx|W"%daPSoyQqCQy0R5[2!S ^Wcw%8RA"#<, 32/Iz\{D<,oq>!Yts@bⲻ;K9+b *)8[g0զ&k}F:Z8kKޫíZͮd[œY̵8S :ݩlaͱIt 8i}kw'qOp7f鞭R Ҏ47u>Վ4_ft$lF ӿ/Stvĕ{%sޖYi ŶGlo5: {yd8֥D9eLRBh" "v5Y~W=M(ʑOTSkcȓ%ֲmJ[& $1ѵ\@e72:.<ܞg&&ܵN%yRQtP BpԍkS~ J(05y ?mNZӶ3AND`qW@U(;L>){RX߸}5ZoTji6{5 |:3Y)5+x5\ǣŷt:Ȕ!a| R2tJ,ג/47V7G7uTW*C@;4~2ơz:SSr==ζ[ z<6PsL/Op]eJ:74{ s>/΋r!$$WqcQp}c@:r !xCvq`79I ~(@0k娂DJ=z0*:F:hǒ!eۛ^W"c3YdPy(kD=̈́F] |H#ݝ-֤ ?K]959j:)e]g9>9 ֻW|:YzW":6ǿS!vbNT `uUvVbf3t|qC~UgRg\'=nd\9mz89a[wК,Z34ĕ bO,1ƒm/ 'zcÔ u9 =cg5#i\)ɌpF^&zz]j y~b~.}oziI6]YWLh."b&<MDrrFEO!$T'8X,o'WFle$HYN_:”¯qn>yn<͡lGZ6$nѠ?Υ!= nזmR/1^WOH+o4WVlheU.)BvOd\n 3˿46_T1p2HcDWVTrVuQV^h1XZHox\BuAWrD4H"QnޒFF Hy+qLBYF>-JNޓ)F:ICwh%qԽuV4mP7;2j͕zLJ9 7(gl(T7-<ͩEx^Ow>h 'H4F(Lɲ9  x\ s gBuxsT>H1F~XV)X~@N4ZG _#83u9iMI PÙ7G~j Fz-)h1BK[:"PLF DeHdHM,gS˃h!<'ts-tGQ>q. n.Ͷ7r |](quHCI9 z:v}X\/_+x\L%p`*C1i-Vi݋ zN"ߪucW;r/@0i1@nJ/ 'w^3d0 HλqBQg(JcY'qGi\MþÑ+3or)˩ I?)攊'LYTkRԴ l>6PUR4 E6m5a;(ccO0!$IR fyxTњ~pV杯|ri띣v_=5"+ 7KAjx ߹:'/65jʁID]tF@OvYTՠxn#i4@m*P1vGp(yL}a$=VPYK+}=AɻiN Axq]6|8xEG_v$+7]y@"Оbx+t/*K$NǛyPnhK~Q;3D8hc_fpN]O6C3xRR7l<;Ū춄 Xi )Eq sqj69+Ik 4Kf̽΄{-;b vvov_,-Fd"b'rMB~c=$aV lRP,fԉnؖN u(0H $6ىk3t zI !g|Umjsh\gK 1w ՏBvm`K,.|nivZ{?\>2"MhZ&9kՆ~JJ:BVTKx4&-0i”Whɶ0 uw!/ev82a~#$֊ZaI(dkQ Hڪ.7,΀샚.ۑ@6۠VC ݭrՆhP2.Fp-haJޜv)κswM7L k@QbѾRA'ֲ. X_&Dpv jT0ZKT9sa*G*kbQ4{T #̮\uc Rty/_74LBtV!1-ha-tUXIpISgELx6M`M 6qJ.Va{ͮ ZDxmk]ӏ7}AF )W Z{U;!/Q$Ք`JR'h XA RQW1aԿ^"e1nH{Ɖz+[hOdXvҤ,GE.^D;I!3#HOb/*ў}Սm"~ecIY0g̗UśMhp`kZe+Ǣ+?,} PCwK_/seS;)Kg[j{Cy@6ksr6sq(>&mFfVali'ʰ9B6}刻4gM3e99YCN̻̘iP-=7UQW]Nrap5ҁ`A +/܏'?ThP1. ,+] %Tr:pn(O"t^O88u f[Ohg[i ˑN@ƥ[hUZu;bI;F[#0DZo-q9%5v W1^B۳b];]'T49WtꦜβNI@a\ JրOS^ ݨeI9k;)xLx=HȌ|}~A&zDPnӅ)WϼAhFOp @ł_^$:%;\i1# s胜\рp.`w#|7–QA78oE[9}ވOYz\fO2Ӽ34St诜30^¨C[jìb& U[Y<)Vm31m4iƂ@{4$ܕW;(O$Ɋs& h8( !^F3sheNexPZ-X-t$l~!5 @Lܩ+Vg zzzץKnw X-zۗjšD|w^ 4/F=tz` M X%1vPNuaF8#V(16,y0+E|2m i+A&TSz_ 9.eu*x1HHr26;V'۲ O ,ז5U%MPpIz堾^\J9/B1X&D!>[1[/IDW'摥bY2 "(`aV]4D#gG2;agl_I ֶ'/+$oH?똇3!d{;w&mH0_;.59E ^滋W;_Y 8gVGWP(M' KOo'vPfs{. 71T:O*gWk18@ysƗ}fQ/д8#?F@8XMN]@>oyVKyy2j<) s iYlG xAY@Y$4 gGؒ95(بdboU8UKWјE/ !+wȳ/i4<z73%;:MOIBV-JZ}9hq#1{u|^(v mw8t?Wghx1g>7YhȈ*U 2oatM bI% ٵ7Q`őU@3A.b!V ~Z6dgn0#lT~QX6LB9_Kc؇kZe[79/gIs~ Y[-_*e]|-_d J(|1Сt-W)&! ePUn2;p\Q,MˋFLn4ݙE(4뤙TS\BL{wPٰp #v`~̔\ۇB ª@n Y]m6`a!#{<x)J-w)k+t]UDυ huW~ qXvq-򜿸 ÁWӧB8s>oG;'}k:,-SYVIF*zNӠ,wbrh'ԑq|5O^j0k=Y 5 z /dJ%]CKC/xcrfHb*<_#Fo[0hQּWL<=+rc E5WImn]((T@:ɮZ'' egEg@tBq2g>>U4}p Oe tFҊHo7xzwHbaO_4 f?صdaowL6?Nkt$weLJmzJi v%c$.@̲g[0Xlqu:\Sm^>v$5"=o[a>50CU%g=LB"qzCzxLϦb쌭9ͷ11#c5L!' q׸B]Z@ v9ҭQ_de@?4G㲽>iexkrڀy7SfB?PB6\I9ՠد!-Gٽ 0#OC{UGfE3Vp#ΓgsZ1tPcΕo/}\؎mT9>hM"EHjB012 (ա}Y58liFi?f?×IjpbA+!E):x\p)2(j'}{_-FA*yMX F3"Krr#st"?ъ}N&F /M,lDԝ鼎V0VQrBŵv֊ #y,)ÝNZ{XL.ܣ"2; CQ J y{oI>>i Jp]`.h5zinYEB̅^{f]'lH>Ykpi >ݫu cX6";)}CJ3  -_0 wG0Aoy2US0|VHU$)?z\jZVAj5oX oC`̲ T9I;? sP7۰((>mM J%G:Źɇթ#5A!KlRKjo@* 8b(}8f؅0bGf v9ތ€`ǒ^T,_Q6.H:_H2Df cl+S'qXR59:U 돜 T=E4y// ;=Cϡ[@^Tݯ_Z%Ќ9ٶɜlM77ٶmkd۶&C<f*LЕ'[.bKOˬœƭ燜y=Ko*?1V6(WQIߤC%Xt+JekUuΥ gGĢO&Q3]D%QŃ[2؛B*,5T ojyQ>:H.2pBApdsqXccmlήVAUZFI0bo(zN/#yE۩v~ac%>:x&0pc,q<{Joz3.\U|OUoql#ͯy7CZŋ&Kj ̘ʠg/YU&g>sF"ͤO 4wS^;!i?I* ZX ԯo`iG(,MhӪP(ܟ KK IBMxccᏭ >vwH @gõ3U%3i|agyĐ857Pj 9k/1/FΧZ TwM|f Y3֧X=^ 2$ܷ06TΦ9j[AJw{:\2b`YAW.T0%N8HW)˼F1`ٚɸD.g cǞzu%^ "8&)^ܶTmǣQ]&dF+l<uq%|϶˦LPdr| kGf7_L Y1Bxy 6DU"g(aL ibԃM/2XVr}}ܹ}3ufG}VlNԼt#m%i<7L-^3ͩM{Tcj1Dn^dvY#K^O&:>Nn V;݋Do\ԧ}Xv.Qb"E2-M"qcV}gr9:<@T fL"vay̑cMBЍN cH6BܱA ^(J-8ҘD„Yv 0.{2|M^lmp-2^z﾿=a teb'vg4EQnف#%6U5Æ-Li0~ed.Zc_pp5㹄H/v+HWSGa؇vt/?~\U'SM , E!u+Jz "U:R>Ff7ziJj7*\z7B/jȯ.nz{iyf_CЌjyy1Bs_'Àya P=԰]SR2ż H+ gƔ+`XUCq<+_+9=/]CZقVrk_;l҄8>v=CI_k?tlM_uX[LPJe>\~?:Bv41p--c2b ,C#E6&\.hCf4%p” &DSUiU\)I雲Qˤ0Ct](&:vݣRCyy4Նح ݋YŘн$#u Q&L^-#LR],pt; lJUL+WZ+&[Cg<(Qce_k^O){ŕHU> sEHCMxfAZAu&MdseIytqOu&]^JH ;+W/loQ\孈sWj2&w)Cݿr!/8"Û|Wg%򑾶 ; ܚc5QAdov%Őڟf`߶3'.=ZS% -=hڶ;[s?Q'<L&'?T1깡jUzՇRvR\-fӲ"YBic8eHL!Ǫy^[IL ߩag #k,<~qO.I-+7GdXKZi팞_D,-U아 *#=S#'!EJxj5_|6v夃#͛! {GPNYҗ.nW;Reտylط6h#4iRlBcRv`o7ug]p\=< !oMՔK@}|آJz;[!D7>~ 7gE׍Sz`mvlHI,lY'2Lә:k싫 w1}4?R "n-bb7qUVExHKb4Quޟ\xsv!ŵƐu>5%،E}nV^G/c" KcvRn=r.dm8Mz%Gq!Fi,iXfcimcd`oё ?C䅜)[fP,PHݢi1*A~oI }Q3Z;5=a;=t c.;%=%=,q {&;M=B).6cT3x1Yjd,4;%~y/v͎B{&:q9xԚ! #xH֌ /.J]pEᴮ77-; b=sJ[=?rKJP~ x;y8 !Vg1|eM" 9 Y~2r;<'z[L}py}Vѓe _k=`Zd++v d"Z]@ DON el#cucUFC*^u8~LM,De2n?dn*Zg|m\Ы] Rdq -Ai@{YN.BT>>?4F1?;̡^bJH6?jEhZ !:ź+lwh$?rt& XuݼN%mWVFsʝM_L/'6\`[އ&UG'+HtD]0v't4FĂhb,p"0`<2,a9 */@G /۬#_ 6݈@QGq&tEmPu֧}RUYjQ]o_}L:[j=NCm7O(N/ЬF>q~pz[ro\#rƯ0$ "?";Ψ11FOv;)"lR ;me'Q:0XZ-?l'ԛf(LOkGST VOՕG^vkfIƐLIk&ASlE^1v}AA#k.ѪڨۧEKJSXS\61w?&< ^88_sM/-} `Y耚Ti4:tj7 N?n(&MczH>dQdҗaeB8Ual3?lG4NyQj26AXo/. [8,83RmzN-u sѪ*ϡ* JO:Cпܝ5gQ>&9?@J?ђEp^2wr+SJv%aP n=trh;X6O#o"ޠ8q [i{h)y m 7BxVz3xQtzZ&h]5| q=3}vbAMf,5:2#r?ËF[mbE^$t)]p,#uѰ(-{;'nN8L5ʪ kg~V똘>2M ."iLiHӊ|68xZTmB |Y`TfR p`~5,kH@`o#(9Cq!exD.Վ.%q0@uԻiԉDŽ `l,-zO:]eZͤ|pߙytJsDfjM `Y?AbY VEBda2ϏŽO}l~oc1Z}:typOvA!b#e !Xuٱ kC`{ .r1NNi@菏!h!Wv࠵i[^L;KM:{vנtg45C*R mHoB03:>Ub3)2 {ֽaTRť#11=jHl~3H|RY0,ṽSsaK1X)@2!+0_QFy1RFFO>#^a6Lv_,D5>. fC.%"'~ l $Gۛ太h_lA]xւNi.=}a#붾 'T6gbJA{ɿ&PDKkG'E/hn=^Q;5˵A+g\8ͻ1htyrYSEHGM%m6gQ I~^Y'4 ʜD4frja;] Ӌ̔.&eB`銹6JM~}Gj^ƧZ\{mZ!HXrHʏIR@7@E5U uhmT=h!cL6/nq?I v`XL7RW_ۻa7;vh5} lvLFOζWv+>h ҀS^(P(e!^ {POJW&~}j[_xPoIx9 Wm宅6ۂoCd%P=c) v\ݲL볠m< wIڜr/QLkjLd>` h>rξW"̚*+M\9 1B^KIHԆ@a i*^RUk{ˍJ%>"{P?[ U媛X܎T`ᒠyWI T9p@(²q -$- aBCH4k`UÞi7aƺ#<H?],0P,<^᜺ `sR K:.v_=w>8g~ݡt= 2SfQccZaU aAݘoHnQp;'' X`FI0]"PPŅ>-诘[Uv['g;L+Mo BUO./N!' !!D,HZ6l T?BF56׶δƗMr4ʳolBLGOkUjF֜|| 8|H{ۂ9N!EM+S*cd`m1,yÄ: $s.Ūʕ@;OK ^@ Fv+;"BGpdtzɍ?P5weOi²&]p@[O6H]PeLjcDCH/y,*,5DvarȪm}R~m^);kI8L৻AA` *wAKKب@W==+7Z' FHyٖhʈS kg9\Vوԋj8&lw\"DEAҭ=GnQq G%1y5B\dȬ<5Uįum~)v8_:(h{B]aǥEaր`aI1blj h?PHP&eɣůva#]?d4bDVݳ=h+^EJbp?Y?6\E<\kH%xmjP^h[w)-Tt-jc >ufFSeST(wY+{FeIZstړrZE#]$רf_c?UHhױõ+7޸ʑX+xZaoR6!1Uj޿ T 7 >qԙ>x RHZ9ZdQ.DWo_.a\2{k]Ww0Ǜ܆8{x怍/A ?pQh; 6h4 a  Y!j)K|%sC}p()~.TK E!е^; \͠#;@QA#Q(1H>j|2SmNK;E"bz+EevMTgbGn[uy̾ʞS,B[Yh*xuQҀMaΟ[QzHΦ}sY}ΣikȒd ^S+0}Eˑ (xR9k2Fz<;tV9b@=jy_`LfƧe &I~Y tk݃@JUZ>jh x."/ ƈ5kp^} O6xTkkNa*uot3'ء6Dd)\*=뾫'XTYsM J@y#"ytRYCLHIr-69YBz?>$rYԡkPXOB`b׿ICܝRfe (Zc8LFhٷCjk z2]>M-;9dOGY]L#Xڲ.\xIn6eMag^oҰx np2Fl+ *5ІgCm3{Lf1u-4;TlG?z[?dp5ܖԔnLdQfEc?ڙ9|\]]-0Iendstream endobj 7 0 obj<>endobj 8 0 obj[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602]endobj 9 0 obj<>stream xڤuXJwt HtJ! %%!HwKwI*J JJw#Hw<=qsGx{wF'쒖0scԅ)PAaf`v)b12,\PMW-R su; KX_e ˮvrAW l7Șgkٸ,\\/D( stq+sO |=@j@f9Nn`Kdt\6fPk3 \!K-  l-+laNh8A! WX~ q8[q@.SB-a錅k~.OqܡZl ut+\ f vpq ׆ZAfPK_o `y;.N`_#,`i -s5<4fX`# %p~ )KyT JI< @<}E/m͖֩ ߩng-W> sXnшS:q_$ip`_e>RXKW<Bbfk:b濲zkZ 3[ ?)1 FgS5 _!|(lu t:b\n @Ox~R:C̜mn @/ a[μ@Q^ |g Į!Zٺ: tavr^~ .)!;+.m7q! ]n hāoqo WcrJ>-J-9o(w p xt ʷr @> -jn-j^-~-A?@hp @@s'3 ;o@ h%%N t%?0߻ٝ޾A-Z@@;Ow< nxw;Hx{2@@t9} ۻ.w?A@[ @@; u}n;xd[95d;_/kw\$jb; '+>8Yb 2 `'x s6XHc i ֮k03\V.\O}֯d4\Y,r%*)< _N Wu\,\]xk ߪÝׯ ?\,ݱ];߯[O}kݚ<ژA\:M(p]@p#Fp[ ;.u< I;b'[ORJFxw \d'A C1ˢŸ>y *O~ʺ@WN?˧5TڟyjfV{W{Eˬtjj{oZ60' FM9Zx)\t/ EAoi ׃;˸A@!AW;9x?/ro&O@?} mӧ >m=n;za?w?7tW`/:nMI] ] ] wO{lNR?~2]Am{*[M[}*UZ4S[>? #' jYe~ A~ߖ1'H?C[]ȸmԎ#e[d l*} ~o4f'/zJ6]J{O1.]-e< ]cKzCAZonN> 4DDTU/Et4f7H[A?Cr^Z+[1 {t/DVjFED~? b!Ѐ` bV>ܸ'}R{yx}J$6&p,Ǥ}ra ""iT^Ĵn3Ct?*{?Lr#d٨N OQs)etQ|Ye/y zY:"lBx4 ?}y N>wIoY]!=Oa[% /P6J ¡a  A\atTHƩ .:̥]5 VouUNHRroCf1H}}-9 T"/lc?2W.F`&3XY+z[CjTjMp?QO3$ a{Z3FЖ1#+ɛ#h3H.Yzȥ=Kj):j!q`#S)WXD&loWsyQ̾+垂POfr[pEEx-+9yFZ;*nۥ_bCgE"{LS0M,գi\`Jئӱ-o^`t/rM7YAGu+n".*؄n4etIYA285 d,qK>YmQƗ: O#w](RSP5EFj; A+2֔_lNP= +"j^Yf6e1`>!BzHPؖ$V4Ҫ&DJGTt~Qj-cK?Ug(ynrV)4lZ hN3xV1 PKoux\Fre„ӸjO q7)=pz*e& dƀhy~,Z㏼vnwf8#s {ﱰӑ=ۦ'X̸ȼ$'?"W/,}|jXgs/2~`[Gɢt!2ly|݄]喏IPVl peuk) <,ٌ<1|7 m}֛ [m¨TE#1>s萖~RCjQ#5tf'IxFj k{bygXMNX=[4ea _5JO^MoUuc'Zj7;>H(_Bid1 43ѴUh㞌2 _8UdZ JHesKF S KiH+ӜӔӨO5,cʋ?:Q>Lg,>r!NPlkx{`ϱI^!.0Q#OȉmR~'#$2}D[gm'  kHLoqKc}CSmaTI|ȡD6ͳ l}4WSjHy4u|TQB$P]ZIU4pMr̊D?!gJݹզ|m$F)ѱ,G E]Pd G Z@cv;5ERḂ5+k9&L%a;>#,A8>)(+aE#Gg`Շ':!ďkaTN).B߫[gҜQAF,gN_f孛R=SB[m1[ 7Fj_.)vyREуj%]FU;ϋ?h8,}< J;h{ow#&KMAt9괵j<6W{қ_l=y#|J<$ h͞ZjlEC{;hBp9VHc {GNqL>\22|RY,Q=}=+LQ8n`x/EaGQÏ|\ CZl"\iK jߴk j%q$-Sc7cF}{*ocHϏ:'nw{u6Hj1ɱiV݈r}ߣBjDG"nT?%K޵irDq^t8^E}L %d ڌ@SQP`nQa3?([Xy{aR8U*Xc~dq,CIhL:uM&$ήL^bFQb$wе]5KZL,QX1>y~nZϯK揓Tl9t_q$ É2( O>T73\H8xA{ӊnIV$UG4[)ǏJȫ@g{Z`hkJ[$S@^YHcy`,Q'A>f9u(Ds] >DOoG$-`7mchU$lr&]|]n[U~=Ne :9_s" Ezor9l\Qlj' . )G{)^h$Lɏ*,Vp cstkl\wwNb?KXGr#?(e.Tv^ՖB;\ɴU2?v2XzU#iuwp~I)oڼ,JMt!J"BQ,G#p2y¸PY}4w)QzA,DbgpB#lH߇-.Z#\:],E}=}_HWR5B)ť2( MKH3 @j"ti*2\v$UTg<_7ˌ)@J`^>ԛalsDOG}K>]_^*nO{ o?Oͪ!(yw+,@VQdK|S'T{@pEzh7;w$_04N#ᔓ9UoσW`d) H{SJFDm4d_y; }p Tadekǯn,K1^`Wq + ?/sD?(X.̶P_{]뚀[CZY ƞH&ym-]i]Fz)BYG_Zx"RIA j+` \ Hla[@s,:"/ӠpS+t`'(hUg+Symw'=9Rۂ?<WFr|2ue7 \kQ?î"jQ/As|q+)~9ǥKUKKd-4hH#ǵF~{͡C;P-hҐ$zc3/x/g1kVLo )ྙ1Fmo.8嶶ѩQE{չS?Sē(XԼh<7O)АU2.у!M#f#rlgLمIO޼:#/qpʤHh V;RXɞhAZeӏ-ik]*NH"mrχu'eP˪;Kd%X9ﶣ7fFxlj<290/wsx{aޞVH¶P 21 l͆I;RkJX&bt,ߊ,]ԍWˋu]񦽠5PG:NJp z9fůע߮BQDYRQ`ҷ{ a'ezۭDb+(( VߌLwxt${ oO0C`?z~ڬw|L*y@>Q[J'4B &3J'gBm/&O1Mui_Ncjx3Ck&,,:~euoU 2Kc6U \q2s"-!j٤T~<ͬN-WTGfZ P8ĉts!ms>!PNJsk<%N6tVC,唃&=,IPs qoJ|kςGnD0rɺܭcHBT3?M(r}B/yuz~$,u+UQꞦxHoVS I95#/+HՅIz~{v&}} A6~WQo$^m(~]=Q2+ W#+?}Zsęp0RDvE2K5B~tAU&rDv3YqE5(K25=?&@j:)o[a|2x)N].ݐCX=~&E {gLE$ނY#7AoB"dduog6=eeuX>|0& =9YeA)Ơ9>st?#8*LxK2: >&! Ph$vƦ?Kx"/F1TB:1wxCZe70!;L&{'6xx@$Iǃۭf%%S7QVM ]雨 -fSM@'Ezx  $f(n1/ɓwO#Vs6b**%1:tN&*8 `HbCǨ)f/BM>y1*1;DE #E}ש ]4J5IH A{4Yd&ڎ~7苻rPկ$l(A AT z6G %t%\&pe[oB{1[uT͖-3Hxүd=Mz\N :cdV{ U*'@%GuBRwdB!Ħ~lqq*axe%%Y;t`^P~ʑ7b1 6דmM_U;۶曺㴞5$5 'NjHZiAyO-_d?}~L-:{}TO@1Y / !d|I:'0FMгG(o A*K}p8e&Lv'ˉt|tBoD3bg.TbUEfOFsN;7$'YL, ٜM+dZGK'4"c%M^}~G3^bJnwe6LUaf >|])%g diV1؃=p Nx Y]L,rJL!0VU+?CWղƾ{M8Ň WT #|i`6|AU7wTǷIn\m(VXIOVqx<3/Nml'aI2`/8$cXwЫz2OHD~KACF"ӌm F!uA*t>RwpV35EEg WL|rʪ[Dׄh@Lrg "[6=^y)/0- ]дUf_QQZe0Wy z=R*뵯k={XFȓЃoJICv57^~XMW=zBHj#ZX?3>|.6ͬʳAJIWhW^=zaPnLr\kK=Gżh֡8VxvA6݄SC~BBia= "<$  `E[jzA#[_=a든C#  2Zo6C},S$h[K? }~Uj @do)6uox彯)bqݳ4%SrM^<б 4.9"xyrjpxVC LN7(Y3LLM&i5->+ճH_PW"/h> "h61OIGLyR?-YbHbDda =G5d{R.F9[l]w. {pc;ej'gF#@Tz?#_.jJ .$ú[A<xK@IROCO-C_q*rtS?uηuL묫A:WKIk:LOȂKڋC "M{ QWZdU!aLD?y,ૌw?RT֨ U:Uvl~&N'HCEVK\'FzT/pZS8"C{ht<˫j:9[?lb~j.OE3YXu2Y?."v!;1=e,Haç" >(OJ^4M0'رdy@'Ϝ2a\x.Aª~\ d81b1mu %R&ӥcٚf #yG^{T=mRΡFnOtF4_|.3 rH{=ZDxxٕj'yJ_?ɟ7>ER}!m⟉Ph'|}‡ʩՀyD7fP2KNu:ҞC0!ED3l8{\,kg^\ 9Qܡ:Rׇ5, x(7/YSOTd 8yҹov`bV/N_ը#^̝zf#^һ^9d;VWlJxpRšjeHߐ|ɺm$: &471Ugڠ58( 3$YMz CCHo9?^JPO)cQIxYԾ٘x[aGM#z"gHXi'%3Fpt:Wx2s<@$K!۰sJ^#{o 3,'L^}MzXpa*e>E_2-k0w;_HuK!5R~a,0<FM|4Gg_L| K3A= eOԢYժ?fd9p N48כz@EۧR A?<:Ԧ^"˸D#нh2TX@P8"i w>^v^S{W>E:bnzdhBWyzUn+s!*{79D_ mcU/#NlBf_x |Wdzv%U43Rip#%ϼkŀ9`G`uq%`-oT祧c:s.} ,%5-Ė8ΤƽOId=ow_a p ˜/0{_VlTd]gR6]]!g1ܕͥQ9F"^7k1VJc^&.3`M&֗&EU-[lM> +JU [=غlNQ'(T#ގ~9(1r؄CT'i ~Z8|eۯe(ETBM$Orw9DZUqj3ޡ.\Z]F?GZA8A,f=[:cdk„o r|'*E%aU7. xFYSH^r"uceB7nRvdr sO(%v0G?07)㭐p4Z%]b<:{[WTy(-z%^JĴTɮ}sGF-eew'}_|coʲ*[ Z=) _?A},uyEj'1MYZ)  _Ù$zzj73v~}5,s"=M,(Ͷ9 Y5J+9=-[P2kvU޼Y}_Z Iܝ8J] E_"[4aaqҌ.6m9Hd{H 4N̷l 0{z+Ǒyؤw"4׎jI*Š59(fQXn{{r֥غѰ)T\U*}7dmDi V{ُu,\qf$z(zkb Lɔ=z5:*6ieWymQ*NZrPȍyJ{M<VR.ۿHqu?Zm: uT".p>z5.< oCjlCEDaGu4kBڠқq@b;`pV,\Г`Q9؊Ucg\K{5ͰhC4ڢX8-ГE0G= P.{Dsl K46= 2'Om~= XR](cX0֓bC.@s>;Q FoDtW4=cc jWE1?WtêdCH#Ȍ|+?)b3v>{|5vF+CWNv̽ hCW]L_)&(9퇕?ƪ7:< ` 4Xvlyݺhu$tkYg!'Joos#D%?2WpZaU2-qSR <շ!L%LfK=y,^wX52.FDf>"` sm_-Ez:ivHY6`dmM(Tw&uWHh YߦJ5_ O![#!R gKS EZq2tJGǎUNypRDz#_ {NW/M:1VaضgL# v:&Lɒ4i販3x/ד,b",:}8k2W<5'qMRիՁHF/@(ުZ]꿫@͒'8uZg;/c؁&.MIe&}21zRѠ(m.iѠOCmuӹv3bq|S V/PػosX͊ -Qil;Vn@3|1aRr.ťQYa!kW2ERTgmO?PqQkA թ/ |9^aM;L~&]Zk&NWNjՓ0~$Y'$(:rWBCƇ˶Y|H#r.tҙ5 2ȡ,)Z›*WSKg?l\1؟ 3j} .7! WW\"h.bʣ;|e#vxypoEL+25h״*<>)ݰͯDҾgIejE<\?*j={Qu.e݈a!N--:B@ӬR#1N\"^ѵh|5u$i̹BC=&4ޏ Q>=2on xkV>Q BzroL7tmx75S'7cV܃]6Fkd1tY]K{KHCO6rv+b`'/dX:USAxxetrC?-V>GkAV4zw4eZlȺy 7jӜx}?ޭ`"$CsSm9 )&1M:?G$VlV)sI,,T}9es[~ onA̿Q;0l3 C[8DKK\h XiOU4rh|xC3ΐӃr_#)P37kk;WskߗHc\2fhe?|ΥwPh9K~SVc~u?G<1k3k mJVфo(쳮y%ߨ4ث7x<_&O҄cK3}m:Sy潒;HHיg#Ԇ;(.`Z,q9$j Ҹc?i }IV 8!->s"|*mJ(|/Xprs%*}w7äv[N$ _z*ְՙ"Dh0Ab}IVMjJhr! v0tO @o؄7Oy\6[̀.$m}szu?qU,nMXsԤ;ߖig}W?e%.q/jrW=9QsDڵ)?ye><ҝ1o"w'ZQ84\ĹGMlpi}斎UOeܟJCHyY4[0SLr≽A XJ0wGVCBOp=^Ӽʛ|q%5TO,ȕKf`LahSEǙmvuֱkO9:jBq%58%LVs~^W Dk}̚BJ.98ť=&lIJ94'j8;8hJw#[6)vȌU(*-a0^,?uݸ@}TZ{Rع%m|gW¦b*Z« h=N pޯa?N鬩#<8hr]UWDa..g _1g3R: Y_V<+Hm)BV=~`5Mo3 i#Eu8>KaiKA\,(X‹ _ 9>e' vX%:"Os|ԑ%s!Ν*tݰ܎;i~B(>F;0ש0k(wfW:"_ 7Ϯa8/rj.@~˂XgoE{P,ڇV˒{Y1D5#9 "C49 8.sZ60!c#[⵵8TvD;5>p[R^"qjc/2l5|]DYZ1n%a,лs{i-=1PHah9H`o!5蹂ҙ̔^,sщwbn)9Ubj[j U;i,SL8 ZoLqUzL0Ƃ]9vf{L߹ 肱]v 쭫<>Xਣj/ ~:r.5d"RQ,<4sdя[.JwAV&r?lbb薉O$L󿭙oB=J>)[v$8qJކēy'CHn,i*ibGdt?$RC2`}WeߊsWZ_Rn458a{t i(,d>r%&Sxk{l3َ~qz ]BiDI~u&WגsRf:R!7yT"ZH iF`_[hQOiԉkNACX?C]ESšq}9#1I}5L@ڽX^:VUUPZY:/pĜqA0] 4n/:-qYc6sCq^ 3F׭Ez;bHrۿ)Z>))xX6"jiӡCt`qt:5 #גM!VP>u);yBVHxl3У~ >j4UN(U-V YӆZa}\d͎G umH<=}S;P`' mT64NJI o0 :ZHW,k)EK>$fի٘+\` 1|sZFR џ4}f 0W_R[6 Ѭ QO F%yp݆n$xW9H|C!2+4ke=@8#D2!' ʼn &ݘ0m0.Qݝ^`#s9^J0߿;OY:l|M*9ͅ6kd̐_5$$ GZQ76s`fSǾy ]+bF}UNϸG7 Cqk訆uv߶DGHum+-gehR[R6PC;m|$D:-y'՝'%A3eXsANcӫ%{ߩw1]>?A0Ά;cR*L5['s]M?\psώdy?kJľL,u-W#8!3Mis}Lթ:;x@C{T6t[kMh/#Yj'0E)>,e%,JԆ6/`^RGX1)E@CmQ%gWJh,0ctj6Tx ffaLyнQmE/upfxXoo0b ^zb ,gz i˽ rV97oV̋2" I8ċawR6TXv0Hm;]AEK(QbB{햁L)9k{g `"elP$FH?lv(fqS#:ބfRNqbnqӇA-\ՕTZ# *R~ڦW2/cu=ޏ_ހCFc{pZ4pGZ9\:MѮ}sg4:rJ'&cvLNkUh3Uq"hH𰎢K `mPAҾT_PV3dvP4ETdqgZrgNL4;I/5$n BL-KHiWnt'"U)/vLԥs -RPƖ|]"VTqGr7ϋ}d{LZbǼvݎU5zğvg"xhY?AQOiOB40+StFrSEB1+vAbK9;#Ӆqf):y]?Rr?5 ̪L幯sf)4d{f&Y#dFwyOTLj`O/VN)DXce%FB*w<iN:%h}@p07)^T +.o;#ѐlՔzSt}̧:maKI=HO͡PT?O 8bA`}'X9(zB\ &whg7v7EFb5S">n*su(&=.JLig +:#W,izc:_ 틬D`#V/(?qZex?@cj |˗"*cMP9rPm R QSrHwVɢ~'==IR` haA'F:䀘6l$+ lcz6K|y\bbbw\hi7C=ҳ`n-f-ajtc|l7?sHo:C&ZD+ViS^U?|3Mo/k:οh)h԰Y 9x8,f*b/N@D)7`3J5fL B^EcBSG ̐y L'y+<1|2;(BtuW?Z2M|]mx1׃ŧހu' GR3p^!Z+sՔfenet5T-8Cҹ7ڞJokFZ7M"MMt@wۦ x c QMDypX)6>d@=G6l3cz<Ѳ|VEDԏc m gP4XHM9%czj]Զ.E\ !_X8=gBMPНf ma&,(bU7MȩcSx?]$oaBgqt k9 ~Sq ~o`v]悘;kp!|"rc|{>QDjw4ێŎ;S-yD8wiBrHw7cvULHcK|zWlMx䃰vB[EkmXi ;ϊYF\6״UKZ+j{@Wb\7IAw@U&p"A훼1 iDaFʋ, |F.d 2vhh =iɯbv\O9Rz{sV\yΐAR(Q=5}JFƊ:tfA;c>lV92q n>\RF;o%q+SUNHzrV{Ӵ\\\a:`{j<лC<~\mP@ϟZ2[=>úJ & rݦ5g/FӽH y S39=K6<Ȝ> $Uk?:|\tGCƴ?B֐w8z4F:ُ!BKhpV-˪YE=Cߥٳx:tiSFmL!L -^Ū9Tj#bˊoA& Ө kZbhݸW+w4݉1s Jg jH#!¾N?Nb}:ҟR _:Ok=PjL} 'Ɣ).L;`p˝Ra!}h6/r˪<; PC[p9>L+d̐}u7DлhDZŸx B9H^ ᅛmJ/[AdS7Ē9jdDoADX5\Wfl.f+*k>`ۈjņHrsK9}j'q{n*r<\Ev<s&R 0ib1Oh +nݭs>$MATjZaMh\!qf4yDw.H@FpҲJ6"_֓|֪;GVg)T\sMˠKY/j"igΎkJKf[O0-DyތL䅆c W'Qy+m?Fǖ${"UEq2;OcaIgCe :tU__>LofHmĢEїr$_z3Bn;/`W&- NFf/JEo%<h '^6VJ8 y@ycsc8K<9-&_]U*4$v]X!ɞkQuv+ŮC"(IQe_t7z躼٬3` f$WЌa&f(ozů5VhFaZҦU,ō]bzJ k,lXW [z1i/ F¸3MZ.5(`'~c̉cg@7ٷ,DxS_El } +z~d,eI-tBWQ'57}X,yMC句'Fx m B cqA/}#݅}/hLdg5C`RlXSrGKr8+|+~|Tw?3kHD};k/;1a) {9Omm*8(y UCSECg5Elr3;$Gv2Z DF48b%7/am*\RZr r155&"F"be>5Ot|.9a{nyb5l΋Z\Hi#> 83H g)B+.TQ?3rC~e R#UPjUʦq]Lwy,ɢ݈o?EHDe&V-Nػ00%-퀨\u <2dy jtc#X:AЀC#pno}[k=Ŗ6:%#v߰܈r]ko(k,=^S%ߪɨrQ%LCY~lL ;vFS l丄m~KD7fz_J_$Y1c(Airݾ~KK~b7[O>FS y d1J'y8|5\r(P]¦Xi9q`' +4Te3;uΦ *H~0xIh2U?#`OQmnu[٠B')[!n/|pvȁN?0CxIYDG!l #Zsu1 1'H Ym{Sn3)?HV H"on}q\J{#1Oxh-vD?C9yCri#I@[$zꙦHjXJQqF]$44[ctì~ \o٣c?OE~*}# Gٍ+uv]̷>[t?+0I s=²?{ux,;Ň@*3^/sf~ #m !_ٵ}[׏e46݊2DrU戹`ST Q7#Ta^״5X\ rE/mۂKrw2[Y-Ox `蹽}YFC/-pԨi3{ ܎)097qxK/#9EhpvOKC3vRrIb~Uk2[轏 D6#ۋ !gS+N%vѴK_TLUV-<ۿT4]Ylk_B6ڒ^'ؤOn6h_}cNCGX4 /5+Ioo~Ez&{Xf`*gw._k }zNrs+cbz@L(HPAAE\KƷ'.IeLQu r=MʴWx\5ڸÓGk%qw_]בp4SnI`=O7r]6[(Q?WEªt 5À[{SvSgzxьb0m8͂ܙzJ5tϾ`|_ĹIH@ 1H;=31N]>㊾=Oh/O>}/h 7XSyg׍`(Q1x.y2jKU;% $(tn"ǜF0)٣RS;jH!)Gj}%2`'6E$X7wsBgCɭiƒwÕD!Xx|4GR.27Xk[sNo_9/{֑ LcRag  e!v ?>OJ#R)p@@7{{q1!;y{yUYQc'WWI#395]hT p"*_Ϟnjֵ䂘niE~F.Ŵɇ1hAYR$72 U˝ĺF og}ƻzr8A~xm74sӀR_n@i%ʫLdcI GxyA2P@C'SETKǏl~suGJT֪:%$+QݺgtەGD tWP0GRt 3%?#·D [У㶄\ % x^Be/3PQ4c;`4ZTU|"/tUJ(OdRUk^]uL|P:U+Ɔ!2y77:0y4_`. j P2;[kXl0Vס)יM;p ^ʎ!p6,ty(V"A{2"qzؤj_[ܶop!W*=˧94OS))r/'ɏ/]b~,3|G٤MfNӗdJ'5鬎 [LaPMC['o¨ SYQh-!k1'Sw ܕ%L C)Z]텗UTowerKeov\*pEjg HPbvd?v*YFQخTJ,Q1keICt'`YèhZQ3K??Fc ZgTzxLBEH>߀[l,u-;Uv gNU9c5Ə WЂ˓v),CbAP6{V-]j^+a#?&#UIXp 3!ZV@!*NDwLͶd_$ғÄQ+߀ƹNBzRLne%O",ha0'9Ea+?#6 :'/n_TjPɉ[yV;sV |Vu p9p5>/,)We >Pɛ@ ¯:8U-jQɲD>-hvSimyGIv>]Ym,PARؒUm6)YOp]h<`*~n\~`RzO*cGMzMTG{f8A44SrQp<486JγZeϯ^>=$uj@^ךBd5qh]t$cUY 6%; 6O3 nERXÿ GyԤ8TMB)9p71`>@H_&]aT v]S=doS4B擂O.g!Dg\]vHCvN# Z#h33"2䣲s}E)WC(^13!T#T'E_[tu٢v8tH.ݑǖ 8 qN0 ɹUkKSPDJA!Dz9?򘍬rhJ2{0b=Öbq+"Krs:NFt3%S5EY66b-&aè*B?ϓG]S;Rx _K*Ӟ\ÅR a}Β]Fu Q[v*~O|~9;ڡ*":9?VWxK%d>1Ng?>مpyjIvJpTv\_FE!rdz:+-t{iV9,Gtp$ZPH6mϏdZ#|kD&ib"[~W U7kj 58 @-*B-hk:lP [rYyk(dPCU1tvg4*AEg::KOuY!&VS] b@͸2#7 1יJ\$&^@_b_p^h=e}| sMO^ 逡xVFĊE˭aVC)쳩NϳUq})bgL6N> \b:s2bᑟCI/n OBb^&L %(2FEy[7klKGq!tmGM"1ca]z2`ބ9Ppꏬw tY2 (mgHN_t|G5Ο9@g}׻k{3ݽ@#Kg:O S r%-z![F (\N&~/Ez|+'Aӳs뒤FJ j`6oёT-{.v9#m~FleE=r|Mv<TDF_kT0OL9X 1Dw[[mz\Wܽ%V_2)T[/|T<2 4r箵^d{5t9x5{YlËI!nAÄ7skq [  NƇˮiiHS2LlIY\qmR.dC/;fNvj}.S/ CmAזY&IϠU}%5i+ T/bsŞF^a=1+'XE:*QbiB_x~W.d\ 52iwSj}Z+7K!p2ahTlv<w +^T"[S+_E2BD9u߰)Ⱥ-!ɾJ< a+éwV=o>D&+J~,ֹHٝ ?ZD4J`(7Խ`d$詌:H` w! 3H@5&TW(?FO50Øl. t!IJL8@7eR* @,qBMB =>To<f]H3{ IA&ҳy܍n5?@ՍBs&<.y_PB?X'~&xPdkOWIg@pGdwV;$ěr=6Y/~"0eoKu } B|Ϛ F)dY|g|q1ɗ@ُJX&Mvh k x@6OK h|AG3|GnM)0YNsTd-7);tXP7H~ /]Ԛ#up1kX;"=!6/uS01!=aXإ϶Y?\ɋHX~'l#4t w FI~q,ET%Jl'hD2b\W)=D=Ku\ʑ?|*$ QZ#g958[ӑ$Qʟ̻X_nOݮݨJs@aty_wEe = `Nk|a4 ?fCl#x_eν4[Y>wfé4Rj3^q+N7 e2+ԫ`4HaqWZa4\lB#_< 355@W:qFn1E4#2%mqVS#OթgV Gvtf#U {+GS!7 ޳fB(ZMx-Q=&SOnECRx ŐmmzĐC+.Bwjۯ`ݤ^!Û.r4-dtJ=#uՑWS. x^ ^*DRbZejB]?;DB;fno^ !w\ƹl."⡆oɆo"C2l^'RE& -- 4Oo~bdFKcI<U+gl#GWKTD[ÅwPiҵ&ITuR„%$W7spu 0G7@w݃e0էO!H9-qu9]rdu^h [JS>:fE/TqРY5hҶB+65aK·#hV=Rb/. _ɰ%أUq `[P@EEZls0qvSRF͗K˙cGtmHA2.`g}il"glal}]ۃ]} _QQfzݙҠcM<_d\rm q 9MV_tPÇc;)IVII^&*>!!~Кutmr >"JIb(ΛCWجZ6p@ ϓ UJ>#`?#N6gM41_xoGe <À 4sCF{RLmOpu*jYաj=6Whw0x!ܼa1zS_kelgkI7逆4ʝ O׽]z[]@VdOʐw|YF{t@vB[әTqS,.f0\ X($'hEjwnF43,Y=~[cd"_6օ$SA)oCcj.*6X{}vrvT?#*|tҙ-:&V4Ⱥ/ ;@ă|<.;d TQWm:N%Avlb if(% ħFa~$ҤJ%LX/M IRν'S~օ|E],*!Gp6i.']s pbQq,üqdf/qiXTy-g Be|dPu}۱g7gJ]85®Q / _mUkDֶZu4j0Bh1LGQCƓ6Ch#4N@|^nu{oЕ[x '3E]c~dGXu.$HK{[ٚ gI%l5TK wmL֚fCn-sN();vY 7ͬj ǰmtWeW޴ս nP<[@ꝣ?Q*gχu<=Oy]T9'=k.2=0ӐD?(+se{hV. 򎥃M;pM-YF =" lJkU+V)cs12|95u<ůw;S[ *ҳ@|oO9-XgjnxYu- b:!Y#Q!@X5my;~L$! ۅFwҀT萳'MCB9 AY_d칈Wa>7o() eᶵo%킿"~=%?1 Jt~_]~0} ΊÀSTgqא(aY^+jˌGA9 T)o1@0aZXF+eF| W$JJ{3kҿJ@׀L1W.)VY,);ɿR6ራ-6e)q9F$uiiu:~x0xc`>bA~hi*ؕ:+b `eP˻bWrTB\I@ZDZe1&)CVvMQh$d|koSow^cn>3F׳M*B0XK-~JHeM)d.*f!7+z0ҳӱJ'_+xN.5V!JGQ^Ű?⽄bz w h 2~֗UkQ `p!YJjn_?d)~@Sk[6Z PdUOPn~&'vCB!F;z|!CJeC %dX[uDدn!ZPOr Nde_Zx!xܳ_ʦ0GBÊQs~.KQt [sx 7gBYL`pUPBc{%ƔD23p'EH_<>G%`jM_࢝A]׊ˍJHDjIqFOLWlaЊVT-}Vң*~P~}]9 KȫCS.ʼ?3&ks;S؈ %?xeHVx`=`7]ZkISo{Y琤΢cN{, z|˯eGjqJwy^*Jh*#qfTvF3>!j ֠Z^&r%Y/i_<4R?,GRVO* PԞ4o> =bkOZ>ȨZ$(Y NHɋNܦy[؀s}*` q5VL^uW &3,ѹR|0> ,@>LfMHDVmD%$Ⱥā $NNI']dF+0aGAuliY|W@| 4G 5,Xnw,6-|.U Z+(;7QG02GCw ailT{c } -Ljq]7T&ZH]R11t H۷*Jn fh 0s-8|nH!'s<`y\F6v(J7I\p902a&Dw&lj0t|k5r l4N'J.Ȓ>ծePf\HaCF&>Iɫɧe ##OH\O"%69EgsH%&qe ,ܞm~L`32ZK:lx!>cձ-ֹbyʯFi=NPg¿R:. %`jD0k 0>OuW \,I3|@RTBn9&]K!GHC^0k?y(RFO47CSʘd>܍_i3|`iĈÒdz+ib=)<(v9"+&ًXM骝#}+>*gnRZfxh]xSHlݸ]jߏJm9]q2iK!ث,I t%Z\׵R>`e , M}tnX>@&zg{Iק56loX P`PgdjrnkWhM<-:Ocw5ⱤKy,k ?:y@v}RCŮԬƑh;=*6p ӷ]4K݄R>Hz1@^a\kQ qe?fi䈶P oR(ռ8]Dg?03Ր:rH+65ZL1%0a, YSfmbقhp2Vnim1P )]h`#!M< .׈:!~ZKkDf Xq +ԟհ(dd<-4' :-H;"<=3ך{-(8@9 R7 ܇#E %'P8԰FsIMNPDc@7Xܻc״N9ҘÉd2D2ݳE>k`Jh%X+)`72k@yq6-koī f uad*PRN[va׌kMR0x`h+>OxeոaDjI"oYdcΡʺWaUb\RH4%߫O!]UDƬ,}I  BKc9u ez6HCu}\G/S@06EkMǮzJdqU*}=f0c&/' yLL*C _;98M@@5q Yg.]< ǣL)wzHTd|B?W[s+5W t$DvqOB!e3r1{nb=o?@o-b,@`*)_yQթcH9fdU| VbRlXfVICt.7ҩSSad Q¯Y@`,f#ܚmJ0nu\AyaYU򄔴%2->y9KDτݝ!wʣ〧3VMns$avO" ̃se|"HhNfkIdݐvHx`ǻEsY)`گ25%ҼKS>n0eBȐ{nEOm&`$;zx  j;幦_T(4x=yif~C\" ྙ>!Nb-"P h g&yD2fdq?j( y4H2pk7ޘ}[yh痐>U} _|#&7Ad场YYXѧf꼎\Ny VRcە &96O{ی>v;h׌onw+F҄ҔN^YӬj } xz"o,$=)+clTވ~sMNv|dr>ۢS>UTkin*"6qWhX\ՒۇݚnM_>6Vr;9X2P֝`wSKtzs(s'!)BO|oӔ)f&9_$FDJŁq/{sEERc=uMɛޙ'3ȫ%Ji!*mVdF<`w,[}G-`>JXUJ5d} t{7.!׈1@GX7Im'\uw'^ˮɟvjk0U PmRlƴ-PGP[lMUҏ9UBιI dôPp=; i8c|iFh5{te@a^Ϗ=Qa~nRmOwTnF̢1MSKKq8"ͻ(uPfn}&`bJb䖄MR`bM&s7wf{%}@e?R;_>a(##Bg /\"b[Cx![2w`_4$&}4\MBmR LS0Jkmn ht?rKZ2d؈$S9<;^e&pU-uuKf̉Z5JY-cl#}X.*.όQhi^uo/񣗗g_ ^*!,0'$\ gvI z䧁jJwuyː٬#ZVZ^"E%]CsNһ(3Lߌ#o]] /⦃|@IB lv?pZ>,.D|"!,(svZtS1l/^'@i[utƘJF䜍Ԡ RBGz ~x=hӌ৳mxb, kYkz5MmJqy#+^6M^=ƍ8I=*cwIb"9I |<]Ѱ3'&8tb o~: xJʳ I=\/]UQXS"b1 =;Ǒzy¯#&= j$x:jgH "h2/bhcX^6k pf!0ʩ  )ߥ $%;6#ц!N:,T8E$i.&:yetsp"]xתU ?B'I&o,HpA|eۜȚ)yS 3y5Oa9(B]R*1Ey*q$Lu{NOtTeicj| o;=|dnGJ;'^W|󺽪fej"LN%-x fz=zs&h2<7MYZ0Ph,CF50n2Lkt{@#μco!3!r.+ 0^/3<5KjfHŚLA{%+:Ч ^84SۓUDY~B?]]zmo:p8~b|&=gI`xo PR25{ʆÙA؛Ǿ45q.,\d1A8LOwGD[ T&0|஺AM:8\ :6|("Z@}}W"ҐvN޶xO괆!ҟ{_M 9?ǟ<~DegzŔ]=-z:ǵ+-,8]Z`Mʃ[Tu&0&bm &8G?1iC4JOX:thܓSˤK@#u v)3/8z)ߦ߯`׊iJA5ҽMƯjG/M *έlioT)ɽ):ݡr_;!\LB1qP~«mK3.PI,N\t{>haʶ@{H,}:́c 61Be{{XR:-S+8$}1A9)]({+\-mY"'ê#LjVpT4g!}[w {%^_+z- \"] DD(@3 y|.w* y:ˑK/xEs‹x-Ta\4#x*a#P0r bd`\5k5h[jmEa7s{Jo0pP}KG2Y]l|GfZ>h/x|'9nlA.D xM:?wzo>_\*0׵B ״Kmrmo{TG:g R%6/iٵ򢼸gl=RD ;AM/tOM*,`Im.!7抠IV=p3l\@Pv=-N;ֳm]_簒 _?}ķƼr( xP3#'0`x`7ձy?i)ca/Ӳcs_k BgU]RE߰Sd:ԉq 9,biB1o&s׌2ءy?pY;یeI CI˵膥% =n/;> M`.RQ Ub XT0CsaL-!skMu+P2| {=Ktb=[N~bHN3ATW~A<\SxxWmZB"}Qɒn͹ݔщMo#ZD%x̺ },;-l]9஍ E!KxmZƹ;GK3y-O̗OBTu.GE5 pUbtw !ŊP/^]x-eu0%nϲa?՞~RY=]wSk}}sv\|;|6%P7b,>߉+u5\^nXlXbu&fȣP RJW/f0Nߒ?%G֯#ZFxkFB3=$'djJ*c[[@BNDuNON N,G?m{Bʖk]FpV˛NbX67kX/hafdU:">x=Yz3EsBmzB>Փ}}_} ⎡ KѦ# 0H$lDVq;#+;|~>sί9YTΠ}0n`4gG}rve'6iآh\FUI/b:IE9hJ:D., NgP %kT سʘs::>OկǠ 6-G 4 L=(LW,x3/d-mzAF[!3'@9wv-zj^M6}[14zroHTۡ#JDGIRпQֳov6ҽ.?Lw겮S{zaCg<uOECPר&F(y %Hȸ!uM~etBt-В5wz1d $" $ZYl_V[zhkwYMj`#Gaѡ5C\a[xGTpF3i=ڹ4MD")8d)6*otqʚZni|C;1J`^Tî?.ð]Կ@-e9m^ 'bQL[#z(ˤQ˱T_Ůӵ"56r4ls$Uo}#.QcH *W:@3t*:B Ъn^K; YNY$ӞOյm`Exg$B2&UnL?l̞뚑e=L"㝺)wy\:0w@M#;R4 ʇlOH5 ])8 ]JK2"κ(O)g--y{*Tcy@-=MbETv ;Qu`gh a3S{-}X9 º.=Em;ْ7 Y=~huŻA<DfD*n>iӫwqBV[3PBf#gz|CK,FŢw^nD Q ~?N*Y$srLJM3Zr4"K'3Q#Vb{% >:IsaM?G&]BJXd5a+"٣/M>7[@n_ܡen+4"J\+n3û˼Jud̴5x\D>YIj} {0 dKaD\GM¬_pݻqy2(Y" ܓ$g޵6h. _d={(Md^}ۃ?"d"T_Yȃڏ-vi$SftObI ʞQf\\"GgIiLuy?~귘\_]PY.CD9uCm"8ĒA 耮2%C tC)0'\0L+SUյBOU@ m)v]xBt? "uf)Y\Jr|/43}v|7.#^#i> g6cXOX{{0$Of¬Y#ւ9,螓^ E^钳=e*= K矊 =+ܦB+~XX34lai0Z8᥺l|U_ϏZ\@ǽtQe??TϖWWeuH-F1cM3%K_ alLJb]pa$` +y3gT~JU(F"' ;Xd[ ?3Mx+* e1H|FV7|]Ѝ$ڔSt|Y`3`ܱ!EF[kE H4%0e UW4|{  9鰤v?-S ]j4S ǚYrk߅#c KUZ `!I܃j/A o@㱙,&ShzUde5?jW`M: |_27E$UNjI Pܟ,T K}/:n`~kf-EOγbz9G@YIZ7'XfGqfhZײɮ OӲ#oKAtrYGh,!]*tBKLTiDF-t\e1T%_lR[<Àyd1Dƿ4e"Eo3+(0^k6ߜڌ/4,Q6GY!p u;:)1jr:ER)-tFi|-L=ٿJudQg ,'OF)=,8'iR8BS?nX^UQ -b+ݪOB覟)m0;^0Ӟ@ tonZ$ -=Um?=] pJ+GUV'O9K?sc۽20P)JXlC,4X/MOnqF{{> ;DX44K| pRay=o;J)f|fj aHKfUI9k a^[YiQ~@oigE% ZPãY?3Cw|5|ʃNdk뾱 tW=&vӶR{m@1IF8yECFܡ{$òr@$7G/~ "SdQw\f S-SBCML ކo!՛,SkqBVdKĜ9s4dž)6Zk̢g7peЕgnՙd4 ZLP)w6IBWhYၮ,ZEُm~fՒFt\Jg~{&}-@4MDc Mͧg]KWRt%*ސ~Q /؁X1)5;oL6 'fM7ZOvp$SrE(, Y꣩mHev.c%1"9oM|2165Y xR3.W5%L{8ll~qy$`TXbl9AzP[C+Ճ'\S*,̥TtV٬&ClOkOPZ7:UJVdv$S &MAgu׋lMⷃ3~T9QdYVJ!9im,&rkb[&Ap,˝z' ڐYHA{Xn(30\XEȊ47a{@1C +o,-{¨w6@$fs2 GC6œ[cHKEH)Wd,so^ 4PjR.CoXkROoK{"jݻeRg:uE:T=GZͫ~nnZي\X2z*uLO2^uS\5ejb:C>xnV2CPE!Kbb),,U-RLLzk[ӆϝps ],u2\sorItmidZN@o?Ur6XfE'moTx lhyh_[1$SzdQUa #Iv;%7 V #iNߒa~G\ BFkM`-b6rW篥ٳ_f岒Qk`pU܂zHv/TBϲbKɈ)2:~<] Dg,#:!i!5܎Nޠ,C{"hBꊟA{Y1A Y0?/_!_`.d:oMOO/WLW89 ;JDSQL b&s]@x^:($=,ܦuV=7WX"*܅|:HQ`L>NS˖x~LTn#VHE9 Ųg((y{_k[%?ﭾ*4[)ߩ[-"4X Tr^1WWdeCGNAhCPA)JTo,O{J~9H0}Y ) kS: B@@S^^o?5;0 ɑC 'QHL!:jy$2rg$(E֨,Cێ_ ?צrG|+mH]0}1N #5uʝmo'Y|AJ^L "1\SE_-q~Ze+5+5tX Q{;GN:rcB._Q_5ˢu =O[ 1:>y("UPMuLXXON[fT}ϔ -b,tshe9b0 Eu ,虯tO)Ma3LËy=#$(mq`'[kÌىR(He$O#];.y) lI0W:yҚq|OCB UgbGY|Nks>^dW =1ɼkdodlGI ӄ@j3߉%(5 Uժ9CjV=B#dL~>B(f w.KȰp}f[Rkam {K"IAMqdqC}![o . 0&qo:R g"ܡ2xԗԋWr8*z(ps>in`pm^2;I`6o5ן,")*6xMS_ W^Syqəkp{ƍU(zѵp|S>gI :p; bwNw8=mSm- &]wj9a|-!(zaVv(+53pu[/ȑYa8M mTgyXΊ> >"QH:F'J5J6>k+GH u帲|{Gv!󨶋QFԥIix$i AYo:%8J y֭o>d)߿3 f{0 CQdӎ<'VU<=K.D;o.3%-g"M8;kLB_؟Eu,gLBI0vk]M/\wAOP?DRgF;\0Gk,>hS%(kkmRAp \YM%q+^jsi5&5BkLU~ô\i|vy:ⳑ̖V\FXQjʝ'D lF _*,+݀8 sNd %Bd(f|z@Fs`+Ϟ3K]%Nmap$R%؅\D5@ޅS'T(}}Bg;g)S71$TapB{ lAon 9i4C㽸i\xq>j CbE 8xgkz ivϧ18)wUOOB7f$K AuPƿaqՄqVp;u;xH٭QZ?46==Pt V##`2!n$%v8q~ՒnHIT_eޚԥ\%25'a7.ɝS֓nk.>`sg&wu™xNQ=0Ji%,<B#/t{?UyF Z-95rB;3 ۾ :֔8e{[:,IF\7c<hajҬ*r m?Ĕq yY#KU0'k4odk#2,Օz[vRv(hO6fp#{E0]wJ>ge$$=4tDP3^`{EjW:6'- FaΞU=๏29(Mb"v)%"Xަ#K"Z #쀚_y 8bڕdvajF)_N^# RlU,F5d+F_^Ώx/ ۋ'[${Ci}oyhXxh("M*$>t 57,́`OpfX e L ckNY2EtP/@Xd]{]&غ!UB }]| R*iN|X~qI4e7Pu[=88K!nuT?@Z  @݉誅6ހ o|3*NP-Dӈq@ :c$4k`A-Ĝ$Vj7_s??y؄G[KDz] g8һDiΗ&}:)~oc0w| [tH6Uiu|jQĢ{¬j;]e6[+aj8?gfg(7c<:s9v4ϒqcn-uofݠ@.8̇OO(>Yr*A40T-ShFխ̄JX[2\N.q #>\zR9d  ۑӊBBrvCR9$HNzcw/axÏry'7夕3Q3\ȇH^-LȲ pwT@6Sڢʪza\l\١cc 2_W_R¢;~3<}ʏXYfߋbe#3P lLUֵ:8n$x]7mSD fOV^SW JuL8_GJkmy=SR8g᥶] lNТM,ּ9d~%8o$=n^q^5(æ\IA9r*2%iaNc<>K0xsy6L&3}W+hkm.uf葞9ڱ>TD`i4t% d{{ $9s9l k8THTi>PڭR뗍%ndb>?]ZCW) ߍ"*H;.%(>nyJu @ +_slGSÙ vӥ¼A䯻RFUOc}Gy%PhN!)5k NX*0eY #覾JmP2:A`&wٶwsYOWcԮE0^8h# Po~5&3;Ѹ-;ؖ"h(^V?G*J9j~|$Chj#M!OJDԢsB< OmS/wO+ΐSŐݯQ:Q_,}u~ih^+=~i 0j`̴"@fZR9qq,=#qKӿ2W=^1 oed _#"dLc] 5Y8T\}JUH\n}rM&P9WOu㘸|xh9ϝ; `v m}d(sȻ,xG4'竄#ct:3g٬JZ͋Zg t~3!C^z6jDz\tPߦUbb 0e06VN+R%?6}ZpѢ_jjJXKQʟN%{*뽕ChL鑜"}vaxi`?_&•pt~V/_EuJ3&bCp*rl?gô5Aa,h:S2e2mfF$]ݻ\O?؝X fY+)na;6q7_ #qf[ed?=dR//p\W'gJp9dk~$$_ofPx& i#]&ǩ:uG/qK! w]YH\z#LL^Ӄ䟟+VCV*| 2||lI{ ^iIV+asHMNpOh yk4O ՙ⤢Bw쾤!/örS)ukK1±lm+)Դ};Z?HqyD t:bLAf}# ~k$.%~~*f!f( )Uns|==4s|"N5 fe4 Sֵ[h7CC[W)-ZRpd*֩tA1xr'6 ei3`< 1"ި&?|B[:6lȟqA‰k]MVe] 2T'En@FR)4_s,J:/D9;"Hpw~yFj럧2GN-W:M{٘ LFYoudtEb"KL9VM5&O:#G s *B  u6i4g֥ /0 RLfIˆIPE{qЮ+$au`, [f9,dkw ڱ~J.O(쩝 F/.NhN?pCv2;iuU|l]c)K찊0\\S()E*x=g?(~ŽyC.!LesQR௼瀆6Iww+`j.Cvgnۺ>*kBtg .Z*%~Fگإ!.yˀ±%Ih^~Mr. ݯ,Mћ3y cOxD}6t-s"KUAE.C`Vx;~kq8 eX"=W\&;(qV{Zj턘H TFzGÕS_w2-tiY=~og{Q8+Uo?8- cGoڀ7'L. : I}v=ؖL)QtbkMm{=#xRO]*)F<)#~-྄C [xE@UӍjXbxNirZ} oSTSqK/V8Fx%ɮMzïokz8-a]-0 11 0Ξ -:HA.rbli՝][|֏#2euΖBHll' ?RU];wO{V'BY>m^^gxf eWa|Weds,!à9U,hol?M&IߋkZǰ%^6J;{ҴBNC$`۱0S^Ɓ&v%u+sю`fuu3'vp_W?PP$#5qC=[NED͆*8j=bա^ƄoxhOE"B1""p-H"m9u)qB?~ic?1h' l]'e7c2`FRh;(ACfQxl6%}N'}sZfK@!b+vK.ZnJ (v;scl 6Yۥ%rrZ4bG1P2@JU~NLE$X-|/(Ia5]~x.rS{,4n,+O_ߕdr;xU2zbwdr=!imN|/5S2q8mk\muގ:dj_-Y x8o[ibNqNVD!X[\Hs>G/lvڛu[ޫ&Zh_2C$aWWoCɓ>’Uۗf]yU;Ӳ:v׏zDiXw!z"c_Y"I͎i1j*KX,tjTBmY\7k8o+JG֒+($LU'ΐQ[j>hN-|>HE+M}V3cEGJ>@7*#vȃ#*b]u:kif`HɁY5H:E Wesb_|;5/62[ȱ!@uGKxS[b^ +QV258o#~M<"v`tY OI$R`#bL.YB. "yD.a:=eyH7/Es I]>Vb QG:/maK: #sX1"x#ʼM2s"4ґ36|`H="GL$hA sTj"!ێj ?ݯ'*b([b糤#!g1 ARw0]5BC* WV\ii61 n2He&گɾEV@|G)!^ dst#gOf&4EV}\ <Dytv>,-Yy%n-y8`l6E4wPx;wTssrYqD%A)tꊥd ѕ15Lo5ˈ pqCQYHmtvZ~jdvKƒ&<+$ha^s0wuC.HtjWF"um-pv &߇x3MQ (gY>SB߬!aUCoZv>jx ԂRk7Ec8m~>}lUO@SXy S.^=3N43KUB(_%d.+<*`\Hzu&zoWk!/n.56zZ׃>4\Jv@(7h/g(sp*!l`+pUZﮕL~hLӌ ?G*&Ȥ/G/XQ\E}=2y  }-| 1=qdŋ1ܐ;FPY}XUXB3@i^`nʜBX)- &3+fKCTz,ߣ D֛d9+vx|?w6{gM ?ceD6BX T6ٖpw0AO8"Ӛsw*G(B5sͽ `EPv*$(:0V5&n㮮y|GM/xKgDɗ=` E&2jVRy/jvf]6\}|4|򢃄DC9> @$,嵪~}-=BWvI)_hRM۫ok*qlZ0E in@]V&%ڎ/Nkˈ?v.>EF ˃ b4S7Oz.i)\yGJfef䇴#fg&E#aDQiŸe*[)ݥ5Y]nsS Ij\} {dA*xgI߮ o|Y O^[)nП*2Heب<¿sM2 Nke5LW x.ƋN"?Xs846$t v:w6L쵍D[g*λw3ݭFrb?@)P94 ؛:SlmP-3Wti|˦xŷO8_ƋY@QtnEg)`*M٩D)ۼJpD$ ]lil.t#85)|]alv% Dc;'m۶͎mN:ضm['YSWZ{61 ,UXR,s˻gzPЃh0Jg+k۸.5il-jq'gɘ4M" &}䴺AOd8#Z/=:=`;Z{_ݏ74Rx&eX fpEC9\{y=X&[J_$!oxH{]>@8D7׮}=g#4o\03G{'B8-R;r7n[ bZi/48T.I- @&2fYOjeJgP-d0Ab⸑C[ꐆi <a>="%/c z>OWNJzPL$O=doN]u۝8@0Tye*R<AIӔU&|_sy}oP~Y[0Y܃!'u7{SJܱhӱBqLGCZM$TqI/v-z|o i4 lF,ڏ1Gc}D` %'V[+6c3Si೾^ux#0m :g%0b֘okך~H'Μ#qVa%~~P~zASkWHiԷS&P- мǖhҲk}Gu^Ew{ ͟入uWFRqt"Ғ޸ ~ۑzEc.BaJ//ފPFn+^<Μ 7Q -cT`}ЖC wYrAy:.M{1(*pS s(jq_}.0J[wR_s,`<1,"V^ 0jeLU \S}hQ%%Uf@UEyp{g(BSr+S0XG4v K83#W.C^8UvTց?aD.B=Ч2sHJx*]kĬi({FP:SY^_mͧSx$ 9_t&pU[@:NAӯ〾!N$tfv̧GeKJXIɾqbw^A83p a%b;HbU~ =0IQ@G12ڜ3XBLyZeϖg^3 SG4`7o>$5䃻[C|-<ŭܵmFzYS =kC'zlHv?'~k|" 㜸q,CN9/bTv=X|,ponڊobNFD] Oe&כOUk;:P Z/ӣ'pL -rE _`Տ׍NMPL`un6ƅZEwqy E;BLPb39Lߴ|c)1Vtofr%)9P`5v]hcсQ"pKG6‰enam?kOYa8g;M~r.\Y"ΟG7N((l/BPlEB muo gكeY}HĈDK߇$ͤ7-f%3z1, h:bŦxtQYa8{DM;Bߜ=VI2쓉I%GBp-z8UYir./؄@@^*L7ND uㆎlZ. .Vz14FGg՜S+nҴcxXbYU~#/2 3!; H1bM,)jLiP~3*U(H>e MD UXٷ]H?1a񺞻@ R1@]<G1Z.N`.rYI>,jH~&"I;z4_o(ٕ)!5SPEjVSѿB(SndM7<~l&9b*'j8,Tf)HinF0 z@x63joo9gqAk쑌cq' +#6 ,T(6q̤8 F`\"Y-M+Jor+tP#^ /y9238ZlFd9C u>Ijs+ S)Ubd "yCv%D*b͉|bĄNjG)ݲT>4ה]2А.",H=448,awףJ3=2F<~ar$i5J 4nYjDʇd694ug#:n%0__t PphԕSv״; 91Z-A ;C@:-Ē.^; ln!+8fDYO+y_ZJmF3D`̈d-%(as1p{6- 7q*gRJVz˗e@՚s4J>Fh]8(l;5H(݌sg@3*d<qPXK3i%m. Y& 7ƳW+,Uͫ0 <61X~ tkUv~W ,."&ދ;]}u-?wbw m+Z+ЪIAO5dW;6 4;1gm] P$QĢqxpV^bə*dQ7kIdd3;jc %L,hFm+ס4-qֲkqYW?NN@yZ1vغg%>O6diáNùK4~Nݍ>h g2j3:-6emT̔ku{fG|ȋdxGM];<9!nGgEe9eһ ʏIf) f#?㍼S%C5 BkV9KbGN%IXPC(ޣȴ)B_f~bpЈ xm +ECf ^ųXxy`i=-r rfb%{?f" ct_֭}f<{RWP<1Oa:Rݟ4שsåSSS2IT<*F[8i9axNܘ|C^_#4:9Ɋ8ݍg!T} S*x%dꙧ'z_I6N:%G#' 0٦4kq"(ů}mvʾne(y&j`%geۙ(%==23w1q6 E'ɱS} 3ՐȬE)N!uh^uZ"v!Ϸ1 O& M]N X|8yu/W 7szC2`ZLQI_d c^$WV$V66jϹ ] Zr9mFnu# bwM\jٰ"!a~;bjSSb i;EU PFS]>.}rS`&/,8;y P15 (gL*KP>O)9(ƱF@r6F:9CNuaPO<(:wPYrW;/m 맀Z~OMCɌ9EAkz%4vҝsLz؝pYLY̠.K.(Ri 4&uh5^XlTwN›!8־WWy۫>;+NY̧B@rdT86= G Ҡ K6-;HAldc҈2EE8br1yL wZyMƏ1|JvcWb&Q \WX2"&tjK 쒢x (BO܏jmi 3:"3j"ˎZX':E^Rf߶_ ' Ч8$]b0r㥀"] pHd3:Fp'-x.cU8p yR_֎lHs7UxߌtQ.gr­ q4l)~Jz6CGavw$_Lt'v"̖&ߪ+t;% n"u. T 52ӿV+jEd64ũD%~iSH!"+Dt}p錷$)md6z&u:渶FbL q( s'`G9rE0T )LXsEBq,$/+2\ǔF9 nܸl[>rLoyfly+EǗrw)G;k!*qâ_E wHȓd, ]ˊ,ϔĞInuwy>*߯yC:/JeS.%0Y<7BV^*~䃭n|_+Y4S~5ׯr"7 Y>iF_pW*U:8vTj;]LQXϱJ81`us+w8qzMYgU2 ԧ]ԇa[Dljz!_o4y{/udQ8lPʤ{kkxǍͧNoK$ET\Rb1!ѹ`/8Y9 ?'HG5VzRk;4]Cm"yֵzGDf#+"TOB8> gŷJ`",Y9̮]P:Y1"?YR} JI Ƈ}?k.lS-Ζmd0T#~,Ȓä B2HX[_d^}"$1^>~_@X'3(\\׺N aΡαot1K|PyHa_Lw14GSѦ0wS|rڡHJ 5ET %e ;vcHCD|΢p}M-A{RfErƲ2U^@[ "s+dځ2G:we nHR&$vI`l wb;Ix{L2<)r&M9`y B?KA~<†ݧ, OxlƎ4nq<2~':|ж,W\y!eI:2yT 5Rۏ&q 9#R#d, e"qkh B]  M` Ҽ8 }naUӊAi]p/: yH6wNП3JIco7/(/_d^ӾrM Z~zOǫTk+bR}0$A(;:;yM)X 忷+왉 =m&VbV9N0`bB*7sd,שuq]|$JwgIVDg{tUU 3D-w軑"ARI10Da;~)# Y@Ej 􀯗)wN("ԻQ'so4c >@95#L#.5@$+>F]z(5x̻NMyf\`^L2ט"D_Q%șјQ!?BΨy!=KyCi& b+yS^ɵ* eP^lX}?S7{UsW/-Y.aOQ&n_F8x"Hw4}}% N!Oe*d18{ |.b )'"5y 7RhյR_ҒVUHi'0+*5TĬl76RE-Abl,Ys'o5¥v ]Lz/;wRHw%'엵kT̑iyמK}S|~S>wwm]VzG#j3XQ<4'0 8<$E#XesVp#ps4,0$`dM ~~.V%!X8.sK1!dQl>]LD6X5;$lv:4޴!ӚS'3}eM4.; ۸dOknd;6L+:jL%Zr~GadaXz?ckKĨO{19V&T,`͘P1G4 4նF#a y哝O22s'OSN1ʈ,*T`LA ԉMԋz\4?c_2^'V=DO)Qh !uG ] Ym=Ҩq(XQ`k6~%s\{< @po訜'PߪEzWJiU!ot7L._ߗ'OľꥱP˸e"S$wBm$P)||.` ⻵08tkg*@@ߵ+.qNh ) v6 n꣮UL=Ӻ@s&:ET xc~%Rls0p=򀃷r\ڱ D_]ܻd/h V6qX`+&L* ߋi6OL*:!?jUƱiT #7Z8{O|ۀ!gGn7G!eO9C. ;#Q jڵ{s-++"6ymK+g]P A~z)/׳7UQoeEeaySYn* !@x~{W)/R 8>uS"]nMClY0Lqހ*au9 DBK"IY_)~VIxc&;K ME6= lhWm1TSKv6!-, Oߌ ƙnڌt> XAaoUDk!Vqλi%z?5RmjbТ"c+5@/\q/dB 5ĆR`zrLD[ikx)Y aDe6 TľۧKύu;E5N=N,oys e5..Ǩڌ<"+oc%8_bk*/3q[NU+)3~|Df`yɉz'T(H^JをG`Iڬ_6KJ3&'%`:ѵ}jjag=Z[<@Ɛq&H) l\>U51ўO/NAUPJZ7<1#!r;7[ѱ 0nvi"q.wj%"&s`Mg:2 )Z2,OSG qFgkꯐXPYWd<6xV ߥͦ6Y`c_W W2Fdܮsf&41}o >9ղLkGJҀG&dQV`;`q)2怷*ȆuH%v᭤4d ZKG.rĤ QL=d8fp9Pylk]Hі[dQefa ƍ˩=A']dWEio~ 'ۑ>_wgZ.#[zuo6Ԉ 2J #&!GQXD,ϼiR\ZcaE¨W&!L?6lendstream endobj 10 0 obj<>endobj 11 0 obj[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602]endobj 12 0 obj<>stream xڤuTJIK4* %uCwtwt ]J#?o08{^{.HܖHI*eanac5[فH@dJJ! =;3)/p@V{!d"_C k9 Ztl!![E#;R=[RF6R ' '#៉֜f`A K'k-'?$ѣ5T׉Tlkc YcT\ԔT,R @ }ܐ uHt A6: R9Td˯XX dZrckƀd B\_W8m-[ rL-]clW,JlB7bB~lILLL +R׶N:n.:6 7FDjkmrsy<;BI;Bbtlj @R_?` }[:=,1G `HBAJd`b&I ,n'( _VYȵM`wJ_Z6 H[؂@4  @k(WO bgj׽s/w/ 7c Pxt=q[~sCSƁgۈA`[=rJ kS9HKhHL*LA66@yԱу$<:l,j+f3- ' D 5qUtL D:M~(]#F[ LA^DxwAĎ4(#3 ;9F N"A"bE?} Ol5z9ҿc[|-DCek[ o&i53[:=2d~hU;@O:^ 8谢# F M㵐RRJ#Ґ 1zJCH3ܯvr~_ ==L ==Ol>'=NCHGoGX By?4-!D ؃?AAHo!mӟ![Bߖw `Csr0"oED~'Vm#%Ӹ.4$NB7LbۗTZa=ͼ(=lgefsX@?[hT E]ό<8x3ۅkkQ8Xm}7}Y=NoRlP3hEG*^gdَqJ$W .I엹qFb-ỄSva}pgOe]u$ 2fj2a[# c*̙$4 )鿈Uǡ$>'qdRhbٻT2{~)go7E<ǛUr="^@x.[Ҳ̩7.2p'>-Rý7.hAAU7|:֨wRta_HvMh;_NVCi1m3XJ.w)@~ܦ.=䖟} 'md"u5Aة[|.Wdm'ߍE;xߞVf*{\xb&ޡ~XU$O:)Q_t+pSd^Ӏ8m\*][^7?rPw|oꌔ@(կGC$^bRY]??K?[V?_KafBOEAط陃p{RJ=5GxC7]J&erp`=A/\;O¼1@r`ZL8z :3QȷbwZHK2r?z^B)Rӣ=Cpg|sN̴u%ja-z]U\^tLf4 7ʈj}\y99SЯ90?Ė[F_|v _k!_(U~*3M<[f`OI4I ~6cEL)x?k.Óv(i[K݄l6-f<=+ZAǴ6^jn a3ȏeEcncIOp(4!I%ZJl , h:agK/{}OaE`b1K1gP/}<?T0&|Mv3]ևd Ҩ7y ^#uۀa0_ꡞXl\|}adBl8F@hDžaqѷѧ:`+SצQ&KKhGLKeZ߲{zPEf?!z4mG*if x8VC \&~U&ErW yjb&IctίHEߖkmRM4D'CPt;h,@}TQ0`~w}_Ehsjuf 7i[Jh*lj̆* ^A 6_;^~I:ILE \U]ՙH]~T{D.O/;t=$oO~QemX)p#Iң Ϣs^[Lf4ڥke$Y[ԡh6tx*0i{&TA$O(.Zle6NNgMQ&&}I"0mԚon7sz}TTg#k̏MZU/~B0Η;V򗂗|DdDU$\t:{*/g15I!jx;o)-ţeNKZo4t/uc\~.ԇ ~8}]mz8f@P6 n,3Х pcHIjb_9AjI2]zz"֤,zspH2yU`#aLzyNQ)])X1!oa E|0:XU]3.jL֤9r?R>G6lETxDb֟J}Vjr܉ 8*q`l>Uɕ^XD`$vaxpNInb(0FbD/Ƌ81zO<]Q0= vpm[)lnAϢ*,f낰&VssV|wiی1ygjs,>86 1R7iJ0U{OQ>e?ـC%:/6|XWPgDjT|K p:KPL(ktUtr@{*XZY9:!%? nP!H< _R7"\s26DOME~Q`=Xp`czIq,ޥw%ŵςu^Մ2&{(0.%Xr,i<ߋM.oNL8Jx[knI d.=mBkMڋ*Ѳ0ebw>dfo)KP[Sͪ7-yMs*}š`JWBr5f?}%PY:{p˘W!gݙ6[P:TNɊpC9gy伒Xmr>N|]N25sjx*j&B\I8$s?f/?e&g tSw6 nPȊ-U4O2&tTwч4ݜȤSs'790WNT-5F 3e(wZstrO𡿌@Njj&8+1w%D5U+bLta̺!T8}j~j[jHjdyu;R5cJ㥓;W¯/.'g^>Uq7iG6|kޤ]fz)(u% a8%d$e E,:ff#QDk7S]-bg(ӮN=OyC?Y\Eٚ&[ӫ;׌tnpj43 u#Q8~nv!!#j^e鍄kڳ3)~^cf051oϻ"МqoinL+:<Gi-R]<ߺ|;b4~ N<МN{ekÌR=udmus oP/бQ7:`rPrU0Zw~Qt2z`ʭ%}4^k$EM3^igxϟ-8JTCoXoRdݨ#/u> f0#\1ʟ\cbQK1rohاcA0[tގ[/UkYxy[؞Zc*ݺuB#4 σ>1Wx謬w nX \~˝0!sY׬6%@cr4 hf/BKӯ|T̟p)"Q*SDSwg+c8UI&K(w뜢:J=Ϟcq&-gIiEģ4!.SD>13꜌F8>}R;=fsr}Dx |'bz^DN־)c7K}'#^jl1ui<nDZ#Ä:eȗczq} 945'q:jpbK Z ʈ+m&?EPO{[:e34AdMP^Ou \e~(rֻV6cfȠޭ̯"Gr68"?IZ~Cߠs*yČX< :=wl!@$]yw erYi/kI9w[mu^Òw5Tyte!ȢXtwl?Q O0E1pDi9 2n,x)w-A# ?4h'5y2X5Zi $#dmɖhIY@{?q?)sIzeA.M3xbƛSI* DM,>&̑8]I-o&Os"n~=OΖ@I(*z%O9?;ʗ6vli7pNf7VϤn S O+'v~ژ%p}G:`@,#,%h 287=o=ɕG0 kaenٰ|Ѿ9[&,ZW(ё!'%gAX@,ʯ_pNxΟq;~z '{wױOHs.n,o3T: RLB@#)w#p7 /a7 D|a|ue7EEN,"% u˱4yC\7߲aYI#hq 8>*o3[=QѥYbD#˝'լeUI`IAț eT\@3DE.|9r(^X|oaTiD~w)'ZF"}vԴ݆LtͪPW-p* J_"[W Oq:=ub{0oǹy$n2Ϗ*`[*ߟ$ ?hǑu`jskb%2n2]~ο>X:{kÙ@lڮQl|Xsk[s Tq,ʘ+pvJ,ۢDrE 5:g^M@I鰎QEgy_eD|q tK.,EhBZH&Nr`A P,^B 0 1Lq3yڔ܎de y'XS{a(Xӳ1O>VٰcߊDFzyWZV$ d*tqLR g"$EsQi<;] $usrwg$/)u+`'< ę0^ m춂WxwM'aa;W#mnioikP{Ʒ n ,wG<$@RF `0b")s!v6ѝU>4g,\st)/;'a% Ujn.rT.({)i yK=U=S:;0Th*щR$賹|9a vtnP.=f?nSv'B/%aiyͳń& ΢1@gn$@o1) ByD B\o?R֣Jq#UGx>iNA32ً9b[ 4IBE^tb{չ-]D *EctۻjQL⌓\۔wf/a &T(K ٠wb"=ߘ65q}CR^$ՊH `: ]!/,K8 ?yS^rM]i4jmg a;>mć.}2gb4{-8ERw5{!)14f5b  AdLF.SwŮ..d.뎀9~>QA@5}IjaukKIV9Ji`)ǵ[ )U~ vfh kg G B,wzBI5k>,SRA|e@yfӹgWVԦ W1kBnuמ5ʓ㱧("(S}%k.fTCJDٴv/Fa|ք$IyDO8 V'JHXr4V'e#eF_aD}Ԭ ,Ц"ɱd^L{hs*֍)Taw7.Yy$ezChef%dp<׍ "{d o_&_"kg#&'$qWvJtdMiz"DVl͍.0Q4ph"?2#sn^`z vKFsӗ!9Em0]BPn8J,*wS,zDg`P6ܫrG9CwG(E/p1R nw/LV[)lw)J%Epa4PuZ+-e)hls!Qj:o/KSu+4Gp_ȼخET+:owKP44Ggv}8nEx(*&01y]S<,f )t]TMdT"+^rqu""G)z#P6-WК}63$H57o'3vjGl9kI8bY6>|Q*X;J'A:S+>Q%t?~jhB9oڣ'z*Ӊ*| *9cĂpCQ #9LAٽU} 9VEVםq߃>bL& u8X}Rqm+uszʅ-~= :O3Gc M ulklXG<4GRQ[YQe0q 63J5|T<[N}rn>[B7J癒x>>!k+aj?2%s}FVsEA~C9yȝjٰWIS'$RDY\=x.E{Jl-oA}d=)rMj 1J:r.4NʖOI;}٘ÍBdf 4q[|T<,{ݥTJbϛ"5~*u9MD^hF\;3/5uun02 T(AaVM}aP[_`e~s1FMc[ l;jO |WhUCC|4yq+LȾ’I|SB+w"ZX›E:zsߺW:DDrܳd溷V ;f qIRtrqSo3:d GX1*erBɔ*-yОRv/ΟqC7C!Tz4Ʉm.xqu7t[swr$)Yzt]KRg=/R7 QO`E+&?~[7]>H RWqZP'zAl9 Rݹj=<;_le>q;W|nؓiXOujwRs6YGR~!`@#̀KVk iYe [JWh)Z.?@d6BȂTY1@1vԐv;_v4x#PƁIfxzq9p?ٍ9'&/}F)mouFߤ|pӳ` _K⏶N{gU3"u LX,hڤM>]kwvRK}0%ɗ_^0 nN&<ؘG vH@r&xhmVڰּsB>x5)shN˟/7]0-<_v;^LOWvqUx`)ɿ^RC6IG3t[>t6/$qzxr~VDJEL}lM932}ԧZSU jss[yF5_"Prr*l7^a&󝭬5)7;ct=~Ү-A:87G=vЈpB*c@2dUZ:fܠ)cJr\ZI ׻iL.i:cݯAwTi6F4 Ei+|x2ힾLlG9t}3yB2CyJV?s9q;*M+T Jty>qtFswvu\ K|V2Py[ݾ/ԟY|a{ȫw]X=~y_݉6zMLjNxw'Be,cۇ<;#;\\O`=C FuP4dS˖7QR3`3pQG#\+~5SKԈs2Ae֗Yk O.)>lG]@r-vr@j NlwoyWJ4}QF\WF弒sWVmCiT]7cI?[?{{Dw!q{h={Kb܀D+QK_S"+ulX LŕHk [- 󬪞,}T7=ik{iLVrv[4ϡ#]Ed5R+):\npaj)ϔ`B0@P8+:gZ'5Wŵ7-waj C%YUqsjJPFnn5{P͇u;ȱ71=~l79Eܒ釡aoXF B3 =G-iJLaoh-  v5Bß@I}"C k9&TÛkT %e8hvSPn{ qUJUf@[ uK{JCr |\afG#kHn{ 4n! S7Z>F4Yae2 0կ_'6bp2?ZCK2q'v"fP(FLQZ0'pp>XdHKmv`2񥁈j0f֘JӍﺍ`4uKBeW[tm xX`izAU?غp}~M=qXD'Չ8ә#U7dTj]̏koaR_q`SJBmܞnpM%T'^;܂'P@V¦ݟ#U'Rc$P{?6ԎSvije>V-"$:9ПbI]TFiǴ\+Eim&Unoy 8Djh<˾Ml= A0%NP(j0>Ӥ${"R;;~#m(\tz)(nD _N9>!OȐ7[P]}[՝*Bl|uF@I1~2uH]>*' {N;pdEs>gᗣ!A/%PN[K]5.&kix٦k$YO9G%'0Ebgi(L@ EJ.fVGp dVHtt=3" ,ۦJl*JO{"ɜn{+aB/S YQv|ʍ|tgZ`u6+vG(βO8^oE 8vȜ[PxH@B se[!r"<k*49yZ^JS_mΉfG@EW3eJggWiq8u'͟a~7Rm7Ճz@bX3RJr.` nd55dQILTJ[dO2L砽v5^QZ]ի&q k]bm7V9L|Przs"paK@O'VJGi.T"a/:'kɎ"יEx($zh8>VU"r?._W;YbEy:Y%wd?WE۵)D6ΕHNY(=[71 u|ÂroZ<"Lsd%BO#< 7fJY&Ku_LY$.7FDt > A6rD\@Ў@OQug7fw gh56.4Ҋad(?89c H_jHebsJ)n<ďS,$Jnt[-pA}i-,_b ]b#5b [tnN:} ,'ƚV˫Ut!^[8X]{4qʜUᙩHt#4/Z~"g~?*Ti;66x̵D,:߄3S9n_~-[ 'Y;=`F#tsWCDZHmZ-E>½(.^aǦٮ!oMi{hĝKG'tIb)$?0z]1ep>}q̀p@j%6KE~ E}A{FGn4UmԾ!L©θ'"سN}3=eOg^/_c0.4)Y=hIp5>]w+R)#~.`K(<I& M`OxÒw^ґDm9p, Y<=7W4:=U'{0 h%c#d dΪ$EY*!2?xdf'BDz1,FٗJ:ɺsǵ2oQ.%ݔ[2r3~5VdTejIp,n%?~mr˫7ZJsk@v较+BeLtb')P3pʽ8/ D\)'$A!\Zgо6_1ܒ=n~EUA5S4~jq{G6YauxN8AQo%({s9ld8/ҼR"e!jN(.L̴\}yeGfa›ߞ~,Z׹[-ޕh>{#╴I+/|2||>U$)ZMq(5͚YdCGTWj+^pYGή Zc.$Ǩj2ؾt Η}:r4" >@NZpm9`M>Hrنqe6}h\4樾`j[8+M)1nkQGi,aN.X^@`([e' b5eHرa칌U %c^~aS6KO{dxB,g)"ǼCbN.,8vnO&r_~'?b3`0k% KT*(EH'*-l$,cD[ض%8 /\>uwסрpԚ}oB@4Dt)OES eڹO<hRɠbU+mbýR` '%Ѥ]6q M &t N99wp[yl W@Ɗ2LO:AN'0=r{)'dE`{606)+GÔЪ=uR ;(c!զaŀ}kI'~A휝(lȵ܆K[ eT28'/>PӃ#PEءfr~"بqZ6 rʷgjK(ft@ԕmV+S+r!9/tۊ%mb>C͜ ĸ;tR0p aȎ@:;e`Um:Tq!y11*D#goP2ģޣt'⢎ pdZh//RܖyXwOKPm?$)<}44IYiSuDo#©|(4wZh1ca~D: /%R )5KUs"e+qJQ&x>SasTHN%,oȟ=$ R;HNWZZ]wdPߚYl}>rg=|裱V̮Qhei)ad' ;T`Ka7õ|YFo9 OY:r[5uPqJ/o5m.L^P[{jîexA8~UWg&n;63biYEZ۽pQ+~j~v(qQAArrX\;8X6v+FF&5S۷`[PzAݐedޙܡ6gbGU489[-?J-B΢z9$UY刭}9׺So_tDܿT@߇ pFt25yRj~s#%BF'{ɜiZdLqͱ]aҒCW̻~6'Η"N Z2($.r:j2zKUu>aE9I߃'f="0vTn[ngZE"{0 j?[)R6R.K&C5֕napZM.4 8H.Vo8ڈm»ڿ[={Kƌ_/Tpʕ\ݹf2ۆl>WtQaez160za͈@b AIj|HhjGK۞Է>qqJ9,K'>|i Glyē[lO3?wO@ A2HFal0P;Y.Dx9.~7&z %4DÎ*,T 8hjm`&(MW"船csE{[Vpc<S\$_ߜ8g6E VoLlE8j-4-k0nZlIGgA(r"|/<~zZ'*9&߶j;eP\`D.Ζ],9tGx9E@][5 U|aX71suyajf^p>or>p f@CSZ%[2Aσ (۬g3~u`]A/-d,V{[Bφ@͂ c9g@65e.5 3Lqz+Lm0_c:)‰^<`%+g`:wFLjw lN"c ;ֽi|!dJ$b<,ڽ=Eoug8]ާڼ|1iW*h6Oi`M3g ꇸg\s㸧PgT9RC stXN™H5jyi30qviG6'=# 5:}ܣi;`ֺ"/i'qW#KW)mng6ov21g0$UnaM@}u#UhGRBTIGz84ZɔQ"bcm u'Ax3OH6"4o@!t$Wܜd+SR2lmn0nKyRBdBy^ZE8F54?\Vتh]tM`*= Wvn}TL5V^XX܋#_;fo9s=CMW*ϛ3_ IB Л5$zrSNQP-S]ZFuNx &P`ɥt!qwP+-+Fg]i 6ooä|$䯅+턅ﭫzaAۃܙKqDG]'PsBeN0=Oan|P_\1EZ.]3y*ܳX"BqJe9t - څ4{73.aj^Ts0?.3 ` .Z*^JH?Y@Ɲvr,v2mskG+/DPjHTy Uqvx+ϣiਮX Ͼ2Ct1AtU{Z փ@0! q%hHCQG-*# Et~MO;_4nIR;<2JgQ+'*iA<޸"&%};C1sI\\dF)"HH)X5&Vh8>BX$? xal2˜lUYk 5@FiI7Dyv.|as$(lG@-YXSZ_1&G{J X6|;$KTfN;[/CtIjW;e /L噻NrC@G`ÊQl:bWԪhjf&qg8#~ y-Ao}9r QuYy2D ž! M:s\;- brM~%e^^9+SB,HYqSO^{Z ;Ħn^DBȩ)$B Hvbv=[ }x(({&dgat ~C闅`T.ґ!bjta[\®{%97jEhzΠo)ekgmkӉ7:- ]:]{m..BT4nNܵ~d`p_ڬl1mj_p|-[lKld1/ v'1DJ+ r!-,V -ZS|Eq(Cp|Mq+skepQ1YE/D i88wONoj.|v [()Rkecq)ʇAƬߟ1l0( $].7㾐(K&L}f#OY/EkEݬ=цێ5@xQe \a/eT\lܭUab.`t0RuG=LwgYc܈``9m"sԠ"IȻ0K-)rBMQɰt=h1k⎉EG(wW o/ވv5 W Bo.CZxuŴ}crlT{} by ?KrƕQ%uFѾXgo&-Y Afl? +o%vèG"Eo!:5{15_\-%"I6S})` ( Z]@|bbRdp[}jˁ6NshjpAʤx1?:z?l?q \tᲛZO4a?Ǫ{BIe.ʀf[ \۞=ɇr;+0 fGtԙOl;RN6xNu]$~32^dsL["b_l5Y# L9S%oܑylGt=,9%qe݊~Eg 5H cnA ^ fLGrW &TIDdrm\iRy4H}HUJ24ӿme2d\`cq6D`2-h8NqͶ)}2̜CYJ^;.ڵ.It"EM'mb~zԋ V'Y^+yh@x!¤H~92V (D~J~:!;p7%p'7̣ *-au;L'Z@<N3P*4N86(ܟ\`kS 57spL␪SL>ސ@yu O RUvnb%xW]*F"%H1$jٺ54 E\ NNz%C_e`1Z'Eh>L<]z$^?77acJS+`*XX>Ty "37~B7?D>POrAخGdʊM1gq{$Pk }"-RVpsKأTDl,hz`ߵ{_gy] #݅+N< 5/rq@[7kD ryGF2䖫v)&*jLn '*;GV.-Onl p^PI&q}XpOr-9HS ^jC-m"8 9rCsc[k²@727* Qpd?vb~!'qlЕMB G5MI[ -v WsVi"tLJA펲&~;6~fE ya\B Kjx@ v:>Sd,_S DFB%Y:,hԖU;h%U 6?S?Z\?E4HDiea0p웿JSZtO*Ɗטn-W. SRi_p$Y<[%P&Sʹr2 E@#3=Z\LE5l=SbcB_|.A@-וR,{0HSO,ZUx1e4C:ޠLw2~ju %@ WNTJTu"(~]~1ΙI7&u3F(5.1 X&T- DL]zk2\-&dU{˒ ֗a3mlk+,`wL n䇞ɰ>>>5?Z¬='wB9Uœ~MTDKP[Q ]@Y`ՉS#˧\x-K ]OdͰw %i?Tlz[ܑ:۩.> Cpj/GNad ]]"͘K4^-Da'`ilAFv^\ S&%euU< 8+00* Լ>L} ٿqы1rQZ{\/ + J\߻tQo @MH1 =(AD%:|Hw#D"jώiׄVub;ҧgr1Ĉ}z>ݠ\rĤl-U#Urx!(^3ŷ[=N sAGV98}&VN ?oIQ~R5l0q]@jQxoZ +3 oHԋgGq̻e-F4u,i970}{f%tuƫ.8i05 BӫK>u( ( z[, ŋgR?p墵ȇa|1@Й xݢ~Yx2YIL\`)2]݃Sܑ,yT07B47Y@e2؅bpGr$/Oz (vE:k[KBw+u FK}ApkC@J55'%qyvP+)C;޼89 k'<>nȣYv}@]ه"+'=wV*"03m+Upo=ԗr]j/6SBqVt<.35$#4* Վa&a<%Q]@iͪ\Un AD.0lRJkŽ+wگ\b38}KuHc~vRԔJʀ,["ԳnajDr?T !J2Lrn!y*`pfm Q8NהZOn$Y?Cwbrp)I o4Gï'ʂւH1W*E?w Ϝh⶧AX. Hˊ]c:e+0_scbObl!r?a5.fVbwXV׻12e^;gj\]kl1#,?C{iIڵG'`L=,DU uqm! R{k]l9–.mI@Vsxe$e~7!*hW-&rz1mלg>m(}^r>T ?L*[.$%̵́Kn|͔}7 3ux}^w|-IxFn5[~&h[h/=ץ /rr5%EGȞ`,NyhdkJ, $-q̻jX ԍŲ\J{zT*\lfvFS:d ?"-u!i~*g0%CՓuS0 YvA7h ۮo79xNϨnË`y4{md]wSkt^|SS1)V.YE ER ZIlp$8Qxt;rIww:gQ,FɑgQ۬Q^eg-ܕt̍Ư4wDŽu}NR+ϒ;A=AeI[ܡfz_&]EjrGR B3oª]({w,BV^5L {K"IJ9KLL.Ĵ?J QϮrI,Vzu pJjzن4ٓ8t%r ʧ'PڭQ]ze|{&r%h}d#_*zs\136SwB#*G?;q~!?5+b䈡fEG祝W C]5QA5+`2L<@\N#g*B7CݽӮ4ɺk3޿_m~mQ::M_U +qnOpXnGψ-h=J- |E:Z Y: ~8b5SJMG)63K6 P UȁN_(4=p}G\8=DOe)ovojy@C+X7g.NyFL/|W,( H[*pܘ^Cũ >N%54ҁa #ʵc%U[F*q9<7R~>;NJr=ܗ`/I楯t&H}YU&noݼQy旺+F(Zw";wJfчv1V18ڍK)a|פHHМ7 tbi3V%܀|‰55@]fuZ?G+zYjtUh!~U-_G#AkD\3ܿr[c~oO&Ru~}EL "߻`!)IFLAyKfmX$7eṊHct%XhzLEuRQ⢘Z=DT2:NVSc :cIaJ-_˃)(\)T!f- 9Өh 'U)y g$KUo&UZRbסafu`b(j2 L%Ĕ +P":cXǑ>gf/.='\'^ X*kzrigvqQf/%AmQ{i3(zf@ :}$JR?!3P#V9c2,dc͏N I{egWD*ݓRH#>&hB]edZͬ9 g˖ksPjJwX42z)%~涵@nim%%J]tr%oJ|ݰ6iZPW'x]Dy\hU;1.Yf5WpS E]TL6|Xu"R2Y8gztn*:r*U/Q/J*BTP k^{Q?%tt`]leHs+i^Hc/kEoHLKaBw 7Л K>wvALx6fEtPdRf߰@ |\lQ{o>!m _%ˎ M|(%v:&{RF juCyP;pW4$5Yo hf3Zg9zt >NV;šX9fAދR vI5%қz 3!9c@H+c%qs@ }nߕԒ=c >v}8rk:6ExHLܸ1N}e«~Q/fu۾1B?Neݮ^jy%^  wK2h2~jd7; w=E%_ggI oA@LeoG' FTG`1[oAP=0tb/7юkbW@H8Pkejs]1TN3i^ VBN ;g*HҐThe(Twix `j)^,'%H^&eO\C廵\UnMA|yoR07It>$}%\Wjь-N ?}&+麑u@4!d:&U]fj>4acPEyh< @5ʖ)&LeF=\n] e޳OѪK6!87셍f7ymI#J4 Qu k eT!`{IR[UIr[ EsX50Kg388rP5ÿ( &YxYXNTY gqvVGxwfp?ls!*wA.*xGE1?IFOXҲHT>~$YqUȗtbT40a@z^ {yS '\(;ô<FxT֍pӃecDG*ntLڰ^wk4䍼UĠtm} ۫chF&R Q#ƹP=ѥ†5g GʇNF!Kd%YRƇ~EeYt(s{6{ӽm(BE<]Hg1,W6~rtv#:Zޡ +ஂj L**s1wQ4.T"Xәmm#[j"=b"Ot,DŽMdw QW5ɮf F"DžP,XpDe&`? Zܶ.F*,vh'-sv '.;[&Үo@A` dy0a܌wncm0ݍD|rE:7чšeȎ,$DuwfiBڒPEN~kgg[WnݟX4HN8-&pХ?/ּytdO5-aQ{xVFi/ xʞ)3*zhdQ'Dwa%Bb1UIwh=LU{JCRO43ysDm)aCjޗH"1^i< 6,`An0EpyqK~a跨նܭ0VZ$X^Dor(8LLBW/E ,Oflxws=LE-Ch?0/ '!2T㊋c >q [NXbéjulhd\L`Nɐ $\(G$pC%R(•)TXA&Ѳ(VH\AtQI@ 3ݫ!B3usL" ~6|!`#V.9KeH*JEPy;O{3.ʷ[JFyIF!3mz,Ը1QWEWhқ14N(J-ԋdwkبi4`Rye4/%UG ,Q'MvC\5TR$( XcuDpK`]X^EG\"@OvIYnlF嵙_@l/ |Y G_X)tv.t,Pjf'iN QYa;^{G[A2}wߤ@z]U-`)]\a<'hTe),|>6J?ٮnJ0%U MѡqX3y=̆%fMDV6tj^C B{q4BJ1` 蒳7xa ͨ-xjor43!S E e9䲭iUwF ܐh$J 'o(jW±}n ='u\.T'p+e=rBV~ad07^B0)xIm oLځ,]yhMkb EPCz,!ņAyn*Z@`ٛ\B\@M@d ohbΨ9W<"7SD˱Slvn$9i#ɱL̾/} n"5>h53tJ& YɗAem 1F ;Exm|)wʜ٪Aɓ~'Xln^S5"J,ѫ (n&f`Sả"ժjGn[ׂ/kw46Ѳ/eXm 6K*^VˎϢRZF{ $!cM"V1fտx;Eϭ)g6F滢\-ז,,&(#e7eyZS6g7~m](F VQE%uGc T_߻gcľ{ha@Dc½/ \tU*uF&\B8yP@/%R8|_uħSS o`?1mSc:jV "hF Tp 1ho{pW?ɮA*t6oh+QB_t|A2u-X7T)`eo6Sc(NGxW\FAϱ,y)D@#"nF1d-J^*=f<ګ8KםZ: VNm0yeQ-zV fQ 5!~D__̒l}43ζ4hajDv\dϢ*Gܒ̳)z)~pXIEH6|18]Ҏ9^ʀ3QڳT=>zqTT}by ع3$xks_ґUAn:ḣp{…mTJ#MF ԙ׎%yP|) ЈK:ɂ̨7|rU@:DXFBz`ϵ 4S D 3d)F ܨa>g^ѣD? B?NN 1cYcҫN),AѴMߘIFvި`(荭ɍxU!yrQ\ܢ`3( DZ&y;VNoC N:&COL=̇H,Ġ5-PEˎ-FwYcU[=1d J@Q(j!e[#zڍ[!f(I^獻c1ns1^0/d*3X|1<})]REhu-U̢Rm nEUmY}c}L~ztH3 {%'JO Xa3ڟ/ٝm%(+D"\uV |uf WjTP,<ǎ=M ɩЄ9up:۴bۏG}ۗ]_zGgLIz9IDp9f#'[`*J>F_&j.Pޅ]Ē1^=9Cc2H xqYי88=>P1~ DVoy|"5 .VPfuipuǠxIic2E[?~Հ{Opz"הSB2| [JFbܞs+S1˿U3 9\V4׽]cGogSAecTa@ї,"f_[Jn|h1̘esJUC=.ӋXT55?~Ņm ܇1+tP{L]0+OVѴEHW3 /'OF9niEiGkA!;s 5-腰JG J3`o%f9HJՃA[lP^W:!87Z0ѫ1!,őA|YZ*B秶z?K͟z ځ*%^?M½>*E׳ԟLRrr+ϺeLK ɉ{Dm8LaeBY b~w܁WO3kD!/%06 yqG*<߿B;f0\ 6 kIF@FEcܨÃ|IzP1Zl Bd4dY~gy@|4K MVbpp W3VYkB#Q9@|JŎI%Sn6;N638o B?pکajΝT_݋} m$,6pur+S2vi:F2vA$&B~٨} 'Go6FZA#M MtSmweTI-HPMdSEW*`[)tMf 렰*xL6L U*+]REǴ}9l>RcmAeOc OtpBW愮KY`*˖qd*[9j NpWvjkˇ/2Etw[:s{I'^c&Y*hrJ>$4>)iv$0έ vY&M< 98Mtx5uAT ,x"!H)0Jʙ|~%w2b*5 ;Ha^$^uZ?؃ Szű|o|Q.M%w-¬yi lO!ؼʆ3aʾM&DEq!2H )\nf 'D(˶}6ǽSx"IIk.߬f@O"BU8;1qE+SeM:#ɺ<^9ZCPYbr 8ьMض֔ /{-SBHZaiݐINwsO-DG 7l7CY.eiԽ%cYDTZ (6s|Hh+kN!#l@Mǻ`CQ>rA^exZ2HyAsppJ]|>~0m8⡐%(`TiMz[t~TM{ͭ5畢;Qqɀ;$*! l֡W,"N 9ri,`ϙa8v}<֩ge,IƘM]/]BĐ5-SpiZB [rodv9 IOڈRR;ᄦ%yb p^-Xc" F+µ]|!eǐ~v(&MΗXh(^JWYp|(VL؍*LDJ.3g41oPI?LxH]}j8RSNy^9 ѶP!ҙ5I7aVjy7.9lB1Yq&5GiLn ۨ$mOME*JBlA_t4+#Nk^>nņͱ"$D# "a(YGG'AlݹǹU=K,ԩo4To O Rz?xҼOJ% Ny~YQ }RLiЍOjEYYÞJAs6Œf4T@8(kP:ۮ=QD+H gX!UW6$(%OCesN~?Up=9bUU+nKT~ ]ӁPw%$x|:]E:8J'K,l sAa?ZAѕp(;Ӊq[;wlsHM!!@&DR58PWJ ػiHzڗ[6E+^MP[bpP#ž2DPŀOrM‮P.@G? x87 8Q<’R`N誽]զ͂ 7 #J;i+gv6G%6wr4sXzUB?׼Yn-z?2DD"jce~ Y-ZzQ :.ߓ =\2ySjAAVMy^׼j%Դrjz$yt{"Y10fPܡط^%f]?$$A'B؎wrr+(m[zpzXQt)?Qfe#Z)n?e˔:y]7ͪvt_fN|ǒ2,b[* 3zB8L =-Y#HEt|U9GSz==ĉ+A^`÷{;{kED-ϏђŒA?{L (}y[Tt)@T> zG&g e:dʛR4< .wL2.->VƩiySW hU9qF{ZV*uqZÚh:swV2S:^̷c֭@ MiAy5p p09_I޿"fmv?c HIǯr`֧ 猓X84W\2 }ݷVn7w4P<՘.,yFԾ}P UĝdaJߍeK }٦&*aziኛg* BdX1+1$TReR8Ԧ2v;5bx;UQXEEuD.uTB7PK@44.b:f('Ai,VQ=X,2p>P'}BV#qi7N)ߢP sf_K$9D־A˜¼\<;s!40Ȫ;G# *=Icewz[oY K Ph_ Xؼ.M"fexHyyWPW=U Ⱥ2oQJyfqyj62h=S ݵ(̎UgU]h;7~7j*!)|rxZoExB$ҒAf0s+[KCU{;HY !)p0s?[~%Z)Bmے${܍%?Zˤ][?cPFz#' 9tw{>ܜ2aP{EWl; >&+_TeP]V.Gs x Tm-#=XX<S m~ NQ9|Kxpn!*o~% Ltst!D.zp:iI?vgZ^wFyH.-*_th9"<$VgOxߴͨd(QuR*"u\x$1> ^S؆UU. V“::lE*DvJ.uOQgi~3c؈#iIX'WKV#O.IiRcD~yf. -.ML@;:)l Xa$/xğl8V?P_aiމ8<xG0jdTWfP2F PPG3Q&;3pUTw]k;?;k(z2+[3ć_FPɹ._F ?F5x7vp=~vVs3[˥ibFgL9> *8@dK\%ƎmnЭ~0˕*D_Sק`q1KNnX?݃oy,;grDE"=x%`()1>7Na)dc(!;[sgUΐ7h2/7_20*>zVhRaUYv گCp:tqR1v.z RNg7p IС2;Cɵ>Ӻ()TiA'-3/꫾8(|ҁUp[TkX1Lr$јu!g&F̜pQlMz!H"{6 BD4kyA}{KTz>U.MK Ga.ry4DκAPj"ACi/H,֏;ɶ8<?t9~ۖUъh`W -u"Mjݲmtڥ7B>UTa].ۘbog3qyl!4{EyڍͲݗx(t:hB&M]tVG>Aj&tH^ߏ~3 Q W}NoY] D+eQ?ta <-P ABWK Kl aOc?,CX/}[Ii;܎+g.Rd5*zP;sOTikUk~G}(-?MsJFgT̚Y#n/t+(@m׌*v\Yr0߯Jy}ۅť' rY(xi#Kl5`vϧ\\%j C QI֏adB0\}WV/PcEe *6yP堠~`>-׸)a3I-tWG5'`XaWx܄<2,Wqs$/Qyv7ᬎC[6ً4`e QDtQKSr?7ZF,NiowybmD,*IOv+gr6ƻOxF V+zZHLQz-JY2 ?ȟ e^!^\ a8BRZ@!2-G}u%̚9B_Fb.OB-!'b~?}'幉Ԩ2Ymf %L1@QUgJluĞ:mȣB"[G-XvN:b,tuM]a}" 2Yh>GA1|T(6u @?#;N]+C@ȝ yMQ֓+sJ4<48 Ha@7urCV1<ڶT\}BQ䲉{2^ߌ*GJ8ǿ4ws`DHj~ wܩ=a@`^ Pÿɸ_.b!= pVu~k}ǜ}^V{SHwgvz! #Ȟlԟ{.v8Em 5 e}am\@Ih('eG_L^ Ȉ.U^j; ͤ ,5zkxh'#GkJE\SO4@-=ڳ&G-79蔱 .)n >I <%Rf2ILw%]#8\ n8A,MHc-HJwb:z>:;~y^'|tˋ@/3:5䛯n"Q },ͫxtpHOs Z7b+G9 BH^N;K <INqI[Nkj/Ϩѣ킉J]cp puXo?4Ij@D>\[;!0(z2.XO쩣 :|"\Qx=#"@cG.*Ro =w&bv8iԲ@a;r"D䴤6&6;H3C-1tKCYr LݩȔD OX*kHf̥ cx{/Xj$韶jƩụ*Y`D԰3z֬[ͻi9u6w1l'mCx|1XwMޭ]8-) =j?`V_TEi28qHq!qC+NEYֺcJl@/Gs)HuOb'V\bU[IU:k =3nE@ɤ=:^b`j?PUqw]Eg5O` <2Pɧp9--nsD"нA)M%EJR!=]Z-u5q(iŊ5' փj1^IC鯮 Qf,Td(-{H3ĊEG။vW}ʄ(0}M r ½AMWeOQjbrMʹ: uΦ#~"]˪yŝ ]3 -]0lQWi[)LtϕbTpe$}N#f<'gJᄅ䂐㪹 ̄I "@W3g]TT5R}OF U$6NiJN\Քދa Vؖ&Hzw2 %DΉˈw6W`|oE DsDMi4۟=7xE#lV6gy\y֋4w)g &-B#BZghT>ufkZ[pHЎtm? CPj`ɕ ;fS B<7n'WR c]BJ =Bk}cb!SsCfmӯ^yjU"`n?Sfhzw C HN-mRSߧb6Ș6O1Z]-e8˔#:|H&!`#[u;\Кwe~fT_hl;EsZ]iAsd6cQkEt(;SQV|%IHةi'8;X_Q eQ #J??L=h ]dY畞wi [V2]2W:zBB"p;;YSRlbo:R $~LD>h#CX朵 SCX,*<Ų 4U֐ӔKAPS JQ4% ~Ӑvc(,K䤚]i|tc:3sO+rk#2=?<fx8 7fKLu. nbp\ozeFs\rY^MN`a/+$ fVÑ WFSCܦ ͣVj=# Q81]K'% YхR, Om0(x;7DQnֵP+j]PQJQ8bB  >V\}%rn7]oD yc#c}kٯxה8\XojCɇ0ˀԉ76( lyLD59"TSsu0z +lۋ6?HSb]V1z rI5" X +Z[ d %a&H* &<2st y.7H%y aÅvhVuj|υl-g$h,9:#9]c~K>Np} |'X@I^,:⡤'^(B{'HUqʥcYg{5c 5/Pz.K )4F'ɼtěGt p4Rsʋ1,]RZfDAߎ#ăJ^5(7!' xǬu])(pOSf #~&3jC2WySm+r3JYVĈ 9A&con٥kdgzH4d4!kZ!Fw&@U*G$HI$`*~Wz/TI:A3*OZ\O'JXVobrU $S풬1}m(CPwIWAB.,J.H]{TH;@v,# Pȯ)=D8R8?3:)qx]"f|Q’k=!:<Nғn)/Ӓ/6&iJS_,ʼ/jO9pg%̀UJ{QbLhǣp«@SZBHieL6jQ!YxBIAPF> \"s&ױÓ$[畛w 5]_fs'5Z)g^ko3t}RZ6| UkGX$&C2"ƤQ2^JbtGڻWQܒ9,^"5v(&I{bF/Մtwga3%;_||!pPHx lBbľ5حqhMm&FcC6 >(*UA1_AʸI6_U"oF5#hl}ML=fA!9#X*[Z5;z1{zfSʊ :zRId7X 긩ҞsN ᔐNB(d\jQ0;vt5Sx|e?=ᨀ_8}l8\O<|F ޵I05v`3 ,9h+漉xXKS2MRE' @@m[/zdln' 8b>2uj\&OKXnZm4Ht$s*:M`d;N^&< Zve4(4c-\'$, 5smCoYdB >p*%ƌ,e3&K{V;,Z3T-,Y+5Ȟ׈ᏼ7Qv86bQ\\=7U>-!Nlo,V}"MJ*P5%[!PD5EI>h0QQP|峖w Ӓ9=Wagas.zBFF@bۤ21dtӟC> cHzmIAml^f~ʼ+CT:H -8ei&ش) Ԣ{4otيdqYTZtC+Mek'ջi`;@8Cz5LsfqX]hZc&MfpkGw.uU8/Ç|T`,M%l$`' l,F^XVjPNh%[mX6UՍM 7-Ӷgb$lSB! _L:yf$OG_ό%O[ͽԯΤ8a @Tg?yXC Cy]V5+pN_nxvLR, P;A8 WHWnk6ms,FDĥPp$+9IS7EjE 85RH#9*#y5dj/P be/P@` ]r'XD%x!u&oX4&"J㢟(8N^5" <ܨAc&SK H 5aY bq@jcJ}  ә'/!8 ^9va98+,Q|~6{M" %8ɵ); `Xd"[ڦ1.E(M,߷HA;|~TxJͣ?n8'$i-{2BFt1+Uj>zRJUo=z!t2> )UHn(>'q PEUXQ%T S -Ἓ6හD38PW+8iځ T#X1(03ܭ#rGX)xT˶8Rjf$4qOإЀ [yF%}}$IT$"<Eˌ[QθtJx6So4SR@]1/+Yh4y/EĎ-(bFYrFwe0#ɍ)ݽc$YC{D0 -t.oAr:SJm5?s%h|:(%XPFDVG42W2[UoG%)«&|%&,.PI;}ehɇ#V ;=!\4n癌A&;D\7d ʉ/S5X9.zεk5WA7{f|nSv:iG_U>eH9B/giPqJ Jaz2=FC\DX f y/ycx߆J0/5ʅ[U}[Qge7[kJZϺoN$9Y3z̈́d~A8! [>sX?u_>RjV#L2b;0(^9z_nI0yʁu^"1&ɉ lŶdi̹*q%hz0ʆ5ϸ/!^՟ P疐\Fذ*E0:o %]$F1sؗ9(ݭj -Ad8Їl8ޓc #W+ps^f_D e A]zX]L!C,>is҈ebZyL#=j{G)F4E)Sͅ?8R+T=N.PH]Vt)ԺR̀Y)V$ê FiLl;S8l<fUny8O{{Z5(+Lhv`DLw{ͳޣ:Ef 07b{hߔEMNI$֕\ǚ4 K/I_A8`{2x.&f-gPoqs("VJ]QB"(d^ef- B"ƕ%N.DȚ]sR;JB=iW_ 84fI8ŠNYC2kCG+S9+bmIcsS lZBAg7bWZGןVO鷂Eqx75֛~Q֨?Ө%ҥnK֫‘R~ !1SXɉ_+!A2"֮D QU/JbU*n\] =`C>YQWsdO՛K{ ŇVvJ0YYYni5̈&'9,^gP/|l (IQr*H:J !޾*XȊ E}ݮ\DI= ŧ,.8Y[3p6ɣÊBeRr*?ߊlْu<+B/LӍS6x%8XxJELu+Jxo@ADU kr 6p nɐFQj/|@>%cO >S^:d*˷_ {|ۄ.O>}dMO4%4 "-bq*H (WeSt5 4ţ[%E]YfzF~yHh46gb_JX+(%aT:XHdmkFYa>GaYTk/߱q9 68%8Ug Ѧ"_wJ""떛X`L&'B׀ezS .=;L_qʜХ7bl^T_iO?R$o8vֆ<7_ HWR ؀g64@24 4m@(L^yk&mO|/np5 G8RL>Q+N:a qJF?k,Np>Owr#T]\i:R=@S.^4}鄋3Yֵ <5jET3%^ŝ6\עygAAIaq`w,AN=)2 SYGqU!XCJ`7_DB1L+Pv=yĬt^e'5.8[d~d\ m5( B W隆Ʉ^W5{D?|P.$s|[i"D98@M%m4? bBGj p7] d P_%uل hWz& M2̩au]5SY$v<)iz&PJ|>m%j '.,+2Fm $VdO HuF»)]5חe9omoKnN&=`ܒwDX[Q'VH}R?"ncսk-rO}3f-pJ4|@]aGNi%RJe7oﭵT5ದn>AΣW9:p[Ȕ#iͷItLtTΆ1Ts!Y35Aw&iuےK2+>/epwYģko놱ta{*7[Mk6Dg5Us] <`冼_cPy8-7dH?RwvD %`7; ƋEsQ|i v}yIД #~҇]wfnàVvvomʅ,{tU \E:ۿ@';a Iu9ʼ9ϫu]RvjG,Qh'I7hT}f; A* c}60`>]085 < gfMIHs#&D,*W"d4rGm򠭬ia8"fX $CzNCJ5*MI?d28hնJW`US`OqUmf񅢑dqL{6xwgѭ_ض@*=e -IHrD*(zݪ `ȨtPR`*m DV孅K_uu\=ikn>RW#$cSLQ@dz樋$Lx`C'iœ6@2GLZԘ3]Kc1@^j^@ֽ~#3{b7510r ѨlJ^rxĎZ3@ݾ (k+ې$4 R@[MUR58VC Rs15P= E=(]7_Ѿ(Z\dR^ьzu|qy8bywCt$+!j[B̂\"YhvRTm벿|:%U^ګo%+Gk`MzEsU|8Qzu6\LB719z9& mz{nš-ln>jy,Ή0\ b[:^;}h89)<6Vdn5fҕrʥ/ʛ`^B9=wX8+c9A1,uO!~n1YE{i>`V: ↎"%[%Az󜽶r^$'Y< Sϥg WmIVnY`aH]73*N=EN_rN ~iŵc4{ y.HZ56:,+Dؙou2Ls䣔.*; יvq'eS%ρKG_CI HW ә..^nE/L>#:ɢ- IG4 w'@sv%'rݍRե268uA(ndb90.Ř׏r3f/:AtZy <8[]9c y #\O=ɦ!#QIEܤErk*X:(4P-3AXM)tf㔪vakD"ף}0"s7s _Y˻ ^Gc|~~£x@8gjHѦ쬨/`<%N@Ѻ\V$Vm=mjz/^ĥJ>`w3>,a)'ùiHFu*_] >IwsP1 %MC:g ֪7FʵO 4h)w6WVe_?>@-" ܵlZ0Xr6 7'~2l I JCZwS$RĔu{J#*j] ؋E٤Q~HRkq(1`/=Ɠʧ-h@ARMT ⋱!J X۠%qɽ(#bbL002st}bt #aфFi9Ҽ]Z!R$eXuS4JLxVy1}Ăiᩑ~ Fmr]CHpr*Bg{B TzEmkA ڮFqSuʇ?WKj]!]fyd{V{"xfțystYxD[ԯ qphlBw[_LLuM0ӿ2"Ax ƪrxj/j^4m] 1κw NAH(>.XK]0T8uh<ۓ^0r؝9̴BLFpO[1UX.-Tچy}ylA"q Tp+bV~z%'_B g?_D9P~tȬ>x?,E0H̨w#:ZE^Ųb93+\Ŷ"&"ػCN+,OmĖlm.=^w5@L2g2k  =uA:AtdX5[i&f~G<]Y)-Jb KP(XP:⤌4-eEZ,VdNoc`v ׃1T v#wRpz-]bnڍ~TfDF;ϫpd7FG"Co7'D]ؕ{3-iM& iucҫ75"H5p{]tV#p"/>2[-YD=Z6ǃ`%:zE_.ZlL}A2,GQԽpnyI(.}bMkMѮ׺txAےTs+{pP.ޗ輢sm.R}? jM ye,>ު| ӟ..d;X;bpU_E @ TkW'Ʀ]b闗0Mf g.r_tIcM3 i>4V!ƢcnCNkqfsB"L\Tt#/<+o!ew'/0z!m$#$-\M{vLqeIf 5". z#^ iM'آ϶;~ﶧhXR̼d#vl xXͻRTژ+%+K;kpDCQ*p>ZJKFXRK }o~q(fx&Bܞ밣c@AKx&_WSXܓ }z7MJc-»e'}^JMCrAM&h<؛>ʉ\-6ϲ(YC F+>D+]]oQQe.?&,m!]>xE|iwىm8$t@);܌z4Қ4) a  #`[.\x䯲gg {%z・<:)>-yπ3 :/GQ $ ,F0Ͽp 3!'tQlTE賶w^-V*pȖDUakDl4)"ɔl0WJ޼C1_JBYKMJ6jB'{SD1gz^TT17_IѬ/oɖ9aҵPb؍9rQ]ĔtGjQ^?q-ZQobe Th^҅;X1&M+NEOwH0j+^opJ, k~-'ΗjN3x|u6`\_2 C#ĉ_wvƢI8T@lꦍh͔WO%4@ Swxs}kf6}?D'%Deʆ\P^^2nD18v^\X}ht cgcGi'E w\LDi[=IRT'B8ʨ<ެ{TI{oW஼-mX5bS\R"XYj²6)sA9rҜu B9=cvPh%,Rkpʫ1؛E^q ؕm^V[6}K7A[/3$+@[ɝ_H7i+GGn@[h=/|JeOG a1,6iP^ qikN 6IgRws=/jn; [Qm SD1h;!$pZD =DpNvD%d.ԕfm3mLpZ眐2H8ZkGGzu5$3?mrGwg| PU$,иACޡ7: pec>  ܽ$nҬZ١KySF0S1MSKk>N] miU0Etil9 [=*ris4C$?kPEO$&g, 62 _''}OvJOc|KBS.mU ߈Gې MmԹ> UsS".c)!%>51Rrs|y7rWpfcmDa+.tK]7m,y'Bo ]؋[\̘Gq/U6UmGײVJgik[_z> /'.y;JrdqҪ4-jT&z^MCL7brhI5,S=X )ϋ^}8PщdA0Lݕ5uG֭W/N\\/Pa1JZѴ~$|܀-l3Hy(ݽXƔO;%bFӿq;2*ʗab"R e~| pqӺ43Օ$ 1wyd$F0}եfh0-+-u ?LoW; b"|LЅ[7h+/Me;;ٙLGݙrz{~fXRlDWzxdub3o$;xT+t 3F Yԡ'.aPtGW$5)-L>&&&{]$Xy} 5prB,foA+'Lp]nE<ֿ3j]zrڪs"noLmZr |‡u=jQlR5Ƀ݃w OiMT: !Sơl{'mᒭC"%Ҹ y6G/4mֈ+a F EmaCz"xK^: yh!?uȅ"PGة$ pȈ R ySpr0!m*eũ~< B)rQ];A5,9':{eC)1R >hʜHdӃc2>-}Ѿ~u$UNU j H4Js?4g=<+5$!¶0z ~BgpVZ홉Lj)4 j=cvGaјDY,v[f˨d|. Z-bBp=g$0_!@k嬊\.&a0xoj#k' CVtLjswxٽ<8O>ŃyV4mL} zB.hΓvEGDJ? ׊1 2*~e$ݣ]@;(f5$2Ee~[p#@NAOz0_ TOQs\nė[ V~)ge iUFI KONuVHD0yOƱKs:mXlfR (k$!,ݓҁk2l` {?ߕ1i[`:±p2gȜՄfcD庳rT"*!lb 4g,GO DܛNץ^`)gpL5)s @3.V2iHӶ$Hxmi偹&={zOK?HodKW>)G5Gߠx<J+GQtҥU0ɠmʜ˄t>o yM?4Vw*:Kb!UXZ,Lqiod#q%݆, ;Gwڅ&I\a2]Tˆ"cԕnU ;iK=RGs|{1̘~Q|LepA'OԚ';n0Q3mpp]aBe$?Z1CK[<ASFЮ5vϸ̲-AZǒIž,0AkFT_SH!p:jğMJJLqw~51u|45c0e!b}(g5ͽ澕J%|mQz1n@@׌I\Ӷ.1"hıU.&өHQbaQp=a?{1‘(ŴnϞd\R$!.!Eyi٩촠QB> ['L(@/È>;qN^̉^lٻ'P>J ִ@#hɘݶ3 )R㒭>Mc:SeTl?}v>}+yҗKУ]'V@uj"C|!1 ڇmaU2Y!KwRckbQBs  &/ܦ2`!F.3զ\,>AW5 >"R=f|wiEiGuh ;Y1+J#sy!` VO?dCewߟi.*}k b8=n3xHIΛ0dw^@Һɲ_Zג@ϺK-a9'Y,ڳ285d@ B0U8Ljz |'{et {ʃ \KlGk75a#&ѧy*=j2tt9 ­97SŀiueSWiP%m)>q4T>ep惵; <W^W\ _Ug?QP ol /\$ UuڼmUoguԕ(ϣLחn~s +r+DV.6sdIi6lx4|EBj޺j5Ƒt-:|5(WYPuin3RIoO8'8VZMC}l2O+NB0t6?.SH\^!mwgn{(8}bP0;zfb^JFK;kj1b~..a{m%α~$Bnii~EcA IZuP3?dԫ}Q_Xmqg0?=De6QVd5ƿ 1V vgK;j)jeqas\Av2Oi+ ޺^Y,h?@ íC-+XDӇ_l&W?t5.XA7L& dn&jn{U":cs+|?3d͕@F} 37 b뛜/m$%3ascL0oOfk\A#ߘNdm?%7W& bFͼ@* d Qtz_5Dߝ5D^ >յrqq)^nK,!8Vy)?|dPYײ~x>Ea=)]h>*>(+\iLstC&j^BL ?)25*`I5;,No@n f-W:!ȿ{]V *}+LDE,QXTtakr>x};"#H౮H5;F7r{:,DVpS{qPt&?X0.e`fQ7Mk:G&KojJQܩb>:+T 9Oi6IY6c9R̸&q;Xv| ɥarw&\QT_BE1y: Ǽ R g\7Vg`]e? 6vg$DБ 1 `cNF处c.y{6@NLq$ %PAlQȝq` 4bDEtoM>0<TtVb$LF0%ajWv2XQFl-kZâdna'!:;4dXCBƗ#Kqw6̧*tɟSoq*P5 ĜUIѾ'm!_;uh) ќj;btMEX}^H[>x]Ra } >Ԗz4I?e=KYi8(l;iF.VFz2Tej^$Bc|U~ в vhVnCHAOt#Je UG drI-m+;hY( ǿrKsCCJR5.єGtj3VkrSZ7Ctxڡ&L/7.E˳V颂99NʦjV`Fqre}Gghס̫UA2B7 .Mo@`8 @Pڪ+uı4}CnGѹx BI+݄bKT۾S(.p{`JG]Gjd¯:6z\5ŵ*\)V[ j)9{(c_QGSyW\U,X+#5 x+B7[ЎSg)E^ãyp}lBČ;f|T3+~c :_99LG5hn&cX襹M׸d4 b6ȝpSVSq$FѾP'Z0'mMY*]qdƧ b'x)m FT+ol~yXBY+DӆL*ju2<sB+ǏZf։İ/:ތ} $ef4Kw'5a:'#tʹ(D_F_!?ςܗF/Xy{!BySfx5ըZ6 kN"iY:iNt@P(+9أtFya~G9≝ڞ- 虢)L/N%1Via0ogy@zo4uUEC?](M!{dݸwe{Q{AWy4g;/:B),ElEomM밫Є? m,@ǐf:$6 :'kAi|~`W`(Lx]!ZaL1^%sOy0gmk_ћltTu s]%vDGg6WtT!yC{%:2GLxo~9ڐD6ADؾѝPj^ NyZa+[.YyDXQsf qfm4.#&p/s(Z,g@@ lpdnS$ʼ.`,@:V z0eL}(6j!t۩$>݇iŕ_C1hy`!Y"7ph'tH'|Ìew* y Q*D1B5M xl{R#X޵glv6@| B?~d3p {GH3ldOC'v Q-/<ԑGH2uVT:Iqef-Jau+w*UfDXڕD A΃ƷuO5C~L{+6Q*ȃL+^*F">n;tB4i2m 4.20 u/)fg ȶ0XHcIP+DjEKh?=*@%AQx—zn6eQs:{Hty*}_ṤԵ Ŀ` uJ^0S>D|f>| ^ 7qm[>QRˀDg%ixYin$^IwGE(`VvFSF )yNJ6 0Xij9\F`ͳsz[[Ɛ|m>7ƀDS*kһ}F-C]Egb]f}?҆&$d751LG9I#[(҄;)9{hBԋuuHeiNv(R!2gQSs0?˔6]쐩Y,iIU7v>Lb$SUJ~G6WЪJT2F⠒B9@< yU^# Hx=x1Qʅ4"/]lI 8?)D ~vK̾/ޕ Őɝ_C1yӣ`HL6nA9=$vDZ]]{pZ&?QE$DKg7GST&A|ĢAD mH=m+'} ;=vUۅY?njSpN SNz]i0(+Xuva(4msXb7לI{WW@+@N {;_WVS[9*da~Ѕj}zx(UrCygmDxLpC7!d<nGS OBل2SCڰρؿRG3Zmɦb |̜+$u%Q{9 [d:h\vW8<8憸q m6R=J!~@6L"8C!b![_>ۛ7ZJ 4Vr=7*V+_{^EhNv1)*㻨YhoɈ#owKTbm6 *mirf2j\WX;@5R6ka>@  Ui %Ɗ G0'o.w|S,y/W3Mede Tq]8vonNM` ]r ヘi @,6}r*K}AR'ζr1 X J]ih!)=f+?ԣQFa%qk-ʊ,i~yBg,Pԋ mUGl" `{SLLcG'Anײzƪc?ـR,047ąݒ)K4G ゘j X%p܈Jk$ݎƾHb':vwxVO<< n0^<ʄ֦suw'Ic~&=g뾄 :1~Dkr6nMfJd3 !qm-ՁĖՌ{*UںPOUUݮg\R)Y9&TB)*NOH;ݙ!/k51RjAr1`f^ٞ ~P?X֨umLvj4Ewu0й.Ѩ1Lem$ U~cҴuݘGb?m2$:n?tYr*fJKx̏fP0+G,=N @a[_ue)"^d 40@*甃dEрU~k0^_:lA]vPF4*ǥS2x"Oz"vt.}1m|P;.O\N0Ⱥ2%@sqÙoXY!Oj,I/9ѣu,\@6ݡ|4C~ C)MClUtE>NdŞsQ#eͶ7%)}-MRfѯ2I ^V3^:F6SSvȽ522T w$[ڥXق(|l:Ĉ)ȓ7@ ,BHtA{c֛qs}|j񘛝H$ ZtDɫ&s]A"G\JEbȉև]PsKR, 2/`}m;Jncv Qۺ/~C<Ԥ)k'v֡et3nj>齣,f ;< )ih! 9LM\dֱVEg2.UãC"dB#,mb$vܦ0^ZDԗ* P!lQɞ? %&QOIIϭtWv/QMuHkJuC\D\_{:|A+fuj"zZ Nk[և:J`6s|y<<"wҽ\\UÓ?:Pl@\sö5XG%9b zmN&s?B+ Es,ɏ1qWZ5dѐ\gJymhP[B+[o2qQQEj*o {*U)'+`cB"鵝n^cԣWZMfX;Xi]S'K5@ܙ;uc$m<&d3m8Ν;0{Nl~Q*vi}jxM8˟ XoOS$0dF0UMD0LC?,m?p1#"ӌS;dg\?Ǿ|y/{<S ;ŊGT^'i$9cR%`~a0|[sh`n#5!&C4[ &.TN7CT( iXr)܍{Bdw?b3 SfXK#Q0v~1PT88ȧOB>Z#9DÑc4B,b+3+O31"v ,"g5K`uM(H$Aԏ9> oVUǚEZ <.7} -"%]u[xЦ(3[D[^뎲vE$Dhm%bMG\4CgCWzN. UeQWڏR 9}̐ދi[/ :=Qv$.U&mtdx}(UqN>7I;mMQnqdJ?|A e2HV;fjP냀ϖe^uW U繥Lڥ$ctJ/)Aq,:܆ KrUt$sӯF`1hbzP_"ܖ~AP 8wZ!p 8Z%"gg-49 ?q R-0P᚝v+$|,mE]3}G曊䝂W6\HP]*!3]әyb!cg̃Mi~kL`/?"gA!ĐH HASqFo&U~KQNrÏ_cN<9_cGƿD`gx- jޛԢp?kܫ6R߆ dt6)y*_{F3eGCM5SQ 4^G[E{P@q&,`89A` 2 hP@Б(EKlq]Մag>5i_/x;Y E׫]ɽ))a0[FD;, {]`| 2O{PbUn䀨k. 9|Mj3\.W0bfW,'J_*G@طi; JfOe_6v@;ڜտrZ|s[!+eMf0H no4nH*Ljv>f[j?hXL߱AS)tYqr.W{J$q J;(]txmIh5 ro(QHz|@}Rja6y S*j؁&qR(U@`{ӗ[x_̕- 5!{K5V[[[C) {W@8}Ð Yxf1^ /ncz0[.ּb3s0res*d'l65ugy JETuaK^# pZChHUj7,|W-j4&ԠH(:6G.x@; acX @VEqO/ }Nq} 9[Sv?۱6:V6nԊI݊xŶ6_= O/ %ftRWI>o|kes#jӆ\=U/4Ɛl kkB,0#O{rc=pj0.BXFs8GV b=*A~C7Ņ\_rgwk_2LF7dVTpw3ӕkbbϠr{gYKcEjAz8cI'oTUj] lIh |W`dlk_ǭMiW~/]fy Т ͇NlEgBdڕO29D\6u^g/gdq>gyݰ̽ca^{cC`G[Eb3Q1:wa%u;QR N"9T4QnHkl PaFšg۬xHQuW/0dH lpȥB9 ^$oJ]%ZFA|%3 *Q1=5V4 pv JW:QE4^F\ˠmnhWr vr%9%.by}wgK"er@{$ пh.@KlKi2H졤oY0o~lz[SS8WdpSKHoMTwH\-!]L߰~M^ ^$A($% iz GW]氼cAcD!? Lf#l'rsdE(;vɼX1'I ׆αXɜ~.6$^a^CI돊ysџKy.,e }`FT30;a| #;~[/ISlK @D ]!W=迆`/;Ɩa5a^6q \>|\GT}e@agF)"b6U:#PpG ~Cx~ UGb .luGD?piXgre¤ϐX[K`ќS5biS\)ٷ{Tv@sG.9_ȸ# x?30d髿26l!R]mWFvNu&ٴF]oՑPV/nb6NjcnҩػaiCuU pJ~B'X9E,7Ttθz>O֑MqJrEScoE~cn(qF$-CxlKQ%0#M圻| C-]S^.Ss>>R3<\BHsK"o:ÀS[L-;3^`?A 9ݕyV U֏ iM$M2.FkݑuJRzD h4\@2|\Z~9BLNGc@)]Kςn8ޫEl"d=5#N pb,lr\3B5gLEG8.K>yy/Xabh)isƎ6򳱲06ܩece^'Z*F!+*"b2IU'j^n WF bYv" !kƶ"QE<^}h#U48CjYB)"(,跣Xe-.:T)Wy&FiS  8/B8YC3_A{+I4myCX=W q@PDK]uIwqiNWt6^1}Fchɂմy᠁>Iԇ̼: 9ƞ~5w Ej9QvȊtwZiζt灈sGA?R?8&#zތ_ȯlF9Aѐ(i- MtA#. rs?lX|-}>n4բ>*cJzh0ڇx']&T>4DZ⍽ʿi}e}.ļl;X+E%RA=QY?TŸᴜ@F8ycz W @,ZKS]u#itiܐW J(k}^ﲟiDp7 8D>$drJT pgx,ƦCPnfXսUN8[q#>{ԃ*NiWGDs]6@H@ZL E OqݪBGfI ɴtIWPp8Z!YS^ἃCWB-: q̃6O9~zB<8ZZKY ^kbHʧG[ Di!3uD7Rg??Bq!\JIZ,R,;"eap/D&JB:G-#a5\Gz'/UU" >E hn5BYUxVہ{'xu$ 0`V!FrA頏np(#X똉[<<lgiEnIQ3HPyqAjIC,N* CtxGrO]"*׉7) Pҫ…WnUf}׹݁4^p>}J+ ['VFdbv#>Xl7@ǯjTWJz`ftUI2[3pq\ R'QN'qW"5N!"SxjT)$DKl=AYIN3Aj'"c)>2|RYs`##xצrZ͓e7Bu;O3XV5fXQṳ$ӁΚ&/+QnD &҃+ALA .H8YˉD;P)>oJİzdd7؁|7xVC`j8u#s U,[8fFp7w1za=L emT6N!84W uW{?"v{ܦ _3LW*$ZW:]ѯ}&(!b29YtWˢ(h+ϙ)دQ)GR)."Mꤠ_l-7a_ј qf7?ʸH^!SJ)~@dAɵ'p/{\E6 '- }*QW;';D(w-I yaGBgԋ6~:p78YyJAY#GaȅoSM\9vTH ŢCY^)PVQck}hf#_Xjcn0ބ 2"$r?Pc/!BtiHaDq#s=fEÅo4C&5JouC.R[1/JP wAxhYĜ @SP u!qN=៍5M35FTN9zVl"*l :qJn&#A1<j؄'F=EǗql>ۻ@ ]t6~ DSm;eQD/*cYA?:SjidI |:'`t|hi[1gRq2{;'KXᢁ>Eņ) N؈Ss, U꺸X48g&J,%U:5 A L~~*e^:zTIHAg.L2rla R8H n$Prz;7F/ y0p[ $ё4> 8vB{υ?T'&c϶J*cXoU{kږ`0Jtmd*ʴhk-qK1duyz|NJ |5ɪg_Hqręsv1BZ>Z+w+fc_$͜l[im۶&kfMn37Oۦ|u$O\$ű^nu.v-$-vkR$E ,t.OEJGnVydDy1+mL6.v&ݯg_?/ڥ@fCMq:AJlߓC v훰%ru[޺QGʥC aJwiJg& dUױèW%nQrS, 2?s mɫ%OG{FmhRf +[6cz|}RhgᚇQ֍`T:6%7g ?&楠A8w!:ϑu-%ŷP<'pS\_k)_*w׺ tDÙmv^Yar8] sG_{0rJ$qhYڅ~K.SPt d,ޅn]\Y*:(9ve5oW^Ib.N2O1"_pIxS}%׆ g:[5G=otBJ'V~ֽ ̋`GT20(OP̝M, ]kÎb j*t}؎>BI!BϝMRb@s `ET^h5:\ yGq(LR+ k7T3v~JG K~е`5Rh&F v}W+T<)%}Qpn, P]6fPޠSOB8*ܕ,%;@PGDW{Fu¤|hKo;lPݦ&}R DoK[wDGV/ y#}gˡ쯠r3g<:i$.}A7r,7j1wn A?-fuZoχUeˈRhj0NpG*#gVs X7EUl`i?ƒuT&ybH8ac>Yu[οj2@Z1s,:JN~o,ͯ[⭤m)sCr P+`kɚ.%Fopd)u#NIq"q5ӓ^Z_:^ c[ [䈩{):"-WyЛXAaNL#$akBPH8kSG]JnC7dS% sҌ>+-HV=A:.ԥcʼK/=k!);T `m 7f|jl ̚ѓ` 4.&aC%p16Er bU .SPZ?4_NS9)T,X&4%fy qfitz1l}I}۹hM z`9tﲙ#jwbR PD'M)FϺcsu-7A~XҼ:a&0ZR>䐎C q'ЉHKG;$|R煒31 $<(϶o<68~.~X.P듨+#ɸPf_naxsXjzmb0`%E"kiun}/-O_P+ZȈ?{'19/j.㽛Ul;n_ݖ"+E7DzXbRJsW\en2tOL%19srbq| '('3'\Y~o_ E 22!b'\+`,1j SE6iEN"p~fWcE+\__WcEI]wBqEU(UR!D;bs]EQU9^s2^YhI-֠P 3ˮ Hk6B/=r}1(ί2huUlP&}pGNn(w=˚AG˒'g_:i)w)4Y` V}m7&H9KW773U1} ҡ  {W5*١h?AAG,q% !ƀ8 s!uOӫѝpƓ3琬-LD+Цo4ώOef vjh)>K΅״VS%wU|88V'ljEH'%dR6(Ra*<|zPuCy;phe;߁ nߓ_}T `ڥGqq0mgA)Bb]iPA;NW@~EH|2?A4w-]n@!h?cؐ4>+H}(xzgW hѓC]8+b栧 #rהqoձ|탂DAտu_3xF!XckMUGR؊c3<#&۲H̦,_+T^1~Y'KJᣄmqr)9 EB*< ňϙDp;Xl7HFž5.@zCq]8(lr Hj9tXu@:E $oۏ`#L†,{z郓{;M2J6w$E.IgU(e֙d:Rї˛V2 HS sHęyukLg ׄP(TfZCN5)ȤRiyvh[ٕC ܡM~Dm٘S9g3--ia版9C<?D%+V̟&}(hS{(FM>@}SJ&(U/X&v+ضp'S.Ipڕ۞5t)6A/p̆zIذFﱩ&rf_ y2B?TC^3 ۞Y0QWy'e2fL !:TN#a߸[/aQ!Ga)酐8HݽOQvh6o({Z@c 3ŒiIx;LYty_S:3*CDrX|nY}C,Aܯ~<*֨iR[EMapEREB=1mD[,o&k0IPyK ؒ,QweQ $λƞyN?15jmTQ|el[CooxH5"Lv1JKyR)NN$|5N9SjrL&s*ʫv</4FDтWNDQ[LNr7_>\JTul"Ef ˋSpyA,tzajfXMQ6@C~ t6Q.Yv% s'ܖИ=7WgĺyX-7Nȱ&iQQc}hwKnS\fSy?")ի2]i[.5ן=́ڙ9սC29}45D70sLF_0 E~x0\?4Ra %`Yd1e{{YmOK]XGYFZIF~pi;5 /Ã"s+p(90O Nq4/4m! vcv(oi#}\3Z˔#Mc,-4\ ]0d@.k r5B4T!}߁xHJ33 G^%,h:W1E]4}3S0QJoPEL?xˆdѺU&v p(B{|;%<2?}w,w wS͹/& Ė6yl.9O@䁓vqXo'SVNg}d4sHc`t[YgȖ9ˊȿ-rte-@a[hw ?dM$NK EtĬqgY v)cw syÉGnL@ѱ0KN~>zƴ4_Clpە ZYNdžG"-P>ƛݏ1U|,1^g ޥES4s;3DD y=kֽ _# gܨ5`$tWFjs!gÙUU&Fm ]O8v8k{!^xiY@ioX$-AO"_IJ \{FZ5w۶mu+kG, o!W;,_I@Zۜr מx\f֩~Qi{bVB*HL.fb9[t]wrAO [wR8<1[rw?J9~ò !nD=e^fހfG^}p:&yVfgT6%RP <}Lɺj7X)&zJ a7vu-F υ! iqr# eh5ٰVbi&ԿKSQmryn qYkp\ 1 G2<.=*ۡh$mkyxW\3`BM>r4(,_ݽ7TFTO5ľk+Ʒ4Ãx3Y{W [߽JЎ6PctZ/ s:ۚ 3$U,0tţjk+`3~BP]qUi0I+{quH)j5w3]\,XZ$0 )>\gZSU8:~2]غ]y9@7:EGuh:"ra "׿(PI ԶkOuweZJ)`,jŧH5nU7eଫ6h+V^NI.e? =Z}jQa<5Μ4*E𦃤<}4}a,R>T~4I"q$uX㜙Ҥk|V]`P<9`dmlaaloWzendstream endobj 13 0 obj<>endobj 14 0 obj[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602]endobj 15 0 obj<>stream xڤTZ6LJCJCtHw 5t HwH+ H7(-ݍtH|{A_s>xh(TELl(3 o u343Z(Y[; ': Uum|S? ;fߖ5"6P!5s'1 qlluXXڹ9XC 3`:Baglc5@.G%`g oj`KC '! 0t, ;'[C :: vYk_u0e&3B_N2hCWH@Llm~aq 1]nY4 ';:LZ?G`"; `ee`Wcs-~ !&vvSCkG)h @~G ;#QwabX` eeaeeaX_fb v;`h_&QQ[W;3 be89l Nn*qT ⿍fS* 1q0ߩ .l`]vdd5ї hUS9Nņ~_$ m,8?4KP#Pj3Ibf +DjlWG1;X[@JsQ vtqpgV'0wˀc[  f%,ޜw'\ bgBo;Nwяq1f;)N ;D<@CVwB޿p˩s`i)-;;X8Z؁vNwh B;'|_[ޙ t6t4_l0/rg3'+r B`Dt"Nvu#@G= 9^ X7Jk{'xa*l,~re?;ޅ hLbE W# \@; <@; p%;Ppe'Pp7P/P T `vNjnj^?s@@#Cc+0"eg&/^6a݉9N.}x`q7^? 4`tbC@{hqq-!n=xw/X{؀v,!={ N!6V=Cli,b{1qd=b 1U[zЯM`=17 Z4wB:9ރ` f`dB &`X s73R#)~#>/̜,6W FֶfƆְ&xO {)lb𽌆1}ab6 905n`Mr0; 4ø^ ajw|`w퇑1{2__naXB9Yb?#4.Xq3@<GsC{csFx"Fw"t"5^N€&D~KsH܃@?s?ߍcĿC FJ (:(5y Ɯ\ O?q] cS?r8YC- w46ͪiPOsxfznkj{X;T#ga{`|l:=V{` 4- a|p;h?ik8<7`3=-Zh:y6փ!l8oǵika] mTct-~?6;a lwؤo~6Ɗ%!lwoпMj_ljIvEב%OJ~ٓ9j*{FvVJ<~JIՊER!Y G.ZmLo|MБ'=6׭[N'tJ#F!=j2޺G&#k˰׾pVMR\Jǵiq+V'JIAOYnnx5kPp+S8,GE>b?n7 ۆ8и<-{Ͽ4.^%E^-ǐU}t&cT.-EN"[^bQPp:Z`C/T3gk,05o rn7 ǁo81p:V%](>z}?T{e*`Yy$ XEMLlԱW1Kb9IV|:S'P9&X7jT pz"[1 $u@fF2G/Z =9iăޓ&#:3똜պe57Rp3yfO32aҦ{?UtnWb~/L_0gh.3|40ثk|0J-{hIsG;&~"hZ~ r 1 ˧_*sB?^`ɋ?بCݣt}9ܕAa2PO;ل%T Y슘@G[wY}XǾvv${kmA:}"Á,-I#>\PCfҵL{rEV4Td1NyM ~1Q.o).As;:AN+D IC'Ag7{&fó{iKlO[Yzz]L=`ىp5;M ~GSlx2 9U2jJĝ=<*('iY!ݝifOÊR%Qzo&FS5uJ%N'.nrmkG4pxTbDi5ap҅0$y~ڂ_;8(JK4sg&{@/ ֬;ǎO;].m#lNCX>~qW65e@=ҋ)JAwq-/vD~?4{ugeCShWa3nJQ~(/~sNtZ*̡e+7qa)o=P9-ndz~ʻDhe=[WV:L'B N 6x9WO}%!{_7/)5ͲP0ǷA&i?wZXpURov뱋 ۭgXʶ-Tű`a[c9F K~ĂX.fOxʮ,/=URE1Y_ҹy^ 9\3꺕9ua[^W1gpf:"|FVS cC"R5]YbeX{Y 2~6BF9R䦾@3g`:s6=t7ʦ5Y1՛ׁUY z9p"źYN.Rn/ZoI0t8s_c* TV>K`Ȓ=εPۭE@IvkMKcq]_p~Ic%8UUܘ䛝P%S;UYʍ]ݼkp󯰰\x;0gwp[ks'^N8:A{i`(^^ܸPIu.q┐ؘ_)G8RQgIG*]LsH ^!L۸^ztɯH3>Ó$(c;|Bi.s 6Uk6-~3g]#\죶/]M{S>ll% _(;a:2Yq`o5ehƩ5J=hA-k? dwAl GF4. cQ$2u "{X4 NNQ4**Eyʇ:0o츖iEOYkyxf1_oLi ž٩RK[Z?s[.R򬔫#5~"X3,–2W:;ӭ33燗lc}A멧6K>CJToN*,2`zgŶ=ٖ} Ƒ86O<( 7g:]R7ϾYϟVPQPD_rNE͋`lR(.XnÉ:髓% ;#ƥjT+ߏ~9݄{N:ņ1K dK%?ŬCX9,9u2Bj:j9.ܔB(}U^> J±[ID֎+rjRAZ a0XEPF`V k,/Izj~๼~tZkc#:{٠h,h? #Quc1ߵ=S~^}?]'i;EH7vKsY`7Z-xgR2yF.y2S.AڇԊ2_GuW',=橂AB v)\} ԳܗGkwoۥ0ir$|!)"/"P(/k2 rQe$ƗGt{KG}i,# h;KzQ*OR+̴V1E3 ^3[(Q+n.ny1nxzC1iWfHH(uDȄ{m_ MjaB]|ŲXk-:|Aѵi@>d q9{1;7l#?gǻ(Y_(!NZM-C̖ot\T8rȭяY⁧֡)7Q0%C@#c6S#VgKdT> ;,r r/UʌScvOeAf۸%J>qi{*.jfr!ÍݡT:-pbY㓀8J}¸PLDTSn&a!k2}C ^l}Ghb\,q<=bl{҃@X3MruaO 3-]TJ+HȞ9=FgHϭ`uݫM"tU 5h<*erOp4WԕLo{<Э>Z 1,oޖ@()9Iq;E8AymBOmcV\2pCqTNjPb# T*l e%F"z8FyxDDk T%5h 땝mci CkkNyM VU{/1$S%Fw>Kg3 >$P/ZlW[j%Ne_v3h-Sajt\҉6jr/N[J 0U \*B fǡ=㡙V o4h},F7(F1ĺm݄͊(f<P͂صJ) ׉ q. $@g1=&?wMM{`yzȚ˪+)_H]v7 2ţ ${=#|drD'1] xx-U4iM洿j L2׬P;q*ѣ]J>D*ipOB%` Prυ]@X>ѡqUGN h4v[NAJ !NnK3o{=ĸ= D} ,= PmSb#N(nMc53W@qePT#kG&ZV5̝{ja&|x>%pBQÛw8:Jq,~Zch(M1EY})lF2 g{w'cM7{ԯ%9VhWd*}FP+/6hb&1.L,胦X?SB6/V~M 0j+ـ3Y*f`hFJnR\|(#WE|K^t;b +πnjgWhvش~b|]TU>C+&Ƿ7^1QKT Wh"hr-)C8>!k?Ai4]x[J˖ ؞]'jwЄGGn LI~b'% O'gKc36_EEYnl]X =m~p[AJ1l\F/f<|1-^sMn\wf{U0/ 0RR?rO! IEBjDu%|*[%ΓG݊M~$΁`2M9 o zz ro8DrߣB\;U쮵*E4BR Hb%Q];zr,hTB.?:[;c)/G goUe+Fgnل*y. Vԓp 37U4=,Ȫ>JMU;|&/1 uWīQCwiϙ(., 1#tyKg,33(Ifl:ulpCEED~xfv % r* }8Kw '6eR^ɞiq0j`ȵN9G޾a)&/sj pUdN]f;id ]M3vx>jJA,h 5/)H{Q ]EGX*Wm&8RwssviRqT6pvS++e:}!&ܦ/:=OB͉Зˍ~> &Qhá fYv,3j%qۢXd\6Wt>_~ڦ ? xVq: ZR=ȣDooVg< qcRHNbsrq]jFeFL6,9}WOOvJ5`IX7Շҁ& / jofu+.?+ Mbu3O)ZVl$?/8'8x?uT7=cc<%*\^+۲yr^,tO,u+7\MM?1*ډ[&^iGj a 4oOA4p1* 8&Lʲ *_7`l[C#3Pc*1c].jU9hycۍГgLPZ%72zIʦ^4U\hī\ &m6pw8J𑗳}!ǀNƠϱG*y2F@3 >2k֝`7+!Rz)x5K.!5DSE*A7>/WTwX7׏ANK8Mir-Ŏ~T, ´<&IPٞpk%(Z$-Dz}A) 4BB%j i B.O"Uٗ| $=uNijdw&v}JZ\IÈlG/PVm~7)Pۧ Mep 5nBR:ˉGR :ZIbը@8ٯ[ 8Ӕ>eld%8PU٪x=DHO3\_71˽36Iy`\7j`2^8gU]]VR@l S1,悇rA*]62 \>JdE=&絖A ѯ@rSx1)W97Up/#'ZZ~^1[s~=ROrL~HExzDX lbe[#( =԰~9Tow**m%paӖzNh{7:cNngKKKW+zq˗ѥNM< IB_XA!N?w!{<"f{ΎK;h0SkC9T;]?Ô'r=@?\hXC_d2lKq$)rWϖlW&ˀ\TJ{>_=mץq&A|{O(8Doߍ ƹ  Ɣ& %ʒ!UlZE;vq ZH2U6>|_7izu/7/"7dVr4LV&ϳ.ۄ`?Nƈny'T>SV `(s(P-^90ؼTl `wWk7YtZ8PFe^\ OįF;>rмB}(/mIK?oFz JABudi!_X.$<6&AYjYZd]̪u;Sn2/ .gq[7bS'Kr˘jڊYpZdy衼>bO[%dXpt 1y֦orf§qu؝qe%l@ qXN5RYKpMN`w1lDYwQ&cu`y5=VFJ̅MS@->gp8 {w=yPR=|bo%F*p~L9j̖REFK7Ĭ[S2\Gk0cJMp[.k!GUؗ4dbbv3$UQZ֛9|VDZKj;YI8(,׾48i󒐨l32i}g"V%]oc+lqGѢQ! 8d__>I*}RHg63"xgEE#ۋ,q) UTl)̨@\ E\K==ivI%!`9]^ Iy<+ey1׃uIts) Џ$s|S}GynytN 7^NB 8K&1:UbKRGV}Nbz$Z_"+AF~B~w<6 ;SYQZYmxpˌ Fe+M4/,VM|OuQ eՅ a}]k<8hT9<f'}`ƛanT]U*uVTnFxyKXE8e8 vCO՟$ Ybt}A>< ${Xb!X8FL7aMWB䊮}<D7Zˑ-d2ѸEC=KQBZၤxgOLF>qx)'I7wwT#ckā:Z;N. c~>Ma4"bi:}G~]V=WxՖh7Xs^b,9XktR#}ha_nAd'<*U8R0l뛧(KB(IJ+zm=NV|S.N#c_)k)j < zxgZ3cӝJ[bO(H-*1K,H$ݰ#70 Dl8 qS^v\1fꢎrt&D 4{%L LX|D޷3Dž/wb09zDX1$w{::gԿ|qh%ܒ&$_׾WA-?&=r­w݈c\J&8\IR|aW`.O+Caht5pV3^xʠ~TxV8jzf &VXx! vN%0:ЫS Q3k7~?J׃f@Vp.$&90vMF&^ӫ3( ^JzAu vw כs /afJԴd.Urb=YKX;[WPH$!FP8®_SE+'QЙ_Rb!aTs.o`^: "E&ѧ٧tnpԅ|hԧ(VΧkjgBg#^o0 ޡ$!Eb; MRzMf5HD& 2&6$EEBϕY1e`z~z^0 us| GuTXrXTA[ȦS&|;eTl[U1f{Abd:/eq89vDQ$EJj*`IUpx]X1 |xTSw||8K눆=m<31fxXOUy  M {=g~Xm^ׯ39;+/h|ü}.Ҿg%Bػ4.V|׍^taq_9*eg,LA 3BKhEJٟnU☈(cl}xyQ=Wl?SSg4D6Xe( j$^i"4OBjVI+َ/[[}Vx@SسCڼW7KgSFH O 2[_dSTh~lR#˜3f"d"4EP4Ģ 'DoPd_(|L %pcvp6'H!R:ќPh>MHk~4w[P3c}p #FRµM+QuEKJK*ē s:Bqs.?E#:߽:2hc| @C]j(K  K{|0"]0H7-w҉˫ {[`rX'SUPSLq)3xsT+Sr#v&Ҭx$rR*$|3Iܮ#Yeb$ӛ^֡u,!{xR+2 N|;g`?'aa߯k(r܋rS"qΤWˍzP*e@ ClK׏Y19'NxF{c5e2E ل;=p)^PMWOL % Q.)A;kJgY1Y, d@iDk9G1u7TSUF€/m\*"h&Yk'ٴ2K,LmownR IB$yxZ0+x]Q$أ/P1z|LOfhc! /trTz?Gy)f3sK_Ru}MW]-v`ʱ `\WwC\uv >HVkN(M|#GCٷTݨn ct-,%3.J&k?JsOi?\g%/ŖEKףv-0dixepmp;r -ĔBJntz}P {%k/[^e;6Xmd8uc + qRk~u_(25~>r:a؍%q[gҏ<$#`&a}0&Ӹ$G FR!7g?N=9z`B;ȐI&߀yqD bPC2u1%beu,|ɟa×X9`EZcĖ36żr$\ә%~(Xʣ4EfDocԆv,͞KqBde6_ɗVRJ@m&KZ>֗-^}c=Tn;Mw@z%x Eg] ,R)؋ûUp)o%8߉c "07r%5ZC-.T0"~0v»SʈukǤ1=h&0H#ֻܟ)~p} ]9țݒn|fN5_.< 5bqa^"B܏A6{͉ rPkLlRgHV(d$:QqFW='*Yݷx1ݶbP\/H'lHH#ǒ$!v;:gbEkGoQ9=s'YQEFOE/Oø== GewءA} {s"49moP si0 ?#N~+:C¢}vVBu^ZLr˻=Lp/9IE>k AȚ6ʙK%{l29á\,m2#,Y%Tw 2 HE*\7=dMPv@\^bcT6ЇcN;?YdzKuQ&h!Ji&Y31/O|!!rʬql{-e$5q4 *,{kjvZyB )PfϹ ]*G2 j2 hς@{|8@_Yh:& "n[4~*<<σ='oZlyRj;!W>0+;w|E>dx@qm q!kW5'L4sUk_;L0x=L 鶛|˔Չ`j($ʍa Q9%d W"6aQuۤB?XZp?oN9?Qlʈ04cc7nat1B0a^U'&f(z殤Z7 p2lP_b2)NT1b}HuNz$ͺo#&،KMwa Ioz-V2Ip2Ax};(L . JM@g69XpXuipiSeѽa`xBx'r1gєc;I{菕`N&yb#_I+֜K}vdf 1a~C. 3 IɹB'P- *cR\_Q4`':yQ=]YgCpg-'3ڝ(5Hfž$!%h}`e[>"} ཷYc%hx1UvZ~9*(67 ~'ݤ5y %= 4z2\Kׇ[p){eJğpsAJ&v2 d:2EGw@(iBȏw =Np=痖g88/"[Eď1{bsxs))ziJmp%$esd4W7 C6#6!T~+x$9yOCPs[d+v|_ʇd:J;8LzUqrt3dұ؈?zfm%ęIf@Ǟ^1+6OawܳG B;p LGK |Cg $UPLB> nHa(S?~+C*sep̵uh]]5-Y6a+%qt8DOTJK?]XK FS ?`@*l(g/1Tz37AF=KYNMX)q'\5#c pȾ tA༚Is 7}z:Yjٱ[qJ{ynyfU{^So8`cdY ]5$(+J}6$Wogm) F`P<ĤПM;Rzյh~:dEhCH)ŗrjP<_,FKz%|^-!bC9Qy9ȩˬRcq%͕R0e4k]a }sG ?n/9^>J^(R17JA8:Wu8˜Y P&Jg%RK?txmyJ-OW֝r-Ucqkh MOAdB+F`m2`f$ln-`8 % 0S%ө@DI>!z+ Iq%h$}*.Qs֝]z+BnXEk#챴0mFGЃb( #d:]35$lأ}dRqqzvS}>Ip4B-4zX `4@'لUJXXA("nOjݷ|+Ou/HuDXw OJvcKp,oA1Itw(L%rF-~ B%wmi/kQeG 9HC11YSlp5^O\WWq[K7AlOOI:FGW{4ҠB>b ű:@ q3c:p)?~#t V6e,Gf.Ex0Y_dὰmrYp0,r!ge_A Z * ._JdjD)hØ$b}sK#1Qn[Rr ͏ʇ8[+Eͽ{'^2sCѲ<ɗ  ~nS@/[>ōԌ".%F,X" fOʦجEH v}fgR#ԣy4[ 4u%fX;{!^ּ$58v#PpKw[v²덐bYޥ#NJ"X!.6բ+M~t^"^=o_3G%-:ЌE Yc y$iw{ lΌǙ D$xvj; ۈMccL9kk0ӻusNoH<}̏^ݦm2|:G61^=b?cqD#;2ءgQ;h|QTnOARẠvUG6}1|bC:-gP?5bYGr݁f4MZ3"yWQ4yH%1zV룞W%͔ IԧęӲg~y ժjV/®1?`g`B^O9Y9G48ǰq6핑h'KKɩDSSY] ̡؉??XQ̧ 2 8b\\#ooՕ?Op 1 e+;ԩ! \- W8m(X #w?V*jV^]fO;p,!}ˀ KqH See\ռr\Z|~) UTA>pH8nz<gKsgP҃ʁlRQW!LI}Ȅa_R5 zin&|Ku]}K+}(D9K4]?#RI2Q3'wKPؼ>94T5]yذ=K lRߗdȒZ7qw8YRϖdwʗ8FeGp) "u4Vz w|w[NSmG0 À{5H1Kħ sCd>i-)(+LHDzm$h퍸4Tuzk}]7FMX+TL팩7yyzw{+1^kwi0rZ @P"R*Tyfo߱Dضw#Gb*ߎ;uco5Oz,"T.>XAT9qV2\˛ӽ#Gf"~X?xZsUsk.,_yMʠ0kaSBr=ʥ+uM##(/l,YDB > l~nh G;N,C@XэQntuH)|JeJj]`XƧpߵ,((.[}miCtˌ4\UBQ$ac`C=^ŸI_ h! ;g-Qx#k56[i',dddU≈uT}MJWa彽^=v\OWj5XyC8;&5FUޤ' yzAr_⸒/]Cך_CЉVPl]Vu G_}용R(149 |XD9˼ɺLV viL l Ⱥи2M5L`x5Lkە*DKt|SDvc-Ԡu[`YCl]0-co#Oɥ[3"p&BMVfuӿoVUwd6Ъc;9c$jz_H)RW^ˮҍq V:y xK>g*/j"07JWҿry^c_Aj"qnpqF]SZͰK,*ce:+睤ѻY^$rgH1uI *-VmS?cx}Lx}EɊu,h\Lghv//TՊ7GŠRT: j/xP\2RJСw\x~@ ק5J7|O;^`rC>F-=&(ՠFiN4HA;bHVNq6T ʙC$S_W!Ý8ksbVARY 7ܺ6*d.dzKs/B:XEvFʕrj-⒴`̭61[uY4&MN}l DK#D##a-[vYYAheWIGAwA4YYDn <&E-:.xJ.z<%lj@nK 3IuHVWTTo;nlFIcW*`TϷ#Rn;Ru y=BK3Xopr\aq[dHw_=2W> i3 `LP ]_0,kVB<P=R*ḛo=-]rdDŷ̟ I#t)TGzM2Y:Al+8kd@=($;lКw1AP:ۋ~AR%!X_+|e|맟,|^}&-!#~T,У2ĥ(`? Z DoJ_z¨'.za@/ 7&izԭ ؉ !.5\WenʹRezEkXDO+]SV{ps-<9e [U!ɗxlj= 4s=0O tiJ_izbSMt-M>Ih]asGyҫbnrqߣ#H~DG yN!ot(S ϧ[ddGڐa*ePLu37b6y˷>XesIzc`uP|fc[yf?H, %-~!`,s=e:NTk+pGxLCH(azC2qD\ lܾE^줉/mtXDg0Юh=Cjix锪'd8f e3 j (<%^8iz'\ISP4SJLcxɒՏ-pm%7\AIb-f@פ >%y8 N J] '7t*Hg_Gpl0 c`+@Q3 `TVЎ3BC~`2I0FBj<'u|] >AHmoD\˟+*%"ds3W`]mKMiXдu?T}ξ t$#9o,_ryI zpǠ gg=: ڦʇvGۊ~3OyjwM@;Kh <ݼ˺|VSfRM:ՑFXR0Q7/Ս+IO4c{I[#Lw!@R'k!ku @w{)w ~;]QMN΍Srs_F8q;@,"9sҹhP1dhYJB$9FBwoGh(8$p:F!ZaR.]dBO1I!no9_@IG6J/Vt#7L= ݼp3|:N-LN;qQ4v2߯ɇ/z!h n#wb@iKDioiTd`fKn׿LU /м (kd\0t\'6k\ivvY/#Bazm<M=nzHKdkkpaKYJ$|c:bK ?r|Jpr5`p7m˧6N0PV%{^jmFUZ!M oֲOWc \Skץ=%C&=h|lm9nZ~'OF8 }yDŽRh3RY r60w#]k1֌??CEkbϿU-v{T 5x*QU-yUɳ8'[UQ(feg͌wc4Up*"=|sp.ri\*Oڼ\a Fr[gMD7(a% R*hU,#:R{BWt< M7݁C; (p|^w$+\ܯpp&pi뀆s>7}w5)m<TۜZZw^D2UJHvʢmais[ |əRT4g62lڋq)KC6|OLp,2mgGKʓJ1|tTCC@/: +ARI(fMaoe1\raEXCVM I8QUK _;3Ǜ=adIvH|͇4wQl%l7xֵ7Ҙ{]8pךb(-"0G[v1 .=3p ~fO ٞ)1n.P*5auʘWu'aGú{65 W%bkK.m/rS0D.kҗ~;{@aغ`*>K~H^5[7*kpekL2Y&zRSߚUiVhHnMnH9yf{e{%Ku]w緟p J}۽y0-XYՒ[y!yBy m^tq W$LyALǧK(qX'jGr=<#Agb Y` v!]49`&|>hȌ(ׁz?Po&b߁r~Ր0maAr4P95$]1ܷ0Ykz,4|$#CkoLvP<6O>_;I@ D+_K&%Z p Ah3夃-ߛ#{dΫ?K@?`ѐ~M/CsaڛGUa|{2߃B\Z+G3 fߤV0*N(]ˀs"m~9MGZuVl%ʡ )pd|xjo *{FdeRkI@ ~b8QANY&6/N>l&֌Mmw>Vm_0SQ̞~s`?3TY)r[x>85نxZw\S XLEv;g% D*CDׇ-6z,IEˉe72y"mM3]PѾpbL˽c8 ]-#$@xX>\xtf8o/#)ջ3KZ_˛Ͱz2n+%,*+ɡNׄ*h2,k^8=rcO"®V&J#!= S=J0muؔOqa| `fت'ָIs}9ırMq߱VԫW"(|tF/W^͂ĸ-s-En*$ZߜvZIM^O~XAv8&!ËnӇ0|:] Q9On)fS}cc[4O4EbGxn^Db5@ͳKx=K!wU7q- Nt%3=0C %exZo5zX `J)Obaz@R">3n on;C<BgƤA(=xC޻~r>,C}$)%Gފ,v x,搣vwWbOۗRBz##m&a^nԉh뻬sRb=%<=3.Ǣ˿I_ZfAoڠ0û#.4uXAF`r)\IIe:_UJd:4UQ矰"O*᫏FtA2ck?`Ӗ=noj%XXi/KOqƕN/~ l$/, vݶⷞO5w3sDlI-ÎDl|!UycKuy>T3ll:|cU?B?DSC 6BO]pQuM/XgiQd)iV>{@z._z21w8ͱ{2Yy".gJ}AR34_>BViݢn4ldh_ԁu~I@N^symuFS9>񍬔PNjBAX#"+&Uh3K%jԴ$}D':/7~TƷ d+ij _AH4B5 v6s(aBy .cy`!%Ƃ{L[ Ժq !ڞMI˯W߫N(*X *t>Q"0+W:lK{`PYFޟ`% Sjֈ)R7Pj1#rq4<%5{O%*kn@j$4ȸTs-ݱG|!P"ǸxZrvC˅ЍB^%/ʴI82>fxc׌gnBfN~!KN탡Pp>bI9ޣ\Hnaװ#Z gH{}T* l$ NhIh6R1+8:Y_vz雕/ M{;T:߃9W/ xa+bIT@L׹^jXn7LE )؞pg{|᧟$q=/4Xd:pF#KK$c]o\h\hoUV;~ҡ+~”}d"t,S@*:焫G_=n(,C$e@Z'RіTi1x x0kN=wHE|t$&U#AeF/]*(+Qe g2Z9F +kL]™~~9tҡ2tu_HhX+?uLRMW.*%JÆhAM.+xA_L˕ ?q8@<-4~'#,8ʵ{載5 OcRxVfK߾@ߠ-G*H-)!2κ҃pDb >1t 4FAx%'}LYߠaGc(7(~%ud5M Z#a>IW"% (Ļ~uv)UX׍oE__5Jy*dѣ#8 +s+w~O#* Ϟnk\yk3\O:k9i h4ׇ&p3>j۱Q"z wC_X8I@?$)0=#υ9BNÅlR p7-/p<[6[ܖ /Y2H6NyKyB8!'b)/M 7b~7K-B^oû}]}/dJݤO<ad\tB1 $|9@r lY}g<퀕زgH߁h6w8)A_{}BKtSa3#]qA_*k"0$,Ryj@#` i?c3b Ѥx0AzLYu_2ona-Xn6=թ?U/|:mY<,^^wZܝQlտCF!e!Ɍ%՘> 17MɆ8f?)U!­ @x, += !ƒy) MVp&=x:iix:Q~;`&c|;p 0py/(/_ Dvl7UN[I74%ܒTUq"9~^w.FWVGU0x=T~ ;$=i[b Fw xF`3SB$gdBB\ET7h_ZJ} N KdʢOW'@Ǩn;S=vw4?3VPy;Iy0tTEY$#|WْBmXNnٹ!JT y/9^uu'5!j5;%L Ħ Q#`'IsRmHf]ð -0(;M%)fcqCJԯ_)wP0CL݋qL^sX\Qbd9ͪP)VGbqw#X &7+)3[M޷CoRg N dw%5r'^_$a'} P\mzV:nK׻ $a!wL6Kt[ 1=)d$dN44b0ƶWawJգ7%i}AE\$Ӷ x|!719-2SY2̝ *+!ĕ`VHCtm܁ ):WO|s2#c6!xd5l `_wК|W)VKB#,yV({sOrF, "$f]^91j[5?$h 3u,'ZIx31/[<X}cWQ UjDd?mB>dpW-abJ6QT?C8=*aKQ®c'//݀fl )}eZv|GK^&1!dzT9k$p"j9rW]$:\Ll$ӳh0=D,^w8̚#ps(ow o"<ג\dۊ}f!,C ~&r \-6(34bv7*]!h۱妍a#6u{B}bqC$҈Qx^Uc4)) l+N>UO:~] #+ xHcGj; _#Ts8h Ȕ:=hx&"5`gVHM1u􀠄[Wvvt*p v4 %>3OfVzhJϠ6;z Z^#VW0hm~K1sb^9W8B\\mf#eJ!i%P]8!lkFG%qv ad0`U-Zl0x|/WC';9Rt=2Wg:ӟbBY4|*:?TN9^sȟd~5LBj3Ǎ26 ,D2;@DAtHАͶBtUrr|y#[4_}'ƹQc?#Քe4uӣٿ,jt.2YETy Y9>z/!k~H@cG|\VvvF%^|KWy Lȭw3M=6 &(T=ACMR ,Hcٺz&CL$F '9Uj&/F9(.O|==JL0I\`h'['iH27xrp/3SZ 0cZPq:[Nv|9Ĵ,vs@<sdv"yTHj>/ss7I6S+uzu%jflWۄcnkyQ5x9T;wn2!]0mvdM]d=dܭ[Zx쒗EU7?Js+ d3S4Qwtܶ*s~Z_1ZJgQUmA {3}r [) PJq1SA~~+NDZi+thmURX:#̐dÇ:0!aHKEfi=G6ް0Jff _St296;ͮ웋]tپ_%^1]N-4iЊ(4y2ٳU{xl$xN TU`W,nLKO!u{),L$炍odQ%vwAܾѽCOOoX;17nm:DXu&.hbA* #jh \0&.qϢuvvQMzCZg1عDjGDRxaJI/b. cT BP쿮ztj?@r-{7Bm)?8UpNɇJ AHl{rdXz^{By$NȲGz3x FIKćQ #ڂ}UQZq33Slxl"K fH8l@o(f['c,;S Óɮ/&>, U.&Y}57\mh4tou $RAIr΢HRgWgRzg2'~Bl|JXxk:F%uN*k{EdOe*g&oﺊk#  0·|YdL"djSjn6sNwXz q$O#ldZ8Ɍ㮬 {%k_IJC}*'*N  n'éwM= Rb7=q,NrĨrDŎ  I;~ ]mv^LJB47wR)QEcfY+26?ǚ$5梂"'0mL{d ݱŰ[J_kxna"~h53 g$nSDV(q41!"gU,KB7o/ҺxܶCua4yؓy++ٛosD-rӻ`sNLOK-pK;-m`pT'`w.!tbu⢅4x mm\|9$@^{,$b~Xܣuj{轒c{A9&'YUD 8WK$h83bO@gHՌdm}Y77&N\5"},Oh|;cd].λe}1cĈB<@)47OW![@@ь 7-N!O$WU)~YeFBAj+r\ i|cm);E~Ki\YDb+_G޵=e<~;SkPNv\[@APE1 i:NǰNc (ndi`] sdzDڀHPzz[S)b՗'@Q6M &X9^+iPy*Yn؜֠< tb:-8CTR( ³Z꫐RX54y8*ia QUq2?V]{@q㣡+.@o| &#Ӊ͍4ޛ#6:^ȒJܱww/+gLV4P~bcTGi5>{9=I"† 9 {=f<,EۂW5RTLxlҏlEZ kﮥ`b誵Ӛ(&̱IU^U!ha_"/XH'+m͏f?jn `d򋬔󧁋꭛czv%<1.c:SHGF`qhr?Dy*#dgbh:V |TG8rgd Ͼ# 9\pMG|PIET<ߤzcFr< 1=৅it1QѐLo*2$T;Ӳ =؍uϦEvM@dsy笥\qܳMڒ/P,JHփV[ 1W5<M7 Rs-Ͽ{s6lR#AYJ@s"4q`1!;e!6h֬.~wZҧC%4pK9\o~b-LQmk-5| "!9VB69s N6ࢅzC7|K)ඍZ9S'MQe$伇<dh! E$Y2V y񓿻8DVɾ- ?n6 k%%R8FheH+D/^Vex ZlұY/6=Xᕈ&HBkRljEtyi{gE&idYN6=jpB@ .m۵rRҥl -(pnX#/_eѕ ZJ&EW ?PdS7)"K+%0mO=ʚ a|nix8~\rHS2l{І2kɧ9͓5T7xUN51#$5kBn"ce] N8NH4#3@}qc_U<|We.$<ؑ/R.I-I^'yHViX30qsҿkYC2dIy4~Ҏ laekhK֛)p-%zkƳOSa0مOil9]\i@ g{ +:bn"N+vύqlh$}đ+mzG,k+F )t9un`n6ٟGv8ҫseyfHuAޛDC {pz&^AE$4eZaߴ8KJ ">ن{;{`jp$Mo81<b)&9y FL+XRe !L.bO^%Kc*(ZyWjbЎ$kwf;"DZ|E}17r HpXL#!dSK2߁ -A'CG*WP(]#,nHpǸ=od¬'%R@5o,QO&2}C*0r~ S AaFI4y^bZ,|IcPxX/$ EZ\]ZvҗANQ}z@QҽB;P̈Yz.I4E'{D`jpr ۃW7zLLSH^y؀e!ɻj,lȏ@: 3Ð^?/pBOC'?z)QE` mWLɏZd"fb10_-"UtF\5XkJ:w#ӇLI$W]V4 4j7/'?^rTdo{.xS#FJ\oh|_Ҥ^ig(p2Q*o>0T r݇;"3lI /)0꜓{Xl3S.b0wsTx‰\QXb Vp ©v6yIVQyGwfV*iƯ`Tx'dˌ{ JJ5(<8;l'oF$2ID׸$<[zoC-]=O?oc?Q.L[bR嘢U]&l<7eHxǹģ [ϸ~TmKld2ӣ}Z!M^8ttP˫z*3-ذ땼Mj*I9a*VCqWE[107Y|ry3 ps^x NѾdwau^%a6G+$GU ,02+3dD6Ӝz&`` ;YYgB@7mH֧v<2dxőix>@42fC,G`"<珏[<V‹pgk LLRß0q*KypRuRa9BI ڏPuSCC:;q_zv&-%pb k5-녶 i;]o`l#~!)er}ӋACϙНˤ`}CN '|\<SDgokhfCTDԘI&*R8cCm<{WLFM]B;˦u8 DJ^6F|J@%Qd fNqkQ շ[#wKǸijh`'CXV8\OdB9yOi㗑[gC69P1>0C3vZC,H\O: Uǚ-.hς rAru@vj:槚Lu/2!1K}28*4,~V[Ѓ^WϘ?u ZVʍViU`j \Wt弥cb&K`kZPгNnUзt:Th!#i^TF]:`6XR iTI ,[M焿o3zD>;ey!c }oйIm>5vґc6)|[VJ8z @+" z3칃saEw)k}HhR#\pc2u2v5ׂ-6X90tifug .}_C7 3>u|ݪDTPNК Fg͎)2<ހ*KFtxfҞӮ1:E+Ο>L(EamH!)s@j\v_+Qҟ=(5+bwN9VLBZh3{T30.8$<2z&B3 V[_5 j~GffðܦW(k9EǵC^)?POq`;MA:[K`9HRУ\0X'm¤\D}slu -NV/Ϡ;-jT01+ή;{@m*;lN_pRc 28o5HeF;7u&&a[fQKAs{9pz01@ `:1a{nY8,O|v}JUЄqoM)Tůj_7vLjgkb>21 AB#YhU̴oCy0CYZpWIl[N6Su/ds"/sǛ0^6^xZ'pfV̡ d[Nr4L/f8{->L L],VmruQ3`dDW$ [(STY}.r$'x &#ׄ'*Ee? qi;.Td!'sxoQB^[cDɲ|IWnS?v4JaYӀ]+Jm/gn[U2 qUAL.F }*§6X ^tY \/., JV}+Z6˜ Q )Z(CE{~CҢQb.6kƷ)]W4,kRP<mkK ئ|}T|mxƗ5m,POZ'yX}w}S":L15QU>.v+ō5]_(ڇݞssyάT>~PZ8`hPOB0};k?[^+P "X4EnA4FXjBWSԝ dX0F!TJ=NK')薸jBZ(vx} TgK b7Zpy4B!_ (>VN%ϟD+ gR Ts1%ߩ>mFdCӒx1Xie۝pnzE "釿ʓ}M8l$J8͜W'=T U|/<+C5y[$˶_$*?3ty@^ibcFS 5npR(KebwQRR-e|_ïq/6l]G=L_֭NUSXO'@ۃ#\VHe|ST570%ų Д)In|Fg( [JBFcG_U1,U d»neb!$G؀Q:Z14%TR˓S(0}-yeZ pY1^$--lbe~Z YEĤAto4k|m@FF!O耷Kf7,EjxE[# S\N{ꩨIh[0HW7k{k/#hI)`,)UH^hcE.xM J^ cDuw)nQ7e5  l/68}Wa8}^ᆃą1v ̅]QÓUY*]C`X.gE}__]M >nVSd<hs˃0qUZs?2 (CҡQ`q*0+FM8)J}Xto5.G:bҗ(pk)OL&MeCjWږ ʆL I%E̗ X%v >%T@~޾`meМSW6Ӆ ,`YXմ*?v6*g|cB#\GguA7 \(SR=h.pZK.nY҅ k7U)t0Ț'')p4 T(d>ȧqM|:W#++2@@" fI]} ym-Sk1uÜJ6<|22Cp<;H5u_%-f#,^tRIr ƟvN>^ba\֒gEŽb),*W?5zdf@eӆNJ RgkP=@DŽۯ.5mx3Rm7L&K[\rX%V_x|b8"`7C6AB}&Te#q1 (I2ax"ןj b[X#-i;Iz+6\S2A T=zN^Iׄ}9{YúS# ]׋m|M`yj1#5.-lz<5bMY AJ>QOD`ˁ~n=i܈dH}{N'ڷ>1/$`,kcq8H%$up"jKS`D=P$'%#n<\* J)P|"0޸BU"+6CE2p?i,y|4KCv~_v (>2Y!-J%at-~%*u93Jyٌ2fZK,v\oƳa\ t+KOI{*"]B?v$m-e/C@dj)9$3{`ѴNgYA]CNkW+gTyyMk`YExDdΠ! A<.)‡g~.-I$~z*ܯ50Vq˲ +uJ2JnjADBo#Hӑen/W8-$\ | jU5IuRwߞo {(wd'gK5~ vk.D+$ %=fbU뾘ؤWѲ0W;Lueyz>! ]`4lS< TX>nqsbCO:*} ?XެC0e_,_ .;М;AjʼnJ3 UduTI[ 0W4l-TG&Ԟ9y|jzhZ?9OF ejo/ױ aL@oܽφzQFrd=;KO\n)i{q"8(Hc#"vbNgġ漇Qz-/'z b#e r z+~Aә+C4ooM&77½"H=Qj>m:;^x.m%+7? p\rJAc{0MPs;cv6Ԥpۏ[Ű+[My4k9`HlTv~}HHIPr7q!>T\ ?W Hӈj[cx-"Js[ 9Ul)4@Sk'%!U4ח0yf- fvg\WUk1Y((>h5|춨7S).x X)?RqYD (wFG%m2v4U{`?5XHY^XZw?+ 2e]l>Qޥaz٥2/τjQmf۲2pvjXGfC/;Dn Pt"a6\o6q W{i5>Ce~A śl1)1vjWP c^ (+~uX=xx-qټ|LE g[8P3fh z!-Z}22UeWMkH˔PڰOwO2@D|/'.QnH(*iKvGu0޲>uϟnB,\q I~M͒;o!*˴"{L#籍х pICjFc˔3Il-'v|ם8Q>6{ڳ"ǩ|7SįF@)%G W*?ӹDiw4[;o"}SKC;^ HQZtʹs ].B m9;ɷ+DBBJqhIdg-P`$яe'=WCMϝ8G9}mhE և)Q2o08q֪/).~ )"WF2ДvV(s( E Brn-WqӟmÓ Osٱ%rKj p%F뗠F&OrБWh{gODڂFC/b[ N'w*IGpQ'~; VKv ߻biu^F6d"(`4nV$fX?{좬ٌGkʥH~ X/]ݑ{s[Ju+4^hTZN_ԣ#T)<%7{h~ gwgP GdDl}񰀢St',%0GM!UM->FSVS%/]pI5|x"ZMcrkս&>t=N5.+7mA1|xl<#D8N?e6qOtiyVk:刲@{j>w<%xڱ^NU#&l )l B`doe^`|r2ʒ}9^CC=km߾؈A=a.4r¹MqQmt'yp;6t4x; Fs,$E: "3'~ /;N[u@r4Jj[vhWZ\[Dh (e7&_( X'b zWw>AhfyqfC]H1e-IX/tP+ t"r.}micf\V?y8N߳~[';yl~F!Aeڽ?j:H- 6(OcҸ.14cmh}u-~:lFx*/> n| ]\htjK_\mg@J~\?:"- N}KwN:QBL .q\J'ZTl#ţ4 T v}ԍ#|18ZGBZyY$ P{\sSK|,W?T2 >q%:yOp9iAU7<ׅí$O (QiT02_ vxg3R`2:dfCYsK3 rYěS=Sc %z 5ŗ@qFL&#.dUs͈a/=ܥD4}^@Ĝڢ2\3 FOHq035E|mMS÷{I͍%+R ڪ V4!g"i@g4h7sH=m{{,Xؐ@(+,iS3vD@ 7Qq&г q<Y,1{5=򷟀04܏L[$lQgA{/.5k{kK6`^lksebAu6JeYՕjcɝ97D~ ^y͍CC|wW0vQ< m8)K& ى$ڨX|@ j0㵟R' [|8?%^|=Y~\ P"DAtf@Z. D2UV~)GJ}KB{_)*H(_ʰJšVMYu mS<֥ jj/!EBJ ª\8BB߹ LrYy1Ɲ$,i܈_޸1@qV[mxd. b|@8 oj/;6· LefD.^`(lnLXxGZ*|8]M t_#zSO6}ADHwm  'z\d{-0تPz3blC \/A7CVϢc⑳Op?JbrYT(WT8>5WoUk>g/J-(,THljZB&^7nv We!>BXY5;H ^ ,q:j=fO*TsJ8usGȣ#c%y7)pZ\u4=s]i>pgQֻ@gbQ6sɄ- U7i?\ڔt k&䋐)=|i'/3O8+),L5鐟 7O-Z)-~hTJԡrb ^K6 k *`1/K)\7`#a~-:5%p3&~#HԶ;Utdux" I -ePQO<)K:dGGu䝼NE}O.:$,%Qv}YYد-fQDp^FIP4JQ_)FݰJ\;+7DE\xH}jZߏVL7)_T:ܲwzn4|־TY4$越h:{~ Qg~QW &1S ^gS) R|&JO>oksC/z9}@}>lkcBm:~rŗשׂp8:*`:I-r/uЃc8pKCcXT˿rujr:%XOzExe)0pLV̴-(b|h~1;ڠ ;}t(zc)gd3[ Zitxtl/7W0οpD Cw~Ntvfiu/OQQq):?nIziMO@V#EiΌ<\wQ LS1+/*lX 8F|D/. O*'w]lX'[7a._l (+ފ(F}(Ӄ{U>*8n^ɯLEg`Uoz$f)H=|.Za;1/+v2. z`pd[lrā9_+6BܞTV禫s]t5(Һ^Eo;ZIF5A*(q@R g)C+$nNv6[ 6]lJdϮQݖ$uP_N4^XXwT/^OZa88ɲg^lq#__gFqXut7Pڦ/1ܡ~=1}Brңt>!CH^PD&>5M'N^-zh+ZB9w];LR>tT]]e{#X3;kNw0Idl)dFI@f"DlU وഩeWmeG;=F{l0U_J=E#һD-JKu* HI0G՟U@yY i緩MU"ǿW~Sum/X KcPfhj~/&U2W)nTĵ2u>)*iѱm;p,OtT6_ 3GjpSn%Sy "o1<<q0HG9r?@"nK1/˘oq7c@<9-uP:ae#]uXƿB. ?X^7 =7S>ʲkl]gwSw+v^ 7 l8zh ]Uk/e}UYݿu;Xn/ToD~!({}g̜$c"!ԩ>AKsr^`ifPOIAٓ6 ZեpQ`(`* &[T(F6&6 {d .e,3P{aEو[UD@ySH)[+[@8|ܡ g#/1@s#|f}}qb*"-dyo8`\w#DB:ŴI *{[D13VkܵOOZeB驗1[3% \XsR(Ҙ ^] ˬ E\aE謉0}]C{/NJEOSD}|WK}f5swMb ޹>*RU>'R.Nr,^MopPt|u,˜WB8B/v2u<ηC,CNMGa(Pϊ ]ST<<`\;zES3-y r,cZ_J>vfO UOUN65׼wN)#zW[} sGݥH3!#@ Y$umbURB;OQ2j} ܎a&ޞˡ)ߓ,N: MeMpRUƕ,ڈf !⹴z׹~vXVR6GpQS7U{;OrDl#e3 ,ߦuEXoM(`[̀Y)]gfeF-]xL]mBp:';Yp\y^~%p:`LbHa,5km7pc* x,,Nx Ϭ|VF7L o(}KONNx%t M 8&tNO11-t@ԙN zhMbÊN5Mc-Ag{DI qKն -Vщi8,DhDZjzeY-ّ}$#\FD觔rN%MDJC[ޱL7}*opj6c5՛|z@tŽJB$N}i10r iq`Hd-&0 $=9c)jbrnPWoTht%^uآb*L~kjQ?4YZGFap.& K\Ţ9(xP?UG Sy[W{K`3+eaQq;OF$n"DCzRJ@4MiV!`1n+oac Zw⌰B!sQ,bgaa~is mWXx?bO\D*4Ir+)P=bXqLȾb1X1%q.I3,͵,-gYMY-"}2aAyJڝ>9@e_㍱ŵİ>Td߆#l|"%rHMreB|,ǣ{oB5ALgW-;D㓕`jlH]Tj0K(#dUB;vͧT!{҂y6/y%Ĵwt) Tň;[v 2Wg蛩P37JTX{waؠWʇr9E:T\%o6 wev5]1r #Ʈj#l=ea!e$Ț5T}D`|~B!!L޶Ge?Mlǻ4Mve$8W6"22`Kr=k6}9P_:3kzMa$vjt#ifxCeFϱ0;;UN"VDܭY^a"YHpeaΡ0)Wj{\mΨ\I$`FZMĞʶ5'`z6p4^ 9jkEUAWZ"~qlK2RGև?JlOp^iKzBiZlef4T#c] ,kԆЊzia7$҆i2G4]Cn3;'"i5Z9\gngMt\MSڨ9U)eur7MPVF 6~ 6Ž)%&`lU;0T*VA?w(2XsOv³)/ra н`QT7a ϲܡ8ڙN{7:‡vHbb)qICb xT ML)?T8kF-oRߎWBu:(?ZЧN'v5:٘cMբ &7H|pTkn@t(U؆RՀ .O"#@XwScƊ EvTfk)fl m|'A&`>?/tq4f&MښE5 jCb? Wrd?+`ȼ~F:/l=P]nm/_pTv̦T/!Z^ hRL?;?Ϲm/8F$Ѓ^V dYE;bz8[Z?e{H:˂*~įiBBX&=8~?y@MD$YBAw` -qۢwGޔ-Yu-~۴1[]|:`b)9ZUYs>)Ȱ"kf KmbŦnzNv$kE2Vủ~^}*&E)6lĽcHWժM@wu_Jdiv}(z|L%ϖ͡m-z;ACN mbdHoiE|Hf&֛Ǭe|4xijACɼ%[V0eyc"A>ݪi)c:4C|HlGfg2͎wz⎧X6v2yHq Qq"nWrrɼahfz`vW]&kFEPu&W+VEOR%5_>(Fv".l@̖B =+!N4F$gEۅ"u :7U1>Zbb< Xcm j\Sc53SLaw4Se,mVo}THe`tVk[$YGÁrYcx;}.V5_;Fֹ'U!N.qHQNc H)[G 5&T:Ӂ%Y=p`P;~qc[qDS>dDՓXfo\߱6'^{6)~ܠ0QIFfLLzA$u>ddJY3"Aq+vNo2B>Qw<.SFQlFx[ϨjUtC]vY g 9> dI}G-neN:rj_=!eQ޾V%#dpĔS'A¢S}83q5=ǬqÇ6{\P7N8T4`q~܎'d7``)i% PN9>BR7#@^I -RokxEQѴj+COOC4"漞 T1l~'xnm[o=gv^iK>6}ISHT<9 x>L>)* T ɿ19>12cP{.Azp,|6 yr: #Ŏ!=:7VCZBӪ -֛ƔpS7)x`< ZL)nyF jWd:̑>,0cnBv,?أcMp_-+Q!=+ޠ%  FHSZZD`Đ2Re}HeG!Qh3V&L !+^uZZ/ h!BKCm9O ~g,QEGA8b怜 ]"a8lDջ ̍omV^g!@2 ̸u̇7} (;mTgNs׾rżEoKh"l9i PpAJJKzj*Ioecч@AB8W*WWMs rwsG\H@>^ zRe"#Eq;0A:]vP3=i!Ku \+eo ca'rtC+]zZ(%27PH17[o4Ҥx/x[}Wڳ _цa 20૞)J2 OXV}17Bk,Rl ) :G4=uerJ} ~kI|'b\qSDKps]o^Db]:ZeCOcKiE<&uF5L (DUUs=.Ş_U7YU #T!̬ GtV[INjc{&o8阆I+mSx)(\E:1kyz[ O3vgx%Q?VL-5C*E;PKyà.j#cf Na +4+vM N^@`.ˁ*K<+%t5JS?zCD+*[&x G9EU^t' D+ j \KR&]~ln* \ֿlJ8.[4K?\O"AG_ڬM4+ ^d[:;tEH7Dt!|ʢ]L[Շ̓f\n$<6_JTǢ-EZp̵݀6PQG"~xv<(Z,fbTOY9=1,H>ZntSG^t`-[K#w)a ?Do.99:!Bf*j%]6߱Wal$0Oݻ)M^"k q?nfS##,z?72m,-9҄tCr,ao ,;:Sˑ1:O~Idw!ZdgV:b_V>*;jXu(u4D (طe1 "P+ף:{y R%1GLG4Duns?kNy_I n {nd SD +ō2h0kȒ>2:-VBqړ}tI#j NEoT+[1@jk\Bx:^ǔ"#Hf؜؍z:gVW# 1aݸ7[TW: g*E{]_/*nKzP}knԕ_!Rl9oKٍY0 yGB2pst3廣ZE=L/Ά) Mgm{iǨ CE|cC/Χk`ĨY"CC.r~K㘤eT^0U> BGb4-3•1SJLh^a~uoEmUz Pmtq?*†tӹ) 8XkUzf*0X7m\`ZskbM1V?| ,B"<~`NyoStk^."*+w$%;V:k?`y T@nc̀:Ҟ rEU<|!l*tC?Tػ:qme#'ވ~RȓIJ:aY e1q!L6n$;\) A=d 1amvvzr/gs}X ٩ n\D 1,]z >I7q23.rԇoA ,@E&4bdf9W` ,7Clb獥[ߢuR?okgH %j`0y/nN8+HJ/?'++( I(l+7Uݓ2i*O+_,IڲJ"M֏g.e'~cɼR:eXMpp[^ tM"s@ i]cE5E^]js?GX;v%97WtB^KF4N`G{p9zs+K]@F6G@Jo(3.qXW7[EJP)2GڻH ֟|zsP읩jpIJ:U}:INWa{LM >s*G&E*i<'߯k֢ђ&NkKj0%8L3*$t1gcM΋D ј9ҵzB 3;c*)aG򭞤(\e$4+={Os8ι 5zWĊz`cJ 3+Qm-=ΛE(֩9-YSQk&O.VDZd̦]XKжu±++}^]D)} D&6z&KABsAj7XUouI`\Y`nmbҊv%R2ihe ڡ)&-(gy uS MC g/"[ݯ(q@B_4?٩Kn-[ń7Z(!~iQc,⤛ 6f_Kt&S2V)2I}ǩyu،0i-cqT7_"置Se{RS g_e؈(_!y.QRbGw9m},c2 = ŢitK(y9.P赠5q׮)ݤsYY6[i?$8Y.+N;Zq"3JhjnX^{c(TKNN+tFHLg>NK.;8U8Pc{7D}QH-IZM/߱p/0rZlܼ"BU)&h^R?D]H6E ^hki`ZUW[nœ84mx i?+IOjs*:t*2ZՊxjH pbf$KjfJ>z6ew٭MkF71$VPNfQ18ƫ=V[]s >ɠ[y8a+,/F})W\{S#%v 0x8hFAp+Q~\#UT;~: ԳU ~w}9[Q@L('*ٝ#r5ʕ\^@w;J Kpg3!.N~4bdr7GUz 2MxcA[ZhJ@d@xJNvڜLa~~1䖜]ʵ===l dV"8wkxA@etpfhU36KgjE*=/qJ0s5WK@´(@"&ۚ j0&Ttnq#}xÎ^}ҁ.E pb|I 源 ̅,u' ?XDWry!h`yZk*zS`J[soǪ[eBJ+N!ĘMl>X5 1qh hƍsU_oxkOn7R\t`=?K6!,Vv-Fj|"(AwFx2Eaq4ڦO 7B'Nq~cjN |9TC#U=qX*wKWy?R('LolqO/BTڸ"]h#ЗoœDF]Kc=hRy8%KB. 2U@Êc`)_y|'x"mnAMcW~MazSev24OIX!R6 ea7/D[z.P&GG12 w`4%AGvo1Ù|K`DH1Uv$9q{)J6$Ozq2Ҹڦ2G,l"/-<4DJ: 6~Eʄ|F~@+ laEP'RxnxQ>J. O>ek?uPJĮDb{89"fHhH,1f RMlb{>ֳL;U5$&sw,E$Dgg<PLaT mB- 1Q4/m_)ɭst.v!*2h@è%5"\$SF?!}b0rr`Fe-#P-ư[c쀍a׬sPw=$)SPw#R /H Q/ͨxE Xb:]ȁ5%GRWj`ܣ1Qd$Oö%##SĄR{v0jrbo,=J .ϩ>tsiL AccQ)F+FYV?+vHl4.RO,6psm#{J<TPƐրiM,6+9Ak_J%A[:-n4WPڐ2Ȭm-"EV_=Ѫ74n1'yx;|V^E`wo="bkz/AT\FRDedF}qU픉;a8ڍS^KdIjT&te^mW?2G Liql8 /mWX37Y,%r#Q5҅?0A޹st,| ǖw%"xS~}{&O\s=NW>:ƻ7# v%A[&L4dk3.&:Y;vun'yxҳΠH5C`M|OqiH+uHT"j(+rr9 FO& MӶߪ Ed)F)JTXޯsBh_ #wm?C  Wˣ.CK5!cYޛ GHI;8zB\Ũ/:K,ϗu2iDMc޾' &T[s>=I! b/yxy4MՏSz.V24RRhjRBZ k['WU(SDt|Ö(bǶm۶m۶m۶m۶my/dZ7] 5aRvZvC>㘁5`\z\r(^*WxGW_*C2U$D슖0dr׉Ĥ+520zj4{r AhSƆM+9y*exi\a xo/o^xw5ru<ےtTJݧw&k.ǻoNg]@#{ [zfhJfgdXd'w k 0 0zbDm˒(bO"hI$g8A$n?BpIM h"vG 69Jn!g<_caM/[8*(`ZVBn5xs^βm_Dl u`qL%3}ʩi*r76"v# on|d[03ֵF9jw[艻lClz7\3}d<ἣ\.Qv@bn B4Zps @IiAk~ "bydXeD9w'rQNsMaLn5n#| YVBzVdVXc {ħA[+@UhjYf1K[ ]LzM8^O#߸‘]lOvF[u/Ufk@ȎHr l3?S-XvH6YV+5zFJ38,2ܑA@% d;mKL!DL0;DG76:,%/@Eͯ+#Փ ˖Nb1+ 'E@ֺ4OɅUeK*UAO'6١qT' xIk˲u컦r֝"47Tx 9QFCS%ESGtd:;sZ &hAZ; Lj8} zacRݐ-M$2FKGڷ(>Wd-]OtƃT'@^h ~<)HѢ}t]٭ 8'Rɫ母+?<(:WƔDP}FYvVv ,C]#'c Fwdtqd+/L}FonJdJ`^9:.q=TXyQpUgc\1eUU&WmYveDb,L5Ioz6eO> &*z?)UIxo7Hmz0h%gBAĴ4m ب$#/ k8Z2\(ˢFMO!1S460^ :&s7Vqaj$]~Sf,T^WLk\Ge9hgw%YGT 2dH'[!XGu\hq}N*ɅaQ\  "ez>_ +P6K)Sbs֩V<%حs!ՇL* 'BS>+fy>hՂ2_M\(d&ӒtL Q%y"ZV3gL[~6 S!gI# L^!s #WˑÖn-f\qo!G)%Z}v~tŰ7CKbb]<^t>4{s=3A/Q9XfP͉Y|73Vs ObW.ݾsJ7{e_2I!AfxS~pJt_oA kr?iRfE6]50c mE6Wf%+L 2~4qOJh7hrUkB-" 'A6FRؼ_=/{?~*\5cvFڬк9N &ht1.饩 >~!]hG|/cÉPb5W^2m#cpo.1dO<*\(c1?vj }#AA¶@Y67Gp? $?85Mw, }HxH:/n So490 7وB.$u |q\Cyc|y<0602곖{BY 5RչIH$i&U :e7cO&Dx/Molw Kj7b)ŠBr-˷ Er}4y6ݮPNA#\yjU0 0~1nl(a.AB^=$8݈ v[2L7jI;m7ɔ$;+RO鐣cU)6 dhfui oeNb>+ pcOߣf% $O̱ph.0(_\AbB,`Xn׿l,r~x@*^vw͂}84׳>*#'s,ёGaJl@*^*׸h';>6wEށV+>n LmƎ_C2U=ZXd%;[m,kKJ.4fM&bW 9).9kˋa'ԁb1a\5ݶʮGƩշ%EqCZ5zBcTאa_WE̐`t oxgd<6kCO;wsY?JO ǰZq3"vu)m?ȶ @.hּEFbriR 쮅+XbC2{`{9߀bE~&01{dc0~ɵ ?Sƃ^{қA fhu?\ !:gf}^Y G{H 2;Tʚ>H5?X6B":7Z'Œސ 2\2YݒcC+f>.w=@ oPaNL Ǵ?wRe*;|D)8yYDf'TaZWG/ki'l/4H})HY ɨNNօkRl_w@.ZdIQ-D5(" 'uXٿx熌Α ?-JMKP݂-_f̰n LUkFH6'lfau %r2' mg84AUk'ŘysA+*Dwk"a %T{,N $4?̂fk;NgVK, ] _MºСE_8=J8E6K6d=؂ w 29NF?|33*32Ge ۤ[WVGDŽD;Hг3K+'97wfoYs? +s-&<iq .xRrx\%*w`VS-O&kE2ܺ_K2ҭ-\5=bݶ})MоC%΂>QkQ־Lkս Hu`O rrO60 *x >ېLDr^5־.9:q"u \"-rQzIh0ݒ8/Cq=eAG| ^i}vtűmtpK(.C;`RAj0s_u .XYߔw!siiv''pTh ls"pBORLv]P%uY$r %B Uˋmj j4'&<hsa1>4Փv~ qYS?C92P}r~/=-) `XJ,OwènOaء 3z!%J;%m1ߛ0-)jҵ椊YȤB|mb0.}gWr薃$"}\b 7If~je栗 ' T஋.{s‘ q6UtRRuxƔyLc,'gYsYbN_W n[U<1 W 0?Q*0$6ØF od.-s('5ZĔy1HO|MP}vCc; yub2E 5m>]E2> i흨LPg\++G1X6jg&;WoÛDBf=UWUXD]x+U+?D dC-ţ Mzt~ Z,*uw+sNqV98$|;s ~5Kc]O88%t.ƻLCL?6tuefPFZ5 /FHCdnbqg<5VPHi|Yl~[O(,eӸTW[5E'* s>t 2<i3j|c>ψfJ{uοQ=dzF$FG?2]"3þe+W'qYЌ:qt&~ ucS$W|BDzt׹$5FWk߅<9>2E\JMx~cx"gCv9TdLvj˒l`-~ƛn @4vTm8ԦȞVY\nDǤ1z7ɛ\ ̑m&)/4a晛KdGW5.@8_8ᨙ2гj*MXFANAnFSi 1DnѦ96 9_T\“a$KM ߮UѨh^NKD6 '_ {b^ Gh:]4W**<`+:Tswv)Lq\F!]ZZҀTUdtC_2SrT7Xiw\J2 0rGKxsjlKm*4bgPazh;' Τ#lޟjU``Â|S"r' mɮZ^giq&̀g=} ^FՅů8F$7NQ GhN !J\*={1=݆vo_UsMg$4VDNZk.OM(=JmuDq~gp |81.VXɻ^)yvVC%E"  -DTBVYsҤN7%[S/1o,6@~OX>ӌ's؜ܢ$1$9jo )6)8ÌK RtŰ ڨh@l =սWdZ/S | +$Pp`5l Nܬm{-3Z_{,IP+ s ؛/EV'LL(&CnX>$-<tp [p>h鎔UE(jޣѿTjkyTP 2j3JHjV[2v_dSi(1YقBn?0m*"<q{*I̋}y5*iqcG6cvc:UY):/ ){w4Y]1uJ!+x6Ƽ$OQr, dŗ[rrL-})8-o=9¬!v&< yؼRYۂ-aAخ+ʀ xlq,xTؓ K"G堿}NP PxTY؉N z "^]dH߀ mpP1g+hi㦹 (3L!,1IGV3̘zdb=.`,dF|𣐫BI,J & zZI#GX" _nzΊQL)TZ+$VDHm7 QJZߍnsv E?t)-&4~WV}K<ݐ?*ytu2~j5* Pf3iG{0е'^3e7eioDiF餉F?0)%wvL(4)A<Md)ӆKMwqX'']+e?LJX6r/lĄk$2F9Iջٞm1 rE<@+lx(#ɲ 6Dm]^,|XHm FM[/j!K9U9- eFز}[ѸNZRp!eĄ#Y;(h ̛+*]z7:BWn[,1̛|財|m!jH}SrzBEu BE 8{ T!RmH ג:k 'ޥQ6l^o"yhg#:Rfhڊ,< +_8@Jw"#V u41 s&ؕVq9A 4VkJLK'ϽgП3-;i\-L0#U=P>܋Y[h̫@U6Gw]5"Dd!UqcVpժC>#e|\E SBaG΂$p0#=vHgr' f0jL# V\c޶[|N~CEA$m|4;V3,.5^CŴt!\ռ՞UlZWo=`J0`RU_n@C ;qLF6}΀暣&G~V,O> iqZvBf%SS Ԁ2l**ZHTV:/d_u(EQ.;x' Pe@_D`dէSHXఅ \(:3qن٢cj0Oc.ԐNj '1cwWwr?KX|VƦ_r%-"T9euJ4t+pWYu3Hkїsَ%z ^ğe$VD cf\RcNAǷv28? /yUmv5+ޱPncYRIvr5 }cb!ꋎ5H*Jn=i)' ŮKFAkN2R 6{_NR*ڪUqNUvIT/.b݅Ô^SDGM:z}[[dܤi291O6̶]B/j{[  X Eg%_\]KBge[?Lm8pVlWX&QVو"I$bFJ'9#-=@fG5IUrErԾl^&O}!Xrf!%DYY`ͩ,ÔCc$JJ^ Yz%@Ϫ~ruPҤPQifVO,Aj]9[&c(77R $,fvEcйvmb萳-J'4 J.,psT&M Q8޵J4Y(\l!TPmh#YjegrnqkڤX"0Jx+-SuPE诈cO`J3b◜_01<] Yطm':E?߫6ٴGE`8TIo<#M bAI!+C6~´Ĺ!D4[&l=Б-ĎN#D5(hb7)*>*mcd!]'M:{lbɗzתnc]^#mp m"] 6򹋧m*E􀿃j=~{ :GA@i_HX ;Zp !kveT͹@'L HÊ~,pt18;h;uaCV'o@Ƽ;.ąlm7wM\FGA7fy=\Y;'lECP ^'xkKJ o~cs1sqA!%%xÑE41( 5GfrIGifNSrǿ 8s]ybL07GȅGbZ)#dzGJP%Fld`%:=;)/v ^Z@ $Bi&CRfGsi([hG7ugJi7`ȉ,J2qHKo/3|+zqINz|ˣ*;6rҬshZ On"S)O7sOJldƌ&DRg lW3.2 C|—Wik,5:Z- $s(?V(!cRAf. 1^y'A7 w<ޤ@L4:^N03n3FJc/-88!&7CR _GRL 6ïc%C'"`H[4jS%0FUzjCNiHM 9P=DBIڲGq>})C@I/wLEDXƵ>6wtXb. WM FnD>hI-z;懕0?]'щ1+HH<5s0؜<.jmPXnL$6)IǼtx뛃(:{Ue5kEsNFoK:­ry웃+TגO %#AP8u!&x.WZðw,zd-nSY3]0 ,Bߵ 6V;"o$sZW_a S@~p6/ܕkC~8jq@/A$#MN{'U}ʱ5/[()L&љ+: 4PM~F2:\9ӶWnhiSO2TKKLǭ_as9vFcQgҰm4?=:"'y5UHWSކGҀDL59{%!w 2Cʴ^oaEc6ϕ#wwQEH,.d_N;'ƻ+p vr$?bi1$YLs+,;wGWn]~ܚS4CEqޣr>*fޏB#=ϽpX:WQ^A 9ĤXk2o WQi.^bmHgB667rU;O%fXX+b~%*c/+[O"jZP VzIfB1d<$BP[p>.ɥ{B<6Aq;nh )"bd>5YIΏE2⸌B\ǻotFP$U?ʵ0Cdvܳ= :/,C9jDl_ S"ܭq߂T 5`{I) vp֗=xAVp:%XUƮ\y\|xeK<'zwգX-|\H+;}@>D?Qq1ح_Gz4n=(72iK! !X-ߨ-+sDJc0$~ Dq0z5ٯcӲDWApe\쩯ܘjj)&!%0x8k"!/Wљ)9W΃~I$;[+v_&6q_ wTקݣꚻ23/e12Ь #!jɜ#1ׯ(9HxU$hEb^['tc[Ĩn~ ?: |*+I&2O?/J_Fl/qBKw+KLU7{ ]dj3SR6V\/_[XOFefWDB} nLB(Q2k1%gu|6DK/p#TܹPúIe!+[xB] } HTnU(ܴ7ɰIW=7SIA@@5@Mg4,{zqp+9wG%ufG9l# U+I=Mo7I}iD}abJ#ǗK\:껎{~j+ɜwBz*"O"ruji|nFNE*qJdᵳ3&YQd )Q|"[O+JĒ?k0²*9$[hvٳۼEmЏ?M(gLT.4 `FKUJD_8q:xf h yŊ 3A9\[3b_`@fQǯW /a߃%߿HGG3 BdAdöH(~:|TIw\Q1+M,l V! kS>]2fۗϮoEL% @IcĂ.òDKFGka&ЙKM3vK׈jF A{mCC QiYPUUFښ9r< 'HAwgS]$, _PۋB:qKM4:2DU"-Zq4l9m-/5_fͩ>gB`J2OrF:q'٣GFB J7ss:Vp z 935Zhf?9W-TO?f0Z祾h'\j? '1JDE?|`<$#RFcq@? hsendstream endobj 16 0 obj<>endobj 17 0 obj[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602]endobj 18 0 obj<>stream xڤT[6 -10tKtH33t#")t7҈tw R"%{wos>ggt*jbf04 .P3:881$aζ` l v9;ͅOS8ـ4T>$Np|3@ p p @;?a[5Nft+єtN;@_cllf9<.`3$VƚSKc`@;g) fk b`dPٯ]~F`&;N_CllP ~ )W10~-8MrYk(_q4sj@!`9̀0nm`';;7lZ9Ww5l 5̍ms0  ;;A7c; 6+;9@zlp2| >`}6KmOM\drsrqO*#S99 ߳.%W^2~T9ALT{n *^s״?8?Qn66]㯫(HBl&h'Yj;9Z 7 ,π `U`_r`qp9n 1AcGScppseC~' P >N~OO+@6( 8'o9`J!NpN | h kͭu5w[+ fccpkځ:?&>-ҷFp؁vڀopqm;r;@om@;g[4 hng =/-5.^孁vb~ z˙z;tt6Dܜ@s˝q.#\@G<@o'B!w Oi򻑇h+@*'?6.-n-^-J~?(} 82@[@[|v xt >v-> -.-j-j>-فh`lj v&p߹ ~_RBMϭK~Maw; }1|@[4p x>A𤿃8wB  6w?d@A ; ptxw";A iq=;}N;s( jpm]9~= ޗ1I6V_WSg9\w]¬ߎGxxWG8`;Kõ+\$`fpMM8za ~-pY@LmE~.s?J\Oկd4\YlMr⮺sUẂSSx8r/ Ֆ;+_G2dlt3\l\eV<,]~]"e 6Wy~EP6.a[ 8ܭ|GKc;Wws.xb\\V9sW:?\7b'[OLJFx? REP_ȁr(?L@pY'7PO<@ |@)';{X@pTc[|*-\Cm[* Ljlqc*^@pPO:@^.:8밺%zQ`[xjbsw-k?Bh[8zpg'̃ 9xO_&O^ O|@ȿB'MCxG#,vǶnǶoz؟/LxED2.2N~ %!wmo_W_4/6`7)Rnw!!wKL苶 %(;!cdLm}1'E{'o=kȟUrʴe `Ig?D+#mmԄ"ILi㚒1dBR`ryVm`VӋJ2-ϒ;yͨƟ$BMt;/El%"iMόOmG)˹U{2v+"k )QD)#19'Q2%g|J*Q8 {я j/,d]XӮp 3;-IKO%«uZ'+ڽAM f^K۪[9Ae~/zB6Ablջ8o-=~OgWv\^FY!`,[U"e/KB" C9K31t:K;FE|FQvnX|CCHfi x昲 )l(+G ?K*@Rƒl&'XfV"?ÇSU2DħA;a|I5J%dP)es,)xF/{] g4d]ve ,$'cZDB7nM=`i7C|ػ(^O]-a5%OX$8AOƵ56((yǶ&q?k^"u_7ELPO\QY} 5L-o$ccH['fM|,Tjo,VIvu aLSQ}q9*}p:iNsFq>pv] s5`wě@ԎKmyJ9e|>^)Em',j׻^$uw؏Ѐ"K㩪E9ylan9:M<O$hAX 0 |Q=WA.=@")<͍D mMoT 8^s\&EUwHم5D{m5/vm[ד[2h4uUڽ e^{vGTN ytȡj鮸7K&o.XN5-!_xD[ iM ?_O;~<|]1gn@xV:yRu\n/}Eazz@EOe_ _ hg)+|$B _ Dt,?Bՙ㕤ltSY!Veɭ{!J"oI&`ivs-_| X'D.g(yDg0Jk@&-w!h"/dAa!ú=@Mjx 2MW}`XfYJ Xdȫ\#~Lyjgo\uTpzp@㸯EQw|ʾ*]~uhᢉr*H(h&͕ћheWN+Ei Dk$o[R >9˱'7:a]j#~(tCMixY pXZ(XxyЋ4)8Wzg"bxep=Cïn O2p'fa.J݋p>Eukur7}^]**9D$ʘI3^0+i7 hD!ꏄtD U}~_ n"]v;B P$嬰u%nD(_!}pY7t.huZ 0$5:1g>7Ymp,塥;k4:ǛGGWM_'ήƜ1nw=αηoB/|[u^lu~ۑ~և {)ږNl9a=eUI 5ʒ[K0mQ%w^#bJOEh1|oUS%PyZyA@|bj/'iͥSIp셎>Bu;IʹiN R0{mx͸3K ^9Eͱtdq?VJ"a>CCA$48g[(#.kWjIouQ5OiFҒԵ sVdP}P77B:ʤdx3U)vle95q;賛r3hfJ3W#Etmt[<}|\X,G؏E*Vf_d$/x(u̱iۊyޙ)gkrtB";74$v:2eAr*\X*:T7u:Qj8 9^[a)=>m2%;S¢H3/t~ +W -6C OtI~zKe;>xF= Zf)ZRjX!}MU>;nJiv Բ#A?u#܋}߄&ꌏ+mXyPEJG`?3lԬ[z@ִ $lKn.Ĵ-Bk/ rFI!U̥yR$yD ]ϵ\%SǪC(Nئ4] R92Y>DʒQ E,-LW,S?uVMhڱ=zR˥Ѩߟ:~NX-DD Τi,֝᛾җΪ$d}}wg˧#}yCP/ /f7!adD8}1U:uD7|DzɆHMsdI=I(TgZc*V2_I*ނ>?),iH2EמʌFo0];ɨ 2s3[N4l5 =&#PO1Wm 6ܐI'RwACkq=issЁ I"[Y:VoI<!ȧk,+L8TmN6fκsU!O2~*+, <)TyiEg_.hՠ̇7O_x>VV _?N)|:W]7sc~X A$gy^+Y aW8=dLNz1#lz-_tH C-wCb} m_4H1Yxe$JLm"3GݮC n(YJGÝ_xQ}͎4.DʌX} ;TT- sҳ( B/$ M);^hTvNVx/,D;)/f#fkh^J["Z 9`{\/M 55u0?>\J(׼[A4't;f7Һ B~Ǫc1E\ 9u: @QާWRD%K[#mM +|[!5;z#cR"/v;iEiʬʞF]1ciQTMsxѳeob:# xaD>1| K}ڗ[5ED#+O< 9lю{hZpLFu|Eq^QQq5H{Xyyl:Zk^'fƫ?2OkSrտA9e^(;@2܍F%260o'hH&}o-x,3+jpi*yR"&r c؄G⡣g{{{ '|,|5*[_wҭ o[ML>I>G ͽ<9vSڃ ƍtӋ]Ŏ*vdGB]{Da(DQc ]fw[ZNVf˄6 S}^>%w,b&8ͅѣ_x 'P Â[h8#F C\3cq_QNJ׼Ԕ&CЦGm& jERbHs'Si;̈́ w7L۬1-`qb[uGjmKr䮾bӐ~hloI5#Mn(8Q7Lu4ժ܀[Z~@vGl"bܶIjY:OGqm; ,OysiWaBٍ j]&ςQÞX[sj34IJvJJ,ntAtǩmc}x;(.ʅ(ʫ'Κj CCbP#%#+#,Sz&֥&dLXDg0ތtqYRm#X;HFo562 ?ͯPissad;ԲKHQxАKGnGAz=)ٽ՟c5]sDl⤳G~D ~(&&+q2#@ҹ$56dvtr^W1+ttn̂-<qڤfFe̦X|{:&!)9@YH3J]鉾ʌ[ 1Por [ BC'b -&p] *mp@N BWdcҵD—>OCȬWVv;ұgf,F{·jOћ\#kޏH}^0GH3T2dFhzFJCBľ/H}~ǿ W mCM`Wi:>uWۗO񏰏z{~0)ʍBzr{'ЮIJ?Qg ~?wY٪;L*!y#җO1*lb N__4Yr9U,2q)߾yr&)g6)ў|KPSZreOwGLLh=wK{WIfڼ!Ē)d%P2:f`uv?W@5Sw=%q/XDڎ'.(e$ wU~7 @6KrWo)Z8FtaD)D6tmSns/RyyFyWnjYHl N]ݨ3ld 6к׬7b{$ RϿFo s|&G0\>#DRk~Mb^.!|6c8QO;bnk!ͥm*( yxY>XT Us&ܗV2hWl#`IZTjDGaPwfuMXڙa i$}{JxQ Z( %ˬu f?;kh[Au=翻CY~ XT`mjvv*H..}RVy$pZUVc%C 9ǺCRۼ6QrV&`3a:4CC~.fT+c?³I8;m‡ar45PRAOOK0eixF,{0{X;f er\76 #m.WcX=D39)?G_ "w6Ww1`ߌ,pB3+cd!KwُϩIRVK_2+PZk񸞙[36F_bOfTA 8NgK]EnúLO= _DGͲw~xAV*+F֪| L"p [X. um\r3 EyvT *NtZRBZ"HƁ5CAС6&; )xdGA*H@FD;;-s6{3g)>nFO[^)ʯ}Xa}xM)$3?Hl=>f q$ĥ(=_z_&5ʫ11Z rAǎ4v\/?_}Zda=VE]>Og]?Je0xEs~ng:Kb̖;:LgguK7Ms" o4*A׬3aOsI/; Y|CumdG?ڶ62SQ9o8[o;+ _j?2,gPOCJ;$Lڎ]ӱ;7vd0؃/kT/'×A vJ[o?0W Iד0]ϧwҳ 5q"BΪdm%K|K bxi"sS dr!R֪nBPa=3 Jx(b׳g"Yl "q3.0߈.t/,g=Q#Ǎ:MS 2JþA. \=,蟫!16^%i^sY=6F־.ک bC(,ͷQC®grE̅%Y㊩q?'_Q*~yUEy)52~硍Zm.:Cٴv)Bǻ:A[1_-WfӞ̾ 7V#m&xfn} LBO2!V;$Oƌd6-~>C2ps٪ { es-%ݧ1WvYP!.5[7#"Eo΋ bKF=Q"\z<-g̳^Jg@<()qr "ɝe}tʜFŖFHSX4P$zYp{G.bqCG6z]~\\QZ#ׄ8T.Jo<}eg`j2ҴZJ3lC$3>OM|WsnuuuϹUMU/0+s#rxS6W7a93\l%z,x#TD]Ȝ#>8-N6i}9S,(JI.@U0x?X0Xɤ=L[!QY}b' zYIՏU zO4-CC7ȁWr[,B,/&]h'e?I@+>t2q 5U7 N ư$bs!}jyzP!^\ąòmycq)tcc+^o.r/xVj4CcS }x9ŷKPCm#^b!.%[ =GOSA,aW"y<.!oe |.,Uu{~qQ-~[+~"TF.~X T&+yԖuq_}_wӅE3V }[Rz2!S423+9O]Z:L唺yRJ|94엇~fifa,g€vjI\{dQ~#f}g 21 ] ŹG8B_nZҍ*Z~zgMV c?1^ ~CP)!Hwsa&.̹n'(.F% ǀaIez]ߊh)]],뎖(B #7c/y^іx&w/Rm%Thniﭷj[vXkr~䕶%¢y) P x"\s_]Le}eh?$=ɺCGvgIՆOe wpa>@:+xB0~#a8IxM뼪[pC(svGi,N]|1x"JjH"PG2'ǹ ݾgtJ>rzL9lB(X-;Q K1uj)6YIs5Q}"D. ǭ8f^,֕+!აVXtЦ\玜TH*Y"yZ)ň~T#Y\Z6h~ n?ƫr3V6 h|Ͳ Rgu9{>mc!'WMB8 3>tmnnx/([0KsY9,k# 0l,w]ubCGPUL eٛgy}Ԏ1< 4Y1]⬿Dr@+:ږhnY\ր~Iwg_@q}+RbbH1TZ.ej`sTC m!Ľ}Pݢ7$z/>{i|mtP ӗv5tt1=s!wۋqMZ52ES#6פ8K6FU5* !\4o'vɴ%!kZSV-9Id4>tjGhgE#TK i旅 `zuUӣ&p|ŸZA aBsWq3VݚPA؛-rG L5 t]/\\fU6m(BFjh3JkCfGi8|uL3iO.*j"q56|=.{smEɃ2KW\4ǯ©UYZ)lL$Gu"qHSuk@<K.^evAgOܵ%*%.L=BY^̨F(" ]/ D⇥B9\͠ճFGGAb46d>7oF.^Hqɔ1b.cWr+Χ\ V?s&l:!lP)*DkFJ9iޚ31M5/F'cl϶xJ>{0^NίHL7؇B^]%KQ/qIt\&~KIo!S?GsKtV4"ы T :n/btJ9 CH?[Jq7`}hDc8ݟ9e白.%F)WUu,A't'ԀlaNƫ|$(IBc֮#ui!wd3yX62E״ZkQ4ՍjF8-_6ϖ~_'XeJF(CLvYу^f6Qޓ6lE.7s!tlP'* //3t7SȰLN}頠J~l2NzR|ɒf DRKE^ƇF[^Fc{ƫSq=) <{w(#h=:_&(^V "Utylfjhܫr|B%L#!apG8{qޥ!}*SҋԀCZ~OEAmEku1m.^Z^9)X{{ԜtĦ$ 0s?%'Ojq09mh1b6!`cs"`BD_VyOk\ D(]CK(#A]gO+'d8|CF-Fz]jE4#8,nYCCi顯Y2ofyHmǗ)Eq:m=([aA;6b2Γ./Se>cͼgl\r()c3[`l:4F> $*4}{r5G1~› 6vW~M7Z)gZSINuX9seĝUa%o՜׷뢺KEz.uQ;X?^v<+ oxgQȱ x戮uy$YJ䒽ԅmF=yCLϲe;A>7w.h,~4HKz]oH4֫z3rXM{T_Lh e8~"DpÌ?H q|lOl[5a0IMg6t`c'Ðu 9m:4RMpfVRX|,`}hr[Н-W{Y|V9<8TT7\K$^胐Ӂwe\V1 )9t{o1& jD`ؑ'q/oYIOٚ%GI 89,'FZVЕdga˜jήC)\7r:Y|V$/c lX-_y5>prlI%dS6MBA+0Ug!وN&ulKݡCP1sl'/7D>R?5=CZQ嶢P KNQ>+rGd2f\lRK<*Hu|3-9F Ksׁ,n?rܨu5f9ȫ$"ZH ]@OeRN$ ^A:A>oeAQ!"rS]bkL` y P6"##}kt\yz8hRg4^"#reQxCjQp`FOt!ay|l&zRtjmcfgco?>=lWw(^ u%ڠn\J=$?^epa:?hbìoq R!D!͂.1UJ˳P\hZg/-͎ٷ+ܐm >TÀ-h' 5$ڳ֚3?-=QE;&[IKz-Eb\9mաg|k 񢴏l~҄|*9w/M>@9Taj}7WIw-ѐ`|EQ.o(Fn5NZrIqcUg2aR4a)جt hdR|gg'{B:L(/+<*!2Sھ&ܠC!ԜD.h W76"?b@S"+,R4d+>zR6<)j|yF/{=}Q@kFOj6 LoSˋZ=}68A="C=Jp@4jݒ @`fb*V" 9D{O׏15iK|=(Y]!,,|i[32%xD/6$UD$M s'M+m.tokɳOs #! ^?Q]\jU9H1S^ic 8y0 Jx T|"Âh|BF<Ʉ=X߬Z[~/}7?"_oH]i6_<׼l 7I9Ku2Yk)O޺hQ׿mʘQsy7s#g Ay!FUO9^ڑmy!"oeȈAC:?|{\y>VhN_C{ۺ_%7o0Wۂ;6>ĂZٝ?qc|i6.T-k^ƻ;3&τ[]ң@>P;\O8c33ML,;7\1Fp ֤$"~ɡ&!?F53Q'ؗõ~&`t ONvFubz2+ש*aX O|#eM*&=;8<>Unы_<Ov3 d斜U;i#ks;\d-;lR]v't?qޚt")tsf2oxk EejYxzi ]VaJBe#Xw\ncGF Q _xWŒ`;sFL!ꏮH'iK|QyfO:đ_ДĎ"v; OŀYc $x w꾿cDkC+3oH~J8)^=W;I6'b\` {o( "&ϊ )TdH*=CB>`~(++h7v-hd %00e6Յ}Ӫ`E#wmؓ8knݷW `QRe *~`|S[6] Wq MD4'GZiWdτmӤ}i7;v:LJۿP S"sӦ9o}iՈ#Tqg9^jul?< J`21b86c6 mlEgHcE}qT.U+fМ"-#ylA4|Vh3Bz?poSA0ae<&ڕpNn/x ^"$m]7“18,ʮ6x4 \=R5Ɏ~wL1 CF'{Y Ƴx2f*i(ER>Hpu\B? L7$zy?Note_tQư]XżJ_yW,RGA텙w{|+i+rz? ~V4 n.N.( [N ٣8oW\S[n(g K2όf2cvNyos2 AĎÅ-K8ck~fS;jJo3N efX1+! tKA >XF\GĤhol4_rAZ}\lDa=/f-zţ(pט,)P4RRc¢YsW}ltaAISṻ <;'KDA}+hܝИvmZd=>~7E0VSlX[ gˍg#ܭ>Ү~,0$l%dv~fMbA~UeEMQh<_ kkhEv~ wޜ.tN!/E1Ǔwwp(ȴʀ#PD0_J8?=jQF/ ,A4냿-n`ЧbMKpV2E=!*XзF"~Nw\@Er&MW^ua_tQc!qU9$٤E(τΛx#598䆹az qw^8]F7Hu5ty2EH!8|Ns TmΈx&贯:$Hd*#KrKb D䘡WFg@%tKyQ(2j[*[6wb_(_Bh j?(o{;|u T1TB>qDp~w6(Ýo^5Myܕ k6y ~Gu=,Hh ">;z3':|5<#LBuQs";uhG1cE#{ &!{6Pcs-/' 0oHIB[9Q_*EL.$@0!h/]y2MtW )P@Qa3w|i nHH.΂.˪ ߋּKf!ԶϮ%|"3Z[lg.;NUDXgQr4L#(LZ KJ[3[1B6W_ #\˔\H%n\8,LaC3~BٰՕqS3PU僛A\p&&D,ς |djc4pȲ|0-cI*C'pX 7,!-\U ~ KA0QA/NfWOy2emp<#E?qT 9kvR"sE'Y)vG)rU/g Wa No EnJXإ ̩rVU 9-9yQtY14垡UhwD3]ݐgvPL3U&y,B_{Se&HUz< }}_cRQ$n a񜅇/(q3\J)Y3kEՓeicGѡ[,c-H ɨp0|*u[TZ ||.x2NL?v렎Ş1]qi^OOLT*Z68̉/X+߫} z}:t?dE~fII.,/дW^`UzKA =4zJrVŘTڏrV]yQhnjYbp fA"/:}+6-̀3̮uv֣E&)A4BМ! d"65vSN}$LQ"`TуfE94\w-<s7d6[LHIsZXWGt.&OV˅\YϐTRj2WøLJBz5s3>s20rboM&I xݘioxD:iMED˩lIdmU"L(m,' 4X$vdI*aj{Y#~r1=_<L-O l%"@cM*Ф1H\kX|V0!|\Sa(V/Kطuέ,hU#Vl ~McHIo5SDi^Y)oުAhƄ3irm6_A9MxyO䟄E5+%0q|ٿE?dQ8ⓠXkD|A/ձiHASFX$>~dr=;+4j;BD@2>n?Z.p8|$PyB%\F|aK UOD4mCیi1 8:!acfRJqmXA-B5˷{#A2ܠesMzryПS4F0/4 mqNwbb| -Դʲ3,z~#\Wu {}`O%ę{8c:% ,E==Y$({SVZ`Jɛ#ڔi9KlsG70 ve #ˤo+` CŶe!? D`ppQMjĠB@U'[7ک[Lc?ڃ 6 =*;LuǜvBA+ $E 0q0-by$72!| bF:7>lFSۏ%g0kCaH0U0r]>)l0,dcAōoWK;EF("ΡCtY~}N?nlY XQPfdI3fbaA7Hw zUP/H2+R :'4K&0,+UJkM~&7NׄpT d_]UuϹ-ܯ@ Ee }K0ݔA H"M|!cZ%F]=j_0+Lm խ|>kD~D  t#r9ӊ$$-'lK>k~{9f%Ӂgc4 <\^J\P3d5O_#UA@9B e, c+pgU*KO.s.p:QFy"ԂGc󆘶)M剃Tzzveg+ ;sI] K1.AQ}q# S0GV-m=Z4j0kİaѣ= '/s9N,PXrD5JoE'nywjF64Oze {D]0aINkjBVJ bn-$ȸ"]`IAzvJhN)DQٺ@ (d3{ֱƭ0CG;in! E^"yܛo}pT5GJx0&()sG*߫F=YӆvNh?#Aֳ*(V%|c'ߣ Jj,~.m\Lgp*ehʱZYG ˍ82huGʡ>VK"[r[Is5u3`ta^9zɱ?= :twĆ\tj3%۲JmNQ#2`s[jCb5{btQNO?<Eo!EBQYf˝#4 &I#%m |eڸ.t<9M4^ arhRӻ/⨕Eϊ\d=kGK(HFuqhc>^^dP.!(e"AS L+.抟j9AGP["dRLU J0g˕J`S+Ϟ° 2Xejw3!2([QPMEyxv'yn=f3PreQYIzGisHγU9>4C11Y"-DR%C,?s^~χDu4фPuwW.yXx! p/+(;v|ڶށx6[CTy__[JV2&ف-Ԙ3OigvזHt/;a$,ErvG+R!,r숉 <9BzE_ɣ-|gV GX!$FfZQ`ʜPZϲr{۩|L·`y 1Ht׾21{ v[Ht<@ {~Fi4YVlsՍK8(8ԋx'8 V >̱p^D)UYN8^t%GNZU>?/fr >4I,%R*Ξ,./p佸?M&EPXa\^<3 ̵ +J/՜&f:udqb!{^"hRGm-Y>r%Mj>b0vh~Ō5'G_Z@u!'Ru3Kʘ} 1G V>jNy:$32m3O!n0bVw[@󫝙L5n4ur?)%T\1ArspX%[,6RA I2"~ H&t5NxZŅ=Xc7!~sWcZSބ^o1k\ҲȿcjENRo6fu tICH$ir'n%(| Q܃mS"_1>a.Mxgv\d)eCl@~ۻؼ&$XUz~+>x5 l:1֟_^=u>Z.a)w2TOD: @+Yv[--L뤘+yCv ]|ۢwTavU-]g4 *܈R*ަW4W8;AF.5x>2~IF.p.B$Oş)%M-CV[r)0J><)ou;=oէfZAt k23 2INîV)(%}UIALhnՙ2:3.+zcD'}7(hӶ321=`Qt;˕ŗkO}<> {hDé1bhF=+ PKgI6VΔK[HeeؐUhmv(&n jMCf,Bl^Ie"&6lcLz҆>n?/?' !] KFuv {,j*\_ebL㸨MC?^i|RUU$e  ٵz7Gn W]z^{&}{ A\2Ҩ>e ^ ^<ĆXFzb_fgx\S!69dK6 ęPsd:&W MwQ}]CJMuC/NH+*8=i$g3ٙe4j&W%Ɓ|nxH(H̯<󺳟q+:W * nœ-U->U6U6kyr\rz%Ǫ;chl:(W)8UBl t5t  &4e9u3Ҵ!` կ=\"N;g;PO}AL~\Dݽrt #`@N)ARhWlO|$F_[it=nT' K"v3$mn_nӐ·7L'1<|!)nR1؇C|C~*4];Ah5_fպUy|0Ϭ|}}sĞb"o~osL$&XHx,r=o4OHJ*!N4i]GVg#e*fcaFvAͩ~#S?fΎSs@׀EƸzm;MmTc Pۅ 2 POkX{#q=^r !xwl,GKDKx}jBc quI0Kד.Mk>m{ wwxȟ4h˸9`V/v.N>ai8jG}^5ew*$5|L&.`:?k(_ܞ 1 &AQPDHVgo&`@ƨ)fX.?+["NB2p4؄{K8{y":Q^VJ=֓I̔4izF kyqS.t5>7C$:H`N{aL.k_Nxs4L̈'l jE}s!>[|]}4F.š>{s"U3?uBXtkPH=VB X,ҍ ̢q|v׵#tt8ѯx;"ƣT/I ]%46շ݉׵?l.z0Z9@úx>snȶc=)lLP!>Y.{{?s/A?8)@m,M=:O}LQ:r=3.P+X-*Oyސ?Pu.&Pa WXmQPSX=gschcp: 9ֈ^~y ~S*{sA{e~C7jpjUjLKˑG)PQOmjs@Ғ>3<X7{QSY'$VpN7憅WcgMJ=<ؾDxIH{aڨ+%IsK2qnzXJ1zmY +qO=)N.DdH{g}$h!$7 'WXyyO k"fq 4?z[طkXrL;'=Iv2m-+Jl[x4_4Iұ]M$:j;% eYq>Pv} Npp(^6Vv`A-QHWh͎.r"!s wslAQRߴIxsSl5Jy^䈡!Da{ ͘>x[kOWVv> bz2Lp5?3=nqGXE3t6Vbu:B_UNDq `/.$S![P/R< ~ۯ0RugbR;a>V\NRr?%\/)7I,ǟ}_J6yY+­]Ltٔ {<# دmt }Y&O*~Ymnʎc:(uO(Db Ύ;X 6YȾ&ڿ㯍mR ,ﰩӦcl²j}ހ^pIAGXqҼmW~m한lz Ri$4mSd[RFr%3{LTn& MB~f!u*ajϮI2ak?L.ć˵z->FY.9_9HXͿ(9f)4o)mݕu筏@T5+uZ.mفoc>z䜼@)%}݇DqcajPjQQ@R<6y{kːj;k4LMbqsЪ X{v qd/WlzTx әt1*E߀k(پ;)b[E9 0rt>ѷ9* V2ǞRjҙ,lA+gխ_ck->~g50U͑wUc6ߙă2 WǩC]PɻDVRceDsʼnR`} 5f=!d/CT8nKʶόq38$#ۓKvu|{xHzJnIϓ"&ql[$2@õM%RZ{N:J#͜PDa>eSv5H2Kd3G/M*}r mZ=xb rHyb}C %Lov fT^I\?D$FZ]NsNcJ\bQ`LSuJVpZwUlOe48k>~js)a|ɴ5u y>S. F~FkkMrkqPCɲ@"yfdCNᴓ~09xBflvY$}6wz"oVi!$kP rp ib}VYOU]AXxR2ɦ @2Fq[uhMfCߩ]p~W*ĸ1 T?ea8sϕb8,빮G'GK`[PM$ɋ.$Ia(v$"mYq cYSKUHa\~ 9O >m^/!S??bH~۪?]/B3h.[b#bؘlHp4rؼ&ټꎩ42O 8J$C=Hl>}Œy:_ YڽXuOyE ܆ LKZYQz&h‰(4.aaEǽ}M~̝@&Y@P +A!䓲h/TYE*xf b!Ք+񰩔&ا :4ޔܽ_s1V-8߉=| \1` Yf dL;*1n%,YSrtA FF7Yk 8,Iwj6:!̲|!1`%_;UgSpCSjl:ÊG7tdwzT^h 2 UkOmnAT2*Nrn3s8$«v2-MO|h(_nni쒠ULwV2[@v;mfSSӈbh6;@=v7ʢTjpഀN-NYYC迹_)quP3>!)N#&ҳ:YMl7_#p+')惹C%i8}r00lL-D˘u|*8uLꇅIhmuh[\"7w3a`KsA[h&[-QwT)+*'6s%0L(:h^n>(Ŭ B&:.cSfs<]Srm]8`Qh<]:&gD&߁`vOG\Tnz,WCvϣrBř~yoٸ6p-M)jCfZ 2ZEM H`XJ)r44Neǭ Ԋ_K/ *3H[xe0&_@EF_Q8V -N}]@u#W_]}!t%TXʉ3 "ptB͖WFˀOv#"$%x b40T) ߑn4&uP (<,PlqT>fV;PZ@c_fx={)P%9uF cBKKQ*10GW: qZ}E QPDx&Ns}%MG<8 X>Jy>RՅߦ k鎂fYJZ$RS@ BdN}Aa*мO,]cӆ؃G]BE%@XP9'!C8`WƶiGхXKNߩ$IFw9 ~#$-**xXlWC( lRnpD]}N<*2VekDm;CCes} 2x8QnwsX5y~3-Dtڤ]I~LY P C&bZ|>F0j a*,MXnf[t}w ye#z7)_["hy>'^ro`DVDӯ[ļ-@x1LanqolUhje @X vؔB_ ģvqsLRwYLÞ=sÓ:{aJ8Lϔ{C@n7coFm҈M47֑TE4ΆH]]bz<gTߏ a&F]X#dm FC/m|S%:Gޢ.LI*2 J*H]ɋBErUpʠ/BOK-Hq]p7WгCuoPRê[=̪ H 5 x|+ bl"9gϸywqi=`jk`<6. 3u/ {ƩLde/=S}jE H-urfBg 2$$3C. ,XPtlsђb˭;_,P 9'^8zt\).Kru_aKl=۔_:ϏC!VdVTY)r zoj銓Q*#8zA _}ۗ݀.r:[Z2\c%y4@f;hs1Xww  r;{km%gJʶh6q>tٷzH| ڟ4F.cdn#d!ZӭM*<1( AA L0m% sE}%曪2 ^Tj>pbFJR}"۹M oKw_WU"AYq$?Ѡ3FbTZ+Ys;#]E: cxAIZP\&c'F) ,]VT{DE}IMF ¢w-]1f^kt:$_eW}6￝q"t)J&OPZ) 9{(ckX9'¦6A/#*iJZb>^,p_vֻcUG&MNJOFGz{cUe0Q"N;[L#=V=h@WRhA@憳'YvqJVakr}9-OuyI/e/_6G(c_ъe(2ӂ&(vv/51˩u)YTu~~9ɕZGĕ&r8-A<ĤșFMP@l=%,^=SW߄ W%BԝێyG[t]Ҟ,655K0Yey z!=dUS&%V}[H,< Х@H a;`uY _V{\]'G%~H { odʡfY)3N ~ɛV?ɱX5ֺ(/5t#jwȲ7g9kgtUIh,M){tt{2lц Ǩ,hy鴪i ;i[`ADk+.MP|yb~XȆ,#܅]P rqDo>t^s0Ip:( Z@C :g)Ie~8a<ض.~IAց |ćG#&ڈ&\ bDG -aMC]O"9,{ oϽeclw6ۧY' dӂ$uYm5f>=f\*hȪc??:%o[#O Zu#ϺO걭\n?P3~<ռx3jwVbj9R1Cݑ &iv_'_B<wOe<ߺ>W"݆`H7H1tt?W#l!^? DOM仴}_o9aVKAmc9- QN)l-t;(p:<- `iDn +1LQt[2jc3∖ oD^׶S`R_z7p頃73Xkc/#\9YxO=l>\4k ^E6j8ԛ rp>֨]w&_R3CKO Dm ֣<ƥӻ4";ǂӀ`i#癜 v9'ELs (J3I>q71^tLh]&LtO:.wq ;r5`~@R.2MR9=AKnFZ ~Mhq(>[ţDP{e{%AY )bFըe ^ϟẂc C6=M̗l 8u-+[K͟dٻ fײ`ߤxNɺ; ,N!'"F,y`5x ]T?CedS/KT ,;M$7%r!DxYS[VfjRsSU3-1t5a[0&.e߸ (GE}P7&c@ᥕcAA E9L.(QZHj$Vf'TS5dok[aޥj\dWK[ V ]M| -Cy9uci<hihkP t*7ޟ/)|LwU; m 澛h6N(d<΂I5w%L 't:-RэL*ɩr 92nft[6+~?w8ƒ<g>.>Ir*~uٺ Ly$ >.u&/o:<$l>VNKݹҨp/>xۥSuRxܺwx&"yH=iIFt|ftC.{oGiwfwveBLww'\GU7p+347Qrh1ƌ&M.ngjhi:NAjVIi+9#Ao0D^رFu~i]5A+8$?#_U e,Hz6ywJEa9w0_v\bXMtލ{htsȆ8hͦJ9/malZIlZd5ӂi@$cq=57NćexdHټm8wZ*+[%拤+Ƨq.Ú w<~Imٚl>Q,d)҄ek'M[ +vc)0ʴOL[,+!ey"/I;~ۂWoNZDp_朰L9À;-TYU+ ſ7_j@ [*J+uE>-:^7ƸLXt32Z#7}A؀yu!  M\j=F;*=ԭJG#>a7j;E016C1378ƫWJzq?qP"Y\ $}ow.J'1Kko&"a(8\1ƪ:o4sDї=*r>\2:9Cz'{A(VWǿAEq}aP0&'C2KeE^+&& ;CG􆴼^l _0S5ݾ@A߿;x՝eean}t%mE-nʚpD9Q}jtO{"nu/bk4YĴ·>R> HJGE%ӳ.n'Tfg[(@:X%YajhQq0TT&>_39Z % ;J$kgҮf'eL}ؓZҾ9ϡ4MеNr _|.4V:X}x;Q: eK|.ʧ/:d>8reؒhgGWiIyVTXz}cݹxaCy5?# u=a]&57_7K6\$%YWf.!!d؀h9ZmDm e%AJS)BI@"'!_*E^r)K"B\uxgDB؍p :#VCϥ!,! :';yp [4,wV E~.~fԈQFc>Յ]Ǖ)eayً `b<Q b@z{t:]Wg% p <q2IWBFUJj9F P^T?oRɺ 5 crѻs _3&J]b2*7}%rRCf'`*QM3YIWiap268 aľR)t7 Q"~su&,BSrlGʀaUU^]:$A&e3$!wz'K6x+b <.O;1ZM`6"Q1tK/HR5kuJ̯tsxvXE"K:I ULM]S f 6Si\v̈[w:3RG4/~"W폜JEq| U^"P:W$|h4 HF.A[cϷ̍9--0|GC+b6?7CQa:%蟉 "5,t҂! FvGf+"NܛJIhߜQ!\];Jq"v(7.4O6N t8 +ܽMfbV7f,8-T"Qhk*62hn\yoLԎ ` |0#b<2$;Ь"!:Ίڊ 3/={ZV/˨789 'KiعwƊ"c]0huP/ܟ3>Z `7ciEoE(*hح놓i"\ cJ>Z;OEa݋lY=)s3b+Ҧ " _pT=TBWuyK^ L~ӅD`Ȋgh &܅ɜur$`~Ok /8eq2uKZԠ|;TG#gl'dIrx c%YҞZ{Av](&tWra6Rv Ii 8@L@/(]8eީLm+b8"<48y/v[c\vNwH`+>XrYxH5,1dD;b:sݏŦ3d#*Ly ]>+k5JqI~҃X/#p﬛j js~W%IMJ|7[mE7&-~}r%6КvUUY*Cx w3{{oiaAC}(,#x"DDڜƖR3OmKo҇FGuP?C^"}=F䥵@W*}qF;d3uS=SO> %ɨRbJu[k0.b'B1ksWH*C2vCSz)hE8,rQ #? (n]KŌ6fD4v-5NE}Mj6Ȇ$UjG$N-w:1~G9ѯs>(:T7Ø4ڣ7~M`6M !(ࠉ30Ϟ )KM$0;q(Y\'ut}a=xJbwIq#C ]i85>d_| 3@p:3\s䛤Q";^-[zLu|Pi hPu_Hb)K\Tm?'t* Y^hLSg+y,$cL3Iʪѫk-Įe8sT7E?ltŃI"Ujs V|-#DaoVj۠-1bE(ɘ5JF^IQ_u``QD>$V\ :jY}ri~tp]4SDُQZl+ƪȪ:G)<$} \x[JcPb.d#9!l HeLr__K?L+`YXAX}wտ]h&u"~$9a[o% 2|1픐g'< I_ڼx8tݩE+Vû锅jE:T HY5e>ei5;haG}5D %P-žH \ 7>Ad7 hU&7S96V*/Gؤ $GY՗MAԞz x=U7 :c>牢F(ڧD=~OD bJ,:y]L;~7tnEUPaWDz푮>IU?h`)|_ ښE >۾rQ^3-C-+l&nhl ;F+|[٦-&>aMa>Qt|%|6k+:D*5"w|I2Lb vQslPwd'+zesVkLʙdD?K##4E~»sqߢ~#|mCtgn.R ]]Pj}qS2Jӹ8̔%dx紆i ]J& \lK#Nij)Œ%1w-9h?җvrq+1EO{ |GٕQ+珳iT$Tg0G^@'FrVSHobqp^6i]e&D'"bvcAWC5"S S蕞{&D@NZP)w-*.6 %-+,8JѢ i] NIH)KD$RzMVgYj^Nm]=ʙuS'A`HX fNN#Bm6ȡZLO4HPM92 e.u?4GXvM?h`?`"Ş>#> }#^^_=)'Y2]+ǔ/|R:D.bADRjpu+P)(g="B ,W"5">5\X-Q5KJ9u};[ce9 ƗvӘ(vG(nM5wfHWbAK~/ZIAfT3Rwx*}Ip1Cc?4'KVx, 6j-8I=| :s]3-5%^^÷ lv­EBo5F5)Ya(N,2M숨@󾗢@o)>>k+㋅X}Q[028‰S[wwD/ol*~SBkw ␬1BX0*mLzlMv^_pe%Fۤjg3}5>FЗ Y~"T"w+.52EGu0d4 #Y$ |*4*Ðn*̰fT7ndk#)E>( AY"/j[,)TWQ?OFȴ1| 4g*7Y2iIw)mPA}HSU*Qw/|'CLL?X07*w| ȫDd3XXfhZU^c+ tnj0Tl-Գ<;aq$SH53z lƑj$8&bm\N-$ޞ ?~4ni7rjIyvxgf|>Uy~{2%f7I2DfMYG4YMGsž&:OABK|z/xYWD1X) @Q\w:ZY1pľ0^{XWKgQ!.= %?qo| 4?Q;uc]J. ĵtÚcT;um)Zf.( >5wTd|jR<%"Nv(;JnܴI5Ma-Ff0M710$07-Z/. "-haC~=V$:؟tKVc$jv&v=D"Ȃ/ ǒh\kpVrҊ,띞C@o. RE`vng5 L#o ::'62!>6'H4a@E©l?MǑ;qܺA%$=?G8`bjJyo(6 ̧އ!qzr y8VI&"{\ߖO%҂)\UMu&#L|z PF'ud&nt*k89.5ȕAc@hw`ֽ`cS8dx1eU{݄:ܠ:YfekpJڴJTc#oqugJY4Y\т2]-ť  !Ye> Cgj/ˣX8~h|kecz{ xJyZIZBc=b}9+U8ms[N߰'emV;9B(ʭKPew# ұp&e8wƞ2,Evhna?5*q2LX@5O- d@*G,ArBt;W  w{7Q*ajvQ)Tgi&A8=Ah|x/=&w,6noNwPu; K:KqaS@zT׵c:\%i+8{cJPts5wof$X5!K<ÙSViy?uD}XkB9 vPLA1|_4mk*L([Pd'F!D^3{@G4,9e|'fIac؏졵HwV c~rm2A==ޭ#G0&BUt-$Co7s{@]?QU3_m#(F#7ʛN _91G K`8k`Wc=(]35g yzVK[vzdY(>j3YV/&/i6#$ OQW#;L5JwÆ_R{@l~~@:RC^SKAT*]r ob j|$)wh,^ |ըۧ!L͙Uj}笧VgFMtA\Z!ˬq6yVS̒^9l0U ~03I!ANMv35^x{=H#Ľus*?CA-[r~_ݹ u\uNXN_]Qq!n Ym8ΝEB+ Ko2̉h嚾S&HeF6q4 7iATV 4VI6d2l)KpYFІ;|NĻP+K(hw I"H#iW`*.0}&tLA㹞pQzS?WVw{`MeߦUGpt'sM J)h9L=TƉZ{>\@2GCQZrq#$ :tcnzV52kطD4og*+O?F휩rYq|;5޵v<̞izRWe*^<%-RzPvӚ;_CӋ lvi-Y 1#|0nqbТOi؍ZpK|(XP/W_(NU2rmT'˫ΑJH,~+(+Of2x]%ARx <ߙh!$cJOe>!ky1zyMq~I,epGTT`RLAFűX}.1NT$PmȴU 籐` c 6 ֓ȴk Z"4Y{Gxr[ NWm=F5+D[DfDN;ц/y8FS[3֛./0q: ]0!2 y 腵n k\7$DnJ1 )L28ő]?QOyśa3 q-eN,m?]j~ T!'> lI[ګѧXC M=` fJocďB4'r[(J&ZpM@1(- 0<'vw_t\bQ ˞tmLӆ#*^4GP#H(;+M~u|2DD6x sXVl/Z\ȗ+HsٕɱnVs,W(n:Ǧ!&'mإ3B~D4УA΋hL/uh΃6qK֐@[S17鎰>3?$X4Zo%,e0}|)%d`,:[ANLאmP/k:5t La l| 90hnXd0BRʬaFMJ?C- FiqaэP]xo2fwv@#2e,'[ZphWlTVeSFD'fYNk,b\襁 so l( e0C14KYI|~">؅ `г~&j թ;ܾ'ܿHHeL|,&K**o@*us 5rf$$c 4Dۃe4>2ni{I w5 "&Jkxp(=۪AHy˰)RN`nk!A*cIXĒ#3BW˚DpJ&meOVyW̯84f[1RQnm"><[,B .]*aa4A:Ñ[LJ* 5HPFkUMn+Z6pΜ.y_5)PY-TQmt3[3+j_{tzWY!  Cq>[N,EZ>CL ^~KRgY9e_Xe%ևM&άYHX= =dOqv/.޳ Qqf3B#ݠց0Y\Ǎuf-3V1ϐZ @ӺuSmjxq4J˿ RF Io3{͉aϔPŅp<By;Lȑps4厯ח_̉:L㜴kRg*_y0i+%V?Lm  xѢB'UF#腋R@.&?J=kjo2/1 -ڼUZ}juv%o&uk؁6aea-؊"W,w|/" WO. u掺+NAO=a&-H+~PUEICWDY*c.=3c~AbZV]I[c".7WF@{ ;&fDbt}.3viIm*~KQDB E({~'5_v HneMM3x`3ޔ|qg-n}n(^*ikjdS",__B{99g Ij#J_(u~~ &#Mb;.q2Q\(CAW_ @ F-0/Xv9^빸\gN:0~7(%P0Xd6=nqA0Ѿ3c(#͒E&GS9 $6*:h#% b#a-\ 5焧∤CTtMx@?NCt l<7@S\ NIriU=hOڿBxԉ&F^ˑt /}3Io2ƼC"V LBM  φq\(j|BUN^o3)5r @h1qV i;7XY#u2bAii\J$H10(tQl&.:5C]H4Ӓ2ZĻ**v_  :͈Liv kO nj.@;ctZj{Tܠ\+]Ԟ/WX8Ңsd_f!ERʚXKF\9| LWOEjHtP#hFR6RŠ2Ak fG 82x%$$9FIȆt aP ({/7%|fz;9(cW@䓂h?M|'H ͆ɓ53q8hgm~#  V_;yNKH}Vz^Zx*F\x۴c3H; _)-)9g1I$ CK-c#nTV"ޱY{ַW2?bt%j6dC^KC1./YgcNDJ繁e V@ i2?eDu?;7éF_lG^ͯE7.3 OuP̬Y@9/Coh%ca]gXdz І胓?DD9*)桐iq\M"V5_Q+#͡p&]h:X䫻~b跷| 6{8߳6> sX"F#2Hrے9`;'q &GF8ӀlvUmЮ_ Պk>N +v HW^oklaPKyF9 'L nCh ME!(F*Tj㘥R4ѥdE7I}Cac([4=+Q|*Z{/m Vnc(`^4P7>u͑26Z$tMɧ wZ9 d ;,>VՔo)/&8+Kw~$Hۑ=TwͿcyv]APL %.Ч3Vـ4VnD1¡uKh(kۦYu'u Whdey*sqÜ1@;EF07̶@V ΪW WM!k9#}9Y$m ay"],|ߥ16̦Νȣ5ɲTgFnǼ 4 A|'1"??-9@4<}-+tr4wھs__CRt_Yޯ m;Ί\L4!MCh Œ|*N7Aj<$  {兞:pmw@!=uc%:iZ'PD`GVϛ)O|fz6ӭu. dC;9K Ш \82) ~"  \_4^b @}'y6bbļۄ\$Yy|P@<2m?cPB[ʑ/LpA XBD^[Rd3[d)f}3s5偹khNE#=N`ُFqIJjC!qݻf00KXA H?z, 瘙:!1BÄL"0&Gb wZsh>Qb7@]X.ر\ԼLg ԀYSa:옋v- f#Ru8+f:2EʧXwEhqL-iadʼ*>"ۊ7@Iٸ産R^~(/T_OJzSH7 h)|og|)D3DH mH :K/pTtujm6YߨUC`9̈ #-Y3c 7]zKwH]_B 5Zڲ}  *K!j nM  3 ˥%Cw=YzÝdsYmW+dڡAC2.`TC:1fp^"-U2Jl,"싋fu\L2 QpANs&# x/գ߲bJG.c(%ˌwGJ3U0kھP,iT=%- MdJo!ReY+lxns$v&eg6Im] *wѕ{cv͓`{JU9.; S7uS:6ծTAJ&q(( 9@$Y}-Lc -^G3g2q.lAϻ|5< z،AϲYNOxۓ%fjӆǁ'ln|kIq~BNm$I &@6KgE'\`T30h5/JJڷ#^E q6xY1!ej(h*!w̼EDl̢2=ĺ5ܑ? "V[w{J.WIVSm-:S5e[7Aj)<}糖'BF,]6䷝ D_>U_3 -{ƹ!Jji1\r٥;zGE i@$UAif 'm'O^s+/ Bףajim(~J V߾rԕM<#spD-{t*/nf: t,1$§'tȭ@ -;ΐЮ+6bҞ]aT=ӢqQ{|bJ"1Mj\Pdi}8h8}L:~3kȚ]w4O1I ZԋXr `lm]{ b "r1!k\ :Dj${ ޮ>V)S&1'` `l.҇ įK&)LlX1,}&i?d`A qrVVF{E,#) |PޝΨ.yp! ZӑmpRWdS bI=֓9+>s:<u5{[cv;ݛ$hĚ0*\{FZ~1ҢRwKnJT t[Igx9`GȢ8'jκ˯`VɅs&mG^݉|Ēcmu|:EEURVeVYTUY_Tl_>vkP&Q4aNբ;[Wj+6rY13#np^'!^J3Z /xmŠ*&۵{\Xtv.J5n}cl^yPs$4`8{{D˵m gyKd/5LFEGՅICzWd)x̮:>`c?*q@xm׸lcәWTL;]l5elk1 (RlҲ0 UFbTq/08>@IwS{ xQ)d$|I<'&I-P bך#aP4 ؜y%ɛV~d )gκ2~*>cC/"縅[D#P1p/B_5E)8Ơ[Z&`D2ay_7U^w'2ik3kI7_7jM{͍kEkĒ,/K.L cˑTŰ@K:-۟s5ȼhgҫË2N7:!xMYFX*X- '#籹)g4mã>T(*_PqtB'e:sG4&tsZ@<(RQֆ,V m]s6zU}SwJ6+CEUK٥,@ Gw%cQz~}gp]ee琺7ƍڔ' KȻGtFJu7g|A>vN#$wa|r39 z(COR=.dN T׸73L.xc`Y ﵮ(x6Hȁ(BX |>8Gb;#ÞAfv5b8Ur'c ;p/NKJ?T7hL_ f]ɰ)4-B60TʵCB[k̢叫.kdCg@mL[.)N?cl͔iD >y"!_~^t Gn!.))W.a1nL&u`l%U}x1Z9 [uI>?[,qͧSBNUb Q犚D^]G˭]Zd3"Ŀcr6B'ħCGz0Juwhr(h%s.j' 0E~[ldY}Cᗮf< 2jd//iXi^T*`~IHR3'ÔίCf0$s<'֘!j1 #O&b]kKAij"'*fwI>pw\ 0J9{þE`/;PL(F^)–IOyb㾈:嶚BZdh r@t ,aݎFHz6#xyŽ;W_n#%A6P(q!YpUm!T:093S dh? _ݍ"|Kv1#Qü1hGNۆ#2#&(FRH 0g|V8[.H+QpWevxΫ5NjPcȶh*ڢuݸ# =gpg?ØFe;YBuGhZ;.X)^zO4Kኅ k"a Ipdtf^Jtv-̂J S%~̸]əu%A9 &&&X.a)gq|g4K^xx /,k`="BɐV&|^3+ˁx'B5( +$G~U+bW=VH•*7plm {Ҏ3w늧ogLHi_]X5"&2SdT9m]76U@p| s &!#A=K-ͮQ Rx9^ cis;Zav!0{!"[*"cxGKK&B* pXkj[m[==8Ii,'l:8/`!gYQh=d&CTo4)zL]\Xډݻk1mč}$@GcUY_i$Lӡ^?(r-Q1uggl78frr[ۀə*M!W{68>öwVQAEh Y*>'Ꞽ+ =Vov&B@թ8b~UP8$䰉v!ռ!~F IUiYpRˉĵnGg:Ue>(m*j!nX+Pл3kΪh5Aqe6moCL(l;00U%QKpo7>nQ4 *0iO8dL H PJwh=*N{СBzب2Nԑ V_I]]$":ӛ&{N΅[:a2# )al,2>blm͍S:٤:  K![q#7[:&1l; h *gJ`~ю_꾙o5俁C4RaY$ %TU6rF4© z;CH#ٍR](`>5KY $JH->?)[Uy6^tfXJՈC7)J)Ÿ#R^ -xJck/ngv42 5Jx@( ;ODUgIX+;P{MLs"0 :=c|j*"B]_yA#I4|^o> <НC:Mf8j ?ʎzn%*t(Z(RsadtE}|Pac ǯιDCaŦx?͊|'j29͸ =-S A[&ɰ;` GtN ϔՉH`kxvSTAJv2qkz,37oy q5 `.KG+ZhUOMYcAg d4H⒴Tv@`g>뵃b &gjyopn9(-cWhkB ;pa9`o]DXm&h@T?0 q˘7gLM,Mٽ|2{1RztaTR΁>ȃ𷄬ke:ٌ\ᐃF(Ue۱ktBk= ?zbK8%o,CH`Ÿ/]Rn_%'zh(Z>6ϲ45H}'vga SRX!o}fQ*,;5 0zӪ&P;fBRAt 1 ilB#[L1@RBX2ދv|sM;=i2!{*cޯcg2*`X@VWzdx 3VQb j?`Z4aN!nBϪ&!+`hloBX֥s͋ftݮG^-уF`gm -}'K!"g5]`qs -B|" :;vZX!Ss?6e~X Sn@ޅoB͕%FsfcV2CݢVlH~2cLǯ9Uiדipv}eulVwxa EvPGhIea_sVkC$]gw)!v!/%Ԏf/j#~+SXS„%Ɏɷߋƅ T(0!CҶJ`aS)`˞XWն]f/ 6wl0:HKvHGP'QpqHRRS F:msX/sX'&NHH>VtNՃfkd>7N?X0%BqKNٹ&y5=Т+ښ8`)Mh]N#98̢.LߒŨ9pz1NO??'e^6{ )-K^dmM2k-,-Y噿30ؐD,! %^J:%j9,pkz`W3FFAwzEng&"\#x)Nc&ylڍ &'v{.YwUs,f!RxJcrr"RO,}D:Vc bt )S>NM@P& nBdߪ~Wt욄 RƥKLo@ 0q^ _l'Hݳ6BghBisW٦bŦ$9Lx]̢ԼN#U%Nf3&G4t(}˝TڄW!we !dhY-HiD:l K)9xϗ? V)+_I3"fNp^p.@Pe s9`BurBl-9r2 ~.h4"?|_Ԣd9W*SkOWd``51XMb(zϙ5Q%jamYa@r%j&F҈0Q)G1CP.7DsA !9vםK͔.:RLJxt% ZﱹiueQ>fDvb!c%Ѱ_. ?PbԿPn$|PPGm ,C$^f6B+d92sITb:īv0j :6kHr،_zAWQy0@\S_j̋Xyyyhi m̘JWEf^*Ztx'5x_R[^ykkā&U !72#W` ;Zq73{4:ǿЩI gEszMlML~3F)W)OÊT7+l7߲n4Έ69 +cT"ޕlH.۹\s:&$j_LTiQMFls`w?ՠmq\UR 0xAxjor/|pWn8KbɪrW% 7qurҶcˋn)|k^kO2UOxA^r`syoZw߶4?%G39@  Hs/M= q)(9_MOyT?T/;UĈQ!Ld lv?So>Ws =gGy#|nR0D|E,̕d)n2{qO 6Ti7_F~eFYC@-J@Hu}/hw/Ƌ?Ļ%.Z?^=5ؤ@f Ζ1+_p,29)=e!Q;LC=#%:b( N!z+6ZO@Kh?߇u.G@࿠Y `L>Km\xS sYŭ:1HC0x`g˽JHw_6/Q4 P 2 l (h^嗉r$QI-"\JT-R>eNi'~`Fbx JjVW- W"+Z{ߵmkMZۻ$`4Ժ1*~{SP.u *dsWTu2h'aHEb+*aOĆ60FVsIav mZzU[ dZ͍@\*7%җCmip?{U⑸t%Eu:>qeJ\.3*CC9ET݊ }u:CNcs XʧNo}tE7k 'p `2,6ܽcn0b95k$N̎Ko9]!`.|iV<&K|6p\Y=7~ܢG/aݳ][ B 5'-|*EtqmA{څb4 5.R2S$ߗ̝q2k%1+H8l& },!;.X9u^HMFI +ʵUynXzj8J6j`D]6H Xg`~bf/X5}Ulw`FPFwB+1]ktc2psl`d>e? 3ӡuOz{^SSu7Y)`k9Dl6ofV|u|C\u 8]5!(ؾG]{GuU@~s.C󟾂obfP;1q"H`"bTu=+-^a5m^ j-/j c9ueRq)gkrq<߽arZ"_li.>W} ].D.Eb3=kB/+ej>ڳk )U;RPH4;ve0!OJH$ Loah= 1aɷӈg(2{QZ.TJU>Y5֦J4S~@h𴭠36濲v/LKCȾ2R N($ajczҏ2CHsb|#Hh. *^dqE{ȿt"ޮ0`5!;M} 񲈩-w UdKmmC|b#m#k O HG䚞5ԇmfn8y~΄7#rT[MXbqAFp9q0l?rHr W5-OC%̷ ?G7;t_ѺLpD]@'&Ӥ蔩$lK+#g^ .Pvҡוvr.~%`)3}ЛU ا^S_[ԋIט DkֹA"5xkՐ擵Ds 6uZx;.Xu"N4WQxG }^c}XY(ѯ/=hHVY7>BaE>eonQb{q{u֞gмxF"dԮ;yƎJ[#9Qve ƕ+cPib։;`m8 E֜C2lxdc٤E+E.ͅ7DGT{`"& OQ)Ee(8^DnghBࠤyk%Ӭ<4/> C3 a|$^| ^ɺؤgur5%ӄ_vIM jV1O/P>IVS$=vǖ|ܽ8B9Abt8P( h$Ϫ3 tH/GƮYDz4_ՋpE&\X>s_"DԞ:~Yt(C >\=d)z}؞>X/EG#LJ\-$D b&h g3 (OαAۤGHĖa6Y⻚OTZְ &5oѪ&şf=d\ZAƖpDN*mU23CU,䠾3`usb g2ZvMtZ}1gذ|I" cM+i] ,ЃVPx.D,q#eyG oءVZq%cT|lO_)\\~xhmgiȉ֊Ũ˭}v=i ;i.ZAu⃳!~"шNojuVRM3!xMBgLm8 AmOCW(i@͞`'v}qb.qieE?wKxafBQBV8*i`}6{rKJA Y Q]i~ +z:kiƴ d7 DWOcx/ji1`0H"ѹ66̆JZ1`wxpೡ w6IZ?Zż%}YM#vhz'c0ěN;#% `Wg8`3r@̸B :b X)@l\a@/](^/{%4"Tٜ)9O' sº7w"QJ_ɛӇ1Ju0a qқ mc`?t6YL5SA&jtkEҎ@jIc#L䘅"GLAb*\70 f9%%nô78K MOF!NW2jGop)qew40TV]r{ՆļߑO@̀둻, Zf',[_/@ɕ w{*߿(<sZ$qhK fu^7NK'! Խe>pZe?wf*z4B9*6w 7^x%H޼zXO. fo sZԢ}YkynY6% aNܷ:OYIHJc+ AG [([[``;ks e9;$j+kg!"Qy-6*TcU2ΊX)߁ٔlw;4ɿNyj=.D)fVQ6ߘM^>^6N!kys

͸V;-Bu}P$Prq!!ARNϨ_Z;'S+cd3iIHg|Ɖɽ9n`ԋ yU%L8Yq7Ɏ7.tc F8{kuW;mL6{98* b5 0Nxd]Z%k%Dyb /ےròdE`mg6V!c &xxHmC|Nfy&juos̀/1pE%̳DŎ4l|2Z7T; O}  qD]}wH =;VSscmϭ sG$`J:W ;x;ە. < +e^VIn5A6E\@ĕXF5x[H7y`\~^x\8ɪmLiWoLT̉wAځ Q}ˤ\Ne`a&J4y6eJ~f r(C,v^{e4ߝxY^.TDR{>lxb /s]SH[ᓿԨ9!Y$ϝ `69%>VgGƿtK"N -DJGYQ-c [x hD^!TCZ2 T#=":Xe(c ȘL *'P@+ՌlքZH&řMB6&#i9DUǻ?NM* ᚗěiZ#p3gpp!Վql"덲.,D /S^V^iAw|C6&6,eԦQ c?OݬsJ,\_OL,"ڈA7dж*?^ OTj"E^@߈6$]zOك.XI%ۃD5xg8ǒ[}ɱ~K{k!83A5O5gC@Ʋ5tG1J&xJ\e1˷0>Š2k'wLGhwy}?A U&IU$Пy׷asWTQ7U0ThhOSf8sUe:k&?SH`1X\ mSCv=D/Mj/dYQDDUΊ@8s mAN$l_B.BW}kNsg+ƾ9?+PMI^6>G)O];#;Ps"y mb.,?=Mi[lؚSS ;Y'R~9Χ(U㜯\mlD</֭{? o^gw 4YQ[WH7&{@M +drz#qCKA ]L &dC5J7L_Ԙ@ǪNT09~DgⲞd {4GuC|'HB5Tmf]$, #2׳ܶ9XdLIf ޱY=$H62Y}RJT'֍rjuz/Z^MPʻ<$7m: :6:e!`.xG0.)"/.bp +z/y3[0DqJ}uMVtִ5cEsASp TA=iXwg`uVy+L2U"4x\߸S4erY#h\L}x ,Hck HS0ɟ= ֺ@#+0φg2W@^C;\@$~Zc 6㳳A\ԧd2(!lTx$b.E|gl[?\;b5= gpVq瘿qL@٪y"? P'$r_ʵMG-F“GB-*.`*>֬]SDט!VWu :!GQ>OA[ty'BEw=UO7 @Ls9NAX73,@TlvCGd`&T 2)US'/֢d#v^7Dձ{ $);r|5 cnFTo2sVw9׮̷kPϬ>JipǝuGi0wȎc˒>36!5qYto[""Lts\qj8Wg`@-F@}"qVod׊g1m'f˿POs ;d͌,:5%iӰ7#7bܮqd+A̸e ,#̴L0tFR2K+ rc,Kr\h ;T.WFuFc41p_8p?z3AA ;`Vtj~v'X3e٘\7L٢u Ÿ #J{`Ωe)t7 5k& ,#W# η~pIu>o:A XDbn|n.jzR=y&X*˪" 7ěA__.nb$#=&*:UbXxT[eN߷Ԯ#9w|oՈXxQnw1O+*2u|90Y_Ɗ6c8 ^S/A}/KBfذH[ ^tzk*Sv@::f"B<>)_9-fߍ$桄h;a**sO|ޘ# *@;igg>V$pbs$?[Y.#Xa¾F]? `,LhU$XĬx>W޽~ՍDX۶D5܋)YMFW JL;uI>ԋ~vU ,(۶ dKqOZ|M?yI9W%gv]n:$cLE^5H7cvO9jNH[c2,"Lf28E&8|OsFؒ3[E`Qxi`_. |J@Lcb;w1ѡㇾQ H Zpܜg♍/8[\# Wε5c/,YVqg(3bW7{BNhI{!F RL=ǹfwQuJ=flOdx!M^$4Ud?zjT_ xM$e7 $\.U"V|-t%@_GO-rW~&n},9 *䭾/JqVN*>2 x<0=G0L#%Zs k6B9Bu2 u\5q䔭l:[RL<'PakDž=u0_c3T 㑋sY*CO!<x_pKKQjNb<ÔK@)}ydC&%' 2B'wGq֜\7~<82[^EdSTBRi ,ї9 R/WZT7yQ "o[J@T2u'ћ:ۄ!'[ѽnZ'XFn?+Vࡰ94d1Ghw'ĉ+pV7zL:p\>wl]?MiDa#gA)Ѱ|HuCLT]H8lUi qvy%A:@\3C(V Hkw]\lCk=XZ%%_gJk1t4qTW)uiHڛd8$K aϱs><*F Z>c"BEs*eT$ ?TՑ},jW՜\eDPE!bf30FӠҞ~gb,C{ھǛ٣5 ±HΙDыDlBέQ$%E.֩s%f(\!5"]s9Ђ$?IR m_ĸQdvsutF_^+ܑb C뼌>w`T.H/(XEޒI掝ۑV h_*M($GXg@Wx _icGK\,OclREW\vV\47 r$75|_耆KraX h.%!Z܇|٩ O4f`r]D]fstdWP޲UoC㹩G{ z '9f'̖qi|4l_qf +^zKƧ2\ICj/i0&>,L]Jm菹tSpA /cz!mИ-A>.[]; dI4*eX紌qժ_'黚5@ͳ! 4{Xr,A.\4.g+Wt%;(Ԁ}QEf\7RNO5(z(VQ%x!2la'3k0{jS#P̹](3CE)n[~ZHZaa>8޵1^d;Vh0yhB@A|\|o1خЁQ a[$U'.Avejeݽ-?0ځʈV:6[i7z? \Lfoꗝ-tUN԰j| +㬇I7$Ryv/4a./ͶBaV!b= 'à $%d|-DH 1qp[:"?I[f+\LM RS;s)feoi֕0 qHJs}e=DOLp.`^A8Yo&n5*X;gb u\16v #3uV3zspQ,drpu*2F7IЮ$[1 1L&tI]OmŖA/Y`Fc>{["-A)w]wvMsw\ b!D}hKZ4DRR6& on#9V ϰpI lx[GaUpXGXފMږeFRnY1q$o:H)&ʿ14(*aCSG`9d>^i=sf'#;_ aPt"yjaɭ§Lo*?OҤO^)ua;*p7#b+LˏLp\aň(-+{s^ANU 7HᎯ*V6lU9GrKc'ukp<M$"Ʌ>%?8f=<XᔬܙwVU|?}Z3W߆~rv>i,)%n&zhOEC7뿘G Y>O7R+[.&brls!%'MrQ['dPF fláشkZBXx쒱" 9)R6;s )5kZ˄fwyi2\ZcN;,Nyec1rpX!Y${~a(P~XZ Vȼ)y)v)Ȗ}X N|4REezj/iS*e9i.-zyzW4`XS˨ xt̰q ]H@FZrgM5FZcPm@DgR[?ˆ;Ie!Ge;ބ`bpqjuP]"DE~n!r9?q/Ե_JS9(.`߻328ڳ792{M݃i,z z= U1yy/+S~6sR`]  wa+"#P*eăaȇlUy@)D)G*$&Qo:D :~6'CyKB@]R뭥eI!~ #>3~Z(zk ]|O˲Gzȴ 3r=Fԣu^R$Htl&N-hrsZ{kwyNL 惑y+;seF o&"]W%_ gIbU3:h0b5 3^,ʫ%n^83mM1<;0H(Wo#4eDpcLC.,bnoɹP@e1b?u"{|It{c\7)nwR{tBb499cc`{vo`7d8:NY|ҶZm)д {,V t:<[W^4d tO9|B:Z 1E\hUO?'r¦>zoRXoRr:n@,'.g=^k:I ϖoH9mqL I2V؉乹$. :7<5%sHh7Eҿcۘ'34&iw٘{!/@LE3|"2Q8J ϕo *2]*/eaUʬdWЮ3ijI] (D;e*ؔ qnC{l}P"#\W\y e%(Sca2-޵ /jiOuިhVF<δg S 5AJ"tzSdfÄAٚ K^og.o 5DK-q/ߘ &pZZoh[m7І7hˡO+S,CX>yN5f*sYtP3zѿ4`đ[:"SI+*P;aA*=kڶ[Ж.HjGW(Ͷ9xE7W;,[2ZK `XBP2 CS%"IJfgVDޫ* 간Qe0i<|aBL #λ$;]⯍ ycvM@`57cV,G~&}4Q t3',5s %R [[IWT_DIj,یy%t6G +*]Rͳ-xwbo]Ͻk-XS;2v?Z\X`H?A?$AæK9`ƫ!t wk@)cdOhJ);5IFR `~ S3_?p͛IjE-g5AcNĩîK%w-}w~YPaVH@V3ԁډxΞ2:+ρua{aڻ?=ϴH|ȸȭYR˧QD|=JWWpfK/q ˥eU.ppƳah]rLƳ|'[߮dL}#OPo0L[5C #dBwu$3bI2߃bT6 QdS4e 00p5[6H2f+ApVC>Ss(h`xNf" 4IE^!TVcRozvZr+@CkjIc[7X1K.T^:;JCgn[ң{Ⱥ;RxXU~'G!S'›)e/ 5t*z_+T3~d~EՈc4֎geCR{,W+,HcYyΞLٔfy~A4$oRm ݬe9( ys^(PAMRwg6>*+}dpM # ݒ[{i|x˃[ ɏa)9z:eR7$J&J[&Jg=| ' gh%qƓ|T⦴6ʓ9o*e9,Zc}VnN%,"]N{`"QN4%)̒ԯȃ&jXaPD+*yvX;DA@$0QYı,ϤY%PyuՖM+a`em.,"ŲrQS#a똷$9eG{':N˄JҀ*t^g?L}@zAf]ԁNe GI^vOfk1Pq*$ tUNɩ>ᆱGvE!9$xՍ!9S+7m^Pm*k?LE&wu:}[m/ۖh̥Npsen$&5' evH(HI+r(\}(c em2]JOWyEk=tkI2}X2(*H!OTRx|F٨y ņ^f'jI5aZfS"~ҝ+@7,Ķ=B~'7 /g2yC-̷|&=ѝ/=ql $Kod$g'.{LNىUaSTwi3m guw9 [Y \k=S;:/oԟAxK zQSs$J&# @.:Gæ[rk07cnllߒ@gaJU? jy_ſlplp%>1+ye߉n^k-V;=c{ ^P,Öw`gw5raHc_=FBz6iYf:gI{VJVg1'io"x a2iGG FR:3c <57 Sr …|<R^zh7?O bhF%vu~-ͲܒRy/,k8ŦDm5۹yag+$73Jyü&, r<ٽP](ۇ26knDuzJ~-MtN!\g꛾g }8JK4y\V2X@T+XpAy 2Q coVt^jyZױWCdt6ˬaa0Ջ *Spw)+l0R]`K"5&$8c[CcK! aX"Z6{FB|T[gӨT&5[ƚKsjM+݀O ̭4L:zfٕ,HUkuM41I&klQcI#蟢vNlS@~Q$aJ,ig^"vCa"WΊ̽CMR|AisVb:V UpXNdVS.tc,rkL,TvU&<\STVrmU& ;yҫFH{L뜋{)%GpD-]'yyS>mOR67X w@RuYnUwDqXOΟ &ޟbl_LK}\oPGo͎ 8g{iZ`|/` dbjcm~*^0.FΧZٛd I1_1:=iT$oJy´UDŴB:MQty}|+)&*.&+Ii9$<4iU^D5B{#W Wo6LYc 4l ?-5~$ܓr8~e{O+t3,a{JEl Evri1|NlŨa"3R۞t2C|7z8AoJx"O! $uݕ.+'8=;O,jSGظz6G(B*ED?*tfOOqR]. +OѤGl)5E*Dr_}sqŸ0QZ€qF4Ez#TJH鮁 Cf ]k drs ]۞F?f&9SZ*j6$<ӰpXlh̓kMQb#9P͟:Gܿ!<Ǻ?q'2fQ5)睠9WOcX̹j.t'<{%/Cn$?|!NO`uY])E\\I6_(V^%z\: ]k)f<>b #]x2!23CE+( snj2'1l?*7,л8ʉuh~®"!*F5ԋ tX#'KmvN3j/y> QvU^|^mY~aVHdos,|ASНzgZ }FRfv Fi0yb(Vd}c[_xAeHFnBijL4ˠFiu F쎣bMz{=A)=j]/tp|kDpۃ϶ݺ}t(|bUz#{ɰQ)9ѳG?/uH9ZI } '#<Lt9"Y0ʃd2Z{f/QUks}{0oJN\b "BpQ6FnF?&tO:P,ƳR l'@?,eX],ts.b'ΪC"?4-*QM9VO\7W 뾩 6HieaL׊]|_+ZtIHp(Yl -T`QwΤfƽ1dPi s2kngKnŀylړqZpʢ8_F=VP9Rj=ƜE0"Wu&}^8/aseUkX?jkZ %]6]=bƩ P? 4` ,TuaZchAd~)8=چ h-Znҋz*~.WoA?l:%͗K?!&ZI12XjFqΛq9g*YwQsY[$('4jtXy+B$3:oE=_4p% KV zIۅgIN*DULH&..$F{cH{v_$DX)"lmLkPj 0o:g'dVt L,gs)K3^o!C{ZO u(I'cΥ=Afg:ZC p*=}Y(NKcY9kC MY.!C,k-3{y@ުPsL\tAA5t^#UHf #C "rC[s'sN5$)(޾:,j^Yu$aYV,ҏ}C3D c)ak8$u~mUeX3`?yډ&oViua7.tk 8yqr-6D~JYz]zjFanztJ⾷XaZfoJTXyP~OR 6T"v̪%|bYJ&NJp%mp&/o`WZ~g/XfkITe~Zf)g4+GW0_/M+?/WaN42 endstream endobj 19 0 obj<>endobj 20 0 obj[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 317 400 459 837 636 950 779 274 390 390 500 837 317 360 317 336 636 636 636 636 636 636 636 636 636 636 336 336 837 837 837 530 1000 684 686 698 770 631 575 774 751 294 294 655 557 862 748 787 603 787 694 634 610 731 684 988 685 610 685 390 336 390 837 500 500 612 634 549 634 615 352 634 633 277 277 579 277 974 633 611 634 634 411 520 392 633 591 817 591 591 524 636 336 636 837 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 400 636 636 636 636 336 500 500 1000 471 611 837 837 1000 500 500 837 400 400 500 636 636 317 500 400 471 611 969 969 969 530 684 684 684 684 684 684 974 698 631 631 631 631 294 294 294 294 774 748 787 787 787 787 787 837 787 731 731 731 731 610 604 629 612 612 612 612 612 612 981 549 615 615 615 615 277 277 277 277 611 633 611 611 611 611 611 837 611 633 633 633 633 591 634 591]endobj 21 0 obj<>stream xڤuTH$@p5 ={$hp`]w&o!0շj$SVc17I۹001ԌEm,L,H ;5W+* 0z\nb}j99[ϛl7vOTt(X,̼̼Vf&;lAHbNV.И0Z82dL"66_` '7onWƚSKc; 3 8Xm쐐(R ;ٯ]~IMfn/+濆͙@.@Z)$m bq+')\@[ٻy?1[ٙ[3W+HFMH6 r G+'t9uL@c[<lWLgfg:d耝oI. `ف`Q3~4p-=,AG`E; 9?b#gf( d!`[=g:5t=a vr.SS?Yvakh+,@s-~2#UN6-l@G.@G }\@G <@3P+Pe;Pp'Pp7P@GTy@GT{@Gx@Gz@G0_>5G 4[Lm++S+'pKhgS{߻>n#XfO8 p?Al@'hq N' hqm XXvO b:`=6XVp;yƿ!+X,cc+ <r?ȁy3VZh>yV nAOp;oǶnm m tV`.:nVMI] ] ] wO`U- ͿoKwuெVoP  u,znbBy*#m}0${~ȋ;Njo5 AѩVr=f{a7Ͽb)雃yfYPmi\72? _kDZ&%ulS\qCx CŁCgDc~:30KБv!0?_=Ƽ5[6j8%T];Yz?Ċ+zwR*'nPyQ ɺY3}^#wv)E\=PV)Y԰ R{ NLy-{m9P@/ŏa)0IX7u/tHO>`ږ lT.>@ izhc q6Iʒ;HiKhVhIC ~4]MG%X,;Z8K\;E`xus}2$ӈ>,#QV)+nJ}M./d WG4NWn2]?ύɮ׬j/`Cb,n_Y'77/d_޺iڣye}WD,_{I"Ysr1}6\-G]  .nl{lQ$0^1ヅ+O>b 3\ȿX+ ZW٩ Xv!;{^Vgg I`ؾX<[,~;)>\a 6;,c oSN54zM+X-hū)hȁM¦i-lw0!(^9;!B g0 #MMJ”6קԃYӯKw9}Ւ5fӴD2$.!H%آQ̑Y, 㢊px1%7I1n N{f!BW0OcB7)%<.0=ty]ח_ _5n)ge|K:']SsFEa a3UI⺀:/U>oCBzig'tS'ExP(p[jJ]>=.DRS<Y9VxΚLs"FR_Y{LԻ)MR+s* zKP4#7aHxJ^15iuڸ4¯nIK<ܶɕ՟*u LK|wR_.iyl'8B|ũ`^SM%adZxrh_"|dS2f y9㭷&=ۯ_ 0ey8gfx?$љ;M90!J{Eq" [n’Z޼㎍Ҷw~m>umuHB&Rρ\}k(1qq{e\52@,sũEDuɅzs)g4t3p~ذSy*0)T̐LeꞡJ ʅ$hL<U Dh?'(Ti|q<8|:Mb㗽/O>Ἧi/l_URϑd-9q~$ϡfevߟfkY牬<=5q\+yvM3cw0+mV[@BG#^ z0j%mYø' \T ވ>XͲg2 Xݮ0%P̊+nN߽#^S#C-7^V}Fy]՟<ը/Zc 3G0@EqiD`*Bh;(2B34`jhyv0j{mfM0m-=9䮗sc?)ez?tLG3S mwS@nQ8 m 7.֪ib>iwA;۲H/ r`?#K 68]_ 2Me `c*[Hx~N51Sqm=+9 R1@B\Ã@*:KoIn(_ )lpɯP:^ȯ 5q攊?*x_h;PpY=7WPr-]oKøzuDPMڧ5(wF?tz;yU7vS W.7_EC`UG<}5_ഷ"JswHGVۼ>V,Ť{ww[ TlZe3Țg'R ߗ)I}-CSbR:͚@P캗i" HAi4]S 4\$,A^'}]s@mسo'%rDz,pbRӐ%! w3Vy[iSݖ!{EJ,,2$tpD\xi)B "PE ګ_Om ˬUf~IW76}@bC'`Th e N{WC/Wa9o3QPbv૿}7f ;7 GAzF͎Su/w$KII5v!2wa1< TH4eL-]厪?^3~f*lc:86`~}G.=Pkj *UHmCDyiIXijWZj!A5 "ҷT=Zm.&lLd7Ů$N=Ν^a&w Mwu>3?'28Ď|{H0*IO2ˢd#!bSb i?[cZvHfv 攫r!ϗm1~I>~+zHj?W(T*[ęiGeﴂ[M4MR*BMۘci'ӱrHaޤuQCVR@G2ʨNQFpDыFFcs{W"!H6LּUz{Paygd) e#N -IBQz93ySAF)_@ !2pZ3s1yR9y%fպ v*tl,:BlE!Y`)?_ic0_I(Σ|~G,(Cqg8)᭹,D߲$8>ùNFi%sTKX~(#2D\4^nR߱|Ɯ:5Sʛ:4FNfL;(JVEw]Q?mv&O6(_2"o+ ww\,Hbg2cu=SD1sB+َ!M"~N&U-WB \2aN_Z Z lA9UisA%U924ắ5%t)­R^GӦi;o֦[F71 "J_c$Q.\ڊvW&wx R~Rr 3Ur+w2!^bM F#4WJ]a(wz^#x_= ןi$X@@FXx|&zC᱘ i(8lIzN2?cz{&둿E?cRC{7|`mUy.SN 3exP({E([Cg(AXÍ8uJHMy.D%|{K,DLZNP)Yy|Un!r\DL/ab k+ma=![_P8WThk%o91N 8Ⱦ̤))T \{ 3&(jہ ZKwC~_uM.!dC TT&umBY~/BE{/ 7| M7oRZ/2+|5 {k.> p׀3T1-s!͠84"wrXAЋ\i}J7Uk<=6ml~Z=Zj:%O_{s>[7hR1 }m^6/!b!+ǼCYau<"nt,/;Y=E)Hb־"Řib>cjiߡr?J#Y,llЯΫ1ҠOL][vq"fgߜ`) gsd[] cD!*ۡDE1*?Lۥ;]}3y('g) RcLyO`h S#Fϻ5 `dq%?=ք@vC"~y $nE[šhZ 5)ig$)f`*qYn mIgisStWF Zظ[~N] '-v*>Ph@1fUE}:m 5 ҷ_uGm?f-uz;>Wޠyqa`C"55$%i<ιP˂Gn+Y {#IYi56[?haS-R_ѣ(x?%= L'RPKwcb9Rø3)"Ox3\̭tyj1PR$JkFC6WZA[խ؞Y2<ӳf*<ߏڕxY%Pp;/V NYrGwGyzkzC g q;ROWc9fA}h~B 5H-)g˳mNwFR+ iW4Ўڇ 6Vͭḡz(hi7ߣF0Fb .>ABZ“0s8gc4 Epu1y'UW6ϕէ'QX >qouk@md ^ђ넋c猪? zeVlDyuƠ%xtx_xo1} _`9+&1YwgLBn(]5$0g]bD!#BbZaSk.Y+bț)P6 S襊AxÒ2`?]svj&"j6G0Xub%hRv˝N=f8.OXਸ~'l(6+`U:)n3ad*{oR#sb荑˘."b™q%g L}7:T C9I`8Pk#G(%rIm-*rHaC{xUse@lτ U boT|SP<ڏE#Q\9 ͆&ĝl!ocatrK׆[ʫ2KZ&rSt#6\Y{rCdSN/r7Ƙ򆯡d[/64)}ا rϖ/L;^7}zP{xq ]fbhM1Kz|]RQ7ER)'[Kw3:oD5Qtz'U\m\ ݴNdXS]i>i/yDf|"q*N.'JӏܵvQG)l FnWO]"NzvLLP.q0zxjP| zy؏6ʨ8ZQc$Thh!GvZ/RpOc[B9D\kC6 fO2f1I0l|_ HkwYم:?*)䶜3 /S(ί|tS673wv] [vqwk[5PNX R& \΃SZ;ϧ^vf<>rmYp35:#APwtݰI9P7=gtCOtp,Lfbm4xDNNu8-CL5HuZҋQtl\˟쐱{zon1uJU3&*CQfk?o$,귰 ^Vt|W˻"ҧto3܉d^ Kes~xaR/aY>lkdBlx!K=¹@,tfRSMBx ron]`i@ّ=Pf,R#eKؓ،tg}cy.w,ci>69FF0uMCI>;.FWrǡ:,i+? :q(a1b>/ʋKmaYjҠB NVعLBE{UᤊX-V,rB5͜}cn ϞqqEI}p2$m)E$݂Gu/˼tySxw%=*ϩ!4U5ġ;4/&n}`dikI%*bk{ڬdE QjㄢJvӠ7әohv(.\\Dž3s"at-89G3ar慶9ՇQ7q90:t5"ZkDo#c^/Fiaޚt+_ޜ>TbGV٩IƥfT- i>CeRHzh”]TcDz%>FUR*?r|^WG+u,}!0Y&ZPq6X8߳T=OEe3vJ: dQ,Q+`9jDΐm)|Nt5BKVBj{>I7FTy~yO)ʊbN>ܶKų GjJNb%ys76օEM|2!ΐ% < r 4h%?$NF1XkGM]/̵Ki;uzO @ 8* lqϼGVzITn)-v ٗ5MIrڨźܡXMo!J$DTd@]ncRuf+ur%)0ă CB˚vu>ꝅ w [6m+ö`?L:nPm5c|ԧPZLimC @囲' R|/bùkE:N^k$KU$$x'j) 5EIMȷ} ]h)WnY5y"˦<|;o^mc#>Yry}"{@Amͥ2qlUw8KZziE5Y+ɹ͡oE,ֆs^X`OYX!; {\νbT;^IM!ݷ$R]:v8@: Sk`DX;s+BN2aoθiy!Z|0-d0֯կ4)_Bmp/VWg՚وc}o-aULjbn V"iZ$~.oe'glN2B #0u73^7UB[hK}6lぢg"}}h Μ~,o?_o{ eP. |P{;509SF]!L£:=Q kq Ad7}#[cСO%nk{38,\@.@lUj0DY0(3+.|<zuZćN.Bi3%Hȱ>Ss*[ DJ!ˀŜ <\t9k c 6IP۬o.o) |v$| eb ìj ]nB0jbo[xa~ҫ]eDsCu%AО"+åZv7gΗ4rtf Fs P^>;69} G9tk4%MD]@YybOig3Hj5N5NSSɭDrr&d.U[Nm mlF-. e|Kx.SW缞U2ҘisTGƎ͖m\V0Y} 1x\!s OFUm?P3DEh$UR^y ڊ8*9PS^m-4wVѣ: )/\8Ӎ/ uw'#ѭр87@rUי:;T5W^:$?:։L CnnUL "!-K Y搫p|})mxd/")Izu|Biu#`%z3A*SXqY6vF^ nW\}Z%]CDs;ϑCs9wJWDƏtN;9x8NLT4hk|N GOf>|0eөuԾRE2noeBs7ЮHM}:kB:!x[n縁<1wgz>jƼ"鐁5V_$ɾ|x›qhu;/xXH$aARZ;7jv;La}a<+8֥9MM? q?Kyb)̧&v@8 ȵP[$P ض " iw! j4VVExQ{[9{?ٔh.ao adE dM)HsgHsvQk/wJ@I#촀t{3mmu@xgȱa>/%aʖƷ:%NRAUW1(֊,_wc%kIJ壘:U@2V7^\O9sɆغԤ"9yNmV4T1kIڒq e߿}3&9τ[av 6"J|91H+[Mv3"tiK}rțr_cGI?cOx(\+n($M 7#%|/ mDp|i >RW &[F{lNk&Z4\n uWO/ ^pd7{G Bʺ «BDSJW_@l^g{D3]=pw,hn;OoejQjXS$᎐.mbB#ezZ7vFU{Zxǿ m$|Rxv3-N]>j <ꞃ1W;cpz@K0Q)(޶FAⲀ{̕2I$繸FUm+]hL(v_#O4\ug/snՇzICHʥe"rґ M7܃I@)Z|NHVZߡjA- DZY 3=f73$ÁR$;1BHr=Y^g$XDd;i?zn08_'YH,QcY77~x0[Kb_੮PQxse:TD}6 0++dRq荿-ŵSÅ)"q cnא66B4%l ܍nozs s^dWa};Bqz8%Z"S=h ỄghjκuɗEN k d# Ao7-ӞtO\لV8nk:dCS L#ϼ Qoo+1.<_1iw{?TI[[@|#f)u ">17mveQTAaDz_8FL.z(,uMo@ӂۦgKĆ,Q0Xt[/U:xa Y@ XD ghwl"9'<є[ a)%LaQfFu e5oZ;1T9IkE#de1^E$ȧv{3ɫHr 3$>r]tSf+Z/QjdαhS:3T d4٨~@i$Db4v!ҧ\1&W{X1_/b63aTbV3-R(!CXp_!#QnҊl:Wr8ْ /jmKbNs'T-OA]VO<2FsXQ\;H} ӯ$N \L2ĖU /McF=rZxJ2%1݃D u ,jug =o2I(CxfqiuP3WxW 8i2p>1̵/k!«̴Ȼ.4RBq3 :M VB'' | ۼ{j~0oؖ_@bd!_~q}Nj³}r/EF헹a^'miE>T4bRpJGtW-{殢Tu}$S/ EczAҒv: \9HJַWԲx q FI~UDu2TW){I΍ a /+ 9\AZ^׭=ge"hHija|d_[\ە⊶COdvp|j=񍨚+ڑ|B'0'6m>i|1 3/OXww߂;2>葮x;+.F*tn'Jљ4ry1cyu(#X_O[XFz ! 0sO6+p dpzSEsUU^#oMS^e~) lp{xZ/{,ҏKp)hdk1D*7|TR0b'~nCQGhpu,5f->ױ_ĕq )&1hAc _vSWz$>p]%T$N}9Q0SbA'g(0&߉ӹ'BO6mH+[J*hJ1>/_1"땐z>`1;iG*F n9uHt:8$Ѳ풬$yEr[eg&T2ڒ;ٰ(LR-7N= *>6 {`;仪P9:DEĨ@ C\p 7s߃BU"QU f%3DQކN#C&{( M(7Rel KDzAh-PTVF{o9Bve:TQ2FH\`(e@5eױ""W&Sm0ŋ;9.m{n9嶠_8J+ݢƾc1]s[YbI_/S4Y~WjYuBυ&vƿ8l\xqBIbMVq.9PΦ˜_2PZ>N{b"'iDU5|[`a.@fG3*$JsF1]F,mU'Ɨr۬Qﺔu`-=p3{gc41+prը&FZ4Gt-<)'=$(Hq3j&A:vcgW/[ uzչ-#lP S]O".J9iM^aƦ@%v 9jY[& \Jo~1VSsryucHU0wf^sHt9mS/Rahu@# RQ ɴN4TSZ5n+dq(qe  1J؂>y'9u>sE)%^&H-/aַ&nIjU:8AWd?UlH[n4ۧ|94*_$  :Aܗr,jƥ~V\%לs8R "r/y9` Ʋw Tb0/Q֦a+4n\~wa玌X;@ɮ3?&n [pHcu`$,;ġ$}BX;7*vs,rBCY(.W;LT`HaGGdX&[hNMPƋ]E vQ +2g:8{(6*KS-|Ǧ_@&yg@Lquf-moAZ[+rGy5w"3sVe0Pmy`vۣHza p>ԟỢ;+d?W U3s !d\͏LVgYjTrYMvcp< ^mN. cxRNLWɬfԉ#+\A|YJ4)D^Bt~ ێv?E"vN}۴\ { wnM% $F[Í| *VVJ?-yc-u%85}?LvK8įVA27m̚Aёpn4!oK[u.B;zoRE4H<88T/Rϥ$p8PJɋV/|̯RKBRyz??zqoW|tZNEl1F'Z`(NKMVEJsed\o( [uC@uE /}XA z|^DM c%M&m(I$ضw^$[e.v G.Gt|C$_65 RoD**c Ѯ3]G6 F^!w? @(e`*\¢$XmJ`ЬP#lqdDP2RpSO \=b|1f|W3E¡*䞓={~L#EܙF!&.ٹe캭? cM'T[T3pzPl 9J_z7lx}`4 niK&{JP}˟ Ԭ/00XP׳@.4AnD~ B`አ ` Id{%]Ir'ʖK"IdAhݹ7I7ڥ?DV/UO9B @03)ܸdd͊a&im䖘7pJp߆Dc ZuJ_$yn{a.Mx~ZIJJ{ÙE+ꛦY w쎑?w9g;)][l8g40^9\˪f rG6UEmV}7N>]YUa5.<^U}iqr־nX풼]sCEWK=Y EpP]SM(Vld6\#iEo#/leywjUH|3_*V01js!~~RR9{b yfe]PQ-/껎MhCO)lZR-pX&Flk$F+ŵJ$rV`~Sa;?:.*c),EO"Z>G]'j uA`3' u=.Ji>)x9C c'V|9Z2(h`tPz˸ a_4هVXJcvi<[c9!"f=P~٫1HtSL^eU}7h2{rkE*p\o!Kں8H/]2}U%Wcn cytyð^gA@kV9')kG8f\G_*ƭ2I%fg ~ v8!5~p(M|)ud%b3 7MXY"ڷ~!!ҙ5aU^OٰK@I9r H7Wgr*@/HWʉ2ŲK5]8,ʌ 9oŠ٭Ⱘ+1Bqik-|h8~rpXgXzf|Q= " oK02u*#C&C:A]gkv7.5k]I@hgGWu Jšk[j iukgغȓ1Y^ nyf9]í[V߈l͗m X\+&b+WFc,+[]1R)Y!ChC&Ah֛rL ?,ЎERC껝8؅<0!~ wt66hZ}W;nh&$NE9ݿEmhpJ]w!H]WzB\B}&>TTRMtj#0xU'AawdK5En@%X>! {5/U:q5@@K_YQBQ!0(Yd*&/2lkPϻ !GS$A#N1MQ0i=jƆxZ'`uWC9l\~S n)!AF&J'G}g%Zf6X2mRv *;o!9"'qDRH^wMqiy5>*헎+=Q;Ԩve,{O<9uO^mŞLp=<5ߖKG؅9CWs|Ʈ:{DA 7{u.ԗAp%̷sy%Y)O'bL#iE| !ȃ}#sDͿwR6\%aQ%%#ݦז:y(<\ai|_ywٲεX,)]HzGLp͗rޓ$e@DIw irwg 1m&&cBe4S~rad5L4dF6C8d_ôtTn rky#ۨbk ݼPIb似4NC4#E5t3.{6?K|*'Ϋ_E&\ 9 0F͙!n|(D._"֌dtyض-\%":^n,(_QyUf|$]ɓ7R!`s )P.F[^3,ĸsJEQ>UzH۩79"ب?go)yDx%i}V:-ë́EV3HH]Rw^0K\# KZvq$uiu Ԯ%mD`XϚH(֊? r6`#6s5<; R%}#(]aGXevF2d! a!m<wfxJ&?m*)rڍnTئ7=7Jan# w%eIZ koS]t;g=5H |&}}f[ڡt%0\XJUv|%`fEmBN𭖤DS!KBs1R}y3~A\!wE棂1 ^z&RNe t+LcDJXX9])Q;pPa -]:ul&B1 ` 6xi|傕}퇭 cfDQ9bvm(-2[QSES] mei/{6`u:ܔC=W@" D\8ny8eJQ 1CGf+*\%k` <\-ݦvc3;U=GLf@g]k^7z?Z˃Qho9TQG {r?{- Q:S/k kHKua9ǻD>{ֹ`ѱ:HD 2mB`.ЎU{`vykˉ64y7f)ϸE (niknWa,xÆLǒ gT6ɻ8= aǍ<ߠh $ixZ$+9 w ~ggBd< 26}%IUV!!ꬻ՛lk- A* O k/|YQyP)z-عn_R#q+63M1'к԰M(ʣqF<;~v|.]9Tn!?(k! lÒy`MKލzKKC+ )jm `qF>tCVSHsHh[@;4]SÇqf>Y@4bŜbfQe%Eޥq&jBLY3"htΠ%} *v&z{:fh(wX::|HZf9 I:|16\هXAD_r$έ>xŚiq)˼U vSLӨׅ5;F8/(v~e3b dN>n&c[>9/MkEgFw1WIF7YK9%yc/WxY%,pPIMK-='tkoSUmy4'$-TEusJZYa&4i҉cڡ5i1e9;g?hq4c>SIQC9 369L06S w)K??٩\~4\BQk!0=g7^_XrlZXDOpW1>Յ(;J;? D\go:10> ۲6l;9"[mr ُK ?ҕ$)H+{w &&;qz@9FӢ}*U @?yh}ݞ=C;Y@1Ls36#H6_"rϳP`eswY, s>2:gRfpK6B_UlT9s6%겄oP|%2;˯x.HurEQ57R}rα` ^-vg89/_]6;+Zkf=D3B#@*% 4B0N{ǯNy>H"lȔ{zky(ekq !yK =ٱ3^σDRxZqOXy,o7 Rr;$ʗ7ٲZQ,z$tqvJ֖hâqyjO\Ym)?$ _/i3)Ve휿+`͵bz45ԛۀzڳ{.C/3`c_譮m2htWp#MUt3}Pum_k/Q2ias36͏4ia/Y=0d=H+?`} P4:e ̑Z<DU.Gtr,|WH<<-c e6vR∗~*`r=,TWY&h- zϟP5 Cz .U@TUaϪk/Ǵ~ImxC ҃ϽhYփ5z\1 NlV;f#;QkH8nUiN^. ud˃%_Tg;IqrN@ԕP‚\ĊyւD$}&5..1oiW~]Vx)?HuwX !+U͠Ҡ>UtkXyxK2}bs~r*Sm_yi}u*biTRrECbj (xMEj_#\X<.%yz-.C`eHwT #ߘ݃H02xUĒ [x 5juy wȌ۸{XmUh%x0[3sMۯ i-}h{/8ٱga-T4te.ث?fXrt]ѪF͊)BN֖I{^9 aN1tduj S:BȥYH݌VH5 ~5!ہ-]=ɐ&On0<ݦ8Z[z!6fX5~h.FlM9PSJyVa]צel&)h~::B# $Boֺ59%Z`͵x~q!/sNΛۯ`;jd|0|u.D1-K [\5&JVzЇxj7M.Oyj;L}5GtaFVk? o[u9c}gnCae85ۋmMyn[0^]{WZtJza%1q 4׳f3kY?:߇sJԊiF^^Uf8YܖyXwPT//rf4#$35‹tsP'6IꞀ6?^P@Ri^R$)cݒ㢞'g: \vxX1iD m +ef# )a w-qK=C7,:1[1"1"zVd-I|Ϳ3oQ Bre**q XTxІVL؊j6ߓoiIʸA8[ؑ6i+)sj}r7!_T+j&c~.$l7A ش1ĢMP,FAVژOuw_]D'D ?-3{9ʧG#:剸Uj!Q 3 Jj<B̿+E[##fW iPs Hua0f 5z<[Ť5p`j!X^:M`+^YxW`b dM%kg22{ej1Pt`,C~%0i~^8樔(ϯ_ ."tpv0ZF qdK޺`V0,wq7n,WL_FcdT;%/S5ڊuM̍Vb1&>ɗr`<K-خ"=I OK;``bh/R\*Wo< l/ 1Ci| oI |5,y~B{XdGMq] $Պ;rzB i.-03v3*ntOJ{Y* 4#wh6T pXCi$ꆨ.}hq%5h0d<׺.UjѴ7ݔC+jcFC4OD bcFԙ,>6wŲp闵 4ixN0w j`}2["_&)B/GNc)fJ3veUM6Z-+Utdi9A[`޽7,P%kS5z3Ƭ+ [8 fXp߀6 6@M#N "^MYCh\^ 1@K^Y_ .Y,H`Z`_WV20(4j5ϑa&u↷#; ֬ A *Hٚ}uYO g˒׹ ~Ao%IߕɈ]7ێ\:, Y/2V;?/E0pR7T@P˫1 X'I_5(I]H;1a6HJ(JNMpnE.%S.\*'9pgĘ[(#0 < \k4o?^oycpo&B%kab ##5bi, .a 0JLVxKEy$d}|$ #>Xy]xw2)$gcAA Xߺ-MmK"q4#]BNvR,s~UbEK/.;w!@+tUT!Oع />, +p# ~ M! (=:,IUw U)~ɲ6]cm;׺y^"geq5~pm\,F.D'}=o#c>x> 3D+ E~.lW1򗡆;E d'J(cTDuo!:ڙ+ߛשPh!-gOg3b&63J~3e1L^KBnLs=*3SB@h/\G R >`d^>0,R+7Iޒ ӵ; ? 3}a wCq2W(дaoi}IP9Չa!ӃF#sNtPd{dPL/#-(%.)bdwV?'#fTۘ<ʾ99-Ng晪IL]rfYAUc9 3l dtT\Ig a/F3Zy*!Ɵ@8:gb u].C@FUK &b಑j^PRr?†|/ՃV0y>V`ѵ2G,gZal `́qt$W!Q?aT|D(6Eoį:Cbhb#x'Pxqo/ji8.L9YHce *(Ve^OInKz+ w ig*; H2-K%@@<%RSu "$}A0]qׇllfG/u/>A"eNX@v3Eo\+~u q~G䞸 zِ2ɜ ľT_|M?bwBb -`֕`P HQbr*qT>9$WMY&Rd.6񠧋٣/hמ*9j1Վx%foYNBb,o4md'Z17Rڨ<:VDȱY_˾kmÔ>TğcRlF2=c ~_AEiHjo粥U#*= ;Nzv[3,Y^=(|Xߚ[?iI;Ab2[D" ԰Q`S`p,a wCJ ZΠ&-:)6hv7:-c@"4 4D,Bk5vPq*W!zR17MIe"=/u-yg8 )ԓ-:><Ǵ1(r2Ay^ BhUR$w(gr!TF oWKn~B߷+Y9<X)s/ʦ( o;̤PsJ$llË lWd6\jg(Ȝ\N,/@%AkU}35"{&PWc#hQ^{Dg5;KxGd p9h5Vl݅'vЍPGa{ޱ)%-u?^r6+ȬE ,[`KtK쉃6z }Dx9a4YK=t|1F 4P~ ~E17W2 9ɵۨOfiZһ*2ǐd^/Z3yOot,i_S6:2 [Kɞ n&hז}bƩ@P2Pl˖1z<{F:;Xbzc^o vo @5Eά#4Д~d{*;q^3~O,NTRVC!7~DPA(9tbDzWQ$]1Re< 1!>C3k U *j"DAz~Ip?_h([ ˑ@rE^^x{VT^{{~ iez0 11u͉`PpdXw Y_+3}ˁh~Tn -E L'AiDKnto9*x,P+;R"Olom+t%p|F- |;S鑜Øzq!X̭O9^]-láSEBL(K"nKHCeW> !  ɝ܈+j-]mHe2 .wMk.#rX_XM@bt0Wpd+@'󱁋lƜeaET[Dٙ6 AQ=89eB~eHgfl޹|48E<eu%!b#֤15EvPvQ~%eͲ- }B᩠y ¥Gf;<=.Zk4 ?;uԥ-y!> OT^跚@y}a)[k+uA|r|~nfPN&\ǧEBXhH,=3uQ]J=nD$CEiSK޵R>+A_֠:~$)6湕#cXVQd\lܯ2'0,՜f`0dž*@}'@WűN~12Zop Z~V5bLE̟u:z/PZd#k*uϰŐ*1^̚ym۟ܭXY>$bt7V^ #$[d,L;CE)EᾴmutfJ:[e6 8A4R]]O!H|.{4>tF=_A>H~e%s⿰xh ,yiPG[Cw=I{|ѪYA_ 8sF8[{zt|Ly%Bl7xGTʆ3&zͣs' 1:m2Jgԗ\>0'˷/$H/s&bj6ۣ4- * +GORrF0n`R|!# іq!!r$\cć[ Fn\,م\YC YI'UkrJ5ٯjhHY゚-]twu?ק1& 6\I+-.Yx$VQ,X >9[FS@o#yq05l7n˗|n[%EUhtN:F /(r)?qןfgk :~0ٔ\<ÆR1\ҝ 2fCK5V M^],j(IA0h 6p}̂}u 3v%r齂 ipoj+苺;sAz?#v~Cn6db:R\FBb*F%N*8q,3XA˘Z&X4ܔg_a18=gW~v44Vv23;i"$75mqv~P"_ω<3ďogw俬WBY !tbw45WEqm"\>*l$d(}>)r{䜀95}* 2 'u^nGK%"E}Ba0>enwχo44Kp2hpl7,6;*fX6?' ƹh12tbAo/_~@HQK*">w j2!s-j jVNnj"!% 6M;쭹Z%ݐ!kE1y>L\y²5tG__2n!BB&B- ƻgEL"2\n+l>X `L^9ʬfO !,s ,յ*N >YE?(gwG VT"GocO!L jؘ«qal1aBxAKֳm.9v6#Np<(8 7unj^흂ԑwv~/9h))mGj=@5E b{ə?I1H 4Ӹ Sz9eaAPKY>+P{l2\R\pmUIlw5u2]qH~:e<0q&TJrR'y^!́ ^q,s[G[;GA&FWQ.lPEEk{'!P+_F0[D?#-|ȡqk,3z NρH)ꕚS {@Pu [$_Q )֨I4WnrA\̮ ;twI:|jQA,Ϊ^32i)|Y3-/U-2*Q8|BbIexWF/,,T ;pBIǩEkjݝ]&ZB 7iabFT/AmA~{QNm%[g92"j.S<wGnF qEwBN&'fɅ3ߛ3˷VX{"^-FVB좪5$ ; [VՆN4p($)˳`ho@%[_o*24 l M /v]Y-o:Eo-+vkXZ*i%=㢉TWWr?JS*9:ĔXbHrpIz:k:5?0RxKgl$ U\ۏHh3<mسbOF Qp c2/.Iy{' ˪b> h,KU=-&~+C8 ?S!az4).(7ABjd~ތ7RDy?ֈ~ԇ>faP*HfB?݈0‰~˪- %^@C_91Pwi2MWqzҴe hbu+`~y*xY emD z$Aya t xLV^L{1,9Pzk`ܶ2g#p< B@| .Zlfၭ9txUEK_Zs&kGRMIfq+'Zхaod|+$N懲֜1[\t| u}9; eI}2 l6@D;nB}bo.:|MAC,pNZ^ fZO!L+O>Z#!Np&MXц"P4"Y$}h/> 9Kntl>+8 Ed*s79c,~͖ZjB9gBi&*4؞Ғ`N&ITo_4ʣ{3k,~CڲP7KMs&H y ns'ު=DEZיU+a+ɎFi`BM@'?$scF pd)wEYuqՔ8q͈4*fdȯS ;=wwK#>O,M@k2< @y’}(YM:/ +%!d5,萗FsVxñ(͸c!i2H, D߰/d-I3Čͥr5dzq_M"3N`w[7'#=#c[}˰2w<.@EmJ…ιz#,C"X׼T}Gk ?`ⴴ+69{h$(F(wR=dO+ u&~z@//%UJ[F2MLRЫ_+,j'4LɻE/ ١)M1xA i~,9ܲ[_zFbp76 -ڭB [t ʜ^ы2: #eHK^&b`n a50j8%pոAr檠鵊l#vci]m1 ay+cӑ ›6tiLh8I#uXOPB{!g/=ӭ)qIDϐ|4c*v;%bo^lOB3J3巵*. zZO!M%5lfC\ڒ[nҒ~@ fL( {z"톝.[`yNK@HsRPx.Dq)  @Z1Dx8$ Yt\D\75.;ZlZ8ḄBYkݨDV-ДSGx6 $0(~L@~#`kV=*h9L,/?޹2 LC%4z&=s?S֢j(rrfaKҾ%sa_$Es+8AꈔiNEHy۸HǰxP_'.9clIm}H̓vYH̺K+#JcZPK]*îI+z"iu/ԶC`cC[]ciE]Ia(z = ژAy7K;[XbB!@xy7u~@PI-nr?$ ijsI?`C3R+V-\ 'FcFq r'Rg&rMg"M& 'A1K?)7B.*'F?ALÞKXmW9DÀ31b:u[[ `M.2t$ATlVjr*+ ۏo[RѴXDb,  z7#7m{)Q%ajޓ, zd-MneONPϕ sy4*ۏe㞺'зvMx+ Pҟ~4&v**h

epm(1)

Name

epm - create software packages.

Synopsis

epm [ -a architecture ] [ -f format ] [ -g ] [ -k ] [ -m name ] [ -n[mrs] ] [ -s setup.ext ] [ --depend ] [ --help ] [ --keep-files ] [ --output-dir directory ] [ --setup-image setup.ext ] [ --setup-program /foo/bar/setup ] [ --setup-types setup.types ] [ --uninstall-program /foo/bar/uninst ] [ -v ] [ name=value ... name=value ] product [ listfile ]

Description

epm(1) generates software packages complete with installation, removal, and (if necessary) patch scripts. Unless otherwise specified, the files required for product are read from a file named "product.list".

Options

The following options are recognized:
-a architecture
Specifies the actual architecture for the software. Without this option the generic processor architecture is used ("intel", "sparc", "mips", etc.)
-f bsd
Generate a BSD distribution suitable for installation on a FreeBSD, NetBSD, or OpenBSD system.
-f deb
Generate a Debian distribution suitable for installation on a Debian-based Linux system.
-f native
Generate a native distribution. This uses deb or rpm for Linux, bsd for FreeBSD, NetBSD, and OpenBSD, and macos for macOS. All other operating systems default to the portable format.
-f macos
-f macos-signed
Generate a macOS software package. The macos-signed format uses the signing identity in the EPM_SIGNING_IDENTITY environment variable.
-f portable
Generate a portable distribution based on shell scripts and tar files. The resulting distribution is installed and removed the same way on all operating systems. [default]
-f rpm
-f rpm-signed
Generate a Red Hat Package Manager ("RPM") distribution suitable for installation on an RPM-based Linux system. The rpm-signed format uses the GPG private key you have defined in the ~/.rpmmacros file.
-g
Disable stripping of executable files in the distribution.
-k
Keep intermediate (spec, etc.) files used to create the distribution in the distribution directory.
-m name
Specifies the platform name as a string. The default is to use the auto-generated name from the -n option.
-n[mrs]
Specifies the operating system and machine information that is included in the package name. Distributions normally are named "product-version-system-release-machine.ext" and "product-version-system-release-machine-patch.ext" for patch distributions. The "system-release-machine" information can be customized or eliminated using the appropriate trailing letters. Using -n by itself will remove the "system-release-machine" string from the filename entirely. The letter 'm' includes the architecture (machine). The letter 'r' includes the operating system version (release). The letter 's' includes the operating system name.
-v
Increases the amount of information that is reported. Use multiple v's for more verbose output.
--depend
Lists the dependent (source) files for all files in the package.
--output-dir directory
Specifies the directory for output files. The default directory is based on the operating system, version, and architecture.
-s setup.ext
--setup-image setup.ext
Include the ESP Software Wizard with the specified image file with the distribution. This option is currently only supported by portable distributions.
--setup-program /foo/bar/setup
Specifies the setup executable to use with the distribution. This option is currently only supported by portable distributions.
--setup-types setup.types

Specifies the setup.types file to include with the distribution. This option is currently only supported by portable distributions.

--uninstall-program /foo/bar/uninst
Specifies the uninst executable to use with the distribution. This option is currently only supported by portable distributions.

Environment

The following environment variables are supported by epm:
EPM_SIGNING_IDENTITY
The common name that should be used when signing a package.

List Files

The EPM list file format is now described in the epm.list(5) man page.

See Also

epminstall(1), mkepmlist(1), epm.list(5), setup(1).

Copyright

Copyright © 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright © 2020 by Jim Jagielski, All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/epm.list.5000066400000000000000000000254411521151356300164100ustar00rootroot00000000000000.\" .\" Manual page for the ESP Package Manager (EPM) list file format. .\" .\" Copyright 20202 by Jim Jagielski .\" Copyright 1999-2017 by Michael R Sweet .\" Copyright 1999-2010 by Easy Software Products, all rights reserved. .\" .\" Licensed under the Apache License, Version 2.0 (the "License"); .\" you may not use this file except in compliance with the License. .\" You may obtain a copy of the License at .\" .\" http://www.apache.org/licenses/LICENSE-2.0 .\" .\" Unless required by applicable law or agreed to in writing, software .\" distributed under the License is distributed on an "AS IS" BASIS, .\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. .\" See the License for the specific language governing permissions and .\" limitations under the License. .\" .TH epm.list 5 "ESP Package Manager" "20 November 2020" "Jim Jagielski" .SH NAME epm.list \- epm list file format. .SH DESCRIPTION Each .BR epm (1) product has an associated list file that describes the files to include with the product. Comment lines begin with the "#" character and are ignored. All other non-blank lines must begin with a letter, dollar sign ("$"), or the percent sign ("%") as follows: .TP 5 $name=value Sets the named variable to \fIvalue\fR. \fBNote:\fR Variables set in the list file are overridden by variables specified on the command-line or in the current environment. .TP 5 %arch all Uses following files and directives on all processor architectures. .TP 5 %arch \fIarchitecture [... architecture]\fR Uses following files and directives on the named processor architectures. .TP 5 %arch !\fIarchitecture [... architecture]\fR Uses following files and directives on all but the named processor architectures. .TP 5 %copyright \fIcopyright notice\fR Sets the copyright notice for the file. .TP 5 %description \fIdescription text\fR Adds a line of descriptive text to the distribution. Multiple lines are supported. .TP 5 %format \fIformat [... format]\fR Uses following files and directives only if the distribution format is the same as \fIformat\fR. .TP 5 %format !\fIformat [... format]\fR Uses following files and directives only if the distribution format is not the same as \fIformat\fR. .TP 5 %if \fIvariable\fR [... variable]\fR .TP 5 %if !\fIvariable\fR [... variable]\fR .TP 5 %ifdef \fIvariable\fR [... variable]\fR .TP 5 %ifdef !\fIvariable\fR [... variable]\fR .TP 5 %elseif \fIvariable\fR [... variable]\fR .TP 5 %elseif !\fIvariable\fR [... variable]\fR .TP 5 %elseifdef \fIvariable\fR [... variable]\fR .TP 5 %elseifdef !\fIvariable\fR [... variable]\fR .TP 5 %else .TP 5 %endif Conditionally includes lines in the list file. The \fI%if\fR lines include the lines that follow if the named variables are (not) defined with a value. The \fI%ifdef\fR lines include the lines that follow if the named variables are (not) defined with any value. These conditional lines cannot be nested. .TP 5 %include \fIfilename\fR Includes files listed in \fIfilename\fR. .TP 5 %incompat \fIproduct\fR .TP 5 %incompat \fIfilename\fR Indicates that this product is incompatible with the named product or file. .TP 5 %install \fIscript or program\fR Specifies a script or program to be run after all files are installed. (This has been obsoleted by the %postinstall directive) .TP 5 %license \fIlicense file\fR Specifies the file to display as the software license. .TP 5 %literal(section) \fIline\fR .TP 5 %literal(section) <\fIfile\fR .TP 5 %literal(section) <<\fIstring\fR Specifies format-specific literal data for packaging. Currently only supported for RPM and PKG packages. .TP 5 %packager \fIname of packager\fR Specifies the name of the packager. .TP 5 %patch \fIscript or program\fR Specifies a script or program to be run after all files are patched. (This has been obsoleted by the %postpatch directive) .TP 5 %postinstall \fIscript or program\fR .TP 5 %postinstall <\fIscriptfile\fR .TP 5 %postinstall <<\fIstring\fR Specifies a script or program to be run after all files are installed. .TP 5 %postpatch \fIscript or program\fR .TP 5 %postpatch <\fIscriptfile\fR .TP 5 %postpatch <<\fIstring\fR Specifies a script or program to be run after all files are patched. .TP 5 %postremove \fIscript or program\fR .TP 5 %postremove <\fIscriptfile\fR .TP 5 %postremove <<\fIstring\fR Specifies a script or program to be run after removing files. .TP 5 %preinstall \fIscript or program\fR .TP 5 %preinstall <\fIscriptfile\fR .TP 5 %preinstall <<\fIstring\fR Specifies a script or program to be run before all files are installed. .TP 5 %prepatch \fIscript or program\fR .TP 5 %prepatch <\fIscriptfile\fR .TP 5 %prepatch <<\fIstring\fR Specifies a script or program to be run before all files are patched. .TP 5 %preremove \fIscript or program\fR .TP 5 %preremove <\fIscriptfile\fR .TP 5 %preremove <<\fIstring\fR Specifies a script or program to be run before removing files. .TP 5 %product \fIproduct name\fR Specifies the product name. .TP 5 %readme \fIreadme file\fR Specifies a README file to be included in the distribution. .TP 5 %remove \fIscript or program\fR Specifies a script or program to be run before removing files. (This has been obsoleted by the %preremove directive) .TP 5 %release \fInumber\fR Specifies the release or build number of a product (defaults to 0). .TP 5 %replaces \fIproduct\fR Indicates that this product replaces the named product. .TP 5 %requires \fIproduct\fR .TP 5 %requires \fIfilename\fR Indicates that this product requires the named product or file. .TP 5 %subpackage .TP 5 %subpackage \fIname\fR Selects the named subpackage; if no name is given, selects the main (parent) package. .TP 5 %vendor \fIvendor or author name\fR Specifies the vendor or author of the product. .TP 5 %version \fIversion number\fR Specifies the version number of the product. .TP 5 %system \fIsystem[-release] [... system[-release]]\fR Specifies that the following files should only be used for the specified operating systems and releases. .TP 5 %system !\fIsystem[-release] [... system[-release]]\fR Specifies that the following files should not be used for the specified operating systems and releases. .TP 5 %system all Specifies that the following files are applicable to all operating systems. .TP 5 c \fImode user group destination source\fR .TP 5 C \fImode user group destination source\fR Specifies a configuration file for installation. The second form specifies that the file has changed or is new and should be included as part of a patch. Configuration files are installed as "destination.N" if the destination already exists. .TP 5 d \fImode user group destination -\fR .TP 5 D \fImode user group destination -\fR Specifies a directory should be created when installing the software. The second form specifies that the directory is new and should be included as part of a patch. .TP 5 f \fImode user group destination source [nostrip()]\fR .TP 5 F \fImode user group destination source [nostrip()]\fR Specifies a file for installation. The second form specifies that the file has changed or is new and should be included as part of a patch. If the "nostrip()" option is included, the file will not be stripped before the installation is created. .TP 5 f \fImode user group destination source/pattern [nostrip()]\fR .TP 5 F \fImode user group destination source/pattern [nostrip()]\fR Specifies one or more files for installation using shell wildcard patterns. The second form specifies that the files have changed or are new and should be included as part of a patch. If the "nostrip()" option is included, the file will not be stripped before the installation is created. .TP 5 i \fImode user group service-name source ["options"]\fR .TP 5 I \fImode user group service-name source ["options"]\fR Specifies an initialization script for installation. The second form specifies that the file has changed or is new and should be included as part of a patch. Initialization scripts are stored in /etc/software/init.d and are linked to the appropriate system-specific directories for run levels 0, 2, 3, and 5. Initialization scripts \fBmust\fR accept at least the \fIstart\fR and \fIstop\fR commands. The optional \fIoptions\fR following the source filename can be any of the following: .TP 10 order(\fIstring\fR) Specifies the relative startup order compared to the required and used system functions. Supported values include First, Early, None, Late, and Last (macOS only). .TP 10 provides(\fIname(s)\fR) Specifies names of system functions that are provided by this startup item (macOS only). .TP 10 requires(\fIname(s)\fR) Specifies names of system functions that are required by this startup item (macOS only). .TP 10 runlevel(\fIlevels\fR) Specifies the run levels to use. .TP 10 start(\fInumber\fR) Specifies the starting sequence number from 00 to 99. .TP 10 stop(\fInumber\fR) Specifies the ending sequence number from 00 to 99. .TP 10 uses(\fIname(s)\fR) Specifies names of system functions that are used by this startup item (macOS only). .TP 5 l \fImode user group destination source\fR .TP 5 L \fImode user group destination source\fR Specifies a symbolic link in the installation. The second form specifies that the link has changed or is new and should be included as part of a patch. .TP 5 R \fImode user group destination\fR Specifies that the file is to be removed upon patching. The \fIuser\fR and \fIgroup\fR fields are ignored. The \fImode\fR field is only used to determine if a check should be made for a previous version of the file. .SH LIST VARIABLES \fIEPM\fR maintains a list of variables and their values which can be used to substitute values in the list file. These variables are imported from the current environment and taken from the command-line and list file as provided. Substitutions occur when the variable name is referenced with the dollar sign ($): .nf .br %postinstall < epminstall(1)

epminstall(1)

Name

epminstall - add a directory, file, or symlink to a list file.

Synopsis

epminstall [ options ] file1file2...fileNdirectory
epminstall [ options ] file1file2
epminstall [ options ] -d directory1directory2...directoryN

Description

epminstall adds or replaces a directory, file, or symlink in a list file. The default list file is "epm.list" and can be overridden using the EPMLIST environment variable or the --list-file option.

Entries are either added to the end of the list file or replaced in-line. Comments, directives, and variable declarations in the list file are preserved.

Options

epminstall recognizes the standard Berkeley install(8) command options:
-b
Make a backup of existing files (ignored, default for epm.)
-c
BSD old compatibility mode (ignored.)
-g group
Set the group owner of the file or directory to group. The default group is "sys".
-m mode
Set the permissions of the file or directory to mode. The default permissions are 0755 for directories and executable files and 0644 for non-executable files.
-o owner
Set the owner of the file or directory to owner. The default owner is "root".
-s
Strip the files (ignored, default for epm.)
--list-file filename.list
Specify the list file to update.

See Also

epm(1), mkepmlist(1), epm.list(5).

Copyright

Copyright © 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright © 2020 by Jim Jagielski, All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/epminstall.man000066400000000000000000000057501521151356300174350ustar00rootroot00000000000000.\" .\" Manual page for the ESP Package Manager (EPM) install program. .\" .\" Copyright 2020 by Jim Jagielski .\" Copyright 1999-2017 by Michael R Sweet .\" Copyright 1999-2007 by Easy Software Products, all rights reserved. .\" .\" Licensed under the Apache License, Version 2.0 (the "License"); .\" you may not use this file except in compliance with the License. .\" You may obtain a copy of the License at .\" .\" http://www.apache.org/licenses/LICENSE-2.0 .\" .\" Unless required by applicable law or agreed to in writing, software .\" distributed under the License is distributed on an "AS IS" BASIS, .\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. .\" See the License for the specific language governing permissions and .\" limitations under the License. .\" .TH epminstall 1 "ESP Package Manager" "20 November 2020" "Jim Jagielski" .SH NAME epminstall \- add a directory, file, or symlink to a list file. .SH SYNOPSIS .B epminstall [ .I options ] .I file1 file2 ... fileN directory .br .B epminstall [ .I options ] .I file1 file2 .br .B epminstall [ .I options ] .B \-d .I directory1 directory2 ... directoryN .SH DESCRIPTION .B epminstall adds or replaces a directory, file, or symlink in a list file. The default list file is "epm.list" and can be overridden using the \fIEPMLIST\fR environment variable or the \fI--list-file\fR option. .LP Entries are either added to the end of the list file or replaced in-line. Comments, directives, and variable declarations in the list file are preserved. .SH OPTIONS .B epminstall recognizes the standard Berkeley .BR install (8) command options: .TP 5 .B \-b Make a backup of existing files (ignored, default for \fBepm\fR.) .TP 5 .B \-c BSD old compatibility mode (ignored.) .TP 5 \fB\-g \fIgroup\fR Set the group owner of the file or directory to \fIgroup\fR. The default group is "sys". .TP 5 \fB\-m \fImode\fR Set the permissions of the file or directory to \fImode\fR. The default permissions are 0755 for directories and executable files and 0644 for non-executable files. .TP 5 \fB\-o \fIowner\fR Set the owner of the file or directory to \fIowner\fR. The default owner is "root". .TP 5 .B \-s Strip the files (ignored, default for \fBepm\fR.) .TP 5 \fB\-\-list\-file \fIfilename.list\fR Specify the list file to update. .SH SEE ALSO .BR epm(1), .BR mkepmlist(1), .BR epm.list (5). .SH COPYRIGHT Copyright \[co] 1999-2017 by Michael R Sweet, All Rights Reserved. Copyright \[co] 2020 by Jim Jagielski, All Rights Reserved. .LP Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at .LP http://www.apache.org/licenses/LICENSE-2.0 .LP Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/gradient.gif000066400000000000000000000014711521151356300170500ustar00rootroot00000000000000GIF87ad |||yyywwwtttqqqnnnkkkhhhfffccc```]]]ZZZWWWTTTRRROOOLLLIIIFFFCCCAAA>>>;;;888555333000---***'''$$$!!! ,d @  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZނČ!S4iԬa歡p%ZQI.eSQNZUYnWaŎ%[YiծeDqYDqGw㉤WJ}+s M7dؓO*ènc;B#id>Z)pfAs.8.Ȯ;F3/>^IA wv:(_c={XN>:wջ3а-4mbmCjXf6XC>R…<.x1ooP5TnG+]Yj;jimjag-epm-84910c6/doc/mantohtml.c000066400000000000000000000571411521151356300167400ustar00rootroot00000000000000/* * Man page to HTML conversion program. * * Copyright © 2015-2020 by Michael R Sweet * Copyright © 2007-2010, 2014 by Apple Inc. * Copyright © 2004-2006 by Easy Software Products. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright * law. Distribution and use rights are outlined in the file "LICENSE.txt" * which should have been included with this file. If this file is * file is missing or damaged, see the license at "http://www.cups.org/". */ /* * Include necessary headers. */ #include #include #include #include #include /* * Local globals... */ static const char /* Start/end tags for fonts */ * const start_fonts[] = { "", "", "" }, * const end_fonts[] = { "", "", "" }; /* * Local functions... */ static void html_alternate(const char *s, const char *first, const char *second, FILE *fp); static void html_fputs(const char *s, int *font, FILE *fp); static void html_putc(int ch, FILE *fp); static void strmove(char *d, const char *s); /* * 'main()' - Convert a man page to HTML. */ int /* O - Exit status */ main(int argc, /* I - Number of command-line args */ char *argv[]) /* I - Command-line arguments */ { FILE *infile, /* Input file */ *outfile; /* Output file */ char line[1024], /* Line from file */ *lineptr, /* Pointer into line */ anchor[1024], /* Anchor */ name[1024], /* Man page name */ ddpost[256]; /* Tagged list post markup */ int section = -1, /* Man page section */ pre = 0, /* Preformatted */ font = 0, /* Current font */ linenum = 0; /* Current line number */ float list_indent = 0.0f, /* Current list indentation */ nested_indent = 0.0f; /* Nested list indentation, if any */ const char *list = NULL, /* Current list, if any */ *nested = NULL; /* Nested list, if any */ const char *post = NULL; /* Text to add after the current line */ /* * Check arguments... */ if (argc > 3) { fputs("Usage: mantohtml [filename.man [filename.html]]\n", stderr); return (1); } /* * Open files as needed... */ if (argc > 1) { if ((infile = fopen(argv[1], "r")) == NULL) { perror(argv[1]); return (1); } } else infile = stdin; if (argc > 2) { if ((outfile = fopen(argv[2], "w")) == NULL) { perror(argv[2]); fclose(infile); return (1); } } else outfile = stdout; /* * Read from input and write the output... */ fputs("\n" "\n" "\n" "\n" "\t\n", outfile); anchor[0] = '\0'; while (fgets(line, sizeof(line), infile)) { size_t linelen = strlen(line); /* Length of line */ if (linelen > 0 && line[linelen - 1] == '\n') line[linelen - 1] = '\0'; linenum ++; if (line[0] == '.') { /* * Strip leading whitespace... */ while (line[1] == ' ' || line[1] == '\t') strmove(line + 1, line + 2); /* * Process man page commands... */ if (!strncmp(line, ".TH ", 4) && section < 0) { /* * Grab man page title... */ sscanf(line + 4, "%s%d", name, §ion); fprintf(outfile, "\t%s(%d)\n" "\n" "\n" "

%s(%d)

\n" "%s", name, section, name, name, section, start_fonts[font]); } else if (section < 0) continue; else if (!strncmp(line, ".SH ", 4) || !strncmp(line, ".SS ", 4)) { /* * Grab heading... */ int first = 1; fputs(end_fonts[font], outfile); font = 0; if (list) { fprintf(outfile, "\n", list); list = NULL; } if (line[2] == 'H') fputs("

", outfile); for (lineptr = line + 4; *lineptr; lineptr ++) { if (*lineptr == '\"') continue; else if (*lineptr == ' ') { html_putc(' ', outfile); first = 1; } else { if (first) html_putc(*lineptr, outfile); else html_putc(tolower(*lineptr & 255), outfile); first = 0; } } if (line[2] == 'H') fputs("

\n", outfile); else fputs("\n", outfile); } else if (!strncmp(line, ".B ", 3)) { /* * Grab bold text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 3, "b", "b", outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strncmp(line, ".I ", 3)) { /* * Grab italic text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 3, "i", "i", outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strncmp(line, ".BI ", 4)) { /* * Alternating bold and italic text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 4, "b", "i", outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strncmp(line, ".BR ", 4)) { /* * Alternating bold and roman (plain) text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 4, "b", NULL, outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strncmp(line, ".IB ", 4)) { /* * Alternating italic and bold text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 4, "i", "b", outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strncmp(line, ".IR ", 4)) { /* * Alternating italic and roman (plain) text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 4, "i", NULL, outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strncmp(line, ".RB ", 4)) { /* * Alternating roman (plain) and bold text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 4, NULL, "b", outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strncmp(line, ".RI ", 4)) { /* * Alternating roman (plain) and italic text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 4, NULL, "i", outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strncmp(line, ".SB ", 4)) { /* * Alternating small and bold text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 4, "small", "b", outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strncmp(line, ".SM ", 4)) { /* * Small text... */ fputs(end_fonts[font], outfile); font = 0; if (anchor[0]) fprintf(outfile, "", anchor); html_alternate(line + 4, "small", "small", outfile); if (anchor[0]) { fputs("", outfile); anchor[0] = '\0'; } if (post) { fputs(post, outfile); post = NULL; } } else if (!strcmp(line, ".LP") || !strcmp(line, ".PP") || !strcmp(line, ".P")) { /* * New paragraph... */ fputs(end_fonts[font], outfile); font = 0; if (list) { fprintf(outfile, "\n", list); list = NULL; } fputs("

", outfile); if (anchor[0]) { fprintf(outfile, "", anchor); anchor[0] = '\0'; } } else if (!strcmp(line, ".RS") || !strncmp(line, ".RS ", 4)) { /* * Indent... */ float amount = 3.0; /* Indentation */ if (line[3]) amount = atof(line + 4); fputs(end_fonts[font], outfile); font = 0; if (list) { nested = list; list = NULL; nested_indent = list_indent; list_indent = 0.0f; } fprintf(outfile, "

\n", amount - nested_indent); } else if (!strcmp(line, ".RE")) { /* * Unindent... */ fputs(end_fonts[font], outfile); font = 0; fputs("
\n", outfile); if (nested) { list = nested; nested = NULL; list_indent = nested_indent; nested_indent = 0.0f; } } else if (!strcmp(line, ".HP") || !strncmp(line, ".HP ", 4)) { /* * Hanging paragraph... * * .HP i */ float amount = 3.0; /* Indentation */ if (line[3]) amount = atof(line + 4); fputs(end_fonts[font], outfile); font = 0; if (list) { fprintf(outfile, "\n", list); list = NULL; } fprintf(outfile, "

", amount, -amount); if (anchor[0]) { fprintf(outfile, "", anchor); anchor[0] = '\0'; } if (line[1] == 'T') post = "
\n"; } else if (!strcmp(line, ".TP") || !strncmp(line, ".TP ", 4)) { /* * Tagged list... * * .TP i */ float amount = 3.0; /* Indentation */ if (line[3]) amount = atof(line + 4); fputs(end_fonts[font], outfile); font = 0; if (list && strcmp(list, "dl")) { fprintf(outfile, "\n", list); list = NULL; } if (!list) { fputs("

\n", outfile); list = "dl"; list_indent = amount; } fputs("
", outfile); snprintf(ddpost, sizeof(ddpost), "
", amount); post = ddpost; if (anchor[0]) { fprintf(outfile, "", anchor); anchor[0] = '\0'; } } else if (!strncmp(line, ".IP ", 4)) { /* * Indented paragraph... * * .IP x i */ float amount = 3.0; /* Indentation */ const char *newlist = NULL; /* New list style */ const char *newtype = NULL; /* New list numbering type */ fputs(end_fonts[font], outfile); font = 0; lineptr = line + 4; while (isspace(*lineptr & 255)) lineptr ++; if (!strncmp(lineptr, "\\(bu", 4) || !strncmp(lineptr, "\\(em", 4)) { /* * Bullet list... */ newlist = "ul"; } else if (isdigit(*lineptr & 255)) { /* * Numbered list... */ newlist = "ol"; } else if (islower(*lineptr & 255)) { /* * Lowercase alpha list... */ newlist = "ol"; newtype = "a"; } else if (isupper(*lineptr & 255)) { /* * Lowercase alpha list... */ newlist = "ol"; newtype = "A"; } while (!isspace(*lineptr & 255)) lineptr ++; while (isspace(*lineptr & 255)) lineptr ++; if (isdigit(*lineptr & 255)) amount = atof(lineptr); if (newlist && list && strcmp(newlist, list)) { fprintf(outfile, "\n", list); list = NULL; } if (newlist && !list) { if (newtype) fprintf(outfile, "<%s type=\"%s\">\n", newlist, newtype); else fprintf(outfile, "<%s>\n", newlist); list = newlist; } if (list) fprintf(outfile, "
  • ", amount); else fprintf(outfile, "

    ", amount); if (anchor[0]) { fprintf(outfile, "", anchor); anchor[0] = '\0'; } } else if (!strncmp(line, ".br", 3)) { /* * Grab line break... */ fputs("
    \n", outfile); } else if (!strncmp(line, ".de ", 4)) { /* * Define macro - ignore... */ while (fgets(line, sizeof(line), infile)) { linenum ++; if (!strncmp(line, "..", 2)) break; } } else if (!strncmp(line, ".ds ", 4) || !strncmp(line, ".rm ", 4) || !strncmp(line, ".tr ", 4) || !strncmp(line, ".hy ", 4) || !strncmp(line, ".IX ", 4) || !strncmp(line, ".PD", 3) || !strncmp(line, ".Sp", 3)) { /* * Ignore unused commands... */ } else if (!strncmp(line, ".Vb", 3) || !strncmp(line, ".nf", 3) || !strncmp(line, ".EX", 3)) { /* * Start preformatted... */ fputs(end_fonts[font], outfile); font = 0; // if (list) // { // fprintf(outfile, "\n", list); // list = NULL; // } pre = 1; fputs("

    \n", outfile);
          }
          else if (!strncmp(line, ".Ve", 3) || !strncmp(line, ".fi", 3) || !strncmp(line, ".EE", 3))
          {
           /*
            * End preformatted...
    	*/
    
    	fputs(end_fonts[font], outfile);
    	font = 0;
    
            if (pre)
    	{
              pre = 0;
    	  fputs("
    \n", outfile); } } else if (!strncmp(line, ".\\}", 3)) { /* * Ignore close block... */ } else if (!strncmp(line, ".ie", 3) || !strncmp(line, ".if", 3) || !strncmp(line, ".el", 3)) { /* * If/else - ignore... */ if (strchr(line, '{') != NULL) { /* * Skip whole block... */ while (fgets(line, sizeof(line), infile)) { linenum ++; if (strchr(line, '}') != NULL) break; } } } #if 0 else if (!strncmp(line, ". ", 4)) { /* * Grab ... */ } #endif /* 0 */ else if (!strncmp(line, ".\\\"#", 4)) { /* * Anchor for HTML output... */ strncpy(anchor, line + 4, sizeof(anchor) - 1); anchor[sizeof(anchor) - 1] = '\0'; } else if (strncmp(line, ".\\\"", 3)) { /* * Unknown... */ if ((lineptr = strchr(line, ' ')) != NULL) *lineptr = '\0'; else if ((lineptr = strchr(line, '\n')) != NULL) *lineptr = '\0'; fprintf(stderr, "mantohtml: Unknown man page command \'%s\' on line %d.\n", line, linenum); } /* * Skip continuation lines... */ lineptr = line + strlen(line) - 1; if (lineptr >= line && *lineptr == '\\') { while (fgets(line, sizeof(line), infile)) { linenum ++; lineptr = line + strlen(line) - 2; if (lineptr < line || *lineptr != '\\') break; } } } else { /* * Process man page text... */ html_fputs(line, &font, outfile); putc('\n', outfile); if (post) { fputs(post, outfile); post = NULL; } } } fprintf(outfile, "%s\n", end_fonts[font]); font = 0; if (list) { fprintf(outfile, "\n", list); list = NULL; } fputs("\n" "\n", outfile); /* * Close files... */ if (infile != stdin) fclose(infile); if (outfile != stdout) fclose(outfile); /* * Return with no errors... */ return (0); } /* * 'html_alternate()' - Alternate words between two styles of text. */ static void html_alternate(const char *s, /* I - String */ const char *first, /* I - First style or NULL */ const char *second, /* I - Second style of NULL */ FILE *fp) /* I - File */ { int i = 0; /* Which style */ int quote = 0; /* Saw quote? */ int dolinks, /* Do hyperlinks to other man pages? */ link = 0; /* Doing a link now? */ /* * Skip leading whitespace... */ while (isspace(*s & 255)) s ++; dolinks = first && !strcmp(first, "b") && !second; while (*s) { if (!i && dolinks) { /* * See if we need to make a link to a man page... */ const char *end; /* End of current word */ const char *next; /* Start of next word */ for (end = s; *end && !isspace(*end & 255); end ++); for (next = end; isspace(*next & 255); next ++); if (isalnum(*s & 255) && *next == '(') { /* * See if the man file is available locally... */ char name[1024], /* Name */ manfile[1024], /* Man page filename */ manurl[1024]; /* Man page URL */ strncpy(name, s, sizeof(name) - 1); name[sizeof(name) - 1] = '\0'; if ((size_t)(end - s) < sizeof(name)) name[end - s] = '\0'; snprintf(manfile, sizeof(manfile), "%s.man", name); snprintf(manurl, sizeof(manurl), "%s.html#%s", name, name); if (!access(manfile, 0)) { /* * Local man page, do a link... */ fprintf(fp, "", manurl); link = 1; } } } if (!i && first) fprintf(fp, "<%s>", first); else if (i && second) fprintf(fp, "<%s>", second); while ((!isspace(*s & 255) || quote) && *s) { if (*s == '\"') quote = !quote; else if (*s == '\\' && s[1]) { s ++; html_putc(*s++, fp); } else html_putc(*s++, fp); } if (!i && first) fprintf(fp, "", first); else if (i && second) fprintf(fp, "", second); if (i && link) { fputs("", fp); link = 0; } i = 1 - i; /* * Skip trailing whitespace... */ while (isspace(*s & 255)) s ++; } putc('\n', fp); } /* * 'html_fputs()' - Output a string, quoting as needed HTML entities. */ static void html_fputs(const char *s, /* I - String */ int *font, /* IO - Font */ FILE *fp) /* I - File */ { while (*s) { if (*s == '\\') { s ++; if (!*s) break; if (*s == 'f') { int newfont; /* New font */ s ++; if (!*s) break; if (!font) { s ++; continue; } switch (*s++) { case 'R' : case 'P' : newfont = 0; break; case 'b' : case 'B' : newfont = 1; break; case 'i' : case 'I' : newfont = 2; break; default : fprintf(stderr, "mantohtml: Unknown font \"\\f%c\" ignored.\n", s[-1]); newfont = *font; break; } if (newfont != *font) { fputs(end_fonts[*font], fp); *font = newfont; fputs(start_fonts[*font], fp); } } else if (*s == '*') { /* * Substitute macro... */ s ++; if (!*s) break; switch (*s++) { case 'R' : fputs("®", fp); break; case '(' : if (!strncmp(s, "lq", 2)) fputs("“", fp); else if (!strncmp(s, "rq", 2)) fputs("”", fp); else if (!strncmp(s, "Tm", 2)) fputs("TM", fp); else fprintf(stderr, "mantohtml: Unknown macro \"\\*(%2s\" ignored.\n", s); if (*s) s ++; if (*s) s ++; break; default : fprintf(stderr, "mantohtml: Unknown macro \"\\*%c\" ignored.\n", s[-1]); break; } } else if (*s == '(') { if (!strncmp(s, "(em", 3)) { fputs("—", fp); s += 3; } else if (!strncmp(s, "(en", 3)) { fputs("–", fp); s += 3; } else { putc(*s, fp); s ++; } } else if (*s == '[') { /* * Substitute escaped character... */ s ++; if (!strncmp(s, "co]", 3)) fputs("©", fp); else if (!strncmp(s, "de]", 3)) fputs("°", fp); else if (!strncmp(s, "rg]", 3)) fputs("®", fp); else if (!strncmp(s, "tm]", 3)) fputs("TM", fp); if (*s) s ++; if (*s) s ++; if (*s) s ++; } else if (isdigit(s[0]) && isdigit(s[1]) && isdigit(s[2])) { fprintf(fp, "&#%d;", ((s[0] - '0') * 8 + s[1] - '0') * 8 + s[2] - '0'); s += 3; } else { if (*s != '\\' && *s == '\"' && *s == '\'' && *s == '-') fprintf(stderr, "mantohtml: Unrecognized escape \"\\%c\" ignored.\n", *s); html_putc(*s++, fp); } } else if (!strncmp(s, "http://", 7) || !strncmp(s, "https://", 8) || !strncmp(s, "ftp://", 6)) { /* * Embed URL... */ char temp[1024]; /* Temporary string */ const char *end = s + 6; /* End of URL */ while (*end && !isspace(*end & 255)) end ++; if (end[-1] == ',' || end[-1] == '.' || end[-1] == ')') end --; strncpy(temp, s, sizeof(temp) - 1); temp[sizeof(temp) - 1] = '\0'; if ((size_t)(end -s) < sizeof(temp)) temp[end - s] = '\0'; fprintf(fp, "%s", temp, temp); s = end; } else html_putc(*s++ & 255, fp); } } /* * 'html_putc()' - Put a single character, using entities as needed. */ static void html_putc(int ch, /* I - Character */ FILE *fp) /* I - File */ { if (ch == '&') fputs("&", fp); else if (ch == '<') fputs("<", fp); else putc(ch, fp); } /* * 'strmove()' - Move characters within a string. */ static void strmove(char *d, /* I - Destination */ const char *s) /* I - Source */ { while (*s) *d++ = *s++; *d = '\0'; } jimjag-epm-84910c6/doc/mkepmlist.1000066400000000000000000000050741521151356300166560ustar00rootroot00000000000000.\" .\" Manual page for the ESP Package Manager (EPM). .\" .\" Copyright 2020 by Jim Jagielski .\" Copyright 1999-2020 by Michael R Sweet .\" Copyright 1999-2007 by Easy Software Products, all rights reserved. .\" .\" Licensed under the Apache License, Version 2.0 (the "License"); .\" you may not use this file except in compliance with the License. .\" You may obtain a copy of the License at .\" .\" http://www.apache.org/licenses/LICENSE-2.0 .\" .\" Unless required by applicable law or agreed to in writing, software .\" distributed under the License is distributed on an "AS IS" BASIS, .\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. .\" See the License for the specific language governing permissions and .\" limitations under the License. .\" .TH mkepmlist 1 "ESP Package Manager" "20 November 2020" "Jim Jagielski" .SH NAME mkepmlist \- make an epm list file from a directory. .SH SYNOPSIS .B mkepmlist [ .B \-g .I group ] [ .B \-u .I user ] [ .B \-\-prefix .I directory ] .I directory [ ... .I directory ] .SH DESCRIPTION .B mkepmlist (1) recursively generates file list entries for files, links, and directories. The file list is send to the standard output. .SH OPTIONS .B mkepmlist supports the following options: .TP 5 \fB\-g \fIgroup\fR Overrides the group ownership of the files in the specified directories with the specified group name. .TP 5 \fB\-u \fIuser\fR Overrides the user ownership of the files in the specified directories with the specified user name. .TP 5 \fB\-\-prefix \fIdirectory\fR Adds the specified directory to the destination path. For example, if you installed files to "/opt/foo" and wanted to build a distribution that installed the files in "/usr/local", the following command would generate a file list that is installed in "/usr/local": .nf .br mkepmlist \-\-prefix=/usr/local /opt/foo >foo.list .fi .SH SEE ALSO .BR epm (1), .BR epminstall (1), .BR epm.list (5). .SH COPYRIGHT Copyright \[co] 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright \[co] 2020 by Jim Jagielski, All Rights Reserved. .LP Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at .LP http://www.apache.org/licenses/LICENSE-2.0 .LP Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/mkepmlist.html000066400000000000000000000050641521151356300174610ustar00rootroot00000000000000 mkepmlist(1)

    mkepmlist(1)

    Name

    mkepmlist - make an epm list file from a directory.

    Synopsis

    mkepmlist [ -g group ] [ -u user ] [ --prefix directory ] directory [ ... directory ]

    Description

    mkepmlist(1) recursively generates file list entries for files, links, and directories. The file list is send to the standard output.

    Options

    mkepmlist supports the following options:
    -g group
    Overrides the group ownership of the files in the specified directories with the specified group name.
    -u user
    Overrides the user ownership of the files in the specified directories with the specified user name.
    --prefix directory
    Adds the specified directory to the destination path. For example, if you installed files to "/opt/foo" and wanted to build a distribution that installed the files in "/usr/local", the following command would generate a file list that is installed in "/usr/local":

    mkepmlist --prefix=/usr/local /opt/foo >foo.list

    See Also

    epm(1), epminstall(1), epm.list(5).

    Copyright

    Copyright © 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright © 2020 by Jim Jagielski, All Rights Reserved.

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/mkepmlist.man000066400000000000000000000050741521151356300172710ustar00rootroot00000000000000.\" .\" Manual page for the ESP Package Manager (EPM). .\" .\" Copyright 2020 by Jim Jagielski .\" Copyright 1999-2017 by Michael R Sweet .\" Copyright 1999-2007 by Easy Software Products, all rights reserved. .\" .\" Licensed under the Apache License, Version 2.0 (the "License"); .\" you may not use this file except in compliance with the License. .\" You may obtain a copy of the License at .\" .\" http://www.apache.org/licenses/LICENSE-2.0 .\" .\" Unless required by applicable law or agreed to in writing, software .\" distributed under the License is distributed on an "AS IS" BASIS, .\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. .\" See the License for the specific language governing permissions and .\" limitations under the License. .\" .TH mkepmlist 1 "ESP Package Manager" "20 November 2020" "Jim Jagielski" .SH NAME mkepmlist \- make an epm list file from a directory. .SH SYNOPSIS .B mkepmlist [ .B \-g .I group ] [ .B \-u .I user ] [ .B \-\-prefix .I directory ] .I directory [ ... .I directory ] .SH DESCRIPTION .B mkepmlist (1) recursively generates file list entries for files, links, and directories. The file list is send to the standard output. .SH OPTIONS .B mkepmlist supports the following options: .TP 5 \fB\-g \fIgroup\fR Overrides the group ownership of the files in the specified directories with the specified group name. .TP 5 \fB\-u \fIuser\fR Overrides the user ownership of the files in the specified directories with the specified user name. .TP 5 \fB\-\-prefix \fIdirectory\fR Adds the specified directory to the destination path. For example, if you installed files to "/opt/foo" and wanted to build a distribution that installed the files in "/usr/local", the following command would generate a file list that is installed in "/usr/local": .nf .br mkepmlist \-\-prefix=/usr/local /opt/foo >foo.list .fi .SH SEE ALSO .BR epm (1), .BR epminstall (1), .BR epm.list (5). .SH COPYRIGHT Copyright \[co] 1999-2017 by Michael R Sweet, All Rights Reserved. Copyright \[co] 2020 by Jim Jagielski, All Rights Reserved. .LP Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at .LP http://www.apache.org/licenses/LICENSE-2.0 .LP Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/preface.html000066400000000000000000000113451521151356300170600ustar00rootroot00000000000000 Software Distribution with ESP Package Manager

    Preface

    This book provides a tutorial and reference for the ESP Package Manager ("EPM") software, version 5.0, and is organized into the following chapters and appendices:

    Notation Conventions

    The names of commands; the first mention of a command or function in a chapter is followed by a manual page section number:
     
    epm
    epm(1)
     
    File and directory names:
     
    /var
    /usr/bin/epm
     
    Screen output:
     
    Request ID is Printer-123
     
    Literal user input; special keys like ENTER are in ALL CAPS:
     
    lp -d printer filename ENTER
     
    Long commands are broken up on multiple lines using the backslash (\) character; enter the commands without the backslash:
     
    foo start of long command \
        end of long command ENTER

     
    Numbers in the text are written using the period (.) to indicate the decimal point:
     
    12.3
     

    Abbreviations

    The following abbreviations are used throughout this book:

    kb
    Kilobytes, or 1024 bytes
     
    Mb
    Megabytes, or 1048576 bytes
     
    Gb
    Gigabytes, or 1073741824 bytes
     

    Other References

    https://jimjag.github.io/epm/
    The official home page of the ESP Package Manager software.
     
    http://www.debian.org/devel/
    Debian Developers' Corner
     
    http://techpubs.sgi.com/
    IRIX Documentation On-Line
     
    http://www.rpm.org/
    The Red Hat Package Manager home page.
     
    http://docs.sun.com/
    Solaris Documentation On-Line
     

    Help Me Improve This Book!

    We've done my best to ensure that this book is both accurate and clear. If you find errors or have a suggestion for improving the book, please file a bug at:

    https://github.com/jimjag/epm/issues
    

    Acknowledgments

    We'd like to thank the following people for their contributions to EPM:

    • Gareth Armstrong: HP-UX and %release enhancements
    • Nicolas Bazin: Openserver and Unixware support
    • Richard Begg: HP-UX fixes
    • Dirk Datzert: Bug fixes
    • Alan Eldridge: Makefile and RPM fixes
    • Vicentini Emanuele: IRIX enhancements
    • Jeff Harrell: IRIX enhancements
    • Lars Kellogg-Stedman: Debian fixes
    • Jochen Kmietsch: mkepmlist fixes
    • Aneesh Kumar K.V.: Tru64 setld package support
    • David Lee: Build system improvements
    • Scott Leerssen: mkepmlist fixes, BSD package support
    • Jeff Licquia: Debian support/enhancements
    • David Maltz: AIX fixes
    • Joel Nordell: SCO fixes
    • Rok Papez: Bug fixes and absolute output directory support
    • Holger Paschke: Documentation fixes
    • Phil Reynolds: OpenBSD fixes
    • Ganesan Rajagopal: Solaris fixes
    • Uwe Rsche: AIX support
    • Ralf Rohm: Solaris fixes
    • Jochen Schaeuble: epminstall fixes
    • Jason Shiffer: HP-UX fixes
    • Andrea Suatoni: IRIX fixes
    • Andy Walter: QNX support
    • Geoffrey Wossum: --output-directory option
    • Jean Yves: BSD package and mkepmlist fixes
    jimjag-epm-84910c6/doc/setup.1000066400000000000000000000044661521151356300160150ustar00rootroot00000000000000.\" .\" Manual page for the ESP Package Manager (EPM) setup GUI. .\" .\" Copyright © 2020 by Jim Jagielski .\" Copyright © 1999-2020 by Michael R Sweet .\" Copyright © 1999-2007 by Easy Software Products, all rights reserved. .\" .\" Licensed under the Apache License, Version 2.0 (the "License"); .\" you may not use this file except in compliance with the License. .\" You may obtain a copy of the License at .\" .\" http://www.apache.org/licenses/LICENSE-2.0 .\" .\" Unless required by applicable law or agreed to in writing, software .\" distributed under the License is distributed on an "AS IS" BASIS, .\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. .\" See the License for the specific language governing permissions and .\" limitations under the License. .\" .TH setup 1 "ESP Package Manager" "20 November 2020" "Jim Jagielski" .SH NAME setup \- graphical setup program for the esp package manager .SH SYNOPSIS .B setup [ .I directory ] .SH DESCRIPTION .BR setup (1) provides a graphical installation interface for EPM-generated portable installation packages. It presents a step-by-step dialog for collecting a list of packages to install and accepting any license agreements for those packages. .LP .B setup searches for products in the current directory or the directory specified on the command-line. .SH INSTALLATION TYPES The default type of installation is "custom". That is, users will be able to select from the list of products and install them. .LP .B setup also supports other types of installations. The \fIsetup.types\fR file, if present, defines the other installation types. .SH SEE ALSO .BR epm (1), .BR setup.types (5). .SH COPYRIGHT Copyright \[co] 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright \[co] 2020 by Jim Jagielski, All Rights Reserved. .LP Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at .LP http://www.apache.org/licenses/LICENSE-2.0 .LP Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/setup.html000066400000000000000000000041601521151356300166100ustar00rootroot00000000000000 setup(1)

    setup(1)

    Name

    setup - graphical setup program for the esp package manager

    Synopsis

    setup [ directory ]

    Description

    setup(1) provides a graphical installation interface for EPM-generated portable installation packages. It presents a step-by-step dialog for collecting a list of packages to install and accepting any license agreements for those packages.

    setup searches for products in the current directory or the directory specified on the command-line.

    Installation Types

    The default type of installation is "custom". That is, users will be able to select from the list of products and install them.

    setup also supports other types of installations. The setup.types file, if present, defines the other installation types.

    See Also

    epm(1), setup.types(5).

    Copyright

    Copyright © 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright © 2020 by Jim Jagielski, All Rights Reserved.

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/setup.man000066400000000000000000000044531521151356300164240ustar00rootroot00000000000000.\" .\" Manual page for the ESP Package Manager (EPM) setup GUI. .\" .\" Copyright 2020 by Jim Jagielski .\" Copyright 1999-2017 by Michael R Sweet .\" Copyright 1999-2007 by Easy Software Products, all rights reserved. .\" .\" Licensed under the Apache License, Version 2.0 (the "License"); .\" you may not use this file except in compliance with the License. .\" You may obtain a copy of the License at .\" .\" http://www.apache.org/licenses/LICENSE-2.0 .\" .\" Unless required by applicable law or agreed to in writing, software .\" distributed under the License is distributed on an "AS IS" BASIS, .\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. .\" See the License for the specific language governing permissions and .\" limitations under the License. .\" .TH setup 1 "ESP Package Manager" "20 November 2020" "Jim Jagielski" .SH NAME setup \- graphical setup program for the esp package manager .SH SYNOPSIS .B setup [ .I directory ] .SH DESCRIPTION .BR setup (1) provides a graphical installation interface for EPM-generated portable installation packages. It presents a step-by-step dialog for collecting a list of packages to install and accepting any license agreements for those packages. .LP .B setup searches for products in the current directory or the directory specified on the command-line. .SH INSTALLATION TYPES The default type of installation is "custom". That is, users will be able to select from the list of products and install them. .LP .B setup also supports other types of installations. The \fIsetup.types\fR file, if present, defines the other installation types. .SH SEE ALSO .BR epm (1), .BR setup.types (5). .SH COPYRIGHT Copyright \[co] 1999-2017 by Michael R Sweet, All Rights Reserved. Copyright \[co] 2020 by Jim Jagielski, All Rights Reserved. .LP Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at .LP http://www.apache.org/licenses/LICENSE-2.0 .LP Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/setup.png000066400000000000000000004047551521151356300164460ustar00rootroot00000000000000PNG  IHDRh% iCCPICC ProfileHWXS[RIB D@JM^*U:IP&{YT,`CWA\ kŮ, @EEY 6Tޤ}|߹9g3wdU{nAA.@PNNIeM@(')Pڿle:_ @Η >+@hv2pkpr Lrř0dEL!h/ EWB!񨼼|U['o9ӇsrXQ\ȁBIA.w9[rCcCeCce5yaGEQk@|Aȗ,ihҿ'9,PC1KĎ\<Q°x%N*EܨeY!E A Wz8+>I=S$LUIN\2aq'jG,q6]88ViIx\Xp-`~YX,Y I)8`|(A + V[RǶrCb vQ6wlr1 n8 "6BM z{/EO01` E${D d8.@+Euتxڂ yo<"<8}p/<>:P[uhTb1J &Z AֹP@old\DC5|GxJh'<" tDDE5Y8_s60[!k<!w[V\GandGigX3\,҇ g,=A BBA 3qD$@b$ DD,@ʐ&d;RAN!v҅ o(PMT5GG?ƣLt Z.D*t/ڀB/7N%ڏLcaF-qh,l+Ǫ:kX'֋}‰8gpm 8Ɨj?_û>N#< adB&a*PNE8L8 n{""ZwB& .%n&Oۉ$IdC&EBR i#i/MHV!T<\NC>N ?#P(fOJ4ONYAIi\tST 75MG@ާUQQ1VP"TAe.O4 5C@ҖvNts=^H_N?d0v01Qh`t0^RTTU'TګFQ3WqfUQ֯TwPVS_Gs F_cӄa ;gݚDM 0l2}m}ZZZZӴ*iu09+Z:@p8Ǔ3s2 , l J08836/%dFPBhx[aancg=N (:BF\y?,J âD?8⸘q:Ό=nj'}|@{ ҄D 5V'u&N|9E7EҔJJMLݕ?>h\&L9bⴉ'Nʝtldi=i_*nzXzez[{23Vg<\ٓU+7 _gfo;g07)>wD!7ȟ^`SPR9sʺ)}p. "(i*ԄǜViWOQEǩSNS&:zϊhi4s̮YFfnc2g!sQc-HZмP܅ Q".kb%NK6.V/Tf_V^e)oe6,\m-++E+o]UZ}uk"4e-]nu˝˷iƕlt"RrI[mZ6C7TW (tgZKwWٮE;cԸ۳읰}MuuYe~v@<<\ڀ4LokjlJij?2HKW~}h1c+S/<>xDɂ2O=nrtgƝi;~¹s?qы\rxrCK?\8pJUcڏwvxoDhp :oo?{ݢ'/}êXӵXW`W룸G|"y{Sgj;>?s/ ^g+W/ou~?J?|~!}ko b(AE32x: 1448 872 Rh{@IDATx ]Eu%o!7JT) @QJ5 * | U(ǣPЪCC @ @Շm3 @ @ֽ@ ^K@ @ @(&@o1"  @ @=X[2{ @ @ :˳UyVXB @ @` DA]& @ @ ~dǙ6:+E  @ @`&0X2u5Ƞn+NA @ @@YdI Tu^ur @ @ 0p :>]I27A @ @ٹ<,& @ @JJ&@G=} @ @ @ 8m>C @  m-_iAݧ  @ @PȦklX !@ @ 16N1A!@ @ @~t_]Si{ @ @`&W1JjޱqDOu`f@ @ @ ޾vo[v3H@ @ l ڝ.[z2ۊg @ @ P`Ⱦk+= @ @A2{귿t^1}'O03 @ @ 6lvϽU}ְqOe @ @;ڿVy >  @ @ `=z֨8dO$ @ @fڿj޶/Zv2{/!@ @ @ F`cʲm\[S_l5P: @ @z@O3/knaYa.?߶ɠn+NA @ @@YCVmXOYvٕck[i @ @@;4j"vvUk1Yv~'W @ @brmVOZ8a? @ @hf."?EƬv7&ˎ+z2{+N!@ @ @@̞mל)E4<ٓyA @ @ d[d7ۍc<ͮHO8ɠ.iPqszP//@ @4M h\)k=/U6dYl P @ @@fם]wmbU#֯l{U;ɢUOu[q7e'/2 @ @Z%ڵ:@Xv͡"X{oR(j0访deUl_ @ @hټe컳i-֧]zcg&ڙ}LOݶؗzrl߲v] @ @@#޾G*^s[[Bl!{z:cv1]Rcv;UǶ9v˾ @ @뛹eNjjbm؊dY;eO*ɠ_c7{cddcvG@ @ 00 T/ӛ6^ggLCxVc-}UlUu]~ʎ @ @I q+WR'}YeeoLZ{i"dPbefo>O&ɪ @ @ ,Leo};}/g^^ ` ]:v~1npcfgȟ!!@ @ UoC}Xkaٵ׊[竴 ҨeofP6oW eѸ=u@ @ Ifg>SWmu[P걱e}(g׋=Q݁لzz&cʶ](!@ @&27wk=m.7dMQ Z"OQɠn [a'kupe4GEv>i>L]([@ @ 08 z_wa[X7ҡ>Vwәod fcO*k/o./,lҖc>+[{(cCvkv_ @ @@%_7Y/oqkM )k~1"}v:bv=ғA#| ƪMjdt?jzەݏZ3ԇu~YrׂO@ @ 0 ɍǜ 2n̶NfS@_ lu~UCnlٵNoMa kcf.?a){q工  @ @@o݀-7foUgtnTm&sm'[ϖU?C}Q=וCՋ]$yu9n>?5um?Nrw6ݵY'eP @ @@Yeo|vg]# .zN1Y+˨uW\#7g8nX =˖]߼ ^w3z1cFuuu\pE6l4iҴ#Gn:oRq@ @ @ ṛڵk_xWnu^8lذښZQ~,ڕ>ݘΫ6ӻ>V4;ku-ɸ}qw1w[F0' c:ϣjr)] .'ݟ@ @ /W'7k>w화v?[&zڛEbeMIoNoׯ_?jѢEy9G.N$A @ @{AޞLlٲe2wu׏nZeR5Ljw27e#V]dl1Jz2+j0&Mᵛ.{2nL @ @j7ksjYc7ݍ[ѫ7rua{X ճmٲ[IwcڟQO=ԗ]V[mZi@ @ l,^^F&;ٵKq^WT-VlzoXgr#t'#.F>T(\윴?vzK/r@; @ @ [)\ª'h힠ɢ+kWgo(Zv[Ю^JWv$('Mt{46H@ @ l>_oP[teIwyݏյ.[P>oPɅ0-`LݜvZO@ @ @`snNwڵ pn.3lﮞm+gund@ʠ.Zv[e[٤#[Ύ邲9֛k׮1VX ׬qQhgԨQR;vl9rdݨJ̯ @ @`s7+>b -ٵrV֪M9vٕ7z3_P&q?Y @ @$wo0vkd*^Uoig_Y}h]=ۖW.s6{Zҗ]ڷzϪUҥKEvvvAJa&nĉb2f3md~m@Z"^z"O~ȷo6%oӆ7dj^v8Z E" @]nԽe@gl֜a~cF?cM^~ykn Vfo>g/&mٲklfP @ @6>v0ŮMv1}h7hԽ =?ϖmq:+4-kmlf\{2cEw4]&C?[n[{C Яue~F @@o$GP;>]deP})O8S"ӷ$$Y-Zڿd  @ Ы/iY&V=ӵǮ!W;|ߚK4 m!bSto61_!@ @  Z]]֦5lu@Ƞ-N/&VI듕fU.X^]Se&[ƴб;:t)]{'-"Zn~]̯>!@h#QcWaAŚ&Xe+kDN柮d(W\ :&H}k}+e"/ƎGpeIg[wjgH˩w@ 0tw/еa]K,s|nB;` V$=6 @ @  ^yMW$/W63+^JAؐ[9anNoe'ڗ[Kc&Z&1ʠ66IP_z@zN2Wuvt#OwV*VkqOrM`w>xGO>گS2iCE5l̻C #}@Wivyه>lP{ j[Pv6k-w׏6@ @ @`p+wwY{gg ʶ4ݍcǮ6koey}I+ٕҭYFƍ'2-#vt^\uhJ*9A WFO^ 9ԏ#M"_|߻Enʖ2 @@>`w]e1+݅̈́6ߡ}L|ot?C9hlC9@ @ @C@a^l[>4TvdP Êi~}XͦUic9ȶQ @ckWw:[~;55!eh[ GY$;l#rk{gcJ4|zMF] z[oI-םkt#2u_hbº (<[)+p}?|em)C @ @ >{++}u?2mB1}h_iȦ;M:P~k׮0op]b4`Ea~a@'exTs8>vʱR|2|&kpb?b"Gm:Nd,j7j3Ml7-o 6R @0ovd\[6c:ϦiU}UWeŰʬɶ  @ @ 08aǕ*#uel2C w/L5fҥbk˖m[Nik7?[2VI eӑh#Eoֺd'ISP"{7jcG`#]ԭ69F >fEwiﺫ/jfa>ĿzoMV7H@ $ݽAזlz[{V:<1^?3¹ZktmJgN @ @ 08 d+̫ڝ.w2۾ї{r!U}C}X9ޤMʬk C]=,%lVM{Ҏ{+ĝ5k45j&-F @`@X=b?ׯNW03# @7 lSj@V_le˵.Md}ճl9]'ԇu=U jipaTdLoҵl=쟭S @ @}C2_hmV϶rk7]i㕱6>ȬMٲs7 ]AhM@ @  B k2+k:k6LbS+T~eq?lRu}ٺٙ >e~R ԹVRn2goH["5H@ @ @`/4r+[ш}t:ȶEukE @ @ 0 dڽv:goǸc0ݠ6م +[eVջy}' @ @|잠:]U˫gujY{g ٶXLq1!@ @ @>`elB"aڻ)cg}[JӼx.M @ @%'-+8]ڳ+ɟA1 Ӈv!@ @ I v0ZA$(խ-+[N7@ @ @`c*9m,1ܠE %=3_"-ZS @ @{m4糕6oLߦP{Ň[[dVG6n>B @ @ Z={eN7lCZ1dPήMwk3"'MԝmS[W>07M&VZj?o$*V5^{$G O7oBi7hcGmcHUkocHUkocHUkocHU/&mOml<nPw--,7$ @ @ 0 d7fqL_Ds>+ѵiE7/[n IلXfe^];)9ꞏ#@i}O(sS_Q||{,c O8폘Wύ2o|ok?91ʍ&mwjzw0ڀڅ@ @ @ cX{&cv ol=جߨ#cGlt$0\55&$LğH,z"hAbğ ,"Dp|F!BN ,GVqPx)QR?>b<5rpX(F*4-@orWū)_Ԟ)*"EXOQT)-jOǂJoQ{:SU E|ӱR([ԞEBߢt,(c?EQPķ= )*"EXOQT)-jOǂJoQ{:SU E|ӱR(ב5& ۶6=R;A]ϫw6@ @ @`pp'~a=fgPASy 87ͱ]?%g{2s?v/E lB}_+*O84ŇR C}OQ¡)>, dgfMaT 83PSTğph ƙ&ğ"CS|X 0<7''@qf桾?񧨈?H233MXټ3GFF36?#9f7T2clپ!@ @ Mê@ʠ.{]_-døLɐoӮ 냡">% E^#\\X{L/EW`\\X{L/EW`\\X{L/EW`\\X{L/EW`\\X{L6+t`sрO]C[ 6^V62YdNU1:P @ @6je 6vV(k?-Ԁ>*D]rOt`!<1r8G\h癓 3pΟ<}xbW87wPEhtczc_nv17 @ @G `~a٫+kˎvA䧧{2![&> 3o> d_# wfcړxΟƝXUq89]L}qSd8isp(:O؞GqXO/yr"]AUj#fzlԙKi@ö2XOl @ @ E v?1/KˎgvAt?m ؓY'e0~>)7>$zappsd^DOsad~ec\dؾ3-k?LGKAz_"Q7lŎ|eP6 ޾6C @ @=#ÊSuK]c:=p{O_?}mg8d*Q߀믿^Uu3KPURվ3T_UQڪG/UW>ԺKUUꯪ}}RUUGkj_)T_UQڪG/UW>ԺKUUꯪ}}RUUGkj_)T_UQڪG/UW>ԺKUUꯪ}}RUUGkj_)T_UQڪG/UW>ԺKEN8ᄆE{qàT j` @ @@?r/ɠH>q 2wmd$#5sIFyZgWA\EyvF2jo1 3g={vp;fd_t+ GokJHO/ގ|iM0A7V%0TnP++W= @ @ 0ؽGoWhzϠCuo-X6b7s.zu*:~B;/A٤+@!'9JhkE0ÿan{!W߫|\/ 9E^ȕ#j \B;m/ !Pȉˍ"e!Wo_Qh{a4?jrbjN/ @ @ /2{?|bRc4#1]֮IO~0B)/?*#?_v????>W){^ۮ㢵Ev< D< o⍟ $Y)<<w''kDgy?L ݘݗx/:xW_0SdPJW*G#b$1=O~tWqmv]-G?G)'gil{R<[OLhcum8jmPjP͠nH !@ @ 0xpŵ$Ep[S]UQFt8ؓ{ןů\nA7D3w^+}fi;};[Q&}^i]Ϡ5")XtI͟; l B@%`bu B;%#xX#珋sL珒   sM珒 /+-֔A݀  @ @ 2t{}KE"oONyKӫgc"$C3Yq/"|DO9R?<~mDVs${jSL^pf{ɔ.|,'N%^+Mݏ>*ru~?zDoՌR?oOI\|ȷ~-^k?wȳM ~՗OoL.G4o5<Ÿ?5a1~JTa/5#/J\5`׿:WXP UT؏ ğ#EѶK+cJ4 0s(vi{~nb8ʐF@ @ @ij ?F'F᥶&.q&&ww;?̫?dDǝrg+5k~,_DnCҋ'Gk}ߔ¾GkfJ{YG|':Y7f`[ςo,M1?{E^y?wNO-ϱ |np>*ῥiۊ\f6sM׈\e؞,[T ?5]h&[=#&.ڇ.55NK䳖␟o.l7V2?+Ǘ~?EQPķ= )*"EXOQT)-jOǂJoQ{:SU E|ӱR([ԞEBߢt,(c u)j|:B`gPmVC @ @ @o dP9bEĞ̄r#R ɋ\$kIqƊE~mTn#f*SEnڵZϮj̜E%/{f}EWC?Rde^4]dN;E|K3g^^3ߜ3ЗDޣDD>kR?/Tdqx =f6r''WN}`?E&K]'4s }n:M[GK}5O}ضU/+1LS7+a}oˬp3M_QpM| d 9yo;ğA( uMMaT 83PSTğph ƙ&ğ"CS|X 0<7''@qf桾?Hٺ!C`gP^ @ @ @4-nC?i XjyØ첿f 'fPf2/u;`]J}_ˁ}gD>˾o\f(q}?6m¼D<:?ÐzS^J{XJso'iW5d}iNzGE{Hdߞ"|={&8'c<|bgŸqR<^BϠDu+^wu77/G^%Y3J'NP~{;lqhcz Dn#\`X{Lo"c(G>5_"c(G>5_"c(G>5_"ЏϭL]Y!@ @ @>o >+D,%S|]7Pϖ=Ra)ü*%tå;6tv k ۚ@fpwf>F_^M-Zj}$hpQST:5͕>aίsmUl6Rü:~c:̃g\iF[J3O諮w$y{Ts}e̎9xUl5g[Ʒa7&1_."OUCx.dcp#3'+'<gF;8i5A{l @ @ @Yzf7i'>Q iohw>zKy[cw>z9h҄߭>{O i9f/?'ekɇaOشE)hxJӯW.X! ^뗫#<.{YwcO|qeuZ5|hο-rTo756k+^OӸ*^o-h[߈?EJ~k$PċGyq4MXu1QtqSd8isp(:O؞GqXoiBEh @ @ ^!@u`miUĦn)'ntJ=V}5~zsS$|GjY{ ',ūy}kÌ\]>)x5*/ka[SR]>' [iL-?R>AyZ4?i59GdGist^ɏOo'r. x=nc}j '=?vֵ̏|v? w&u-/"hi]gcȰ}g2?ZZ:ٓ \ @ @ O ^Zc:y@IDAT>=J5R{abP˯[f`mF}ԉ8dsHG>sڌ;[ }!c'Q)_|Ai/O9ӟL>wԆ|k7ٸ5:Z7}kv.j7ʿzd̈́~x{5z<͜~N9FJ]yȩ˹1S/=Es4^11LxUeLjRl`f+HwOϙ3Gf} '6ڠ^06ˬdkE֟wOO{ Hj?G9OO{ Hj7azM^[ok (ws݀Z_,7xyjRz3i^F:Z+L81;ѓA-!@ @ @N UE1.v->+'>Z@mr[5W<;L c,߬ ZAVW/-c' º_Gw}w?B+/ 9^]ȕ#j Fr !ܽ+@!#'@u|h @ @ ^"@u/-r[9e>1^[֎e2ZwU6^mGJY????eϋvqppp\)vkOUB * @ @  m(~j icOz5kE[-8:^z%>w\(!@ @o ̘1CjDEW1P]4oڻ'@u|h @ @ ^"Л)ut!md(C7B눴]7{pPQDOyl> Y` p<䓻0Z#z[W=ҸG9æ"7dy&%ğFnL>a9ѬkDyc=ԨhE4zϞLhillzdP' @ @ @,̠.;ag-zGO,s_0L4s7E^(Hb+ԫ 콢s=2˜7n̞F+v=MV/@~ZZjkWTV1~#V9گqtֿU#V9گqtU#V9گqtU#V9F}s*2͠~;dHZIܠSOZ@ @ @qm{1ZAΚ9<,_92? cqgeOLO@__>nϤ6 @4}ÀNwPoƔ!@ @  dPycE4bOR;A,㧄 dZ 6VDL}vQTWQ3 m|WSz\މ"vJﴳrw6J]{ @ @@ 7eb'qF~v؏ +ap9AkS4B| UofY3kgfu_ά=N}:v;iV5y6_}{T3Ƞ.K ;@ @ @h+2ۊ3IJk'0EeEBߢt,(c?EQPķ=OOIG^0UҞT{*jW[;F"RG2}~:V&џWc~NƘE>\qä~[\N}I|@BDžCb}zo:nO`_a @ @%c6/LOnbOfB}]M%/Ǻ&&>@<7?ALw f+/,K_ɇ,rֽQE rύbxg4K`g^zw9X+nsb6y,}3"m[.~|">N]y׶a*:_G2=CF$|HwQ{[Z??Pyq _6ľoogo9O\>!f A;g>}[\{\~^|7BJ5>\q.))8{w>SC Z$07>6od{Ax @ @ Ƞy(ֿɐ7S?a|M1.ko-ğ }TԞ\5垧4-;Iߍ$6boEĖazĝKs]]ä>nBښ$6wIǞ,E~ 4L `3zU\=MFkF"6e<^䘶gNkF'?)_kĨK5BIίCקq&ɨCtڄ>YX~sE.X=Ti9Pq{*'502{>=c/<"aː|PFF% {  A\ @ @ J ^^03vMSa\+B?80.¸)[>Zsy>$4vc 'N_ŘGd"Q,= rgEvw8Ds'SgJK)&f/髢:sD%3ν\R/RGy>-1Mzs![K.&(d,] .^yt?3.ӎ$I*;Ռso5+rGrk/\~ "=d4gF=KuץxU"S5ƛv-ko4ctl:w yR]\quR?ćD^qrJ/*3Ty=\avԗ_?R{i+n5^Y?J|Z9y~>KboOD}hgm>yxk |gʩ*X:6ZoU:߳O5[/ժ+DuU'޽~~> _RWWخmjGS=Oy0=צ~z@}G1a:y}ׅ}Ql'R?s8ǟ{ v9~Dl{W^{2쉺ZT=g>EWIK,=/>vQ[o7P]߷]V=/?~ 2΁c*_wu,OsxMTغ̟S'\Ou>!U[ec~}K` @ @ @J ^"> L쩹= *v"{WP#NiP~jD9lg)rkMkҌK}3I6o'\zhn8~Y>]E.}D3nmԓDǻ 8/~ K G'3 g.w_mb?-L s`f|)8!vnJ}9zWިьL1]$•7Pzq"IW/RvI.r3mUpMsH3n9K#hj2RSt>Wu4"o[.Ѹzj\%oH}\I"똟\!Tfj&.kw_'38pDu9Wv4\urU$O4>NQ6J*c7c8x̗ۖ.}3wJFI'^Oo,21bJәvsO9+Nߗw-^]oKdz\r?Of/}oxP|ˤCt;wb_̆ot g#139)?&$g㹽Ӣ?k =g.;EQꫮ1ZjNkJS'X ֿW]t>ƾ%_nuu r@Eϭߙߟ9YO;_USZ l?|N$ v7o?}g|B䬧yNEv!"wX)2"qEߵHs>ھ/~xq#~\zxn?3Y>3v_8;"#t8Gz_?'Aa|By꿧_'1;5,.P&7 @ @ @w|'Gaj$h:}+/&\V.}b?fR4yQG'Y˖-4g(_K|TӬɆR۰0!Ε嗗\J3ݚ8o9WڻymGlW,'K^yu !}M'hW寻#m[vI'[|ֵ+k=}$9内ʏ&,ۯ~w;b=D[yLӌ#<\;V}Jkjj6Zi)$o sgom;߭.{ϜXEGm/#̱/ь'SяU?.*<zK:q`, +_\[f\9g`"{n_bSXNſyx^`~wӤ:@G|;oq)&Fa۫+U$~S_}Iwz"w[vI}gi!d4}@h9jPzc~ ͸I WnQ6_~=CkSl?7 9_'yvZ-9v=_c~]xi/ĩ'D?N#{}`= .8͈]v]mu8eLQS>,1J$xN9wg~3Inx)}tgKmtuwlY5^~i:3OxjSGQhOrw?˄{db9jG8;uSa)3~v{MоfLo?]"o>4/} /S>6|g}RhgID$<Ҿ/n9u;taURťWN7.;eRy"y^7}mWi~ Oo>QN9Qll=^r/ ¢ݕOd6iR @ @  ~7W1G 3)FDF}uo<+y"7%/bS|׾9iڵ:kW&\S04'UTu?Q˖,G׌>!nO9 |0E׿zc2/zUd?f;L#{Tws-DU?$g;:ͨzfUOT3]wHlD351Ͻ~{\LiZn`LGߥ~ݢ W5 Wh>\U!gdwk y$5Z6OC/:~eiOWXg|Ѻ_Go ;yv ~^W~wD&&k}g|N:"u]t)T+b?"WI;5Y/I\7,^. ;iz]yI/Fw'yWuRyN~&^,{F wWbxN|uxx3%M_bFHZԟ_7RU?pOE؏n @ @ k'kO\'G+joMRt/~L3|ȈMm~ak^s/\ߡo{&TiCI/lև ti{D,zM .Ҍ 7M[9?fdfwۭ5oHϐ ĽMyp͢QZ 6^ﱋko_>-rddWƍeF(/ 6eV=ϼLuzN3xk|#hW?LۗhfL4ѵS4ɱ_8/32C`vkRA{?lXXX~ۓAe.)DnhO2ͤ=D]~&jՏeo"wc+0z~\6b%Ku:CgRߒS/߭`wU/J{A*z#M][O /~9zrk~)?8WAl />܏GRƛE^~y"z㬺(ч˳á#i"rg3ߔz/):~ǂFahG_$`aլ'8h9҆7W64t-.yGu=ϯ~]2\WbҮjӃGܦ2O ,mhc #S9y{{O=∙b0/~2OERgܑ4qſͧq~?`\fz{?A {BGaSp];AyRd?9;Agݮ+:VSc/jF[|I'5SYޝ4^6c&Lȱt]_\L-];k*!a}mF0[qk>ɔ(Mp~4}[KSEi^NhgXRE5B%Zp){MdC^ M"/z>% ^j|yA6rnJ6~]ENJ*9}gOiF1d7~lvl-G^ y*59I]}JtutI"C\zK~vqr8ieRQ+{=pCEJ>kTM̓U3R:YѸL40qiWMI ЮF6?ZpKn֘#~}]HMM Bcӯf{+7}*gz}by圮5vF;0_/T\@Cz%"YEgR- q5mQeSp޿9KjtR q?ֿA ǦqYt=7?}gpsLO~_?'9y zNN/9:O\7e]MsyF}q?S}1_/N /3t>cwHx:QZ `߿y*9BOt-4\jQB @ @z@> }"SNnH'Ԯ|qpK|䦚}ThbՒ թ/s{qE&L'kfKD|Axl_nroWJn##okz_ҥ֭zCڟyD3FW'ߖ)eqkJU?c~7iKy/9x¶abAٓBQ>,'>LTkVwI=Yj9,SE֭Q~j xzS3 &~]ڗRNvLj|yk"핶֜7^ ^Ҝ)lAEȓ!vگ˫ڤ˧"޿_#>lשiN?v+OFF[qvi 5 aj:RmЮV݆[#TJ#K>}{/z"=;tRwH^}m"p݁RLcUv,9t'}jc_>fM_qWiW 4CSՆ#>-S8/{~D?WiFWxs⶙fԣzw<\6w:R$sgukY0`MkcRX!.[ Lǣg,CxrKa5g/Cy,kLFt"&Y [W&6p_ ;}iX$ş=~h~_0®f2 yl;3ec%b{6(խ7t UކЂͿT8Q`!O+o`o~=B磌X[_)vW:+Ep4 =̲Hyb_*ء5-vExz.6u| TkSTZkpch{w.EKMXyZ"Z VI{=ݣĥn\er}~=8 ^֘G_j Vvd1šӒqboL;l$GkbyOnq֕lujwnN5Az ^^sctlr{/QÓEؗ2t'- GwΏgi#-OwgilZaM$@$@$@$@$@$@$@$@$@$@pDZ$oV<ވ_x]iǑ4G=uD|Z7Cz` +L٩?= J 'K?ew#%_3@3'J%}F}_/y??^%}bP*- oSJ$[PD5g];r\5DҏKlW͇\ I@NJ `. /eر\fFf˪6KwsnM3{J" S!;j(P9%v^)KOõb{W_G}{ ]kA7MyD=eв') Cy<񢞨4I&uF=I𥽠(w/rWcΦ>뽠S]gS$y[K^Rf$]7N_n~xɍ fZ4 q]B2w xL~^W2&3ƨH>%b4M0М3n2ؼ|Tqo$rˌpjZ@ NҞSձ_$͇,{mv9K}Yɫ̯>น /L"|'G<'F#v-{JznfK'h[igC}$&xp<:P3EߨUI9Xn #.Yzt$|C[%"oMX[ I,X5G`!.˗Jz؏_/D'6u[sX4/:Kt |4>qg r:}}c\r[Ҁ9YX߳8f^j,0Ɔ7&6u3e8$}t@pQsy}%WK&fhQgpB4K<4jS1&4>!NAz8gY\J,6Gs٫(g bmlzZ1 3m|p%Yg{ ^rߟtx)bd#"S>#HqdϋD-y}|^?/BҲƮ|}Reazr0>󌗚96}#{iXCb[1ğh8Y"          H kH~s5>$^ܬ[iF@ܷoߖ:EnG1i"x?pPCebOԜ3_wl~(w]Ϳ>)a=gïȖMe53Z _j}&vӶ/% 4  IV&!]bFxHR  ߙZ>qIz y{CB7U(!p>|d>i7e_Lҿw pzNbr|oܾQP2\7ܹY?4g<ˡ4 ˰_|%\(^5~~F}\:ʤO?J<>s긔D9_x 8ގ7}e N̙=/x2Әnnު=Yjw0mC"wmKPM3Ae3gΔ%%%Xg{zq[==19Yi?( ơ܁a].2"/Jײ*1hoRX#Kw`Na%7Ţݟ,(uH u/3<;lwsQkƿlIfX*+xIPp1EYE%b&Ogǔ!q)PzT 'l8Tր@R2֕'**<~,/+!4u%j1ezj]B-ѕ2F]uOn'Q>׉:g1έ=DФ]/HY%v>ļǥ~8_,v}b#.a2}ﻘNeZA^ms u9&K rs/?)0Y[gnݤǎk!߯_f}P>g737d_}4-^볁"V?ﴑI>*&         h5ZvV˛#U:T:g;{ aF:0":%k[vBCr(㨓 5&$R0U:CWk@jPkՇ&v*(%I:}5Np()C{]]|&y^m4⬋?-'jQWKx@WpAu yQ[Xi8zLQy~C`SCӝFA]}hV7:x쨤i]R^TŇ$,08:gD;VSRBߥOcuޚlۼڑP=n|tzij1<UNkկq֪ߍ={KOKz8CU%Fql.ei2MOgRNWUWW2 vi~7=^b7vx0at+cLNL hW[["]%`[P&vYM([Q[9Xo3~*ᴝKhUL{o RJJkbܐbSR+c=L_yRbA|OX{'~o%>o*z ="h'SR$/s"-Pxd16g}mCߔէ)%1/ DA (`ES7/2x)+;a誫!=ǡ~Tqy_reUVrV-ᎱP.w3 5Pu|G%P>$p^X".L˜=ĵV^(Wnݐ^jhעX( wny[;g{B™wFFb2D/bОSFIrw/$UmHб/p]EX9Ȳ8ie%B<8 ׊TxlgLZb}PP-q:"wCx|8,~{QNS.dX/}:ҩ$~Ժ~6YRmn &O|>>SmSvCوh^wmA~)“&3?-XDr2|hH="mf?5s,HHHHHHHHHH\ F)'~8NxTUypl2w@I=܎acߕ[w[]^.V=r 5TZwQvOR`-;߁vЕ*t/F]PVю6%1PSnnYhoJ^ib!"t*9E%vҏ9?s\6_c} lz`Su^1`ά`~x q{Xw31Z^pc$-ΈL1Jx˂B:Imп#GMh)si Jl]G::]ur;Asn>U[%}N' Qf~;ng>'rMFO^W؅WfKorX<i-6GXa,~Y3%A aqZwk0Ǝ@:|ȍ[<7Hɟ#gn~-4Kj|Rm+V]X| ?2wx7l3IkR1L$@$@$@$@$@$@$@$@$@$@::^SD6"-\1Bt擏~vRjO\iW kJCkݱ4ivK$9㺣$ub(\/L3}()8:9 _}@IDATYW|[?qF)lYI! {B굹(gi!ݡb881=/5PN:cڄP_v 쪀С8[>P(/a} I;Y&gY=Sc8N@ҳ|0uyQ%F}؜}JF8ݹ$LQX-|Ck꼭:缵j%qҪaQ٣U"oMv?rleн zCyv[xh}ʣCC#P"&Zh69f%ϰCG'PG_sW!          &Иs5>$^l`N a?vր7 =YZZg?UD&м7>(;@"D ksVܡ41F Z9,-]+1 jbinaV_[~jxyi&cl<9ܸ9 {T3F.~ÎϘ~nL\t溕nDy fz6o}gqM;z^zPML7UWz6YPP 3gۥ bg7I$@$@$@$@$@$@@Zrss6^ژncoi*_~# UUus_^ X־׸Oj5#"V?ﴑIH.笄a          hЃmT3x)(qƇ#` ^#(v.,Y*]:zg.^uWg kklk"Za5GX(jLh[Qƛ#mfQiOo;w0ks5Zg=n-&>᭦yQv϶UoX>c5oJ$@$@$@$@$@$Z.■ūCu{iHHHHHHHHHemcs 9 t{u$ ث֑WHHHHHHMh䠜G<,6HHHHHHHHH.$TPh:QjfP/Gk\v5(      /mW6PA6Ɓ          vG Vr%g~\luf %3ο q5N\s<&     h[mFo mB          PAƆM|c&b#P,_Jgw,_t՟ -V wX?\i ?οX]er\i ?οX]e޿zOAuoHHHHHHHHH *[h(T4uyoVG]c xʋcp5Hu=`7t*4't*4't*4't*4˿P?ڮ/ڿ8gn$8f#         h*57a57RzH ǼrSfɿ}w'     8s © g,         8PA}m)f=5=X=Bl \n恍G;bt`SqġnnO.98\@$@$@$@$@$@$@%9/ 7 6<8l \nuz5lۛ%3.}<7Q~G w[lź]Vzݑfyl\!52X|>J7H[v=| I;\7^d>5Бٗ8|u6CОX ^+ڂ}q~|(?S';(Uij[qM7&uqؑ(a <_u7B2b Vo[xW\N{txzs͔%__Ҡ׌4ݕ%%/ƌ~ܽW:s @ ӳR}> ^Nh-]~G#         6J/ޛy`xUf,J݇BuGf\,~gNwٺQw;#6tZs&myut.=,P~ ҋBUx;S.᏶@]Sm&в.ȟv`tw+p\(ܵAIw'OJt8}L">تX(|PЕU)73μ*O:s3 4 1]$|KC{>?lN_I^ *qX+,>8Cq Kׂ<,H'?'gl:xXwMvV>AmX5&(?(XgM?_DVܯ7ǼQC-UFp&>X)vt/G,|8 >y((Jj[|Nqxob$Elzt̙N!Qt?.N %=Qr- JrRsgxI:vDM?+z-cexcz2! J"P&ՄiXZ,b$YsVc;[pS{_$%bSc *kW$|UlM%ڥv$cĎD'*6Qg_q& 6q=M4~qG_hI?kĎPj uBJ8FmcWL/˂pֲ?#(aGTP#J)MS崶kdQZ} O9`+!;^S $@$@m>s[+rΪl W֏|:!ʫ(3f@$RfBRr|؏SuN06J|>H#G55VzM5BϞ5՛}Y_x+!ƴ+IKgwVѲ±:@~˂"2)a$%ü"geA/Z<[lQI#s {J},r9gܑL1ٱ[}"KOg]P67# {"wBXR["OEy9߲Pȿ`̯~'%#s/Y#V/"6I=B}V$].+ 3W9ø,]#9ǂs%bϽsp,̋?E \07>,^5:P&Ϋy:ڽu3NqDl[H^r.Cǩeq9 z]V~aݿ^%Fi^ wVWQkK^^ wKNº*,o\yE$@$@A~m\c $@$@$@$@$@$@$@$@$@$@$"*No3Uh^k7RCaOX6@ ]QL~^Hyg[%$W<-kJ*9PLqӍqPAA8ale/A?[{`$IY|AeRۡ<6V%<* 9%Ғb?yyI|TpX& OilU5>Γ(D[Oz%rbî6K©'Į*v^%Kf͟b^ s(e%El (%Pw~H FxKN;{&-؉r+ 8O{I%oǔ[uhϛ^SkL}KW_+I`.x /yS?ͼz@s߃_pb4תPNks|>bF5e͓Ud|td@1?]Abج\/NҳoDVʻW޽\*єTzl7.Ʉ]ΧKef&M j3@٥Jb^~PlV.$O/*aUN7\»2 UPL?nY .|h+c^u=$p> (wCZ)dVv V!v>tz;ZnWd_ݛcߓGÚ_rWɊ. 'AY+B@۲V!(NJsseW񟚪>vf,牝ٍo~#wI9c|PcF7`kX[.<{ !NJj$GH c ;fC ל*sX`}>P9R]q(|ɶ5 _'6߇ttwwys;k5 ZXg>;L5;C]Z#^u\BK{q ACf|1^ \s9֪?t o?e㦲9b7! j_-tȺߔ`?.~_WaK+v)6b}u3m|>7Ŕ,[9j eϔ3`s'eJXGcB o]Ab  X,kZV'[ֲWP2zDW*^'Z5߯rZKH6ݺe hF_Q^sbV k=ݘ⧁KnfY 5JCPjd7Qnl:bv)Dlsdj,О'xyg[k%w++!c? B̼H6E׿yؗb>6qQu8ev2&%cMI ;G~1z]7V u18 ^ hʮ|vߛ͘4s6 3ӢbwhQ>Y[ #䛳_)[zvyuc6"!{Hޅ~oF-A-I׻lfԒc`AY1M|f*tn^r'~quek/Xsu]b_![7AYO@S]9>g@r<"sĉhOQ"1""RNkғoJQV3DXS^v(vøSִr; o"}6ץi̺ʘ(]Qmܝω 0{^')oW̼DbՇ2| XHȝ&awq0~ f\.1SC̎~RۆIgHܚĮ=JlL^eQH!`UM]xG$@$@-L cٮLHoQky?_ܬKn7 @30:f*DL@*^on<{K#iL'tڰ8kq%WIz!({}$}CvkࢯMHWoL~(̇b2O߳7%#ݍhi,;YP+;-׭~-ӯ5,cJJjc ͳ-<^czHNY ^X2SO`v>`ue9EcfIOxm9{b䜆O&](Ċ(x@zk~&1Ve]bT9$@$@$ x~4m(|7͛(< h>%{.e %ղ,C{{? 1-#N}ظKm9bŊ/P>_Zfd&vbF"7o3K0M@m4.2!8tImV¥NPLjZ}r7'PQEe@|}^>q]Z=`ܮ}gb^2Wf^I]rjA.\Ǽ7`8a|rsa yub~ml|l_uP\V*+5J^sFfuX74WNk?BGk0ҲRRc<Ƶ۵"& @M@Ǭu4          8'=<^~tWgqī i?Yq@V'۷Ά@(ӳ%CWL(M6 ̛6h(g΄R0) 82H(Z icrWil*ibYED. +HSuNV#_])nk͸TqIHJDjwI_$vqwZ=8|@WUQD'%L&\*0.GrA $k9N?Z(LH Wl24J I9NR2K?5JDyy9$  xBn.~e,-[nҾcO\,_? <\N coֹhX[gqyE;~j5i#|TP;1L$@$@$@$@$@$@$@$@$@$*/Nb*6NT9=g5s@`n7AQu$|S8ٴ_[Sv*'otɛFQؘHHHHHHHHHHbSa~7@q).h#SF=\2pq=5Z{]7'PQ1k Mn.XXSf9%Zc]"|>H!FcɄ^#$K\Y \Fkx+!ƴ+IKSwVI͖Ma,(&NB{o8Y2+B~ӝ8(6= I_grׂl$S% >TzZ؜rP~&]vlV}b"6Sb,tP~={'}-ۧ梼EFzhˑ3_AY/i +X?KEnr[+"6Ia?xԻ]7Vg'ps,+6홇qYFGcsЏ q6{sqW_J{2"wO%~Co2bo|qYktf^{?fJ45hD˶Ke YK%w2;t*K^0eH7o +Mgxw3X~/)-,E; >!a*rfeYYHHΝ&t]/6U_~ y_]8%䀩mOc}M\*~k;яgIXWYܧ)sCF}E!$}[P&Q2&Kxj`>w=r.ڈk%!~nKւ<v8COv^ɷ!i:}ԬӁP?}UYV%:xh*fX6KxYdz 4 },c1QkB͝$6Y_O7ob("$?c_^ 9crV\Cr1@$hyZ @$@$@$@$@$@$@$@$@$@$@I7^0c'|Tb8=VŒWy^8+'4k? }u\t2mPpiOl>"G4VC%9mWDa i٭B3n ^](ߣ EaΜef\9Tq}r|_B\0Ω=Aµ,{>`ՠ|w2)P[`  X%<*g9ždO^@8DG_8-IAa3 Ǘl( G!}_BgsS7BvYxBɩbg5 ,qXdzy)f|{$=*:kj g%m=#_^RQ FxKN;{&-؉r+ 8q\0XVb / E`/*uQVG_9]%h\'c8cWc%H_uhϛ^SkL}KW_Fx_2 d-;yb+8Aŧs0 (qڅ4T[^"*\u9yd??/ڋ=n&Q@Y02X䨸s})^rc.N+{Ď)\/1|wi ̺ʱ I9Ey/:)a.KM!k6Y~0aYXgyss$fĺYD/1O^+rT5[131-^?Jz3*v+b玃cieV!~Zr#0eh--Bݑ)̙[uI+XU&)(wt,VX`kMt t /3Y}mf?۰RKl0V◙JyxHe`h볟c~y0*PWo23wfI|~wh.HZEPЂh/Ȣ "         OmmnoT9o6wXDZwjXοqcV|Z<™:ڿ'_DnQdr扽vWn<".L;JPj^(_W,ʗUz+wEIzوUw/kǓ8@%jY-Ag"3:C!73oxu6Z'+H|ǵ0 m?()YP>?apm}P%R>nY .|6kPDm 妦.> (CW)dVv V!v>t \-+2P/9=8i+%wA9hY;ptz5mYvn!(ѿA̳qp3 4ʿHx0Sҡ(&#ubZ%߆c{*W^YE{PϤ&eW%_Պb_sXe̫3]x3:_Ņӭ'}{ Oe@IDATUn8xG*ֈ_f,牝ٍuɥ\Otlʫ?1"\?8L($7W(*vCp].O>tX|*eKH2L16/F\bg(K%S*o}nإ}C!QN_˚/'׺˸rN8S:$Ͳ&]zJWeb˧P8;yإ?{.ߜ3cq?X%ϬQwf`>˜_G/zVX`YmOMK0~X'~8,g?V7FK{WogwɘWρW]cRUQ6!b<~ⱘ_oNJa&1aE(3д~ߴyܭ4>?9X6;nunjTPבgIHHHHHHHHH9_;uyo2Fȵ<7_p9&nu>q+/86.w46ck՟YK;q-75a ngPj ܅6g:o`8|\u/;{ [>+ 3G2˂/?_9:o͜/9߿G=ź_̀~`-[rtlL h](PJ~cQW@eAhY?"ZֲWP2gU!+¯xQh ]p4nح]JlE5X]{JXy? \r762 jpvgEJۿ40Y4iYPϼYҳ-z5̿qHEȾ`гeͼH6E׿yؗb>v o~"bCUA=(eKƪ:0/sTo8˲p:snOqeK4Mmd-PU$YgtRϓr7kٓiBjUZO4e_7zEA⿛{f?JY춮o_~X]טe3"xv05YEA?En2ʺN]S& aV޺yΙEl7/D:O7$"w].RlWE X͖׽ق>w:] e2^sB"{04[$jQN׿O&M;VԀg_Sb1a5fNS۞,3yz%ݡ%:|G"џWJऺJ{JuKr#aSQrWkጳP:97R?88Wupd\]y::Y'ǼrO?V@JJ=oZ򤄏\usr3[>_9MGWJXOޕV˺Ů< ؇& fW;Ik~حB6j ee-/uPf!)WdƵ6{~q]X6˦;oTکi,bmm9aJ, PŘ <=%Wg*ߥ+nbQ$bu!)uF^|>(*5fu?q*+Tg2́xD6*|83 ҴAf]eL.ݨ6$z6LP=f2jWhF8N+ûɧXHȝFglYq0~ f\.1Oh5ǰXZߴ43a͎ذ\V-BRLd؆K'z*/ o+eCs]k븩Ӛ vkmn 9^ <qU c9+N,Q]Mc{&d:M [/sXԔ0auX{ٖV21غcp0 UKUSjf Sp0 汍Đ2 +Lw^k/_ؗdH rm\~pWup.3>:TPGNj$@$@$@$@$@$@$@$@$@$@D@_6Sq,&RzswZ*݆3ƫ=.SR-= ';viء)׋r]FZvO?ŝ'WSGA=ɵ[Tg;[xoc[@rRؖ.'}0qi +$p~I~Z"2jU[x׏S)0QUNO-K0Eʱ)DLb.6Yjʝ˺]Rumi_nFh^±F!JhgcI_r/x&/٣;$d rzK{$p@z͞SAߣKNIE{5q[5&"Kǫw| :=USkwswJ)NM=:[Fݾ%nV[j3|gC*\J)C\ CZW c9̫W!){#kWkeJpn#SΫ/6(8it+~q JK%ƋP]*)cx=bch8[!Dje@Nؿ4pCy|.sR*dSum]kB_y:, η0GDGƯ8JD#{sIӟBA}qd ,Q;Wt~gs]t: CxRp";[[{Mt_hH OҜHE_O\x:z9&Cb3_On5QRnx[(Us /{+$KyZ>H#^sÊm5WKZ!BPA          "Q[>cx9RP^~قڊ;yINRug|ӤjkHǫȟk畮o Q2$-()_4NY}[3n;N(uy?S7ޒ#y,(\mSI/43y~rM[23$!

    qԿWߏ_D1dYV"μݷr k/zR<1Z‚km3'"HS(6~emo#;G9?I1P6؁8S{FrrIRʩ"c;1gf5ӳ,kďyR$<#2)_eo/rj4Qj qyVh-5-aQ׹8ӧ۶Nnb'5C 既Rg]2-~333Q9qyeƩ=NKq2p$ EGrS`Xaktۻիk PO7sjvU~h(?`MYHϻ-Unq<|Ȑ9ʙu}]_f][%o}A \j,1W}S;]L4{^ (`yXlۯ?/sЛ>&gfdAi^)a3XwQ,xnsCRggcHDI[F{MS~']$k2P~/7oh[|ݒ+)y/> l$o5_“3ۯ.rrDMvo->}$+!}_:]?0[4-B/ߕpѣ͜4VmJbgN"VK &GʏO?"DZ֯h@dlX  infM U}=" 8 h#j FT}4@Vmի1h Ϝ_>Zkw}=?[h?a}kƛcnj=uv43? ' .-w$=pgwQ{8ZIc[/ 5Ǝ{_C _ * Ŀ[W/6ث5. }5 OMwtM'͓tZy|'^~<&I'aA۸.NО#H3[j#ӘO){`T<}r9[͗qKZh[x2W}Sz]-)_0Mf4u_/^6j)-%tF}o[t^fܬf?nX=fFj>pͤIR窻K:ْ^9G#ܹ.V|DÏV{%k+%6Q#/z||\2Z `NZ&Hƕ 54r)mdJHVIӴUΚ˗麟@$-vO;ޞ"]WE7ͺhܝ=UZ*yh/f [a ]pۻ4tz\w. S^/X)g YKب_,?)a1ICOj3jE9C뱕<FHmscsaAdd0%6:ˢQؙofHI)eSA۰Ͳ ve/PX؆J_l̔ B @@@@@(yEc|[^(%ɷ|iNȲ/sp#\ջ[ly;'Dݒwꗟx\r@t왲q1!3v ='9As%mݷQҵ6Kj?lD ,S&k_*'^ -l=}l8H+=oSc9珗IsSQ3dw'Swo8Nϝr濥.OnP'?ҌLD= 'L_rWmVU7kFhgU_B#ȣ1;^($}d!S/_ZUj/Ѯ5eHߣ^㆏vҵKtyi72E#@:Կd_}C?Z4yl_{?zI׼?@L?WL;n.Y--9ߞ~Kjߡ٬:Ai%>*roo.7$W띺'׊]k> GowZ^}-ѥͩ P7_\͛Te#F_ڵy1c~OOr?羐u?'5S. m^ԭgmjI\rgS݋߷lo4i=9j}@@@@@>}ri#mD;hְǥz6޽o۱O*l̓/m;d٧h΍>ImtWIwssFJzF|M<$I;n/~Li$}Z6}Bf8\;}$޵Sҗ_-Z~F";o??-aF=u|朇m|6; S)܈sl#Mܮ9(U`-Z9nFGa[Zu-oSkn/Oy8SuIk?Sιt2`@PdIs      JmK_l|d>B%;.}+Aj71<ȆVj"UgM5":No,~Wu}@U==:Kvvw(q'fp|h>*eH}Pַ:H КCwW3||X#ww{}[#~G#˻:޵E}{Ckͽz;nN[G:s+ /k+ κa߻V#vL V:%DٟiSX`wKg.!@ }Jm     DPg|q0|Oz&l݈hpi`жigZiq'ݫx:T_y` kdw U3LĶF!%<{7dAgݩ/<>^i' oBkS`wmj6u5`WJ?Jzxѿ:׮I"s1iB`+2ǜ'^|+b\̿[V]/'W:)W)ןVh5ʵ|]"u9o@@@@@DPD"2{DODLk3:d"w:|Lot؁i&'zmRp8}GtwOBc*rŚ*Kb 3,!Kb 3,!Kb 3,!Kb 3,ߒ&*=G 7@@@@@*p0zZ~7P} '#ؠƇv"||ͻe'ol7lwJoݬʯ%m$loFVtKC^U*lxwK;52izwhIth֥K#[[Zَu΍OI۴܎Xv'?By[ y?zpqaÅ}qǕHf#7<`.v߫ޢY҅j׵{>MΛ0FRdh MicS;߁ϒ߻|IǶ? 3Pz(wxOKsRS:7-|MMONE>Tz:Iw=UaǽlC_M:5f,;E{璳ϛ SFLWYOY"a?5t<~#7HDNjLtv?#S|$"`z6ݬ_$VˉLh9!Al5/SwcvEU$2{`d2X&k$Mz~_!G ͏U7i6xٴF+     $$MwJ!y~qFi>+ ӹ}#oI.ʺ߫۴gYu  dz[#/1)<}d;jN.Тw: W[uLWGNvtA鷐Sn KֿF]+m3>m+ @Ws}*8N6JpWR#     @ZKY}Nn3￟FJT8b}ŵo1!<2u24߯F$< sjcS P7;]55 ܛ8vn7i<ؤGT,dcsΐ kߵ9x$;5rk&=970j-ja~F6|37Koj(=? -Cf$ EiKEkLw!KnwrFͽ&)+$ *~6IXTG3.yl}m1${5m_/~~?ho%Iu,%UNluK$K~tnܬ\sr=~ .Fxm[otæsO_1I{d7ѥ}D{^K>~v5qLnx,]mgF/%“u}/ E̳ߔ+?YEܤ*{]kuɹ%]m'YW_1* |U/Jb3Oyj|v6TcV]]F/O<*"@ Tj_1΀Ƙg@@@@:v@%w];-߷Kq0X Sr s 軕Ji'IńkN#ݴI4/7n Ft? u4p $㓗^ .ةHzTIz>MN&Ǥi b wHy^#T0_'Q\*K;Ju"׽~+R_*i[H;f̗)~ o?5/Jzd>P ӻ.'sۺqw$_#i :)i^pٽ3htWב\3h AmJ:s%]񢶻oFXj\}35rrPp\?zo"[zi_%6}p_Dև%ΐtĹ/J:h_1_#/|~Dk++wo=z^~M)D+t]7Hu5X!JR~[˓t^saw:Jry NmYG寃y-ٯ_7m5xM#5dcEJ啿駲jDufw$d?/(,ԃreOKzryscvt,v~i7j=/j$U/''L׈Q3}l'?gt53eΦBX!]O}t}kم\"=K#ϿGǭgXsW}D߿IFqYWK̺2~Ʈx4S`>.<ٟ+^Zn?g]~_|: gR޲U뢹K/CW@#7?|Է.XksnwIp%"犯DzGS'I:`'kW75{믥k:~hlz9q?Pm_N'k&4wǵY2k7iCRv$u˪ ?۟lT;R     PNOOxΞ'Oѿ:O^Y0f]zS2eӮ?߼vJ=c#=Xo s$SA &+ m$/{F҇Јg SM=7ߔinI5ٟWaZnlھ=i\\:Gy'˾׭ L^~NXKntli`gdIFWoϕL%hΔ?ӶetlFr#IzٷtzvKL6ۂl;iĠ͜g(?5?q+5CP꼅dA?aG%$S?w-wҿhY6r/ΑtD1^cAfh3=5͚HS"/]օ~ŶM%uJ]wN'.<6y3n{]b;;gvhӃR~mߕͻ~-Om?4M˃%]Wt]fy򘮃1/u:xz}>xf<Yv d4ɶ&ݩiʆ@߱ϛvk"quͺ6_~|t:l1m/4*[S/_9"i Y6f^#lI{OMgOƜ\ҫX-OwV =R`6Fht0ߤkUab1_~b=dohlKa}G퐔m?rĔ:DΚ'{5+5yi7z(/;'G.6]8e]JIے^{hI@#7>r_OJZ}mlj޼;̍dpL 94Xit<M(Y'H"C43:!T]_6_7Y]:C:lL{6r:oTf͕>{딿\W5Ti4m$gYy|'\WsXuYW:]Vhs kY: }^7xǞaz(taʥ+o&4R_`"Nl`*]׽׮u:V҃Ok~iG{L$m. #?$~gT}xJ2Қ=(vʹ麾~s>f$fni-ъv/~:m4ص_6CWФa1iԻ>}='wЈ5& 1)Kc}Wʳde^n΂#egk%}z vϾ&/{v͑M $]5Zz_N}dDžߙH}_2J $6B@@@@譀m3VF=9y"7vM?`y+"+2kz2Ǎ4| MKVz?$}f{6jl٪oI?sSOgG p"{ J۲6ՎF@#*-mI-yUi˦˾nBU[Ɲ+&N0Se=ϲl"8ӐF/Jר琕'u$e.FNWd42Qv?Y7zШQ?&I㵅[~dYphd'?Η͛+I]fK4tjS> . {O0r} 2߿Ὧ+G:lZ;Z;vV7̸Kl_}8 j3O+r寫7{@yrqR~'-v~elTOݘ `'o6A-q?u+ ?{p$f}{&5Gy5R7X:_/9a7.wN=h_Jz|pm;Ćv,I4l?Y ?lUaY|{zDQ#}iޮW%=_0R/{~0s'އޣS4pM`QS~}xɹq].1wkR<拓4"O\M;W#3g)E#AOK:m"{| [p_r[?㷒.[2Xۉ|;5 _lwYUų~?ҒfhC#V~esQ#$}Ni7~#>l=ʌuu]f]Ƭӂפ)*'< 9.2O<]+5<}yt_eDQn;Ȯa?2p뺝,.L\zӿtilQ矓 oͧ6ٟf4!oܧ;\a{(2_+__hYk;tDsYo:_tM;Aӻ|B% LawF(޻R>~wE#]MZJ~|jI/]4M~ZѺ7뼬R+nX=f%f]uvxlIKe\]+W>"GFpFΙxMZjՉzku .-@IDATGKS q‰Z;`_#ћL_VIz4mGU&Εt_3KiScYWJ]W麺YW?9̓ϼyXQ|f{I}ifdv j.NSLmFv':Ǯ寃 ޣ up.4^Dt=_Ra :8Ǝxy(wxοD +^,[?^f[s>L[?{,3t/%NxDW6/Ɇw%.2[癚-e鶏J=5z%*"6|nmW㶻' RN^g}Yi`Ԑy{ϪOOi|t_Z2Գ@ŹN@@@@@WjW-Bi./IKsG~\hFr.-[<՝FgeJ?n])ͫJʁ޲aerD\[J#f҈Awܕ+4"p\ ki(eBwH~֬s,s}6et׻#tN3/f^J!:_7$=Z yyl_{?_#׼rPHWّ}S~cm-[Vf=a66v]IW)v4FsXwҪֶkǬ^!Fxw?<2,IwiH^WgH:%g7Hz${Fտ(پnQQy^;/>8Ew=2[:_bY}21 6@,7O6.isĈ2]vInjSPu?&mbiwuo}my4_l{Mm&'A     'x';D`ƽ9w\d !e9_--r/B˨Wppݙ^q@!627AX׼$5.f ,x+̼D"j+4"rRsٽ%=u~iyD}W"ӶDzjM+6ʝWtٽQuJdKs)u8O[ښ'=}zs~D@hM96xRWl}K%S}w|ɒ T%6S^NG Zl@d Pj72ᩫЉ>}#     , Wh`ޝzw?Y*Hu|O߷4grY]>4r6?&!ien]iMer Vz8 e홧?rDYڵ?5˥?{foșґ|+?233dc]?o@Jn# и#w&sDPǕV@@@@@b*@9fxWvd)yuBy"ս1BSϾ<̗~zɚu?x9kI3̿:7xyuWkB̿g6^26jnQ}E_I2[`NT()_6KuN='    TV>Dn'+aI|9U惻%ݺ]I_#=zGqa?X|=O[ͧ+T Kd}؅Vw#ߎæm)   @Mvn~i&Fli@@@@@ )Vw<2}f:y@%55GJZN@M;w*/e]xŶѥKWp4ږ7 ҈ѭo{i܍?D֙/?\śMNz_?F?H ]Ahu掽(gް'Jӏi&IYvrޒzbgLz#:vH whi?#njzO"K.u:] %4һ-};%cth;n~G=SߣO|e{V=˼3{I׼Mmp~ԞZb_|ݿ   Y TgVG;      (1.ٱ%WH | FBmidp7Ey%# y޲wH!f8(zIuJzp|(?;yX#7<Ue;ߜ.g۫ZoðKGU͆ӟkN>ݷxwFNwwݭÇ;%ߦaAƳOeVmn46z>{9ۿ=*.o]z" h_\{q_wW   $4W0V"a     ЀDPW٤"'݈Uߓ(xDZ7 }sNߎ%}-*qX9C#{9$6y?sk7GqsO<\n{Z5zx{ygHu<Ϯ}Zwv@{G;{9:-ЭI M:Gi$3iujFT52}hX}c&=7vM|mvmj,пNuif! WruJt+b b+ן ,>br\}pOQ|5oYp #    e2HKϓ@o}3H;&+ 柈mzǜtdirVhys/Ј j(n-K pجK !&)&OyF\Yo]{˳e#|h;)Grɦn~yx-0\9>9Jv3pXߝ<{ޣӶ' CLۿonj?r=P7 Gq;tѿJ៷bJbǙ,Lʼ2jT\W?sT ⟊+gNASqe^IS5X/rW3Fٵek<@@@@@D2M7$[?n|扔=>|@eBoKm]˵titιRs/I[.N+RN >Xluw-%`m"4żݝZPlݘv;Ü򏷭wJ<Φۀm0: )bY]pw#;=mK_eWSϲz }.#  TVA+\?~Ή3A@@@@"+4IqQÊg#/mU -jj뻑a{ds I{sSdԀI/o^Y.ku,d *gG7KL&؞/^mqw[{Bmߝk>o/l~^h5}.w6.c;hGhc+vdvՏG>z/:rG9   @u W+7OO;"?@@@@@}}!4r0ޡ0RZ GK;M <:lڻix3(t>#Ϊ{sQ?vH7_tO05t/?^{4gl̯ޝo3JiϑeWf[& 79*N,Aݾ-:.N[޲'u=kտj'@@@V&7TJDP'     @DPgm,m09l;Se"ŴԤk'-=Iw'鶷55C҈h̀I~!ˆ&ņ݇껚_٩޷K#V}mF C0ٳS]98?dd Ly \`@1K;|;k|N#hӨa4״qvmv‚d_a}>.JQ @@@@W:u~YGgƩ     T AɸIO䠍u#t@| 4ҩT_Gɑ/vf jzC#;P~5w<#z|0@ߜR~|FVwg'q߾FvO=s~s8 4#>Z.8̼M{ߛWֽsh9I;wt8?d}G=7LĭunMʷ͂?_i?;J@@@E?{{]-P Vgq#    5.@u_M7BDFCed }efl-Ol?DDw${{w?+_7ψLD߭hn #*uUoM+㎇}@@@*_{W1_a AJ     Y AhwE=qON\dwGb믗wN~iTx}%M52H{ǝ,fއ޴;sh>_~׿w(@@@)}dm~ $    ԣϪ/r5."RXO0u89AvMGP{9ځ2*[A sulп::k6 Z/R*\+J$Kp ן6_2\9 $ =<     P9">')ѿ|%8֟V-/;qJ#i-}17LͲ<,5ӷz,?Km,#R3}[ _JHg0^R"JQ@@@@@ S"3 ) L\qHf#7< "Fo\y!E8߸^   PED',Q8=꺝ZN @@@@n"3ߓn|OfHλl#qr{i<XȘuHgFֿ- E@@ vn~~aM8      @J"S>y2d*vbC-W.P[qQ\yE&   @4LD8    ԺeA720E!'ee#W/Y@@@8j7!@uu@@@@@N>r}6ՂR#8,XK./믴H&@@@V→nB|@DPW1<@@@@@^EODzZ_XY_H«(>믰 A˖<Fǯr`r\帺S#_Z)G /'W+7~!4V "k9[@@@@@j.T؈HI_q{ۣs{֟` x>):R M)=?r o>.ſǿOK/p/SR-\zOG[KyvK D8C@@@@Խ}yxHyۣ^_1utYIo}[uA>   @e;3      PSDPWhyc[DKc5֣qXWE ։Wt z2q"  Ԧ@}9z%&s+WzԬ@@@@@A] F$:IZ/IOGtˠ_   5&Pd`IiUj% :@@@@@2 :ShcJ $>',_/WxOdB@@@S>ŮΈI@@@@@Z ̳>ى-t,"}     PDPg` sd=잍Ȍu5_XvId~-'\ }5WC [/q5?ee6c^0WS]yS3j9"~     TF>rDz%N'qKaa%HV_ӍTGr1/fY?YGfOog-ӛeyYjo7 QMA]Sˉ!    -@u];%>k?<<])lƕ}Rو+?HWK6@@@[ls?K)w%n#nC@@@@[d'ߓ7?Ҿ.Hy\ǦGڧ2O#>2&umu7?>to H@@@jB=qf#@u6     R`iO|G wп>bs 4(cFuW^pq   P5~_5Q!F'a#    .@ugЍ LD)a~9"zYpUfi@@@ NZMyuA](@@@@@ }veMnH`/.5_+-?`@@@瀞*U>A @@@@W"lf}'Q??bW<*+ld¥}k%(ϴǟk5X_96ԈVQ poAF_Uƚo@@@@"46/iyoi'f_'^/E,멏t_Jŏ>.ſǿOK/p/SR-\}r o^/7i.@@@@@z'@uG{xy{{0'R迠׫`#2W g]y=zV[V7o]   PY,rNu%g    Ԕwa   @ 4NKj!Ƈ    ԩOlwqYY+/a9K}| xX(#@@@&G߿$T񠉠ah     @= Azc5d)C5٠|g#2c]W)֟]brq;_a 7GS{DPrb     @u A$~NO`ڏ+OC4qqa_i6|þ)lƕ}?l @@@_$"ۜmu~êÈ۩@@@@@ :=ىd͏K9Rױ)w_I]g[͏?9:]:idR@@@paGvܤA#      :%X 'C/?l']>}| % nXwŕ\\d"  T@WD@щc     @ A]t#>QjXb^_6\EZA@@߸qS^DPW<0 @@@@@)w(w*iS~[-(5K2J'o2A@@:j&DuOC@@@@U*Y_(ITEϏe/s pi䚿l 3'@jZ)G /'W+M?5bůr`r\帺lBc 曳E@@@@F2MDzyEډ=W9I `9 믨z+0Cc迸OK/p/SR-\}r o>.ſۯ>tMpgD"K0@@@@@ A;?'.'aL牔=/(*XLYW^Oַ|)[#  TVA+\?A]?sə     5%@u+7vXhIr|Ru\n:\N_}D& @@@>jS::TN @@@@"ϰy| x"  T@oj2:"ku7     PDPz"0㋜;.rZ!e9_--r/B˨Wppݙ^q   P~_R"g!    u*@u9;zqGV~$E t#D}j_/se.?֟~E@@@IQj/59 U1{Uia9#fY# \F+\/[L{ пVQ poOXk5X_96kX5nl@@@@@ LSa#"'af|vbmUy_X΂+*ཞJ)L7P/SR-\}r o>.ſǿOK/pſb?mo}S/?-Q8 @@@@@wDP{ISy"m z >"p֕өg%m_c   h"ODP\r&     @M A]{Vl=){/m[}Ec]X'_u+roy#oA   Pb|̭\'ZDP@@@@@*"@uE؃'i'=%K/N^};_["  Ԙ@%CVTRC@@@@TL9'+Ob4;:F_0]f$[_W? !@@@OZ;#'SB@@@@jA2Rd'.Bpbek T|ȓ3l):   "ZCCZ9ƍ    Ը}5̸w"㎋GHrqdu2e\wf׿o\#  T@WTb|     @ AĦ}gNg񑕅IѿB"?QWgYˏ灲02@@@jR{KMNB*    ԳϮ' 0]0|Oz;T3̑ {6"3[b%&)_Gps&<_ &lsLոJKxd\OAte~YOi戠n%     P"=yx8)ѿ.5P [^ O7RPLFƴӛeyYjo fY?YGfOog3D34uGuN-'    TOw&t?HWHf#7< "Fo\yW/v@@@n^E"&,Q8=꺝ZN @@@@n"3ߓn|OfHλ#qr{i<XȘuHgFֿ- E@@ vn~~aM8      @J"S>y2d*vbC-W.P[qQ\yE&   @4LD8    ԺeA720E!'ee#W/Y@@@8j7!@uu@@@@@N>r}6ՂR#8,XK./믴H&@@@V→nB|@DPW1<@@@@@^EODzZ_XY_H«(>믰 A˖<Fǯr`r\帺S#_Z)G /'W+7~!4V "k9[@@@@@j.T؈HI_q{ۣs{֟` x>):R M)=?r o>.ſǿOK/p/SR-\zOG[KyvK D8C@@@@Խ}yxHyۣ^_1utYIo}[uA>   @e;3      PSDPWhyc[DKc5֣qXWE ։Wt z2q"  Ԧ@}9z%&skmWuG}DBY n61 a6b+6bbXKr!\QKT\ 8y@腄~sowݽKUXc1ǘssh2ݲek@$  H@$  H@ԋ}jXկgȸvD'|t2j?/OkKU$  H@ XqnQJ ꮤ$  H@$  H@$ z88Yi=K1XJ߱TylYƄh$  H@$ %P&^ɬ^+I@$  H@$  H@X ,';m NU m7NyQM`?n$  H@$  L [yX㰂zΜ㖀$  H@$  H@$ XAPXlT9֯Zo 3q_l\ $sIY}wڸ4.$  H@$0V Iԓ>CO$  H@$  H@2%`'v;s;z8++I?,U~̧+DKե]#PXVq k  H@$  H@K@(K/Kr&xVPO84 H@$  H@$  H@˙#BA`]q/0.JKn@IDAT-<ШlZuh&c%Q+#uڱ̟A#aF@]#^Xù\s7̈ ]#WXO{ĻfŇz/H@$  H@$  H@XVP/FEnp<3&_GrunoK?8Q(iK3e?8Q(iK3eV8; XͲլ^SI@$  H@$  H@lVPx~:ߵ3 L[u_iO{ <ՙ|V^z?mo[{=  H@$  H@M`Jo;θ9e e;$  H@$  H@$ &`tӖt2.F{[=[7⯰p럸,=ק!90, Uĥ.t^򕇒Iw^ B^:٩ve;$\F{xhos~ƁlA) H@$  H@K@ɠo̿?ϸ!ߕF($  H@$  H@$ jXxS8K:N,U{+PZ-qG:=Jm~=O< 6$9[EML34|R$  H@$ "\~ɚML$  H@$  H@$  ,qVPOroV$~+ɟN ȝuL#MhA^$O[Zؗ 90䂁_s\ՆX`] t?_!X2eVU ꉟ"( H@$  H@$  H`yzLJ_ҲpX׈2bX dP\u{!P9Mڽ*cg<0*E{{UxN]|$IL]zW\pAEuD4xIpOyU8t,b_f7/ͷKp~??~-_Ϗ|{_?l+ACzHpv$  H@$  H@$ z~'.1CP8*[!xN;N"Ovx^:GMرcINv"޺9Ʃu:ƀC~R3*jg8uw $ZPZGO|Ƀw~'7xc3*4d__gDG,y/CI%.%  H@$  H`q ߿ ydZ>oH@$  H@$  H@DzW8Iƭ:-P={qG4 =OI[.#G$IE4Q8q"A/:u?%~҃}@SN]\:dաxT*S|&uyӎd#׿IxI]JrǎIgk1J H@$  H@lOAwv?^'{v&tVPO9B H@$  H@$  H@˒ 5#*A듦0R%j[f|Bȿo߾y{^ةl>~xJ-[ؓr$E+:6I< ~юN{Lk< Dǿկr# {WP߸c0~$~HN"W@Xa~w&OI}Kj#sSd~ާ58 ðjuwX H@$  H@Hsd'rR&PVPO9B H@$  H@$  H@˒#A)ܴWV?oM6%"TRf͚dGqbGMҏ [t;:юN;iGƓ5fXA\uįrhs$ ._$cJOU3$8dĭ T2y&YQ]Է~{j[ꪫ,URx~SSq:cm[ϠTխ̟!2B_s\˨o+[<ןo~/]oYsJK@$  H@$  H@z7*"{8I\t]ve ^$o$9;;@&< W 3VNTTSxN{ӎ?;KS'y'ݞotE;y8hvtIXBN>щ&>y2Ї>qIOnH;ט_JcT37NSKd.\"a8ȿDfa_Υ,/Ys) 2`F]AGv k=<,uT%  H@$  H`B ,ߟ=Ӳde** H@$  H@$  H`yzO`(jX• EiH{С]QN;N{ӎ?vtڣvUƊຒt'Qe?UuƯN#껏H[-]w ?- <ɪW tvtdhX֭K׮]Ν;|+_$~-Iy/d\_]w)+=t$  H@$ yߟx%. +$  H@$  H@$  H +ϰXxJMKW?l%f]*7??Jr͸&I mV/!^^TS)^W^?d8\Gv]>kpd|MIL g\HOwT_ ]؏ {<1id?y}#I!?%?n!I ɩAI$  H@&J;AS$b&) H@$  H@$  H`-\~ިTHE('PQ5EW"?$=$w28ޮHwb}U8ڡu&c?t}}٩TޱfUҟ1+{k>ĞKw$ɸϬd:YWW[O[d~u+y oxC7xcrK[nM}ޑ{|{!izρӈ# _pQ?G7OO_*7G7OO_ߤw7r>KھŸ;! H@$  H@$  H@+GAOXXNUAOlO^ݴ1mLwܑFռ'л/],Luwj*Fgq>iGGKM_=@3gwy'/>'ZN4TNW7UVI9";nڔfΟg҈>O%/I*GTTYJ^ǼV.p Fk w%5?kרJj<~׮Qߕx?]ʿ+<\F].'g>߿!$  H@$  H@$  H`~bba$_P5NO*?׬]OO?%y$ݼI#dw xNhG# ̲9 Xz''v %~nwP機۾9+:+8bĀ%{kїK5l۶->$o$o$$Wuѻ\jb눅_f H@$  H@Xdg"S^6魠^6SH@$  H@$  H@XZ^jeX~)dkܪcsǎ|gk^~6ɋ/8د 7JΒN؎VQ'Ndy(U8U˝#Q\xbg\={]֟x|O /0IGՍsVd~$w_+~j*W^Mdn5)Xek܎qt$  H@$ &_п?WnZ$  H@$  H@$  ,(+dŊ3.驫_Iϐqc~*׭["ME]$~IY!>iV:Kxb[ka:TVБԲpg܎MɁb˶##?gsVR$OޒQ+?UJ@$  H@$?q:N~vWWVPw%$  H@$  H@$  # JI t; .,/}iwuWw}e".N0aG+K~I*n߹$gf,u:|㾣R[seuћ5^w.'FivtǎN{GdrKk|$}N>J/Olby{;q`6H@$  H@X)?K2Nb2\_M$  H@$  H@$z̳SU(*ceu~Q~}_4o9/q8%r~37ꃎ.r%bڣ=IrM7ݔ_N8'btL3F,kY=e>5ߣgt*$  H@$0qZ~~-ϑ埸 Yzi̓$  H@$  H@$XA=)ΚQ[b_~O|r|$w])AT2hGMOU[&p H؁%=]=zJ~-˶G?W$  H@$ I`W/YQ[A=s$  H@$  H@$  ,kVPxzKT\v=yi$5.t~I _DOr=:?$臎r?rG{i׮]I>$O@S)ߙVw@c'7J=tn*muz~cr.[׹gX#e|`߹vo|k\]9s2Z~`? ǷVfd+W$  H@$  H@ 4 x7Ց4T|͉mݖ^ؗtc\W7Y/'Oa*xBz߾})ի1z}tO__';c>ow{]@܂5BJ/?Q8{HRz;gBhG'! ~JNj|TDcG=ё>hr馛r͛7'֭[zvC;c#r >uR|U 83 L'XhM M7{y,&&ޛO<ZB'^ [?2`F\0 1G jׁ$  H@$  H@$  , +G!O`x3s׏yO*׬^B/M@T&o۶-1N2vhw'|2mT=<5H=U5L U:`G=z:x\+Uǀ ^#W~ik7rޕ+_q~;ոm;`<|Evt#3^S9}$׋.(IlLSM\nmTPƕNN6t{h^giY_x ~0J@$  H@y ?K k+ `4K@$  H@$  H@x XA=bÞNf.Y/hޏJo1Ydp I^I^wuIRI\djc_&LggIRA2O=T+!?֭[Q_oWu"X g>#||s+䳤g[ȏΉS;ؿw jc )CGҿ$K{^v+oXI\͡CR<yTNs;F4TE^Y3F{xhos~ƁlA) H@$  H@K@ɠo̿?ϸ!߳F($  H@$  H@$ jXxS8K:NK*_.^$?O&O #GrE kI~T^Si?=/TlLN 뤜һvJV*{챤S!͝1>m?]]ۂiQNU|*̝ϥ|G8Tb_UUf{t̮iܾUIgaxauu_"WCI4'S{ᕩ˩*tNhP9{U-Tf3^*?tE%zi*sڵq3q3j^>ċy:?PJ@$  H@x ,RGES*q$  H@$  H@$  H@XA N\W֥#V"|ֳ}No~sTRSᙳ5?}ɴs$ׯ_$Lߟ$ySzckrG6=enxtwp(G8J¾rD'ÎN;{W5PQ~H2q8_<裩 i9۶mK~贳c|1OR^ڗJ~ƫ$  H@$ $\~YX:z̕#$  H@$  H@$XA=aIjV<(Tv[|;yQPqJ6(KOI'^[Jr\';TBǼ}J~]]Ǩ{KꫯN:E2_qG;:m8<@j馛.i$wLS9κoOJ/{v̟ +|ןo ƽwq[Wߟ9i_w$  H@$  H@$ VPIK$_ e`1sݺu)e]䭷ޚ-ܒ$wRswn:|Џ8HݵkWB)fG6>S:4so}C<șRgⴤ"|<.OV MQ6nܘB?SI2ysN1? (:=?L~ܙMElS9gTO 7)WVWXE*RĈFQaX?ʿ38,X;gTcqXv*Ψ(`tߟCzHpv$  H@$  H@$ z~1CP8Щ\zu @*wEs'I߿?Iq┌C|0*>PIys75%%v{b{I'>Q'ۨx ok~P9]1TS/9 kI/fHIyiooP$wޝ$io{M]R-팿m]%eb?G$Koc~]~茇CM6#G$yw'IE=T^vAɎw_25IuR;YIV9ME([رE'n~q31nl$  H@$ %Awe~Ci\e j׀$  H@$  H@$  , +T~'==`34#{{{I>I]6I2*ǎKQwؑ$'/Ojڣ=#aG*k;t2~! NؓUwINJeb?$Sq~U:z ^n]20O=Tҿ/$=/I*r#O;ӎ|衇#;YTzoݺ5QA]ڌuEvdW?ާƕJ H@$  H@Xg7n]nQJ ꮤ$  H@$  H@$ z88Yi=)T6#T#o4O?aT2:d'wRO>h^xaq1Oi%;cT6?Iۿ$'2x'z2z&_t*C4wOS98W5J:\[ڑ8!!?nQ.TK@$  H@hYؿ?G§gRgΌ㒀$  H@$  H@$ XA= .VN*$rOF)~T_>b+}CI~Nf%юN;ةh?Ar;?qqc;:~ '+7*cxԯQ[u_im_W13ݻwTRx/$<Ӟ$f=O8ߺmkXnmҩĎH}>~i:\N\j3PFI#C9T md?2CPFI#C9T md?2CZ'PxVŞϳ^γI@$  H@$  H@`VPxrl>__M;/`|ęZל8]]$  H@&hw)/YAK@$  H@$  H@X4RPXqZw~G%Ԛ<7C{PsGe2=G0믿>E|ޛg<IR qأ, j_)?ü$~h*<\O8ރ |3۩ywo)G?$?'[ޝ_$anká20^~<>H@$  H@DX'zrଠ^%  H@$  H@$  ,GVPyVcdQ kJj*Ey%=|ps7؏%t"ΰz)=;h~76 2|fB4wSSKEuLxG}P{u!c{K~Ꮞ,uN?*ۗLTH9r$THJv*婐2*Jf\#Fr}sƍWF>8;:J.W]uUTҟxĉQqտ;v,5*&5oSU&&G/ {Ƽ`G=iGRM'?{Lb_ {,%K%sE.]8RhG=Jw 7ᄏG^~I߶m[mO+SZ_)nIE4{7=R L4֭K6mJ{?CǏqcG}2E'/N;JÇH7&I *&>29brF_ZgFW\OEJR#Uq=?Ute2kgkuU\OeUǡ$]LZZǡ$/9a]ScYq(+kԃ[$  H@$  H@FD 4 m'7~ƭ 'TRS|%ur -[$;:??^ԅ+L+ d1^OYJY}o߾O&~ر~TF&;z9N?ȋ6ӏxio:gcGSaGM}k|K^$/$Y׌# ^_u@IDAT [)<7Ÿx̟苜9ŸO\P'b0Ѻp~ |W]/!k_"7k~-rJ3kfQ+DF$  H@$  H@$  c[^ ] wTc*G7ã4کKѣG{#<zNލ7&;H*i'rA+/%/*g'0FĉiϞ=I>SI߿?I*~d@?F=u^q 8]%Xg>s\+^$u 9>~o4s'n?]9\s[zs{k<[z?suGcVPBK_ H@$  H@$  H@+G NVZOb#qڬq4G;w&SY=QLݻ;Tn޼9mݺ5It*/N_7^$LJB~'R+Td?~<٩ . ѩBNMUՆ|85QI}'THGիW'?mt(&/&.:юN;iqщK>贷~ÎN; {*۷w_v'|3=V37*x睗u%=_(}_׿_.~W_>c]S*Wa+)Ь͋0+f' H@$  H@$  H@/+Kk IOWl+*|?*Eglg\/~QYjIlg\TRQTr}G$袋^Ga\hGG;:㖌vtک"`ƟOBu# ؏q8g!?rT\!Hi{B(^-q>|ƊHu}Mir5uO/VG}o4zǻr@4t!`uJH@$  H@$  H@ XA=bT:l;*/T:[vHKyi"u~lO;|SӺuܵkW7oNT782i;:юN|%N\*שTNSL%3wH?DI?dG(׵kצ< 6$yr,ܢ,y_)w֤~<9V%>%?0i:r+)yh-#W/zy g:,+%g? H@$  H@$  H@+煯ٹtrEh&Fj<{{NjQNMQ ؎ʡr/ݿO^$~%_)MP?꫓įgX;b_TF߿?ڻwoRT.S:cHT4I?(ߺ~5VΒJmޯ{0H?&?+RXHX؀A3~3"ZWeO&Ob*~3ZW7?whXA=F$  H@$  H@$  XA= a'B '(='Ntm/Z*zo.[nM򪫮JrI2@贏[ƼT0sg4rϞ=i(TJ8q"p^۶mKy驼}^-O%3͝HN3b?)Tn޼9P'N~v\rI/)g}H;4:t(=rW4H*(TS!M|d)o<]91(YATHÝJMr"?J`G/I/G{lޮ2k{Cs7w+ɘh7(}^*`!ȸpF|/ȫ33:D{#/r%Bjq84 Eu{72*_X,ވ˨7hXA=F$  H@$  H@$  XA= A Tdr,8-'7q0n ;:?d^j/GBIȑ#=ܓߟ_$IqEe]SO vmJit*/QNW^u"5s" }bY'l5]E4TR#v^Qe\_d{̟8Km{R{Wz){u=Rj/Q{pE>*Zs(=smKzj{u{=%  H@$  H@$  H@CV8Th;'`]OtFEo^ }Pٕ'~'/mqJ|1u+L$;GGN4wE?N4ĥ2z͚5.JJ~q| ݐOr]\qU>{CS},28:ǽn}ѓ9Ϛޣd R|yO8 i'ߠqЏqD;1Utj߻/]Ũ[\?_^c0''DNI ɜG% H@$  H@$  H`z8h³65IbELeܼ7q_i|1:m:w?Φ.{MlTBs2;coʕtGW)+6/ %?tPKB'EI{Im~/E{r؝c7l#ٻ}}{21_\9oJxONՖo۪$  H@$  H@$0VPAK'Ķ$r+o~&Kq㡗N(;C͎w'ر#T>\5 峫}UL>y4==7㝞:VJc|'8UN#7kڿt0WNwO^ o >ġ$ɋďؑJkur{+f\箄鿊ڭj[;d2ן72wex?\+w}s H@$  H@$  H@J 1'.u|x(6Y1b'o>A8{i9)Ď?zG;vxٵǸc'>Q;:]Ӧsf֯N!6ʕLOXu%?>kס% ={xQUfoZՇS/r  s(gxgl3U u$_w_Su$_ÿj/c^b绥߸m=,|`><\cWwFJoȞ_כ _+VzXi&\~[o{k}zqb[| "p- ~,P)8/ \<X8?G z ~,?%d"֢?%)몸˪CI23CI"K`z3X_%  H@$  H@$  H@CzhtصRկp"6ָUV!C*fvc6鏌q?'.\<5̙c?Q!uyn\+dW4p {"WVs?٬pCOT䏜é\ |hyL>?gs5s?#39"d}8wt^=+d%EI?=ʅF{DŽ_eKux!p觪ai>#͟Y̚ZVm#жN2ΟZ?Bi4`sh['RO_FX޽; I~'F.:/h h_S$  H@$  H@zfx"կgȸZ{wqlSkMQ1wȘ?\3s%OGrg*٢H"SQ$#siGnL~?6`y=8Z2`~\iU>#{ADz:b~ls(W`^,t_|z} A'~WQ7={ ;j':?b\l7 sߟOɮ~$#M i, H@$  H@$  H@ Fe 6囈֓|7]Gq0ӌckI'vڱEÎb_\s(^%W^ǫɕ_=_wݿPLqkrs'<<0+g{ϸg;V#ps릏U5TX*{NՕ3zGWF~#O)@Po ħ*W/AJ[GQ12 %1Ci}:*zQS/AJQi}kl~PfPv$  H@$  H@$  t'`uwVCy'Gm'DkMLUxsBKE-:QNxKzN??J}߉|_8L_;ϒ:h>2>x(`]č~B{jU\Ob֗V iUSmIVSYYz"|@PA$ H@$  H@$  H@ԃֿpFk}BϺ_"vJ#۱cGy/M%,:d͏v?mqN_΄K|xَ[y|Cg)5Snȕ7뭜 PTrXrs9ՋVpx i?%gL{*b-^ƭ&9CG__l\ $s_{8dh[^o 3qtʭ@2gp:_~έkh2 +f H@$  H@$  H@7+獰7w&NNhxJ'_-:?>!moKر|E]XJ^G?t2hyMcU8F.9/M}xv_ #k*UՂ{;sEw!lRrB6J+0𿎟r;Oħ '/3 #'2Ƕʎ+P#c[J#~}ԟOy;+>+_^7s2G_T^7Qkkz>+ H@$  H@$  H@C-S:!P:9tbDd_>`jTNj~kM{$|$/$WI9GkG7#uj*ccިϹ\Q|ԑ]=Yj~Þu^n?UUZSQI^#r;kjSji9"qOͦC'$~&u%wyd^߬$~UhuY>+v}/>bZ+Z|jG׏_H##7@bRv#O`vBQeQi{/seѶ0_^JK \9aYm}~l_=o> D_ ,Y\Xݘ$  H@$  H@x/:@=♧qb 'm08?<ްaCʶmے|_ӟ$?%y饗&y'yd%25#wp4?CZUU3X=TL#KNNr7\|x&W<+UN[1֣;zT^l%og]5#7'?[ݵ]wPG~GǓҟZIzӎ$Nɯ8Þok7E2q_䡍o[{K5A׹_䡍o[{K5A׹_䡍o[{K5A׹_䡍o[{K5A׹_䡍o[{kL>@$A$  H@$  H@$  H@e㬠sȳ'TY6O7ʍU{Cho~ j*oᆔ]zWv[GMiO{ZKInԣv*yic^ +8+qj] I֕UsU5ڑ>R?+6P$u<{~k&'e\f7=:/N~$.F{xG{l7ŵZ >^F4D{#~ظvȘho7F'Bjq84 Eu{72*_X,ވ˨\Cc}Zd\gG{#/r%BjqZp[A0WKJ@$  H@$  H@"qVP\+R'P%ʱd㴜LZ~*׭˕IիSoo'я~4{7+"5kIy5Vb~;G=N]ۿspuKs;CڃƎ_HUټ{?Υ {8%4OџPL;n-P3 kqdYj\uѶJ%{5~?ܺhG^kEon]R{^5_߃oq_9֝@A) H@$  H@$  H@PO<z5@sNZ~K%a*c5o{R;3OI^}Inڔ2|ѓ6~i? qkȘ8iǕ1S \ĩ :Nv/C9Ω?/WJOc8xJhǿr"WYǭ:7ڻ/1A9߻\Ei\a;v,m?I7\;-]CwW9w3kػwo2ɟI^3[A/[wBwn]:c}qoz{ޘ"m26a=:Q$  H@$  H@$ !`ppW`5x =ip]vmzGG5'UJ~_~y|ӟ;9$~jQct:v$HҎ=Jrߪ'NRꩻW&{ٍn\=}ZRگ}y{[p;WmL.:-Nl/]8=J~m+mG>&R^ネJ ?$w "􎕺o3J6*/m ~x{|3>:>W~%oX%ey0){?hYn]oߠm牫q$  H@$  H@$  ̓8xb>{P1M%5:TT/H/$o$9$'cďЉ:A;{OhgNqFđh8:dԁ3kf5Մq$%;gVă2*OAw'>~1lor_#;uOkx?;ןoneWV_vꪫ@/ zkwƞ `Kɇz(g>l:?o}k%Ne-6;$׼5)ԟٟ%w}C?Ag_mw|0_6_mH:5dpI@$  H@$  H@J.+T*qt=1dxMh~*8w* jک y{ޓ^ޝ;w&C8aGҎdN{IFZryrΔO ~4O=GȐ!N<ڣvюa?$.{Iҿ/Nt_73&4y.KˠgK ^S)' 8=@1ސO\įo̟ 8p+zIFz ɿ1Ucǎ[&JR8w~%y Ǐ2ٻAnْb'~H_&Q SW YOx!]e H@$  H@$  H@@M h'.䜬EJp"^DS{_>NE4B;__%g?;ɍ7&IܤD&3tJvڑīuZ$wHs"O7N-f 1 5َ,8p/O쏝?i;:1_Kأ?qr{ &W'CI_sº*Dz*PL&p- ~`-P_O@a]4&4_5Đ̛KGyHrl '2]y7<9\8'bK/dcȟumVmB,&VS!kɼ3OFrԜn0GPA @ @FK_3OHݹRdո%dռUfULwT"}aVYgR/{|{yzm6/{(t oL=wfn[ %YmƝtSOɪK_7nCl*U9} 'x^2/y!^.Y*ߚO}㵺m7+ʪ?7sΗ̿y1"ə{/g|˭GM~/ ⓔgxms&g?֯6G=/?hWۿeKWґd @ @  $2˜{+V(C}=N̟'ck-SxyVyX=ZRW\q|3^{oswqy]q?IIϹfp_4٥˟tS>٥˟[zf*U1c?<Ӽ<蠃T#i>/wxS?+;ۈlOΑP/u6bͣןO>%ls>fk׮z*f]η{#TF/*t³7=*e~I~绦dݷ+ʩxao!m^iYsG6YY-z7̯xy!f)ca8jd.ۇ~ [Szd1_߻=5yOJ>-u/MdUo}ڧT귅~3T_vw>.[V j= J>4c<"pmͭ_`ӳ96IvNph@ @ @` LnT"yuMX?t!)3i%H}oH+*_. w,뎲*lUY{N<nE/zQ~[mtIWkTVEO?훪B'C*kN>d:>_qTAm惞=|yߪy+_ ?-/=R-o=ήD׊ׇRؒZ18\;Ufls*h7U]9~!¬2vAVZwQ=۷gw: O<9t{(B'ϣ?!߿w"ThZB O2Nϯܰ3|.ΐo0ΓOr|#o4O]__%k]y~{pg#]6RJUD[]1iNvN"=3l^8GA=~ 5413R3OKm?[9@{sX^1=Qu?>w'>޳#ȏ z>zڴ>T޷>.P˼^>􏽼ӏ^G <]yȕz{PɨY5U|w:s۸;ɡz&?ó}ḝ=?xS`|뺷 ~_?ysx6t7ܺ3^~/xPi}PQo\%/Ͽk^PYPڹ+/?MWΏ]&K6[I>DxI{ogèp7C3;TNc޽sZO~B/ Ҭ}.? !̿^pe ;_|s}]*Mzag, _n*s^?PIg*a_gz}0kwS\[~u^NLNۛC?zFE Q%/ @ @  $35NI*WRwFQ UꪂV*uU1+k7|wuW;W8/i|҇ʯ%eߵkBώV̦MYmOQ?ODϿ#rس{]^κW^$gr[rn?(,{. tUˏ }HW_y{yPU xN lK/ou_ u 3˿3}˷/pTO}3TV={ޟqwd׼P~T~zs?̿0w#J5jDetL@ @ @@z!kQC@]V"t$#难Smv[+U*opnSN 3tOKOI{Uک٥o۲ngBZRϔ>pCE*dT,Vj$OyCNgIVgkogߖ*j_Uv:;}7Pu->^~KK?彷/WM|[“to ;g$̇<гn/_^y~/Uw?ٵ#}/:}m`fנkߤkɇvF>#}'2KK^~E3ӫyv&IsB*Ct2t~3\]wf!{y aշӹAς:W_@C_OqQE*sU,*s%=\y wowq^q9ڲ +=NxdIn*Bl9cGxI'x_A8CKy[,]_6IqIװRC|)?O??#ϧB}?GQg#7FoʟEߔ?kHy1Wq]tYԪ[W:.Zf}Zj`-/{I/*e|WΣ_~󣯾ˮZ./_i{Z/yօ cz{篽>2TʿyWo5kK~wm <~*?[XvIt}J!n||7ܾh;._(fs ۏY{_p=8啡soP)3"oUorպzK>*?p!.{|GީZgE>>OK0!\,;^>. w*_>3W'z7_+z/]_yy+C;o+l>.6Z!ǭ$#  @ @ @*PA=Q;@wg( Qw />|/OPikJw /?{q^ןߵn 3o6"iKoB` zNZl\ۊ^s#Onӟ՛.g'~j|?Vz[O]7^.WVz,;|1go$ן[j}~!o?w{~/?wz]{sxN8o~KK8$,o_yaX"clBu8` :`)xUF@ @ &zb?cѾmr:8wtڢDwRUɻ`*ܻQV;to9zVtBBeI'ydx*TԿD$mEXeok?W~տ)]04m~7uזz_[ܕ\p}\IW88ӈo2Ͽ+B-W\Q<}>w/Y0ݾ˟<*.\M|*w BEuw!Ws>O*a>do3T >@~[[=:/: T~pÃ^pc [xן 7{頳r ̷p?T_p7}ӕ{y_K>*~z'?Bܽ!?/~cVRN_/kֆ_~ia|oy}ۿʿ >xya^)USd;r۽sw GC^ÿ-6#9Bo0^ult 5ׄykz_r9k{ˋOyK¯_~\8lZ8oy?{} ߼$NMݛvաBnsgU;7|X-6[#QMH)EVvbM @ @@MZĖ|Û,mH[o1]vIwm;/wi?lM=) 9U%wO337m2ZώkĬBw_Ui;~YˊS岭pJ2OJj\-(W̿@F/)CcU#|ދO`7xNó8B!Hxunwnaw?P7c$@Ve*%aCxLV;ũ":U!-*mmeڟ,LZQ̿_Ճ04sn?#ϣ矟f$O8s8z E{u yucz1[U?k0O>nczuƛfT>._VA݌t+wz@ @ @ ~Xc&LR;X CKw\"#ƧƥnF8+ &i|7钪XVe<-[x{wn htU>ZȮ%x%eo,yD痉hbw̼'iW@L25 k4^1 ;f^E瓉Ӵ+ &i5*.'d|?3vn:2lMZ">fo @ @b1{}~f,n6+LS }Ӷri\v2I7JkH 7@2n;oXVpGz;<={TANAY hI#)#)5H O ɉgOJz+%'75Hߢ'+-c9޷ um3.c5El֫1r}jܿs$o8jOLp?l$SjɼYS(%.m[ϔ>i;Ѓ&<;Mbv^q1H@ @ @`n([t:vK ^q1̮vc/aKsAWKQLV[5n/h^4TP/X-k.:MWUmˮ~d>ؽNU 38ھT|L-'wvī;}ITUWvc2'?K}qOٰaO XoV?tdEXTu_* Edli*Y=?UH@ @ uzc{]5.~Mwm~钂e$o1]v+v}?˻?[~wezhElN؈8HCܴ決ĉ=kC 8ӤYx؜s߲eg{Gyd!q^.[E?^M2F^?M/ox<ꨣMϚj'v ?{^%N~Ou϶]2l=ڴ+JoV?:!@ @ %Pwnđkr_nT]2levw@+ʔ-x's]_xi\=!f*>Z6HM%_@/8ONοl"%Ipe8zEm/H?/|'ԳccybW 5H`~k_1whaj^Ǫgys7{g{7/5kxj*Ԫq,z[Vfԝ%O@۟]~I^ErmK2hi]q1Y+~RIb 삒v6t$ @ @ 0kn{.6Nv+vsNO-ؖP6x믪+te.]qvQ=2h1[;Mq4Ӵhʱi޻W*.?7mg5ӴhʱiޙM96m^M96m;)ǦK)Ǧz{g7ش{ 4ش]o/ߔcv%Дc]nUA梴v钊D6r_)m[V|$q̃^Se.? @ @[?!]2Ej\*ϜϷLquY\ݡۅ: ?_yQ8@yTΗ?XG?U?\bGonT/>Y@80 jM}%gguّ @ @d( A%P7޶@kq7n|*߸~RE nj?7v8yjz6RwD{ IJg'J9 dqןɦ!'?n.$لIq l돛J6oq\)?ٌprrOHg$ɺV7޳Z0IIJ}AbqV @ @ :c)s&IܳQXm4on{\e;>|=;jt5ѿ0? I;Hَg1N_v_NKl3?GLA\f;?/L'g Rjc`?#`ŠSW6sz9|#Pԏd.K3TaS,Qv..? @ @,5A]ўmxcRjIX"rAq1emԿ,p4)S}?GQg#7FoʟEߔ? 9:))su6R|S/(ly_QHM}?GQg#7FoʟEߔ? 9:u,tQ56;ϬM3M}̯I ӾKl @ @pkZtaqEѮmWkWʹPAcc*˵+Ѥrv<`}hYp3cg cGnkoB_pkOU6dBZ ##n35sH i­/?/by}C)!ts8[gAvX)lC @ @scw5ضMܶ{5uC&Nl駟%KvZ5]c@9[+9bK0c o|Vd?/ucv?~Sl?q"uc|q(688ܼHG1̞5οE矛((ۘ/߳>{ǎ;wUQaqpbƼ= aw8az]twڵ0v@ @ @`pk~#>Z`qmnkݽZ.PA.y6~}wg*ށzGɵmE)=X{?.m.{](Α6m??^ڼs~p^׌6m?\pc ^s֭[w[lY͓vNx)YKUڔmUrG=En;kcvI{…{v=\ @ @ yGBU_Z` AvcerM-olKUs⬿}t2Us}ŋ9oxٲeۏ\}S믛}}G>u֥|+?;wnݟ]NEkw.]wSǮve i{U]q+=&ƕG|l~˺mb]0;ϥ݉:ي @ @s[؅⾹B-:ڋŶdٺ9bnuQv+S~_;[sv?yJ}_J?[`+V֝{?v_cXu%VYqP?οV/,q/SWFa~bG?S6mgw߹zW)tu[qU*E=\{e //;{wj]~+cyl\> U@VE0֮6sq%~, TwB/qwWo>[v۹֮ /@ @ @` u;@ܶ<]s ig׏t/A z/[ĎeLjqSR/ƹbzo]uԪv^nҸ+ǽUы1mq6[]mR> j2ٴ]Y.l @ @hYݠ+ml^-[JjmOWz*(VO1^e>ӛJ+PAQM&ɲ8+.+h;nZ?1 n»~c63Hw>rK2hudOɦRyC @ C@k_uYU='{Ylǭi==)hQZIAvj/Y/DI\As n(c/'m_fwXίI;0.Fq.ꮯauýl`b[X^Wo+O~ @ @[jS淶D6vn[1"21ro!'qMݶrK($vmݏvX9UsW[2dg1=eW\JjSq!@ @!5aSvHצmtKm] XA 1{a7m_tTtIkwWqq'c.G7H/mvLw6RA~٧#zF @ @mZ:X|U{1l{MA+nszG6VjWS7O}^7X5;nѴ,AɶWҋR^e2/m+oU ^^l[܎)ư @ @ 0.Vub\v͍MAcӠmOi߰vU튓~H2N׏k[=68K;3叵@ @ jW)ԏkSum/(ݶ{)F2X*3 (.XPADqAtJ/W-ӎؿOv1xCB @ mUbq^UW(J$oR̠88S5L:Z8.P zlŠnj>jo~銓KUϫ@ @ 6 u*XWՋqe۲Ťs'KKZtJcv'nڍT#>vA+ڵ=T[7^mǤݧTSnuّ @ @hBg,]qQHJ^Ÿ1i{XxTw4_ծ8IGd.bƷտ !@ @ 0G,]qOomutVɣHR$O[]q19Xu|*[-/;[Me1Wq[6!@ @ 0*U7cqU6NOk:bex3 ëIcicXbv$m٫J @ @$jqҭSkȧX?.y!@ @&8믪d >QX9D&yZL1&5ޘxc~ @ @-⬿^նn|6**X}"t+݁բdڭn^7޶G @ @.')ҭLmL׼@[,W+nTRXv@ @ -V/_ծ8I[Ե-bm m[حT?)Ϫd:Ӵ-YfmFGKGB @ @`&]W۸.{LM߶]Y~}@-رE֪vS~5o+m>G @ @jq1]vIKےUmVcfޖ(|\v.WWڃkobWS< @ @e.ruj'k/]|V<1O>jJ_.&mT\̏ @ @3M@ UM[ՏOےE [bԘ$_zoUXMo<=XQPlZk[Ŕmm%ՇU튓JoVoۣC @ L&x뷺(ZtI'dSI*q\PSoX']2Nq6>eO @ @ Fl*.>.],N>I#d)^2gjge*.fDg-$}=quU'gVWKZcq1K8ّ @/c~koUxbH@ @  K`V~G^v.cv^K=K){UfE@nv\njkS|vKVS|J/~@ @ -6jX\U.qer&be]]Wի#!@ @ 0.^`/WnzqqWӱS1ik׶}FeJx m3H/۩vm]_KoN @ @If]]o[ѫW@ZڛƩdl @ @ q%`l3ծ,T;ŤmoR~?+: <>HsW$mdX @ @(h~oko[W?ȚfrZCv3>nۏZ/+m֏@ @ q%`SLŗlQwOS{)O]#? Ui.O66X'SկLj @ @`2Sd1؋Xn7]ܬ.7ݶzllʪq: @ @f]mo*OY*6cuXvVqR{1.CS[Y|U&l8u @ @ :.c~klVWUl;\\jުq_$ @ @&@݅T|_f/9nuvڶ+dl\4rl̮ecvL'xV @ @@j*T-{qאlVPk.zVmcŏ]GB @ @` 뎣JX̸c?fW;ɪqr6_- Zf5ME8XMŸԶ?AB @ .BÎj}qѾePA-$UCSq1l @ @hL/VoP ϖ]*ֿU? 9,nBSdLWT @ @dT7͇ސ8TPkm-V͓kꏵSjj/? @ @Jɂq6]bTq~Gb_0$m@ՉR586צIb!@ @ Д@kZU㚎vCZ;d75yRq8gev6: @ @h\]*nbR<~*ijBN4iv @ @`mg8W϶5yڊKI5ێS^+cۡC @ @ .RWmV\*O/fm)oLV/~$v*G @ @ "0gc&/~v*G @ @ #0hk Software Distribution with ESP Package Manager

     

     

     

     

     

     

     

     

     

    EPM

    Software Distribution
    with
    ESP Package Manager

    MICHAEL R. SWEET

    JIM JAGIELSKI

    Software Distribution with ESP Package Manager

    Copyright © 2020 by Jim Jagielski

    Copyright © 2006-2020 by Michael R Sweet

    Copyright © 2006-2010 by Easy Software Products

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

    jimjag-epm-84910c6/doc/title.opacity000066400000000000000000001012371521151356300173000ustar00rootroot00000000000000bplist00 X$versionX$objectsY$archiverT$topbnopqrvw~I  &06>?BFGNO_`abcdefnrvz@a}!%+03789:;<=>?@AGKdgjotyz{|}~V  01DHKOTY^abcdefgk"',1456789:>RUZ_defghijoz  !"#$%*5AMYabcdefghijklmu !"#$%&'(0?@SX]befghijko !"#$%&*>AFKPQRSTUV[fr~   !-9EMNOPQRSTUVWXYaoptu   % - . / 0 1 2 3 4 5 6 7 8 9 A H R X ` a d h i q r u y }               # 7 : ? D I J K L M N O T X _ c } ~        # & < = > ? @ A B C D E F G: M Q e f g h i j k l mk n o s 9 U$null0  !"#$%&'()*+,-./0123456789:;9<=>>@AB::CDEFGH:IJKL@N>PQRSI@UVWXYB[\]^>BYa9WpolySidWpixDTypSbmPUresUnTsecCUcolSpUoBgImSparVnPaStrWactLaysUsnShsWpenTTypSmodTzoomTallRVsavStDTmetaVspiDecVgenNamUorTypVpixRadTfrasUimSizUbgColVnPaFilV$classVactTraVsavPrDTtarsVcurFraSenVVlineThVautoBTUshLayXrectCRadUresiMTcurRWspiSegsTtrasWfilSensUmainCVtraTrgVcurObjVguiLinTvarsVlasModWpolyStaUbgTyphX E$#@ r#@Tg#?ef G c#- $#@Ijd$cd"eimWNS.keysZNS.objectsfghjkl \kMDItemTitle^kMDItemAuthors_kMDItemCopyrightYNew Imaged"sut ]Michael Sweetxyz{Z$classnameX$classesWNSArray|}WNSArrayXNSObject_Copyright 2017 Michael Sweetxy_NSMutableDictionary}\NSDictionaryd"uX  "SresSdel#?xy\PCResolution}\PCResolutionXPCObject"#?"#?"#?"I"C"#@"#@ "#@#d"uR "ATlaysUanimTUlAcLs#?EFcd"mfghjl d"ut d"u "@::a@aRSexpUblendWmaskTypUedMskSnamWmaskLaySvisTisShTopac & '#@Y">BUalConTobjs$%cd"m !# #@#"I "xy  _PCBitmapContext}_PCBitmapContextZPCDrawableXPCObject" #@#"d"u xy]PCNormalLayer}]PCNormalLayerWPCLayerZPCDrawableXPCObjectTLogod"!u"#$(B "'(a:+:,-a@SfilA./) ">"3B(*$%cd"7:m9+;<,- #@#"-I )""-D )#@#"]Shadow Effect"HIJ"LMTfilNTatts@(01_PCShadowEffectFiltercd"PWmQRSTUV234567XYZX\]89=8>? [inputOffsetZinputColorZinputAngleYinputBlur_inputClipShadow_inputHideOriginal#@ghi"jklmUNSRGB\NSColorSpace_NSCustomColorSpaceJ0 0 0 0.5:<o"pqTNSID;xyst\NSColorSpaceu}\NSColorSpacexywxWNSColory}WNSColor#N xy~XPCFilter}XPCFilterZPCDrawableXPCObjectxy]PCFilterLayer}]PCFilterLayerWPCLayerZPCDrawableXPCObject"::a@aHC I%M">#BBD$%cd"mEFG #@#"I C"" C#@#"XSoftwarecd"mJKL #@#"#I B""# B#@#"d"uNz "a@V@aVVV#@VaUdimLKTrectSisIWfilPropSshXTantiSflVVcornRXVcornRYUstrosSshYUalPixSangSflHOR S yhB cd"m݀P߀Q ]cornerRadiusX]cornerRadiusY_${{54, 124.65000000000001}, {40, 48}}"'a:k> :   @VrelLP2SblHWgradAngUradGCTfilTWrelRadCVfilPosSaEqStypXrelLinP1VfilColVrelLP1UfilImVothColXrelLinP2SgEqUfilGrSrEqXgradStopUpgNumSbEqa#@V]^gf`T_UNbdcVe gh"mF1 0 0<gh"mO0.7537326389 0 0.01256221065<d"WZ\">V< ValtColSlocScolSXY"h"#9mWNSWhiteB1<xy&'^PCGradientStop()*}^PCGradientStopZPCDrawableXPCObject">. S[Ygh"1mL0.6 0.6 0.6<xy45^NSMutableArray46}WNSArrayV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}Q0QtW100 - tS100xyBC_PCDrawVectorPropertiesDEF}_PCDrawVectorPropertiesZPCDrawableXPCObjectd"HIi\L"MNOPkQaS:TU:kW>YZ:a] I:\ a cTcapSSposUinvisSwidUdashSsopxfrqkNtdjcleu"h"e9mB0<gh"hmL0.4 0.4 0.4<d"klmmn\">IV\ ijY">IZ ikYV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uvw xy_PCStrokeVectorProperties}_PCStrokeVectorProperties_PCDrawVectorPropertiesZPCDrawableXPCObjectxy\PCRectVector}\PCRectVector\PCPathVector_PCRectBasedVectorXPCVectorZPCDrawableXPCObject" aa@V@aV#@VaTstrYXstrTBndsTstrXVattStr{ |B _-{{53.87890625, 130.65000000000001}, {40, 48}}"XNSString\NSAttributes}~QAcd"\jWNSColor_NSParagraphStyleVNSFont">kZNSTabStops[NSAlignmentxy_NSMutableParagraphStyle}_NSParagraphStyle"VNSSizeXNSfFlagsVNSName#@>]OpenSans-BoldxyVNSFont}VNSFontxyѢ}xy_NSAttributedString}_NSAttributedString"h"9mD1 0<xy\PCTextVector}\PCTextVector_PCRectBasedVectorXPCVectorZPCDrawableXPCObject"::a@a %">$B$%cd"m #@#"I "" #@#"SBoxcd"m #@#"$I ""$ #@#"d"uȀ LxЁ׀  "!"#a%@'V@a*+,V$@VaVfConPtVconPtsVlConPt ǀ _{{72, 20}, {32, 64}}"'2a45:k89:><> : A @gfdce "hi"E9FmE0.25<o"Iq;"hi"L9FmB0<d"PQR\">'V< XY">'\ Ygh"_mL0.6 0.6 0.6tu:ax I:\ | ~xfdjcegh"mL0.4 0.4 0.4<d"\">iV\ jY">iu YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uvw "a@aa:YhasConPt1VcPLinkUisCloRptTnextYhasConPt2VconPt1VconPt2 ÀĀŀ"a#a@aTprev€ "aa@a "aa@+a "a@@a xy]PCCustomPoint}]PCCustomPointZPCDrawableXPCObject_{78, 148.65000000000001}_{78, 148.65000000000001}_{78, 148.65000000000001}_{78, 106.65000000000001}_{78, 106.65000000000001}_{78, 106.65000000000001}_{110, 84.650000000000006}_{110, 84.650000000000006}_{110, 84.650000000000006}_{110, 124.65000000000001}_{110, 124.65000000000001}_{110, 124.65000000000001}d"#+\xy^PCCustomVector}^PCCustomVector\PCPathVector_PCRectBasedVectorXPCVectorZPCDrawableXPCObject "!a@V@a*  V$@Vaɀ ǀՀ _{{24, 32}, {48, 52}}"'a:k9>< :  @πЀgfҀрȀԀdcˀe d"#$%̀̀\">V< ʀXY">/ ʀ΀Ygh"2mL0.6 0.6 0.6GH:aK I:\ O Qۀ܀xfހ݀׀djc؀egh"SmL0.4 0.4 0.4<d"VWXـڀ\"><V\ րjY"><H ր׀YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"kuvw "a@atuawx: Ȁ"a|a@a Ȁ"aua@a쀹 Ȁ"aa@ a逹 Ȁ"a@@a _{30, 96.650000000000006}_{30, 96.650000000000006}_{30, 96.650000000000006}_{30, 136.65000000000001}_{30, 136.65000000000001}_{30, 136.65000000000001}_{78, 148.65000000000001}_{78, 148.65000000000001}_{78, 148.65000000000001}_{78, 106.65000000000001}_{78, 106.65000000000001}_{78, 106.65000000000001}d"u \ "!a@V@a*V$@Va ǁ _{{24, 8}, {30, 64}}"'a:k9>< :  @gfdce d"\">V< XY"> Ygh"mL0.6 0.6 0.6:a I:\     xf   djce gh"mL0.4 0.4 0.4<d"\">V\ jY"> YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"&uvw "a@a/0a23: "a7:;a@?a "aC0FGa@Ka "aO?RSa@a "a@@aK _{30, 136.65000000000001}_{30, 136.65000000000001}_{30, 136.65000000000001}_{60, 112.65000000000001}_{60, 112.65000000000001}_{60, 112.65000000000001}_{60, 72.650000000000006}_{60, 72.650000000000006}_{60, 72.650000000000006}_{30, 96.650000000000006}_{30, 96.650000000000006}_{30, 96.650000000000006}d"n0?Kā\ "!vway@{V@a*V$@Va!:K " ǁ>- _{{13, 72}, {59, 32}}"'a:k9>< :  @+'(gf*) ,dc#e d"$%\">{V< "XY">{ "&Ygh"mL0.6 0.6 0.6:a I:\  ǁ734xf65/ 8djc0e9gh"mL0.4 0.4 0.4<d"΁12\">V\ .jY"> ./YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uvw "a@aa:  H;IJ"awa@aG:EF  <"aa@aD;BC  ="a  a@aA<?@  >"a@@a  =_{30, 136.65000000000001}_{30, 136.65000000000001}_{30, 136.65000000000001}_{78, 148.65000000000001}_{78, 148.65000000000001}_{78, 148.65000000000001}_{66, 168.65000000000001}_{66, 168.65000000000001}_{66, 168.65000000000001}_{19, 160.65000000000001}_{19, 160.65000000000001}_{19, 160.65000000000001}d")w:;<=>\ "!12a4@6V@a*:;V$@VaMfw N ǁjY _{{8, 48}, {46, 27}}"'AaCD:kG9I><M : P @WSTgfVULXdcOe d"TUVPQ\">6V< NXY">6` NRYgh"cmL0.6 0.6 0.6xy:a| I:\  c_`xfba[Lddjc\eegh"mL0.4 0.4 0.4<d"]^\">mV\ ZjY">my Z[YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uvw "a@aa: Ltguv"a2a@asfqr Lh"aa@apgno Li"aa@:amhkl Lj"a@@a L i_{38, 116.65000000000001}_{38, 116.65000000000001}_{38, 116.65000000000001}_{60, 112.65000000000001}_{60, 112.65000000000001}_{60, 112.65000000000001}_{30, 136.65000000000001}_{30, 136.65000000000001}_{30, 136.65000000000001}_{14, 139.65000000000001}_{14, 139.65000000000001}_{14, 139.65000000000001}d"2:fghij\ "!a@V@a*V$@Vay z ǁ _{{54, 8}, {50, 52}}"'a:k9>< :   @gfxdc{e d"|}\">V< zXY"> z~Ygh"mL0.6 0.6 0.634:a7 I:\ ; =xfxdjcegh"?mL0.4 0.4 0.4<d"BCD\">(V\ jY">(4 YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"Wuvw "a@a`aacd: x"ahkla@pa x"atawxa@|a x"apa@a x"a@@a| x _{110, 124.65000000000001}_{110, 124.65000000000001}_{110, 124.65000000000001}_{60, 112.65000000000001}_{60, 112.65000000000001}_{60, 112.65000000000001}_{60, 72.650000000000006}_{60, 72.650000000000006}_{60, 72.650000000000006}_{110, 84.650000000000006}_{110, 84.650000000000006}_{110, 84.650000000000006}d"ap|\ "!a@V@a*V$@Va  ǁ _{{72, 60}, {48, 44}}"'a:k9>< :  @gfdce d"́\">V< XY"> Ygh"mL0.6 0.6 0.6:a I:\  xfdjcegh"mL0.4 0.4 0.4<d"\">V\ jY"> YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uvw "a@aa: ́́΀"a#&'a@+aˀɁ "a/23a@7aȀƁ "a;+>?a@aŀÁ "a@@a7  _{126, 148.65000000000001}_{126, 148.65000000000001}_{126, 148.65000000000001}_{110, 124.65000000000001}_{110, 124.65000000000001}_{110, 124.65000000000001}_{78, 148.65000000000001}_{78, 148.65000000000001}_{78, 148.65000000000001}_{94, 168.65000000000001}_{94, 168.65000000000001}_{94, 168.65000000000001}d"Z+7€\" baa@V@aij$@mVa #@, _+{{37, 55.134375000000006}, {96, 63.515625}}"qsӀSEPMcd"vz}TՀ"#@6"h"9mD1 0< "!a@V@a*V$@Va؁  ǁ䀋 _{{54, 40}, {66, 20}}"'a:k9>< :  @ށ߀gfယׁdcڀe d"ہ܀\">V< ـXY"> ف݀Ygh"mL0.6 0.6 0.6:a I:\  ؁xfdjcegh"mL0.4 0.4 0.4<d"߁\">V\ jY"> YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d"uvw "a@aa: ׁ"a   a@ a ׁ"a   a@ a ׁ"a   a@a ׁ"a@@a   _{110, 124.65000000000001}_{110, 124.65000000000001}_{110, 124.65000000000001}_{60, 112.65000000000001}_{60, 112.65000000000001}_{60, 112.65000000000001}_{74, 104.65000000000001}_{74, 104.65000000000001}_{74, 104.65000000000001}_{126, 115.65000000000001}_{126, 115.65000000000001}_{126, 115.65000000000001}d" : \xy B C]PCFolderLayer D E F G}]PCFolderLayerWPCLayerZPCDrawableXPCObject"::a J K@ M OaR   %"> UB$%cd" Y \m [ ] ^ #@#" KI "" K f #@#"UTitlecd" j mm l n o  #@#"I "" w #@#"d" zu { "  ~aa@V@a V@ Va  _{{0, 0}, {140, 65}}"  _.Software Distribution with ESP Package Managercd" \ j">k" #@$"h" 9mD1 0<"::a @ aR %#"> B$%cd" m   #@#" I ""  #@#"ZBackgroundcd" m Ȁ ˁ!" #@#"I ""  #@#"d" u ׁ$ " a@ V@aVV V@Va%( ) y8 cd" m & ' ]cornerRadiusX]cornerRadiusY_#{{0, 0}, {140, 187.30000000000001}}"' a  : k < > :  @2#../g71X0*$354+6 gh" mL0.6 0.6 0.6<d"   ,-\"> V< )XY">  )*YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}Q0QtW100 - tS100d"  !9\L"MNOPk $a &: 'U: k *> , - :@ 0 I:\ 4  6B>?x7A@:$ C5j4;6Dgh" 8mL0.4 0.4 0.4<d" ; < =<=\"> !V\ 9jY"> ! - 9:YV{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}V{0, 0}d" Puvw d" Uu xy Y ZWPCFrame [ \ ] ^}WPCFrame_PCMetadataObjectZPCDrawableXPCObjectd" `u aH  d e f g" h i j k l m naa> r s>: u>@aa {BYauSizCropVnewFacUapIn1TpathTapIDUcropRUapIn2UisRelUisColTcropVvarValJbI K$_!{{6, 29.650000000000006}, {0, 0}}Ytitle.png "   @R > @ a XUcodeSUprColVprShTiSfraVcodePlVcodeFrUcodeFTsnShVexPropTpropUgenCHUgrTypVanLooCVprLinCUcodeL` \]_aZLX YH[^cd" m MNOPQR < STXUVW V{JFIF}U{GIF}_"kCGImageDestinationBackgroundColorU{PNG}V{TIFF}_*kCGImageDestinationLossyCompressionQualitycd" m cd" m cd" m cd" m #?Zpublic.png]public.foldercd" m gh" mL0.5 0 0 0.5 @ ` \]_apio Yq^cd" m MNOPQR  < jkXlmn cd"  m cd"  m cd"  m cd"  m #?_com.likethought.opacity.opacitycd" !m gh" $mL0.5 0 0 0.5<cd" ' 1m ( ) * + , - . / 0stuvwxyz{]] 4 5] 7 8]]??|}?~?? _framePickerVisibleZhideRulers[windowFrame_layerViewDimension]hideVariablesZexpansionsYprintInfo]toolbarHidden_editFrameMetadata_{{56, 333}, {626, 523}}#@ccd" H Jm I\> " N O P\NSAttributescd" R [m S T U V W X Y Z\ ] ] _ I\ b b>> _NSHorizontallyCentered]NSRightMargin\NSLeftMargin_NSHorizonalPagination_NSVerticalPagination_NSVerticallyCentered[NSTopMargin^NSBottomMargin"B"Bxy p q[NSPrintInfo r}[NSPrintInfocd" t |m u v w x y z { } ~ a u H _"com.likethought.opacity.preview.ui_(com.likethought.opacity.preview.elementsWfactory_#com.likethought.opacity.preview.web_&com.likethought.opacity.preview.cursorTtype_&com.likethought.opacity.preview.iphonecd" m z < I X Ucolor[resolutionsd"   \#?#?cd" m ]]]??? VstatusWtoolbarTdockcd" m   WaddressUimage_#http://likethought.com/opacity/web/_,http://likethought.com/opacity/web/image.pngcd" m z  <X XhotspotXXhotspotY#@#@=ffffhcd" m z < I IX UrectXUrectHUrectWUrectYTleftStop#@4#@F#@id" u { o " qUNSICC; " WNS.dataO H HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmxy ]NSMutableData }VNSDataxy WPCImage }WPCImage_PCMetadataObjectZPCDrawableXPCObject_NSKeyedArchiver Troot"+5:? $+27>BIPV_ejrw %'*-/12?GRY[]_fhjln{  ( > E R [ n p r t v x z | ~      . 0 9 ; = N P R T e g i k | ~      ' . 0 2 4 ; = ? A C L O Q S \ c e h k m       $ & ( - / 1 3 < I K M V h q    " $ & S W Y Z \ ^ ` b c d y { }    -:<>@BDFSUWY[]_amx!.3@IQV^ghir{!#$&(*+-BDFHJLY^`bgikmv Z`eiquz~u|   "$%29;Hhjsxz|~!#%2?AJY`hov} }.0246=DKRY`inprt}*>GR[  "$&(5<>@BIKMOQYls   &-29BGPej%&(*+-/124IKMOQS`eginprt} !#&),/257~#%&(*,.02468:<>@BDEV\^`ikm~ "%')   "$&(*18?FMT]bdfh !#$UVXZ\^`abdfg    2 M h ! !)!E!a!j!u!w!y!{!}!!!!!!!!!!!"<">"@"A"C"D"F"G"H"J"L"N"P"Q"R"i""""""""""""""""""""""########4#6#8#:#<#I#V#X#_#f#m#t#{#####$$$$ $ $$$$$$$$$$$!$#$%$'$)$6$C$E$N$S$U$W$Y$n$p$r$t$v$$$$$$$$$$$$$$$$$$%%%%%%% % %%?%@%B%D%F%H%J%K%L%N%P%Q%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&8&S&n&&&&&''+'F'O'Z'\'^'`'b'd'f''''''''''''''''(@(B(C(E(G(I(K(M(O(Q(S(U(W(Z(\(^(`(b(c(l(q(s(u(w((((((((((((((((((())))){)~)))))))))))))))))))))))))))))))* ******%*,*3*:*A*J*O*Q*S*U***********************+++++++++ +"+%+&+W+X+[+]+`+c+f+g+h+j+m+n+++++++++++,,!,<,W,r,,,,,,,,,,---J-M-P-Q-T-U-X-Y-Z-\-_-b-d-e-f-}-------------..... . ..... .5.7.:.<.>.S.U.X.[.].j.w.y........../'/*/+/./1/3/5/8/:/=/@/C/D/G/I/K/M/P/R/U/b/o/q/z///////////////////////000/00010205080;0<0?0B0D0u0v0y0{0~0000000000000000000111 1 111111111@1A1B1E1F1H1I1L1g111112 2$2?2Z2u2222222222233333 3 3 3333333.33333333333333333333333333333444 4 444(4*41484?4F4M4T4]4`4c4e4444444444444444455555 5"5+505356585M5O5R5T5V5k5m5p5s5u5|5555555555555555555556&6'6*6,6/626566676:6=6>6o6p6s6u6x6{6~66666666666666666666666667737N7i777778 8&8A8J8U8X8[8^8a8d8f88888888888888889B9E9F9I9L9N9P9S9U9X9Z9\9_9b9d9f9i9k9l9u9z9}99999999999999999999::::::::::::::::::::::::::::::::::;;;;;;;!;$;&;-;4;;;B;I;P;Y;^;`;b;d;;;;;;;;;;;;;;;;;;;;;;;< > >>>>>>>d>g>j>k>n>o>r>s>t>v>y>|>~>>>>>>????? ? ????????!?#?$?-?2?5?8?:?O?Q?T?V?X?m?o?r?u?w?????????????@A@D@E@H@K@M@O@R@T@W@Z@]@^@a@c@e@g@j@l@o@|@@@@@@@@@@@@@@@@@@@@@AAAAAAAAIAJAKALAOARAUAVAYA\A^AAAAAAAAAAAAAAAAAAAAAAAAB!B"B%B'B*B-B0B1B2B5B8B9BZB[B\B_B`BbBcBfBBBBBCC)CDC_CzCCCCCCCCCCDDD D!D"D#D$D&D)D2D4D5D8D9DgDtDwDyD|DDDDDDDDDDDDDDDDDDE#E&E)E*E-E.E1E2E3E5E8E;E=E>E?EVEEEEEEEEEEEEEEEEEEEEEEEEFFFFFF,F.F1F4F6FCFPFRFYF`FgFnFuF|FFFFGGGGG G GGGGGGGG G"G$G&G)G+G.G;GHGJGSGXG[G^G`GuGwGzG|G~GGGGGGGGGGGGGGGGHH H H HHHHHHHHNHOHRHTHWHZH]H^H_HbHeHfHHHHHHHHHHHHHHHHHHHHHHHHIIIIII!I"I%IAI]IyIIIIJJJ7JSJoJxJJJJJJJJJJJJJJKKKKKKKK!K"K$K9K;K>KAKCKEKRKWKYK\KaKdKgKiKrKKKKKKKKKKKKKKKKKKKKKKKKLL LLLWLZL[L\L]L^L_LaLdLgLhLkLlLLLLLLLLLLLLLLLLMMMMMM M"M/M4M6MgMhMkMnMoMrMtMwMxMzMMMMMMMMMMMMMMMMMMMMMMNN NNNNNN"N$N-N:N=N?NLNONXNZNcNfNiNkNNNNNNNNNNNNNNNNNNNNOO&OOOOOOOOOOOOOOOOOOOOOOOOOOOOPP P PPP&P(P+P.P0P7P>PEPLPSPZP\P^PfPjPsPvPyP{PPPPPPPQQQQQ Q QQQQQQQ Q-Q:QUDUKURU[UpUwUUUUUUUUUUUUVVVVV0VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWW%W&W'W)W6W7W8W:WCWeWrWsWtWvWWWWWWWWWWWWWWWWWWWWWWWWWX XX$X9XGXRX\XjX~XXXXXXXXXXXXXXXXXYYYY Y YY Y#Y&Y)Y,Y.Y1Y4Y6YOY]YjYYYYYYYYYYYZZZZZ Z#Z&Z)Z,Z;Z>ZAZDZGZJZMZPZRZwZZZZZ['[4[;[>[A[D[K[M[P[S[U[[[g[p[y[|[[[[[[[[[[[[[[[[[[[[[[[[[[[\\ \1\`\m\v\y\|\\\\\\\\\\\\\\\\\\\\\\]]]] ]]]]]]]"](].]4]9]=]F]O]X]Z]c]f]i]k]x]~]]]]]iiiijj jjj&j.jAjLjUjgjljq jsjimjag-epm-84910c6/doc/title.png000066400000000000000000015524721521151356300164300ustar00rootroot00000000000000PNG  IHDRxQ"UgsRGBiTXtXML:com.adobe.xmp Michael Sweet Copyright 2017 Michael Sweet New Image GIDATx콽mR/ZcFDPD1QP87& j(Gb&&b&~ f"l;֘g5x~W]]]nx xgx?k{HUԈ} }.\43[2 L!aq4#Gʗc J!_XO7rCe_9W?3-G[e?k}Ϭ0tE‹HlOm<'lORZ0,!rGtiTämcU/ho_ l%Qik#w@}!nR䯹ү{kWyJK B#)!mf s]0d<ɭY̭pU@JgPo"AfeoM^CړZϗ_rݸ=~vGs8}ϟA^oH+~]e'ٛ㗞 xL[ ,VA2M5r.I⛌O[O||岋o-o2i2S+ˡ0k=Wk=Ň%'qFCc>k8>?H N_^ʱxc1 d=q?g 4\<J'Z$`u`J$3E1?o{Sm|aoo4#!|mi)^׳/-i_]3؂pm2׬gcocyhtI={ۘ[I<@v2I/ܦB>?8ېxr!Yx̨"KmKoGsMœA][af?m[ Tn,홐,9'\byO}o}a0 "ڊG~'Ԯ-ѬAw@*$ ܞJ%X)m] Hjoo#k z q| r,wgo_,ׅ,u h{58lav?APy&U2x\zi'xII K~h[#4)R&Y43ŷN|=| M|ey|Xy+}lo4/Å9w ]!} FeȜSO,(9yY*`Y.$G &Oޑ!?(dL"}'By.}NVrdR\^|5u:|ЍVž}"/t诰>s+zzz;f??\nJWz{?}08= }U yqw,<<g$D~_GO*Cv&+ Y/ɱz<-ă5#g۫T"7卒󍖯 ^Ͼa4'|o\#gc}W[0zSFU|PT)!4oʇӌhṅA8H L/^ 1ԥ(u:7|GH3ș)³xdGHnɩ5{& Z Ąh&۾"}dV{)+|sWF;9[[B&P=iUUwQ>KJ< gU}kq=Rߥjyئk/Li !)ޫG^`q!B%(9 $!CpR!; oUȱE6F G\0vg36.MhOKz<=#l<}?|=o&oB?Cq[{8|c{b$ߖK-_5)D {!W8h'Xgx&Oke?E4N'Cj<* 닳C33-CGw٘&=}Y͘/73zN~KΉ=6Txu1~5~^\Yp_UI̓s ÕyzEMiDoߘlV$xA~e=!'Fe{'xYX^K1& Jm|y zu/wٓ(=$_C%ZgBsm3{x{gB9Q, ד`l?Z 藡?U >)A]}om#d#<{~xF9{KI͔k<$B<\5?>MR{%hzξ8>zֲ%үŇð|' &/(F< naÉ(GYxbj&x8x̷x ^M7ۭD򽎿J_P?ڝ.XO_2)G'zp1>AftfbhGI'cV'7&WA~ 7h-Ϸ#ASWKqН=$-U׳=]WثefȗTѠ\Ԁશ=} 5Vp%!V)uAPCeT{<`15ڹŷ6x>}+_Z ׳Kfb=7'qLJORkx1&_oĠ5KE>M8+$)7 v&7 hd/SO/{~1YgG+?-8Lo>~ S4CQ<} AQ"~ OY܈@Nx& z#هC5~ք[ aIU:~+54E8GO)%h?eJ͐J}U9aY7\s< M`61FMU:|q[B@f-j{p/^,Q/ajOĚn>~7闋0ѯ>|hZ9dV4Y.dƈkډ¹6C( $yxpS\=vƣ)&? $G]t*bzyM*y`?t?,&g߄oQY?F͵\7P&_}__M˷3I_vQ_'샬`kn=nf믷&^p[>T*c?e|Ơr uS'uO(-"w)|; y5${sl2%[ T⿶g>n|d6,s4=[u?Y3i {;gJ)U9B7mQxz|0c'\sNJ(MJ+P:I|5O#l<Zx6J*éG{x9(iwn!@*B+?wȃա|y<0oo|ķ<օo~6ZioiBiw K YğV[5#QTe@xn=DI!3)U@O|~GxC鏆eO'#Y8Y%T'[pbV35ýG=u1 h7 0%JyYKw7"o[Q|.|; mco F[|o n'JؕKxzdlM?']w>DE]ohWk>ȳ6+}hgSۃˁ)@䅍 ' ^kSSGx~5l:Çwvyxl^xN䴛o -j[ {]̞tc ד{Z_~_--ω`zoK;HZIV.Ve?`nwr:9<[x"ْkl%O+r4C7!:Q;aW?|=fRk-*O:|lO2䫾ioO?_/1}q=wzVv,Q?7# ~EQoq|x [|Not MBά冈p<bg pE5 )9]A'&ƃ gŢ"gl^[!GG~#o-M7 noȗso- w.Ο絇C8+ *?w!ŇV$3Zf̭nID#|O%1? L_/ţmxZQVSG?lis[oJ{䛭z<&t,q9l/T;/=6Ɩo?O2cO6M_<ZIQ< BK # 1Y+2UW!2 nn';ϧ"lŘWr"ZSnrƃ\#"g4r4`l񠃝w'G#m9 S0+o޾$_K_*giˤE|+⏮R:}?rV"Ct_q: e&T$4%:SQw#h7M!AO84- F|8Ѡ;/Bf/#~}Ф mcZ<y؊oJO{A42[o jm[SzbVd䛭/IhBhUP%> =د|ht/COΟt>v)TlߞS'd)->4l"=,25'<)1+<"1} O=%D0ߢG}kOpU&6 ͈ns/y#<#fxcr>Dְڇ*|6a2gƙ2+<ͿC4/%NҸ$P*wˈ%4xpLxB e x4 KgÅU|h=7Giwn}OR&|##ʾ$[=jמ@?YSSYZOSߌ?j <˄˝0K&\3`1u,z|sc|wTTvޟ2֟&WXϖ %EVIc}!g7ӗ 6[ c~D7ԯxd!|6a>?o+Ts/’(>\Dbs<W ?M#ь]7o\O*I|/lߢ7L=/VmO m &bCͳ/gnxfxR|X~J|W^YǓ8sMS$Ї&"B~!ʙd\RGϒ24Ē:ؑ3\tA[IV- |/|koߔO(o%REN{댼F 1|"yUT]ρgxK3# U~?xۦ; tOZ8? py#(@SB6$هBr}`ϟ*I/.Df8Ywb#x΋ue2DK#P4if[|<[-!5|_x?Gɷ܇o r}˖/$y=c|ny\1}=l\>Q?q45$<Ϟq F4t#Up뙍/ 񸲎o9ŷ|7vٷRL|/i5gouC8|~73^ǠS)Sd%! LnI Blʣvr-Ck>6Ԁbw@WPn*^O\$?D2#w4ƓU=>XnBfI6.Q%-2|&uN'2Z6Hy*ߤ =Mg|kr|SK"?2H Nlzd=kk[ E A#%K}Qx<Ãzo99oRnG[wQakiD̞O߂ ǂ'odP {h MLRӝJϪC?ʇB?{"=9kdL-(~-wB|;(2 W#_2ǣix4x|i_&xЌg%YfӾ7aIgm/zλ&jg3~LJ#Ga?Z|;}5z>?#Iq8l [;6\dHxQ<~^݊DVxӒ(sZQ<0$3#$|;x|ǣK}lA|Ko}`ː/2Xȷ?"@><꿞B|r'qehOPc?cz&\4ߐy}w\ o/@T/#q|ƽ[J<~)x(7UEü㌇B~#,ZM0+N0Xؖg ##?m /|Q?=kWŷMf-_OA$>(/tlM$CD[u?VS?!ϻ @4r[*>pr`:L~ @/ޤxɱ)xZ#bx%'ْ|!YoH\[c'2d>߇^B3J.F pO,1"Qp8ͰWW;*s p> 2ZTPEQ0! :Q QԻ#(ؔ1lΏf _ӑox盽Mt^'ؓl^_XÈ']Ϻu~d.Ofde`>/([|&7c|>~Zgm]foo7{ 2U}WaOCb=7#]|,dcPRLIe9m*e=Nj軛Q #IO?[YxY<ޚQ>>Jn9F~QfHx7Cn'" I<W ׹5K1ߌo֟_(Րe|!Mäl/wXyv x2|ODZU mh8#FCD5[l<,`PiqSt x+Po|sM#J|=D%^)zFg?T1sX}/z^Im k/ |'Enx8 )NxB:PI2Ojg <|t6'rr|Oڕ[O&܅Mgo;|B_x|$ϸ \|Fw _&J7E\ji"D <%հ2&WUe 6P ^4/^ʷ-gvaoqzN÷(r_3E&K3ģI7\ޘo9/Ϸ6vUU'#Hx<]W|I}$ /vgULK} &ְYOы N˻ Ck, a<?Sj]@A RFaY & `xxo77C{ طQ jʗs['Q~~h\_ݚ^/ї{'(Scϧ^T0㟼xz W<,>>U4' d #)Ef_R8jf Iǟ[c'Z$GOO'xIVeiLVMs#gF}zii՗2uByX~:gYϪn|zA>wGiel2:ǂ\wA`%3.BlsI{ z[YUFUG\rЊ5a2B>FDy! f箈D[xh*xD>i 8'ڼHFb<9 S7<*o|c6<6 VAFʷ|9c?/,>ɇqx `E,<,M jE'3HdGHr$PS*5xNx0Y3~d@M}p  @EVo|ҝo/˷%ߨ|u|w#rǼ [/j}ȭ\^^/4s=Aۨ뙮zB*LǍ7k?o{7>!)Je]i_54=qpTs$%"qfXK'寧 GL³!$|Zߚs4|[o-̾ )7˷LwXR÷B}<8a/9 F?!Ǟh -LJ |cLi!J|2>$A93#ڒG~$#hf$!۽ɗ;M}w)[O(쭉|̛Ec}*__^c5򽶾T<{8zZ3\8>lf?M9޶7ԯA|ra>g&9G+υ*CK4k SS\+^ΘxLgK$"+¥[;|n]>H)QjH^B4 B<ND v93l'mf71T=}NoJY o\Oxϐ6Xs/j闀S!GVuC~2i DEyNZw]=x@%'b(Tрq@:C]\ʪ%RBPUaՖx cr䬦@#$<\Q/_}\|oom䛧K˷}j=~,>Aߊav>KQXA>`N]s1?DF `xw௉aO3V` <&!yyq|#SwQx_Y څo,VE|޶ocW_'*_!CŞ/<}V~^Oi0-? ?JC~awr--P>T*=b"W'ișT-з&(ICfmKE8IWL6ވBf$7'< 9<*L;m$r`(K |T>a ]v[V4Qx.P?T4Z9eOtpmi :E}B~J>?uAC^pz5Jhqx LU]LI<\X%@oo!/Wg_曐囉ڷ[ Wdns>XO'yQ_si寃q}}|Yo'l>J"?;zc4~|p)`qe4c9@״CG`?%^2!DbHsAvJ9glܠ7 ' 6OTtHy%r30+qN/M"|CA:f|d{ߪ[6c7;hj/?3S7\O?wy?gx[za ~ppls_rG kPW-C2|23Hxw}rieKrPߔx?[3bƗo=:Zҗr4gr9WX;z`?~݊#/>\Ϥ}{_*3 "!d .D qes90.$OJ%"FQ!:x ]^C;*|?S6~޶o1 o˷?T?o{_,}Q +TqrLg6;{G>D~]я[#%ۇql_~I}X~xF=Phx[G2S-~%/]۾(5.toO}\~}߭N;_Y|#W4epPB0O )cLgbFx`Jm4< cȷqZ[zjo|ߣŘ.ї@׋P-ϱݫJAR|~*^0<1Pt0@I$t 0 ]:g5C_6# O!W$<}V\o{l|[._ȷ}^R J,~ֳU/$ +YhHʻpYlҐ)OzxR9Uʯ`0jG*\OsQ='ooAm:n(aiH_}n{y}R_U/usB{>*/j.Ç0S݁uJCFv t_ψ{ilo\WƉ/(s3WS#n ׾6T$4\d<9ICR-l dC\t xg Vı.J <$߄8$ uO$dk7w[ _aRwJdOoz7U_#sK}[gDߩ+V^&GuD|pN?U[a=Yχc}#z4Bͳ\.2IC68Mz M3#I+ / Ó./G?jmof'x%o=1}=,]Oj^zfsx~N70}L/DN"Ȉl񌑐!i0!ԸrB%pMPq7W8Ixi<~#\ȍOh֖GO2?|>6翖oo,k.u/-ގj߂*7]խ aO'z5|a3Ft=uw#;T_O]~FSg?M Zq>C{ p`g; 2!'ǦN)W`yd&p3<J ߢxL9=|bS[ [gRֵ}PA񩧬ޑ9}.dVz뙇w~*cx{aLJl=b[|vҬjdN/>pVe >|Ws^d A&$.qx4 '.\HS |DŽoħ9z&t?g%Voz?d߂+rU^{+je3[]y>[Kx@^Od Y}9/+aj'MiJ}tw8r!*qxQfad8 IF I<7&)盀Ǚ5U|1ߘIŋoy5ھEd߲廉h+7[I oC_9\Mcl=z}Oֳo[mHU֯ >52ޫϗ r %@d^q r*5 .ixv[MߏotlߢMoʓoPM8">w'r{~r.`b9,-k˚?<G%nxΜx#F!Os <1H yG^]P|fۗ_~2fM/Q>!f\Hg*v*:UWG07626ߢx Sx? KM/}FP{x /S`%}Eg=JsU}䯥ε׋7Y0Gtss߮OZDo BN}hg+A"Š*T E7=DO1 |c8EoKVxȟv.[i=;Bx={^}?q=ooW#íۧD5 Fk򟏯qja1gI5:xRI.F?N _?/wXϪsǯIGA^ |6wS6$'>;?1M%-#䀹M)7PIr*NĐi,WQ<mɷ|d6_D/k= ;gy|xQtӳa({V{4>4GLrK@VLZrLw?\'ax}{>9:85˓cN??3`yƖ"9 7 9{x6@cxqSxnxAO+?^([qhN {x_ɷɗ  LK+OKI|1'oe84_|ɷd=C/'O=DQ 4YOHw&GϢ+VjpǞ;d#l`e>0 Nx$"Yh ?ޒK[>+E Frb /G"~6##Ef7mKUE/ 7υ ;zʈ G^Q~>^OhϪaG o_!/&Wⓚag8Ѵ_Ͽ˯ćB S"t+ҏW/d< kU4-AfS8|7kERſ#_MuQ~/%e9' aǽ[> iC|7#~55h-zsS?H8o<|(*oX|}K/XFdcR|K8$ESh;=gcڒyM~*1GrQՒp~}hg˜#B LcKY8K*͙<7"Ul(Z8Dlx$q{xI KVsfLO+4- Oޘh~.B+q I-Y<P#zxfU_II/}6]be}Y9zNj?>JZ JL )(Q W72aet9_7(Yl'G3;~g{e_KO3k"xYB-'Uc1hx2MF GZO/wg_Ϸ1\Zomw(z[1z&MAM_.5$u-}U(ڇ|_h@k!&J@Txc{M?  ;Z΄ScVǞ۩oݎa676oط2jПW:g]<=zϞa}yxc2fmj>nZdN=KKUjIIROCNKQ ĦIl}ۀ|[ 6_b==b.=&v=4k껡Ul{5&,5{1/ǧ8<;xa$?q0BM0H &KRr5}!@|>x/\y}7?7xu DnM/ߖVoU3;OIYW]/>[5>2}amLOĿg؄حo{Uկ:|O3޺8u8>Go-ۃkAVy5\S8neNZy>K;ɁNQGh!-x<'Y/P$( <-)r^Ͼ;ޞ ;7)_ /<ӗ;HIL ]=ϼTnzxۋ7$u>ڇ0l{vL5Am|%fRJ%[6q{PB-.|d4_J_ۤ-m~N/wioe|9ur|n!2 }/)@Q}_Ϙ lsKXOhs3؏f?w~m{KY⏢|'T> O(=1 ϳ\ɾ hNc+#Í۫ȿKׄ}Lƃ?DQ,o75(ij[w o^_Aeedl=M`Ϫ-xI3?SW]>S`K{[#޳?Y!]/%5qLqx+#)@!4( h ؀+HR;ɻXģ̱EpyUD7SWL7|9Q?x5V7%[7z5<[=푱ٯ*_|WC빥 oL(*o'[MYύ:g$|hpr'oUl_hm/!7PVSFKQl9[K<_&.#ܮ|h-u)_eubr멗o ]+75\gjwu 11en&kճoo`ԅ HߟWqcyxD 98J"LpJ.EO_#AGR0J'[|+<&:o .hoW,s?o'CsOh/_yyԞV7 D}]l[_fhվz!:W~cX$ގz߱~ ghA$ٷg3H}BxLzWWy,e 2ݒGh 9'1]^'hE!exEa&#J<&E^_7ֆoޟѡдr|;qeMڜzU_t8_^:5>,Oxϼ /'|ئ~}?d9]kgxE0TCXL\e\H M,44&#kDྵA@`Rt|l#9MSda1?D_j>RY-boa-Anڊz M+! G!)~hŇ.?*[5*9u5ӂ5=_M nP>]ZJX(%rU=J;-u}JkQ|dx]&\sqK7;*.V{{dk.;s109. ?~ԍ'0{>ԏ?K o5n3䵗_ zKB ]Ӌ[آ?G9*Ux8 x㍟"UQs%|{Cd`Z 6\H {9r~ 9]\'(GUNM.浐)ANJd-7\w(|7w;lLk몉u$robb{luv|a#osJ>mgm>੐@_\\n y@yvff/V 񐜐w;X-oO4=! 6,&| 1Nhpn7%#X* >c4wi=kkM4VK:q6?>7#.1m 2XJC9%w4B!#:\F% #«l*LpLuCJx"dzx8Ӄohp{rR6bWpEGzށvvcMekkD3_JC0H"2۞.P| pM!31x9&VOR2 &\|,*oG~xui;/ȷz򵲷xA  }]|DGBߵ3x{N~__y-u ;K:>^bԒr8r\iСn|igL7^WvGwt bO4g-xThhFjpK!$᎚ 9jpфI=jsU5zO7LW[%kHBl0?^v=;O_/ e+_p:Wui)}Sps+8{^%>u79?<[ηg?315OG;yy#$.t xmrwColf'۩1G(%:'ZI9^Mg 5x yxOou |V[!a< ڊo`7K3ז﮿D |;~؞QxᷣNlN' =~.Mٖ@!hT=CA9GS#0OU&^JyX;L})ȋJl> #dFpmCiL w&!턌cDV}K2BM'Pn;E9~f G>$RD/է_8̇ɿQy'PC ܒ|#A }۸˓KpUW43ND_v] / /ߩ3OZK]|F|}>(㥪{{c ~ h\u)Z?&\J eG(TD#̉ ~*A!+\#uz囆-I'ڷ-oo<}J|_CS΅__~}|>Rx[v?:%>G lx[oǓrdU>Xw{l0i  9kBMWG8=n"1@3oBjb]Wk!8 &df)ǥʷ DKRפ&.a*C8|Mi2+F(k`ڲא6*;&EĄoA9*m=vHVjq1 {M{[þCZ sSx?W. mo~`yܕ8܅)Pc Ҟ7 #wZ{0 a<990VƟqr* } ''ݤx-Ov^PaT}:LõLDr9Whz<P;&p°Gmo:%])\FriS2N;gy@A0r;=v'7lI)wZ/ cQGpfkxG+fߍ s2~W6ɋŷ?+tpL9wkK:"~#\4‰%"?d͌\E 1f!K>_# !T66] r$<25|+ oo(mzKHٷKns=>Qg:j\G~H!_K7"Þ?_G&M(:n~ I<\;ω\L\xOBHh954Tg@~3^lGЦ,]D3WH<|3NE((2+FV ylނ So7'_LB.盦wH~4Mg` =p~YW0үnpy!(Up Y_:+-\CkOz'ܴp=!-ߕ`~A}<܀%g~p=/sxtxC%-!Z L(<ѝ"-r.' TEYA&rZdULO _B_C  `<|/!f_ɷ.tO7\m3[2KMf:5 n6(Z{?m6^*^¿/V4j#}s5΅m)IflL|+LJQ ɉ- '񛼞%RU>'"O1l?rUr?YjpB \>f$@}]kqxA;xCm+W KuUtRO$jGz%M9'm H87j|[OQg\}fgJ?S j}f¿/Whs'1_Wۧru^| :TnGQɞoTico(Po·~EA ~Kf=9qT)0&]y&*WLBNd咦$| O;(|JFA;G2er2)J'ܩ~9p&rDQp;'Ǜ߿O>=?pq?K|?֋{c> P?D Cnwp]ɑ8mdMQƣIJq%Rz<ATIGrOZ _* ٲL0ȣT Z޶4 RYdDY4,~/  /ѽݟoމCQ8- ⍙{c> xXSb=U A_Q5I8.Eځ/D 8${ri$n( Bg*^rV3C<꾒omtomJtof/)ו][[ g\S{- ArYAzfؘed?;ɏ?~懐+%Wc2pSdxyw=~%}e npo)i;I/|<ǡw-B>8o%DFNJ^1=~7~q=_/S' ~ߝe0>_]h72O>V~|"} CّTIwLWhhxvʣ;d s_ yfrKeq//Kkyxc٢c߄Nc|cU}^JC?"9;3I8r7]>/ %G2_~'H?pMkqw( ♗G矆Ot;Bҿ#tMTie Mr?[&r&@X"aEIxpBlU1sUOZWb|.Gk42]#} n! ™6yoKw;U;|}UIBV~y(1d]J)ל!X OPWF*-+!F2&/bI7ۀo*MGSU3w57|SOVMd*+4-lMz=M3,{f6G.HwNf?Adof#Ӆ_?h8 GSl!5 s?M}\{r_/ް'w3>>Õ;U⽽t?AsS>k6BxF`-> : 4O<_'*hƣG j@ֶd{[վC<٧ Ⱥ;NAN\y`%4?.  D/D7{"(Hv,g?;Ƈ̈9 o'^|O@RU|D>jhg:@pjB愠3Pf#rXƃ5z<qigqL'G4wɟ&#䀒f  <[{}ӼNS uis@~7W/ 5*v< ~DJyPMd~j@>KVpy9TבՇpގW\ݬpLEtG(gO^!FWuxIFl|I<|-pQOTF ZwoWgdk!񜫌xQ) VE˷-od͡7|MV( ~lSPfFm_y .OA 롛gć;Ix;; sFj/qFY %?WWsb?\ AKV4B[xNIqx%.8)ES W[OT<&EV"/n x{}1&|N7r= c> 9 2mQcą̃ʶٝpWmׅqkKJ[r=дlO|O}|R =Hj90Ș9D&xL `O#< oi/5da#<3VGfB<nBc<uG ]ZFւa[OnqwF(GB90KoGr(>w xztO~뷾Fϯ\K88Ln5H6?i=ɹV}R>gxuH8|ۏA okO24'cd7 uA -Ʈ&x I4c`Q&' Vx4''&㑓8Ќ%| ^[3{ҾE+q#;o#_e-¿/ï}\??O|o,mz4(NF%͂?%%j}/߫O YoxIȇV9@U=f4,EWky lxG=ѕmp0-ْsx_!6Y):H囦ah><$dgNð/ 5gT4'''~۾>~o+s8j>h8~v O?R|1x#!o+CpU>ۯUL47j2;(Wf3YBPߨ2&G/Y:Co׽ oN}?Ə|x_@r\ x @Jy$O8ā#!C%T<5F@~pLS*PH[dokC5؂|? 7"a+|3oBc^5!/g.do" .s ¿_ 7~//:w [/%?>NƇy1)k8@w ޓ#'ƾ|(sl|[-~ףg}5 LǩD3|& B!ͩ\RC,mx{(|Sn8v*F_y4Da$t>-$IxtfDE6(jpNG! 2/Hۚ-M^o&\ 7P&F&$8Ynf*TO|ҟmy:5w76?da{|< y᣻šyNAGG/?S' A>P;G?x#!Vی06F?;8|6Wg3HŅ(O x584  -)#?Nocbpz|Kjϝuo.o|_??˿ǟg& R̩SS+f?뽟^ZxKp _v'_%jnVzFX1޸hvxxv>[ѣAN)Wb)yK=G]pã7P_E#Ԛ1,S 2䫷훟b7V??~d>o#pӝ$fQa(0, ?~M͈/OOAtCE&ƷtsIez3#&^D[DdUb,V“: 侎R4貣STU*c IHFH25<1B chpwGL#?mwР~^yvY%! MT*ՠ{LƭwsɵrQy/Fr79,y%(3T uBǍ ă"?9+ B=MD~ӟ>s`[BΣR#H8GzD_ǎ7-||)eZ1 e))RՙϺb)1:QFQ#Q#o*@1x3j&P@6u]ZS *3mԉHP En_/g,MxQ/ꪫ9+̳'JqR%qfFz>fηŘEQ̇>#ϓI^hHSn%Goc}=G:˼.L A%T+ SYPX`-:\pZ7s;uևm%s2I+{oaIݿ` ?٩pV*ecw;TjdV?L|ꄎh2)I*yG;.Sf‰}0,v:vg^O)pCmY~O}7usp"Eiot1^^Gr=I=$QR%o=_ehm6|0-lGPL._Tſ_ۉsȄ2馛I]L 4Žb`LmI]{oj.y_|g]Rb7De Q(<02A<@o^U~7#ZVP9`&2h sVGTQ;+x4+Ms38U'XC 9%.=A%>ho6p0lɤwAլߣ:LBHfoOxH0`xj7vn7" 2[K&BX%=/8ɹiKx{V7,ٳg,n|h]V/%S#'+ϧN"oɸ6h׾JPOluob 2(bM:_\ m>s0N8>&rDUeDP[L8 OlMRxbK1MQ7 JI5 wkڍر J\P ;w@ :VhLʬDvF8wV+Xq0>zNyKжN`aM:mƂ߆9_e󋄿QR^u72 #TCq)d<SFb`"k.2s- \&q3`-p;c>)m̌db#fDM{29vET?ZWb=tDClCTDIrm [1zSU=Cb0s>Vj#y' g'G$.i6o|a)NN`H>yyPg7x~9d<5uiZV0 =؈dlBC,و<I+1AF1}"-j&[lS38 9ZM0G.>,|c, ~?χKߟ.3UФ{>_*Z`;ؿc!Q~(<$$**9'JH#q-^7"+lXP!; [K_<+999ڬ+8% Qд|OȤذa>}Zh0clTv z;`*V [ s0m;ᏥG-¯؋+ɇ N@\5/MBIq+wZ#_zA 3HIGhZg.txTu4񰤥m<ŗ#&G! ['*Y:.uok ~3-+o߾ vkqc/4uvj'EBv$+#p+ۈhșeyM7]x{I.a `a>v|2dF:W.ܟy~9,48ȄJ TxLo0SIP(s&4<7IPp\oM;ߎi䩧2 z۳gϸdŬ}J ~DCtdZ%QԒRy+#֯_]„zcyL8I&߶_v?)8|R>Μk><~ߟM%;yx|ģA(3s=C z# I #ׁt$IQĚG0~-:ƃf_p3ɩNBh4®sD4O+JqȝN*`7ZO.|x۟gB>$MK-Xݷ28æc<#W`Kx(RP-T^uy|܍4t}(gɷj (:*!H9+_VADC_5MIL"kE]d ۑu_Q~v!g>|O : ӟAJ. @RMl22jR[M8Q٪9Va"BpPG4}G:\M&0T?.} s@oiF;`2)3wTة7 oK+|A@}>5 f GNH@P6o23H4X?l~~/G>s%AgqÓS , <5 R=N@IQS\ ǃS+2ղVUpZx衇T%psvF_e!_l|y00_+ BC_BNџ~pI'tM^xj#G7.e0{J9+NEQo˝ ~*Y/t6?:ϷTIq 6zT& x$ Px-D_8;RsoCÓlne0q̈ FYjk[h+EZڒ3)HGJiO&Eq|&ow34 2ɶM03E߬:AT+䊄H!jd9Ў>HP@vTq^M`g@(F1 Y`e ۘUTpR"KZn+ax4Q''HCI\`JJdRV98(:>6 2XT0|#L!&kP Llҙ6MYI@gA^TCt6ߟ٣"0mwTK>,4Dd8%+dJl_W/hұHXpL"\pBNt=]'ڞ˿g1o&#LX ?SlFXϾ%9|3.ÿƎ_q!@D(ڛBA? z,cYx<|Y[8<ٞ0- X0x{1[VP1 q_mL$;/N dܿ TWBS'PjF >)3)I7x:ElA7Рtju'%' \V x,mIt)lFKF‹K,2A3k*!HKXAZ o)[Ao<` T REBCq'/UWxK"rA$82)L"zm6VL$Qۙ"*ȼOlHEAj_@14> d>Q k0E z,h|xUӂx$cb}gJj۾}e` i"PxޗSje5__W+4Pp ĠC2)IY0AiJ@h*7Yo%2y7|8cǟ֟q3HaADהpz `@3M".v9|N,9r]ưհ?Q):Z7>×_t~fǂ?6!H$ej_WşѰ O II瞋5hqQ lJd,_BU3v>;,y4-A|pS@DxB?,ʠ{KUs #EV0BTR[ە+߹s'WFbp^#YX_WcGC}RU;aD mejL8*ЅVjm{|B|0F_?׆ UOKxԒ8%s=!;ߩ,* N%T5J 桇JP{*1R6^h=(CV ɖȕՊDžhظq@FM(uhCI$C7fc)8Tlo~(/s&G/_kqUU m[O$/ԛu֙6NeJy_WˌǎaA>-:;|__$u/3_nldI$xf dRoy&xO^Qk/P|v6# r{LQ礅@bgzbWWR>##"do|#Fz޽$A'xb#[6& ׯ+~"^DfrVD3NjT<r0d/L"N;ͮI[}0P&(s'>bEA0[Nϕdt( a"v1z=n'AS0 GY0Ym ~mN4)0xG3b5+S'TlFYrv>~ڠدM"XF\]';׭ȟ_Z/7sݲ /Aqk\DkƾPN T%O2%O~%[!J6XO~^zߠd/U5@O~IDڙT?. J׃^UJ6g_p"$ƹ0ǂߍh`qJDl=~`y`mfU<`4eh W傊o @I7Y/cXbSWxZhҚEko&W]u6t``38O'"_ ϣ/"|g2"ϧNa3§/3hOXNщI" F3^' TҰ/+8ԭnuVh@GrV8)Ғ'T?&.:KKj[HƯCM"bFqyh^F7|@% /?""?>!iq'ڪ֥hQ&_ Ƥ-(;yJl;ſ}vNh<C5I+TyazR0UkZ&2klb;p˲>lZe+! Dz_ *A8WRDnݺNMt^<4 _'z|gI!<埠z@^ U-oD'/RVʂVVP]W-4ZY|8#DUſcG<)+HנbieWl-L8%: ?vMIqx,|SaS%!= D<dq^2xcMeeMJePZCKrU0 .VWůl\Rvq  (Y')]n_W*AĐ"rF^kȄL my/ͼ1II_od"_ ; _#/~RhH:+c LKxsO({z=7a TE`4 1ϫ+ ͭL6%NZK$+_ ?p1 DJnۯc:!$;Ӝf@{?_$s8_wc!2Vÿ㣰!TIu8p/)JBxo+2AV0M[^3 ſs"rRF[W З۶=~]q$TF&^z粍!H”+o3]+(V!WyƄkY>ӟh' Q6Jjt`A{LN:?_S+<|~|_W<(4V5ARZ/؊lDC)?4' /c V"o9;R/b%4|=> _뀏g=P*gk.3P _?s9=.ſzꩠА'^"0_/~>caMT~߿?$rӦMMɧM"qc Xh9V`woოL*;~W);I>_o%zA)<[9j@ nӹJjЇ>t '0-+DCW Bzߵ%I~5o րiKZ;Vſi1:D.5:<)#T*6}{:i܉_LJmH3'eezO5l;(_w(~'k=Xq %+5=&ħ$lL#i JHOȯ'iW9vgP???bW刔 pr lHYkg_Wh[MPݻ7$!ƾq`C|@(_X%w:CD%n8:\4J>2,_qTƉV/$jHZ) uF:E: ZS ={$g BnVe+AX|!n}rڟTſe0K6JtUW}T˥JPV+^=F) K|ŀP>ŸƿBD}a:= WldNȓ CQ :<0`!F0 ǎzD$K@*WCT֒%+D$\r6+^Y*S5wbɖgN4I$6 BbOs7+ac0͟DɏRbS$)ǯ6I코x֠ruoO|w}7= ~cb%ةy iEBĜz?fOFU9|Lk%bAvyKWF*DZO4 iDx f1G?;N}e&b5^uY?/4Jkl]_ScJENڊDhOWCU$۫^?soc;N/orC{|-gXAi/  Tрk''o'$Q(R=(Ρ`լA^x{/'|rpVqmKs/"vNt7L Ǯ⏍h6e٠2)b5X~w~GD: NSw!fL'aeKԴg5Z,~T7""x(<1U{33HR!zI9xP M^cQhV0b +~x+SO=U9O~+ u[m!x㣰k:)-ѐSiKɾ9-G_ܽ{wIuםvihhhE𺍚/(#O?Se8c M,r2 _"x;Yg#  ZA ?; f z'>z$A!GxeYb_/3Mdf\[oow*~/>TϲGC8S0+XI;#W W{?C䷾-zhfxaN>e{ w~./-#D^_ w>Aj]?z͙ɤGd,qۿ.*u P\x 30u85s,|^. ,jGA7)F{-/TWΦfЫQӴy,#ا{h)RX T] %7[2/nO~s͚2j`>m{2@/|Tr Qs 3 w fH?揙|nOE%(h:"?;HDչ""2T^\gOR9mWbW#hhMՅ%erweUgG\yU2dǯWL"zey8|^O0XiX5J9_;A\XaɆn /@'_<"*9NkvԊ?H? ډÈ:ezG~TS GǑre˖} ~G@/蔺a*N!ſH'&Z^ՉbmvS+wW(o؄)itlG/P*.T*K5X۷sg?͍kkA 0eê gMXs _I >,οS O]O?iOR?h _Kp'w40O:ń*EQx'jH qebE(sfc}gOm׮][^*//쇚``g!֍pռY+~ '_mFgyM%1Ku9HeРfUOn{/4tC }vV||~BWȦ&Z1| X b&]&qDy Aa18HS/135g"ࡄFGD/sFu;=Ⱦ5yέ&5.zF0gsA$$*")~$K%kR>*s6m_hPڕtt`ԭ%-ᙦuqGNCT(&1fTz`ֻ\s AGNcGf_/6~IDC,qo+ĺj?-Hf c˛jY.[,Bھ>V׿T>&jjL"M2.Vw[ӎ ep)H]Yר8)l^NR_S'%2¡x}@69q[4&At[o51C~W~闘A| :,$i?@VG"ph2ڗ~&sԲ#wYW /vuXgh}R,#m*9Wa͛X_OOϛQ"&*,䴳_rmشiS,6mo~SC栲e9~vMtE8?h'sſyNol?yx&ԍE2 ,bO(MEOi` `uaC?K呩Fccm`Xjx,؟Yp/ăV-BpVyEfJ ???2VlÙb<#0}eb'PWz,\3xE6\R=N>Xljxۂ,Ņ^GXjY \V`7s#LH/벀9 峅?k/ \q؁dqΈ(J kڠHkR6`$xp]ֵ(2}/#nذ鋻vJctq;D+~lqrc탧٫Ǘij5_?+WTV_%ܥDOg?O:E(ltcNٵm9?gx&lGsQvP0"?0'IE2LA̾/TVrj6A-|K?5B *&d#AgbH<1xT^J-fVè ]9K7_lZ{?ﺑGm l"4_'k)8wPϲ/NcG.eߊ2THemx' V0X?!5?w~ƿ % ~regs#)&]ߟ6n _ L.Px˨eOۿۨ ٔ%mۛ%Xcg_#W$F"&=][24jJ.ګ!X],x+i}i\nA!)jzGxGydXM"?OH[P 5B;Q;Ԛu_hL_b yB3o |0_>! 7]~ ?a4Z&ri8Rb6"#"Se0xСVgOz?Pm*;s*-AKr/3<4W+js2n1-!mS;Y؎FEs\L95q/HR;FTJ&~,d?@l+FGO[df1X'#%xx dy4A}B%Ox$0UYڈ ' 5dh۱+J_/3zȣW5K'gs\ů^~/з펽`? ?NA#mc%FL ` 32&<_O1_zg[./iC=Nخ<o~a~?w8k}? epz?)M!W *@Ej]{\pZ #oڌ披?/xA=3@?u_qUxL ZgrƝء's"9s<*&T#TS_~ĩ!k) ?}h;Y.Nx9,>s'ümyWwo]BpmJu &ʸA/7mjm0m0^lC G14d Tu`cZ$ _~9W7gĿD#gB 3}5F#:!u|@/#'xadwgaV򹄴]W͛7dȻۜ55xt]wÈG7xt4a""B9h~6",KH|+D(28Wƒ>(<~o8AVqʄ6 ~7r'b--Œ.j+/h<*}PJUʎ$ 'M}х9xcҬızCm+VI m8L"/$RMc V ;Bzm\f>ɿ$|g:,"Z~#o<,48ńTsS4XR|$Q<&Ǒ iGjlQx`j͡r7++z7< /V%P]m_f1-A rm{-m&6u/3Ý_hLÿH[_I| TKuRnVIqw  wLmK=4+YNr_)D&A|-mՠ0M+TѠ6  A$\d8F(=QJA=6 4 )E+A'ӕ@;/o j֋]mPVMajerE='L(`JGa]p="h_??8',]G@WgW '`/|AD>&a6튘`ՀC|60k> Agž$i.[;hLO0g?N16?mXXfѐ$J2) %zuDAe'GBwvv8Юu1 w;묳1wa{AWYsE}/Y%+oHp &5{5kNxt>WJB B`vůZr jmW? HFo Xq mP #2>L"$~:e&@v- X_H&_0-0U$h6??Ύ:"9~j[v)yb A 7>u '~M(e(hÈoS̨g˫N63otRzw^s5|(K^+Qɹ?L۶mcab?ZAi'nML-lGrlů^>8+]+/gI?q=|Cӂ5J[=j|.WoܺuAl'% 0WcP|G"] )pVD+GJ]LNDStK!x#jhI<$9s -%q^?b66GCtQ88==׽uxau ^9I%<6+&ίC!mcy7O@8l ?/}p&ց1a pYw_%P(?>$n&z1Oա!~fX l@; OY4gM>  h(c2_2 Sn_s-7КB<5XSO6d'ojdh)̿ /ÑU @M_QyF1 |s%\I"EL-7Ǒ[60}Dp]T *_M)04f-azxe{WCΝ;35춷RU*V;ΐ{<_B9b/E.W+?gP5#Hœ:D:(p1>mH#.BCJC t|wrm|y7u Ƈy1?]/KH抭1? Bsڨ(:uDDaR\Ox|_ Q &//Hۧ^h5̤/R@[Vx) ;qc*:89lםvKr"~OhXWjYT0!ZNvTmWMjJnPCT'Tne_W?O}ڊo c4$|||叆$2ᏳoDg0 ~9R;ihdAQn8*$J5v $ OslB{~`jn+Nl=Bmj?ȏAک!.!N9bſxT *)vd*zj ^03zp ?McCغL W/UL3UN mе0a`5ǴSidX!_J@WѝTmM GZP_iSL 6 (/Q,3:xWCA P_+o25h? C5f\  <uDP 'S~免AA( es6ۇcI>qwE_ˇzկg Ξ8.r$[@QD1++pHrT[ߘWs Ho5o%ƿE& soU{EŸD1hc#kRC1~5V*"$򩧞c- c*l'/_bSE #!i4v(_G W4 ?O8xa xP#(R0Ji~eGhdy?( ƠT?#L":&F\%WY8Q|,@K|-luY>85'яk0m`s>t)Jv"ϴ'<~%RTW"$xri'}j'E~lʛ8o{OznUD4mF,[6~5 VBʤ(bieS~2C4N*Uʝ.g Dž|s+o9:-EFĆx+AKlT(<9iķlHغΣA6hX 0wTy0:!3/R?F=p'I|HIͶC6əTO~z֍.ķw8J}vTI'l/YiYA8ؾvƄ $;bv!jC|ά 퐯7P@_\V_vr4|TȊpM #H 9 .ÁjTh @qd-͚FeE48Rm`_Wo[ 3x$_Wˀ?0ZՔ|NZPpLjꉘ)=kYq/aE]]PqN[?47n^tn͘D:e/ gMѩRkh0. qJZ~3-⟨u<$}+G`kdSbf Xou=R{Qf3Cj+Lg6 g29fs q}84l9Y> 'qUSH+^I(+.c51'?I(ACWq.w #,`g:"69:Y=LU[\G`:pژs0o6_FB{]КU\syU`KܐQ ?ʔ}n&-UqI _KbH|Y#*T0E,yS}Գ$xsJƦx@7OJ~dyg: m+'⭻$YߵM8l9xD? H#X$R i&^{=x@ KDK0?@L=:{ I*-'q{ >?&-zWd 68 !S<́ixiFs0e5Z~5mO7/%B{9?.Az0Ȅ|A҉_J$4W)po{"jKrŀǿ~zUOL3wڅ6q &Td7Fh8h ߑ|(kJJMJ hDQ1Q((k2*?-躕Th릜Ujy) -}:LK**Sr*9%_< uoQVYˍ_^9Ԡ;Lk=~2IV2KFZIm<)*oڴOO3T$7texFr |o |'ϖk1ſ ͤnfFQǿ Ρ,Nj|k:!a BF__O Hi~g'4m_AL]Ǝ_ )Ǝ9#l9p"|Y,~נ\;kFDz2lfe|_@Su|6EG_)iu)+ (GPqԺwa Biu4Brl9'hkqOhj8K4y([5H+I[6$e\f_/~dEʗ6dF8?PkҧhEt }WpT?symč~խ˟K+!&lÆ Qj뮻mt$yo Aﰪ Q3dB&g_z߹Zbnel TҹͮA\w|VD,Ϳ0"`P[0A,h*:DsR;ar(zvI']r%W~;wԆ(+( s+YK JEґd:{e0,3vΰ1=eOj7P,Cf\Jz.SPZK6I*?1hz.>qe|_ab(a.{QYoP!͆a@3Fŷdl"3 Z OQg+C'Iz B%Fڔk_ ?4I;WR~e.Ԑ^j_ Yk5 $-)Gc)|wOoB7eX%ƋYF"PXOJb>!X\-[D~c3&NꄉnpBEojc~ B=쀯m u2#>Si`d(KǔIF涟)~5mV&ʸ!$r$򩧞2'L$SϘHo/5vAh,mb𲇓L"lԧ₪\#a- Bh+1jCZDd-1T3<#Yэ%["]W?7d&+VZxgyF8jE쉃o#! +įL"kCIy뭷d-~=, gaB~0JLP&q|g:?(_d>EXu2O)azHhQx,I~攁68pI3*6Ch4*oWl)U'Om֭{qϞ={jCXͩ\WK &3vZl7 [ _|to Sxykώ_<꫏=O?=${1S #if?-*A ?7BNsb߸ ( h*eG3@ɹS%|hsćͪ&DžAsP!Sǻm|MTxkJP13vTנ^?j0)N99( 10omAߧ_qٝ#?˃)&)ׯS*Ɗ?v4h0k_N$RY'DdG_ #@K&ÿ~wl0"v׊w_K[jxfCZN12D9#9xpPzC}G-=7y=s&0J^$+?Fyya׷Z5] ikOgSbV7^ yt\;W߹7g3BE q9#mN+{38cQ6T$1S5| {K*-&ow%kiAP#oJ/ ۠o$6h `NFaA#Aˁ{{c殺DkOܾ/ѐwVʅ_`j_*4/| O>>/`c' 9( /B>[4ki!hI()ԶB~8LRN|q(rr`0o*UA` Cđ._/:E-oyg}VyԧsV@;RS_h#Vmb6q܆Wgtߎ8ߵ$=ڔAC 7:gKmVccŚU ?$k[[7eVPR;Bx?)LS|D9hEq k9$JFk&@d ؼهeQN(f44"~rÈ-Y_aI7q_ĭj'Bˑ6Vˆ_=аe˖ȯ}k$RS;(·F#|匒tJ )m:*}||D8~2|3,4ɝGb4) `<*-Ba-u`JH*KH'Zݕ99V+ñ ͕I,+df1B%vr9 NlYv?| 3@4w=yF?jOI䩧z'D~+_1&N`8߱ gaRۇ:° _UK}S ~%O(A~8oC?c/~듢_$rƍ* XMDqԧ7Ss`vh>/m96ȽKגSJ;7Re޾U<:&=.'F &dRu}.2^U5>n$s]Wcϭm:[r^Xދl+ &ERް7طgCa3N#GS1|' Ovhsglw0&rlIbN8Oj(_S$| '.A%%!4߆ϘLj6[tr+ ʞ0*/fF?KE/FfӵXW튓F黦3Z9=Mf,Akhgdܹ7~ظ'gl3F龞9}_7*Y6(߽[Uiyb؄)Ta#4'V_^0y ,gQ'_X=QfcC|}uȌ+<p t&0w 㻆// M؝Tp$*fxO%sNGmW"wФuj.{~*k5ӢN Z2BC/32]!Ί7-38C%SDM"{6hXYEQ]CY>/L; /Q#K^>ˊ.ǛjM -.'0^Irє9? # B+s&P嗫߿_uݻgϞaZB̨jɱĬ+!G x4Izkr͸YM?o.pNK_m*4}S:!mW?#Ə}$!zӡ_$RGu$r&”mHa/R(AmIg'e]uGhP@? _DžD۱ L+F)%e3ù@G0O _K:YmHP/H߃xv-z:APsӆx<@H_p!6@JIpS+{b>޸k-Gd=/.{IH[JP'Eſl7ocI?ɧA0)HM$R89 |"86g_p|>QI~HBlj=,%vr"Qi2xM%:rxcKEh, z_WM2knH`_edDG!vpR+mcc.?aְg\% įTEh/G+ ~my'D~K_?oL"Dgdv0@^2/$|-ϖk?&x [wԥAkmS~0^ %,9"eT⠒t8Qqf?MO ̥b*įL"U)fկ~u׮]N έOħN]#3Ag ݈%k28?:uNOSwǹLQxDR`)0F`y`lGbN?R[Bx;>hC+A?tFɯ+Q⟲dQI>6x ~̈́gw{8oc+Ww%?HKT)PWzSdkFDٸcD:9m^d[Pi4~5?VBa6-l* F>, b1<@gȎeNyc܎; 4d؍i7_`54 HX4zMr&])Ae hc_Pÿ샟gCCQ_c1/h3vU\E>Ur˖-*8j&_U+m EAqFTKG=h𵉔5EWC%aBp4% eYx<;*.8Z AX-~'ROJm}W5'W7rF= ]!} 7Q4(]IQW(8U&ƍU&_הC &݂P5;-DO_HV|Ῑ|s?[0lPD"|QLӚǮ5R ]kq?$5Km>V5-%ҘhKg/("r"W-2Xi 29_smcci." ˛U'Ȃ icopρ?#^Bm<)*jG%P(SO=5$矷]#`{:o 0*e4%Qm9&T`O@נk0LmLڗy0;-Ǹ*QʱqC%%[y<4;&BاtMuYoy[x U g Yj9O3b?+_EM0eiqaj`o wo_:/|/5{]F_.bGZjiCOq*3+WI(;DdU&bGz" ՞ۧ\%Fx[o#j>KeO,I5dBH;qފǯfJg޴).WM%8_&|`Nh0v ` [)7S52| "ʏŦ~(KS)Ņ[//O-x(+12@yG^$#4 5N _;<'S'TLN 9A &$_zX߰_+'"?8ljI߱߯Mwvi_,RO_~2<L"o&ek.$҈ډ؀ 8Kg/|MʏL>#l8ݽ T0J/%?%q=4<:rTăyPЬA!GB'c^;ZI0eՈ jxꩧH],X ;Q_ 8.ռA> 9i|Zm6AY}bE._(5Amv#{%m?wϨ~FZE,)ؑ6IQWi3 mH0۵I4 FzCl6KZ1E"|VM119h_Jq H,4f)ap(ÈL ͠_[xFrDP0xf1֛o jOҾgQ&5fe#ћcR*Kbaʝ*? koUM*ZmȝR|wQf7qp'py%8g5;v;ïN9eܠ aɲ۷K_VdT, P9G!(+QW 7"´1u[MbAt<:[1Y񠮛>pJxЦ|^0mt4oB#(V֒)IxEe&|v"M(F'iY<>4<ዲx?((R`LfXyqu_sj;K4ʶ:nEHWHB#шg$IHA! b&K__adoy3˜.  ؀ uUV=5nUgmqtΩ|g߷[2{иjT ʡ`h`/aém<?x636fk .Q}w0z 507;عs(vh蠗 $tɦ$ml>#W$ IF@19ɕ0؊I5y U#] 4G>=x)&_K!1Wஐxyf'WI_=;Ч G0$^4 }jBSR3<`?Iմ1ArI;pL?vrQ{>>Bf7?'*P:l7Y-Gl#~Uhx@,߮$A69Vo(`}l@&5uzc:|3< ͷ7@_CB<bK4CfS!*߆W˵&WmSꎚu=J.~HoH bI]qC >$$ӓO?d Qnk#>nߑN(`d8R'PIӨWn+6D/۶m!Nk`B*ȘLvI/i版&ҽ,~ ߱O#>ܜh'!eH IA1bT|Gc-P,á? %beXzW|'PI&]C%<{LAxjqjfO|0<|l?Ƌ%ݳxpW&!I{?(ABxa+pℋZ>?z|?(1K$ 9dh̓(vMbqfx 6@bؿXQ6iׁǀ)zTGsmlȝh ծsG}tPse)  €]AWẕWc&ֵκiMzkcM޵?Cju!bK<Vt$ 6 c&',RVޔu.~$D#<9m?Zi "|~aB'mKLUh8φFjTj&/PNs9餓ho|ʤԃ7% n̵J(!?6ߘobsD iY=R4@7'"XzTCU1F~HC`DbiG,!Nm;Nf׈L{`Vg j$hb*{X&+7dI]@tc<\Jx@,,<~x%_h_Py)j նѬ![dQ'd4sÏwK_?װF F+?SZU~OY儿?p)OM $Qn8#p_;a1Ȑ!6I ѵaq@% )Dto.󻸟5G2_Z<~Ox+ 4Bx>q۞w7TK aVɋLXdbQG,(zD &u<ޒƍYx4\]ţhYH7AQ7A[%\]uUtg}p862?4!jLfl9&s}##Sf!`69/bCCbݯ<^GTO₿_O8ݻw?y5qPHYgR$_#pۆèKtsZ5JcXF5!ֿ*HĒ"Iei1rRĪ;JI^HFj莘aQYBbn;#<2p۴ YҜL<!xIMayojPÁ1|aoѠ*k#+ &w'~_׽5BCXkC6Qk~$960ovk jPP1BNrTd}_OeJ`&7E+b?H@Ɛb:qN-㿓?K%2!"uW90#K$ZѤ j"R/K'vaA0C-'IJHK1GC`h Y8qHmm`WXͪL/'ŀڿ89YWEd4ZyQ!E~'o~80?FNz*)܍dPV|n辁#f57UO=aVxHΤEORY0ڤ<\/l<A)#idvx/ߏX5І*mرc ^WgC۶/{ I˫qTT8bhUY~?>ev}vh-4|<|ύhȭm7*g_kajpƤگږ-[c R WVƕ,1A oe$ߖ. 69ᩢ5QAC!櫍\ە;O_o;gV/~O{0XY3zQtytQ ?D) Q(FZ; oN"aH:qH>zɧJ`dpgn}o{xʐÃTlb̀(/CW΍7e;ٕU^}_ ?u_sWJiۘDam[ ;S_pSJ2xزd{G h=IE/zVxhNC,uIąh`'/tΏ MԆN~OE\{f#uG 6K\x,<>,CX-*z<+ߤq#O >3FC=SN[|{(o?X䌵Z:O&'/,:8}k=ꀔ?]mW3Ҷɷ/ uYi"dIJ> Q XkDBc+ PtRG_3֓76\k 4_/T$pLΛxfxm?.}qXcٺ0fx_y2i;@bpK8Tے0*8pJO~S0蕗 ' |EK9m L@ၺ'Yp"cB,J:+ꦞ<ʔg8j*}Hlʗ}Uޒ ^W'e=쳹įM.g\RZC6ӈ ^j<?zo1V8un-NoS,}T( $M\uUw^Tְհx<5Qt K30\PԒ*0vfNS A"u'6~w("Ϸc$Mhx8 &ӏQ;eL)7Fȃ4e4x: F0nvOP[7mVįW2V_GPjmo3 m;{M_h l9nA wcP';`߳?aAxGC|^{m+A%1 b'yFV4~{E~!ozX<8X*8Qp c4<\qv(hxXބ!7[⟳w*jd_䤑$n= y&O4OT ,j{APM,c4(dȦ\V y\vZ3RW'__ߏYh h93C~5aq<Wm)|J.~T9mF\~OĕW^{ –XPDD X2 Cz/#1#"miLu-c"Y$]Ĉ x1 slmO2` 8RWc K6zT4_*PX?gyfCsR׾=U hWƫD@70R/'Xm#W/4,E >vmsOc-w0cǎ6Ȑ4hdTWD"182B!ke/ +Qh}@aN7B5E(k~ j- !4ؗ%f ohxR*Km?-fD!NWotOā1|`? v_ 'ioI0(1J1s׌('7s9b QmETm 3fxxQ:7#I$d5 x O9<P$DȲ"_CLkvsCC5yBͻ!?-ּbݰV)ukÜB)ُ@k/y..=tJ \;Zu/ ߓ4׽.'b#k3Pzת5f{bG_o[M v Avg"ugxea$$xx0*bDzT`Hx0pp!ch%ސMXvw67K-מZzH`_Oꑝa8O'Z_+A[g}~ptBCțx>Tr˗?)14(ylwP3i5y Y *8z5$[ j1?ӫ\9LZapgJL%H9  /`]߈3a`x/ ; x#Cb&N _o?0Q[{Yjr_?3TT\HJj>.YYYgP@8 .=a/76S-zt寞T玐Z޻>Ë2+ ɤm|!5T`6bHXCE*D4+~-o?/rH~fۦx'Z/ԚC(ғ?kNc@uͥmD<KoxHWJ|_TOD^AѣN Z]wݥ]Gy'vڕ5ڢRLkۂ `h 3k"?xP{oX4ȞGmp\y/ Pc~߾}xW~XըcEh#\Ac"[јv6qGmY7;?5CUkkcʢmp 1a|ciGُǷyco.ĐgKr9Va W(7 ǮuJM7d?&7QnYQ/ßhQ={§R?!9!@%oPJ0K}˂_=Io}[cf@qIhw (YJ6^@'ν=hyH~[g ~$8E21 RmRsuW4V^NNf/ a_]K(>6Roرr ~de]vI'X&`H̢Azõe/sQ>ޞov2)Xn!H8,<|- *> ]F~rF(ǓXPoK?dxj{ d? mUc77&GCꫯBX*"=x'r3k|h&6ÉV74%ob/w+r¨YA5/ߓ4gϞC_FU N q z1 RPvc[E7㿝;'9^i! UXĢX4]ZN-J'ɨDxp<E/Τ_2 r' U'W\[l[+9hU ˷ƹ<ԃ;b,V_}lp8npne8;dO/,T}}/w/"?!}D4= qۄd;&NIvـzZ BϏI&ln[hxF;{Zac'fCD!'HP ri}Ecʞyy}4*  ˑ@a*ADVMY~8V:_?e =eYm^y[ cOfF/#چ_җ%TސDV[A#cƘyݸ!߉gEWљueP #\& 3 O\h]c[p((>9FxDed|-Ɉ0Ҋo6d;5 }Gē ƞk N:*!hYP\OYgwB7xx!&W맏;E_O3ibΝ7Ob6^'87:xƎIkjJM_NdIAr8 OO:b2txjG'DxȯRx~P 7zH[ C &J Y9V +mf>SB C) LFa-s\͠5S: wp{6}c訂@_wW.?]`Ak1U3,zʏ<*7AB5^È4ش|ԼA %1 Ot΄C붑&4Lh_RHVăoOCl8@7YAr(W .0. ]BY?` Z;Tny0ďd}:~*jeC;AÆ[9-o}G41wU°/'޽ &G}<׏s|L7rBi G=W~Ԅ7[ e 5(E IVtyL6`CH24a VD5J7C"1ݍZt+Twك`.ՏsX{IJVܜ̞u*͔J!obі8{/6KӒ oagyk_cP<p\U4^-xR¬@鯹o L4wkq 6pQG3<)ءg0l<"G Z $+=@.3VQXT2UWoW\qŮ]{1??w͛p0$Y CFH >#N` Ա\|i`?Y6No\sK(z/ !?z3ik|-BSL4=:P{# &/k>Rxj?`6ehݔj$I)ȊNmZ3%'`IO T8ɍ5If9Jڃ rM~&nA MhY/??L:HEj Mq.H"Zfɘ㩚cI5)w454hF2-yX$X1'*4"D|epV[t* [xen(~_ǟJ$@qB\cy ??/|c./N^(!f)iw}_O:&pD CІd-(vU =S.fynNR3cQDЄ1rdwF/x"7^gDy!' ]i!qvh1b3|S5] DYO"&)Rš*}#B~'|+~'ȻK B*A~a܊Se z3r"ԝ !te<eoc<3R u aN ZJ6 #'|{;o/ Wy lx퇉?}o'*/_e[#$ ?҄4A<@Yz]<9?Ϗxr~yډ%XIo-W\c U$ xp G`xDВ {ާ,6C9 XpJchnEEp[nWj ?OO=T1+IHaS]y I/W]}ʏu#-DacKkžv(ή,CZBU{v=~k~8sOc=n_O'i.۹s'?4QȤ NyAd֐85pn@1ۘM jDnt,opd ?R{ZKch`C<0ΉzzUπ>ve]H:ϗ-Nq n2Fɧ~z߾}>ɜ6%;-OKVf)ǰJgAWS:%Z+k1KŏƱGZ6oKYrdJ@R7 t/rч~^'$M\xᅆƒs K-$O U@!0q_1KVZ_!*[4lD:izFG;sܤ!Ψģx,Hx@ixDx68B"^g5 qXLp}!oucb@+c?%|Zvli,3蕃?䑶M~_O3iG}4A^/i ,*G@TPIR-4j>c8qd84OXws=a?FRYJ ϡ)hc䱈x eA 4g4,9,w?9wXH;H_OHxgJ$iB,&!  U^? 99^P7IH8?r_AɎ_oV"@G="m) fSc9H$ 6H0QRRob֖% }vu( w&Mdc6^T!^ $Ba9fEВ#Ff'V*"xb^J |adٜ$ %y.0 r#I* dсCT&MGO3pݴk?0,fV& - y%T( f}ChtWKidCA<ǚ ?/KH z@CS -MS D;o[38` ǰ?Morh0( 4%]pxwP-73$['-@9\k+Iرcٿ4=gPDP+pp1d;9oBofNiSZ:(D*K ݥ?V Z5в bcqMȨ5ƣfD'RC19?VYW:o4A/՚A r; AnZ-m _@y&W'WBri/yܹOkT{?ǎs&M {@6j:-.1<)u)ZAsmNf.OC 6O :RIPO{5^2|YW.ηdr#4vh8Px\<,#ǾxX2hL XX& ?0Nq]wr=x`(uk.[R O?tP;8#gAcu6f)cN`@VfY䍯SMsSƿ8OaO8yvG0hDz4ShD;E_gO /fZb#J(E5Hd8/Ń /s=aE0S'* ` 5pMN sN;Gvxl˩z痟 t8%:>$]}xj!buo`9r, },mтWBn䂭4ž,hU؆^C~~AxPH\~L AkdI_;cg m9^FeӿS i(.J\_%2 R[qLl01~Ԓ&;~4jz  [On U|hG*Ot;j*_2$[5#)7_y׈HK<#ZN(& T#։!$:d2 I #)ĢIQ I{^UWH-"FSXn a/bss"f$BP\pZ*w yLXeյm,])l`ۦYii5]M񋏬yհ3 k8 v%!ǜZǣDk=ƏGKbDhH#%ᴽ[3<8n-/oS6`/@Ca>~#mH BU%خ4c'Mn%.eG\Wg/$g˝ȹܣ!Axjq(BwV0p֙όhXZ&ɤ={hO/v '#:~Rqw+ ;+Mܹתh\nOba!y8a "!͞H;/E4}}$g A%tMOCM3m;C$yNg-%ҨxL a{^hʮm/E54v,RĚ+d`9* XUk\~  Lh#z"GX  [ /}'3iB,Jb($Nrm +*bL iϏ|fZlBMYĚM%jy Z2Ad)ȢQDh H"Q 1vZ=MSU41e>^{ wjN+?w?z"K">h[`ڿod`Wx]U1( ;&^ZE`I8gL@~k{@V@`WyQO61d6 aAS8hg,=bytZxG)5GIO2EwZfx>z-oy1p< RȞx><6,?aA\JQNW\n-M Vn"-Zv\a?=3MZ7!yvgEܸcڿsY ڟ'1 RxM&Mp HD_4Q=@%ABAp|;5G.9ZoN a0i( E4q0 cڅӺ*}40=pM7B,BC>ٶ+?䂿+Crl1_uL'0F5a[I QۓmxWl#? K/-j^{ڬr]A$E'woߙ4q I2T)H %+Jc[$?J'tN #~Ŀ:dA[q0=m=&B&$1i :ԝ yD2΋?1RscxQGpߵ?$\W O'R_m<܃5xiߌ#j5/P 13D!j]tQpw'xbzt.vZhmJ\nBu#ڄnJ}& BNu5dGl[mFTX30qd(6<"\}ڟnga??{3wh@m۶s¹E(T⏥(+.ϋu{Q;=&-+S#k/| v hs,5!rʉ=<3}NLېr˽XK1'pf8g~_ Grj<2C!~ܣhU}.R^NΤ k z@189+  ^֝ˏ4<ۈoN߉Aq)(+aG `xV}\6 66+QnCq=8iZ8AJrh1ڳ*`)0\E.{":[o~4a?,\<='+ ?qx.dm] O=S%$!yT?J}gPO:?>ACț~k#4:[~Ȗ;#NצRi/9IZIK&`P b@2)x `֏b2IMUm0f>Hgp`}$<xZH"?IIR z9$CS%t3Tf [~q#hL.=hA2d_`ڤƵH9D & ؈פ qyݿ;|B ^ znWmvʥz-mr5ЌH$IdAxr'#4({.6C~OD$stww ZHװ,hZ \Ò[3n@ MI&[5oiE5?LȺ:噠&ksZڛ1=u(>쮈1f6LK~. ~ `6 ĚQ4,3!1TFĀIɉ8Y(>rc2`#5CoĂj*1+Ki<7w@/Ƅ 6'駟_I pAxjnIw[_%D6KJUm jk sTT!2D>b#3~gwmhu2$ K9qn.V Ygxh{V?xa{Anx^VaĜ*Y RBAk:Y{># ] Թ8e&YCQD4lO΅ms3἟A=~o 'OW-6w!l.g~d8Cp@DqVTW?xu@X YL;?Zihc0{g@a I<}k'4 3{яnz//w}w)R/~ы^TJ3RoD()wY$ˠؘ A%Jum}4kVe Xo! 0嗷j'sp6ËunVڿw6ikfN|lЪ/=W _@H J|"<|.l>ҌoIqtFiSBle\ #US%v;ē%4cwVOX:/~KoyFy /^җT 1MzE,_Kۣ'8LCI?ov V+bYCrۊ.vmĈIwŠX+U0-q'A_0M-iϒm˭v^Ǖi9 ZsGģgd*ZG8e57 2J#4\sn9Cƨ9MUsY>%M`?@`IIJ)TpzDMz2&GZMzw%|bLԽQu\Y"XqG,g* (x ~κ s91"޽ *ïW a=5TJY*vZ}I_ԉ*SEh^ nࡩ==f L,xZlH,.dNxfHgo _ } ~x욟/{: I(F|y3{R'RYBDxdM O-c)pDeX [أAȟ0|xX" nMh0fD"obqQ'=1ں1۷/J7x!! 'pBWDO;ѸCn[-,+mML!6 De BCioo3nS3WcX}ŏELW\{.t“g+Qfd#X>?r .) -wP!ᡜA:N4CI?n.47?BnuBD #!*+H3Sµ{i09I3GzRT ˖xIЈOEJapgcDZTKy:+<8@ 7db''Kw098Ɓd@l_ aN?ԟ-[@ /WB. .Dp:bƀhB~㇕v 5kM8:^nY;m?ZRvL.W2!8S~g5ğy5+ $I3Nv~ "sC a 'f >,m:ОOTuC{<ܸ~*%FbsСw]F6KL`!Hf$b L5MOtM6ouyKcBr]w}6œ=!0. /7P7z"b,oxprZ++YNw9Lxk^3:{Lv٘佦$Mh Q j0"G΀n ^k F?vG/N*,Sbl.(I!j"k';>y{>}R-%ZU!9ؤUF}+֭8}ԈQ ة‗0^%S`!|-b0¯cO[hC;s}XD.g{.ݪm,ƶ #y93T ρ3gӵYc{? C,R$} \8 g%d!IAkL& rms4GU41F`Zh21NxPM![%C\?}?M]L*aΝb4?^noHxV H` /j8^"|cǎwimf|s=7dY<+C4tulSg+I ђuKjQA}83)bFW痴s jfApE!d\¬{jkGߺuW_ ۠Fc)ʩ 5 , O%9 ^9:3Bg%BB,_=CnDCYʲɤP=82ɽuH#iY"ƐA$%|3 ?^ONyփ"zHj] <1MCx8p?ۼe凇ZTC n1Fk|"ءf_QVgtm 21gL71M7d a vm@Tx\϶6*cBvZDn%chh!,!`V?TqzlOL5 c[Fpv^cڵ 4˨ovtAE.J6ކ'c:$3-P.cPqvڿ%`f14CP7~kV.B\W5=f,7p'@rmɩק$b x)M9 3[o7GIk{XZwjx$e&{lC҃@x$_߂uT l-YZ+oFb  )u՞6 Dlw7~hO?}Y}0NZigjhgh]vjzfS]3:qjzpC|If[8~Xҝ+g%[gƧ8NN]Pi+MMA FDS^QER+~a̽p4o3%~cĂ⾌{[,bdG*≬gNTzޗ)@$u-UU??>V1"V RV.~n b3.K2F!8U,:5̈Ci?޽ dx6D[@sAk blX!O=+Q0YJ/f;T|,v vPw?؇qg^}Vڿ~.yVPx IJ!֘ 4υXᒯJ`GXKWG1i6:Zkͦg\D?E}c !ޓU"н+E!D:JnEHַ55 ۤF5@Hq\MH,&9%"|2q*C&5/o[]Rb街bZD1qELH"zH{: γ)lx\{{3\$8zl6.Aj?عm$RVYcZ=q=F1uBɐIejBtC.Uj!*j߈!%deY72'(h O?j{5< C0klsv6*PK#|y`b !y2g;[O¿|z@99unVڿ:e]UHIU.;I3zU8VW8$,xl  )p Ok7qlzf@{YQ z.!j|} SZN~OxĴW7;D>ljЖjQ-! LjSmAģJJdQ UDe!~*CX Ǐ~oY \\pkLfYmaMgR+bA߹džuI/u{u* qǬx>D! F;+MbDb Wشp__sdǏUGOON JDC.9׸zcsH>lP= a Dއ{ovmƄ9N).1բZBXf痴3O` YK8r*![ns CPCܘjGLR M*Zv;- h}&5x;J'?<1$쀏1+`2%I,n!i"xD2J  DAApC~$8ڄUu,$Xo D&00Iy]Ï+tg=ÃUU ߄<;3;f?Kb4;hU-*ѡJ?*7b^raJ$+9W~Pazi}!(VSE} x2$a_# ;c桮 -~rKCRrjno;7x8i&ڿ~ϓ(78-r4A*$}Ht4X R$e|Rfǡ,(u5WiphPr]D ƤaG1ػ!L' -7ըqyj% *BjQ-\pA෤(nd %UhNF󥜳\,q7~0%}||̺E9› S{.7]2`IVÐ;1k%T̤F``$vf5Ldf5c0M;~Ԇo>,>zҬ.~ T-'ςIy>VUi˜0[8.%&-`2BXwEsDޞkF<0$NhWJdU"8c6Q3X& 85D!.<@k;h5{k8'C[bE^wܩyF}ȳ'p/}KK/y{^'"VZЯ?Oӳٳ%0um#x\67+9pK~8UgJiN\~ ^&UX\ 0o}˓4kFba* D2vDkx]IĦ!$DNDGh i7hz&Erd?vC(ic:×8NR'D eǂB<}48LMCjrgڪ.xc˰ﰅ` H%. 'r!{iNEXcdoN ̂ 7&]ghuQaG2ۗgsavDO>&5 =2dF>~dĞ={"6kǂZ_Ya5T*I+xX<"+(@T4 ʝ;G?o!c8ƕ&F.{GG^77|"8TC]v{Ps g{ڬbIR->VCEpE7/x BU$QPtLW꯴C?#6ثđ C*]yn9cS#@p `~xOd嬽шM ri OCJhO<+ퟋ?)z$gLLт?㞤[m)$ Q/+0ӇVBI̞װגf4JXJDb6aɴ9m.Tq0l<(\h8@@M8/Α5tk9o-! (!! Yg9h{IXۺuT򀲑"Th@rrbX.`+Ax _8Xqs^|o 1Μc// }ȮzPoIv[YIe|僘!6h1 .fّydm#^ zS0%"44y[\HY ;|sqN"Jꂿ ~":91r#D"m̂Wg/~3M'i4Xkwm={pS*DO)%A'jʗs#х<&/pVkW'˼oEPuchvIaOAYÿ.R-&#.!舂Tj‚TLh#FI* ^o/L;S략̓:Wol>hV 4*iPKpQD"~ (Yc 4|MJygqS$NK(h7#1|D􊟨6&~2 59xGC,*uf/2ƫqPCͻ6տWVQaę9jq?~2o,pL _qF56AxӃW=h!Ag񇦇h ;8VdɊ( .)ޖ9=!Ex62+[H _/٬YFlLBG#&Ccj'(ZH2+{h?3gy&xts}|^NTſ)g曡ceC7*z_?*N̈́h`)r#1e IK| RlY%טc z[śx,]~ O ?e@MdZ>{z]GW/J\!jz^z"jgL"Ģ x\toy 7ٳ'˶%ܹ%lAw?D{O z>G3zT3 {`U)!i^)wupiq+hK_i?~FëjdoS^uЎY)_W2b;/Qwqw]朧!~(bJK.TTh&LJ?ŗ 'i+xͦ,-,z_ _,_fg~D.Dl7 _X\gٯ,9Jh:R72H~o )OHz$<b&r9ҀmUc~`&C$T?4a[WxwI4C:, וږߠh;@ݻDЫ}I/Yh $=Aނdpq N<&?Ԓ/J1ݷȦ+meރ1,fI3^hf6iÌLV)AҭFj':>яuQމ]S PX;g!΍ ?4q(z,Po~^= zN^MI<7 b CEſd(oEsNP+:ɵ!5b9a]w @0B.{_L&Sg4p86j#Rx gjDIU⼴m#vD|[]wݕ5袋H gdaKE#4 &xD*ƏX@xm;9´ǿM5//f4BVE، *OLN>"dᬕ~Q { 3Oϧ@C5]Y-ۑGgg't \($Jxm@G \2>O~M/[ZMda#2]5vxHx8!˫T<%I$dOWՈGGgqF)jggfA_ #ATdɆQſ5Zɜ٣U=#maHk?$.xJK7n ntcl)sGJu&H|A%dbC /i;r0 X4%^ ~_=2'O|%Idt&-~;q[^xg΁ >ZH1`<<$+“C_]£PylsDY|>amk9|ެ/EϾ% ?\5Fy(('%Z?g@X4{2{4dhԄ+n 4+5R4>2 ЉQghM!Z*!÷Eф!Hj#-;2 ,54uGZײ+YH]MMږ[oxB|E5asr$  |19toLަ/"=d_.!.F1ӸSJDr*8A`Vx (X#vD)4d )FRF!jFb`i#@~FMOPޕ.]%! _;_q vFi#XX*v7 [<ւ2WAqł_o 3>dzEEtw<%J ]MBsO,INA+K|=|>w>iʑ|U~/ {{Oο? 2,D JY G!*ILe'I!;!KӾ$L+oJ!Oqw2睹X~P㔶f8i[ڼkqiR茙ٜ+U瘞82%7=Up1]* % H vl? JP!OÝ欸o)\OU%ɰ-$k2( eL$8΃lF.:쇉fQiD| 'q3޴C ?S3Lx&H%Ӗ#HF8v#Zќ#~_rm )X(.Ȫ#WWφx eEӸ*z詌N藲*%/* ArFFiKy`Eqk?@Lшh&TU&=x6~}@2xyv6y*;QO(5d b_/Q!G2:8.oo]|\C${il+"K mPGL-r?_-~cFƽvn7]x$!D+0pꝅ_\u2YIi"aJJQM/gh&2WWD;ePlePzCOG9:ML\ `;.8(1[l0t%(t!KF=(F4\~2O MQPZ(ߨP<~2Qt詧jFQ,/. -',Ј)>EفlF# HgXNL- RE|/HfOơ&r vnOOkOfRw܀sM ?35rYLkӂ2Qo35DD< y`^)_<8G$ĺ&mu{LOpN&8 GKGy"˧E;aH3G5Ҩ:L?jgzk8'_oKXF(VaH-~g(>"m 0||̢ ~LY1c/Zh SoZKo0 ]YPڦ|JV(MA]o?bD5T1wO(`,Rb.v}Og'W_עU`hP X,W1(Վz]W`4s9M(؅ b~$Ezu9>Iov'M> s^H T뱹܈D:^x5yY,5+KxLkZ ,K8C̝'jLƓhxDRG9k UO(7x 3zRLy=ks]Ԁ^4V8!"'V=v8B׃Pxhņq{DP~"g?+#(_c,K(=Tde߃o&oa4~}Ԝ&X9?ЉPq^vxN^AFj kI}~2lKszƕn%{fAbz%Axd\_\+$2b6 ~ǟJ'ȁJ) @ڑF,h$CFE?rtkC?ӫx}C1^6,(З2pŸN&hCڵ+V[fN<LǣqYzWWFNx*TfG Ԣ JK.Tӄhbn 0Ws0hMpȢ aGo;CfNZΝKFhw ʹ_H6 LE<-/ةxDHD 'Z "S1HZ$ICF"Cv![?N8 =Px2"zVt.\T9SHX.iD*~Za|8P{Tlӊ|*N>_a^ta WFQ:&!\> F+(AwvE^s;TB>B]Ac{O㵹LYh-5;,~K >X%!qh{9,;$ qQ>iO_W_en7;B(`Yȍ:Gl~(M\xvфf1oMH! sbg|klj/~$/qxm(W"71Y=- sISLRcC;]-yNiܩϬ͉S x˙^k 1f_l1sIp5[ݔH9xUhGu>#<3 v(?@AD;($JoFþNC-|6L_0+cȒQNX-~cw8,E8i9MHaQ0r D^`J]nNf!!<~k$^!_'~ĿTF\?/7 f[b#rI JS }g2Fd$m(gFHEGLv@r gҟ1 )pZ!0*v\sq(AtEy^VDܻw/xt9nK9s)b'GT#QWF]q+3){­("GRCӄR4AsC°x@&B$SĨDz<܎=JZdiyuKk= Ma56!% GyVIW3pco;'5GSO;cK;F![q ۾ u +=b=H~6B:\nw\asץoaMxNRq,k}X!q8Q}r盝<jCd#󢃅Vu좽Hj05d d0b #sy 3R07ń%6$,×kR0('۹QvmELv-;34qE1D$09epgB[M5]438&p_Z.ך15q=3Ɓͩo;<O D!4f9pLy_ӁHwL̿U¿Mi6lȮwQo>Y88T/]ru׍ c:{(șBlѹ[W/ 5$5 ax`~@gfhwֲdV5Ȫ4idr6K濋zp$`;=k3^#g_߉{yR~o*wB$eZ/9Y'gMcE7aPp|}d1! \!_8xb!/D&>f\ӆBzax%>)2]w'%l>VloY1?@ $^" g[;:j$OvM) >ƾuͭO.+3I^NK0;seOy3DF|rJTt AkqGi?|uq0 Ƭ&`ťv(]/MPlxZO_b^; "R!nOX'lx0o]b 3̧?iχ EjIVz_&K< sY{~RᇲauhAS#Hq\y_-nFokfl_FgeMl$[n%yeE HΞ y}^rX4XWj,F8iLF?!v"~ wK51mě,3< ;}-fbBNR%?&TBRw"c:tģ giS(HB,'^(b7"3E]I(<jgDTJVpĠ/~1㇔uϐ@U\ {Jy !Ɗ~?!<"dh)#;ՃS16n]Wfǜ6ӡP 7| x/{ |MZZ&;jBa4AfZ8&LV%@p~ ]|<i`if8r|u{Ok| ox3HzvBxy70DBO<'BBt 6n{E0zA=瞗xxm<<( CTyĩǤ<)ӖdTă$9x>UC'~'`=ۣk+)*}_N?~'|YēP ]=9N9׏b $v{ B'_,i7?yenq (@ksυՂ֌aiqۣP:wM5 HiUH17uI&&MءExi߾JOSCuU,=c8<i/X02Eƍk=7"ulp אu{{K^b$G%YH !?ψAf6 6dc*ǯ+}x裏iqJ!ad鬳:4f >/t(Kp ݬE€ I!3$ iǀt1Yc7R(e}q &'aH_~C3eYpEɦq1-3=xD^J_gcx44^$bIph6\UAzI sΕW^L }0,-lĄ׹ҨTF"^ _.u{2a!5,VſKndeZ j(&Kv.mh&f},a赧Ƶ!ǏFyqDdNhڠ3kAƿ$)쪻JМ6ZJ_<Uk OHI+s(/R ;?X?#D@ wi]}HTN`E?Vxf.*+KeUedzjX|+`[&Fè̔(0QeΔ>C1 d|>P48@4y: Y4י8#) x(c1Jdu7{??_ Eĥ{lM$%T<]@Q'fo--fSY$4E D'\ Bɺ Ԝ=ۢekUzUW]YOGC֖(~nAT$k&r99U f\ XjCᷴXJ`:jWW=KC#,"_umvȥmP}9?̂䫯C 4^<7*`?HRIkG01rd9G7RUIȲnf鉭HUhA]WfώϵٿuH+']tN7&$5C ޖJ%h<Y 8y!Eyh=k#M'~Og!AM>Cbxx.YW34م&5=j Pb I$!ce&2 XO}CC8?Pn=Ew@h+Aj(X(;I4tw1Y]iYzq1'i$3rN= !%,x vx$tp^ʭ8SV@LbcRQ^( o6?!my  A?cyn0XCH(-y4EɸwY-~1S`: 'ay !vL:/o -9 j_+VP+_[Y1H2jx&wޢUzKWfQgUm%o~seeuA@ 5Hj,pOy/A#ex0m?X )¸lI蒤UG҈mcA|(4 \.A(pGa1ܟkhw?+[ÕFl֗J4:_:V|u{_WkN4s13(J?8M|߰{B\EƸ%H*)e- 3iG) zKƛI"춖&ȩRx ˑLjrVAn4"l ?Zr(oR+VEeD[=ŮiLX';mȓN:3CVB6_}*pp衇>F@H~u"}؎,'#\I_WAuf e9so"rXc/[71;]`~,|x f:93h;MjeCrKsB_;Gb7M'mfwb|g*Z/doɅ"LG՟ϻ9ie1*|w>EC~4;e8O,O`QpJvܿP!2 ؁"fȘ+SNq@Br MqJkjE 0d8u v(=?z3@*G+@B}@==+M6TiVnF E34ᱢ o4_sǞdPa`s` $^Ona5a.yNïśY0ћ_Z0괉| Ń#~ x"\kĝ 5RKU.) 0!OYBH5\qvSObEO`: u K"CXN2 RPc;x|=BPc ~b^  )I_Wߕe"U[IPAu 8l;#|K_Kyv|>Uj<4~8Yi(Y16TH'؟CSӝgc9$@3>"i1>Jzǿ-M4>H_f*A/ ?Hq@brEx'oGh `>!*)"@C*nq7GG,X ֕ōrȻ>sRZ֖: Wbba~Ep@pO@}#NnsMGf6#Q88@x_W/i 0dJ=Qwr PFűLW;O8MyrA9}R*:('^bxBjp񚱆j\h%o񝊟]!w u"d'Y1Dx y^OϡҹXel VQ F C!|E?Ox㍞%hγ{8k/=N_U}YW#yYa|αqoAip"FhEEQ?>]>_~6s̄WL-(^(j#nj4A3iB+Fkud4Yu">Oc-1mǏFɌ(6w;oazRp&`Lj?"8%?Gۇ/33a5T rfx:+UR%-< qU$X3;y83EwCAQ(\zH?ⷆ#bBɊJfmմQw:6O v#s!&ҏH CQԎ3ct8΢ )*8$ J޼̙#|0>el"~\a|UpŸ7@P^/KQjVCQ,Z&ڹhY/H6~ᐤ[q8-J`6.m1&Y԰/ѐ`'45u ?˧F[#(`u뭷: c C%eTpޛztE?&3 :(`M%(^[Z|Tn&F؋ ƙiЇ1k% c;#^E0xW;_ x\_/Eb4^x\z^x?#ߗc`p%QZ\á[C LnE. }27Z.*k㾰XMtk_W%߮ s4BQ{.Υ4!Nѹ%xԀffixI𹺖tɎELh1^#m Y?Yo+~)ſ#ȊhaUC=KB՘n7 )jbkha)~hC.(I$21j@rH~H$>>ۿ Fҕ.~21,O?O78b!).>=-t,ɭK+ ,>sm#oC3O^>_/~:\tn90}*Ik`D}'vRvKKa:0:mP`r-{Ay睇 GT/lä^-ҒNGWZ6>? O}K^77 "&x68!SgWцs5s 첲s_".x43. %( N#2 2ǎQſL[=pXf% ѐsyļcv2m+mOW!٘ ďG4Z^xm5(!@-$7q}{=J,tVrCmq4ڷWRRFyv1 LMDts3UŧŃRzDe"xlKăXV|2€ ݀Wꫯ(*rІLY3]/ ?,DGgH-5\tRWc?g+3e"Z#]t,YV5%I_W7( u}En ({vjȡNt쬆YIq5kDU^<=ch:qބPf51>=hQkoys_e_ q0kl$,p" m֎]$8 ģG*\#𱕤`HJ&e@1obOܳgڝNt.$wcG C_5f(%j=j z)g@)fmb[--X#ɐC+Fh8ixҲUſ1}sm.n(@1QV= 9K9ߢ 1k"'dN%|=a*D_!#F(>},/)-ۅ)ݷiPlqK'NQCKE\? ~u7td@m6@ڄ.H:#|9]{~tm|"SWz/*[2?(J_] Jw8hW4e:0%A,+# d.HI cDZPxmh 7;wmydH],FxGP57=݁IxdEzǣ=NɞO- j(RIETjyD@N=qpLE ^s585?^=__p ~`pƟ]SzJRR5oq۳0{4(ХZt-i+c{n|Ɣi;riERFz*\Fޥh"iā"4y $ʴؒs(p!F{Ve"H4h?)Dg0" Z%$+WNO`x^ȼ7c6珙G) Ox&QE<2"*J#Jۭںhb&~YhzL n{p(܀;><0Tϋ[ďZ">jL`&yZ|dYZ;\= @DqQĶo ;hh~hxx1E)_1HR3Dp<~~ǃ˳5efŇ$ 0GtCmꪫK-dĻ؏!d렃ہ1LV&L0Jcӹo|jK@]o:{ t=+gGBC(np#R L}6eeh5c&&Ajڎӹc%'Au.@=$EִEG1^㗩Sc|4:f|$4]H441ĊNnr[+%G9MvWx2IeE8'"Ì(1WaL d$+EhX&RE9ןgW^y)⹣l ( zphF@1?{ q'mB } }~h[,;#~рi13DVdFoNiڪ)X7o5+;hʹظەQ| _v-bZQ] Y׿hB, x ^vAz"Xk_ 7t.>hyh|:[Sޙ 1edx*ѓ:٤X!gҨ xdDabfSDjCп馛<]vu/Jc?R|A '7Guy6fsh8͟aRV8=+}Ze+یHp̕g}s9/h0>gk@Bĥ^NV .$aAޚčh5x :h%ǿjx/9 ߎ燸eV4 #/e0Infw/œ%`qR }}$5#"s"bb2L ]wd{<HÃ^5VKW,瘥k5/ā@3J6,yĄ> l'S{T]EQZg K_o!~ҿ7\FQڰYh fvӄ ρy2&)fc笂3HF|4s_< x{|7(~;^ >O/8N 9_LpLx82 hکFl&,4M.XuVh6¼W*b!''=.4JĹvbEZy2-?\S`lO? JT>K%9r0gͫ&aa7Aδ+M09=XdbuC=ZQp7!0sYbQYo0 J+4fk|#0cKTk_x-ḦxKIP_3\a|߇Ŀs`1exMP3=n epXj1>H)Dp =2#x& g0t n3?:%^95}nP6ޱAJt/yKG/tX_5tC8)0J7cd#{NJKEH IL{.#}9 +Ǧ0)״LoDI!Ԯ~{߃[9p"%ٵŢDR OWUPAMMo2&0gH$L^^1ꏼhw0<·㋥k-a{FwL5 4G 4Hef1{+Y-r׬]E)NjO@CT|Ci0|(+:O??=7HqA:ڽ(!Uo?l 'g{ FL JuCIA*pFͶS[WF5Xt?5/>sRРN[-k_s:M/[̵IM'r LY E??>n&0wٳGK7pj{ji 1ČV!cgm#픵Lt#V ۣ]gYTW$_≺CG3τ;3{ K_R,[+zdt)sXpO;\Xsp ` bbC۞ 5 1mQDKWD=+[ž_o?6bI~*R $?c ( 5:(K$3}&nM|$'3aXI&MFYxL@DY6h%kG.--1#2k*71hw 5cZ=:FY{9]R=Y0kt鋱X+vln6-'Db~hpS<餓R 3:wq|9bT!" DuY >twc zVA}5uzVſ'Fq2s)Q޽{h7d4A}.s.:ME=ں08z ixV,9~1>ſ|4ڹ.VWt̓ M o$?V#~d x>xxh`k i(3!o~6M* !a}e>8<ŕd"to_אQnbU}a~~&D-~byNUM|$NJ7Jr~nGq}3J<=!Ή#"A!r$ !9Wqɜm6Aj#S_ ~+_4q\jL:F_8M9:8LTҒ}bAtdûpJH4Ű<$8' ?b(;T6kB<towsLv|WKKse'?]vo`e_ObbM(Z,!QE$ǪhP5l>_(x,ڟ2#<Se7tS*6H:x&."&MVؙȲYVAVȽyYb#F=\!GƿE!2Ygkf4f._dm|N^ ɴ;Q s ڀs$d31RD5~}{)B!XZ26?8l򕯄ɍ6 Ӌ8酅х* =7/`Fdz^K\휔H_~ߝE2k&Z7^F1S25(: &=\~H1p1H^4!d ؑN"H3lg7.t(ub"QrHN%^)4U/k>kzu<"E`72G-.K,~Q֡ xzYǞ]r% lRXⴋGxaiP3'*3i~ Rؗ_8K -dlRRsR!7baQ,c`gpUWr!\dߣ}twv@gjyZkw 's1y Fԑt)͞UW J: ``C[5- `_/y[Ya*Ԇe}-HOtE/N\J4BXHGQ4&6xMx%^3JuxC(13F]/ bD#"h$ς$ 'n İulA$<&Oqxϭח . ;x"l&߰ 8$ CrH Ԑ!y'^s5(*3M(Yy $PjEY袤9Wb4hIi j=k+ LoKf?6Cv(J,HNb&@*| [ASaJd=Ļ94qDU٢kG|'X&n EtK2 Bq=V2d#:I5ixϳ.6r<@P@ B;f__^sivLRRxQ;٘ K{,;0ga޽FPWZ_*XD(Z/0"Ф)BaAg4pjF)L*8Y2F98$3aLX$1= !nEXف84kE#3 S3Z2ANFj9#XNQWV}(1꿍p7Y5>O/O_Ģ Z/&"vm5|>[kaG#ƿoYxjϋAu }4t)8HFICR(h0Zt#z"3bKcgaY7фeev nNϴ?'[ҟv[ÿ{=7ţ[y|ab* |/b,Pw.f [ wm4)0m늗o+#OPQ~T, ZrNJxn~ (<3 %pMW~, IH5 ہ[ʒd5 {*1w޴r[ZZh44!gIyD HBYCD1(eK7 O^2W:p>SHh,5MZ^_699Њ&T+M*]KϒH3@T8d 4>wwmý0[b$TbL^qL$GQ&@=Pk <g8xw'糑lNmܶ3 EƏXhZQdq䏵 .+,`>s;|ǰP:ej%`/w\ќ&4I!t+hXt)-$_ol xjFQ=ǜVſvǵPآolS&bQbN1AHp6cD#%&w=kȮJڋX?4~-k_Kokl#p;g)J'fLE<Oz $Թb߅E/c3WՐ3.Okػw@  mTM[ yjg-__W?7*iN/{S,plF.*\4AHWb"hS xEz|-XHGdwi]QdmhNU>E$lF|%fę'B"c"<6N.|}Af$VZܶiǏG.oůFqśOFIi<|: SE{y3ǓCz<Ó@-/?obW{]8,KK<>_W~9?K$M\7(db-PDli 9s`Hho|/rO|+r`8rG}4P'0y t|K+ύ(пEH3&"qMV4!j:Y:';K5## O|cr%~lߑoݺi8jIL^oB#I9j]hʅ@_xl[౑r䐲7hS+i$u/xD-kAOfC6QEz[9~-l? Ǟ={bEƶ L#8ڴ1tbH.fh&aܜ(LX'mHCjY^Bw&ƣ}x{믿[:k'gkhTk^G)ۧ My]޽{!7qHp&nŠ5q{$V;ʃ.#Pp{}b: nrWV'8Ud neڝ{SG_y-^!#Ch_Ou;>gτXFH]lmf|Zq`6qHkyh2BƩ;nxj1[6Kօ49OWkt OhWQc,5mȢq>í?L`R.!~w җtCӳoM4V[mh06T?@?f w}gp r-/Hi1`^Xe2cy$Sⷳ~2ue*\ĥ0MO6c-;]jU@ju>8`4Γ/p[zԸdiXtEaI iWQ\l$E zVoVVEhcmu=G𤲊NcF |Φծ}OWģ=?q}$XUR5wĦ^x㍞p5XBG'iSd̜j% .%~iME1QA\>#<lP[mmFDNlCrԔv,%[n:8FZNjв \ gRAK19Iebg153|~xmowK[FzI2UČ+c,gd=DuxY;=.@LjຬeA|ag.w;>1gHv'qʮr$a% D=X\20#JwQjma4SΠ LOAb?3?sgUN7&8w$J"nO 4YbQ||>5-,ZNnZeI/(X8{o# <ٯG ãDNZ*?)-L/xKoY<Ɵ<#c1}w<~YZ7m1~GR@;;Fj"~of`TC8VgT(CלB?,(bZ5lll}9_IǶ#f(xO=?![eP;ȉ [ܭa_`k̴Qu o~˸J@} Qg CvЁ;ylVa9j#v Ɓ}kpX[6/`)G\(AsCܾ/ﰵ^6d5 D"|##ěgwvKӝFFDpMt!'NAQ3Z}e%?TĜ~w_?o*u׮*-kCz S')U %}u]K{>q 򁗩x %AbXe n}=}>}Nӕ#ƛ\|7r És幍Y.*'Ga{G\<_&D)-G&Nw w}Igz=)ҟD2&3ŋƝ)bS_^z;#r"UV~aP6)Pas;V:"mt"Q}ױ? cnƢ}3Nڽ#P~SO5 &. &=3E|>⣾n@|8}`/:IP\݄#'*Nx3k;<}CſP-X^knR<=$:VeH-<2Jh<0qZۍZPO}qX1&,= d,trx-#A:#ξ~ħA4G9(֙b:e-uv%$kΧ]!Aぼƭ%|nbB$vL,cI`;ov-bzZtZE% <`Zm_V+j4,zj"@{ 0cY!W3}//ǁ[Z? R A&h?5%>ʮwGzǃQ*-سgϨI, _G3̪ccl<48e񐴫'{uyG#iR<SAS᪐hF2"k!gmGM,ci|S괟T0:XTO&*^}'ڼ*H_V ҞH+?pj@5Ǩp4!,hOC$xEY<LHJ9-4L_^3/ :[__Z߃/ f1d{&ߞ@:p9~hpmޛ7IV\C#`fmh GE;~BV9lly?,$VB$ V$ӿ3]Yy<ܥOtzެ{5:= 'l'OL~<4K3βwЫ(Y/!%xn+"_ +W )3 $b3D /wnD(UwBU~SC« E(EP]%X~ÿ._x7pb#3@ U$ @v# Ng{u|)(x2$]nYːT4pޖd8AR`|snw I?%GogI<㐫'hAI8{,3;! @.2--Cu/ .S ZGX%ʢrBpx h|գ'Oouh wm?\|L.V"p9(4>*}??9r5z$C] +:6ۀ|Mx 73 wW/RDȻC_}uם _:i <٬B#`5/8|KY:("qH{(y![ _EN2 7<вv?)ҳ3SI͝NX7{ hG3o k.Ȥ-&ܲu"<ڠцG+ۙ .IlA9Ln',h'*3UQ R<̷$Ɠtp.< IEI&ܢQ5] `,؊tveCFn~І,l7S[ 3&ad TUD4*; `5l"~)Jglu~/~FDq \4Ez>;?6,^,)cŒ2nxn@oēIExx2P@3HbX w_hp~E"(5pC:ٿ=RX";Z|og\Yxop֠w4 @nϼ34>^U \}mnO?~'[o}0 <=dkeDXaуkΩ73Ə4Z+a ZE)1g51儝} . ~s7X=awkX~{~%lx" u"zFPnT_+G?e1? 1uW hR8T:5weɭ"RMxJFPW(߫uTt0^{Ɇ0_I4dIY&m1U&Je9>r՝|3@7@[._.(s2 Ya#?2]{K@i eV S8^u"ӟRP}'6ޝ/i<xƜo{! ,C,ِ FCϿۿ \G ډ=Z`&-94_(ِ%bп: 4h2bkx&6eЫ,nmo|<ͱDSHOxW7G D99"B.7E Y vL<Qg%9'fRV(bjUrON_(<77YAXrǏr,c?Gk(l,0,SU~?&lDI\rY~;raZXhhaWq֠җ -kO\@o/0zWFȏ*YWsND L4H51#+65xe#SEU4EלL5Au !).j\[Tp w}|=Jbo{M3_dC֏!Ȋ 7WNpwW^j?(:r&lY|u_UB}'?ϓ q].s ]ɫi綆ϏjGJ|9A_t!wh[>d9I=-\E_WSw< ['\CPs*qQCh['b 0"t@)XJ(lw}7(l҆ #:aG.3,~Ʌ?O iVG$b}1tVD!wXŪ A1P ;&n>Jg@>'~-bse%s N5C ک]a Wd"B'zj.,44;ߺ lB'8 u"6"j5(ofPcZ.7 8_bEӧOk$J\`lEPr~pfڀ\*"-5G;Gs u}k?C\$$׽/4z[G6 m{buIl%^$ nO y)'ӈǕ8 ^-xixsg=I](\T@5xyȿB4r @mKEnfdK/T$= T5>*~_`„Vqʖ[T0s`ànSU/R0Vh@7ͨ'N|^A1Hȩ!Y h;q|DRD D'dYOqc;נhmGXppڐ+' ? h+s)>PiuJ6&NdM7WZv𛛰7CT4'އ:l$KǔL[ln2g@'I6!ap| #k##[uϧShH.IJdhL4xW."yBX!)1heϷx)< x!kBE< (\Ѡo+R;p;+D8_I6~5l(m3,빆uB`]Iyŏ5 \Pn#M`s(usϣ>zQȍ/kEE|}|+o&Ϗ7 ?M4* ?ɮQ*:z |fY$J<âY6~ZN"?6dIEHDE--GC0u oaR<ANn @*rhc&5$dh>%"K/=C  ƫ{/^ٰaC7r\Vei"<cFrW1;0#Zy$A'q"C ĉ{X,3!˧&A.4pNa^T_DquJY$bJ񐗧x}y7! 4ߔb*r!~)GpQ h`JK.oa> CiFQ$p\W9ÿ?g+vy'<͓ SYE_` 6Jl/Fܗ.ƥ n"Nrx>;$P3!#SUSEW*H\SWN"J.ѧTq]-xHjy%|[lo!n);܋hC.bOStRU7? ]Ic1St<󌦢ƴ.@.Ln} lDx "0 =CK TdЀ%=?2c_'whS2-xzWhFl5i3hTw|Kz]~u7^xٳgƾBݟn-ÌOZ$p +[1No5(/@V=0 `$Z>w*!f\T xA^h~/A5l\RV9GCo`ђEgBs/3MϷ`<jb!)jY%+z%ð&ř&Xq@js` kUH6&`s- 7l!Pw7ySYEŐ[ٝ-^:'N<_c nH82dF׆XkjG| K3C2c,r r-^`^ݐD!F3z;1ks[R{\'t \PG6+7`xM숧|\dod4tOL%%{χp Vk5~X?l{^M0h5_x.HR _$VApƁpTݫ+Q4xo u:"裏=z4Hqޑ/K6vl0*['@->ߒ\*b{9B7m[ a Z]T~x16&^2$LAA8ȲB\S"y#2S^{姩널[j3RX2z;Y _ YaZ!;&1d Ѡ,gx $?SYEH'"Y×t";r}=à67M~V,9oAw߭h(7S%LB-WW*TZIџuo넋L.!('?^;ݒHk^IFɆW_}T6B,pLqPÿ pV9|#&Ʌ "Ym)疻<,:+1^@MG+pgG5StϏ:#w#SS_,CUaB`*VRu2dM)QO1J'ŨF-`7"XA.l3A]rɓ'ĎI- %h(l$&O& Go*M4WMk+lg<}PP8q'㊆t̏\;~=IQ<+]U9A'Y9P'.T&J_J4Z]_~_+oN #Nr*^(l]Rs1 Y 5UV/ hW-~KzYЉթWX]'bu$s }1 y3 6b|6P)Oh]UpRjC#xQۯ/VLx($sSq%]& F<[';4;Tʮt?UgO~_$H6ѫW/f h41wg,]i6j\*«96[ŷ{):Hx{G[{+M ? 9LD!ɦ-xFßib QCUxd<ΟRd`x7ovd1~ lECjg-V&ZE\[~|t"?>#,I›RHZRK盏 m~V RPäH>39GRHڲIzwq%JEdzeH 1dnf_kQy u SΜ93Ʌ5QJ6\|c6\o5ϕ5<ѠL5+ ~&Bsi.-?.aWo_CB?E_*dJhV-_*;g+va- y@& q8!Wh?ExvoGS2|.ǒCW4 @)k ^1fɆBٰ飺a-*"0 P0ͪ g}hD}O>O~s[`'G;~nWAdܾOlpm:jP<,d-y^BfuaL֠ʽny-ļۚSk^g#ùl#kօ2_&ࢧ,ſ**a2Roou0zu;͆@.ĚvRZ\/=%kиS݄ 1H^GբJd/R3? [mLOhlQ޲ /P _楗^ /PK n wy{>Jd WpRQTe .h49Zz4{<$x4DŽe+4x_ãte% P-CS0oq(ռ#Gnrz FB$M :c&}DhVVZ O.p`NioCC,.\rC=twlHb L ~|c~7wHb) g \:'rX /[*ʚ:vL\5-*Y㑗hSzxo^V}wž!K,uy&\|Y?ޮViǁSQzZ"wg#RL'\1BXE@gTV\>-o?x/ܠTJ,_.E:A1\OLn1[wpݨhPu]&4}8bows-x'Y<*w] ͳe m%zVBņᇹK/UH6 ma+B\oM´V@(rҒ]xߘxE:ֺӧO?PDHDA|D_?Χ 댟(g-tE4'ruJG3(l\x< 2:Ջ8Tb-k ǏH [N"~4P:lHW8&h1-c*aBÿ^劆[o;Rz]\*3 3,5-r[o@F){xy`Kqԩ,X2\5y*)&:q>RіO6{x,Y}hwHx$ dz jCA_} }gܢ  Sl)5Bdng˘cSWH66dC/g'~}넾~•sB )mxM ք~@m}^veoA&=io?L%@Y$n|*tů,oğwȮ!4^V@O/MǗ?d$2@ 1>kgRt~d/vM0|KJh aV,\TΗC'*C=h?g}Hk/4_YծV9XE\ 1_[[> ͆x@YC=t'lE([ B\#=S+&?m/N8Fpa$+JdSb%>I U8:]Fj4JO4Ͱѭd[G2adsȑ# P@~=р;kVY0J6lt`=tC]5ɓ'{챻ロhH.q֤n#/p©uDs|'N)RM)ufCOxVz< )xWC(5od9C`bV4(,_+5\q}5#%$o/\$S=]?Zb9ء(<ao;b0ŐF~MONhT+k8![ [[:ȠXnrȄn:,Ħ߿B%'/\'_ .ٳX gîA&y"Khzv}G)-]$.o ʊu JEbޏWt{pҡQa4e&{Ԇna_Rʇ2Vs>jO]ao?fn裏nwqRTX'nWnjzSK f xǷޙ?/}r]9ܢ>Ol+t%.-xzEYu"[р(Ou%pb̭`kr3.l8zpc:5p/v*J(j Poe [[P}{j-7ޕ \1r]9߭h]"@tZZG&b<W]k4- ?Zv>MeDú vW*;v :t%:{;v'$~&g"D`B (Kra+$\<"H\ho?xe z_*v vL./!%/wOk4OLn/ y;ZVjI*r N4Pd'4G 9䏳-epKixbFhZbRUv>^z)Ѭ| /RdvtKXVnxD?70` |\ʇ;Pz~P,-+[gIq]wX!Qs7)&s!;eRT(7N'n+ɰB# gv@=%n: ^I&ᇂGE ]wl1քB*XzF)w60 `λ 6l 4 ;YG~K_ַ:2 I]C7' w[2Gc~:b܆c.յ#@Wqk4[>5Q~9h\4hl)h|ЫgQ&*Nn.f+`-}^$uE o*^c2i/VGcL–}CAc  1Pb<Љi"# O-u--~c% *|sK(K SdE&9_*I+FA# O3S!7[4xP8Pg#[gT4 8Dh =- ؁.vA&)A(YЙ>C9U\*C;bioodo|g}w=D" ?oL"IB|Ƀwq{>SqD#~(X$^KR=O5%7c*,ELkƚ?xxo(5ԕ8qݪj3fH#LrϭDʧZ]>X4Ŀ[@G-f Jp'74 S:dz;xJmq監baȢ9'd?@I 5#VyTC}񻅌֮aw\0@ᩧ*l!l%b˲q*֩{8ZElX[[p{w8rȷ{'.jH! H2C>5m:rA""Q:T4JaKm56Ac MN Z_4mYqNulhbЕ 2nr!O:x!Qy$bK6Nu@᪫Yơ{ &=~Jh-6,--~xXF}@%7|BQC>ѐ?ˎO ;?(bBUЩ[QkFgSf59ģa\mab;etoC[ :A zڍKkG׮isgh\mU&khi!&I6cAgf 0,VsJ?[[w?#-L;[ NȅD P 11?4?O R~}UPϯ7ۨ1+Y>t:DPp~sqI5ڐ։p5N$z%cþ^%' d?%^~_TnK$lt*ȅ"{2&DY[[|x_ PlXr߲ wŵ 6& :雟f2F_pU;}F͝ЂG_I-qJ]'zu&Cbl5*yH6lGV = '~h*/oo?hs̍7xS!Ik V瘃h>ԈU!=Ri2|l,j<|=&pESk4C`l%C[i& -p Ǐ& Ȉ!tUJF`R7xxb,@8b ݴ,@Oc,& n!IS[sO A? 6W(܆:tD Exr?S}S/y]? F{g.l*ʫjn|j>ZER@iߛ[[a! w?,T=,@͂g`w'0 qقZŸoYas-zE#II O/ޒˁxIfh ] tcLR,xp(o|O| olDn(Mz{%-I>ǟ<\!P}+lioraBPDUi,--=~z@.L~%Eg` !7hA焌'K8 G~9<̷&t b U;؍ yEb58_76p 85L՞i"BB=iՏ[[w KzfnK- })hifȑ#ff$kB =AR b\lH}IϿ^iuKj{ NrM&J< \|I;20x `x~;raoVc3x1֢!v-#Sdouҭ ֋se 6v,--~x/f[!N1U]<= wޓ'OYYpB#ĿPJCH3 e"90U%1Ooo+B{9xODrX`Res r]M"1o"1|/34nݜ(x6xND>~pԟEsEx &j3<'2 T^O4I&3]{czɃWyjxK%Ξ=%&xnLnBL.pw!Ė@xxo[?~o9-`  –>PBL#Gw!kAqv \KL>5f2D>ſO0e$ǚnLD8GP|pAvVG&liCzqY YOO6?L7߽P9߲Lvr+"7ᗁt?gRx0BC]eP}e(yꩧdR-bZ,O'g=--ԂJ'p뮻رcέ$)nXL.yxK/$%cO= 1 |( gu2D>ONIHII }VO!Y<Ѩ puC ,UYmgu8uPhAm,ݍ7%K2El}D>}`|g1~Nh[oo%O~>|01_{4;5,IQC(:9p R $# $.^nJIDz%9gd]bJy 5Я˕}9o5N~]S0|[[hpbP۩c%x$<&[dlx7 7tS{UMPT ZEʅT\I--;{C{8hX|z_G }1!_ ny8YNdCB=]: 5-S r~K NmF3CQz);)Jxdm曋,500UR=n?X<$^{g$>Ē -Nu'&d9U 6lؘv9xO NZQ2[:u8]wHmAf )pqDF''!|$Ҭ+_h Af-#gGdd<ټq| +Cdxo[.@O.Y00k</y#)ydAl .Bp*"DWSZrioo^j8O.L= yD'0m ՁWeHeHA8pzH)&vq `Rx?3 (ҫGP" wnI[AƣdZH OW"*4.x:7WnB˞߅fp]'s7 ;#'vu`r&WBɃoP*pwVv9U'g]Jkm,--W(~ww3g΀_MԄ,$-čXWڠ$\dHIO$fK%!K{wR_|y:Zhp:a-W@,]N _|b2c?5anx-ͱ̷ǒeb!(5T4&C$ކ{c-X9Ϗc%uEjW^yRŇ~8U,Uܵ$--kf= w$}pH/{"FE>~NCGmٌ"TW4hU/FKHÿKD!`GMe+E, eKm joopB6O.{ p5IȮ'YTjpo([AS 5p&\09։|ji Ylr9zKΖE/4`99yڊ8f^ȠH+KNx~zĭNW4JDL ~Uboy< gϞ:۰jկ~}(B 6lM{O1I@j{OBuP qn!H$NJ e%I1`C,ǴN 4槣!.yB%9!&v\&ssr7<8e]Ͳ)t|o'R&){YI& sxq&>^)*R`V$I%3{`+><7y-1Ҕ" ,JD 7iH+hzǼ:<`QRgooP=3ɀ$A‘#Gpr7jEIhNQAt9KGZ`JdCeGmqG SFC"m+*_p>+ e.WM+z zOGwt)6ɗ*+=z@xͷ&5=de72@10a37A!ciK`XA&7{--x= eB@UW]R Ε8T+*e #;&D-Hr!w8\Il$)H&x (|>Ւ/s:PJ^nΥ 90G6M\#udzR$54rX5",;h*QO%r1-?:ηP tTA^w{v ܸ>Up҆ 6lp ]4&6Yfqd3TLvԄ?PR WFE%{7dN<|xē{L 8[Z&n;8h)иS!(xP\;OPi gnB $ƛ`xIR&YC'l?K`}DhcBV )3E~V#(,ErB} G/[N(?(8KPy~0Uzhh"9%~?9~曍([--~?3 ^|('g`tAp?_`;NUD.d$"9Q^\>xxXj {Ow|h;|p W ?,eKKM=GI9cKj@dFZ"}2 <5Il'q&:CB6Ȩ|W}M>W<ŏ6mY?HwT87Y#왓ӔPc,R(o&i*Sē=&1ߔٝI ܍~98`[o{ [ax=UOgo1P([裏"ǵR = W-[rYaFKlWqkƒK2ndIp8wك>>x9/J!nFCMzԡn '$~ ^-g+|"]iȢEMg&NĮo>}"+iI,[7sk 6U,h]rɢ[[Ze|7L'Odu?u` &tedA"Fb/X! Dt`KWѐIZ- @͹*$?o=(΍W!#"H<ʃ#d]ȬC{΀+qJ lR-I/GVC| {a:]Ns;-ɞ7s/pb>vy.r\.+[[Z\jh6! MĝP 1 je$irI R#H^3 ̤EԾOAmȧ4ˠiEA&ZD ,!"AY9PO)l#4[W5x@e1H\`Æ!W4@ˮ*^V$ ET Y["8elG>"CEG1`~jx\2px8 DJf0fG&d<$K''2|smmk'!~jCV` Ta%]tQ{n#Gd$lx'aq}\' |1S P~2:4^O w "E{ d-&H#P OJ .Oiu7 Sm֤I Ԉ9+8\WOFo:B^*Ɖ6dETcA'Njj㉿jy|K*0gS{cc~Xx "Au Kû"xlX[ŏ'brfPf$- ET2WȐ<x=v9B8ra, \JH }҃)Hz`Ƅ#;p.[9zj1N>O ?%#U _B*A٣p,uhivåExtOs$/H+W+£4-f>ߖR&'N9 F>fMf }]_%o~g} 7|SJ.[[p=hL=w_ nZK-=nK . ŀ|=A CkpdY JD33>X 7ۋ&܄\#| CTtG!=EO?o#t̼Q=0.ͺZ=sO5VN' [Ts~<3o\EC޿뒱҄P#)^45AUX 7@/K?+BZe=\,-A[! P6Bh7lע x$JpY9pw@6}W>UYtf& u"S OdDΓlII? rM~ʕ!mEpLas$bG<¶yr,d9v,MI WύނN9G4 /8ߒwAiv4yӔ&O_a܁VCnx7}믿B3jY[œ^6H-TtAj$qv{RxG@ʼSX3d8MvHA9%T_6| iZZ:DR!wU`(2UI~BJH"?t" #'TSEA.j009J*OfѓF.W+fʙd*p;ژsioĊNWc?̷!HB9;N4w4~",[^z%`+_J$8֛L[[<Mk,xɽ'Ԃz]HNzE ٬ YϥIJLz7s%gEmYX$5b@:5,F1 }FHcM>웿tM]w=vRO•x@ בR1C^I a^ƣd&/Irg{rBhOc &WVlB)b;/@+4ܢ-I< (N >8$clu0E[9mq44 BVr&S# ܞ?W DjTIMKв4P7ep~c>՘ tSHGtY$bIoMf4#Jp jpO |kF?TXhD4G%S&ٝjo_%\<2Vذnnxw@N!s9 xߤx>sR 1r32R^?+Yᘻe}"4)2O28a."xGG>\#Y9Ԇ$I n8F!X&*x>1k@$)~J:}>՘d3RC|?qJ򁹷LNyp dEux(*Y' x(.Q?$)|ҏCCe}20b=%<ʂ5 YHJ ٺ7/i.<2 s ~eBX8$<$#Y'WX!dٔ K| O顜'68(%)r_W 7LXPR)b?Gs%FFd]^'\V]-T_K\l e\'T.2(pT_=7-W W _YR YHSgoB+DB ŰMHv[ped]b4NtzC!;$я83"=VmpQBB9>I9wTJ)YH~W>؈[^;7aǗ mpkjqJNM AK1K cUf e7Ndfn Ln$Vho0L)C0̇!>U#eČHH4xw RɘV^aˁ$N &J 7A&\N,s*$>>]6#|*==?A/mV=Q{3s}z<OJ֤*cp߄l:+Vfއ(5Ԁw˵̷2g2:nX~?+6ْ%VW\qv 7?Dwrxx /[{2Z}WO" eh3sO1 iY& rKJb/ H2w|㥗ob\FA꒒ ˙\H1!4ƿR%+GUKPnx->)4DxÃG&˚NyEB6Y(hHט<F7)VgV +cPR#.<$SDS'"YhՂIJ(-e2Ki7΀C>hrYxX9>|!AnxWC'ŕW^HRcxL) @ɛn ȽDraJ6Y3~RVnD||'qw\Bw+/;(L1 1  ቱA<}@(OܪK+[A$ ac,H}>V:zwwCSlL0;/ ~cU/=ޢt,CIp|&$^*#\p%-3L6Mr-;߈%'w 7&?O%Yt VnWV-I7c~Bc |}n8s $?U.xC<0n`p3 ^j!-8܂> Ł;-Ð E Ȗϛ}wK"n dY΀)K N!{"0'|p!f%b"1dˁ>&,]o1).앿.焸owڛX53\QW*G>:>|&NCeϨcrR<|N炑z333f5e)\m4-Ta~?sz$'@ 7\\s )B.[hpjq{K-f!N~΅]Ó rnVT48FQeA.'lu[dP&ڍOL%R]-q 1u> qFRXn+g  L/=q Jz>n;FRw5LlgЦƬIz#N4[ܥx⾣8b5x㊔ O"*/SKKa*gXjţ`f4@pĆTr=T\j=.Fc1h -I-e-!WX \pyx.PtX,ɳVH<X>@y _'0-*ܭGpoElW ."gOBVlkJRgˏBWb|_sN'g|D4O9,S9xx$/ȝ~Or|^Mz/ K '2b6|_ aƺ/eT~2n۳\Y9x 7@K|g Od),gOoL<)xZ `7Dw/>Ną B m>HMc0}pb=D5ঋ/nv&)\cLS]9j\ J뱁4BR[KJ=62 /GbW>"#(3x-US7?{;w|جa! @7 7+o6tR?~\(X "0?OZFUΖoߟ7W4$ JdD\0!Ki R#§d@er tv{W!hKǽO_;Kd+&?")Afd U %8(WoG`Cx3944n5\ן+)y<,+A[`V7/~n!7Y hpI'ePB~I12Kaϫ,H2.VR"C|wC`Q $G)x0L4GvW^3~6C% enm p \IoŔ5$/r K*:6QH )GLӼ8X7Y!Kr[-bjκ\il5GZ LEn ᆟ'^᪫ʚb<?ytǸ% s/E6k{ǎ: 駁(p^y>y lקK-lkV{Or"\ .V"= ;2pDGa9vM8>Q.G;?m LV%4ڎX;@6" qgwm\9ˢ$Gc"Td[z'orzxoqL`Q":&lE+1+=! E<5x ̊n_ 7tӅ^(u ?D<<% \ↈd߯e{}CM-\' X|, =D ig͏e1)7 w}Asn58:ULs&kA?rmGx(e:Y'ʱux6`R s|";:^ T_M~}3^2j3g\d10w.0 oO+ʅ/"o&ޚG!Var <˯Ÿa@:82Q%9kVxB^?7HvOng֭]./v\ӌ_6cS_+duH4qj[G/ќTa-[Ў*ţbf71'1~,d[h /9rMy/[7|I{Y+Aj,xr4'Oa% }Y:OܼLJ̲zSMI +8 .g_3v$z\]? $Q|DA/_%y7ߒ\!AS%m,A&ߡc*WIx(W$>֮Gh\ޟ$ HttcYci؃} xiܦ}z4;h"IH $oω*+{oȌ?H8ˈ~qw֗coݲ7KܛOg;ɩ!yFx7 ?D|r:(t[CA| 9ES[j.x|xi ? ޓΎV.֠G>ۍۓ=-f2\T3&Z;q ɮ~ssLUx0*>zR?w;wxNۆ^k㡶 xg(d0.2mcw>܋xx?ڞg'ߤvFC[ŸO:~uQ;r:j 7ǎC5a"g j:Ԃ>cl vp ]:i~|ydLiPo!Z ga|$9Cxį%{NߊA&ir|*z\`E&w4eGxЊG \:Eo5Tp/GoL|0{+r\+M@ŸO ~3nk7|_8tٙcnjGUıFcRY0l%jlٲlWvސuh%k0zBZ"aH3_9~e]Ca<ϒ#v&wRi&>چF%+Qh ջD0Z*4cj~fDxrA̳ l%d}!wZ;JZRC^掭';$W 7nm) @ eqJMSkb՜]K!pmoj\Us%Ѱ3 H'srr=)&LIqYu/ Ub|r<[NYa7B̧naZÌ >Ev:)"Gyx%/x{)r"&ެr Do-XZZ& 3gJF3;{vpn W\qn@dUk:uIYQ$ơل2mA | ^[zno#s")eK`pZv{]S#HU̷\_4|**}T >H&T|<3WR!bǧݙ' އGBpA77x#<,D4"V@l'Am{i!a.PPVзYOل?2~_K q~ɿ뮻 Zq.x}i:Cw{ e8j2Uy|YikFC.T7v0cߎUXj+ݕ8UXA 7!W|ϟ?;ggך>$(҂j]|3'MR}Ipƛ]a׎ }>d")C2% bw]՜P* R؈y g-<%Yc/_Mļ'|Mg0g1~{k&p5ީ^A$ ?_J=^sZaaapÝwyjcǎQ$ex ̙3P{<`ޞV]qěWf`a{@4D.vP0ڌ.%#!:x 0V02A^oO >9;)6!SԃHzaCͧEk㩷N<joP^1؎'z@#mu$|Mj"!]+w|!P :yQJ-:CK{\^- GUKcDvz=OT+1Pm07VnֽlճП?S*B5~a<?Or1E PMv[_9(_ "XÞiaکv&xGp2gXamX@TJ$\1 ?FB'(.?7#OH2gU_ޱ$>j'a7oHx9>œa^`yJ߲щ*Vj~+ު: D]0"NB[M͘2o   &~=r6,m8P᪫zPNz UUKΞ{j䮵+tYC-ir}i^;&:/$%j5DaFobN)?#e\`s}4Nda4,;1. 87}AQ1PUF|s%;;9a Y ʚ[74odu 'z BuMv &o P8Ou,} _ ǏS  %{RjU,?NXMkOS+a5zh:?2„h`,}&3F ?R|猧w/ݞzP؃X!g!Ċp0M>G &hWPb!z+ӉV+ߞ1lMI糶wː*;I_5- {0X^-/{NA6 q"͏/!/P2NXy#6B.gۅ~%TO~t: :w;:4NX"H *9S> ()ROL&<) 6# D (x:Ux[6!o$`W' DuW(pVm% 5nK.IOzR@K-B,&M8J}hfx|J7M|h`V;b-PῚbP -ukMW<.Qf|xPj2crt|%xBsb3zN mH9V @RZ;d-)aE2d ?. a8LϏ׻y:+n-$}ÒO 7\qZԠ j??Jb(w,=x\_PO @ *ߎߩc(ĕro4+<~Ìe *bTF+=j VhEP|Mo>m' U ɘHy?7W:T7?g{AP!FkSՖ-?_ jH=6lroV;R:Q "l$[h@5LOfO~>цB<[v^GΥórb p桁2?l& ;wL bpVm=u.h]H-:&x"z_/L|^ORͯz1W͛QEh=?N}0m/qT xQw%3Sxv2Q }hUD31U.4IAE2>xF 2!'$'D|״7moUDF'n|gkt?Ti4(;?̟ ]mH1)HJPg'5zN/~oπ;#A[GG36 Bp{dHy6bk˛x쓠x':v弽A]{#֗:UX6 <(t|& %Qu45}pرG$.в /R׃= 焎VOt>"҆Ol(An-1SË5h=˟ΪVPHѲξ_#v~TNF7p0ъ#`c.ݞ S0|,SI&Q}N e'JoHJx=)U4eaw'7T Pcer/WSXP5VVV4PO3;0| 1_ɧޒ GdD(V+\#>jUD߉0/6Kj4~v|eW.9vƟjV|Oh5e $Ym<(*c4Y}r<{c"U<ѻڠ$ Tz$ GKnCԿi|ECJ4u9/\'c~|$[Scϑ#!~'OghLAwݫ-`b 0?8˨ ÐXM)U"^x$e94e`(&2;F{E~K ©ϫo- { ;f4>Vr~czBg$\ [Wgw5V;e5O4A# # ?+q3?ۚ>MBðn#:Y :$e_#)c' f:?OioV3T,\{+&|$>tx{9s!LO*MR4?O4 g*#p_Qb1Zhݻc\e::3?_F7 ۉMxۚ -N;lMI!jdYL6/k1&&t6Hsx"4eA3V(:{Mӿ%w;u~͠9SR7و;i|x: KG`@-?珚PoCG^=^qHg@w"G<~>Nf|?},l$TwunXQ|6erB~m( }D0ZӁ>pxL' gt$; ?@,gv~w'9O'?&i|pvXCA!d_Y+1?gB ^; [I ]A.h–Pj3K4c:s5!?#tv_0(J(~7E2I;RĖeQzFxP>FQxJU q \z]B<:LyjH,{(I:~H?ym}>i|qX\\V/Ίn;;`=L+s%Pk/T}!c?"ѠF|%;Gp i0R9?7W!p<2㇭0U55> ?~-GՁ8xA %a0ǸQjv e2K'r:?-BǟHH3z9||<M-rQbS5RbCv?_%1dhX@ȐJ|xPIL{y`!y&r<ԣ B5?j2)̧$% NA924,|$ KX=G->kH.蜅"Ϫ? '$?7r0?0! zpՁ[(Os{ѐEhqNjGo/rxx+F=CTF3xT<[5>A_S&ȸ\WR| zTM)Rnp6cmmg8O_2(4> fKC;.Tk_ޝ|"LNZF@ \时Í0gcT$,Gտ1ÿJ.g^rjf /h<2.`<5 !kՋrYtdE#<#-90^2[㾪ggMї<`mȃH )M\d3sŰZ j;1QfȿOqpsS㙺z~3{N-B05žгϿ'~׉HppK  zޖ#`3s$)})y,8"džj{ϧʄyА^c@Ÿw ?!d,|%\gù +<{` XSMNJx:>8{{a~e4o~Q6~vT#jVzzv 4 tGy)f)Q=R oGBwF-6I1:* #cPS'!]q9-zx$ id}dۛܢ(2g;̡Z 梅?2~6%l?WhNwKuY,^6ȅc&,#e~.?~p3γӐŨOy:4 ~4|Q<-moCrwo j_Z/x<?(~l(Rz5+DR}>%(_hUR{0dˑAg@{ *T(mjۛjJh\/7 bL.㗿/-4~WT5L`տ.۟`=~f-}>G-ͫD?Ôe'^ 2!_=K'͏mTK'$vR@jnI O_x2A qVE ?„;ߔ?;v?F׉O|TQ=18^up*&=[*Cm~:@rJdI%,ЎR}֎G C7:ZwJnQ(/!ܑux_) 7 o Gr xA~{ױ7 VA2pPX<'  ]O i|ǟȗ :q+u܇:D] '#ak |RF 88^{~QƖJ0v}HErLCUEeUeY(l1c/v'~Q|o$C0gf]w>/ta+!Aܵ(i`/p<⌔F& io:cz[U 7n%(T ?8~I:w^i|kr9C5k r!&xj*d+FF–aXA4jh?֨.*~ͨ$~O*(~|d3vL"Hhٜ9N E`qҴ#[N$`%FY6[UI u501:" ,㚤9\6X<%r}Wk:?#dVSzp=p޸:8d> KQxfZT|&׀:o)|q #tO1ﺃJAR%F'f iƔ `RȳdANx"#!j|{nA9;[Cqu"H6 #wp҇ԽS "D^-aMe{Dq L*t|1?L)8?ha﯒nDFx6~4oZs:󊧠16~7OxJ*6 ]i( ]t YQө7#Pb>Cz:`G;9Lca $/7'kB{% 7A+@K0>@zxj~D҅ 8y6_QX ”x 0YoAy9{!U4>I [q|WO$O C+D~gTzyY&i:?zZAQ"^xLŠNS'7vm!jE%i 㫇Mτ?~/owd|:j:AzCCȓ$P Ǧ6:tOJ__/<P&X_ay_mN]enFt>p^x4t});9 {{j܅㑰  ͒sB?o OTO;8>J׆h(OC[^VlǞ/C.Vf4~aF6""t#m)$K:)~9 Zkna 4T('bYr#dÜTPMRyt a9MCF+كI꜔M& {tVqڊ`A4BmԹ oy'~UNm3zy:|T/11O3Hڱ-z!T%U cN|) dW0OUx&u^2147,mb(?~]4p(O:Ǐ' P=tJWƖyq≫Й]"&%lBmy" %Oxed[ۄQ.QdSVQrg9 c -)S Vz'lx#S曳=`/O'6i$ƣ5Ʌ?|O: Q'Pi;zKaQ^ޡ IsN͟>gۼc}yMdohSbTP9&Oڕb0[_?\ Kφ/K#*t4<s0XTG$$2 C_ä3 szх'+`}&;$3?WO d&gn->jO{g"/]_qGI4LټML8S2d[OQⱒ35Z_<::NΕ:!@ ?nLvވ} ¿W` ;#)bX?~FV_|~z {,>;?w)QN qhi922YJDAWO 'a+\c ,iu~ןռR%՗ZqT[?7_5?~\/B*30k0O;IY]=4|X&. :2*~HTC X\xnt[HdCWO:ڗW2jk {%xb9W\,A5D7ލ;Po3Q'~* _ ( _3ӧZze68 Ie'$ sT#* Þlm<|*(cFX|˷r}Q/~Xookf{[_ʰ;O DS*=gӉ!O_NAvc"yb10JşG1'`|>IODCx٩hTO'Q~^yQ8n{EQno;v#Ԇ|xޙ,?~2)Ϙmۭ0Y(IOA Gd,>{6JQn@׫զ$E]Nٛ50>J~5hpETKZ#K % ,_}5gK.8ΰԠg߮Ul\1XuEUaoaq~ޏ/ $acK E|)foXfLF`:]ZcZ&c"V_;28%XgXfk xl ij&ADWxU+|"2!q&C/ӝ7,{EaFK:W]2>O;_Bm0)*11/ԙ p䅍3\h?"Ͱ.>`fm+ ^v.W.S/q 1- T4|loꉗ©hIBgu@  Urt4^FC)`y!HsH_u]cpQ\tI sw0#v p߄vQ*42X>ϣ3cJM_o~Ƙw/k}ߪܡSz#]'|DNՕz8#FZ0L__"Ufu1&qT;o >.7&kN(lE\-sAǸvɅ~,uv-{`p.W131[%Z"ݿ/0DçԂ[~{5Ҽ˸vF6Gt)9CxJ_O5_7!˦d .zxgF%"P b4oْY/<\o}ٛqSU)R+A0fRĄ?NBQ6)/,31 c_Ehr6D[.p-pY|Up*7wfcU|iu~Rs7*6ajxd[1^]!ly 7!svr .dn`\LzvⱓR8<9jrx(Ń7Fʼnw} eф0k_Y٧WK&$xK._9[/ ǺD.ĞP'N^k뻒~wp{[=,P«DNVDŽ@ެ&foan*ҳ~sJA4~g=ry'4Z^/d]!PR;G@^덱@V׉?ou[_ߩ Md ~x@MRGf E- #}"(>]QgZ]wqQnOhȔMVBGa5;*^l VOqAOFNwę䫪P3hWJoZim!Ƌ3F&v\f}%3cYߨxFR{}ZC!ߒEiBs n5v/& H5x]Ž,hM ! !ll-]Hl ڹ(gif!g|8_xea5p~78yػ eڤ 0Y6pB5GJH__%/HOv ݐ*A Bgd!(cK0O%.Une0x+p}codل?~ѷ)0r,ϟ(r,|w!g^m-\"1 +P/['lj 'gLv_/o0 Xr'Ug> i>RP WY$tn 8eP7WD!?H?BCjO[ 9߁jY ^߫v(̈5W#)*~|W!Qodf2)+U;Ҽ`䒆OO OC񦷱L)x$G'HHM9^ 뺽Y]dy{CB |[ v-Lz V)lIov8d :Yt6'G} GA.n=yH؝%դ]jUy <^IC YN)&jSjB,&y3[& GK4/{}`?Dð@ E *]hVȗ4'R1߅ŶDD/^!u\iwM`(>P/Ps(H<o#K  fhXhX"4B2QP yP]^;dm/PhG~h ɆaM{cb0 %/3x $Y@.OVߦJ8Ps Nr`O6g3[ )õ ?|ؔs˰zb.F?f |P~O`.\bU ὆3nGg^5; /LC~&j?~H#?4[JfsߜTE-]8T; EҵR9fLDRtvwbiވ,XMKfJةz&5l ?A%[Nj{/O'9̧p|k 3Wщ睊xc xtj!W$?|~^e0m@a^^ Ӷg g:;g3f7׌ g`BGO&Md >.6 99"yj3L=Sٚy޸uݴ ڰ"ym ?q kSţ|vmc7~s6~FN?*1 X2_j2?'Rs$!uH4q:3?}y|gV'㯆Ϫ`bAbR"YY;2(@ԟL1YP^@Os}<1Cy xr7'TDlm'O>(O$Χc!lћ҉x#g)Z &'Tħ~xZs/'<*3)*A_>^< ~p1'cz=}(FPuS`sB^x^xD^oG Gr-ݱmބST6z %3TpX[?8~!gs#%ZIʌOGy95OV]hGhP<ɢTO<Vg/ 6Ǡ[|}D_|]P#hg_WQ_m!OHεhI0GbeQ S C/x$A6SЁoG;sv4 O$|QT%4h!36`-yQ O-{O?H֗"yjf+ӫ% I.g}<1F ~bFC!nF"ožXN( 0nw~yn~v:/S_6nJI )ǵ )2gZBEAU-$S=;jIt+gkEnPD񞁕z8r xedզ(JRR\LE!e6;u65"j*uϜh)*\q k}%{N^- 0{|V& ˝Q-]Y:ؐ\l?iȺA 5>vFjv"0h3M0,g /ݪtJ450 V4\I_7c2?Wi㩄F|}:[b#/*gG4؜:i/-+ʼnU h+ ;'$2X_ ?C;0m=g`2ODžF\;\` |>^.;,_+z׫xzxPx5{<R ;_>L7\89dqϑI/qG”o2d#J;=L3} PSvxxƧ< |GH潾[K]1aTTk(|v>c~_c%s 5rWXb~脆G%('Gc~*:RޔdvL{+,,θQ/]IGlŸw?֠Rq nEl :sg3%+c>#{W3bW#c*Ei/z[~\?Hgk)P?gJ1cG&?$^l;s2<J;խ)2Т)-FhCC%NY_mڛd}x([a6 {c''KQ+(@(m^_4S,-(CMߘEK)ӿY_[ۆٛIVP | ^ 3O;_~ힶC\3ȅq.w?PT߅;]2z%'.;Y Pu7tҗ?XΰE/YaHW+{fzZIx `oL[_ծo @EHT+ O'?FyrAg.PXz>~R}a-t֫9[T=R]=E40xk6ePUAk&`Qgm$25&?#> ]\RfE5ZXmzn'eW42(q<Όmse9p*G0xгIS9'/X_dWJ8U8껓Z=AQ?o?]6A]8?SWpIo_om {hzu/ zE]!EZȀn uW{^_$9%Ҿ2aیG!q/]Ưfӧ_۷yaDZ0x¶gP 6LtZ8< Jq֗قC7 %r{D'ΰ4Q.?- ʳdJq(krA,ܚkYog3uOV&kzbðnS1UxhoWO\'ћv|dAUy<@ _#2kS ׈_$9PW&"8>S ˷<Z/E"F`] тbyLSP5_&J )<5w[f^߰gp) ؂$L.w^RR$4`p\/8:'n|+^ Tž}zl?;[xס&[x |RËOA3?_t}8^Y *>bogKFn HO3,F?PDGxD(÷cKq/LsGwG`H0|c #$Hcp}xPFL}7#\_o$/B2?20FA}':-'2fӪč}sڈ߲zErsvz}4hV-T0+t;ʑ"jF'2m#NT[) T-=2CA$M*ؤhCI^SAHy>h>mո"ERU*<|&u/-o|)գ`,(}یp]?q ?x^~&6lݶC-WGlaҽ'wN^,9{"{BWOR|E$K{0uW6pZ{L_wt,96G~^)3n %"laR6cj;[8~~08p6εs"^ L(]㵾qR __Yz8wy#<S$H-w% Gݍgv*]hƷ0mBT{^QoNQS;4 oPL*ð\󓟁Lw\$> g > *@LAq/#6  DbP<ƣo|VR\"v}WA OT{c[q*"{۲&Y_ӧo6/#3,SO67wk:vʕ۟68VkAk6'%aH' <MZI_|KB8']uѶՀ?xQA◮o~jo|g>z$T# EV,/L㎲eB%Aa[_!aX쭘S+oZA5<3*kR R }aTyalo8yn[yWȠ/zuUOh8k #m#>ol^(L(;&ż~m입ƒ^3v5 hjf}[7ƸNa/~333_}kkۯy}nL9^ŸD|| QO3 VoX?߯=tE ;V37u+vFCmgUO+"Nj'x[~|À_B"^6*̳ F+սjmoSP?Oz8| uǷ}L0ݫ &Wz#$~șGeK ¯ZBo51)LX!Oc\i<`o5' h<u0zB6~Z <Z㶷k?7'NxV4tnp饗Rw8?j6Kv|?6~KJ%X1'e| 繎-zKƱ ӗ}gkbnMz؛n-|wit~gd,-F$k\Pd1cxZg hzs9d S~7)<UcS15 bT]?X+'t>ӉyX sˏ褆dÝwމ[5t f?b\Ni *" 0hrig_?^޽r^{;,>2uѭWB&u=~_n"zyn0WY/ܾplŸE`m^^v>5!c`hL͂0,^ўOqMlwA aaۣ sTGo0 8׊O7?C xi?-sߙh,@Xp%r!{w2rQMl!t}yGr"}\?~/S2hp5#dz|U5!d_ki-LJAT{8d9ceQa `bD=l~(Îo6\SZܢn"zJߜ%ij[%E 9z< Ə⩇?R8S6@+w_%RDCDL}Ԗ#}9o+^P_Y֑zx{Su-2V/,N6Y  ox^W 5^5R%c|' M,%R>5%~t|ky-ڵG(<Y|5se2l^cqm߹ M4]/P<ڿ<JO}˝Q^za*k>kpZ-貈[X}㻪 o)~7&x11>LݦKDžfz `.Q;jF/Î@a!J22~;9?8r8 [ jg⑐Ř!o<*~?v??{**pv/sPm)/7E(*ģEF=Y 7?FH ®/U"OCp{ 1/,7V;c4ex+/W-٠Yzmx׷KZ jk|Þ?wk|C \xctߝ#Y{$c>%w O,Ckp|#,vc@| 0L#H;CoOu ~>Q s *7&#`a|ICgM*y BK6'5 2p$?xRoV g/WZ^İ)o<2PŞφn^u. 7;)q 5 ԋ6g\x i l! a+)NES )<63CDCתf{6_/\hM[;_1JW0w ?]J~<40%.T >6«h:LZs;&Ǚ-Oa ;&}gØ kov$j5-- Uz,0 tX__Ї$/~-٠!/Çy0T!Ol?EeE&BΧs<҉?>3wN{~tI _O~ \7lR_b$=e eŌknCAU+">- u}IQpLߒߦT#13Ik#N"/н0($͖TrFGtgŸ{-ƽg*".r>]w pw篧A]p~; %n3^Ʌn Ʌ{g-'d7( 54r`Do}%UW*9: 2A`!s+c)hK>"*H*$77 [_XuUEjrpqJ9ӖE*dAI蟟ԧMoz%٠(dop82Bd 7WCӷb6O #67/;F.PMӫnfȭe3PZ?||i2Z=62浕CoPUr}{kD2X^jKX71(Bɡ2Xv02(s<xޘkgv8l 1z|sby4P&,TjjCPp G S(ORz?9r~LhuRWB\Ȁҿ#O Fg&M~I #Z4҉=YR"f'Va5gg㣭N$/ƕlvK2[tޚsӻ]o튕 7|{N|4^?v|i?}(׺CYTKRSJ2@\foMyFzm2A~bmaLDQOC{Z߆ƿѯ"@['۲J:UO>fgg~h g0I`F[{΄wX o9/))! dz#>߿FTgۡ'n㟟JXLE 3}--mnlބ,']7ϣn0.o~L]6dP=(I?JImƶB/G2MIQt,OQQ*A:ِtqBysY$>_oǏ}ll~fv%< ~?ᯱA*qL;?tvK>߿%dX3 [[?#^{1ί 5esiwronfYf+8#jY;ե%s@u,XI%pJC¿HjH9$!`d\onXxԁEȺ3?]{;5=֓S}J/C—w}1CoJ hH)¦-7CD/8^c%}rJX_BgCD<|-IPBqD J⠪`l6>Q7O ũNO(%! 0dP:t ox~_ɆvFĄgR’+ ؏&)ߵc ?~ߥ@Hv^DftWOaMy=3խit@6)/Y({|t6Ca Yd{?2~~1C}27v 2\ޑlp *:zx$MV;uaz,bmy :tK{(H>60BL4`4vw;oj}Tս.u9W{sZou 6A^_㙵ט0?C ݲ{v7}?yC_?E H$9Hqs9v5#M|v?R<&_L7֏3e;rEHmŲ$<~<+U < !P6>_IEom]BfJVD84B z,ǀn K%~ӟrկZh;摌0-_}}ͫb2lu]oӀ\7h`X6#$~1rZ0~5/ə{/lCKO.ȐSǸ18Ѳ+LC ;ߨZoE{dab> gKG/{u"?CO;W`UF~юXk3W ُ#4q?;O#E.m!$2]/ŀS\3R ]36I6XpoM:ミPUF?1 c?klG~yg7L{&i{qlyhsu߮.e{k^mwE/f{FYÃ;  '㖤XZ g21*lF֛=&6@+#)f0?!2h- 8s9toxs7I6ğAgG oOE.%rbXs M3k?7jhۏ:ͧnR{"l1n_ƨx$?.DiJ61^лei+ r~٦U]Y0ix(!<G3IV0;zzy< <ӯRсzt H{Km#Z{\atɘlO~Y;ɞU }<;4.330|~~ONn8 (QasF?ANs~m_?#]Z=wM7?WxdGoۏ4> uLjw_\yðe0줘A1S5 N%.]t}:ugE?޲d;x!Oc #z~vb\8S1dmi|6mMq/羱db_":sԼ Hg_u#mvvHg)MM_'\u]WLE ;_tvY#.H,*LO=L}w~?VOT D|7d[M6Ȑ#<1Z_G?_iu-(~k;ۅxvnte,YR'e$%#fsc, gɒ2r)Oʍ<;|eoKxp~ @ V4xOXc3dç?Gy _W[nLxWg`]oEGܒ\xNr4ŰsK'xO_KW R$xtQSV?yl\ 2j,?7#\Kw;#wGPh O N<*a 'W_$MUxT=q@{G.:Un"蕫Ɇw~{dÝw \Lr@~7K{\@7FGzUœ SR=>cO%wGi/N~Ĺ?K\\8Ʌư/'> _؆xDMM4?m/8k~'^saY5FKnw!W'HNg#̊RwkUƙY<\m5uOcW#>@3@mg%L. %=HP'_굯}ml#ƷRwxOsh:w\?v⺘co흙~_sƧ wǞigN%_U}~aT{'U>>H%#2B;Ao3M KQd=~|¹梉5YF7D7+hJ @// d=Uxz Hfe\Xo]-o8X.^B:6p" 0%[pCb7RɆ>I6;waP*?gǿCœh1O̅OϮAjT~~aEw짹 }?w'P%>wlCz؞띤$؞3Hr,Mn6GL|wwge<.q"10\[3Lֱ"䚨i!'5aP*^tYj,1v2MLI痏1"2D!!NğI .O@qoUFeЮ"%5$8Dk&J6|3y=$p/8@*mmArǿYuڣw_B ,w`? Yɮl6?g>|`pg6&QZhwTlf4=A>6L(bJ4#~D[vk#lbR9cǣP,1هMmmX¢bok"@ aK'sb`y)7 a8tM/㏃d=V;߹Żh7íE3 1sߖBl@{Ƴ]'+{F|1[6aA*}U<"Z^CJh9R<%e/?<,k4EA`f*ihߘ6k%G2Ev2>Y qםCjx{nk{"< כ_z+_Q-iHK"3nWj NL_QW`=5Ξ=%>O?#$n0B7v<;T1|_o']5Ə'c2 Gt=+[TI!TNƯ)k28Es{׏Hl  F=1>n )QE:@f]wQ!~f>3CşGʗᨢLlͬ7kb7ɑ[aX;nH!S ae F80ҩ&x~…"Ɇ;3klsd6f5wAKz~ϖx2RD=yO^.ɅU9)r,+yl߰}?)ۯM;4uɆ$o5#jnD\Lx`*A)kރuVB\'L^Ecn uqQ!S8Q!\MY\[%b'3C~y[mQ4p3X!Z_ >K9jQWxkQ⻡xJTO.kz`<+7l|ocɈW<ֆH4fhI֐u"SiAi[ap=xsj}\5fUۀ^XT7q~gzmOLI`%8TBz F:lٜ$bjC!o.^~_~5]}}xv]59_-|XWY_Um &xjeM1<+ZPio2yOH̻KfPW~)r-6Šgc̯Qeכ12|A+˹]L&' d2$r!y ΀J% !dû.c>f4|+_7nESކ/WjH*IqV9bk 8/(o; @)[Tpd=2=zo?"wCXO>o}׳ۻw^FQYa|ÿj1!Gwl܏OHBaHV<+\ ֻQr#5N.`˽{DA+u8]"~׽T'|rV12?/ bc~{_n$1dGG>I6Dܹs [*cn`ǿh<@d̲Sp noi?̀lf?rcsO^}m.\у4jd3H<5A+g̭VCGj[{kcƁ=41ᱩx4$Hob'y5 ^x|yB?/n)tǭɥA[&{N{L=$NdZiS C$bCz3gDɆOӏ<%x{[nom k';-_Vǿ OO0j<_?x|l[U[y}g} .]O<)Z!ǖw[768}^{xI.\\f.E?J 8߆37ַHdkHxަ pKx ȅ' ržZxO^ɲPbCz~~Ǐ8͎0Zpj@Rua"&#\ze6]R D2lxblضO ~OovEG\8}̉ͅkt:{o5QLn)T8|M-/o|j_S!2|¨c0t.%2?">!1ZYVl#ί:ԯS:3zSx c{v.Oxީ$~5}<}{%Æ+W \>__ ?,6ߦ0"hw9ܸkZyh~I__p;g? s|Ƴ'710Q>>~d1WP&?r3=^,~g5pD2eqe)a\6P-F,e ?#z Y+~~7GɆx'Ɇs^O?|$ח杽;ŸM 0RF]i?eFw~S }}ߔY#?Oo0n4/kÌbmx A"3S VѤ I6G?rUg 2a3cU{WI0lG'c5ݾwt q&)JgK=ٮG?iPbgqNN_v?A#$<|-*U*c˳ղ< <}Pٙlq6mzk:zG<̰(#DIȀ#t_XTX)}@܄$$+$oļ[p2nm sz`g[Eo?ٖH~6_*p={^րrj90ưx)^?EF#[j1X0?y CXnN\@@&Q 88́;QOO'%%o%?9||]-_9AAR]d #9g[n_'W]oKE 0%\?{%-&oߜĮFс-A]ECn@"1 IxA2䐂)c-"nlp<sO2z3("5>a0.-Crx26d~  Im&DPy8P DvAT,0 N%z"Ɇ~hېQ'7UW(/Usƹw^ٮPyd5,BA<2l|WOU8I❆Kը%1!iC|zAjHfo[C1;0s)Rp9]QOAT1uͯu;wmכg~G]ob ϐh%F%{ܥ=Ğ XBD\H￿T!6)5!m#;H ڏ:n.^zd&ՖO3N5|ZAud/ |!c} 8hbnh#jז:w;[t'_-y;>+apx5fwkכ6 $! իWO?ªEDf`pʕ0t8L'L3CMkHA(}`Da(wwO=ǙI _җ_oA霪`7wfo?}FC[Y뮼3"< @ϔ>n}}M2 F=kwGiMǿ=іT""n]M-xlFf'3'𡦈k!OvL- =dŜ_/ o2ːl ߁2  '3gdg?ه~I$Ɇ׾x+ ֳ).}VݣKKa'/oɅ+$޵w50$dcݾw*{Na(xiRCu#3Za<81lXs"y{-08d߇ָ:n΋XFN<*c#h.z*ƞߺ6mxBޤ)t2._ayQ!' ?>|:Ɇ{<]PMڳ3oߣ|O`7?SDQ0e `Ʌ7Ě<+ j6O%n}})e4`A+Y lruTiȍvоtxЃK<聉eU^_ ip<h1A%'ӬtVO`ʶa|םX;Igx/\;zˊlv~4Z$לgXA_R!`oSx}aFLu9sW~Ʌ /x'p-i~}9{.'A;W⑱Noۍw[?s*+Hn5"Tte)%HMpvp<]8E=ݝ_yz3l`] QҖ } vSn}(0 (MH) dGI6,$}:Ɇ{.I6?޳>$Z 5,8a W_|ÒYxËW=Y|ݾw"қ FTq:C[Smom;~qNYo^pY"kjaOP8}Ϛslc$ׅiaȓG9cx]3xwz#sͯZ&e(y/,@VH$?mH,C@UX"08!lء4;v_"4Ɇ Qs>e^=`.On~}w#C$31 U;:$Cm?|wcS7vawŧoŀcďTJ+RҶ<+X/ MQ_"v15< iRʖX,c~֛@,׉$gWpjVg!?$BJ'0`H&!CbɆ{キ/)t0䜭;1slsW5 ǿwn`&/&M4+W= ⟅ {~x^sr|;h{ hqj~)bd]ă'x<dh.9v#m޼MH{x ecs EKW%y~ IIj7;1;1D"%o~uI/8*[E{0MxnX6J. OH}! ;-O8>=4*Pt A*kǹ ExDX k۝O]_wg; o_\"e-b+8S/Xxz lMh AvV= )WKm\_HCH6z6XR*#m&$*,n"p$P0 ڍ^)~`\bS>L׎1sR/e!O^O^']=wn_d_rj[Sb0b ۃl0{[:K'#v;L`n = xϹeݦ h; '*Y #6{<fcui_o#ͯ]3r$SbbK'\HWD.S wF,FՒ PݾbY xHF8EvzjީJx;p{CO/ Dl~1^{A="ʓƝBJ2#-͜)בm`vփT x*0?zT%+kۦ7H ]#D|Sv& @%DH$z"Oi=9 l8}tQVK_[{Npehx-.3?uCL^މ3x}[S=;E]`Q Ո /F.//Z]+lKp;EMdm<1x Yem bxp:-zqhJwe䃈[X<Cd7Ab;e\x|\ݾwE<"yB\1*W\xΉ5_FW d"+|P#nsZZ(TU.-ǖT訊5ΏGc@ގxWJL7h@~Bp?(,l׿d\$48FwNձ,\y|4]tgGd~^;E.:<>d~xx ::Ѳ a1O)ӛ/3&DP€?c9 L+O g~aG$b6+_JrT#?NcK17/HhɅS?~oͯݾwhϮ zQ<Ϣi8#,V hwwg>sQ]tbuli%\ǜ5X 7 ơ'xfSeui>rfu3>KcyVmqWWh/_|A ^T ʑD*!% &!HDRϹNO'o}[o .Kݏ(Ͽ5B΀V >׎EJ%y4A0HS!H$|G}Yw%^x|koqǞ`=~f.>(kX=>}aX a{Q! >ŷX*1 Ob^u|ixdȥpL`j$H+l<β/▵"6?i5,QdNe-7~2fNI2%}=]oukkP=!OR ɆD $F}u ) _Ş@aO W"9J6>9d˗/IK_Z.9^\GY3UÑpO['bYtn0,I#6w ǽ7~v7Ù80IRl׾@n]Ȧ:=gZIjv⹃̅bwB-Lف)n}/̿/dRY;AɧºF$[#Cw| #vr+⯦AQH?p|S(!R&c ĝϬ(*>Rx)cϐ>+Px^t Ӥ*/`ʫHYoo:p =yCÈG$XFl9D8$ ɆXFqA'`&zkw)` \x Oȅ~h9>ݾwnկ~_zsؙ>p`D|-O om6>c_;~Rk!w-]spgp"E#O)8ecwz8edXMYMoƛ_z;2K$yb@r͐@z}+ ! V-Ml'>O%k// yAd Z_=8.?8w;@}}sƳj8ϳ &x!4]J)(“a‚!Y O c\x$&g"2pרĵHҞ_1gf3p89)I4Q &~ ztLfЄTa?gXp'KSV 1lDv4ך]h>]Ʌȅ؊aKH߷wn5JB\ EGUЍ@E#Eo.DUx??K$bSQPۇx_S(MV9W sf٦ //ǨC*g!tϨr~[7"_8  $5%'"(twǝ~O?>2q \r`pфb<?luxJ u%o9Z:GOYՆ/#F!q^$(=/Ѩ,{^Kfz7c<+zU/g$UlF.ɆdUW@Rv,oȸx㍥ 7"PѲQYz7߁uټc{j@ra_1j.Z#}ZE0Ruu{wqG|(G*?sO|?Cԃ#~EºF8]=5}jۮx!~OtY6*vJ#DxK{e6"<+tR"ެ?<2EG_c)f Pҋ{nzg3YokCk~B?a c^ZZ_텽p! @ @& M0JBLSS*Q=yϣ>Z$pX* =zi?"~́ ]d_zv\:OݾۗV\iZE^H%' 73_Az{7 mhJ)!?nx&F?j0׭Q0Cޤ h9A齑-Ϭ H_q*߁wddzhmznCeh3x_^P\7-t>`2@7ޛƐLCl Ӹ%f+7Hk_Z1t٠sO.N({%oľz+r!go-tn}}jȅZE+^H.ğΝp twiO}Jd vZBі'ȣd:VHiit-4~l~F[V!ڋ6ڤ< KxZ1VI^osظ4FZo#L.\8Ao =j5*0=Hr2Hd'pbv"e1~иػ:;PdhClGJ6|dv.HkmAQ®d4hZC.>," Wrݾw{W9N*"[na nw8g)c /! AC; z9A|:k6(>skHg7ė\F-+ ^~];[XI"~/]8ϯ=f̯{fw1BcAWa dCJIH 2$dc) )08:>O%/D!f~fpA{P:zf{[#EP,)rڋg.ܘ9.ݾw!g$zM*">#oٳ 7d&D ⽚$wDjp2a.vSб2RQl_̳$MYF'Ngt,8Ls۫lZ}kCW{? PLȦ<\Heg ݾwnﴇV\TWU1/*)xhh$(#_EG3Ǩ0vK w[:>m?t=)LOd+&9{tROHOq 7|Jtz+mi~]zoU>6 BzEw y|'WE J7? {^^\|3_[V-a~\EĢwnm[EZEDr!yZEcX @zO׉+m!W`ޤ_vf& 4<?*xol'ggFc$Fh3]Vyu> j<~Ex\$W_.{aw_7XQgI@B3Ővr%@_E6P SXϨl2D!z`;׵~V!ɮn}XɅH|oU+_X$Ì"J$`2y.0AzYN:YEfMYYQ ⩣ 5A ί 36DGnmitF׏ڕ+5TFA\PqH@X),53΀b>S!}׽uqgC0l3ѕ7n}߈}l jW:k!"--86!e%!5^m#<` og? a'E+pq8<w?!s{DqK, mXoCb =x:PoxD& Ξ_2tmg;H)5mYoFr~֭-_.ͯ}N-eKǓ')$>9L> H]ȉHb  pk^~~Ɇgy&I6ѐ K&//L}ݾOf11H#K "b.@d@RYd B,\ao*.u?+ÿZpi(^ ??U( FAe >ldx1yF)%G`-l\j\,Hrcj*ª`^EVj ^v1P!*rZ@>vO6K'in}obل疯Ic;IƱ8!H\z 8@C:?F_56?ty NeUmJ혉KZ2T?;Rk;C4\ok<\s<ƃJr  Š }(0Fh D>%0 VdC( [c\M4WWMV1ya#"b=" A '0z^~$~L$oB:-4H' 6mȲV^CMonQ㋹A^HlO}ɠqzjdbI"9W%z8a&h Fy<,ǯ]ש*FGNszCϐŭx2owJ@Z&P 2N%v… qi&E u% vyptn}C+/Ln@sq^eS'!Lm4#N.鉌 (T{xdqLyȸqăj҉`&iGcϐq0v!JsH m#<=&c&'m80_8&n+(EP#㩎?$ xeD?z@fxDj<xH~'cW= _(]Z< ޤwe@"s. S j(Ӏ?l5e oՔY/xR}^ ^"VZE- }1q22_tON? RƯҙ3#!_1ݹY=d~7#DHq~ϯg<] 1%#Hukh1rphA_Q=y>Gy^|_!٠yĚ)`fim}޶wX k"n6Q2lP]5 !5Ph W1Î?P5ko]K TF;v@CpD`>|VJ@:)D(=%C͢ |/3=1lWs= c=k06sw2wnYl5l߮Ć]V%F.ދS◜0< bK.I䏊 6}G?,;MÿGyòs왑`׷OG"!xl6+g6hߏ蘸U-5>;=%XmxjIRP.Ab]<ܗJ: 旉Y-~X"i Ɇ7 щ (ă??%j4WnK[EDrx5EQP$Xt8 bL"v&I \ +/. Ka [ggP,ҁw04#;`G}vHRQ!&0$ag +gV@.lUĭzj!WK"C9eR, x,O.'H2n&p [yXA$BIJtkxjWwS6Ǐv4plFKC^t' {q,ڒk_!p~GJכ$:j+ k '%sC%IOo^p/z;.c̘(}e3xޠzjݾaxtRbU]=i X,E^ a F*D;B $gP $2z b\Hjsſ[ϳ2f3|RaP&FPΘpJ'JMdRsg-Zoxꮨ1s__>)@2fp@17[Kgz^%2? {^F/ ڷrc Aͦ,vn폌} !sa#"bMDj挬50 +M1Hݗxt$rb$!ޖa]'#pB1@hr &6,^3l(ig 0 \C#$5rOz³uDʷ!2*d@AH?dCzs3 78ěFM5zx "lء[.3ascW _Dm;7c'(84 ?yJu"I BO._\'UJ yD;lJ)uݾw*"6*$ŀty `$|+&"48fGtr kb-@** FP$*4vǿZF[]^5ru2NoߍdXF_܄uM#wkK7Fl\䀁=Npށ0^ %c[`hI; DГ88+]:;MfMГ+1; D \AnHGT!QɆ|CGvnxC%ODV%I1ZFY #k=ؿ/EB4{\1AoK5΀'p։0>Sow@At2zډۧ~h(Dt.Р=z@C ! Zur~tB[l}wڿ⋠V[pJ `Aā`4#D9B A* $\FP$ bO(~꧑`O4lϔoǃ)NxU8vPW@4`<{?lnx۪{ϾpfOhwufwEK8v%g8>slV]Ou~gxR Tz>c ؑqgdɩq8 #O?c\7)XsJ6S=䓱-^:m4٭5֖80Lp ԇP^֜@ U{*AaŐxCG?l"x?EFCV9ށ RT0*@$8 f+3\Ҍ\ A73a X[)M;y[ۉJ{vpFN(c2ү6x":H_.CYȆxzے5۲`<áׯH ̮V=At,&0ˀ INh}"pcle9`,KwnshI ™3g1'{Fbֳyh}))nкH[Aj-c"D1t@i' DjF$YA qv?<]6?sĿ 6FP Baw`5Q"稆G8x;ln:z9Y8ϯψ/n 5< ڀ X-P 1ꕫp"+$6cDC }mUDzmUD|/>:mگ<Kq,S1+h7 @Vs?d#?GA% K C ,̎7Qt];QvzJ'`xzv~]3Fл)U|~x*b]WIY )fwb<OuQkI ؀n%ybFkHLA1H 'hljy駝 (C4Xn평}ZE5[E5޲HglAneS { )*ڢ]`gXrH&X;$V/E.N"H?'-$T:lz|Y\b8vGSt $k sx ;J6lFv5] waC@[Ez뭩U? + f!}pȭ%k!t]F~QmXIEe m="$9"܁ޑئoO OV;'k.񾣞 i 7AјH&4[OC&4udF`wx6*c̯y ",n8pM '#8F6uD$&+iCQ-FV\TH.VF\x QF4j'A,^ FB@ZVl6aQh"ۤSp D0 ٬\&?a`A C#jzZOImm0;OchCW̹DQ!K$j$(lr-e>XNA)1bt81֛6T,G/.u==Yok +CZI'( dC| pB0q Q'`7).\pJ6<=\x}o67&/=Zl#6ݾoZEFZE&sOjQZt'lY=B6aAks0<¢! -_3ҁ*/[A;tQ~q˖,YLFo?3d?M''/\?)᩹5^:Q0o{*| gZǃ\W<ĿҎr&֛ozk?6TN5xzyj-04I'm~m ߎI LL@M DRK3J ٥G*ɆX@(b1Eݕ[m w݆ˆBA1=1@ZE~5GCxW]Qfݓ2H% ZA+AjhHnMq3۹wvEeF2%nOuS_ N_4pbK]_ע>tQ xJ]d[< O!35huD-ف&޴8C82/MZ{g6"Vb.m߆s% Y05DHO%!`6V >`TtkHŀHk%Hݾۏd_i"Bk"x3RΫ}i- <]eٞv,Cih C5!o&Y"FgY$KEiy+ 0?T Á]ǿFL>JsQE;ZňǘW 3`pa̘RKODeTDcZ|k!X@쟈G@C͠o ( UjׂDTpzLh@rC9p>s_ yyDYa^ϼG:&I"pu\<6@}]!j#[#Ok_Kgs"ڔw} /\c[Af[FB 7HTi ڛa -܁g ZvEooqJ{||BZ! (CiN.pAk/d ɢo]'Ԇx6 b/ ѿX` B"Bv&)4'/Ml|~l$`+4VdqhgF9y\$^pSBCWɾq2{cy9߾0}gobB>OU Bl߈3,EF2!p/2ᢟ+u޳=>χ < qEe:q^?:r/V+ "t~Xnp>l? u":`UŞ4dЅ&<2\$#LIa~/>o qP!xM;u )N 2@cu<ΦtrUʓ>'. GE" 'Bt]$ؿDߟ#wSt Y )91F ~I5JB;k0yG `+$$?c#zȯm34Q1Y>·#P ͆1 #SNx0\y<50i] v1{`oA?@eҧCaE@*?`+O\@%A'_ ᄓ<:9w|{"6O5_0DŽ3Z"yMQS;{x5~;?5mR$HM(9aTp#bE({(Yc $,_}|Ź;GC29Πςd o$C:ohlDw%gxkK/z$1_X2/}ax1`DTP,\xf,,2?[6w[pzqR6?9Xzy3n_7w|(V">}{߮2? |=ZO14\hi`yKع A$}L`x"\b[ Y?6|ïQ ɨ,|B`svx S'>vW bs .=9鰔d/Q "̈́B>ZIUFc^{Nad1V`_Q*Kgۗ,Lc_ ѩOH ȝr N A." R!6t ql-(C eK `y:@9Y||C(8r0@:ݮ^ v^h-kj'ڔGy`NV@d +!hT׆^R4d/%ثE kiDw(_5Xɯ3]mWOOG OR.NIS"{¨\sn-%)"8ï™%}\\aK!^> ?[HD=ܟٟ);/ &g?Vаn>~7Dl8*Z$*B.\giCh@Z1KXAhd ,NAV7ȧö ,?݀_NqĜAdsaӜG |;U3~&g? cbH {Ih)Y>%lw>|ioM.+ 6ADHKB:O9C 23bHAlXl 5/!N8?7^'y;o_W 3x*[!\o y.g#(v0֪& _H^]-{jQA(@Dž¤hKfD8^Oa\k5=ʟ~<pF$9-G!ǪY(\FW}B}S%?C>>9D2|#Br+4,h?}sN%я~4R6l$I;0*bjTDr?7H)Y}c#{J0.?/^AV0"= ㅘ@@)N-rF#VScs$s" ^rn6W훏plO쨕Qϓo`Vڔr1@ yb_} cɛU<9)Ory~jMk#W' 0x.7} 7W͌*|Ixˁ緗DR=CdjX"p>Y`W(?f _C'|l(>e!np#<8*bjTOOa YD cm iS˪'si)e)X_bҴʲ iP!\\^PD㫷停-Sp`~<6"ݾ3`X\vTDC )r!OF$([2S]+@V0pw@x '܆a&k[-|GPe1O׉L:iG{KmnH,`@]7 %$]솰$<缎 A "H 9y#q 赸N=ڽTbjd_T~uTѐdhk3ʠ5j4ˆx$~<K)zܐlLv($+$#IHR0𓼍>$Air(\t0SrACtoi~ |rʿG}n@?uzdHM9CRm-h+7͛hߴ{&xq^ϊgӾ}o_L!KI+Pߓ*5QHRԀ) 5D` k.)F?E8Q6l^c3c8o|`\jTD t|{FEppA+Oqb\ P%8ɂnrJE(D*Ǖ/pyXΠF54 QbA8FcBl!ƗX i @j|Fk~|Ej 476M~XS zrJy',y .3Cٰ,yWo-xC籯gf5y-_E5?`CA!qQC6R 6|;y׾8+WVELj.o~3 Ъ@h0k sl$Ip6A>O/'l 1w[ \ ?/]ueYs;xw^3._F竾Пo{ u7T~>8ro?K0r\Ѹ*`\P[㹧mOo\~;},+㗼oks( '"+$N6(CeC orhԪj|>|pFE0*"|oόSPʬD)'I pE0( `ݿDD D Y0)I \R12kw3m{w!q>y/A'y|eF.Ÿς((P'8dc6oy &Lڍ",ygmy0Mt,yrOghCyFڗ&1iilY% KIIm|8%!vU( \`8\e ?P6嚪( HV4䖤{6 ?$ P[ np3ڿ'2q*G9YYg`JG 0ؤ}wcoھ,SJ@6Qf_C<ɵor?]L^F@HƇ1&Xh,.|%b sa[!~__P3K# ^(-I8 /l2*"P9~|{ߋGEh Ͼc ݀qT6~7@f ڨ@P ЇSAtDY|}&dΌ $?9Z>Z'6g/g>;U迓? ~_@CHZf,I&O|b3ke˯eɛx d3 *kPN(ɓa_:m}́=p_mZi_3~įhg  y1G!V1?kF,D dR6|K_ gq/(z?? _{pTOO/" s E4ͳƭߟ i )W,:Ў!YO?ys\X+zcWª_%1LFס"RTX?!#$om>Ie[?哅S|VF ֊$ 8-d IR3vl"4#rԝ,;7 X+V<2"cNONR`y1$Z!Yzon=l qJE|Ȍ!DhM@{o_`MFE…0*]z[Ov ^°O >0NRn yk4B +w3[qID'&]ڸ?-"V%1(x[;!'=/2Ak~%RfVg~)?Yq 4~K?'Cq)S%~o@syD/8ef{9o*E՟淯8FPoӧb϶񒼕­wEMuKuIL=f2ٙ½wlWLg8GhC. ÜuKp!|ȯeTD~*H ph[Au 5=`( X b @l!AB{9/j0PphIĭsUx9}e~|oX~W[S+ZڛSda>@`|Z%4rܑ ɼ3wn0賋cS1,~ydg E<|xGqDpϘ 4 X.lX(9( I,k+ | OBiR1 Ϟq{>apf##$E14@^$z?TB\ 8"PR- Qd(U{ mNކ|h|>?b3fsg!r+l NP*|N"$&u(>я[P8Qp%w{;NjY7eT)y%<GVUس' $5 N3I$i LIw:7PQ!?,;9Qi4χ^̙_ʟ>R_5f*?lo߹ Q^.iCVDֈh8(Cp5yc'j F>? l%&Txw'WyF O^m. k4 C@8| 56aC _BC6YѠMLw烪6_pTD`^)bD`sSěpZC{r$H=XJ;j%`05D Lw#  i>T/a0@R~vN+x'?"-u2atluNXHh.*Yd<,ɾ~P<}۾gۏA6iM>'<.vّ R7 $?! 09 ː D|$)46Gmp (ENp.pFh`6E \9ppQф$уA J+6HM5 Uk0jX85I~Uޅ|IֿɾSQQ u؀>W;iVx2. ɲoRESgCyzOZD$D"i cD<NA 0`L 32ce oy[YAvX*eTDhHbqgK|պ oC5+Z>pGThDb68> CQ['Aqc.91#ڿIգO?|w[OV+&PIӧ+FA8 ` 4ɩՅ! J['r|TD t|{t$oϼ_lzH~xD0gIzrVLwHxsȅ6;cżoxKE. ؉c{ZrFc?Oi?)_rwxDWa9=g"f"uNViIC߅>@JX.!֜cRI@U 4y#6UL?y,J?}{җ:"e9Bk#y=p=+6}σv? .hM LPx2q X7}F82VNT|L hF*ēB\M՛_pm4<V?M>Vx~,<#<7gZfq˾}B>p>Ed@bɯoW7LyyX? '(BEj%+%Zxw-DI'׎YC~FPibBrPHD&:+N*GTKHD!+=)%I\Ûǖ@p [ |o6<3_ciDS-!x4G{[[#W+77*y|U_i|f0wSJ%녑cHf/a‹Tgh~Ao]Kp65yάAN}:;/ߒ{x -߱/'\ktm'"ł,X{"RE.eu=E.l!~)LU,fχf! aQ"u5 .$m2S;ފ?ϱ|1I`gCq+<~g&zy"ĺ-P@Pdu(5*!}Ď Ρj|7ǃPwxY.~ V:lX1by@ʆp g>lPr )JN:({v]>ESHN18\v4@?q胇.FG?hЀ`wdNlIjFH/ϗ1"Z)2|(Y[o z“cp7?!gί[K3S*}{[VNبbwRBon &ţvm, br<~:zM~ υ*yGq]x3mz{% PU[{'̿8y~2"(G3EO3{9tͷOG=t^sVaR`0*.KGۤ˗b ǭl< zb@>kܾj_N6, x0^qJ*` h ~PX"FgL1%/| 7ho 'A0hsABsףWL;᳨v՜jyv  ŭ(J @ @"l24\h$McRW48G +(j利덶m)hΕߡȎ{9U4漰ǂ[ #m SC;:#Kʓ{zA%OO;7 NZ,+'I}Mti߂7ѧm_-fO}1;8mh>3?.,H5ʆYDxDʆ}c?(>\ʆ$$!*&l_A 0Ϩ#7puitTG"@E?/_CKr\! Zi y(6cJE b! HWA:ǾDTqZ]o/WD̾U~R|:jc~&, rt I& -GIh'Iy V|2OC˳`%g[.u]@tƯ" ^\2O4ak 2p(m(l/+Gx_~ 6JxG 5!,hn"bߞH&F6a:!S$'GP9 IQ{tLbn^!PI \疵_,i|)?8XW4˯櫛?>t?sV8I~byr,y<-i&'`byh_Fu] 6y~ mM.VO'޼| :\Qgj $ }  B D.e ¨ݾ4B_V a`īhir@xaQ`/2<P@rO \`}_/ C9HC`$w.O 8z%0[OO&Wƭ1ag؜1e9~{kԼ؉ 2QĢI8#ŁQ6`/)@âo~ J'񶷽t;+jV-܉}fC5H\K@=q6fBkk,^|3̋hSdaQ~Qmč 8pMhUFH9h",ܨS@ Rk ^ u9y"J?>eGXbl?l'WO>?k.cxMs[y 4h/n2E͞Cn{ONO^=MT֫$oi~8l5ȯ;V%*j_^\ONsdɑ]2 ։5%>)]ߑ%X{q<;W5KlyZS=eK2KBcw _ dqΥ1𒼼9eC0*"@dTD1`BPí .e6Ar,%&/pCCr :zH \HV!1IѝO-PG#WV#`HmR}h\S'7j59}{ċC\H(0pDQ'ex]CCʆ_qTDZ$-h!엓F$ 0apYEHdX82 H 5H{[^\z͆%|CE7='_@Z3c~)6pmrКEYZtV,yHyo; 90r bݾY&܃x+VvH`<:yk O>ذo>볬 m1#WW}}߆F|Ux`ǂ}oo؏X=eC8*o;7ϵ;gq r ɓ37I NtQ+gGwN`4;H[!*AHJ`4pDP&>$)!EF !)_X7̇ȏZYǶʟ \č>!ŞFg]&7U~F1tW~Bi7rxjc< tYςBڠQPȲH@EhM7eMbm<`Lh_}el'If 2 ˓)M@d2hDPBַU;:b}wp)kR<  F?`qV>`A!V ϓR tWy.FR 0 Ir`9's@ο%۩?T}|lO v#'qVmqq%vN<"N$ ixԊ8ybέvbyFڷXm>fԾ~}Ӄ>fHi##ʀI *>@ K"ΰq$Mʆ8*=yO!_JM)n}RРxx^k 5Rp34` UO(I*GΪ Ԡ`c#!>?~fX!w5 zeG^i|ؓx|`oϧ3_#~W 4v5SD/;j!<҈{I,ٷ߲x@wa1}mn{_A$^e> 6e[ ́62+e2*"/,"ĂsTo)m .kg,Zm8%2Hb _C줠D H =ɪ` I.QPnx m$W>SN=_pr_,6Zdtj ʼ4"|ӵ!^'lcҵx3Dnlyˉ<}1.D&'e629V}l`ߊ7a}˜ zx1svdd &ŧ z ,'HKbm9=23V.35?C?dog~gwjCJ $6$6HPh! :2LTb@ 9`W9@&=9*r2F6X}irO=p`Z~jW\ HW>I.cuD%ѐ sI?_ GybW$0׾Ih_v}Go<߽Kx+z?*^ 7Y+ɸ1埱 GGfWs,}[0i#p->Wkqvg(A;Z5j"8cHm:&zD(*1d&_ a5aH~?MȯtS_|^g'5U>ɟߞG 0DMW{OZT爑A fUrz(=o&/4}}59}<׀-<0׾ew6~z7K}aͧ2~ 擋稥%A'so>D 3VXڀYVDL1x?vB `Q5>*s%pD|f=lRb^<;]ZUr/ϗ~jԣxKNf9ϹY!7_^}'ooկFI/BSqRk dJm\ͳQT -ƩqCR0B a^~nȬ= Hƻݤp~y<uu R8 y7,'#Gt(0$Lq⯴g/|  /A<:ɳV/6>[@\1;YU7B?r9`8Wwh4G{-2U.hPvkcD"Ġr~t ɎjcorA/BteX 5qƶ Mh1kYKUO(#/ݘ{/F(x  t "0|g>}{yD!Ol!V7Ftm_bA+^*Aƙ^#8#DctC RPkƀ]2d(.I)H7YϳUDͤ_-s6m$YSӤ<GZ hV}mkk_'\w$swDY?/ʨ`q {x'\89c8pA<U07H_?Oi&8\a_C];*ws;&;>R82{Ip?L1x@3b=`,[<ѹNU{W@ o3cmcO6ͬn̏iL%m&Otz'QKR8:xofӾƖgui!>gRDG@aAFkpH@@~8=8&h]}o(l0P Q=M]"I~G~*R U*1¥kQp"]m4NF{ߙ?̫]?u['"p?e(ų:YdR&Iyr_[HAQϣڷR1j_\ߞaۺp?ũR<5Ene4Fl=4tI@ 4 oEhC vuC|H`{$#0ωoR0 7i XX z ( 6(c#-vpb}o֫+*h^լ{!Cx<̑^YM|Q9Dwv*+ '9?_Vc&6iiG ƾٷF}T ih_(/ȗoW,2boҦZ4FU ߑ롱鄱?ΰė|91q22yrA'L\+7x]j ?iĻAJ46$`h5 | GؽmOqT!\EiKR^l?6{tnN&VxFEhct oqmeWׂ*_WHB~Op0L_r'?YAj~̢erU:D)Bvc$K`,jib_mSiAvOTe߉W{O8x3]!NO'(@ H3)m9335 XSK!/hFc.V4c)p$W'4|-R#*1pNtNq~mڬUwm+0|xk@>;v竴hyDg//ПG'Ǽ~!2ya6uah%K?nBD&  E8qbIy[I/Sf<f\x#M?65.:f\-fPJlbtAץ}1ċOkO<7^4sq~8r9h7 XE-|,gX ],@,Ѐ_]Fs6?3 R %Hr DF[H<䎐9ےcV>tRBQD%lpɳwe?Qz%/?@<`4%Ǭ`4R2q?7%ݱ"ui) .̥~"Ŷoۭ>í7qLU8웵&{z%C5<1>bFd4FNOr؂ xRx*^hj -hvj1`@;+"$8g |\0<88~dOPKG{[K=Ԝo+n{zP|XΏȿp4pʊ~vܩhRL RNZ~y4Lm_%>mO,}R% Q615 %Ho^ @R $b+X8F0>.O?/"+IW)AJ)DTΏ6]\a;w[o)H˿Q^x mⅇؔN(1/g<058^y|vGۥ%0j&1Sv'>vE|_}u_@hxQךxZ1_r'u Mdԥ5``A}6&(1 OPPy7x/E^4 t9^ Y(- _=\qQ)oT֚}~EW9?˯켻gN+3Ds/@Co)jԫxH2S Gn|]=O j`Q<}s<Z: }3!Bqf览o^\ۂDҼ7]}g$Pw9U8$Bb)aD#e=,LA\?/]KJ%)S~(r4Ь" /~< M'%7 < [$9+w:5*o_m,UT3S ʆ1##GN ^9$'k7 fh`3lay𡘤:eؤX%r})0.v<׫U|xpA>p}|K>ɘ>-4Vp'n$?p>H2)s ʩGAE:] "v L I0˜q ,V >֑?ߟW ga|x?*>!||fdʾg&B Y5e=/m[-d%}=1pD@k6Q@^ ž V4k_'Eo %#0QvD:uxO5z5x?-w<>q6Dy8GCre(`@gXZzf㷯nmgG5@Z7yoxIڷxCaަiHDt X(q6wR MR)g),r4A}Wt{z Qc2,E dDs`@jl/hu>H(iJ]Aq$`.rHig1le| ^?GWs;?NS>Xu #NvHuwR)<Ѭ5:^M#gMr6 GuӾyfIy#4<׊"} !yRҼ)I0-#构 nNmV NjS͏ (%i,1&xic#@0W,oG3&uO+y#{Gb˟> ӿ 1Z*;̯#'Lɺ^HSpAQGy뢳ʳkV3}]ٷa'M5zX~$dG`on 'P &SݭGxL5rJ ?n{v&m"$i :wY{nw"yqD)`ʆ2X@2Z(gF =H {r&xAtЦT?D ='W'[?k O|yf؏^E`FގٿN>qWߘ: 0yp[arZ9FF-5<ˍ d})ľ;>wLz\Ԙ*(4H L6VU)O$ 7S:<۲]= 9_P]!WgO6]1L,VhBR}a(&1 e=]r72ĿKX! Ft nE<_C;~Y l=_D=8s>3pʿ#̉}_ӏ\fjhsylΩ~Mc{L<#N1;/c=8hP΅LX:o^m+I0|#!B~O;rU p[_ " R‘B_)4K IJνv">^W2H=Nyܾ9}} ged6}FT3◇j6}YEL@h9@Ȝ ր 9qFr,bl3*z7zu<\*џϜOON+%G84<bm4'7Jyr+fc'd3댔'}; mjJd_),_>6^ݡ^\zȗF @'Z遣 @Q'ɑ 8IܬPhc#:.'d_<'V땼9 |ޟO~'4@gvȞKf֛S%w@[y4}Dk}tʫ]?Nm*~/z9p <0#FQ!>0 bJЪ=jO$_?iV>yCCjϞRϘ0O#N]ʿy0g=Z k?AHx 8fn&Ijx!O2" bC\b}6g3ؾ⻵gR#į,qk/t O":;)851z_HkQ4BT2nd'ۨU۾{^?^E@SȺ-v=l֓eH8ݫ6`,dc-8zYFJO]۷X}s4ƾ{m(~G/3S "y+--k<$V>CL/V"h6ufjd>(̹waW~ gί쿜l|(O,y-%tc'Fe(@ɥNyDېrzy .OA#OvcWZ;}Nqsڅ}x0^D}@HdDr<"[1 iIZ? ObN.5z5_^?ϧw"ҟ]w>kHBI/ύ\܏oz)< VGޟU9+m8(%\\þyv +~l}wfNjq|W,"?3X߇3fyaI-y~zWkLM|X!JB:/\S"5;/n}xmU?$[?[oğEW8VTkP/zw&\=^ S'r,E~ oJk cri&gѕxZR'y@Jy<a}$G omkDhK> ^wX|J@Ov}^%yM8ڗh̾dN>GWgA ]ЧqQ*YK3 c}j=,֧V:/aU ?_kx= .m % 2߇g铈D{~m{n~Ƣ O|99g|~ p]oC`h3X\L-ydxY9t;/xWMGU~3@zhHH̖% x)֧/Y`ImN&2Md\  ʏCpF"xnnp=]ӵIAȖ/hm߮(O7c?t[#vywN=f=}/~R}  !5pr8<~=o_v_Z$P4~'zyK_6_rdV @hEL5gBt?w~F^@`>h9fjܟʯgxlB~O`ɓ'Vf&R84jL~U>]j6aʨ{y& `_ξd*O> I` }0#~Fq9Xdo'ؓa|y[7&VFʿl?Ofb{S=<t1E#T# T@ܦ%H <9$CPڰ,yxlM3c3r{ܾDsHK}0y|:/i}HPDI}+mT$=K1d%yRr6bp|۶wX?aI4&s|rJ h`#v~_o$mY>]V<.j)%KkzrM zʇ^OoA:`{Db0-fy +e_VXl_ΰl˾~"~ F7J}j&·|O̿iHqՃV9|*u2}0Gjv?^R?r4hNfcjSsv!?Jh܍@˓ebyľ8֧I } oev1w>cj.D#5MdkȜ|97W%GEn=u_={yr?g}(yj>Gݝ@m+;o)G ibB9&Ny y;Lm{Ư3^&ԧyOۯO*Q\hs25?h+A'=ÕMbG<=uD~7\ s,&V|-Cאǹk`ByreM\R{y~0Aw}[VDAN$u?Uw'抵gse}ju|[DSmGϣm|ݭ?4OW=yH!%?Q<ީ o=W4$-L,ǃfolb5q/'$m-g^ޙo[yf7OpƋ>>v|dwpyav`ӟ1?w麽fm<?M Ϣ?T0gO^{b`'kIU5LD+~_+njݎs^yY~*`,X=<~*?2dW%<a*gǨQk̏P`_>sl; ^JYv/Y/Yo }zg:9 w&\?7$^d\ۙg=N}ɿw] "|2mkDؼPyVbuʓ{=FoCyz7+/(_}R:X>لy%Njdc=l$"3y(y>xs lQ^׃s}_-y,뛸VpY7oxm/[G `IFVK8Qꬓ<5Iyԛw'U$ uW޾ ! QŅY} .6XeuzC x<~]]?_Ix n'YH;_NOw'jeЃV #ҵ]G!>,2ݭ@uC`2y ~$ɓ$ y۳R$z13{޾Y[OE!^bN'4'Qx?y( Jo*džgm|A|ch| }e`MyU~h_ [ǒgZ+/%h4yg"c<xaO~`{illl寺7OE0^uc=ώλgy5xSX?=Y&&U?Ow%-n}h?\%.W4|lw)3ɑ?/&lW0ͣ1`zSyH-A%NgNY6G;yӲIu}gO~<_$?>oOϥYm*~`bP\DૃEĆ.Is!LcCY{T|A׸%g_qƬǾH[zþd\Mk/wc#[x8`EڞQm?5}NJ3~γ S6w?_y|my%gkٝ6߯1s3<~%c? hKPlL7ⴘ?+IPI`/W+ <^j \ 6m}S,iC78,FNj;A;\S<}m=7܏d2HU0C$ġΩ~ylI\y8g@:tczy[,jMoS,?P6\b N]fx/ڻmg:^Xkn ih5a?7 y|^;?n߻t_`ܖgfx;ؗ"^R6ZD|OҎ\HjȖO.J UMAjb}7yk о}mLԤ/_!^ KxQM2}z(zKR?5L=Sgx4v#bO|ͻ3K_(j&PZǀ|}lܟ~W~e=e#z5~=Ƀ(g 3X3vj:"5$9WCqyëŮ苷y`.|ó-20[cS$ ᮤ}joN:m[>k}15o2A/įGV/5iߒx ^H0}&pc}?S~͏Q'O׌~S=0NZ2?g?<Ei}nrr~)__ !=N\uN؃oqyr+c0Ƀ-J]POl3&orw(^PI .JZMY\?Um=~tÑV@tmx|ʟ+?>)Gm$Ѫ-[񤓿UT-Q'=z­;<PPu\ 5ѽ>Ppר?~9LY4awzg]IӬ ??sCs49ϸř?+ W_)ymp>bʴOB>'Ns(q<2A^H96Rcac#OԄ[ MŤDI1W2{-/s7/7/~B5~E{U\/DEVbzh?^t_y>yPg^ ׮O?QA/(80?7\՛ϴ_OJz0XZU>3DcIF)GӋtD4L<$5y`Jj(cW.xjVc߆k_>/~A_{)7OѾzh.}Btws/g+nǐ?ɉ}FEFD?E X39<ɕM?|~^ ?NãHJ5(a[}k"e_m6Q^JL&^,^ĥXYOclϲx_ mK:>`Q};S1!cgǃ(v9z 4=Wd?bh Z|$0f$Y)o%dcHE Qc˳bN!qؾmm~4iEy&Ű/8:F!1~o6ѧ6iyt8;^ӱK3{Z ޾|%t7NFt ¿PCA<-`|rE7j?`ŗ83 @JANjyOTH[/lzƴ#O} }E3  >~asc}n/r#}Nן=;$#'*' *?ėێak`scopQ&CK/;G+-%vv$u}ݶKrld !m*>U1J14%++{fоImjꇷr}^}[5r(>i_۾Ƌo$j/{\n}μ'/ϴKⴥ?d_냝&_Sna?|&vJ:М30>IuG$PyK>myO>~`=ǯeOC:]|%CA>+ׇN졔',$+k^忴;{_?5RD?/Ėi ȵyM9<{'ع@J'Q 'E^*vz; } y /t/}tڷ ~]/i cx5>^-X=;V"^l}B/}L",g7z@O?Knl܏SNG,Im̼ODφ+]PLkKYSm'`Ev^x pO IT,+.Lp!5f#FSEJke͚o{о>3^:˩Scg^+ jS~xZCE١m[ /))X>#FI{{v Qy{T;#~D4Waݑ>)_o}[ښe OO7}>鳡?f>y[Gpx>?ߝ )I>q*E`f*i]c`̂}/'W=Vu+Ư^+I y6meb x)ӧӾ&캞O#[ |g3~tXz7ߛß&w-}۞ʏ",Xb N1dȓ$UӉOLbdO bf6L g*5ק>K028qVo_C@+:&_M} Y'^Ŀrٷ>w/et H`xiO`=Sdx>#^gcGځ?[jatoC~>\O|AH8-9sf6\ٖ&.I&+<w"Hm*ޢMI]3GQ>?fˣ3}z}ũE+#'_CEfstg2^@xyg'k=?Żk@C}ϞkmS;ZrLw-;?|SFܬ*Xȩ"H!xmRdxlk_KYO}z*4~V`?u?Qn ]>#?tϗVo>GD=syKοaLd"qvF|zyR^cu ;H4zJy-O}̚.Aن>پ age'^34^6]O}Vid<6ơtd|;0?>e~J~8^@+**!?uߒW.Ca'H ոSUoc[ʟWqV#^M qbɂ6x$[J;9K>Lv!'"x\k_P -׾WƾIԳ} ڸ}y)0,~Njhl%{{ehB_6>1c?@)>ha5|3M"xiKM߸o_n_1HxU )Ϙ"%嬗D/mpړ:9_/|'J?ky MZ_{Ւ̊_3iN[/CC;'8C[֟iO;Tz`qKl?sGI/ 91ea*Α3ѣC~0HO7|&v3dcLLуS^^,y6o|F$|}SgXO·[Ϟ`8r! AcԐ!TlɣE*R쏓'5*V`,y־\1M®eߗɁϾ m(mb};ԺxixI3/>gO~m uGEQ>?G 2<]MP>`޿0?cm\X4"_w%?ȟJw_BkH X <M5!$YL~PչeptQ{ܾ* 'ƾ<}*Wܾؾ>w/\Et#K>'R޿;}џ$!kDB}'޹?PrKz}i/>e\Wa\>**OgZ~7sfϯ0<jrʳ"Sm )߳ TyX슾}W3ڷLoΔiK[/f_ؾN"V/w\p}`HGUTGN_+Y}]smx {ߐS} 4j a!hbȓhoUOy]Q/O3}=wCkߵo46~x}9~uĀ<\.Lb=|>p!gr0~'LD)2lr{_SdypH PlgERc`sw}kC:/IaC}˟MY?zNu=?4Ov>"%==߻ uRINFLc)F&fˣVѠ Mh :?H<컻xgrY~eۏN(Q^և)擧Qr2a07cbq+R+%i*pQE>sYQnN1e$p7zUE[l}g_Q^t־`k5i_M>;E֧Tt2^v$we6Ggx?E,}֯+M~ |3ėY1W}>?w9( i!"OB]~e?.Ґl&]E: z)'haE-5y)q}ӚYݚܾ$nE97߈}m}ubρ}[ɾk3ٖ:]ק/ƞ⌗{,}Mo} 3#?0C|9?d~?3Mַ'vüYϷ 7OkWɟ@_~:us2DK~cʕ5\&kE,yHǰǓøjM5yr}ƾ7Kݡ}U_5`[SS]/g/{N29b?p ?2?ώMV~EO]#/OÝ)6o|Rߊ%g'rX]4qiEy7ѳUࢽjmZ<:Pdc_p}j lTRa uz4>޾qe!I}>Uu|zEm[zCj>`iφ >Z }N?6ُkL^ v":-?)Zu 5@ʟvYl'?O~?󽧩 Rԯ\,A[#O(~+RԚbS&/GL5/~W:w^}2=sz8>K-;sY$sf̚P}$ߗ?϶<-cA'8Ix۫iu)I[%=DKJ$z("T*%GyR*%TRQ\BP܋=ks9c9[9v[7czB$h0'rHxKáD<<|6$y !^%;uB2Ԥ=2M_I?zlz|Ɔ`M5}w }+'s|g9 >sa=|*$=l{ӟmGFB~tlZ?CKߴ?.[7H{إ~vM%C#_cOE3 Wh0`C|'IJLPc*O\ǯM+%MM_3&C7&/Lmӏ[E^= }|3?AkI|^?C~->[gskUh2@75?;1V=2!/z T &Tgxx9X*b$DSb1|2L$kl(d?f@_^Cv lMJw!$>[4ˋ铼 <|A^7yϤ% tTB\ĤQ5}վFKr~~6s[M⑞;!+nNL=#_2 4'_"A'!:+C>A j8_zǸ+"&F9~ҝ9U]^2&&NP./vrP^7>K`TџGӥ^?,ܱ~OױSp>mS1h2Šk&u$ɔ!?5gW=cCS~{ԍ>C|hВ?X󀟳[g𷪟'ߦ*UgB ŭrR#|i}%3`kWoU8WԢo>Co` ]A~edcKd/COkӲ?ShWo,{maFܱ:)y$'E'[ {݁>l>p*ω{5T4T7NR4WI3Y :2d+u[O}ْ$< ]JW^P]=|?y|NVng$;Ke0?~36maS X?37ygqĉ%4r cգGK썄cH0 s@%JVm7o76}Q^r|?ݯNП PK/CE~pyM5A~v{g)PnڣCɚ7oy FTQzCc 3 O n?euC&Ҷ}CT/wK6wX~1y X^ԇ!z>o\j4c_xyC 1[N/?$ٱh?`O~ku\?a}?6'߆=j%['L(9< bD$3R9g}ƧO1}yxB ɯ-&'b /˼v҃LyҟB|Fk|SОf臉Ӌԥ~ESG bЭ>i?ۋ3gmOuOBb3'Lx+]o>I^z;S30os3cyoO,$%`?0 M#/o<}I~ 4k:/$h4`hv:~(nAD ? ~iӿ^5 '?(qzDBu5mO#!?SSCÊ9kCՌq&:dŒOdPG`j6&cy5CKL,Ocţ DH+y丠%?i։ OrT8>I~9ZI|ƪЗgE$[¤K{^_~-/BےMɋF&/'DOY3II3W >{Tb}L?aOsJ?01ʿ~~3[^R!ӎOfuMwOy7|ȎCԟGC _|eCu{*VL ¿< ?O<ʳ]m_n 9u y]3&2 u5xpLe!_"چ *"O|MW2ni?m~:6qutS?_b $ϐ;cj/ J[4&>+X_rs,TW$+dhHxHv1ɽ&D OW kirk|ߪ7ce)/O- ȯm{4>3NVc54>M5!o$/g >:>3su+_}G }5n/MKx~:?zЕN<؝V~3 w3̸ɚ"O[DS U~|#|+' i 3\+sj$QSOlenU񛜾rx!vZ/nf}m"O;mU^ȵF!>ҷS|(>Uv t)w}mϩG:~Wd.KAkO;'rsjq>L> yg3~:0?+a|/Glg8ȗ9挛i&Bxp1CڀL,S8H_!<-(%:S-$j|R[Nyq'e3y*æJ8nAc~4C~H&O eڸΦM/# L"s^7 P9 B! !g^$iMvotFMԱ`R0̲_}g@Nj? ~o}M|k2@#kf0% ;I$M)y0jwH& ]<4xL8S X"},;ew`hI&֣ȯoĮ'§jr9 >MrO?Ǜ'yO}4e"eKQTh:?CKa_Ko2ZoC~؂~8 cZЇgO?^yA)Tf>M8H[b~~pr9<*yA9>%{ < %ә6-/Y*eKYK.g?|clY7ڣ~Xзsc#bwT U//'h u~v$;NlxTi<"^Mط;lMP+i-oإa[6>E~cNP+_\~(?P @]~Dioz$Lˆmd6(B,1IGE5;$lK#? BNO9<%\ze?f?|.%n:~3[~nCz Hd>P9F\HƲ8A9$h!3 \ $LIS/g#[3c|j}z}XΟ?*yϮӟS!y4_~^7Xӈ^̵Nh'ɎXn"fxJt\!< @~IӘ">D3@18-M:sϊs|>>{BK=._^hO~.u5GB-?LR}_vo?gư-=(T ޘ <Ԭ p*{c |f }Uf[3Il΍㝓$۽)re՛X2>^ϐ su+s]ڣpsUH`dCۯ73ɣ~1?Wo[?ӟ 'W% N)UO"^RͰE*xȁ*IVT/͟r-G*&#]K)>奇tԕ{ {ݮ crQs{*|<~迿7A~~<.GL/V~g$;͜5}T1bp:kIwj!N<YE_]ȿF,whHx$e@'H_o0 Nc-_AF+ga}LdD`jU@' yЙ~3?oU!uܪ<%~qU>?DJK$0q~hE:C?, I~g}ӕ̈{9Ș;N܋^:ii\!g72&$<ǒ\"gǝB2y[>} O}o,8?z4MS"L^xa\^O־t$zҒRy7O>k:7W&[B+C{V|sK7iLj{֒ZLH˴GVQ|M)?fdU@ߔsߚC'X]?/O_ϟO?3|3,SsD&&:Mrp(d=~3ATK~h6C^bw\*|VoωK8_B |֑1>&ɚm_CWԟPn45ۣ!Vo20§ ֿOh?0){Q=`1ت?绂(<ZH.ߢu'E\Ըf&K$%rrxܿiH֖P0稼<ƤY\~Cjɯ |q8§?y}1>nFjQ|TC%|\9'a/XRMx1\mO~I(i^(vd%ہ)ہ<OI1y̘72>Af#B2.>K7QuWݍ|7& :~Hyc{~ե?3LsEy~oǗC?T/T??3{S y'<4\9ʗ/BBxסj/Oe&K_!B~o{G>.(??M2urz"àJJ!O33\n++Y!bW*|r~XLX(Q+6n\O H<`:}\+}{?$hXgu65\x$mm}_J\LIt2ׇMib!>UϿ_|wRWXaVZiWb-L>*nQEc\r7ѱ_qA7ϰwq_z#;믿>iB/뮻gc {_'=1Sк~΀Wd"ZvTO 1&lla,a$ M$<̝li&POc[L'7W|bW:묳;[G<{qzЇN =W$/yZO 9jB4Nꫯ>vwƒz8kG?хmK=7qq?r˩AN;$O4yS=?7o}O/cM6dvCAh8xO%  Q˚8;n~$UW-KPdҺi`FKC}0S}O})%IJ>iv衇J$7xZ;|g$o_̟;Ԯ5XO}&}5t(`y[ޒ|W_S[?U:oa馛%wV;C뿽K6{"ZS wQ4uɂ1fqMyH$yy/_:Hʾ#`SmaBgHfZ3}HB(yU4#J'0~0޴sv$mv<+;<.- u: w֬wxM3bΨZ+1+BxbMeiL些Hyc'o_4>5M^xa߅?˿ Ҿ \ 14ȧ?]v٥=8dv{Ԫ?\y!$g$k$~ =?0A~fRstǵ??)n yJx#jSH34x,ͅ> 7ᡊ]wg=YJ^.Ui&ʻ׌ZpP ut U4Ph _*U O ?Pװ?+U*mDON%|ϢXKd]^VcLlxgVxN$S4<ԸS  ƒ}Q P~ !n@ _B * 2m$7Ѻ:[^[W^x2䅼idI;:oLs-|fK >>wg$ЧhѢvȑ?? ۰EtoյG(_r{Az|ig~ߒսM6"!+jS Rtw`~d챧Ea\RZ2h#1Q`v=AD[>#X<^Y2')O~r6j#RG;oz}I~-S Y^{-R?77Vyq;oUyaQɋC>I'q`U$>&)i:?b QWUP= On&R1.eH<{4}U(_r-rq5WYߊ}+ό5NÐZU{j۰/9wuבGy'o{GүO HzQ];?O(r~˟޿">0s+v71! Z '*K~f^[fO܎`IY-{dnbBN.߂>_=~g4$K#- Sѱ1exxx4I!}x Z -)'Fwgpկ6cToNO!<~[jnDG?{ lL~]LзeyR"ǧT^:G,O3CsEa]͒D>ڿ!9k6Xٿ??y{#xы^4V!O?Ğbwc'`{ccT 6ؠ]} ?)/?Y~å \KzK$+%1_WߎQX#Hm fC/}Kڻ镯x㍱TBw]y_[০~0iKߴg$ (2t_% sإ3 Ƨ--pJ>&|V2#ŒxHE+_] :c'Ѿϡ/U}}?CX}+I߿wyhFٺߎOھ V]~I|P~MEPOw=> `nF䠛zBy?! >(> Dtfg?~/߿Ё|v]z~7c)O=)OyV)ĎC^-~fۭޚO>4 _Ȑmݞ'ap>?A/fPСGjs^7ܤHb]c"c3ak_lR1Un0Ilwr`Iu\Fej)^FV2ڿ=yV[mrGDnOEM\~\Mb#-1mP43~KL#жto`d9>G=_<:L~ń~0Z1ұr~P3t _-/{H:vi]K?*C^E~fd9C~I~)iZkuI'AUh#~)a_!GgS<-sec@JaHxbF1VtǧxciIyO?*gXzi6/y]y_|I#0?WO}cPɯd>9>Mo~7dLsCP+-&}w:_?!`wy-a-lVXqtlܷ bayyW2o2{|>x!0{1)lB112џ\s (L1W?Hg?S*Kڛ{`g1o"^qkd<>g=Y|ƪ]7,}#k_kKfBE6~Lrusˡ=lL,z Hx*i6&X[یIM6jtdMKBXBxi\qN򱈥 I$uC$yUU40G,ȕ%Ʊ]o> ;=ɟ .s '{|bOoP\n/OC) >kGr]~` 2|I22{?d@?Yl`_7!i#J{*OVO։p3J$ܢA$4!f<[ H&DsHLbj&ˋ9[`䜄+1e/NG233Do|ƬB | +72v /b`Fm ߺꫵN{!aȔ\jU>{6̐}8Y|KD\z饨 ߐ&~я~o_x5`G>rO./[CH3TNI.I'9 `pw^<'=?'ϨT\611Y+`(|f2(1k6}A"ciOɣ0ɈݹѯD"@eO?t(K^8lCx+zE,j\<1omӗ䷰ANdQg(=A}.>ZZL2 )/U7ڂl|-/|fK9>{1eCO߾馛\_j@׍ɗ<']vJ]j{/2ˆ"Mܚ6?lrLܶaA< Tc0CxEɢ0!D6&U'=B|>}c{lkNJO]?Q?qxHoBoLL*\ L̥+%Z_aDxAZۖG?6)]A]|gQra}eBx 52vG3A{N3!c'K <1|`0Wn1]zW }q`7[B_ aO{J(2 I׫: +b ːfh$#hX+'M_r#KK㷺1"A8 GeFge>AzZiU~>{P=?-ʝ2ç4.#U =fB׿>btQb"tzN1t 'ojH?S~t>0r<-k:j3cog?pu&h+́ wt`0x Wnp ?OpM-ꃬ/?!&;voE῅Ia H$BY"!lSa(WKC`@}wkGGBqas|#!0Ͼnџj7}L^ob@/| +|e}z)#CBWC{ C!7# @ <\ 2uG KO͐^ qxe퍈y  .1F9H]aN"h $?gdpl1>z&?d~Fm**R EH w] ]."pam׆e,T!گzիWgpU[n]IHqM/x 67>"@g?Y^C ֣ƈuexӟSױy;U*lKcOQ EJ8/]1 N ޜ,3K͆ǧl0c?xHX/DnIIkrT5 w&/m侎qr'N;rڃrk2g5D$ E/z$ÿ0JmdP>{0[o vCU$! <okDI9>oӐ# WI7I'#кkFuYoy[!{}+ા5G}QquǍG`>!A\,7;(ܣW`bW9 }| T S$R^=y$٣g}s/;V0w pyqa.ЏLC$$kb!&1F[*g`q[$Вl8w9wꫮWł n }jM<ÿ0Vǒx-% ?r&^Όwປ6L-DU[! _J櫑sWc2? r! o n aT@; ;["+?d/I?UqQ0oUGGqI{H~.p!2JSoN""s<6$_M06 >[7g 9 U#䟢q`UP%]-7\K.xv鱈BKN!W"ZT^d(33 甆Jglj?^C6}Cf(R'+s 7\2'36tu"KLK_mA+Ȉn\K"O4 q1O|`$/h}YAd"6 J&;h!"P>~"[&k:xE.A*Hh[j-B3Cgcƴw/?u)nj*<|b P6d;D9t{^/M߼#,p!I-νD='|\k-.yA5#_꫙"s@L׽,)oIb#5 hI﾿/:ȣ#|"k$5q)U5fd`E;H% ]'ohr=!P4+{/N+ }埼x- _l?3 |"Ϭ6؅^҈\4KxgnRǽO&ñ%b'||**qG>}Ҥr* Zc\f$zP"X#:, er_@T4m~Dn8DUQ&s /h (w?D~P7>[/wQ5WwFG9J[ZT0L6})?bH|~}Wo~ˀ3١ 'tiV3F:!kCZKk%4_D#Qz `Ö|P̊'CO$P ou* edi-# ͌NΘM e\G#o/fwfw0`fB/./jt4;O./MtOEc$Ϩ->ʉP-w26۠T-gAj~@,z(8I|rjDjrUZM7 n ؟whdÿQ FR(_<$n sٌ|ik.P^ r Ͱg~ℱ_ ?vaxo'BƿZolbUT4X B;/+$*ȃ_+ž:Ik'ϒl ^)r^h[q}8Id&?/? @WE_IJ Bn̨Be۰+m>\ {") ?g hʋo 1ڰLM#b%^.JQ9OCx$}EECH&*<:1j_G?CxF٭EIG^9$tGοq41\ k9yrE[zWc@e%)"yˠVMI6w۪xDϨ2@*;xeԋ}h0s%K :C1wAmJnYbKG3>2L%-ſIcό*τk6I uK{biIxJx\%t0)Ly b cN=$LR0i*+JYXI 2UC)ɘ}P8Q{Њ첑3Ǯλb,b#yP8@o$/ 7rU%Pٿyߌ ]RFև ;yKy.D ,A{z(%ۗrLRkɗsnlhcoI=ƅS-p"l~B.IWʖhCmn+!%{?fbDGiZOH2ةުxD𗣡~Fg%ќbI%i#d>G,eMad~&ч|}p2׊_q_i0~$iXGGI {C`q}('IML N,Su}]O.XVRClXwZ|Q}Z׺78BCrc*< 3r s _LE&xb +ycA@.,t1>Ad_˛ :/AG+$ǧ_Xq   z2\ʿ7 4^c*ߠ=!f&%AN­)aFh`w!%a )s0=`T8J_m7Hj~\hZ4v_ʁɃ_x^ }Q },!=K䷤7|s (8r琇ҋ.r-kO_FS1 hAx9]}ÜfBjޱ >Ą|3!+*e:ߎ{Z$,T*4k`!<3 ^ϳ%^C*Ukrr(fd,=6IR G޾ׂDnk-CyPS+y g$$R0}]' w@IxԏӒ<\|2o$f] f}w%Oe!/_kt\G zB}g_}^^?P`=fK&A23IJU\+tĆHQ7oa^'^({c &[-c'wx-WmA\_>Hb}CQ0:`fqH4C6NJ+y}8S9$a_7uGG%ۋƛW,juX$&e\CLƆg}# $`"p}c򲸗}J.PC`^!X-/})cI?˃!'g!4ŗ]vpI4,HG6ρCɗc_6zF뮳.ҔvB򀗐LSckU%%G{M1)kmCyj) ypOdP~~=l\,.O4\VSm߻M40[M_P؂묳NVM!Yiwp Gl,ڬ+ 9y{ 6W%M#pB'f4` \!ȧx %ڶPTƭRFn pEFe8OT q",>M3H4bÃlD hA43xhA={eYupM=i_p( 0j<H`8v.? cygҾYy][1)}^rGVYJԟ`׼5mҵ. 9>̋+ZbvAdT2с\2[K'i "A1'BW@ 4r=\s5з@IEC{"%M^x#Ƞ4y ђHuQW.zl,Z 8܎Ok[yϩ=gD!6$Z⟒xV?*x~Դ r?uYFzᷓ/$rL( &d!maIc?7 EY D8E4}䱙C#U[+uY!Xdy|YpN94% A[zz#'`:w>Al/-t҇ECd ?|,Vz*5Awd ,,?v/":CZȠ?XȂ\7+";^򎼌<р},MkpF3=8>{ 8Dod؅F\#5Jbf(&쁎}z(>ym쳏*֋m$r3ًlbDRQh ?Y[ 1%M|"7髕 [07:?nKb5F ^<ĦRI,Xh0Z6A LJZfə2z6! bq7xwKLd9y&X._XM/ <|"Ą6 I1h`­,3A<>MKj>XɊRƒPɎ%:SGHTX*)Pf.U<>pto޴&i!#&94ѡ|ڰW"3$n=jv'[ SɑIA? |$YMs[^W 3*l=='$\B q >5Eygd@1 *_z&~'*C3Ccxdogh # HGB tTl"W5<sT\N-^)ox\/ߋnS=DAC_Sƶ٩ R^p"k{%uaѠM4?K ܻ.i ' cll^CЇ&_qCaZ>::(dzxy$:45Q%/q͈DC3y)º^r0/a.g",4ɶG%[ Pq5ZP$%毊= (݉%wh)Xo?WjlIYSuW'r \ 堺H؝vj`u(avgIr%?$ψjO<^+GOIY|&o/5w')3 $F+oA} kkUE#qGUs r9w.Sy/_ڃt_c]?%Tph^U>vo04uV3Th~2u3|z?Q@-h=TBVKt"ɨI~;jCVgc̾ě|`!*|)LĊcWMNr-)*xTxU+$Kߌ%Op5L|}qNL<ګ')h05u\_:UU{-9M>f!!>QڇCޑƸlC̀6TXN'_-D#SgX'?!$& oUӵq?~KEsu",3rTX{I$G҅3 ~ W[_S0*i3cL>\ KV01T+$}і ] &R*`/+ͨ󿐾*?;I_N)÷RAr0fBLM "6R^&P& $PE}ii*L=Q%<| n>ݖu!% G˯=hQ)m` F3$$GFy1?$ TJh^?I; ?`6<FhLD;Io /K܃+od26ľK.qI+=5RT %F0;tsJ$?,ٝ%IBb6?~]]/LgPEW #eC;71\I^*l#Iaf{g9<^? O YY\mҋx5|z?߮fgb8mP cO Mm8I_ˊ$1vѤ=7*o^v\~Fj<3-!7?6$20K_z̯`L >E$FJ*} zCPFIʾ0ϱ >w;:TO8tP]mkUE4y!<1 cڃs0G.mP'(oIPDLO\ Ϣav {/x ~懷3DrX1{Q}?@ߕWK6 #Ѡz&FS#.t{ )cЄ{8T%3boN%xxsqDJ%,~U?<)yUFnHaҥ!<$dceG3QSk.Špdx`?%<}UE6}\ zWoƘ1ox+Փ̃ oU,CfCaX?cpK+Ύ| |;"1e=p|。\Cr<x|f|c^*.Ga륽~$oTLs3ۿwȳ[%+O/f'W$hp -*0lq8c?0a_~90SNA$eY,>L4 G{w!S]!>2} {#r٤}yA!^z׻*Kgy&uQ`N|U JK3B^迅.ߴMDCI!3R?XZj/o*|~SrCgC +۶>,]?)=_Ƭ:vw3v ;%Qb#|cHwsd%ؘ)!#$z2T.DiTT ρg?hNFx،.8?3XN|A ``s=Y3](_aK[I>f#'"TAE}C-𧪃2f\|T܅d(H4ofbx'Cx-[iNN:RnŠ {@,j$ L܌m' q_T>n1@ ρA{ivW4yW_}5C_rU%`U'H1f`Ԓ_ $\yAF;"M[믿-Xi Gȼ>ԞȰ#%r}.Jgcs(Q`ԴT䬲[nahѢ %; *fV F|HنBI?os* U^y *y)ZRmV.剆xvɌj av3\w#T3np’ ^2f.64q ~rrgLaeTLPSu8&LAאj ^twolBH.o҂Q(_r= ! Ì=eO>O&|[1!]Eތ \IdaP~M+d_+Gk% v(D>WoO3Cw86ﰏg7?`J^ӌ$I~b8T xf¶1&[E_O=T P7h_T}/N 髲6ʠʥ7+h hLV~1)Px- ˭>웰$4`5 6q0KǟgN|hx/0$sHJJ޵;>P0a 1{s9g}QMۑk]wETo$YWPK%L|\Djv/"[0.f0PRdd2oʆp :eeK`Tf3g{a6ꪫ0=Kbc3=`T΢6ۥp -v @WGj7-}oȋ0{pu6wç6~߸8/jf[ xԧ>u5#}Uaa4(ORZ|f牆9 U9 ϟJш3|@6dJ=㎪KJ=>r#Og|e u/Gm˶{p} ~~w DŊ V[dO#=')⨜Ow#J2^`VBVI6ՊwT8^;7̄ZHe %,aU$ <¡alu>$~Nk0r5&p 6dy'?We'DC8eGB_כQyvzuy%^!>7pC!?_LME%]D$:ByفM⋐î38k`.WK/01) |qR1}8'/=O4Q|ϹpX^_vea Zaߗ%$2D&vF]<Ƀ' o1UU ~Р&(xJEҟIB =_E *_ ru}+sʈ-l ~Z>։+gۊ/"yP>oSIFdŖrLQWk#Hr+l^Sc ?<7>0i+&9É*р oij79}/vy7b7L/(8% Gn$z?ƨ曙_я~yH("˅^ZBZa` pvG$/C/7ٞ<}J4 #K×]vY~%Ɋ,WoP},t=#j.{orv/2X}$"SbMWy%%Փ=?m;m#Bd05s6 oh$*gǨNU2ݴo&"۰x'/~_kG%(V &x4m[brd* IcIx_3<06`jȄS}9o|Ce0a++,V'7@lt3-Oy%/I{ 1CQ c`? s\b\60ŖBy򗿬%;7>"?gS?COD>׾V`D3f5Ͼ$=ϳxN@FeُD^Г Gn3ll g|3FQrSo[߲II )C˰$'s3~S?+pr,_eÏ'fyUZ>:Mm>f;IƏ1-f F27vGۢK$cBciEi)M"QadAg$i LBN:%c~oO3|;!W1,ޓ/'?Y;3g?S)G$y։ڡ/%T_KX &7ah^NSŐ@}׷-12a}1S0Q%о]o_B{7Ww-r#|'wyx+70dқbH3)_}rb쩩4%ΰ1l? R?d@&2{"~VrCͳ= c+B0},n3Q߽zlxX8aa$<oQp(%IurB&^kRU{*x4\,\/Tq%Uc M` 7!螐-6l&Ar=IO9/o1a 桪*bP}iVudÒUA |%2//͟"ƁyU59X#}IJ-R;PVW_}2Λ|i]ػ}~AªE}cロGF*VNh-?T %C lhKڲJW%i|:?)ˎm}ƛ3f|Wd}ı^.-6f#4#)#$+Cb7b$g{Kxx969}x/ل$S("vKWj۲a9}3m.SK~_}!w{YdZ_~YG3ѰryQw` ܺ'~7] #2!]oD&zTO">4ؗ }.o,|cS}/wYbY-f'|} _V]yZW]/_*$}FyMf'^wu/,!cL4${ELzZ 3$'ȟmS%":IϞ ^WdE1?sj_^#&+=dwM%ŘGKGD\="(bz꩏wڻ4cD*Y_ג/|qݲў$`M1E%/NyߛܩӟԈ+0A./h:^g;Ї[o=Z9}Q%׿Z׼̳Z(D>qCcծ>Q_Ձ}DUR9? 3q۝%!bUiCMO%ܞg=b6%<oO/}\LNCجsl^i0\{f$(>M6k VlgRȍ !I ]5[[IJ)z*DOE')W^kcj-%M}{rxPD 'GO|o2[Vo^7A\K~Cy'~;$H72{'T` C҇rKhF8Iuk7 #Ӏ.}^K˳Hu!̶|G[dȁž?E$}6!%;ٜ .@0@T ST/L-q%??kY]]wg44+%s. ?]YghHԆZѽZwUVB~w_h7d4 #F;ǒYڻzb0N6z- ΰvE5goC ><<<̍6#?|,'$iǪv~efɟvE{}qYo~S-A5BBfLJBy` }cZI}ӟ.1M4e/"v%O_W^TW>#'"ïZ+js)чȋ!);Y]m_ؾ8['?." ihu,wCӟXBxP.f80 WVK0gjڱB*jg *3"ZX}d &?Pp;ϨJrQ?Tb@,\ x`9g'ß>t>ͫ_jW#[cCŸ cE3%_O^T>9n1>'0O7Tdh#P!WGU$+W.o@x_#8/_ t_j?d٢1wewH*VOE`BWRˇ~ -Be_V{Q~ *fR~gfd4^L73ݔ>I>$ s4#9I.1x$ O}Szիp`f7鋑ra8/{x],wo~ Fվ>vA*}c~U>Reiҗ$ߡ^~%L3!/h@p.k:p|1Į˻CcKj8Ol0O_WXħEOϞ, a:~3Py+-weWWpno{/% ?ZH>h&|eY/IRѷ%oQH:~zf4x@%BC1~64?@Dqt6B~ ݵPJdw/I6 3Z`seOWux~->fC2Ǐ5r!Cg'e/E|[?iΣ=b1 *'adbLC| $fB(L$v pB Y s"JSq5׼oG! 淼-? }3TpdnVR}`?#K+\~7pCt4$oP1Wl : "-A1_Z0>ٯCN?9 LR]rܷ˿-ZzG6)ƾ!f#U*ۗX/OsZ eH.l=_UH}Crjc3nntП<T }dO k(7ΐnCc\[atҠ_JN? 6;⁞$[ }Y e>/Bw$P6`<q%x <&̅; _mRc#QP:)aDaiJ諱%IhF~]oވwD^ཕ`32=0 q^7`>,O:Kz[2ؗϟ*2كIH071Tj /J#=:IR2Fk{nme?CxB\XAK^I(Ͷ/yDr8?|G' jd$LjPf&YT}WNyB@rfLb'2?="WUeiDS_K&_+/eh4j*fC\7fKC25a ϟO|mQeo_BϠ8vp3 0*}˔HD 8B~": m7$\K[9 1  0=y{W8'm U})'Bydz=d|g}xM026xҡTzhǰ۞W.oH|&3aÃa!@e`Ac\bZ3hY }cgz05'C؜ŘW Ҍ Y>DN;Ԫۇ:c=3BiHN 9CȻE)Dc*xPlPbA< M_TcvWrk oy"?&/[Q(~!yxM&={N^dsMd6!^M[DZ{`klKK%;vv׃91'thxض65J|~F~5\y@ha{ƍ .n%/X\ّgϢ>Q8_r4~ښo (w ߾m Co)UśyL  ƃܟj!=M6 g!< /mH|[\^j?m j[(ϻ ~Fk;cP } XQ7 K/M^M '^ }>]s _7qYv!ha6"E"׽k_T|RZԳ>SOE>䝙ǔZ}@;8j ~WW]W+l~䁨|A$zT5>X'A{2eJAo*;`R ~d,X(j;;Ճ$;vxU]}ă_❌xV*M) 'L<X*\MI7yK>T\cЅW:p0ka3Sx_}mVVᇘw 夓N,[! /﮴JH6S<ðյ^6 ˳VXsCPLou+iRI=I)D) ~@7G;ޗLTیlʀ" "N@Gcĸ' E[q`DDBDW4! ;0l3#3/00pOuN:Un?$YT9^9wl9BPՐp gpRoACWՕ{QsODhy~7~ChxQƟM>l[| 8_OmMQhY= 4JpJ8Y >'>._a=Le4N[poѯCp}@R(ӄk8+C.ȟ,οKt/\-O6Yo Ogp nAG&I ))R *@:C\:gfddę(ti c<]B(u%/?p?p[w|]q˿֏^ LD x9jxw!uxIL O ߚO*2%!uC>X?A+J]R5ܞr{h<̡0/p}`:+ dhO^$|C"` ^<)y"S /UR{^}Et̟ɟG%7->\_jB`b ;?l}+n| YZJ ]h  ϯ_aOO}j(oM9{ۺj&)_aG'.nHBI(gm'[h wi J^`܅aӢφH{~gf}ԝv+y!njxꎟpMȖd4K)Rr)yTiγ#Rf$B ˜'o5y _}+_e 0)'~o=d~_q wwH5_|' 9y_o]^WVJ !' GcLEߠK&[gh HI~CRzԣ> #8{ ư$A}gZp_◽eAZs,s!= 'Q+OCМrŸ~a]AB/(Grk4> _G?җ4Ë^w]5!xOLˆQŽe~?Tp(lSڗmU=" vaUЙPd uGP1mN^!تzeggy[<ϿocYAܡl׬_j8h}Q~^?y6K.ɫ>'{ibyxft"xlC>~p 7\{z;B]X&mqٻ- 8TC.fI!k__-auqN^`[o T `Nvl=~wϓh/ +rE`W ő$MOyC" x}'`G{+!0ep_,9n77:^|''$|\o7M7m.|8oX?=?8>׿zիB<(N^!] DխO+,HB=k(҇px֜ꫯ~{{+7Š7p)w ~1",bCVI 8~x^&0^UCq5Bս?>b=?=y|+y0WO^!`!a.h(|?qYBV?3UEu轟l>M;BrQ8pռ %[R\~Y\o;yV?:{An;*4?,gՍCwqÝd04;<}hN۶?Ŀb(}vo"܁؀G%P/8ٻ8WX:kKɝ!OIv\g[_M+x+?^9;cY<5UoOɷ~m{r[`/ {I{x|Uq޳'"*}̄BEo1~ͮR'ra<{C+v}OKC/jEI.9p(074V}e8C leHρ;\Qހ| _{~<:@4|J^L{H?5O8yvU'ţч% ~\!qbc|/?Wt`= Ee$ !CpH\qڛFH<oG'>*:GW'y=3?L?O:{;x$TT:?0;>z}?@hGR^֕e+4p Z$0ԐN)X?tJ0A[bf9@rQ?}ڙ?U6@%l|a|MFK.|voE=K>ahz ^1w^g|\$]Rk/o _5 ~|i)_l'Kij7V;9LSAC)iEsb> |fp0d-./ C>|fL{3E?[WT1-O7 6k6r] tfhbIфNME$.D},'~g2S0x87W|"_C'_&iY|!|k&m/@ -EF |rxE?Pd">&{/}3-B/}ׇv^g/}.WAP_η}*wG^M}<=fAezD.ؔTɞ#18>∯ѯl{MT8A|WG{p)?<,5|6Ghwn"aEZ\7WgzƻgT| Yy MA#ɊPh5M\%;ēKS>3@W4|}aj]aw*_=˥"|vbg>5x!^ĝILS Si.4^ķܡk|3sxk ξ)?@| {E챏ɭ{>?-dAP_?0(9 z .`u&B(ɏ"pM8vGB^G_kS\wG<#Wϧ~z k/=Vl/&^ٱ|bz}m^{ԇvѿE1Z< Y߶?M׏=G#Wd\o\۝箅$]Ƭyd&prp((4%6Jf(kY<\QMϹ|ko2v%1R4?VIF~I<$J9i2دhO~O*Ǘyla5qaIxTF}!?`MI=>7oN߶?M׏=GFrl ٚ L+)!*nx 'd YZ?[S(avUOT0oVgBV_%_K2|瓥qN%RTo^: sOw{}(S0aC`DDgբ0>wA$c6N$gxUd@P:Cvf RRx(9#Ip*jhG rx,򝗑/D wNVW#دl/Z;|m|&8|R^3pgOp3>3>O(">4aCx*\!E3MwǑ#ԟm~ '=Lf`1qCYǍEnkKnp%||7>~.glg*>$a0QzòaxZn/GWnj~S{sR1DFΧ5iaGEUO90F]#ǡIȔ%=co 5TًAڋ:,Ys[D?{ػK|AP3;?$綊qyq'7hnKCt?2l'Yjdr3<4!P#Lx5ť|?(߬|Q8;fѭއJ%9|c;?s`"+BOwB~܌Lx<*{$S#|o#>d/xx?R{aݧ'~@g){_ON[o a+tP;|;?xr?t?!Ea%x|F%+ C.$a= ^Y|5|QBy_獗6;G@}5P~TSx8Ot俑_ِ gr(>J bLxO.RϪlR<}K^CogONU&_G5SL3CW)aɽ>Y mgwYşCAZ_-)|>O5l[hgZa*1߮7?i<^{_CUG8 QVs'S.ĥH<7:G5ˣ Q ʗ^N^{^O~O>ٱţ>Ӈ]vgJSR?ca}~ aN$u x?dQ)7r1?$?LU(LKV2J< ʗ+_~?Ws+ë/O|N>ae^+)?abO?7mqE3ٍ#2y1aA>\aWZJ}M뗞J=>LIQznI`⇦y$ yʗKԉx8i:*Tkb0Ik3\FF#_O% |IN乵StRi!7k/O0 ̷9(?JtӠJ޳ӿJ.>f_2~ZTd^XP-mo+ǁ붦kÚq'ޣbe+?O|uB|"\ŢT͔S" b"?[Gs4YT|賀F  {<.F?~qxjolb_dgkhGG#?79a\ LOpHp|v%)#qxViݩC"*d;w&_FR2#7{ٯ'BNT^C|mY>ɠ4>P,#~B$ٗj}pOT?tjV4Nj_ ~PH*Xi㻤?>룖|5=5Qp t]2"w+ӂؙl?9|˗g˝tf,bL6-G{90>(Gvhhuԇsa:[)}ϹŻ+yp16 s~nplNKʩ+q_/eE4Q#J})s/\7ġ~䫴O>a}a&I!j$}^ P?35;#}uW&K^Fǯ|U%=x_j\ ӌ*ZZCy![đ'46rn,ly:r#xY/£8iI~#؋|No\?jdS[Ο g2KBOC|' a//|F*{ьb.=Y s[.پd>Kw_} f#oZ'#~2X =_.>7(|qm?o9[\WM(ge[h|B)XMÈ0OCE]dE|vo܉̧@"K-Glg?{`9ڇWv:ײ4f?\o"O:ycMwWEn.;)u,췓_n"\u?Gٌr,_n\?gfmqb>5]|_˷~'>>KP%fBkMo߷~gZ9G5sw>;Ჶ4vja*ӇT8?֥fak{Lm7_,iH$ʼn9z=Yűf)X x yyk*ԇ`&g34ٌfqvvm'_eBS _lɣN4|bBjSP:dD jsfH6\+lj 2||J*峧}u)}aP([\?+Nj%??U_LDZߞgtnj*r5;t?VT^t?H'я3ӌ|OUʷf/pKŧ^Yg {9Ϭ,s3x<ݽuԇWS}^9~!?ِmG|xF(4pZHQI"x(_|s9|/?PܭW6_49O=y}5P?V:1Q/=W F":Kzs)~~b|l)(PKT@1Z՜gZaQ&_nK]L\*]SIV=iep>39z m5݌>k~SZ?Y}_t*h'>7*_+#T}+qXYU hѩ lۥ@9RNirY> xm._`4|?DSXU|U|?szz콩煲qh;qET߻4zQW@c8ӬP 'tH\$%O "baPH<@O|I~;w0>,Iy,fCLc>|¥+^m= ٔO?"{~~ Oru/S>4ٔz| ϣa2'3fnx'*yXkR~?|lu3&gfV?¡/} `h όw೅|][g\"בy1>9҇>Ƣpk?oFL}~ȥv)H Cc>r!"6B915I:4r~ BY"rZMƀzf3@wh _`+4-SA&w4{Q%}6>= ~ұ3?9㑬M*}CI<9/`t?mVKaqZi=gqGw!sS1E_q?{ q@P:fyo犲IU){*9o;Wgys6qAG?Ϸrۏ"Og׊vm? >9ik@x3_~|{k*c &lxȻ |$5qTQpJ9/Сg;Eekuk/Ne `7دF6{E| hBj^0f{YM?gE 4 858j3M0kw}00y׺1:E1ԟOn?s7G?.swMF_jN8?Lwj$ߛ?IE5"" 4'\G}Nxv0D|Zʬ |텼HFʷ Ug'0sW"g1ڥ56}p9g>|&]ԇ!S_hҿ \Q#[ aɿ'//CJ%kO~O#˗;Sϧ'*<{TP?Y{wsOh?j`xT>+(֩cP |~@x!oo=6w8πo_X*fHLGÄ5V%1ZkKJnExXK>iq? 3ȗtF ۸*K6S#_O~5A2Tk/ n|S{i*ߞP'7i@Sӳ J{_\*&ѾW#Cg0>âW59Uc~= gc+_SVOoܨ1 kɆ72~!O s^1a|:h5tXYDx'WS)yöೃ|}ExFC/Z -= `ۼvѾJ̗@yw3nTQ-.>~$pލ??_%E(E{zWWrC9dw'"cE<7k "_n7[dwn$_j_' @ۋ~U|V"É;v*%O?+T/.hX,>PX<(}mOÔCxIJ}(۲?Z;~юߔ/5_Hِwn >SH7.c<⯎r-1qIS6pӿ"F.iS̹vkr82q O\*%7kZjuԇ~Կmr{䷫3\2T>xgϴ(&qd^9)'F8a0x||/e~J<-' 5tJ=s|toɼO/% .l5FI{k/~f>ӿ7g EoEhH>T+ h49ϰ}n/)^w7k^T>Hl?\|o.j*XB]D8um0=:d+d Hk|Ak1g5+TtǗ"|*J> 4?i7X/Į,%9ꃦTH>?Tѣ^K8l>Mwj툒 IyL@0)f 9qs ү#\)䓜n4û%F8J']OBz>iNʣkﳕ X|K-O?'=TS/{Wi^qyPľ 0ZOl,pgS~¿M>AX49?]aZK‰~?Y$H 2$p?f&KsM9?6{ }|⣗T#Rȩ6rPS>vgk$FC|Gs3°wMNW'a๲6t??wG+{MRK*6 k%*N(c k0m`9v;rR$e!. ޞDOMTO%ђã/±i*_^肌be %@M3^KR3''>cGe}>( Pϰw˩=wm98p]?m5r,\Փ͓NxplmIջGԌ]f-$@|p %ϙ;1R>/r.1'n/^|B?$5S:fhgCwf{L>Hξƾ5|v[~b_:fOY'7l奘o)=c 7[_t=췁IW}$dA(`L \c>MDăHS)_<|6ӵ"I*od3OYM|D)6ja_Gxd#FCQzэ2L8_sfxޙ-GO< ?@>.o,$- Iwi*@t>ház/+ŚFYDr'?|'S5(+ |r`/mgV쥄O;;7 Q4٥=dHdG$h-V/%}(?Uq>p~Xg!q/:cvXJy{\LJ֏#꿟bVޜ$d즹@MCx0rdrK %}Řn||䋛8rxȦ_| eϩci>a%gbg~xi15Oޱ>ᄎLLԾ=lK svÏ>/$YVTߔnO~ ?q]?rge>~_6$?d[P><0lSdɰVhk!I6>u.Y<'-[gW|u:yse?tx}k}h#Q;# ?t_?}VOEYW@R'EAhM֟3jމo5*nAS&_PM6{4x4w~娑oafٰɗ _{\|?Kߟ}yx30ģx@525>oU@=sxQdԜ7\sǖ/γ\??;d5 %B^Z _?#PY>5=xh:|xEHvRI*~.jSb>":>/fs1T|gE \4} TQ..kwGEW<- 5rNB9аanCN'Yi||%1hZJeYKv;l/+P?sz Շ|Y{?Oh_Ζm|{x}?$w?JB,MA렩RҲ֔k 9 𩁁|ΚtMj[zN9FKoEz>;w1xg ޻q%X&eȚð`q> 'O7 ?OAƼ}m5d?!rh<&=C2[oj%x?g8>^-qot K-k/7!Ii+е|%>%[%3[i/Nj |+ukMBQ_c/E?sQ|s>9+{ţ˒ot/@n4o'eA<6WIkE!opqXJl8@9׊>dY$9\<7\b%킅GODl f%~!3G^|Π@^1^?6=Y?3crͅOtG6"E׶(p#g>"M[_o?K =֯|XįvOnkT NMd].H/“ y"QYy|ἴ <o񳦾Emg zٯ^繶4G{qx^bKO~??_[TOG=>(xZ8[[Höqz=~9AsG,c\REh"jt/tov|qdHدDB> >o ~|N®i;==GtG`/c_B>U#ϴ= aghYTѭrJMs)MQ.EϖvZqS =YGo}&_~O8g~H2?yH|v2{?6G>Η>>,hGG?Es!rE^F"$p[UѦ}ċoea$5!n ϮTw`# Wsf+_(-._ᓵR>9fx<,~ȧME>39+#Z(XT&_"7% g>T'>̔>3#~?xMU%OӚ2I%C:lq))~ |;k ?EXŅY/}PP ^Ih{w*<F W.#TٯO/D {k>}'K]'A O!> ^x*㑰wwOVЇYh#_>x*ןWd84~c|Q5[74r4\sUas'QP̣S)"<Va|H -ɗA~z -oӏOj}>_">R<2c_>?,C7Q'Q~>؂% *PE"evPTN"ٴ<965oolzÿ{ d@n"٤D.q)}Q?+J<|w;W?FSm'_yGJk_BswDs%I˾?G"lg?'\yl|xÔ5#C|knl_{ZSeg>8™{c-~M]ٱt$L<xdkZcGIy);4Y*rfpsS:]VӒZ#_J& ,DZ>S+ZVs|j/^Yj/$4[gΟwOZfGx#W RS?"S9}^8ht~?61{}o 9]tPUoN%fuEG8֒) k_JZDgOv߅NǘbzG>W??7pZW3kn35tM'"ikOh BӡFVsͯHHO϶CQLl|x񔯉OO|Y)2>jl$|<_D5㑣}ﳷj}8LįEP΂V俅h"o䆆ЈrSO]눧|x[-3Qo/Ex^gG2G|"ߠ'hG}8V@xߚ=𣴰)k0"sbɤ3'7Ă ⶙x Q^x`+ By.̧`IRgmQǑ/m9Rf&'h셔?t.?ϕs,3E|5F} i>d}[P@O[OK^g}^ֿ5{oi%_r%hqO,Ѡo |9](m&SGSi$졚|I<0T+v೅|we郷ôG&9OV6~ٕſfK?_m4O'mm^aC z pM}qwbGExpodsH3C~#4(+P)_Fnm8dp/mz= _-ϖ<3FOޛ'izȿc<x.m}qч~޿Aax맗?qJOG~GT8OD=HmAej ip?qekϪs[7%.#}jE5[@/e !>ۑO\|:{WQ!u {8vW/>0_Z8l>24ߨZ_'[1IQ|wK$[<}?LZO\~B P|ke gYf_l$7Nn0[aqrx Q@ KH_%|W'm/yI>=ٳuO">R|Hy//O1F/K)2>/1޵'n|G?7 'm3b¬#a-Jfr޳a, /<_<ۅ.ʗCk/+_Q\Rg|y6|Ye=^ūsrR'[,3[kXܟ{ϘO-'k_8gHȶ}?Fn+6 PL9}ϝi.|\NƇ.3(;f49n9pSDE}ȏJ*'!߹|KL/+[,_(_ϞuO=pg^? M? |K+|N}%|:9r'/(K|9>I++"Ƅ,&_%=r6:eTC39?oa>f7O sHxlʗtM^]|AьV@Ƿ_jj%|="ϴ$10ӂl:!߯#Ld~%A]/_Jh9K9؎^R'0 #yR'{ O?^FS|C_5?~.{HL4mQ~zn*FH9)8YA'1e  WIYNZ E;Jbrj4DS!_Eq|'ɷ^*xrڥŴgSg,SN:_L3o9$}|l?SՐWJ}pɗ*-w⬃0{C3߬}6'_824é~W_1v\Xwg#Cz|skL;M1?Xrgl\K2-ȉY/>ng| أ-'G􌏲?Ү;ҥKhfz3<5x4hSX5luCݽ*|O!x|K:_6^{9 'g|R|<]X}j|Ŀ^_viR ?vf(iQ3U17Kp0p~j&r?-CQ*o5(_Z |;;Da<=D<괕aK>*>W?K}<0l:Ŀv7mlR:Y<'['D{'R1~T:~|/|W'YV^ʒ?(,V?-Q} NGF}nick_:H7~? 3̜h0tXˆgwgbC+|>53Ɨ`.uij@!+J>500 ۞RFRR/|"O |}d>"҇m"HmK>MnHq.e 9a`ǣpEdM o&%ӎ"B?ݍx(Z{>~qk }vx&3RqJ=\H #nu _ŪtllKj_" X{:{'՞'o/]5-K?w|OG2z}ha_٬U-FnIK<%|* ci"_>U˷^3Ɏ ?u'GQ?_oy+_yx㍷r˽}雾!yԇk;;[.}c~m}ߎ[F_1ʮ>_@vĿFOx_!eKbŒ~K>|Z\*eW<)~ɕm|gJ>9Tϣ4;x3q["_u_?ß.7۾۔nq{ܯ_4`wА?k+Aai?cύ|cGˇ^vNF?xS@Mx+ KؐpZ2FǓ|t᫚cZKʗa-jS*\|c>+ROHׅOrЗO,1 졟}9/qįGG*?:OxT6+a4Chϴ ?v>׊n%6?=oOɯ6fbpA wwU#y9WS:x*Y<$AY<M]@s>)ݢTJ;i /|ɔ||W0Yg/zVsi$`:{ƟOgd?[ogg5y^???KKxf2>Z0M=_}og׊*]?E'xV?'M=GUhoȣ_m{81)d7h \Z&Ƴ+`<?ƓIrIb#~>flI_8r/&_헙=So9&l"We/<珅yL"{食3nRsOmܒO1~ ^ДAJ #җR X^Zo'Kįn \z]{K$Ii_K=G l ) _ yăga~Agh*=ܺ3& `Lǔ/ǘM0|>"b"_y3d)=X{Am 8{Q) 0>t~|LZ~j݅O޹'\wu?=5|Uщ/}?,eT\Wk;}FȯFgWƻ*?^ _?ԟ"[_~5!p N0=IgglH~5B?w?WQ. MI$;y79{GHd G!ce`{hL#lY5Qȗ{HH},?6fM擼oh/i9UoҥKEKvC O5Vç?xů櫋xw'?rA'I2adgđ^:pxf6@WYNcH<$KG@^kڴj~br[ =;E@UL!7'':\~HxjZr~ݣ3g/kGO~w(>;J=5B/W840c_L3KiR@W?xq~? oy]Swg|$K=OYrځ,q_S!2{-)?c\ )W,;Tʏfu7 #s?HrZȷOr%|c/d%{J\tşYy#Ϝ;E|sg>__ʯJG}0dk2mS=)۬8@xq~V߄thWɿ{>'?6_ݽyߑ&ஈa{^I#ysU&!$!_b 7=^4.1"#)n \ _eD"&|jNr{-㧿l _:e:U2ӆ*]?,~'hV]vӟtn'J x &O7/y?zM~.7ϯZ7ŦWCe  oc0қ3pǸo]*痒3,L"%xduy ,s`O ׽xοф|ɟio4U"SP/_Og|>GaO\ |݉YrַY? |Ng"2{mOO^&?#?<5#׾6[AKm<:oU4v=F>^xZn_x?d-cѴG+ǟ_npy1$/.\d/)UK=MJ̾rGçA?W'w܊.)"W\>O}]r//~'?P 2$WavHPO 4*~5USW)fgl[e.υox1P!ŵM/9 ! ۤhH5'* 3ݿ4wfH0E/cTW'!_bRgmY>mb/v8҂Ϭ5>w'>\s_7r-y/tg>y+_\x&nOSRa*ǿ>k~gZ?i>t1WTe#\$ɗ%`4 xo&odXa<4~qdP[9ijV@&7k||$_yoY/P䫷_^ =#p|6">tL>qŧ~`=q<1kOn!0/~xTtAO Gߺi ׯvŻqD1//UگMOvs# Y8ԥs a?)T[%ȇY>e2S3>=[l|+qx|wp(>$iUY?;ZO+"R|~?zI>tgw2r'XIijxr-R&m-/YAMI* 9Q'y*I)_yI |AᬈOG߬x%Z^8,峏9x>}6?Syםt>@>L]?י_ LJfGG㟕{ܩvDs ?w!~a-5W.s#$Hhyl[F,5}+qȗ[94e >s6";t?li/5t0"s;>39l|eOC?g Q}}O't/lίFxao{,oEO4oK,J GN\_x5O3?>S7'!4J!M7|?n,6*ir'lC .>0Aqy,&fp=ZFS<9f[ӘL䫁a/ȗ /7̧,_Ƙ ǧIf^Ch2v|jOOghߎUػ|} >,[>P?^ef]4__G>Yvnw1>__eQ{{u{u$U3L_5~>1!~wWCF`ϰ88_/yKmG~~BCI> 9_WO+KK꫾tK(̟kf4R`*gwnn~G8͑($K~e]/~Sȍ+gQX r)W\QnS:֛8Y /^$,~GJE9>}[T_;^-S'#k?E|^wu\y~۷}vMhF<J^{þ[E iW_}+DvL=qBR?o??zֳ,adCB!2y;jO'B wxƋ_o]}Cy'< ?xm/ omB/, ~|+m{:Ļf׈'|8g 9ӈO񟓳$E~.HPDO1Q'2͵3ьquW%bR8bQ7`Scೃ|o$S#_9 Kw!؋O{9/r/}񧲯P20{W>whN /~BU77U+j9Qz4O{o2įO7ʗO(g 'CWK3Y|?LY} Kp@ĭ75g7oTCS7q=cwDΰW=pK=5Dnΐ,{+4?.)i:B^I{D֙M>ʗۄ'DCRɗj||r%UeKR$~LI>^Ȑ^@7ƓO8d᳨А5o6d>u~?8{\c} ~g~~A*нe)pk~nJx7==~}qIzJ%l_xJUʋ1|`3W/7?< h3Ԭ/Q??71DMQPdҗ92}8JmrPcwTX'(lӭ}|)B}GFJjTwU%ߺS"_w{'?O;>WJ/F-b^_Wd{9cسoo  ˫F=qP\xӞ 5\]]῎_>MjjZnB_ċ|fYC7r~{ak . `Q:߳!A67B`,8_OG##Crģ1*G`^<87H5%LY>_{Rvs^U6&5(TWQ/'c{<ggCe!qQuҥ韾[, &[$fʚ|4E4^,|H'~aEm.Muƨ68aPWANvԦFq|Se8 'x $?R"͡aչ| &쬔/D7b|i|>}-Px5؋2Wc')җI۪3z>8=Q B?'}E#,+Ģ|}_}(ub+?s?gPms41\/T,kjGm~X?s>?܏qO`(Q> aĝKɞE O8^(k ؂@?@CPJp OփH ]GjkQ$䚟f/W/ K{>3z>ғOY?3E ðwhsA{rР! 7e +%€j6FE"0uv{%n$6^ a>#>lZ3ofW_Go6"-. xyRfP*WT&!}&0$xȧi$I+,Nz>F &5iMI,'b#h/f>3IHaS>]Sg֟?zԣ×ei@A?m 0I}k6hP>L3hK?!m,Zؗ{$hƟo`P\"=|l;iiEDAa񻬧6TJĥI9$ ;7OtlL).0+{!#W4 D-N#/7}J3~lc7NNm-_eHOko_9ĭ^J%$zp},|فOo>l 0`{c_  aD9!O9dT_<  ]?}%9mjϯE}ucS>[/tVC3|xﲞ@2hl rt5S@O jш I<&IQsr4{ |o6!Ւh+爜|AlO>qjk|&=i{exO}KKCO4lw}\DC_-(j4&Ԝ2^2Xk`U?uے&κ~qoof{>N<d_^NߥOz2"䭋nn߶*\2$@܂!EK>"dw~:~}{nA2S,;C O۹7\wu7tӧ}ڧ|կG>\ K'>Koo }F+Pl6K7OT Q ꯖB[KBxVY}APgL+C|[_i^o%ϲ~G$??7I_LuA^8@Ջd A$=Քg}9{&14h ORS<_,%_?)_knO췡xY5n$ެOO^z^gM<1y&'ܞ7Z}xS>L{n%ɯ;??E\eC?? SJWJڄs|neTo{'PgYCCo>m' \~'}rI-"SOx㾌鉫/4$(>͵zU1R1fy'tF(1u{|f~O48W|)}0g|CX$_2[ gM\Gq@] ^9X eE5-tk9LIOunn}Vɡ5J}RŴ| WgF0SZ\ sV?|_ӇOZ]z?)4~p5 z߇}Q `KB`r?O48דooVW8'??RY|I+!^O^,?lj#~#϶m6I4JYsMgl)5yFg>ah'Ly!d$m$_N^x(U`O5QV['GښO_qk?d>I?= ">HΘ?*|fL?_?sDܹ30W|AΙjYVq\ŝi8S, &fijR$_T/_t)OBd\$TLOtB5;3k^|4{g4l#w/dqx_w,s˝RiG+ܘ>>e+ܰ [no_R C&/0F%##V:?Fْ> yNS\uă$pmFQK uKG'ShO)/Yrk!_K{ULTS~#H泃|Ǫk/擻'|7_ Bzԣ%[q/9/ @ |ߖ_iUޔ7;Go|#_;yMuOoYҎn(y#%b#7nIq$>076ʵQxʊ+(_T'BFq򝥂"o\J!>s{ DgR*{Sc/>4؟ԎOPho|ޛ~\ӦCxަ >eAWxy}9w >?3> GH/nU_8:Ƌl>5*4~M]M]⟊+7 `7Z_Xy/fV]@/;3uE~T>$% 5A2 ~HlmNKViT![ !7J?^4|=D: g4#'4Ӧ|1ye]H> Æ.bm# }cDT#_Q|_Wzݾ*xZ/M~+=2+vK2o[Ļ"[=:O ~+dM򭲅I w _?$kI* OQzܕ'/9GF45)ȗ~e?t^4|.3|t"/ #G P^v^?<3;{"Re/SBOjǬ@%Y}Z{#uߟ>4ؗgJgɗ,u/ʗs 'f|Btl'c0't-\>Uj^F?]o1b>_z§NwS?ipI*i=Ԡׇ Ѭ\x}&"YWw 4&};i.($ +X>K~[>ŋC~hwG9UV._J+nG7n4o$*{G.UC^Sす Ysf{IJ֕,O,#_"_'_( 27ipV86WS4^^&/{䚥 n}7tSgA7=C׽..^lM IC>L*}<7i^RZ-Ui! 3yFc4j<쯖ʯl0n6c*?,2|A:t🛢H-We3qC8۟hEcLKIERɧt?6>5H?׼&3T]';__(xEg{Iv#H\i_ aG]fSr]K>0~~`>|[>OQ,m4UuAE|ٯ̧~g|an/Pf/R?d.5^|Ϭ~5oJ9r}o| ?ۦa_{&z}0I{:G tJ#jVO=養zGNF{]g?v)$%+saӰ}_ o߿{lx\x}ҥgd2>mzYxz2T\xJn!>..46DZ{?a4 ~.!Y> |xwY_h~7] ks^&ϵIQF9sP?O7M_s5 $ygw|&\y>k2S  e+[sfPO6Oy>S?ԅ'kO"7J\I |&z9pE L|?y([d(?^a`ų[D^\N2{J"o9EͧǁO^&OI?^_hkPt~9>m7s?f}]xw{laWŸ[M \Ug*23|I}OH)ʯokʿW>'?(,oikGjggY#'ǔRp ) JO rA<<$IW}WSNّ`Jf@'~hO͙ZKѵE|!lx|KzY%z{S![-<8ܛN]~ XO&gȞ/P꧹ʰ>krOc\Y*kوn@u>9޹c?cO"k[_[ hco7Cͱff1!P";,(4cK@8)x;!m>3ɧm7P]3|K!gMzK^GSHKX|m|r7k/5z>Y3 Bq@{O(rwGajp? [\E}g\kg4MD<kE&*i FoUF)}| Yox7N>W_yv+jPf)z^ق=~;ciDet)<@c3pg!VSƓvw'k<%#e[ɗlTY'3w^c/|p?S|rvgO?|cs;!>z%||̧|{n 3ۮZJh5n?G{AlOki>h<ւi>!򍿾 ٭(?#c|Wʗl//{7G^wl&k/bB񍐿,3Q Gz634>|b ⮪J>nbXY6l5𩗯plq{6 | ,_ΰ}mK ā0T"|ަ,4~z{710OqJ}0|c}gh)ۥtW,#3K> ,zW!u'//uߦgE]qTdo%F<'H]Bјy}'[⸃&.+)_9J;#w\,ߙ^vb'.,\hޛLFQv剆^Uz܍ E /j?F%?0{=b~K >Th:;C>6~}꿲H]?OO7 Ѝi(H Kk`K&j4%gbgpj$9< 6/(_W*_;x-a'AAr(l)7sSJ{KS>S?,6 azݵrE=y9u"s.LMsS?rdE|*϶Nꢟ| Ї>tOQxlE^x#Ɠ֠Yg1/+dOaS>SϿ|pJHI 0_8^psor,ċFa| ?>^~]S5c ~<=ɤ""tI|ϳ+ql&OD ƒMnrd*On=7A'H]T0רSwsk5ⓚ)&ޓGf6 ~C;?nLrѦ^? ьHu>7tr{Rr+u:)+Ϩ~a4q{@3Y˩zyoDg$y| 9lye<$Ar$i^xF_,@8$;/mn"&?~w&u5)}+˟.PG\"lAN;ЗM/ɱ#T<\t koʓw[ ybwKdy3OЇ~w75|7򓢞 _O KEׯz< c(_yJҞŇ绾UX wՋoȟï?SK?r `]qWzdKLAO~:gtJ ;aE,=HCD>L(i[噯_N]ISM=^zE~˳%r$Zl?N$k[V]tQR \̹> 'hӍq& W4DI=yϧ?w23Vwe2G$|56ӱzZ3?/mf|U7i]z"=F[ `?76/4_xoiOMdp_*o!BzI›l\4/pv`)@3)q|OAy^nwd(e̬_D幮~Y@4+ )IMs#?IFJ _7N-wK/T]UA4~$On~k^ɟ|_w[׼&f p;WrԿ NJҐZT^z< Ο碜QWu(Ϥωm]Gd?~jdO]s ˡ7EB>g^%5) ?18q6<< 'O3<7hⳀ~SD*yqZߐ/yޢLe̛<5bI֯nnFKc0r=8O0k!vh:MO\ިNbUz$ЯZ~/yFMN&:I+3[y/,Q9وR)rK٧QgƟjyF~[5!s=$>C=l{sqEeUʿ&e?ZIMǟϪ)Q蓤:~XGѤv\ 23Ö ɵ#Cn&4$}^BVpxB hrU;*KɓӯlJ l_r"e%_/+?;?KrS=ğ#4T˓[4\z B2>~%ٳ˶!۞~WW7Z2W'03j(ZopiZ(hZ T>TEsKlz!иČKjT<ǣLȓ Ť=ӯ>o<կ6AAA]y=I=A{?I[מs+rxc,7?Uq\~ vNiYϥ49?~%[BSe*a!֐g]; SM+NK\)qEQWy/t$| Sf-/._7ɔgljZsEyh_/ϑ Mf,n6oiizJs=C{&-gu{5l/s3ߞq!,lq=<.폶e|xq jɽkDlm}o&k*.*:P gxׯ[,߅KoF8LSy㠈~$/‘[_+߾麐l['Ӳ&+(av߫gqm&7;m?f=zО5洊?*׻u=JjQk':(QcEKKY'Y p$OF__㮟+ʓIfR,O>%F5e_)gLwzYu&`TYJgGkV?p $N֯x 5g p|]?Qx`#.B>Qhf8]S0 2xFCɞh(}#^Měݫ\Cc\ӳ.<yVN%lկ^W~5pgY73 l?vQn^6=PQ-U<~{g?%˫-|\8EƻqjA' c-N1#d"ޮü^x  C'O3rn˳ON3U|y Ya?:o|?M4S+F@@h4y{ON❁ F&0NK5YO]Ʀߪ,_!(S=KY>$l_dI<. hVgx@,-nq=]=hkqe{ƈf~HZ0i?Y[緎+ֻR hڌi7Nk?LT#>Ogߖ?eFj/ %!8'U+R5\i߰]Y]J_wG5krHYRD RU f9 =Cy8 ~IadU~h^^)W~S|c|~?'[>o?Z:EE0TQmW o'j?EBkvu(W #!p$1)ϙfS!ٕ~&9Lү/J% Ձ}GK'a?zeLN6(ˬ4*ϡ<5M;, ?c2l͟Eސ"ף=ԍOtEU02UA~mCԬVv=>!!u~sdȫWEhI6&6VĬ'^N.#$hv)lkE-r8T cHy $ TPS'dz53U" V)ӱ<9>x CZVgEyZ^+l~QKy]OWOT{g,1y}m;#?; ~$/ȟĵ"gcBWs/~ϳO7rgK:~q!k؎5 m]w4wXM#_FQyZ[_*y&|Y_ȋmr_O<6ȍ7zmF5hE쁩QWD޿ DlEAV@U{nos}lϙm+Ϲ ?y`~FşćSS(~}<~jRQKY?3kҁaE83\ {I)%rFҘ?;C)%ri/>HkwPү jkw;Я'OVoW'cN<5c~Wqya?k3/%g@{}'+cSzQ|u!\}~Ȍ$+|PJ2?>w7ϕz0$%~Jax?\k5y5<^qsvt0eÍ^#3ьp&OamMtsf<2O}YAS7aWl g]*%K-4GArFxoo<ǃy ZMqyS*i_3?hOԯ.EӤ~!9&Y3TEOH. ?\ #v[j؎ӯU'7mU/ނYDdoDHg~ %__}+oS/U幧|?W^RGףU[ڃ<(ͷ#{v5׋ ?įTe LuJ`=܏tʟx[ܗ-xxN}wӃLp&΍/QlwAYU3`_Xo?  kiI7*OZI/Oi⫨<7NE51?T\/Sٙ׋f/Rq. m#sIZ?] xK.>$RBdN̅(\[K<ӛU6.E)\FJ8$w*ESS6{~k؊%Ε 3hٞe~؞=+gc6vER_pmXHKx;hُYO5#&1OKkmB# '_d8,Lyxߝ8\ޞloƣT<[^%ΑE,_/ʎhiS@'s[)-OsgHCE{ adIsd{hSjKs~hlcz?7_4ÿR ~9h\Rp7^䜱)>l)xʙ%~B psA&rKo)ʚTz9t{Y4%WX;ڬzИr?WU]kzXn.?ߴZoQuD&K{K?y׍-`ctŽs)K){_=ڮwG J2hn!]9ŃZ=fx <^<W bylBrۊzoqTT:qTlqrt%P 3Bv/DkgG#Oy6wXtLOR}ȳzd7hoWg =s!H⇱:?Tִ ކZ X6-_P߄Y)\q_(Ě P&f7cndՊ2a)L?Е~Pɓk'W ypF9o<)ڜ4쳙3:C sK؛=| {haRu{t|8,t6ePJN~PT9&̩ᬗɽkE\HH{<9YjknanXI3 y7ROO~S~4_o_;3r&O_%vY?9y̟stUb!v[;1._#m+>$7~ I|.6rh?.1_g!9jlx44aօ̘7rñ^(s_v/S͉E@EWnl|yLJZB}J3ISK<5id<5ދ}c]4$=~SNE֯4~؞珹U|؉?o+7ǯs~m>?CIGLQڼHy2$#/xp3] lj3QԔCBȑc:Ë}ʳ}幎Sg(b O9$mCc{.^q-[J_?R&;\LrD3\Q9654 4lQ)-}L)_AH_<%<5e]_rߨ?+2DyjĬgn]1ɘ_ST䇘Y:"2?x˓J3&$%[V= >_{XSӍ=3l?1\k{pA=6?D4~[/G3Ook?f%K [d|ùs4Er渕Wv x4UTᴕ"03Elxr4%;[W#O~l y۳gK>< ܮ}w&VO=ӰmzZO8?lݞo[WwR.߭;"EC:ڡFqr.Gp0 xR^~VP4)gu_1˿w ,h0W)y\F $4U 0ֺ)<*e?Vߝbf/~ jX]׵O=(%\տ֣N 1蜽=,~y+ %˺_ݯU hz?{ QlIͼ|_&C-W2MJ$;eoEJ]~5W|ԯgy#Jᯱ>jJnTQxo`7kXԞm*3#ǤA~)"WCx'oYm(f% S'R E Bߘ RV)OsCԶ/)*|zg<3"_ٕlT]g\וL>8z][=-SyT퍭+I|x~i#9'a0roPH?cI0Eᚔ>Fd;ՔUx,ujCw]z~B ?I~8~5_gC~ɧ>Es8ug9;ȓÓZQPʓuۓ,G+If9 Fe~ϔ}wFr:_姜=Lue ?P¦a\{YϧM_6_%E¡E)QBph+le'Ð$._?g4'sB~C+,_WMѬh>~3sȶq,+>>bh<=Zy6NQ{Kۃa"0!M3iwϊ|>4_H.?#*\zS@u ;gFCd!P4l)w|Z8IQBwd~_T9`~A%_AƤjdky.[_Y_|ia+UQ ACQRcmӳ$y.Fyڿ{~~m/~ͽv[UGc,?T눜f5#&eQ&,Y":8:9G^nF%"8’OXcn(OϡWy ϹC?Egn%ɳ1VUx=(?y\͞Gz 菮?o~KL~'GW;vNהKsDO dI4Ugv/9{|%~%/ۿ׌Yg:n2cD5*˦dKOs4x0 ! E77L*I<"*)HQBɓ*_C3_OdyO4o')v4yKy*}*L$yJ|U=KW୤~ ڬ_!?LT7߸(aoQ4?fΝ;Z'Oٓf<\Q"p|Avd#g <* N뷔}`烮ϟ;-]gU*_~w:T39[qt;\'&6 NrHN5bxxmF婱?F5+ŀ,O -7SG_K4Ã} y6ϹƲg`QYwTg ?,l=A>\+??>Ar_L 4Rm}oORK'y x49fGݲ?/'UA{yr miN8Eg֣3_e+C~; ߩn o5on -h2 L#,M)ԖG9# 9a&lh_9&OjV{KUyfAsC3Ze=:C>~9au{Ww87TKkB$4KWïޯ?}  oܜow<Nf<<˹7Unp+9ziXis3G_b4GD+~]l;__l\ $~åsQ LIg'򴭏I6*ȟ)/YCz|lrz?lŞt{vzeҞw쀆5VWO'KOOc80Dhb ! p5y0օJ=x:IA.DR@T^kg zq~$Og/Q,s.vy"|^>g&WyX:*n˓ÓZ{_*Cx=[߱ u}f:->iw "*ѷTVȑ3Ui 9r3Ly*΂䙏 _<֣=tE˝ÞsUax쀿+ڿ~ŸE"W' z&jW4't2C#$8DV { E,% ~ 7\ V; ͔DЯ,O+j*.O~GKKV)^wn"pF]60vrxK>a ڙ eH*̞Jՠ_!ߤm|}~.C[G(6Rُt iwOLyG m]q,o= ~J{_x=8=lִMwZmbCn?>?E/+bRsd:D8pL#jLjx4xZqErMbNX֯_OqU<3_ǤQCZ_By/ɳoyjt}R.qC룰a'/=Co\#"\4qKzV.n?5=nH޿y,,/pRxlekO9JTntMxlbē$Ox1+< +o+Frt\TNWHHyﰫM&4__?N''͝i2`yG!ZQ?Tsa~О ~lC;ís9Oo۟z)n0LAN!cTŨx½&$<.P sC\ɳ~49K ?yFZ|NɂLC{i~۸?ĥtw/x`sjXԘϓwşiE\_߻]O+mKF|e75~.Yw9lw;L>ć^G/=`,|Eٳx{>?_.?yl25#Sa&˲k5g-`/Qy/&G{xOp ?<E噊gJ4%1*A^UJrt{KKA>IӹR|l$n!Ժ<mm3ҖR#?kWAjmAЅЦR|_^a_9y7[%T-+Лuw?fŇ(  B^'ZZ{АY/efQ$YQ<тcѯFc&A傑$y& .)9g!b*gO؊'ɳ=qOjo%E[1joN+'dOlFׯ#G0_^s,rڊXr'`gYAVoY!z!$hXApKGjO81R5WgބSO4)Ws ѯMup_ MK(OSЩeoZyyj Lyr%b??֣x_`S%?~x=m%t+E2|aȇy_g&kuk}]Uxc’ύx!a6G&M!~a*v;|yԯj4<מ,&=yVUMguyF=E}93,*O=rQrUJL~|^KmsCTO4i`Gau(/kZ,BP'Rr @;B%HoaN( N.ӕ-qjY_/Q%Ci~C3U\L&7]#O_8/EIhsèNY>3Y?ey*3i}a=6)؃+_|hο¢N:Hg㫵Htɾ: ~w Cޑqu+&@\{ IHJ •Sld )ގI(W/N\[)NѸB˅2W/OY<5<$o4/p{Vg)b~YoИ6j\ke~?jϣF{Y_d*ZsRS~گG?j_-Qd U&ttKAz<9Ђ?zL=d%Op?Gp>'ϊt%߃w'9cYA#kWȹ06 O<$Tyx&UO>w?o=~_xW;yzի^|z/~+yM~r";eFlu|-YU?9eK3lJ]!M#?_yw&8EccM}Rw8wܘi>@n>*S}!Bܿ<7;lz~??f֯cQQ׺ֵ6jϩ=7ćF/7*M㥾wVrCNNSmcTQn9"Ssi-DOp)7[y+_ʂLx3y饗 w]s^$~!̛&5uOِ}u/-nq袋vmɗgt:.u|^p}9/_Y$y%z׻//6{8'am݃xo9uzu?ao?q=׸F~I 39~]?(?׽uk_r)΄ɒ$Zy<쳸=YV^ߛC΃B׿7MsOB=yK^|u{NxZTIS=ow>~֊?W}uʌq|; {Ks{ OX"v&~|7CWG-x&$J'O["4<9H.sR7=kkd<<(}p;я~K_RDZzyb?3?/|aXR|#LS_l|x{yÐ$Os9)Py6H>/^!eO7sFGӶ>&٧ϟmףѺ]q[пW؃SC΃R\1y xIT?J-󹌧)zP5`}$K~gYdeʦqK{(H=!C?N=bl*!g16_Hf'ga ~?BOǪCgnՍW < ׌0B8r|FtFgH<1ٜr'p &|P+ϺO'_?)OY$Ʒ"O< C!`KW/bڀ=X?y.9d>/N1r ܥD<#g[Y&󧁯)CArD"TհA鶬ek6g \~%l+♣w/Rqt)r$O lJ$~bMJd<: GH5+7.r깆~q[[V7ʹ]x(o jABFVQIgx`gJITI x3| Sbs}? j任$P0=?3?_bS[d96IBa#|/_HXj}T8zdgGՇ=<;m uzMiirܿ?kR[_$r޲[VF#yϱǻ|,"JI3>+tJKQՇ=OadjK(t2Ot9$`oM?#c/{7op[|_?;~<$鷟 6n xG8_zx~~ m2?#>Bzå{nڳJYMgQsΔ료J\h3aIx8ji)\}uiom}G|Hm<[':6I?7ņxt"|0-R/OCy:\^z>3#0I-W`cyC?>%̥E&ZJ3#ADW~l1$d3O ynE_\On{_[Ua8wu;tVYW=q{WC'2=p< س?vqa]i&x/G"\ሞT9{]+:1^>j aO>T!7Bş. 5p+]$CrI'~ y"ٟٟ9oK~;=ks\:'?\>>WUqk&7h뿢cB磤i /1{{-j k]Z7эq{ehNs?sH$)?>w?ED*ş[L!')D{-+!*OR_ Fxd`+BƟd[ACq{88:C7(~9_ٿl)\~K)=Ȯn`^r+Ɛ%+)IG/OPdhGnu%DdR~"AW?++q)q9!Uh_/x {&}]Wd2Gs:/ŗ|ɗʯ~&rSJGsOyhSS;TG=_W7X= ,\鴬GC|=:N1c { nN)P*y嗗⇿˿js`U9P͞E*]? mCG o/4koj \zМ?&ϫ])BQ7vlpe%?\\݆G~eܒo=Sj_sߓV8`K9M3WϜ+|BHǥ⍜rFCfז$&9\憫G?G#oGS'_DzlQ5 E~o+%lw󝱻J磤VH405ӝQd D $8oq[ַ_>yKCQ9{@MC IX6,c>cZ|pPO}Q ׾6Y6m>A+7`U-7Bm>P:ǿ{`+/y^w$w-C0 ! 􉆂_j?؍'P0Hs^_yzn8¦oW8_E f8ej<'hf79=>?|Z\B~'V=q@fg#OOE8H%@(Ix0` 0CYSgȞ _EHp'<??g?J@RmO ,gb%\NϤKbeZHSGO4OHGT'IoRᶷRRJ{ Ӡ_@ vZU\)T N>R_Ɯ8 HRyOO6l3fA]_褕A8~pc]=yO F zD(rx{wStLV9//"őOw<Pр9ǹycL"2%[=NU߈zpPЇ>0*j?/ %}ɟ_6eҐؽ:֤8ߞw4a.?~DQ?2W|mH~ò<4-0A#P?~We/C=G"?|5÷;[tITS'?0䪐Nei5AR%iy:P/N Gs饗ߎx`Eb|skk"AuɟUG\:)T byaQpzp 9b7N,jx"V m%F_!KJ4u-C Ag4*5BdJ4,?C[^v쫿 !(}B&7m@YDH֕TqEIIIu a.~)7-7qG"bT$_V2ŭGH~;vYggQ@4MJDMrTG_=!gzD` ߆à ;|g}+&szBm='0?(@3VFƎ;~Y|Hޝ]!=OFY2X %aa~!y;+mrBد9F?row;UM_<'{rYroXN\sKܫ3yx/G"ۍ'ɓ#4ݕ/҄GùJe+ a=0ׯ2ےB㞗ݵ\/| _l} P ,Ū\iacr)۶˂ ) lM7AA@K-㕸 8x> 2G#Sn`cu_ufށDlWJQԓ`-nj2es "j_Mj)kK{@,_xP+%,hҒ-LFԜ#GhrU D!mςg%}t1I=pJOvKsoL;*@$̓'Ti+zGF_koi7PuXO}S'ɇJvBkʗ~FzqJV@Q'H g"{rGƟ9jfΆ_ޟz~gSRx}nb\',wXT+~3;zkAOVk _CBYq HN#p# OPJi_\Չэ>I1BC֍!L@-CN/+SMimGOk<*o3q;,{Ɩz4'8G^qaQbbOSy [;-xIf$!Z0F_Iɒ`D PܛJfT3~M9$^ɞDKũ_)UW2|۷}t?`UEƒG@x)9E(Ꙇ~ PG3麟:,o1p! m= 2) O9oF R)T~GĆP 3ޚuȖ!0ف1$~w1cwR p$VA<3--A__BX(P!F )߰"aPv:8-JFˊ0T XNQ`\`ZaD&H4c 3^6N|8!n5E!~A'4U: N_T8d4 !"Hl ._<$YSh7_d*3RAg~Pggɸ(v~ p/w]mDMm=||OtiFFc)ʉ[pXDF=hw CǠ%%V#Uh2{?گڂԕeKg Dxe]fO&? = >c?a v9+ۃ恜 cS$Z`gw\*jƒG^uߢJSI.AMȝaf&x\kȏHt5y'>G={UxXNvpa 4U4D=n䂊ggwh4轢j?5d=E~Yހ._Brdo'7dKye—dw>61%@J<<5Myί0Uispz=:WcA:!n:EgRPMI2ZI(EjNjчկ(jmJm5&C>dow)!#H>0e~kl 8x*Ҽq8Dcy{IjaW n}Sr嗻5-nq&ZD2^'PGs?JбK^|M4 [ӇwJyj(-rƒG"$!h|;G9CW`# =/ݡMo ޻oL9>ӟ ;_׺ֵ恑 C'fkU,C.Ok`+W,YQr x!oe<Ѧ$(A)<ț|C;)"Yn ɬOOBtj!ѓ\ǽ=S."Ҥ=Kg'i C0_+c4I9Jt,D!7Q ^Qw$W?~0ѿQ :2.iCj" !tŸ ,44؀`8A۶`7 qUE/zEs[ Y'X. PˬR,{h8~k_lqBNf9@h> ?A!fh̀$q_ؓ@-6W>G )/s&x=DP`B|rh 7TqdJ_~7@O=~0Bi.?#&zCsD7>~l?p`,L >V>4c0!ޫ?gYjL~?)0/>90_nIӐp0oY0G7N=a3?,kJ¢tהt{,`L~!py XZ@TMY< !ɒQVI'Q0F L~o{Ⰸ;%R r8&Bld4=&> /5rY 2šum)\fIRu{ooR8CaG+DKFrg7 C!L_;)O~Br.m<*|0fl/fI`KilEF-:jzDy"]V%|X!Ֆn);bTqDĻp6] .,KE8y"X`DU <#eDT@ِW2Hklw=!)Ӗea(%6'p{fK$}d 8=,Q,.spW>/rL_O4Xl][AL( 0 (*1`P=!\V A H|ɗ|y}xR/ sGwHxh|71Noɼ:{P42)3  ;OOD}qv߱fp gr__oQSA Cs A,|(!oe{goċKQ'8FWPL#6Ǔȡ$ML7츼ď=H>"L$}Ҕ6v/~ȿ~S`ߵįܟ?iptG̀2%]4bէ?OxF3;ZZrx4t%'crk<~=ybC/oDq\Itqd*p#@8W|GtWŶ a.nNMh䙄 8q m{WxIx_ 4 "3!i7+!5CQôP 5>#7̩2(!`R 4p V4N?Q}h0'w8>MО9CxWiD4G~l0?L3q;Q>>WD*x tEX\sC Zt኶A$yvAVst4DuT hyI z!Si]mT~\B z?hQ[ITj¿rWxp7Ջ$V%IxHM:p@OQ檿=hZY,8CZ\ɻk7h@WF(5O_*O/1(?.[멏Z+nbPO'"O`PԀ>1&j?6o8~pGܪ}tsT_좑It\;|m-A>DDS0y+$5nk4auΜq&KL)`'6,Qbt52*GX'yb;'vB"(~ͽy^t}7%]hV2wg{WUǦ]B}{dȵas8nj[QƅF!~CYs3a*:Lj܈}~FQql LAx(I7>bM0"(W;4Ky,3?J4n*T,~EG Gፋɟ47H][CIY xOcpf^hG#k@T Jy6/(L/I*t!0 7:O6 A/pF^jaQLnfQpQ`Ep7W|y΅0 w:S U8R%}CN$[#r$:ʆu%DXjRw BYHY'o9wxdI(e3I|л6f{Ȍ?Q}W _0/D![>$G5!gp%]zaE`ccɊ3E"HKP˵@IRHsVBD CA2%P_P˒,X;;9}O>ݻ}>ݟӧ>; eۻ鳸䅎>3R}=%\`%U1@13 g}:HRh2-`ɧ&Nv M<> $/4|s;?MwOY[!9>Ѐ =ҷqEkG|i1OΔ'QU2ah5 89xwC::j@|`GD3# XPIzN$;MGyӿCID@CR'X:peA"o85J ѐESȑ#OjOĿr&tg<к?Qg^lw4mGg]dсr0+=ȕ7"\!y}G~ aR4`tڒQz'B=0 V7.ЦqLmU$ F.l&d"C b( A*)(mщGOJ ױWLu8EahOnn$ҚBN$ o4|!CoTد$z8Dl@V3Hv3Ƀ bYhrE\'!ot>6 ҏ\d|݆}1W~bOc I (.hM/D:Ǟ\c >ZyP=DKBG%CʡyGi.c!_S/Mߴ+_࿜`"be3N1gJWg⢓9K_Vxr,)rz{Lܭ?Sq %Ñ| v\ ah[H>jvMozu}C\H\d-/ aN„]Ln6  8vЀ?*l&Ӟ[&zƂr^Ⴌ8 D.CӣJd7Ff[ႭE^caz я~4Wȁ梢 R_f&/Ӫ2|csaF诡o</Y I4y>~FqG)q(BVFƺ YLÃQ^3U_y S]/t{")'hVM`h=^^IPs^= 'cV!Pj Zh^룫%F㟒3>Ѐ<MC+榥'+D%g~8ڬ.*1a0 AYLAvz^jЃ '߄CMfK, )mʐ_k)䎮/c3fcp`A^ ܋֡s %/yɸa#&n_ ԅ_P/|Gľ7PpRO\?M?F|aԶnHτ@0lQ )ø 7>$|yӥ$!j > ʃ>0 WSE6DEJGh@\>4o{2MGMqkfRat0WQ$ڐ / _R:s.!߁k{!.O'FxJg 3#v2#+pEc.B?]>p8aG%zE'DVB{ðo E7IwO_>O#smI>ЀC/s(>`Z!.}МR)JOO?*ꉫ]jZ@;zl\?>JHB(B CkAe{7_|syha``Iz{+_@Z"2#I'ӟ7jU%O]׌~~0.a!pT /9?Wm}~,.2 pe:C L!=ax/ҳ13n `|HC"/LB,y{Q]_e:g'&BQ{߁o{ےݻLe!_Dw.i#wxn 4 _mo{;߹ N.S [J7Sv]kPf`뎖{~x*j$ͮ_ {*'DXEU 4 2@cq t|Nސ| ЧG`_^PX ?NI(m\Xf 5|$`,2wjDI*). H+x 8LH>9kK A?د,3헕i_LOOfp\E#lmptxL/W5 3DᐋIFdpDS ?ezHW̒JLO4,(-S&\ W@'fdWzSrk^xZ`C3̋җY.ԠE8/f|HΌo1ִg;HyVϕ*їx[^|<,aY/'d߼ԥXO8@ؤ}QPc_ wgB7[G y.Rjpnȗjə?DE/zf7|׿_jnĪPGY)DCr6%/C>5.UowJ4Oe\08ey^" \<)aoU\n(ۢC$ؖPi26G4^UkZ~r_<ΩvsC0$կ~P_D?W64ӗX<0KHp!b'>!yX6"Gvs ;c0#JypRs4 es -0}{OǔxcOn(Cڱ|_M~.3$'K 20V_c@C=cщs8WA,n(L꩞UٖC+׾_җ*8&~ԣ5gp@0L}Yfhts4 #2OOTA1Qi\kZn63o 4,r*Räk[*Tb< $/ܝn$~ z،J^MY_&(1țft́c6!a$?5]G<)Z̠/M.LzѤf Df28*͹1@=h'I~)D.SdtTʧ;rnfiQPQ=[yC}7MXye!cz)sI5=:rHg !sHfN}٣ J{aw؈(J׾xeﱹ{G/%DpzԢ՗w둲z/+,p 4_?GJYe/?r1U:Tv"X( 9KU ;UyW^v-U)q%|r֗$P=q;B{Wc9~rH_*:׹L`Sg 2y/ q 4D7E{ Q4gALOWtW?oP$c#w+_J(!4e@˷æZ!{#BcR{4~M*% x@Cu׿u\bnOByg>sH$\ԮLzgLgrZAiH!y^]q? d7D$M>4[$#\l*ӣa*ftI>OņV?cӆ"dO+s|ܔgxBS=%=wTаcZV8lK'v%}TõQvkʡf˝\k#o}_4~C$3E}5ץ.u!rRHV~c+vE烨/Oxe(2;! '8y˹ 9鑍K2pv?;@|I0Mi دϥJ %` 2YÅ%F!oDžd=[@a2$s2O4XZAI2G3eFۣR4ymʔ??zFb/>jMSv@qB;J,W9G=$7Gu4zB50.6##Ysȓ~*ח> ?~FdY5CCMoz/$& .C_ܿ Ӊ+u^/17tUt,|P"ځ3+ {T( ɊʋLlm??'(% ]pFy@/JELGO{t;(k%G@r '%cwQve~(⇤t4o!j0{T:ݠt1zgLN>RADA ~Z9c%67J3t-Goߥ_v\`Z8\Z4'34%=~[ $s6Ϝm$YI+=n w90Hb4k$&vIEۜm/VO#3ƹѠXb 4h8:? Aѕ~ .̮O$+(p?TLfn;hMp3dZ*I$`7t_."vq Ed˷i/r[ '{&{4 [Չx'U 4SOTMR|4=`^EHAV<Cu RI B[~>t>N{x0|<p/<(=-J`'?p]{ZHb BfQ<Ǩ`rI_ E $M7rZ|%d7S5\#kfȯk&hBx&NGEGON?i}q{`n = N+z}!Kh oUEO\bK"ߚtE.GfFVS-=')j{f'vnڵ>/-ώ#<32_Ȉ_BK~ xe 4HJ2*< 2oߓ%ӎ+\Qviב>%9FSǑMoG46N-.yP9Q{sF峈j}\/ /R2GA^?C۪%țLʹkc9qWJ{jLWU(wGzk"dD?l)vT9GtbM#Qұ&ϊD|r$3s}xx~C2|/[Py(aef!^TNyJїoi/i<)?R(%Ǿ[SFj8gg^wG.:"@e<׏uB òIi{2iJ?H4@s4Qvq+W^ nv3ʃlO5wdyCQ[[y{䯣zbl؉1Ç!ﴊ"v}苬iV=S՟/%>!(y׻5 ze&E$ DWю=>=$nnwC.9GyFx ׿MF! =])_+8x~jޟ:4?Ow#oZ,ׁܓoOsVBzBTr&'Б_hgΡqAdӨоϜ%o)=o(/,OlSpJNT_D-6CsżS) <=-"S8ż1iMB쮓 5mQ}:p>ttk\PS`vص$y0h8SH~ɾ'Sd5$:0|^S7q_= N?SH=o9 @T=|xOMVUr6Q#B̈5S ^?,]>L_!:dȃdo?Swk]Z+3p u?־z^hRa3,VP߄z<G?`Y ^a))4Y&Id,'O˃?׼58.j#9`\# B[)! o1&fw~?jO5=_qMo("  ь;~!k;BPfVt^+  C0)cB"`'?F"_]JWBK_xbB< 8ZC|JwK=%Tݏ)Ϙ {\x#)G4CGX :Vi_% Gja jF5p9uz7[u]je \_Ó9}-!?~Z׷x %;EB&_hoϯ}kRj9}\6̡nooepk0o`sP>5ܶJ=y/TGb$!?!lw0R?儼Pk=qc!YB›R!\A|}h^Þ%+BhXX*>MD! /r}bx5kj7軧[s2CyS Eۋ^|CS(O)W?O?oW~dLr;er/:2AsƁBZS Ll_<ǏWͬd:L[_(P56^:r}<\y}/[+pk⧩,g=4J?nZ Hiz̑CcgSV=y13ᑵvV4b' Q_NIu8zo}[ԅk}CdAg2 =ū_c]i^eϐ )}p7Ňsi0ݙ|fW _wP>'{%h9ͼx! ?YId upO!=Ezp_<H Mm1>f%- !}AH_?9VחُD$U/?\#InW=ne߁>U_<>M5G/ CMH3xCe{$?qā3؀%˟GD#useM#(MR_[X_R.nF^w)@%/qi:dCwx0@P KV~p܍Pȴ׼&7A=E"T'W%K^؍w i!'%~> IOzRX̝YQe/{Y-oLA ^]i8͎`Ѻ M\CNgvGSVW > ߂zhz,&c<-I is 1j#H??CB=mO𯗺ԥ|_4E 2Ko0j@(?GBgWs7O ~Oa8̚ {lxɵFmG"س9=^9^ HSr}l:Hšuk\vYL}q%5~Y5crDe?ed >U?!Mc#(Ip19{c>/\Ca.{%'*Y0^հFA]"ȅ.tMG @FQaPS!BNNp'F~yyE8yR@~6+Gjd>}J0N# @iyͱbПfrVD-4 O//{Nl>9!̈́aB!k pCT0@蘱"rɁdO1l~i?1򕯼us2"_};譑wO 8Sːq0-?r1؁#|~b׿^i{P>vB8;ڣ* ~qSeT'Hӑ%h'& }LGXGS:)Wy 񖋣 x 8ED&Bbx u>d47v& }[QjGӋl<4? :Ʉ'~ H)!6kп_oV3Eoc|UПNHOO /+{Nh#ek)<3&A9]3dlM&l+"$CNFu  rg̭[@+\  AhO37WFy8%v78h!=\R_d3k CQ3'{?:&/hЧ?i%?C@nq[ |lP|t+Us |,'O |#3#qS[fy@f푋p) oxCndZAq=?Z6K[M!z!chL#ȃK&C*ɿ=yZ AM}vz!'?9Q1fBys^U'kӸdxhSR#5?RZmBPb?o$mziN\VѶ\7u#ܚ6dXMez‚(eKf FHO~G8\?$+q>yӛ$Ec74(Ȳ{_ekH,QԖ{/n})vQ NbrsQc?eӆI~C2Od/tX IOyS{"˩1^]b*ǼL54IU}8$ɷӅJu<ۣN:E }_HA(&94_B(D6&yLIM]#_Yh}Z"wJy.j*V{'ӏ!iW tCʑpzdCտ>o"WUC7`%׊#(#UwU˲ 8<FH . =Ԕ Iٟm&l!BdQO}N mM$(C_a} Jv]sW9ifon_+SzL?їf%(/U{S(?Il^<(ǔo#T~'v`mx!ɧI 8wvh#"&۞r)(G2Do:/np 14#eS{^yCr) FaHQ; 6q ! ,>`N'CNpz/aJ7KV%Eȼ{[ߚhPC l)?b7)FolJш)>;&#4kw1Y x9oyM3f 6OȺ=I~}!l1 jd3M??*WrJJ8ل3U7((nbLnٶa*IO"(IVpGrIE6o& , Õns jNy??)`L98.8I_/;:Dhs9}qK+?277 ;tFJ'uMc.H?*q6&p;Pݕ|]jH 8Ⴞ>1n8 9[.(K2F~ \{{)ow/})b+Q~Zk"IMnb苁x$<=b4aeY/`Kl1)| GQ7gx׻ 淼-ς |oЇ~Xk@ =K)2IiTOc2e-6 1np M[Hw韐`j3ɭc>ǟP=D36<lm ?fz v6_dTN&~k)^|TO1iuGCx(=lVw*üiOL#P/8 |)=xrv{; 1V~&u}KKK/phS?iDw~vBx|/V)V^=%2 JWL9 e31dxnv3S'4I[4҅^W[)js;Mi#O C0H ^M mL3koC/T]) 8ǐ_V5:#3 P(ĊR<7$=ҀyzJio=9.H(4N$zp Y@rÿڠݡO^Ho=(xyy_N=Ț?Az޶GoH ] 璗4,u 5FO}*U~ou[URJ=1,ua: b pMgtQrHCW YQdsXNKj{=nv1֢DRu3C(A ֋;8zꍨьT顇Ήg#SSYΌqh5`w9vaw?D4PD* x~ǛF]B[/L; iO{ZtbvepCK~.٘-ڥ@(NQx^2ř)Wqz$!Ѐr?M@ w3-5> ƞ|-7xK?LC4t$H׽S|G"!9b~k׀Hc O ]rxJ??eSΊ2eK~s${rW18Be 09q΋\ +.Ǒ9lItfF׌f<9O|Z8R0LzF&㲼fFEgԗຌ?9Gwk)%WM\ EÃJ>%sheo?v{8ZJȊ|`$5y ]BOzғLQI޴( '^0"<= |cB (hjzAbAVgPFVUey@sM+ u&M EaH?fsi?V߄-??+ (m=6 c|61\Ho"4F<>?JoNZ?qjܿ} 2מY%^\G(57EBy)O48G%\f^F/*M20 -."cKӗR?닆կ. 2wn y'mns:x=!g$(fsܔ~`#14LAǭ& {ݞ>A8OF,㤓N±?X^W${PjV 1bLe<(بU M[kRJ% o;Fp zիJ! h7b !5%.d1 ܙE!Wo|#p$ƉؐjOMxgGC6 71=P5I ֋P֠h(G2y;&>yXVg?٨.<*tCz} >"P*?젇4N;-0ԥpwk^{'ydBb%Tzqe'6O8 _B_Vyn\*:>z S~cbL 3ro;q8rE%QsMOpW1 hg ;$شD^pOȠy{߫ܪMc!VSNYN7]}2^Atcoohя~_b1(l\qSB(|ҶQ1vYn1x6^Qދ@ַAͳpD EސD-H!Zz ⛼O߄ԋ!1 j_Fy crYH? ~P +򩧞CqWswny[vhvկ~5 @8m,fJS0VOd _.?-ߏ:Oc. Kν<ùJ2HcL[:E/}K Gy6-sh8QKh_:\(?.;mE/8"Ww]G(8" cMi-2Ex3O.Cw'V<' B~idpg'fKt,'.@(?ؿKi!38."j?7:O 1$'\mjȃ]=ޡ O~?`f6Dʝ`h{{}!~a>`,qqGf@~%fHwzs2LH1|8Ԇ?'HE ?!puߧ?T$2] A!aJ5$ p#C#HWAJ2|iI]?1^>'_=e ҕ*GUݧ>)+ 8=_-;:Wm@zwqI=RaB_QP-MۻW4Yfa[QA<:)ISo}9_y<'6__<}I}qAAת??IS)OʸN_Qr4 om?,,?ߕwæqb9~?Fяx&ʀT T>_D?炦ʸ0\Oe=>-_ a~_oBNoBgvR c2dzXz(=:PgJO8Th:M )7A5S+ю8MXuKn}fbP[_-Y%}!G䳑;@>塶}#^DL68|򓟬 _>bO3ZOg2؋f6xcq o~5%PJ;?2Vz׻5)A3?y4q{92.F76 9=rW?YQ;W8f# y/y( # M 8= 2DIz= G3;#q}z}uZL ˍi W槰h7\J ?K?䳑OjaEq†qQGsO{e#y6/ڂ"?Bs*㧸޿|oUm9\ ( t*'R/o xyeSi 3栿$~v3+mdv y ˥\~ Be{. 0'?u֗i}$ww^}Ғ4#%Kkb?]~N tݪ_ix@wyTć4y|_͍oQ<.ϲoY|+k_Soz7 kxvnƟ[?j3{\EC8 iP.Qia7rүl3Qmez' 4a|&~1ZuT0FY_Gƛ+܍d^ߩgטn~g?egk9?ǯ{ ?]qTf4 qABF]j}\dk)P,>d/Ly^;rG}~eFYQQG_\&]@g:h^(3 VhrQ.3* o6TF@Oe"yrSDRF oq~*׷S/=})Og'}9.M>Gj}cA] T^ =)O'/qK\^}o-׭}#+>W?V,jr)Q }{ޣy5y=ƞvI\*LET&{$C2MIrpLX ֐eR I&*"^dvBKՐ֗gFEE&jpK p ['YON>1wϲnaCB;_W3nw7MI'4<ԯ1S=u6_9'o]k|X? cU?o~3}'kWoiOmtWgOA*_85uL d( 7WkŤ$N26OPCD[_%=)vNX_,On}YBM\9g}\E'MG#̎?+槨E mKO-__u  5<Uo$H~׻7}S_Hg8ΖW~wT0v JfO"V~y(w-Ŕtꩧ}s'wq&?AZ׺Yzֲk"gTgql?s?mJN L2FCLr$s>NK\C55Խ%~}eݭJ~jv;})O;~j!X_k~k_׹u.zы/I.xh!O|cfp:_W,g9`n .ϫG?Z=~g.HP~E p$r"L zֳt3m+/y?^X*_jdnѣb=2%\K"?Q-_q&~ gK}!R$n4YJsarwӿ/xs㒮3<9Q?ON;Lj)|[Ҵ=./>֢_KT?N%4?{?s"uobe/KC'tcB(w·mr@O}ʯnUK~v[~cH—t|: n<*J2\$Ǻ?r?eizplWw*o߱Қ~szK?MІ f7\HWo_]'~mzл׽(C]qK.UW$LmВ 'د?s~gmƣ^}W闎 +^hs9~dq{F~ i|FrZz8]"yc;69j_ώ?MK4:Leq XSv\8i.џOKe3E7,/XW _j}/Eg ۈ} c,m jyP⃰Ihv|[kF'.A|;\mNCr=_M/b_ffDGFsrGsz/s}`}+sMAz/`e򓫊4)vtq1+=Cy 3yY3G/| {?gJ%wgGyڕt^Î'wxKTDNpi$5nUzgzQ>TY_q_%h!kfF":RRKeNgh}}{'FG/ooNvo.{QOWmd}l@~~@<zg9Yr򒗼$ k3گc z(.WDfS=9`'*[_k'_p}8d~*Oї!)z?O.ƺ黏zȊ`$k׿/} Lc~N; >_/\ugkɃVF$?S5g B}W Oh_ޙ_|G|?198&<TGրQm%4ۯc=k-?#,<8.^٣C {?a9Wr乯`/*[D9sQMk} *f1w1W_~O̿"P*_ʟńc3'χ )/x"Onw+#hsh?I~wUWOFiZ_KM􅊏.J_LR>E鶂x.$}9}9?ӏuRi.Xgj3o/}Ӽ9iZ6tl~-PBǠwN~X f_?_گéJ 6AA5яc=~>֯.aԗzeޭ³?c1?8~fҟO~}GPCUBݎBυkFDӒnə #UC=zK|~.s}eކwSAI6o}? XO${2q~Oe_q-/-O+oɃ~ ZaER{G O,ğo`vi (=vVtXGua!B)J#i'iȐ 賓Gt*l:}iagJ;%͵dδ/2+YxXLҗ~N7O),%~*]OeQ4{Bk'_2~C˕JɃ3ʃYv1ҿ_JkTLko__=Y>~گ DAnuzcvfJz驥R.U΄y\S5LIX|}j}5Sˬg2?@!m/LvN/NJRg G9}/A槼bx_6r򠉹gʃ[‡6|ӽVcBo4P?h}kdD5ѯmO,fA{Xܿo5Foq%de%u06TdjRT}[Z%=Z3)?3T}cە=,{?Jy9R aa'ϙv}\voaD3l区2ӛ*ːH&Sry,8JgaLW ]|}B֗'W(W)'? }1QӕWO__OϚYV{gnzF EL6d.}IKߵiz~~a:~+BBy1ZI>I;\Ď?%=֐^]"?m?ew1l>9moFw(ӿR_;{NY~7~~o>}ehs{H2gsA#M7/u|[˜ͱ7?b}@f}1_L&\(w>ːyEO9\}usG>y~6O=~ϡvi8 ՛Q+a'->8z''a9dIy.$z1Ejϗd}之wsӟ' g7 /Os/ݶJEt7!548:yFdꐏ#grwOK䄅@^.k}F,a]O͘4o}gїpbg8(E#J}Y|gL>}F~ZUCi]AX tykYȑ‡f,؋,Dz9K8>M?ZQo cG C-b~']@rq˔2p3KqR;Ln ^"#9~ 74c4=Qk[_*HX߾Vgt}5"ɑhF}qb{DgTΗ6^ ݂|i)c5ƷGa'Tu'ULWo?&7=<wBv=}\;$DɁi_?/_X I T(g(?_Vz4L9&:x}LwN}ml+Tϝ~n~-\ xvp|1(>ӟSc[$F>Bg2?3d9~vة;|]25Ω/]hq$ <*YP+᧩>y2ypNkOY|p3*A+o1L,~ȾhwL~mi'GVǧgL10)B=,NSk}җ}ORs,?M~\KO4kt.;yX=Əυ`^0A8ѫ˱-4oMUN4b!r z'*{pmx4E3d~j詺 oUp}ר/@_mr9)>R)X?d2h&?CrTM*6raF=kd?ϒcŊ~KO_ǚAF#2"Bx,!BKGY: D@,M'JP wɻ |*쁙~ү\E(iX a4~p|嬯31Z.2Zh~n,Z>>kO'Bqb}9h!xURaO S;y^<%pͺ_Oqj7u{ !\EFu:s\DlsbBº qz5SRC Ñ!SI״&m}]lʱU¹j+닖.W_~R,/һt2pAO-;[}Cz'ئ~a ?{ =[JC!{jSCW~]+Y|[N' '_DzvSw~ w|vk!̬Xxw?DSsxM'vc; ' mk pR!C~rpK#ȄO%=z}h%y" Qg/,o닎jM0klZJ_8~ R z 3ڌZg|*|5g)^PrxH/V|ȃ o{`g=>xGA[7'5w3ҟ“ozדR#&S ~ 1fauv:RBIiiʈ&u3n&=ʤ uV>~>tv~FU_9o?ng9jJ_aU!#-OM-!cL òi~~Ә欀9 𳼾|;΀2?sQ5~=\щtI|2*?#?5 ~Zy2!q}"ׁ{2$=Zw z=CQٖ $חlSq\_7Uyo}GȰTZ*9[(-/]_Nϑ)L\?}q?chth*~ XNHS3'|p|(a!8{R{}sGc/?|=C֟I L =rF(d8'^z/#^_:=A.>\;)ԿqGgKoY_rr/\;͎Y_q*o2?=PoRӽk$'9#TO'[Q{<;n}?ҟ?3f_qK6K[Ɋmfd~ubxi&zէpDUC6I'ws_63DrMtigo|)\OulkZyx2=] ߬IҟO"sL"*џ}?z,.^6;rxu=S|Ĺӛ1 I$&V~FWOmϖSyğ%ӣsn< 6~g5ڣǸJ,J^'_>tso")9]2ѓO\JYPPw`W?SĿ;SbPȨԔ7 ed1]#BHI9͑ ~ hݢZ:Ō27Ѭsr4t$~s/Z =Rj)g<(ea!l0<֮GW?L{z0gQe6ypQ0S2=$łiNI~X~.a}Yu}JoC~o}]sPl%h9]L~.Aߏ&~.䡍<LJ{g%>$V Gҟa͍ne4BDr3VJ4§aK( 2=9mioU8k/˶SMRѯёNWM<ӟ?ؗt>韅_g+w97bA.H/>/G|L I֙MVɈ]ȖS@ys󣋬b?Wg ➝ӯor}5ЬK_,/*q/nqN9G/rES%3tfOMiei=^)k^yzErR^<yWq]E}31jhcMIg$ϧ,k_N~ J'ѤKoBL*7&xAB 'pB3ORv#a!=)'R#_)"l0Au}U0IFOPԔ)&)i/=Sˤge̐hPf'GVs_;Z<$K![&, CyßYo`y4N}Ȁ:EЄ7"1@Cppg&$=aN'*wL#E {=9Y_ABl%/9պ__;?,,'#/ON_Tz,"*}w3g~fʃ%aYZ<$KyȥULJ-g+PqVmfߕ}\}/,%ǴZ`fB7 bvT#IG4LN_ri)z~*?͔֗fƴ,b}/msg<NJk'KÇqb9kZ?֏06PJ~ \\^x 2&L&c8QX=rfBz@)WSa`G?Mi)1?YU&w&UFBQ৬?68{teeyOx*3;)b6KgKQ}p,dy(-]M>HW3?V>de<үrfVSGcO~){i}INxf3"g]]<316 !c 6]ܺpGTt@a}'.rt}e $s9$?e26Y\Zsi}ϲcvqtk?y4l+~v"냸Ly,N]RO<g,\j {e7OTVYKGgc4.F%Qx-1X9Ȓ'cg=;n3><, lWSW|h+hu}~:f؞fI,?9} ;ǖ&~jw^~6Ÿ##&~%~7Uȃ,vf.^t_f,O,aIlѿxPJ)Lxʋ6EǺFF? ^>Êd/z|EgߟѿUO)aBǭ5rX3i *436-" _O$COpਞ9\d~%O姩Y%~6XtL|}si 0T~^]C}9 > r.`!RG|LR@UЉ*~:U WE>]?#D^Nz==bTTppѯaMX(5FЯBUӗi8S^14H2 |΅ } Oor-PŪ_땇(>h!/d 6򬥿+oLSˤ_o,}m?q,Tgt7=9﨎GnJSNbuA8zfRu'7!e}z+rַ?I!oǮ&~}kK-~ 7E3AknHp~&K՗Яdy:ʃ_s m|ȗgWD_Z[оNFAqÙU ߟf"mwꩧZ+4IrFO q_%=3:ߘGhLO#dt}gї槾kO|Ԍ3>N4=Ajl.‡ߕg/Ϳ{4蝆4'lLTH4gQ[ o@O(?Wz~&ӣg3rDLXߒ bE / ?UeMm t?"2L*_8_< үZU&g]_\c׷*?s/5'$3F>񼨾o1~nN p{t4aEїO5B/_jLvo(:^S}M\Q}c!E# b>97ES~Y.6nj__f+&3| o'Cbgp)T-tesy}sj{<~V&ksHM{! ZڻWkK-~͉WYlO)s,;!\^==5\~4*zlBfKrJ#d_J~1 $چή/K ҿg8 xwM]~sizT,wQ0` |Xסj |ӳWtTY{W8y!!*ñpy6ynk/o X5?k'z-?+IwF!xa!dąLZFLH BKqƇ2D:2ei}n}*9Z+?qCO]U_zF_BϨ|YD>y1}wakL/= yjGAyPڲ0)w6yvFkzy^F{ekFw[O |2</mG_?m^M$qiY?Lgj1h2\lR&5yZ"IIx:ӿ#:J'xk ,h!kH OJNşLOQ?v oGzys䡥==\ܿJ7~*i'hOea9RW&߻,dhn]8Y\>~g;ү!kw;7~*5 iVOQ>;':*uDXoͥ3c{30Ex#B}EJ^P4skW@]ԬoT\+|$sBrkY\>E.R[u9% ' _M s!UsaiK|(B'& <>\]ue< g_}:ͪ=?g)'g1 /q'ッs)o 8z;AN: w^,zFsy?yz8~YP?5q۱Oz}E~jWOjn;}DcK'73/ R~=Pp5=zjjg<(R:~,hUW%OJ`2>U)HV·D?c?MZZsH?9w $?Swp"cԁ99[Mh{T?i?5S0~)+nr{ k2LdzDw_1jpzJȁzVtT禝(Ϯ2ҕ&+?7޺s4gK~ΡZGݤ,~j*? ie2ԯ 'ˌq,S E4_x?Y(`dS݉T'NݿY)bJ.7(-I˜Jz F-3گo?m[=rZKi~rw;*Z~s+]6Ǟڜ+Ђ'ݧE3"Or}cf4heBА(?Gӣ,ӯ/w:j7ab}(7""r;y}W/+έTun3$s:,gW?]?i/mPyS_\sW >(Jh{A">/n+?-(Bm>gSiOGiP_{ GTjy+ ceyHyW\䡠=Z_&v-dz go=?ʧh:>)$ P o퓇 Ϛw9+/&G)6<>~γ_0"!GTbn+I"?oU⏛!fJ9K/ڐz Nl[zxXn֪$(%j@-i 3EV~i{vA?/N[/YC_?US v"OÖ/UyAKGa_KO/d(tS8haf«UP-mZ7~WR°p/GS_~f,3|F794~I_MMig(f~Hx%UAbOhO7`92#]pJߊӟQ2\ o_Ҿ+w[X/TM"}eE$:DCBw`6Ht['*(h`?Ml*)(I~Zߥ"ěO7w~.\&~FDv^'&<*.;yn);w_k2 y+o_Cފ/#cZ肤o?Oz~oe۴מ.2DGC6 >s#@]hb Td3s}5,D <HK,QE^,~:6M ?ELw!pYK+*-aQ?J}gma,{/FV@X?Muq\vM'Usf3 %myOmo_燻RbYRBN0(xHK.erq5>a4lO!#N#לʆS?/{~x-/R#J%< oȼ1=_!?ZKt\X;(moGwG>'9 xn~ DڦD,#Ix'"I88<8 Ae_7ȾV>q 6WU}񪲯9$78=|6H>xQߓϦY<?~twKIz%!/:*?<]峪>x^JcT}pd<6˫i~ׇtVvlο~jzO4UJ@}i®={͟ˆ/vzJ]ft<9o5];/kĜv< .MAK| ÎVrvɾF>Z6ɾ{˚|g~#}}>eXuCxKџ Gvbx>7?ؠUS˞N^NUrgcTxHBJ 7Ǐʯs `D'ޖobUp[%ۥ#T˄1bĔgC?|6g] ?*h.!}?~U?YKtGr- ?a@p3N;cϐs .ٱh)4_?!ۜx0ߤq.(׵"7){o7O}6wF|xSaoasG1Gg`|Ȗ߉y?#gY}]?fqY>ԷUw}tx'[kq'pKV|8>u,[^Oz~uL.'T"(J'm_ j/j_᭚d >-/4Z%IW=gl޽3rF>Ft{Gxw>WA?06J} }GN?#g~CU-|CͿxyd1')ٰB[yR/ؒ r+{Pgf, 0Bgطho_.-B~/xjz|Oc2zTFFks#;=_?V'y~~~ ?XzJ=x_%G\,-D:UҠO1s_w/RMC&-|V5dߌF<Tz}þb/7x_J?ks:?奈ׇFX_n[c!#ކ\CfRLxy3Ɗ DQy[>FNJgɶCS>> rMo_COs)BupI>ɴd hXI.,Aw6__}u>8"LЇFX_vz&>VoWcl}; CǠaGRןVZ-y6ξoW6jƒ1֯u-|NmQ}CD+F}y72O!s{F>-i8-7M&C> y{'_?6#XzfV-za>?@>xٔn|`Ӣ~W7QJSUPġWܵpK{u|WrџIxz/Qs(=O8>^?O| O\g:_5^Tr*)x &sC_tgH0ŷ(b1KV>Z{2ʾ| %s_x?1Z!^>/c|g2𹦞oI?CGUEyC?OХXƟO57s|'ooCgZKrzOJt9_K/"^O?I?'{X F>-O>!߭㸆lkԷDo>۟/z?0`鿜j|}[-"r<.² CJQX+7 P9}oɭXրs+I鰯ڻ-Mo}u>l/*xZ/+O(>v>G',!IVO8~?w7 '# ۩ 'Z'CS=,X7ΌߨVWmYp=d#F<5.kCw|ЬjuF7Opx1ڷxה 8蟝ϕ|[_}`_=r݂op1aW>=ׇDCѴE?)·p?Dns-3¯2y9?(<ݰ\;о¯WT#{nY0`='³N@}Ĩ^'|Z|yjAisvSv'$t׉[a@95z[OކC?|7.!|w?YV5q ?%OB8˝໔}&8F\-pxP< z(.|(4tOy!/s #FXO7]7Tߌͧ_xId{̧?I>[7V೟}N>R?qاr>4~HG=􊋯-şM]Ms/W/oZao\m@EoO7j0yDџY3ϊAY?_lzL兩7jwP/avrxЬ|B:oJx:^e_ %|r6>WO_|UG?\Lo+&@_՟ǟ]ᏪvӓvOP^'_Amvè7@Ԣ8xh_:2n<˫?.gH>M[?#;WVw,ևNwTwį;8ğcb!%WWiz@E=>w^ ɉ:qu{R1 Vconaw}>x'sgb|~~??\UV=H<wϏ;>['դ.]-UxnRv\ᔦqMׁPx/R%h| u/>\>՟=kfⳫ?T- NB{1}Xǟ꫕y{xK:K?.h# qT O_tꅈs2H<2vQ1AC>䭶<ȭ"W-O/94=5}M|fk>) gWrT*)O09^>K~|r }SGPHf 㫳?!9"}?WWS-? wV}v8|zY(:T\[g3m?GEȱffrc'* ~K!{~Ԏ -6}C4ݾ>ƧʪOW7%[+9?׉w~ww?zgjab~S?/_=EW}|CG'-![g_RrƝ<qwC> 7E_eOkwŧ'^3k ?|=UiG%NEws0XT>E{<~]oal5u<=BAxh*%-Q̷(z0*d(*+ _x-Jɽ?|œcB+wԢKFB'Ő]7>^/:/&> iy?| c0/As wWhQT}gׇOtNzXwNj7֓7D|g06U>h03?0#/mzŸĂG~"*c>ɋ$03",޾OZ0ixcl`/bx)"F>'Tg'엏XH;?҇`ԇף_kH}7+q/TO~_/ϳ(Ep#LT^nǬ,Y _rS.L?'oTz!/o-FjoqΔㅳ/*/|33'R#*s|ñ^q CK>FO:/?0WzcP~OTZv'=y6GlZ_t/Sa Ƅ^܈lZ1o@>"~g}Y0=7^Zd1^Q?۩S;rYt$ol&1H>U|^,ȩ!\W2_s{}(:is?>!ft~:O-۬ 0HrDCYR.c#l?xr{' FEcyV׼&&I q/!|oEee 糿 1Η_|0b3,_|'P\؟35}p{Z=o|>Zyd~zr!Oi6 Opx&P# ='sYGݻɢFqWʾQMԍ)u|'>: ^B= 2"}m&Ї4O~Ff,0޹g鯭8:gX>1ܑ{I`ġǚon6]C4?.罟eswgϳ\0 VѮ)G7ge$&i5"ʍܔU\H[^ -x8_Q D}ɮ-P3r1pbi+}/FKxyڃT;x#^,ic^iSE#蕏ze3z?tF'XC/WP;ޖM3GǏ/ ғ <ןߡ~^DzO}+uok9a9!oxO+:w ˩:<' $c '*9t:Ծ.>+ moY҉~ u7ӟ%8\?q^2/q'q?|>8goWѷ㟥~{?YdH(xIENDB`jimjag-epm-84910c6/epm.c000066400000000000000000000505041521151356300147450ustar00rootroot00000000000000/* * Main program source for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright © 1999-2020 by Michael R Sweet * Copyright © 1999-2008 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Globals... */ int CompressFiles = EPM_COMPRESS; const char *DataDir = EPM_DATADIR; int KeepFiles = 0; const char *SetupProgram = EPM_LIBDIR "/setup"; const char *SoftwareDir = EPM_SOFTWARE; const char *UninstProgram = EPM_LIBDIR "/uninst"; int Verbosity = 0; int AooMode = 0; /* * Local functions... */ static void depend(dist_t *dist); static void info(void); static void usage(void); /* * 'main()' - Read a product list and produce a distribution. */ int /* O - Exit status */ main(int argc, /* I - Number of command-line args */ char *argv[]) /* I - Command-line arguments */ { int i; /* Looping var */ int strip; /* 1 if we should strip executables */ struct utsname platform; /* UNIX name info */ char *namefmt, /* Name format to use */ *custom_name, /* User-supplied system name */ platname[255], /* Base platform name */ prodname[256], /* Product name */ listname[256], /* List file name */ directory[255], /* Name of install directory */ *temp, /* Temporary string pointer */ *setup, /* Setup GUI image */ *types; /* Setup GUI install types */ dist_t *dist; /* Software distribution */ int format; /* Distribution format */ int show_depend; /* Show dependencies */ static char *formats[] = /* Distribution format strings */ {"portable", "aix", "bsd", "deb", "inst", "rpm", "rpm", "macos", "macos", "pkg", "rpm", "rpm", "setld", "slackware", "swinstall"}; /* * Get platform information... */ get_platform(&platform); /* * Check arguments... */ if (argc < 2) { puts("epm: Too few arguments!"); usage(); } strip = 1; format = PACKAGE_PORTABLE; setup = NULL; types = NULL; namefmt = "srm"; custom_name = 0; prodname[0] = '\0'; listname[0] = '\0'; directory[0] = '\0'; show_depend = 0; for (i = 1; i < argc; i++) if (argv[i][0] == '-') { /* * Process a command-line option... */ switch (argv[i][1]) { case 'a': /* Architecture */ if (argv[i][2]) temp = argv[i] + 2; else { i++; if (i >= argc) { puts("epm: Expected architecture name."); usage(); } temp = argv[i]; } strlcpy(platform.machine, temp, sizeof(platform.machine)); break; case 'f': /* Format */ if (argv[i][2]) temp = argv[i] + 2; else { i++; if (i >= argc) { puts("epm: Expected format name."); usage(); } temp = argv[i]; } if (!strcasecmp(temp, "portable")) format = PACKAGE_PORTABLE; else if (!strcasecmp(temp, "aix")) format = PACKAGE_AIX; else if (!strcasecmp(temp, "bsd")) format = PACKAGE_BSD; else if (!strcasecmp(temp, "deb")) format = PACKAGE_DEB; else if (!strcasecmp(temp, "inst") || !strcasecmp(temp, "tardist")) format = PACKAGE_INST; else if (!strcasecmp(temp, "lsb")) format = PACKAGE_LSB; else if (!strcasecmp(temp, "lsb-signed")) format = PACKAGE_LSB_SIGNED; else if (!strcasecmp(temp, "macos") || !strcasecmp(temp, "osx")) format = PACKAGE_MACOS; else if (!strcasecmp(temp, "macos-signed") || !strcasecmp(temp, "osx-signed")) format = PACKAGE_MACOS_SIGNED; else if (!strcasecmp(temp, "pkg")) format = PACKAGE_PKG; else if (!strcasecmp(temp, "rpm")) format = PACKAGE_RPM; else if (!strcasecmp(temp, "rpm-signed")) format = PACKAGE_RPM_SIGNED; else if (!strcasecmp(temp, "setld")) format = PACKAGE_SETLD; else if (!strcasecmp(temp, "slackware")) format = PACKAGE_SLACKWARE; else if (!strcasecmp(temp, "swinstall") || !strcasecmp(temp, "depot")) format = PACKAGE_SWINSTALL; else if (!strcasecmp(temp, "native")) #if defined(__linux) { /* * Use dpkg as the native format, if installed... */ if (access("/usr/bin/dpkg", 0)) format = PACKAGE_RPM; else format = PACKAGE_DEB; } #elif defined(__sgi) format = PACKAGE_INST; #elif defined(__osf__) format = PACKAGE_SETLD; #elif defined(__hpux) format = PACKAGE_SWINSTALL; #elif defined(_AIX) format = PACKAGE_AIX; #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) format = PACKAGE_BSD; #elif defined(__svr4__) || defined(__SVR4) || defined(M_XENIX) format = PACKAGE_PKG; #elif defined(__APPLE__) format = PACKAGE_MACOS; #else format = PACKAGE_PORTABLE; #endif else { printf("epm: Unknown format \"%s\".\n", temp); usage(); } break; case 'g': /* Don't strip */ strip = 0; break; case 'k': /* Keep intermediate files */ KeepFiles = 1; break; case 'm': /* Custom sysname-release-machine string */ if (argv[i][2]) custom_name = argv[i] + 2; else { i++; if (i >= argc) { puts("epm: Expected custom system name string."); usage(); } custom_name = argv[i]; } break; case 'n': /* Name with sysname, machine, and/or release */ namefmt = argv[i] + 2; break; case 's': /* Use setup GUI */ if (argv[i][2]) setup = argv[i] + 2; else { i++; if (i >= argc) { puts("epm: Expected setup image."); usage(); } setup = argv[i]; } break; case 't': /* Test scripts */ fputs("epm: Sorry, the \"test\" option is no longer available!\n", stderr); break; case 'u': /* Uncompressed output */ CompressFiles = 0; break; case 'v': /* Be verbose */ Verbosity += strlen(argv[i]) - 1; break; case 'z': /* Compress output */ CompressFiles = 1; break; case '-': /* --option */ if (!strcmp(argv[i], "--data-dir")) { i++; if (i < argc) DataDir = argv[i]; else { puts("epm: Expected data directory."); usage(); } } else if (!strcmp(argv[i], "--depend")) show_depend = 1; else if (!strcmp(argv[i], "--keep-files")) KeepFiles = 1; else if (!strcmp(argv[i], "--aoo-mode")) AooMode = 1; else if (!strcmp(argv[i], "--output-dir")) { i++; if (i < argc) strlcpy(directory, argv[i], sizeof(directory)); else { puts("epm: Expected output directory."); usage(); } } else if (!strcmp(argv[i], "--setup-image")) { i++; if (i < argc) setup = argv[i]; else { puts("epm: Expected setup image."); usage(); } } else if (!strcmp(argv[i], "--setup-program")) { i++; if (i < argc) SetupProgram = argv[i]; else { puts("epm: Expected setup program."); usage(); } } else if (!strcmp(argv[i], "--setup-types")) { i++; if (i < argc) types = argv[i]; else { puts("epm: Expected setup.types file."); usage(); } } else if (!strcmp(argv[i], "--software-dir")) { i++; if (i < argc) SoftwareDir = argv[i]; else { puts("epm: Expected software directory."); usage(); } } else if (!strcmp(argv[i], "--uninstall-program")) { i++; if (i < argc) UninstProgram = argv[i]; else { puts("epm: Expected uninstall program."); usage(); } } else if (!strcmp(argv[i], "--version")) { info(); return (0); } else { printf("epm: Unknown option \"%s\".\n", argv[i]); usage(); } break; default: printf("epm: Unknown option \"%s\".\n", argv[i]); usage(); break; } } else if (strchr(argv[i], '=') != NULL) putenv(argv[i]); else if (prodname[0] == '\0') strlcpy(prodname, argv[i], sizeof(prodname)); else if (listname[0] == '\0') strlcpy(listname, argv[i], sizeof(listname)); else { printf("epm: Unknown argument \"%s\".\n", argv[i]); usage(); } /* * Check for product name and list file... */ if (!prodname[0]) { puts("epm: No product name specified!"); usage(); } for (i = 0; prodname[i]; i++) if (!isalnum(prodname[i] & 255)) { puts("epm: Product names should only contain letters and numbers!"); break; } if (!listname[0]) snprintf(listname, sizeof(listname), "%s.list", prodname); /* * Format the build directory and platform name strings... */ if (!directory[0]) { /* * User did not specify an output directory, so use our default... */ if (custom_name) strlcpy(directory, custom_name, sizeof(directory)); else snprintf(directory, sizeof(directory), "%s-%s-%s", platform.sysname, platform.release, platform.machine); } platname[0] = '\0'; if (custom_name) strlcat(platname, custom_name, sizeof(platname)); else { for (temp = namefmt; *temp != '\0'; temp++) { if (platname[0]) strlcat(platname, "-", sizeof(platname)); if (*temp == 'm') strlcat(platname, platform.machine, sizeof(platname)); else if (*temp == 'r') strlcat(platname, platform.release, sizeof(platname)); else if (*temp == 's') strlcat(platname, platform.sysname, sizeof(platname)); else { printf("epm: Bad name format character \"%c\" in \"%s\".\n", *temp, namefmt); usage(); } } } /* * Show program info... */ if (Verbosity) info(); /* * Read the distribution... */ if ((dist = read_dist(listname, &platform, formats[format])) == NULL) return (1); /* * Check that all requires info is present! */ if (!dist->product[0] || !dist->copyright[0] || !dist->vendor[0] || (!dist->license[0] && !dist->readme[0]) || !dist->version[0]) { fputs("epm: Error - missing %product, %copyright, %vendor, %license,\n", stderr); fputs(" %readme, or %version attributes in list file!\n", stderr); free_dist(dist); return (1); } if (dist->num_files == 0) { fputs("epm: Error - no files for installation in list file!\n", stderr); free_dist(dist); return (1); } /* * Show dependencies? */ if (show_depend) { depend(dist); free_dist(dist); return (0); } /* * Strip executables as needed... */ if (strip) { if (Verbosity) puts("Stripping executables in distribution..."); strip_execs(dist); } /* * Make build directory... */ make_directory(directory, 0, getuid(), getgid()); /* * Make the distribution in the correct format... */ if (access(SetupProgram, 0) && setup) { puts("epm: Setup program not installed, creating non-GUI package."); setup = NULL; } switch (format) { case PACKAGE_PORTABLE: i = make_portable(prodname, directory, platname, dist, &platform, setup, types); break; case PACKAGE_AIX: i = make_aix(prodname, directory, platname, dist, &platform); break; case PACKAGE_BSD: i = make_bsd(prodname, directory, platname, dist, &platform); break; case PACKAGE_SLACKWARE: i = make_slackware(prodname, directory, platname, dist, &platform); break; case PACKAGE_DEB: if (geteuid() && run_command(NULL, "fakeroot --version")) fputs("epm: Warning - file permissions and ownership may not be correct\n" " in Debian packages unless you run EPM as root or the 'fakeroot'\n" " command is available!\n", stderr); i = make_deb(prodname, directory, platname, dist, &platform); break; case PACKAGE_INST: i = make_inst(prodname, directory, platname, dist, &platform); break; case PACKAGE_MACOS: case PACKAGE_MACOS_SIGNED: i = make_macos(format, prodname, directory, platname, dist, &platform, setup); break; case PACKAGE_PKG: i = make_pkg(prodname, directory, platname, dist, &platform); break; case PACKAGE_LSB: case PACKAGE_LSB_SIGNED: case PACKAGE_RPM: case PACKAGE_RPM_SIGNED: i = make_rpm(format, prodname, directory, platname, dist, &platform, setup, types); break; case PACKAGE_SETLD: if (geteuid()) fputs("epm: Warning - file permissions and ownership may not be correct\n" " in Tru64 packages unless you run EPM as root!\n", stderr); i = make_setld(prodname, directory, platname, dist, &platform); break; case PACKAGE_SWINSTALL: if (geteuid()) { fputs("epm: Error - HP-UX packages must be built as root!\n", stderr); i = 1; } else i = make_swinstall(prodname, directory, platname, dist, &platform); break; } /* * All done! */ free_dist(dist); if (i) puts("Packaging failed!"); else if (Verbosity) puts("Done!"); return (i); } /* * 'depend()' - Show dependencies. */ static void depend(dist_t *dist) /* I - Distribution */ { int i; /* Looping var */ file_t *file; /* Current file */ for (i = dist->num_files, file = dist->files; i > 0; i--, file++) switch (file->type) { case 'c': case 'f': case 'i': case 'C': case 'F': case 'I': puts(file->src); break; } } /* * 'info()' - Show the EPM copyright and license. */ static void info(void) { puts(EPM_VERSION); puts("Copyright (c) 1999-2020 by Michael R Sweet."); puts("Copyright (c) 2020 by Jim Jagielski."); puts("Apache OpenOffice compatible"); puts(" url: https://github.com/jimjag/epm/"); puts(""); puts("EPM is free software and comes with ABSOLUTELY NO WARRANTY; for details"); puts("see the Apache License version 2.0 in the file LICENSE or at"); puts("\"https://www.apache.org/licenses/LICENSE-2.0\". Report all problems to"); puts("\"https://github.com/jimjag/epm/issues\"."); puts(""); } /* * 'usage()' - Show command-line usage instructions. */ static void usage(void) { info(); puts("Usage: epm [options] [name=value ... name=value] product [list-file]"); puts("Options:"); puts("-a arch"); puts(" Use the named architecture instead of the local one."); puts("-g"); puts(" Don't strip executables in distributions."); puts("-f " "{aix,bsd,deb,depot,inst,macos,macos-signed,native,pkg,portable,rpm,rpm-signed," "setld,slackware,swinstall,tardist}"); puts(" Set distribution format."); puts("-k"); puts(" Keep intermediate files (spec files, etc.)"); puts("-m name"); puts(" Set distribution filename to include the specified platform name."); puts(" This overrides \"-n\"."); puts("-n[mrs]"); puts(" Set distribution filename to include machine (m), OS release (r),"); puts(" and/or OS name (s)."); puts("-s setup.ext"); puts(" Enable the setup GUI and use \"setup.ext\" for the setup image."); puts("-u"); #if EPM_COMPRESS == 0 puts(" Do not compress files in packages (default)."); #else puts(" Do not compress files in packages."); #endif /* EPM_COMPRESS == 0 */ puts("-v"); puts(" Be verbose."); puts("-z"); #if EPM_COMPRESS == 1 puts(" Compress files in packages (default)."); #else puts(" Compress files in packages."); #endif /* EPM_COMPRESS == 1 */ puts("--data-dir /foo/bar/directory"); puts(" Use the named setup data file directory instead of " EPM_DATADIR "."); puts("--help"); puts(" Show this usage message."); puts("--keep-files"); puts(" Keep temporary distribution files in the output directory."); puts("--aoo-mode"); puts(" Modify rpm, deb, et.al. package names and format for Apache OpenOffice " "use."); puts("--output-dir /foo/bar/directory"); puts(" Enable the setup GUI and use \"setup.xpm\" for the setup image."); puts("--setup-image setup.xpm"); puts(" Enable the setup GUI and use \"setup.xpm\" for the setup image."); puts("--setup-program /foo/bar/setup"); puts(" Use the named setup program instead of " EPM_LIBDIR "/setup."); puts("--setup-types setup.types"); puts(" Include the named setup.types file with the distribution."); puts("--uninstalll-program /foo/bar/uninst"); puts(" Use the named uninstall program instead of " EPM_LIBDIR "/uninst."); puts("--version"); puts(" Show EPM version."); exit(1); } jimjag-epm-84910c6/epm.h000066400000000000000000000303451521151356300147530ustar00rootroot00000000000000/* * Definitions for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright © 1999-2020 by Michael R Sweet * Copyright © 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #ifndef _EPM_H_ #define _EPM_H_ #include "epmstring.h" #include #include #include #include #include #include #include #include #include #include #include #include #if HAVE_DIRENT_H #include typedef struct dirent DIRENT; #define NAMLEN(dirent) strlen((dirent)->d_name) #else #if HAVE_SYS_NDIR_H #include #endif #if HAVE_SYS_DIR_H #include #endif #if HAVE_NDIR_H #include #endif typedef struct direct DIRENT; #define NAMLEN(dirent) (dirent)->d_namlen #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Macro to eliminate "variable was never referenced" errors... */ #define REF(x) (void)(x); /* * TAR constants... */ #define TAR_BLOCK 512 /* Number of bytes in a block */ #define TAR_BLOCKS 10 /* Blocking factor */ #define TAR_MAGIC "ustar" /* 5 chars and a null */ #define TAR_VERSION "00" /* POSIX tar version */ #define TAR_OLDNORMAL '\0' /* Normal disk file, Unix compat */ #define TAR_NORMAL '0' /* Normal disk file */ #define TAR_LINK '1' /* Link to previously dumped file */ #define TAR_SYMLINK '2' /* Symbolic link */ #define TAR_CHR '3' /* Character special file */ #define TAR_BLK '4' /* Block special file */ #define TAR_DIR '5' /* Directory */ #define TAR_FIFO '6' /* FIFO special file */ #define TAR_CONTIG '7' /* Contiguous file */ /* * Package formats... */ enum { PACKAGE_PORTABLE, /* Shell-script based EPM */ PACKAGE_AIX, /* AIX package format */ PACKAGE_BSD, /* BSD package format */ PACKAGE_DEB, /* Debian package format */ PACKAGE_INST, /* IRIX package format */ PACKAGE_LSB, /* LSB (RPM) package format */ PACKAGE_LSB_SIGNED, /* LSB (RPM) package format (signed) */ PACKAGE_MACOS, /* macOS package format */ PACKAGE_MACOS_SIGNED, /* macOS package format (signed) */ PACKAGE_PKG, /* AT&T package format (AIX, Solaris) */ PACKAGE_RPM, /* RedHat package format */ PACKAGE_RPM_SIGNED, /* RedHat package format (signed) */ PACKAGE_SETLD, /* Tru64 package format */ PACKAGE_SLACKWARE, /* Slackware package format */ PACKAGE_SWINSTALL /* HP-UX package format */ }; /* * Command types... */ enum { COMMAND_PRE_INSTALL, /* Command to run before install */ COMMAND_POST_INSTALL, /* Command to run after install */ COMMAND_PRE_PATCH, /* Command to run before patch */ COMMAND_POST_PATCH, /* Command to run after patch */ COMMAND_PRE_REMOVE, /* Command to run before remove */ COMMAND_POST_REMOVE, /* Command to run after remove */ COMMAND_LITERAL /* Literal (format-specific) data */ }; /* * Dependency types... */ enum { DEPEND_REQUIRES, /* This product requires */ DEPEND_INCOMPAT, /* This product is incompatible with */ DEPEND_REPLACES, /* This product replaces */ DEPEND_PROVIDES /* This product provides */ }; /* * Structures... */ typedef union /**** TAR record format ****/ { unsigned char all[TAR_BLOCK]; /* Raw data block */ struct { char pathname[100], /* Destination path */ mode[8], /* Octal file permissions */ uid[8], /* Octal user ID */ gid[8], /* Octal group ID */ size[12], /* Octal size in bytes */ mtime[12], /* Octal modification time */ chksum[8], /* Octal checksum value */ linkflag, /* File type */ linkname[100], /* Source path for link */ magic[6], /* Magic string */ version[2], /* Format version */ uname[32], /* User name */ gname[32], /* Group name */ devmajor[8], /* Octal device major number */ devminor[8], /* Octal device minor number */ prefix[155]; /* Prefix for long filenames */ } header; } tar_t; typedef struct /**** TAR file ****/ { FILE *file; /* File to write to */ int blocks, /* Number of blocks written */ compressed; /* Compressed output? */ } tarf_t; typedef struct /**** File to install ****/ { int type; /* Type of file */ mode_t mode; /* Permissions of file */ char user[32], /* Owner of file */ group[32], /* Group of file */ src[512], /* Source path */ dst[512], /* Destination path */ options[256]; /* File options */ const char *subpackage; /* Sub-package name */ } file_t; typedef struct /**** Install/Patch/Remove Commands ****/ { int type; /* Command type */ char *command; /* Command string */ const char *subpackage; /* Sub-package name */ char *section; /* Literal section */ } command_t; typedef struct /**** Dependencies ****/ { int type; /* Dependency type */ char product[256]; /* Product name */ char version[2][256]; /* Product version string */ int vernumber[2]; /* Product version number */ const char *subpackage; /* Sub-package name */ } depend_t; typedef struct /**** Description Structure ****/ { char *description; /* Description */ const char *subpackage; /* Sub-package name */ } description_t; typedef struct /**** Distribution Structure ****/ { char product[256], /* Product name */ version[256], /* Product version string */ release[256], /* Product release string */ copyright[256], /* Product copyright */ vendor[256], /* Vendor name */ packager[256], /* Packager name */ license[256], /* License file to copy */ readme[256]; /* README file to copy */ int num_subpackages; /* Number of subpackages */ char **subpackages; /* Subpackage names */ int num_descriptions; /* Number of description strings */ description_t *descriptions; /* Description strings */ int vernumber, /* Version number */ epoch; /* Epoch number */ int num_commands; /* Number of commands */ command_t *commands; /* Commands */ int num_depends; /* Number of dependencies */ depend_t *depends; /* Dependencies */ int num_files; /* Number of files */ file_t *files; /* Files */ } dist_t; /* * Globals... */ extern int CompressFiles; /* Compress package files? */ extern const char *DataDir; /* Directory for setup data files */ extern int KeepFiles; /* Keep intermediate files? */ extern const char *SetupProgram; /* Setup program */ extern const char *SoftwareDir; /* Software directory path */ extern const char *UninstProgram; /* Uninstall program */ extern int Verbosity; /* Be verbose? */ extern int AooMode; /* Apply AOO features */ /* * Prototypes... */ extern void add_command(dist_t *dist, FILE *fp, int type, const char *command, const char *subpkg, const char *section); extern void add_depend(dist_t *dist, int type, const char *line, const char *subpkg); extern void add_description(dist_t *dist, FILE *fp, const char *description, const char *subpkg); extern file_t *add_file(dist_t *dist, const char *subpkg); extern char *add_subpackage(dist_t *dist, const char *subpkg); extern int copy_file(const char *dst, const char *src, mode_t mode, uid_t owner, gid_t group); extern char *find_subpackage(dist_t *dist, const char *subpkg); extern void free_dist(dist_t *dist); extern const char *get_option(file_t *file, const char *name, const char *defval); extern void get_platform(struct utsname *platform); extern const char *get_runlevels(file_t *file, const char *deflevels); extern int get_start(file_t *file, int defstart); extern int get_stop(file_t *file, int defstop); extern int get_vernumber(const char *version); extern int make_aix(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform); extern int make_bsd(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform); extern int make_deb(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform); extern int make_directory(const char *directory, mode_t mode, uid_t owner, gid_t group); extern int make_inst(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform); extern int make_link(const char *dst, const char *src); extern int make_macos(int format, const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform, const char *setup); extern int make_pkg(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform); extern int make_portable(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform, const char *setup, const char *types); extern int make_rpm(int format, const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform, const char *setup, const char *types); extern int make_setld(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform); extern int make_slackware(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform); extern int make_swinstall(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform); extern dist_t *new_dist(void); extern int qprintf(FILE *fp, const char *format, ...); extern dist_t *read_dist(const char *filename, struct utsname *platform, const char *format); extern int run_command(const char *directory, const char *command, ...) #ifdef __GNUC__ __attribute__((__format__(__printf__, 2, 3))) #endif /* __GNUC__ */ ; extern void sort_dist_files(dist_t *dist); extern void strip_execs(dist_t *dist); extern int tar_close(tarf_t *tar); extern int tar_directory(tarf_t *tar, const char *srcpath, const char *dstpath); extern int tar_file(tarf_t *tar, const char *filename); extern int tar_header(tarf_t *tar, int type, mode_t mode, off_t size, time_t mtime, const char *user, const char *group, const char *pathname, const char *linkname); extern tarf_t *tar_open(const char *filename, int compress); extern int tar_package(tarf_t *tar, const char *ext, const char *prodname, const char *directory, const char *platname, dist_t *dist, const char *subpackage); extern int unlink_directory(const char *directory); extern int unlink_package(const char *ext, const char *prodname, const char *directory, const char *platname, dist_t *dist, const char *subpackage); extern int write_dist(const char *listname, dist_t *dist); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* !_EPM_H_ */ jimjag-epm-84910c6/epm.list.in000066400000000000000000000045741521151356300161110ustar00rootroot00000000000000# # Sample software list file for the ESP Package Manager (EPM). # # Copyright © 2020 by Jim Jagielski # Copyright © 1999-2020 by Michael R Sweet # Copyright © 1999-2007 by Easy Software Products, all rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Directories... $prefix=@prefix@ $exec_prefix=@exec_prefix@ $bindir=@bindir@ $datarootdir=@datarootdir@ $datadir=@datadir@ $docdir=@docdir@ $libdir=@libdir@ $mandir=@mandir@ $srcdir=@srcdir@ # Product information %product ESP Package Manager (EPM) %copyright 2020 by Jim Jagielski, All Rights Reserved. %copyright 1999-2020 by Michael R Sweet, All Rights Reserved. %vendor Michael R Sweet, Jim Jagielski %license ${srcdir}/LICENSE %readme ${srcdir}/README.md %description Universal software packaging tool for UNIX. %version @VERSION@ @VERNUMBER@ # Executables %system all f 0555 root sys ${bindir}/epm epm f 0555 root sys ${bindir}/epminstall epminstall f 0555 root sys ${bindir}/mkepmlist mkepmlist # Documentation %subpackage documentation %description Documentation f 0444 root sys ${docdir}/README $srcdir/README.md f 0444 root sys ${docdir}/LICENSE $srcdir/LICENSE f 0444 root sys ${docdir}/epm-book.html $srcdir/doc/epm-book.html # Man pages %subpackage man %description Man pages d 0755 root sys ${mandir}/man1 - f 0444 root sys ${mandir}/man1/epm.1 $srcdir/doc/epm.1 f 0444 root sys ${mandir}/man1/epminstall.1 $srcdir/doc/epminstall.1 f 0444 root sys ${mandir}/man1/mkepmlist.1 $srcdir/doc/mkepmlist.1 f 0444 root sys ${mandir}/man5/epm.list.5 $srcdir/doc/epm.list.5 # GUI files... $GUIS=@GUIS@ %if GUIS %subpackage f 0555 root sys ${libdir}/epm/setup setup f 0555 root sys ${libdir}/epm/uninst uninst %system darwin f 0444 root sys ${datadir}/epm/default.icns default.icns %system all %subpackage man f 0444 root sys ${mandir}/man1/setup.1 $srcdir/doc/setup.1 f 0444 root sys ${mandir}/man5/setup.types.5 $srcdir/doc/setup.types.5 %endif jimjag-epm-84910c6/epminstall.c000066400000000000000000000260171521151356300163360ustar00rootroot00000000000000/* * Install program replacement for the ESP Package Manager (EPM). * * Copyright 2020 by Jim Jagielski * Copyright 1999-2020 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Global variable used by dist functions... */ int Verbosity = 0; /* * Local functions... */ static file_t *find_file(dist_t *dist, const char *dst); static void info(void); static void usage(void) #ifdef __GNUC__ __attribute__((__noreturn__)) #endif /* __GNUC__ */ ; /* * 'main()' - Add or replace files, directories, and symlinks. */ int /* O - Exit status */ main(int argc, /* I - Number of command-line arguments */ char *argv[]) /* I - Command-line arguments */ { int i; /* Looping var */ int mode, /* Permissions */ directories; /* Installing directories? */ char *user, /* Owner */ *group, /* Group */ *listname, /* List filename */ *src, /* Source filename */ dst[1024], /* Destination filename */ linkname[1024]; /* Symlink name */ ssize_t linklen; /* Length of symlink */ int num_files; /* Number of files to install */ char *files[1000]; /* Files to install */ struct stat fileinfo; /* File information */ dist_t *dist; /* Distribution */ file_t *file; /* File in distribution */ struct utsname platform; /* Platform information */ /* * Parse the command-line arguments... */ num_files = 0; mode = 0; user = "root"; group = "sys"; directories = 0; if ((listname = getenv("EPMLIST")) == NULL) listname = "epm.list"; for (i = 1; i < argc; i++) if (strcmp(argv[i], "-b") == 0) continue; else if (strcmp(argv[i], "-c") == 0) continue; else if (strcmp(argv[i], "-d") == 0) directories = 1; else if (strcmp(argv[i], "-g") == 0) { i++; if (i < argc) group = argv[i]; else usage(); } else if (strcmp(argv[i], "-m") == 0) { i++; if (i < argc) mode = (int)strtol(argv[i], NULL, 8); else usage(); } else if (strcmp(argv[i], "-o") == 0) { i++; if (i < argc) user = argv[i]; else usage(); } else if (strcmp(argv[i], "-s") == 0) continue; else if (strcmp(argv[i], "--list-file") == 0) { i++; if (i < argc) listname = argv[i]; else usage(); } else if (argv[i][0] == '-') usage(); else if (num_files < (sizeof(files) / sizeof(files[0]))) { files[num_files] = argv[i]; num_files++; } else { fputs("epminstall: Too many filenames on command-line!\n", stderr); usage(); } if (num_files == 0 || (num_files < 2 && !directories)) usage(); get_platform(&platform); if ((dist = read_dist(listname, &platform, "")) == NULL) { fprintf(stderr, "epminstall: Unable to read list file \"%s\": %s\n", listname, strerror(errno)); return (1); } /* * Check to see if we are installing files or directories... */ if (directories) { if (!mode) mode = 0755; for (i = 0; i < num_files; i++) { /* * Copy the directory name into a new file entry, which is cleared * by add_file()... */ if ((file = find_file(dist, files[i])) == NULL) file = add_file(dist, NULL); file->type = 'd'; file->mode = mode & 07777; strlcpy(file->user, user, sizeof(file->user)); strlcpy(file->group, group, sizeof(file->group)); strlcpy(file->dst, files[i], sizeof(file->dst)); strlcpy(file->src, "-", sizeof(file->src)); } } else { /* * Check to see if we have 1 or more files and a directory or * a source and destination file... */ if (num_files == 2) { file = find_file(dist, files[1]); if (file == NULL || file->type != 'd') { if (!file) file = add_file(dist, NULL); if (stat(files[0], &fileinfo)) { fprintf(stderr, "epminstall: Unable to stat \"%s\": %s\n", files[0], strerror(errno)); fileinfo.st_mode = mode; } if (S_ISLNK(fileinfo.st_mode)) { file->type = 'l'; if ((linklen = readlink(files[0], linkname, sizeof(linkname) - 1)) < 0) { fprintf(stderr, "epminstall: Unable to read symlink \"%s\": %s\n", files[0], strerror(errno)); files[0] = "BROKEN-LINK"; } else { linkname[linklen] = '\0'; files[0] = linkname; } } else file->type = 'f'; if (mode) file->mode = mode & 07777; else if (fileinfo.st_mode & 0111) file->mode = 0755; else file->mode = 0644; strlcpy(file->user, user, sizeof(file->user)); strlcpy(file->group, group, sizeof(file->group)); strlcpy(file->dst, files[1], sizeof(file->dst)); strlcpy(file->src, files[0], sizeof(file->src)); } else num_files--; } if (num_files != 2) { if (num_files > 1) num_files--; if ((file = find_file(dist, files[num_files])) == NULL) { /* * Add the installation directory to the file list... */ file = add_file(dist, NULL); file->type = 'd'; file->mode = 0755; strlcpy(file->user, user, sizeof(file->user)); strlcpy(file->group, group, sizeof(file->group)); strlcpy(file->dst, files[num_files], sizeof(file->dst)); strlcpy(file->src, "-", sizeof(file->src)); } else if (file->type != 'd') { fprintf(stderr, "epminstall: Destination path \"%s\" is not a directory!\n", files[num_files]); return (1); } for (i = 0; i < num_files; i++) { /* * Add/update the file in the distribution... */ if ((src = strrchr(files[i], '/')) != NULL) src++; else src = files[i]; snprintf(dst, sizeof(dst), "%s/%s", files[num_files], src); if ((file = find_file(dist, dst)) == NULL) file = add_file(dist, NULL); if (stat(files[i], &fileinfo)) { fprintf(stderr, "epminstall: Unable to stat \"%s\": %s\n", files[i], strerror(errno)); fileinfo.st_mode = mode; } if (S_ISLNK(fileinfo.st_mode)) { file->type = 'l'; if ((linklen = readlink(files[i], linkname, sizeof(linkname) - 1)) < 0) { fprintf(stderr, "epminstall: Unable to read symlink \"%s\": %s\n", files[i], strerror(errno)); files[i] = "BROKEN-LINK"; } else { linkname[linklen] = '\0'; files[i] = linkname; } } else file->type = 'f'; if (mode) file->mode = mode & 07777; else if (fileinfo.st_mode & 0111) file->mode = 0755; else file->mode = 0644; strlcpy(file->user, user, sizeof(file->user)); strlcpy(file->group, group, sizeof(file->group)); strlcpy(file->dst, dst, sizeof(file->dst)); strlcpy(file->src, files[i], sizeof(file->src)); } } } /* * Sort the files to make the final list file easier to check... */ sort_dist_files(dist); /* * Write the distribution file... */ if (write_dist(listname, dist)) { fprintf(stderr, "epminstall: Unable to read list file \"%s\": %s\n", listname, strerror(errno)); return (1); } /* * Return with no errors... */ return (0); } /* * 'find_file()' - Find a file in the distribution... */ static file_t * /* O - File entry or NULL */ find_file(dist_t *dist, /* I - Distribution to search */ const char *dst) /* I - Destination filename */ { int i; /* Looping var */ file_t *file; /* Current file */ for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (strcmp(file->dst, dst) == 0) return (file); return (NULL); } /* * 'info()' - Show the EPM copyright and license. */ static void info(void) { puts(EPM_VERSION); puts("Copyright 1999-2019 by Michael R Sweet."); puts("Copyright 2020 by Jim Jagielski."); puts(""); puts("EPM is free software and comes with ABSOLUTELY NO WARRANTY; for details"); puts("see the Apache License version 2.0 in the file LICENSE or at"); puts("\"https://www.apache.org/licenses/LICENSE-2.0\". Report all problems to"); puts("\"https://github.com/jimjag/epm/issues\"."); puts(""); } /* * 'usage()' - Show command-line usage instructions. */ static void usage(void) { info(); puts("Usage: epminstall [options] file1 file2 ... fileN directory"); puts(" epminstall [options] file1 file2"); puts(" epminstall [options] -d directory1 directory2 ... directoryN"); puts("Options:"); puts("-g group"); puts(" Set group of installed file(s)."); puts("-m mode"); puts(" Set permissions of installed file(s)."); puts("-u owner"); puts(" Set owner of installed file(s)."); exit(1); } jimjag-epm-84910c6/epmstring.h000066400000000000000000000042321521151356300161760ustar00rootroot00000000000000/* * String definitions for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2014 by Michael R Sweet * Copyright 1999-2005 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef _EPM_STRING_H_ #define _EPM_STRING_H_ /* * Include necessary headers... */ #include "config.h" #include #include #ifdef HAVE_STRINGS_H #include #endif /* HAVE_STRINGS_H */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* * Prototypes... */ #ifndef HAVE_STRDUP extern char *epm_strdup(const char *); #define strdup epm_strdup #endif /* !HAVE_STRDUP */ #ifndef HAVE_STRCASECMP extern int epm_strcasecmp(const char *, const char *); #define strcasecmp epm_strcasecmp #endif /* !HAVE_STRCASECMP */ #ifndef HAVE_STRNCASECMP extern int epm_strncasecmp(const char *, const char *, size_t n); #define strncasecmp epm_strncasecmp #endif /* !HAVE_STRNCASECMP */ #ifndef HAVE_STRLCAT extern size_t epm_strlcat(char *, const char *, size_t); #define strlcat epm_strlcat #endif /* !HAVE_STRLCAT */ #ifndef HAVE_STRLCPY extern size_t epm_strlcpy(char *, const char *, size_t); #define strlcpy epm_strlcpy #endif /* !HAVE_STRLCPY */ #ifndef HAVE_SNPRINTF extern int epm_snprintf(char *, size_t, const char *, ...) #ifdef __GNUC__ __attribute__((__format__(__printf__, 3, 4))) #endif /* __GNUC__ */ ; #define snprintf epm_snprintf #endif /* !HAVE_SNPRINTF */ #ifndef HAVE_VSNPRINTF extern int epm_vsnprintf(char *, size_t, const char *, va_list); #define vsnprintf epm_vsnprintf #endif /* !HAVE_VSNPRINTF */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* !_EPM_STRING_H_ */ jimjag-epm-84910c6/file.c000066400000000000000000000240711521151356300151030ustar00rootroot00000000000000/* * File functions for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2017 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * 'copy_file()' - Copy a file. */ int /* O - 0 on success, -1 on failure */ copy_file(const char *dst, /* I - Destination file */ const char *src, /* I - Source file */ mode_t mode, /* I - Permissions */ uid_t owner, /* I - Owner ID */ gid_t group) /* I - Group ID */ { FILE *dstfile, /* Destination file */ *srcfile; /* Source file */ char buffer[8192]; /* Copy buffer */ char *slash; /* Pointer to trailing slash */ size_t bytes; /* Number of bytes read/written */ /* * Check that the destination directory exists... */ strlcpy(buffer, dst, sizeof(buffer)); if ((slash = strrchr(buffer, '/')) != NULL) *slash = '\0'; if (access(buffer, F_OK)) make_directory(buffer, 0755, owner, group); /* * Open files... */ if ((dstfile = fopen(dst, "wb")) == NULL) { fprintf(stderr, "epm: Unable to create \"%s\" -\n %s\n", dst, strerror(errno)); return (-1); } if ((srcfile = fopen(src, "rb")) == NULL) { fclose(dstfile); unlink(dst); fprintf(stderr, "epm: Unable to open \"%s\" -\n %s\n", src, strerror(errno)); return (-1); } /* * Copy from src to dst... */ while ((bytes = fread(buffer, 1, sizeof(buffer), srcfile)) > 0) if (fwrite(buffer, 1, bytes, dstfile) < bytes) { fprintf(stderr, "epm: Unable to write to \"%s\" -\n %s\n", dst, strerror(errno)); fclose(srcfile); fclose(dstfile); unlink(dst); return (-1); } /* * Close files, change permissions, and return... */ fclose(srcfile); fclose(dstfile); if (mode) chmod(dst, mode); if (!AooMode) if (owner != (uid_t)-1 && group != (gid_t)-1) chown(dst, owner, group); return (0); } /* * 'make_directory()' - Make a directory. */ int /* O - 0 = success, -1 = error */ make_directory(const char *directory, /* I - Directory */ mode_t mode, /* I - Permissions */ uid_t owner, /* I - Owner ID */ gid_t group) /* I - Group ID */ { char buffer[8192], /* Filename buffer */ *bufptr; /* Pointer into buffer */ for (bufptr = buffer; *directory;) { if (*directory == '/' && bufptr > buffer) { *bufptr = '\0'; if (access(buffer, F_OK)) { mkdir(buffer, 0755); if (mode) chmod(buffer, mode | 0700); if (!AooMode) if (owner != (uid_t)-1 && group != (gid_t)-1) chown(buffer, owner, group); } } *bufptr++ = *directory++; } *bufptr = '\0'; if (access(buffer, F_OK)) { mkdir(buffer, 0755); if (mode) chmod(buffer, mode | 0700); if (!AooMode) if (owner != (uid_t)-1 && group != (gid_t)-1) chown(buffer, owner, group); } return (0); } /* * 'make_link()' - Make a symbolic link. */ int /* O - 0 = success, -1 = error */ make_link(const char *dst, /* I - Destination file */ const char *src) /* I - Link */ { char buffer[8192], /* Copy buffer */ *slash; /* Pointer to trailing slash */ /* * Check that the destination directory exists... */ strlcpy(buffer, dst, sizeof(buffer)); if ((slash = strrchr(buffer, '/')) != NULL) *slash = '\0'; if (access(buffer, F_OK)) make_directory(buffer, 0755, 0, 0); /* * Make the symlink... */ return (symlink(src, dst)); } /* * 'strip_execs()' - Strip symbols from executable files in the distribution. */ void strip_execs(dist_t *dist) /* I - Distribution to strip... */ { int i; /* Looping var */ file_t *file; /* Software file */ FILE *fp; /* File pointer */ char header[4]; /* File header... */ /* * Loop through the distribution files and strip any executable * files. */ for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'f' && (file->mode & 0111) && strstr(file->options, "nostrip()") == NULL) { /* * OK, this file has executable permissions; see if it is a * script... */ if ((fp = fopen(file->src, "rb")) != NULL) { /* * Read the first 3 bytes of the file... */ if (fread(header, 1, sizeof(header) - 1, fp) == 0) { fclose(fp); continue; } header[sizeof(header) - 1] = '\0'; fclose(fp); /* * Check for "#!/" or "#" + whitespace at the beginning of the file... */ if (!strncmp(header, "#!/", 3) || (header[0] == '#' && isspace(header[1] & 255))) continue; } else { /* * File could not be opened; error out... */ fprintf(stderr, "epm: Unable to open file \"%s\" for destination " "\"%s\" -\n %s\n", file->src, file->dst, strerror(errno)); exit(1); } /* * Strip executables... */ run_command(NULL, EPM_STRIP " %s", file->src); } } /* * 'unlink_directory()' - Delete a directory and all of its nodes. */ int /* O - 0 on success, -1 on failure */ unlink_directory(const char *directory) /* I - Directory */ { DIR *dir; /* Directory */ DIRENT *dent; /* Directory entry */ char filename[1024]; /* Filename */ struct stat fileinfo; /* Information on the source file */ /* * Try opening the source directory... */ if ((dir = opendir(directory)) == NULL) { fprintf(stderr, "epm: Unable to open directory \"%s\": %s\n", directory, strerror(errno)); return (-1); } /* * Read from the directory... */ while ((dent = readdir(dir)) != NULL) { /* * Skip "." and ".."... */ if (!strcmp(dent->d_name, ".") || !strcmp(dent->d_name, "..")) continue; /* * Get file info... */ snprintf(filename, sizeof(filename), "%s/%s", directory, dent->d_name); if (lstat(filename, &fileinfo)) { fprintf(stderr, "epm: Unable to stat \"%s\": %s\n", filename, strerror(errno)); continue; } /* * Process accordingly... */ if (Verbosity) puts(filename); if (S_ISDIR(fileinfo.st_mode)) { /* * Directory... */ if (unlink_directory(filename)) goto fail; } else { /* * Regular file or symlink... */ if (unlink(filename)) { fprintf(stderr, "epm: Unable to remove \"%s\": %s\n", filename, strerror(errno)); goto fail; } } } closedir(dir); if (rmdir(directory)) { fprintf(stderr, "epm: Unable to remove \"%s\": %s\n", directory, strerror(errno)); return (-1); } return (0); fail: closedir(dir); return (-1); } /* * 'unlink_package()' - Delete a package file. */ int /* O - 0 on success, -1 on failure */ unlink_package(const char *ext, /* I - Package filename extension */ const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ const char *subpackage) /* I - Subpackage */ { char prodfull[255], /* Full name of product */ name[1024], /* Full product name */ filename[1024]; /* File to archive */ /* * Figure out the full name of the distribution... */ if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); /* * Then the subdirectory name... */ if (dist->release[0]) snprintf(name, sizeof(name), "%s-%s-%s", prodfull, dist->version, dist->release); else snprintf(name, sizeof(name), "%s-%s", prodfull, dist->version); if (platname[0]) { strlcat(name, "-", sizeof(name)); strlcat(name, platname, sizeof(name)); } strlcat(name, ".", sizeof(name)); strlcat(name, ext, sizeof(name)); /* * Remove the package file... */ snprintf(filename, sizeof(filename), "%s/%s", directory, name); if (unlink(filename)) { fprintf(stderr, "epm: Unable to remove \"%s\": %s\n", filename, strerror(errno)); return (-1); } else return (0); } jimjag-epm-84910c6/gui-common.cxx000066400000000000000000000217241521151356300166200ustar00rootroot00000000000000// // ESP Software Wizard common functions for the ESP Package Manager (EPM). // // Copyright © 2020 by Jim Jagielski // Copyright 1999-2014 by Michael R Sweet // Copyright 1999-2006 by Easy Software Products. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #include "gui-common.h" #include #include #include #include #include #include #include #include // // 'gui_add_depend()' - Add a dependency to a distribution. // void gui_add_depend(gui_dist_t *d, // I - Distribution int type, // I - Dependency type const char *name, // I - Name of product int lowver, // I - Lower version number int hiver) // I - Highre version number { gui_depend_t *temp; // Pointer to dependency if (d->num_depends == 0) temp = (gui_depend_t *)malloc(sizeof(gui_depend_t)); else temp = (gui_depend_t *)realloc(d->depends, sizeof(gui_depend_t) * (d->num_depends + 1)); if (temp == NULL) { perror("setup: Unable to allocate memory for dependency"); exit(1); } d->depends = temp; temp += d->num_depends; d->num_depends++; memset(temp, 0, sizeof(gui_depend_t)); strncpy(temp->product, name, sizeof(temp->product) - 1); temp->type = type; temp->vernumber[0] = lowver; temp->vernumber[1] = hiver; } // // 'gui_add_dist()' - Add a distribution. // gui_dist_t * // O - New distribution gui_add_dist(int *num_d, // IO - Number of distributions gui_dist_t **d) // IO - Distributions { gui_dist_t *temp; // Pointer to current distribution // Add a new distribution entry... if (*num_d == 0) temp = (gui_dist_t *)malloc(sizeof(gui_dist_t)); else temp = (gui_dist_t *)realloc(*d, sizeof(gui_dist_t) * (*num_d + 1)); if (temp == NULL) { perror("setup: Unable to allocate memory for distribution"); exit(1); } *d = temp; temp += *num_d; (*num_d)++; memset(temp, 0, sizeof(gui_dist_t)); return (temp); } // // 'gui_find_dist()' - Find a distribution. // gui_dist_t * // O - Pointer to distribution or NULL gui_find_dist(const char *name, // I - Distribution name int num_d, // I - Number of distributions gui_dist_t *d) // I - Distributions { while (num_d > 0) { if (!strcmp(name, d->product)) return (d); d++; num_d--; } return (NULL); } // // 'gui_get_installed()' - Get a list of installed software products. // void gui_get_installed(void) { int i; // Looping var int num_files; // Number of files dirent **files; // Files const char *ext; // Extension gui_dist_t *temp; // Pointer to current distribution FILE *fp; // File to read from char line[1024]; // Line from file... // See if there are any installed files... NumInstalled = 0; Installed = (gui_dist_t *)0; if ((num_files = fl_filename_list(EPM_SOFTWARE, &files)) > 0) { // Build a distribution list... for (i = 0; i < num_files; i++) { ext = fl_filename_ext(files[i]->d_name); if (!strcmp(ext, ".remove")) { // Found a .remove script... snprintf(line, sizeof(line), EPM_SOFTWARE "/%s", files[i]->d_name); if ((fp = fopen(line, "r")) == NULL) { perror("setup: Unable to open removal script"); exit(1); } // Add a new distribution entry... temp = gui_add_dist(&NumInstalled, &Installed); temp->type = PACKAGE_PORTABLE; strncpy(temp->product, files[i]->d_name, sizeof(temp->product) - 1); *strrchr(temp->product, '.') = '\0'; // Drop .remove // Read info from the removal script... while (fgets(line, sizeof(line), fp)) { // Only read distribution info lines... if (strncmp(line, "#%", 2)) continue; // Drop the trailing newline... line[strlen(line) - 1] = '\0'; // Copy data as needed... if (!strncmp(line, "#%product ", 10)) strncpy(temp->name, line + 10, sizeof(temp->name) - 1); else if (!strncmp(line, "#%version ", 10)) sscanf(line + 10, "%31s%d", temp->version, &(temp->vernumber)); else if (!strncmp(line, "#%rootsize ", 11)) temp->rootsize = atoi(line + 11); else if (!strncmp(line, "#%usrsize ", 10)) temp->usrsize = atoi(line + 10); } fclose(fp); } free(files[i]); } free(files); } // Get a list of RPM packages that are installed... if (!access("/bin/rpm", 0) && (fp = popen("/bin/rpm -qa --qf " "'%{NAME}|%{VERSION}|%{SIZE}|%{SUMMARY}\\n'", "r")) != NULL) { char *version, // Version number *size, // Size of package *description; // Summary string while (fgets(line, sizeof(line), fp)) { // Drop the trailing newline... line[strlen(line) - 1] = '\0'; // Grab the different fields... if ((version = strchr(line, '|')) == NULL) continue; *version++ = '\0'; if ((size = strchr(version, '|')) == NULL) continue; *size++ = '\0'; if ((description = strchr(size, '|')) == NULL) continue; *description++ = '\0'; // Add a new distribution entry... temp = gui_add_dist(&NumInstalled, &Installed); temp->type = PACKAGE_RPM; strlcpy(temp->product, line, sizeof(temp->product)); strlcpy(temp->name, description, sizeof(temp->name)); strlcpy(temp->version, version, sizeof(temp->version)); temp->vernumber = get_vernumber(version); temp->rootsize = (int)(atof(size) / 1024.0 + 0.5); } pclose(fp); } if (NumInstalled > 1) qsort(Installed, NumInstalled, sizeof(gui_dist_t), (compare_func_t)gui_sort_dists); } // // 'gui_load_file()' - Load a file into a help widget. // void gui_load_file(Fl_Help_View *hv, // I - Help widget const char *filename) // I - File to load { FILE *fp; // File pointer struct stat info; // Info about file int ch; // Character from file char *buffer, // File buffer *ptr; // Pointer into buffer // Try opening the file and getting the file size... if ((fp = fopen(filename, "r")) == NULL) { hv->value(strerror(errno)); return; } if (stat(filename, &info)) { hv->value(strerror(errno)); return; } // Allocate a buffer that is more than big enough to the hold the file... buffer = new char[info.st_size * 2]; // See if we have a HTML file... if ((ch = getc(fp)) == '<') { // Yes, just read it in... buffer[0] = ch; fread(buffer + 1, 1, info.st_size - 1, fp); buffer[info.st_size] = '\0'; } else { // No, treat it as plain text... ungetc(ch, fp); strcpy(buffer, "
    ");
    
            ptr = buffer + 5;
    
            while ((ch = getc(fp)) != EOF) {
                if (ch == '&') {
                    strcpy(ptr, "&");
                    ptr += 5;
                } else if (ch == '<') {
                    strcpy(ptr, "<");
                    ptr += 4;
                } else
                    *ptr++ = ch;
            }
    
            strcpy(ptr, "
    \n"); // Preformatted text will be too large without a reduction in the // base size... hv->textsize(10); } // Save the loaded buffer to the help widget... hv->value(buffer); // Free memory and close the file... delete[] buffer; fclose(fp); } // // 'gui_sort_dists()' - Compare two distribution names... // int // O - Result of comparison gui_sort_dists(const gui_dist_t *d0, // I - First distribution const gui_dist_t *d1) // I - Second distribution { return (strcmp(d0->name, d1->name)); } jimjag-epm-84910c6/gui-common.h000066400000000000000000000057721521151356300162520ustar00rootroot00000000000000// // ESP Software Wizard common header file for the ESP Package Manager (EPM). // // Copyright © 2020 by Jim Jagielski // Copyright 1999-2014 by Michael R Sweet // Copyright 1999-2006 by Easy Software Products. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #ifndef _GUI_COMMON_H_ #define _GUI_COMMON_H_ // // Include necessary headers... // #include "epm.h" #include "epmstring.h" #include #include #include // // Distribution structures... // struct gui_depend_t //// Dependencies { int type; // Type of dependency char product[64]; // Name of product or file int vernumber[2]; // Version number(s) }; struct gui_dist_t //// Distributions { int type; // Package type char product[64]; // Product name char name[256]; // Product long name char version[32]; // Product version int vernumber; // Version number int num_depends; // Number of dependencies gui_depend_t *depends; // Dependencies int rootsize, // Size of root partition files in kbytes usrsize; // Size of /usr partition files in kbytes char *filename; // Name of package file }; struct gui_intype_t //// Installation types { char name[80]; // Type name char label[80]; // Type label int num_products; // Number of products to install (0 = select) int products[200]; // Products to install int size; // Size of products in kbytes }; // // Define a C API function type for comparisons... // extern "C" { typedef int (*compare_func_t)(const void *, const void *); } // // Globals... // #ifdef _DEFINE_GLOBALS_ #define VAR #else #define VAR extern #endif // _DEFINE_GLOBALS_ VAR int NumDists; // Number of distributions in directory VAR gui_dist_t *Dists; // Distributions in directory VAR int NumInstalled; // Number of distributions installed VAR gui_dist_t *Installed; // Distributions installed VAR int NumInstTypes; // Number of installation types VAR gui_intype_t InstTypes[8]; // Installation types // // Prototypes... // void gui_add_depend(gui_dist_t *d, int type, const char *name, int lowver, int hiver); gui_dist_t *gui_add_dist(int *num_d, gui_dist_t **d); gui_dist_t *gui_find_dist(const char *name, int num_d, gui_dist_t *d); void gui_get_installed(void); void gui_load_file(Fl_Help_View *hv, const char *filename); int gui_sort_dists(const gui_dist_t *d0, const gui_dist_t *d1); #endif // !_GUI_COMMON_H_ jimjag-epm-84910c6/inst.c000066400000000000000000000514441521151356300151450ustar00rootroot00000000000000/* * IRIX package gateway for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2017 by Michael R Sweet * Copyright 1999-2006 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local functions... */ void inst_subsys(FILE *fp, const char *prodname, dist_t *dist, const char *subpackage, const char *category, const char *section); /* * 'make_inst()' - Make an IRIX software distribution package. */ int /* O - 0 = success, 1 = fail */ make_inst(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform) /* I - Platform information */ { int i; /* Looping var */ FILE *fp; /* Spec/IDB/script file */ tarf_t *tarfile; /* .tardist file */ char name[1024]; /* Full product name */ char specname[1024]; /* Spec filename */ char idbname[1024]; /* IDB filename */ char filename[1024], /* Destination filename */ srcname[1024], /* Name of source file in distribution */ dstname[1024]; /* Name of destination file in distribution */ char preinstall[1024], /* Pre install script */ postinstall[1024], /* Post install script */ preremove[1024], /* Pre remove script */ postremove[1024]; /* Post remove script */ char subsys[255]; /* Subsystem name */ file_t *file; /* Current distribution file */ command_t *c; /* Current command */ struct stat fileinfo; /* File information */ const char *runlevels; /* Run levels */ static const char *extensions[] = /* INST file extensions */ {"", ".idb", ".man", ".sw"}; REF(platform); if (Verbosity) puts("Creating inst distribution..."); if (dist->release[0]) { if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, dist->version, dist->release, platname); else snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, dist->release); } else if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); else snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); /* * Write the spec file for gendist... */ if (Verbosity) puts("Creating spec file..."); snprintf(specname, sizeof(specname), "%s/spec", directory); if ((fp = fopen(specname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create spec file \"%s\": %s\n", specname, strerror(errno)); return (1); } fprintf(fp, "product %s\n", prodname); qprintf(fp, " id \"%s, %s\"\n", dist->product, dist->version); fputs(" image sw\n", fp); qprintf(fp, " id \"%s, Software, %s\"\n", dist->product, dist->version); fprintf(fp, " version %d\n", dist->vernumber); inst_subsys(fp, prodname, dist, NULL, "Software", "sw"); for (i = 0; i < dist->num_subpackages; i++) inst_subsys(fp, prodname, dist, dist->subpackages[i], "Software", "sw"); fputs(" endimage\n", fp); fputs(" image man\n", fp); qprintf(fp, " id \"%s, Man Pages, %s\"\n", dist->product, dist->version); fprintf(fp, " version %d\n", dist->vernumber); inst_subsys(fp, prodname, dist, NULL, "Man Pages", "man"); for (i = 0; i < dist->num_subpackages; i++) inst_subsys(fp, prodname, dist, dist->subpackages[i], "Man Pages", "man"); fputs(" endimage\n", fp); fputs("endproduct\n", fp); fclose(fp); /* * Add symlinks for init scripts... */ for (i = 0; i < dist->num_files; i++) if (tolower(dist->files[i].type) == 'i') { /* * Make symlinks for all of the selected run levels... */ for (runlevels = get_runlevels(dist->files + i, "02"); isdigit(*runlevels & 255); runlevels++) { file = add_file(dist, dist->files[i].subpackage); file->type = 'l'; file->mode = 0; strlcpy(file->user, "root", sizeof(file->user)); strlcpy(file->group, "sys", sizeof(file->group)); snprintf(file->src, sizeof(file->src), "../init.d/%s", dist->files[i].dst); if (*runlevels == '0') snprintf(file->dst, sizeof(file->dst), "/etc/rc0.d/K%02d%s", get_stop(dist->files + i, 0), dist->files[i].dst); else snprintf(file->dst, sizeof(file->dst), "/etc/rc%c.d/S%02d%s", *runlevels, get_start(dist->files + i, 99), dist->files[i].dst); } /* * Then send the original file to /etc/init.d... */ file = dist->files + i; snprintf(filename, sizeof(filename), "/etc/init.d/%s", file->dst); strlcpy(file->dst, filename, sizeof(file->dst)); } /* * Add preinstall script as needed... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL) break; if (i) { /* * Add the preinstall script file to the list... */ file = add_file(dist, NULL); file->type = '1'; file->mode = 0555; strlcpy(file->user, "root", sizeof(file->user)); strlcpy(file->group, "sys", sizeof(file->group)); snprintf(file->src, sizeof(file->src), "%s/%s.preinstall", directory, prodname); snprintf(file->dst, sizeof(file->dst), "%s/%s.preinstall", SoftwareDir, prodname); /* * Then create the install script... */ if (Verbosity) puts("Creating preinstall script..."); snprintf(preinstall, sizeof(preinstall), "%s/%s.preinstall", directory, prodname); if ((fp = fopen(preinstall, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preinstall, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL) fprintf(fp, "%s\n", c->command); fclose(fp); } else preinstall[0] = '\0'; /* * Add postinstall script as needed... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL) break; if (i) { /* * Add the postinstall script file to the list... */ file = add_file(dist, NULL); file->type = '2'; file->mode = 0555; strlcpy(file->user, "root", sizeof(file->user)); strlcpy(file->group, "sys", sizeof(file->group)); snprintf(file->src, sizeof(file->src), "%s/%s.postinstall", directory, prodname); snprintf(file->dst, sizeof(file->dst), "%s/%s.postinstall", SoftwareDir, prodname); /* * Then create the install script... */ if (Verbosity) puts("Creating postinstall script..."); snprintf(postinstall, sizeof(postinstall), "%s/%s.postinstall", directory, prodname); if ((fp = fopen(postinstall, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postinstall, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL) fprintf(fp, "%s\n", c->command); fclose(fp); } else postinstall[0] = '\0'; /* * Add preremove script as needed... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE) break; if (i) { /* * Add the preremove script file to the list... */ file = add_file(dist, NULL); file->type = '3'; file->mode = 0555; strlcpy(file->user, "root", sizeof(file->user)); strlcpy(file->group, "sys", sizeof(file->group)); snprintf(file->src, sizeof(file->src), "%s/%s.preremove", directory, prodname); snprintf(file->dst, sizeof(file->dst), "%s/%s.preremove", SoftwareDir, prodname); /* * Then create the install script... */ if (Verbosity) puts("Creating preremove script..."); snprintf(preremove, sizeof(preremove), "%s/%s.preremove", directory, prodname); if ((fp = fopen(preremove, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preremove, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE) fprintf(fp, "%s\n", c->command); qprintf(fp, "/bin/rm -f %s.copy\n", file->dst); fclose(fp); } else preremove[0] = '\0'; /* * Add postremove script as needed... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE) break; if (i) { /* * Add the postremove script file to the list... */ file = add_file(dist, NULL); file->type = '4'; file->mode = 0555; strlcpy(file->user, "root", sizeof(file->user)); strlcpy(file->group, "sys", sizeof(file->group)); snprintf(file->src, sizeof(file->src), "%s/%s.postremove", directory, prodname); snprintf(file->dst, sizeof(file->dst), "%s/%s.postremove", SoftwareDir, prodname); /* * Then create the remove script... */ if (Verbosity) puts("Creating postremove script..."); snprintf(postremove, sizeof(postremove), "%s/%s.postremove", directory, prodname); if ((fp = fopen(postremove, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postremove, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE) fprintf(fp, "%s\n", c->command); qprintf(fp, "/bin/rm -f %s.copy\n", file->dst); fclose(fp); } else postremove[0] = '\0'; /* * Sort the file list by the destination name, since gendist needs a sorted * list... */ sort_dist_files(dist); /* * Write the idb file for gendist... */ if (Verbosity) puts("Creating idb file..."); snprintf(idbname, sizeof(idbname), "%s/idb", directory); if ((fp = fopen(idbname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create idb file \"%s\": %s\n", idbname, strerror(errno)); return (1); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { if (strstr(file->dst, "/man/") != NULL || strstr(file->dst, "/catman/") != NULL) snprintf(subsys, sizeof(subsys), "%s.man.%s", prodname, file->subpackage ? file->subpackage : "eoe"); else snprintf(subsys, sizeof(subsys), "%s.sw.%s", prodname, file->subpackage ? file->subpackage : "eoe"); switch (tolower(file->type)) { case '1': qprintf(fp, "f %04o %s %s %s %s %s postop($rbase/%s)\n", file->mode, file->user, file->group, file->dst + 1, file->src, subsys, file->dst + 1); break; case '2': qprintf(fp, "f %04o %s %s %s %s %s exitop($rbase/%s)\n", file->mode, file->user, file->group, file->dst + 1, file->src, subsys, file->dst + 1); break; case '3': case '4': qprintf(fp, "f %04o %s %s %s %s %s " "postop(cp $rbase/%s $rbase/%s.copy) " "removeop($rbase/%s.copy; rm -f $rbase/%s.copy)\n", file->mode, file->user, file->group, file->dst + 1, file->src, subsys, file->dst + 1, file->dst + 1, file->dst + 1); break; case 'c': qprintf(fp, "f %04o %s %s %s %s %s config(suggest)\n", file->mode, file->user, file->group, file->dst + 1, file->src, subsys); break; case 'd': qprintf(fp, "d %04o %s %s %s - %s\n", file->mode, file->user, file->group, file->dst + 1, subsys); break; case 'f': qprintf(fp, "f %04o %s %s %s %s %s\n", file->mode, file->user, file->group, file->dst + 1, file->src, subsys); break; case 'i': qprintf(fp, "f %04o %s %s %s %s %s " "postop(cp $rbase/etc/init.d/%s $rbase/etc/init.d/%s.copy) " "exitop($rbase/etc/init.d/%s start) " "removeop($rbase/etc/init.d/%s.copy stop; rm -f " "$rbase/etc/init.d/%s.copy)\n", file->mode, file->user, file->group, file->dst + 1, file->src, subsys, file->dst + 12, file->dst + 12, file->dst + 12, file->dst + 12, file->dst + 12); break; case 'l': qprintf(fp, "l %04o %s %s %s - %s symval(%s)\n", file->mode, file->user, file->group, file->dst + 1, subsys, file->src); break; } } fclose(fp); /* * Build the distribution from the spec file... */ if (Verbosity) puts("Building INST binary distribution..."); if (run_command(NULL, "gendist %s -dist %s -sbase . -idb %s -spec %s", Verbosity == 0 ? "" : "-v", directory, idbname, specname)) return (1); /* * Build the tardist file... */ if (Verbosity) printf("Writing tardist file:"); snprintf(filename, sizeof(filename), "%s/%s.tardist", directory, name); if ((tarfile = tar_open(filename, 0)) == NULL) { if (Verbosity) puts(""); fprintf(stderr, "epm: Unable to create file \"%s\" -\n %s\n", filename, strerror(errno)); return (1); } for (i = 0; i < 4; i++) { snprintf(srcname, sizeof(srcname), "%s/%s%s", directory, prodname, extensions[i]); snprintf(dstname, sizeof(dstname), "%s%s", prodname, extensions[i]); stat(srcname, &fileinfo); if (tar_header(tarfile, TAR_NORMAL, fileinfo.st_mode, fileinfo.st_size, fileinfo.st_mtime, "root", "sys", dstname, NULL) < 0) return (-1); if (tar_file(tarfile, srcname) < 0) return (-1); if (Verbosity) { printf(" %s%s", prodname, extensions[i]); fflush(stdout); } } tar_close(tarfile); if (Verbosity) { stat(filename, &fileinfo); if (fileinfo.st_size > (1024 * 1024)) printf(" size=%.1fM\n", fileinfo.st_size / 1024.0 / 1024.0); else printf(" size=%.0fk\n", fileinfo.st_size / 1024.0); } /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) puts("Removing temporary distribution files..."); if (preinstall[0]) unlink(preinstall); if (postinstall[0]) unlink(postinstall); if (preremove[0]) unlink(preremove); if (postremove[0]) unlink(postremove); unlink(idbname); unlink(specname); } return (0); } /* * 'inst_subsys()' - Write a subsystem definition for the product. */ void inst_subsys(FILE *fp, /* I - File to write to */ const char *prodname, /* I - Product short name */ dist_t *dist, /* I - Distribution */ const char *subpackage, /* I - Subpackage name or NULL */ const char *category, /* I - "Software" or "Man Pages" */ const char *section) /* I - "sw" or "man" */ { int i; /* Looping var */ depend_t *d; /* Current dependency */ const char *product; /* Product for dependency */ char selfname[1024]; /* Self product name */ char title[1024]; /* Product description/title */ snprintf(selfname, sizeof(selfname), "%s.%s.eoe", prodname, section); if (subpackage) { fprintf(fp, " subsys %s\n", subpackage); for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) break; if (i < dist->num_descriptions) snprintf(title, sizeof(title), "%s %s", dist->product, dist->descriptions[i].description); else strlcpy(title, dist->product, sizeof(title)); } else { fputs(" subsys eoe default\n", fp); strlcpy(title, dist->product, sizeof(title)); } qprintf(fp, " id \"%s, %s, %s\"\n", title, category, dist->version); fprintf(fp, " exp \"%s.%s.%s\"\n", prodname, section, subpackage ? subpackage : "eoe"); for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) if (d->type == DEPEND_REQUIRES && d->subpackage == subpackage) break; if (i) { fputs(" prereq\n", fp); fputs(" (\n", fp); for (; i > 0; i--, d++) if (d->type == DEPEND_REQUIRES && d->subpackage == subpackage) { if (!strcmp(d->product, "_self")) product = selfname; else product = d->product; if (strchr(product, '.') != NULL) fprintf(fp, " %s %d %d\n", product, d->vernumber[0], d->vernumber[1]); else if (product[0] != '/') fprintf(fp, " %s.%s.* %d %d\n", product, section, d->vernumber[0], d->vernumber[1]); } fputs(" )\n", fp); } for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) if (d->type == DEPEND_REPLACES && d->subpackage == subpackage) { if (!strcmp(d->product, "_self")) product = selfname; else product = d->product; if (strchr(product, '.') != NULL) { fprintf(fp, " replaces %s %d %d\n", product, d->vernumber[0], d->vernumber[1]); fprintf(fp, " updates %s %d %d\n", product, d->vernumber[0], d->vernumber[1]); } else if (product[0] != '/') { fprintf(fp, " replaces %s.%s.* %d %d\n", product, section, d->vernumber[0], d->vernumber[1]); fprintf(fp, " updates %s.%s.* %d %d\n", product, section, d->vernumber[0], d->vernumber[1]); } } else if (d->type == DEPEND_INCOMPAT && d->subpackage == subpackage) { if (!strcmp(d->product, "_self")) product = selfname; else product = d->product; if (strchr(product, '.') != NULL) fprintf(fp, " incompat %s %d %d\n", product, d->vernumber[0], d->vernumber[1]); else if (product[0] != '/') fprintf(fp, " incompat %s.%s.* %d %d\n", product, section, d->vernumber[0], d->vernumber[1]); } fputs(" endsubsys\n", fp); } jimjag-epm-84910c6/install-sh000077500000000000000000000127041521151356300160240ustar00rootroot00000000000000#!/bin/sh # # Install a program, script, or datafile. # # Copyright 2008-2012 by Apple Inc. # # This script is not compatible with BSD (or any other) install program, as it # allows owner and group changes to fail with a warning and makes sure that the # destination directory permissions are as specified - BSD install and the # original X11 install script did not change permissions of existing # directories. It also does not support the transform options since CUPS does # not use them... # # Original script from X11R5 (mit/util/scripts/install.sh) # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # Force umask to 022... umask 022 # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" gzipprog="${GZIPPROG-gzip}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" gzipcp() { # gzipcp from to $gzipprog -9 <"$1" >"$2" } while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue ;; -d) dir_arg=true shift continue ;; -m) chmodcmd="$chmodprog $2" shift shift continue ;; -o) chowncmd="$chownprog $2" shift shift continue ;; -g) chgrpcmd="$chgrpprog $2" shift shift continue ;; -s) stripcmd="$stripprog" shift continue ;; -z) instcmd="gzipcp" shift continue ;; *) if [ x"$src" = x ]; then src="$1" else dst="$1" fi shift continue ;; esac done if [ x"$src" = x ]; then echo "install-sh: No input file specified" exit 1 fi if [ x"$dir_arg" != x ]; then dst="$src" src="" if [ -d "$dst" ]; then instcmd=: else instcmd=$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ ! -f "$src" -a ! -d "$src" ]; then echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ]; then echo "install: No destination specified" exit 1 fi # If destination is a directory, append the input filename. if [ -d "$dst" ]; then dst="$dst/`basename $src`" fi fi ## this sed command emulates the dirname command dstdir="`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`" # Make sure that the destination directory exists. # This part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ]; then $doit $mkdirprog "${pathcomp}"; fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ]; then # Make a directory... $doit $instcmd $dst || exit 1 # Allow chown/chgrp to fail, but log a warning if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst || echo "warning: Unable to change owner of $dst!"; fi if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst || echo "warning: Unable to change group of $dst!"; fi if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst || exit 1; fi else # Install a file... dstfile="`basename $dst`" # Check the destination file - for libraries just use the "-x" option # to strip... case "$dstfile" in *.a | *.dylib | *.sl | *.sl.* | *.so | *.so.*) stripopt="-x" ;; *) stripopt="" ;; esac # Make a temp file name in the proper directory. dsttmp="$dstdir/#inst.$$#" # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp || exit 1 # Update permissions and strip as needed, then move to the final name. # If the chmod, strip, rm, or mv commands fail, remove the installed # file... if [ x"$stripcmd" != x ]; then $doit $stripcmd $stripopt "$dsttmp" || echo "warning: Unable to strip $dst!"; fi if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp" || echo "warning: Unable to change owner of $dst!"; fi if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp" || echo "warning: Unable to change group of $dst!"; fi trap "rm -f ${dsttmp}" 0 && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; fi && $doit $rmcmd -f "$dstdir/$dstfile" && $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" fi exit 0 jimjag-epm-84910c6/jimjag.patch000066400000000000000000007103631521151356300163100ustar00rootroot00000000000000diff --git a/tmp/epm/CHANGES.md b/./epm/CHANGES.md index e340707..2c342e7 100644 --- a/tmp/epm/CHANGES.md +++ b/./epm/CHANGES.md @@ -12,8 +12,6 @@ Changes in EPM 4.5.1 Changes in EPM 4.5 ------------------ -- Dropped support for AIX, AT&T (Solaris), Tru64, HP-UX, IRIX, LSB, and - Slackware packages. - "make install" failed due to the README filename changing (Issue #59) - The `mkepmlist` utility did not correctly handle filenames containing the `$` character (Issue #62) @@ -26,6 +24,21 @@ Changes in EPM 4.5 - Documentation updates (Issue #74, Issue #77) - Cleaned up old sprintf and strcpy usage in many places. +Changes in EPM 4.4.2 +-------------------- + +- Support Apache OpenOffice patches + +Changes in EPM 4.4.1 +-------------------- + +- "make install" failed due to the README filename changing (Issue #59) +- The `mkepmlist` utility did not correctly handle filenames containing the + `$` character (Issue #62) +- The configure script incorrectly substituted "NONE" for the installation + prefix (Issue #67) +- Cleaned up old sprintf and strcpy usage in many places. + Changes in EPM 4.4 ------------------ diff --git a/tmp/epm/INSTALL.md b/./epm/INSTALL.md index dff967d..56e8546 100644 --- a/tmp/epm/INSTALL.md +++ b/./epm/INSTALL.md @@ -38,6 +38,12 @@ different location, use the `--prefix` option to the configure script: ./configure --prefix=/path/to/use ENTER make ENTER +If using to build Apache OpenOffice, you will need to also include the `--enable-aoo` +option, to activate those AOO specific changes: + + ./configure --enable-aoo ENTER + make ENTER + Once EPM is compiled you can type: sudo make install ENTER diff --git a/tmp/epm/Makefile.in b/./epm/Makefile.in index 4f31584..1e4be86 100644 --- a/tmp/epm/Makefile.in +++ b/./epm/Makefile.in @@ -86,18 +86,24 @@ TARGETS = libepm.a \ epminstall \ mkepmlist \ @GUIS@ -EPM_OBJS = bsd.o \ +EPM_OBJS = aix.o \ + bsd.o \ deb.o \ dist.o \ file.o \ + inst.o \ macos.o \ + pkg.o \ portable.o \ qprintf.o \ rpm.o \ run.o \ + setld.o \ + slackware.o \ snprintf.o \ string.o \ support.o \ + swinstall.o \ tar.o SETUP_OBJS = setup.o \ setup2.o \ @@ -115,8 +121,6 @@ OBJS = epm.o \ # Make all targets... all: $(TARGETS) Makefile config.h - - # Clean all generated files... clean: $(RM) $(OBJS) @@ -132,6 +136,18 @@ distclean: $(RM) epm.list +# +# Run the clang.llvm.org static code analysis tool on the C sources. +# + +.PHONY: clang clang-changes +clang: + $(RM) -r clang + scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) clean all +clang-changes: + scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) all + + # Install all targets... install: all @INSTALL_GUIS@ @INSTALL_OSX@ echo Installing EPM programs in $(BUILDROOT)$(bindir) @@ -139,7 +155,7 @@ install: all @INSTALL_GUIS@ @INSTALL_OSX@ for file in epm epminstall mkepmlist; do \ $(INSTALL) -c -m 755 $$file $(BUILDROOT)$(bindir); \ done - (cd doc; $(MAKE) $(MFLAGS) install) + #(cd doc; $(MAKE) $(MFLAGS) install) install-guis: setup uninst echo Installing EPM setup/uninst in $(BUILDROOT)$(libdir)/epm @@ -210,12 +226,21 @@ test: $(TARGETS) # Make distributions in different formats using EPM... +aix: $(TARGETS) + ./epm -f aix -v epm + bsd: $(TARGETS) ./epm -f bsd -v epm +slackware: $(TARGETS) + ./epm -f slackware -v epm + deb: $(TARGETS) ./epm -f deb -v epm +inst tardist: $(TARGETS) + ./epm -f tardist -v epm + gui: $(TARGETS) ./epm -f portable -v -s default.png --setup-program setup \ --uninstall-program uninst --data-dir . epm @@ -224,9 +249,14 @@ lsb macos portable rpm: $(TARGETS) ./epm -f $@ -v -s default.png --setup-program setup \ --uninstall-program uninst --data-dir . epm +pkg: $(TARGETS) + ./epm -f pkg -v epm + native: $(TARGETS) ./epm -f native -v epm +swinstall depot: $(TARGETS) + ./epm -f depot -v epm # libepm.a libepm.a: $(EPM_OBJS) diff --git a/tmp/epm/README.md b/./epm/README.md index 21b60e0..8a4efc7 100644 --- a/tmp/epm/README.md +++ b/./epm/README.md @@ -8,11 +8,17 @@ EPM is a simple cross-platform tool that generates software and patch distributions in various formats from a list of files. Supported formats include: +- AIX software packages ("installp") +- AT&T software packages ("pkgadd"), used by Solaris and others - BSD packages ("pkg_create") +- Compaq Tru64 UNIX ("setld") - Debian Package Manager ("dpkg") +- HP-UX software packages ("swinstall") +- IRIX software manager ("inst", "swmgr", or "tardist") - macOS software packages ("name.pkg") - Portable (installation and removal scripts with tar files) - Red Hat Package Manager ("rpm") +- Slackware software packages ("name.tgz") EPM also includes graphical "setup" and "uninstall" programs that can be provided with your distributions to make installation and removal of more than @@ -22,7 +28,13 @@ one package a snap. The installers can be customized with product logos, EPM is provided as free software under version 2 of the GNU General Public license. -> Note: This software is currently in maintenance mode. +How is this releated to the official EPM? +----------------------------------------- + +This version is a matched fork of that repo, but with Apache OpenOffice (and related) +specific changes applied to the source code. These changes are only in effect if +EPM is configured and built with the `--enable-aoo ` option. This version also +continues to support platforms deprecated by the offical EPM. How Do I Compile EPM? @@ -59,8 +71,8 @@ Resources The official home page for EPM is . -Report all problems and submit all patches/pull requests using the Github issue -tracking pages at . +Report all problems and submit all patches/pull requests for this version using the Github issue +tracking pages at . Legal Stuff diff --git a/./epm/aix.c b/./epm/aix.c new file mode 100644 index 0000000..b4485e3 --- /dev/null +++ b/./epm/aix.c @@ -0,0 +1,926 @@ +/* + * AIX package gateway for the ESP Package Manager (EPM). + * + * Copyright 1999-2019 by Michael R Sweet + * Copyright 1999-2010 by Easy Software Products. + * + * 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, 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 necessary headers... + */ + +#include "epm.h" + + +/* + * Directory information... + */ + +typedef struct +{ + char dst[1024]; /* Output directory */ + int blocks; /* Size of files in this directory */ +} aixdir_t; + + +/* + * Local functions... + */ + +static int aix_addfile(int type, const char *src, const char *dst, + int num_dirs, aixdir_t **dirs); +static void aix_fileset(FILE *fp, const char *prodname, dist_t *dist, + const char *subpackage); +static char *aix_version(const char *version); +static int write_liblpp(const char *prodname, + const char *directory, + dist_t *dist, int root, + const char *subpackage); + + +/* + * Local globals... + */ + +static const char *files[] = /* Control files... */ + { + "al", + "cfgfiles", + "copyright", + "inventory", + "post_i", + "pre_i", + "unpost_i", + "unpre_i" + }; + + +/* + * 'make_aix()' - Make an AIX software distribution package. + */ + +int /* O - 0 = success, 1 = fail */ +make_aix(const char *prodname, /* I - Product short name */ + const char *directory, /* I - Directory for distribution files */ + const char *platname, /* I - Platform name */ + dist_t *dist, /* I - Distribution information */ + struct utsname *platform) /* I - Platform information */ +{ + int i; /* Looping var */ + FILE *fp; /* Control file */ + char name[1024], /* Full product name */ + filename[1024], /* Destination filename */ + current[1024]; /* Current directory */ + file_t *file; /* Current distribution file */ + struct passwd *pwd; /* Pointer to user record */ + struct group *grp; /* Pointer to group record */ + const char *runlevels; /* Run levels */ + + + REF(platform); + + if (Verbosity) + puts("Creating AIX distribution..."); + + if (dist->release[0]) + { + if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, dist->version, + dist->release, platname); + else + snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, + dist->release); + } + else if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); + else + snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); + + getcwd(current, sizeof(current)); + + /* + * Write the lpp_name file for installp... + */ + + if (Verbosity) + puts("Creating lpp_name file..."); + + snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); + make_directory(filename, 0755, 0, 0); + + snprintf(filename, sizeof(filename), "%s/%s/lpp_name", directory, prodname); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create lpp_name file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + fprintf(fp, "4 R I %s {\n", prodname); + + aix_fileset(fp, prodname, dist, NULL); + for (i = 0; i < dist->num_subpackages; i ++) + aix_fileset(fp, prodname, dist, dist->subpackages[i]); + + fputs("}\n", fp); + + fclose(fp); + + /* + * Write the root partition liblpp.a file... + */ + + write_liblpp(prodname, directory, dist, 1, NULL); + for (i = 0; i < dist->num_subpackages; i ++) + write_liblpp(prodname, directory, dist, 1, dist->subpackages[i]); + + /* + * Write the usr partition liblpp.a file... + */ + + write_liblpp(prodname, directory, dist, 0, NULL); + for (i = 0; i < dist->num_subpackages; i ++) + write_liblpp(prodname, directory, dist, 0, dist->subpackages[i]); + + /* + * Copy the files over... + */ + + if (Verbosity) + puts("Copying temporary distribution files..."); + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + { + /* + * Find the username and groupname IDs... + */ + + pwd = getpwnam(file->user); + grp = getgrnam(file->group); + + endpwent(); + endgrent(); + + /* + * Copy the file or make the directory or make the symlink as needed... + */ + + switch (tolower(file->type)) + { + case 'c' : + case 'f' : + if (!strncmp(file->dst, "/export/", 8) || + !strncmp(file->dst, "/opt/", 5) || + !strncmp(file->dst, "/usr/", 5)) + snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodname, + file->dst); + else + snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root%s", + directory, prodname, prodname, file->dst); + + if (Verbosity > 1) + printf("%s -> %s...\n", file->src, filename); + + if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, + grp ? grp->gr_gid : 0)) + return (1); + break; + case 'i' : + for (runlevels = get_runlevels(file, "2"); + isdigit(*runlevels & 255); + runlevels ++) + { + snprintf(filename, sizeof(filename), + "%s/%s/usr/lpp/%s/inst_root/etc/rc.d/rc%c.d/S%02d%s", + directory, prodname, prodname, *runlevels, + get_start(file, 99), file->dst); + + if (Verbosity > 1) + printf("%s -> %s...\n", file->src, filename); + + if (copy_file(filename, file->src, file->mode, + pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) + return (1); + + snprintf(filename, sizeof(filename), + "%s/%s/usr/lpp/%s/inst_root/etc/rc.d/rc%c.d/K%02d%s", + directory, prodname, prodname, *runlevels, + get_stop(file, 0), file->dst); + + if (Verbosity > 1) + printf("%s -> %s...\n", file->src, filename); + + if (copy_file(filename, file->src, file->mode, + pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) + return (1); + } + break; + case 'd' : + if (!strcmp(file->dst, "/export") || + !strncmp(file->dst, "/export/", 8) || + !strcmp(file->dst, "/opt") || + !strncmp(file->dst, "/opt/", 5) || + !strcmp(file->dst, "/usr") || + !strncmp(file->dst, "/usr/", 5)) + snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodname, + file->dst); + else + snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root%s", + directory, prodname, prodname, file->dst); + + if (Verbosity > 1) + printf("Directory %s...\n", filename); + + make_directory(filename, file->mode, pwd ? pwd->pw_uid : 0, + grp ? grp->gr_gid : 0); + break; + case 'l' : + if (!strncmp(file->dst, "/export/", 8) || + !strncmp(file->dst, "/opt/", 5) || + !strncmp(file->dst, "/usr/", 5)) + snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodname, + file->dst); + else + snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root%s", + directory, prodname, prodname, file->dst); + + if (Verbosity > 1) + printf("%s -> %s...\n", file->src, filename); + + make_link(filename, file->src); + break; + } + } + + /* + * Build the distribution from the spec file... + */ + + if (Verbosity) + puts("Building AIX binary distribution..."); + + snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); + + if (run_command(filename, + "sh -c \'find . -print | backup -i -f ../%s.bff -q %s\'", + prodname, Verbosity ? "-v" : "")) + return (1); + + /* + * Remove temporary files... + */ + + if (!KeepFiles) + { + if (Verbosity) + puts("Removing temporary distribution files..."); + + snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); + unlink_directory(filename); + + for (i = 0; i < (sizeof(files) / sizeof(files[0])); i ++) + { + snprintf(filename, sizeof(filename), "%s/%s.%s", directory, prodname, + files[i]); + unlink(filename); + } + + snprintf(filename, sizeof(filename), "%s/lpp.README", directory); + unlink(filename); + } + + return (0); +} + + +/* + * 'aix_addfile()' - Add a file to the AIX directory list... + */ + +static int /* O - New number dirs */ +aix_addfile(int type, /* I - Filetype */ + const char *src, /* I - Source path */ + const char *dst, /* I - Destination path */ + int num_dirs, /* I - Number of directories */ + aixdir_t **dirs) /* IO - Directories */ +{ + int i, j; /* Looping vars */ + int blocks; /* Blocks to add... */ + struct stat fileinfo; /* File information */ + aixdir_t *temp; /* Temporary pointer */ + char dstpath[1024], /* Destination path */ + *dstptr; /* Pointer into destination */ + + + /* + * Determine the destination path and block size... + */ + + strlcpy(dstpath, dst, sizeof(dstpath)); + + if (type == 'd') + { + blocks = 1; + dstptr = dstpath + strlen(dstpath) - 1; + } + else + { + dstptr = strrchr(dstpath, '/'); + + if (type == 'l') + blocks = 1; + else if (!stat(src, &fileinfo)) + blocks = (int)((fileinfo.st_size + 511) / 512); + else + blocks = 0; + } + + if (dstptr && *dstptr == '/' && dstptr > dstpath) + *dstptr = '\0'; + + /* + * Now see if the destination path is in the array... + */ + + temp = *dirs; + + for (i = 0; i < num_dirs; i ++) + if ((j = strcmp(temp[i].dst, dstpath)) == 0) + { + temp[i].blocks += blocks; + return (num_dirs); + } + else if (j > 0) + break; + + /* + * Not in the list; allocate a new one... + */ + + if (num_dirs == 0) + temp = malloc(sizeof(aixdir_t)); + else + temp = realloc(*dirs, (num_dirs + 1) * sizeof(aixdir_t)); + + if (!temp) + return (num_dirs); + + *dirs = temp; + temp += i; + + if (i < num_dirs) + memmove(temp + 1, temp, (num_dirs - i) * sizeof(aixdir_t)); + + strlcpy(temp->dst, dstpath, sizeof(temp->dst)); + temp->blocks = blocks; + + return (num_dirs + 1); +} + + +/* + * 'aix_fileset()' - Write a subpackage description... + */ + +static void +aix_fileset(FILE *fp, /* I - File to write to */ + const char *prodname, /* I - Product name */ + dist_t *dist, /* I - Distribution */ + const char *subpackage) /* I - Subpackage */ +{ + int i; /* Looping var */ + depend_t *d; /* Current dependency */ + file_t *file; /* Current distribution file */ + int num_dirs; /* Number of directories */ + aixdir_t *dirs; /* Directories */ + + + /* + * Start fileset definition... + */ + + if (subpackage) + fprintf(fp, "%s.%s", prodname, subpackage); + else + fprintf(fp, "%s", prodname); + + fprintf(fp, " %s 01 N B x ", aix_version(dist->version)); + + if (subpackage) + { + for (i = 0; i < dist->num_descriptions; i ++) + { + if (dist->descriptions[i].subpackage == subpackage) + { + fprintf(fp, "%s\n", dist->descriptions[i].description); + break; + } + } + } + else + fprintf(fp, "%s\n", dist->product); + + + /* + * Dependencies... + */ + + fputs("[\n", fp); + for (i = dist->num_depends, d = dist->depends; i > 0; i --, d ++) + if (d->type == DEPEND_REQUIRES && d->subpackage == subpackage && + strcmp(d->product, "_self")) + fprintf(fp, "*prereq %s %s\n", d->product, aix_version(d->version[0])); + + /* + * Installation sizes... + */ + + fputs("%\n", fp); + + num_dirs = 0; + dirs = NULL; + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (file->subpackage == subpackage) + num_dirs = aix_addfile(tolower(file->type), file->src, file->dst, + num_dirs, &dirs); + + for (i = 0; i < num_dirs; i ++) + fprintf(fp, "%s %d\n", dirs[i].dst, dirs[i].blocks); + + if (num_dirs > 0) + free(dirs); + + /* + * This package supercedes which others? + */ + + fputs("%\n", fp); + for (i = dist->num_depends, d = dist->depends; i > 0; i --, d ++) + if (d->type == DEPEND_REPLACES && d->subpackage == subpackage && + strcmp(d->product, "_self")) + fprintf(fp, "%s %s", d->product, aix_version(d->version[0])); + + /* + * Fix information is only used for updates (patches)... + */ + + fputs("%\n", fp); + fputs("]\n", fp); +} + + +/* + * 'aix_version()' - Generate an AIX version number. + */ + +static char * /* O - AIX version number */ +aix_version(const char *version) /* I - EPM version number */ +{ + int verparts[4]; /* Version number parts */ + static char aix[255]; /* AIX version number string */ + + + /* + * AIX requires a four-part version number (M.m.p.r)... + */ + + memset(verparts, 0, sizeof(verparts)); + sscanf(version, "%d.%d.%d.%d", verparts + 0, verparts + 1, + verparts + 2, verparts + 3); + snprintf(aix, sizeof(aix), "%d.%d.%d.%d", verparts[0], verparts[1], + verparts[2], verparts[3]); + + return (aix); +} + + +/* + * 'write_liblpp()' - Create the liblpp.a file for the root or /usr parts. + */ + +static int /* O - 0 = success, 1 = fail */ +write_liblpp(const char *prodname, /* I - Product short name */ + const char *directory, /* I - Directory for distribution files */ + dist_t *dist, /* I - Distribution information */ + int root, /* I - Root partition? */ + const char *subpackage)/* I - Subpackage */ +{ + int i; /* Looping var */ + FILE *fp; /* Control file */ + char filename[1024], /* Destination filename */ + prodfull[1024]; /* Full product name */ + struct stat fileinfo; /* File information */ + command_t *c; /* Current command */ + file_t *file; /* Current distribution file */ + int configcount; /* Number of config files */ + int shared_file; /* Shared file? */ + const char *runlevels; /* Run levels */ + + + /* + * Progress info... + */ + + if (subpackage) + snprintf(prodfull, sizeof(prodfull), "%s.%s", prodname, subpackage); + else + strlcpy(prodfull, prodname, sizeof(prodfull)); + + if (Verbosity) + printf("Updating %s partition liblpp.a file for %s...\n", + root ? "root" : "shared", prodfull); + + /* + * Write the product.al file for installp... + */ + + if (Verbosity > 1) + puts(" Creating .al file..."); + + snprintf(filename, sizeof(filename), "%s/%s.al", directory, prodfull); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create .al file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (file->subpackage == subpackage) + switch (tolower(file->type)) + { + case 'i' : + for (runlevels = get_runlevels(file, "2"); + isdigit(*runlevels & 255); + runlevels ++) + { + if (root) + putc('.', fp); + else + qprintf(fp, "./usr/lpp/%s/inst_root", prodfull); + + if (*runlevels == '0') + qprintf(fp, "/etc/rc.d/rc0.d/K%02d%s\n", + get_stop(file, 0), file->dst); + else + qprintf(fp, "/etc/rc.d/rc%c.d/S%02d%s\n", + *runlevels, get_start(file, 99), file->dst); + } + break; + + default : + shared_file = !(strcmp(file->dst, "/usr") && + strncmp(file->dst, "/usr/", 5) && + strcmp(file->dst, "/opt") && + strncmp(file->dst, "/opt/", 5)); + + /* + * Put file in root or share .al file as appropriate + */ + + if ((shared_file && !root) || (!shared_file && root)) + qprintf(fp, ".%s\n", file->dst); + + /* + * Put any root file in the share .al so it will be extracted + * to /usr/lpp//inst_root directory. I have no + * idea if this is really the way to do it but it seems to + * work... + */ + + if (!shared_file && !root) + qprintf(fp, "./usr/lpp/%s/inst_root%s\n", prodfull, file->dst); + break; + } + + fclose(fp); + + /* + * Write the product.cfgfiles file for installp... + */ + + if (Verbosity > 1) + puts(" Creating .cfgfiles file..."); + + snprintf(filename, sizeof(filename), "%s/%s.cfgfiles", directory, prodfull); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create .cfgfiles file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + configcount = 0; + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'c' && file->subpackage == subpackage && + (strcmp(file->dst, "/usr") || + strncmp(file->dst, "/usr/", 5) || + strcmp(file->dst, "/opt") || + strncmp(file->dst, "/opt/", 5)) == root) + { + qprintf(fp, ".%s hold_new\n", file->dst); + configcount ++; + } + + fclose(fp); + + /* + * Write the product.copyright file for installp... + */ + + if (Verbosity > 1) + puts(" Creating .copyright file..."); + + snprintf(filename, sizeof(filename), "%s/%s.copyright", directory, prodfull); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create .copyright file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + fprintf(fp, "%s, %s\n%s\n%s\n", dist->product, aix_version(dist->version), + dist->vendor, dist->copyright); + + fclose(fp); + + if (root) + { + /* + * Write the product.pre_i file for installp... + */ + + if (Verbosity > 1) + puts(" Creating .pre_i file..."); + + snprintf(filename, sizeof(filename), "%s/%s.pre_i", directory, prodfull); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create .pre_i file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (c = dist->commands, i = dist->num_commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_INSTALL && c->subpackage == subpackage) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + + /* + * Write the product.post_i file for installp... + */ + + if (Verbosity > 1) + puts(" Creating .post_i file..."); + + snprintf(filename, sizeof(filename), "%s/%s.post_i", directory, prodfull); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create .post_i file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (c = dist->commands, i = dist->num_commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_INSTALL && c->subpackage == subpackage) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + + /* + * Write the product.unpre_i file for installp... + */ + + if (Verbosity > 1) + puts(" Creating .unpre_i file..."); + + snprintf(filename, sizeof(filename), "%s/%s.unpre_i", directory, prodfull); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create .unpre_i file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (c = dist->commands, i = dist->num_commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_REMOVE && c->subpackage == subpackage) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + + /* + * Write the product.unpost_i file for installp... + */ + + if (Verbosity > 1) + puts(" Creating .unpost_i file..."); + + snprintf(filename, sizeof(filename), "%s/%s.unpost_i", directory, prodfull); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create .unpost_i file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (c = dist->commands, i = dist->num_commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_REMOVE && c->subpackage == subpackage) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + + /* + * Write the product.inventory file for installp... + */ + + if (Verbosity > 1) + puts(" Creating .inventory file..."); + + snprintf(filename, sizeof(filename), "%s/%s.inventory", directory, prodfull); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create .inventory file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + { + if (file->subpackage != subpackage) + continue; + + if (root) + { + if (!strcmp(file->dst, "/usr") || + !strncmp(file->dst, "/usr/", 5) || + !strcmp(file->dst, "/opt") || + !strncmp(file->dst, "/opt/", 5)) + continue; + } + else + { + if (tolower(file->type) == 'c' || + (strcmp(file->dst, "/usr") && + strncmp(file->dst, "/usr/", 5) && + strcmp(file->dst, "/opt") && + strncmp(file->dst, "/opt/", 5))) + continue; + } + + switch (tolower(file->type)) + { + case 'i' : + for (runlevels = get_runlevels(file, "2"); + isdigit(*runlevels & 255); + runlevels ++) + { + if (*runlevels == '0') + qprintf(fp, "/etc/rc.d/rc0.d/K%02d%s:\n", + get_stop(file, 0), file->dst); + else + qprintf(fp, "/etc/rc.d/rc%c.d/S%02d%s:\n", + *runlevels, get_start(file, 99), file->dst); + + fprintf(fp, " class=apply,inventory,%s\n", prodfull); + + fputs(" type=FILE\n", fp); + if (!stat(file->src, &fileinfo)) + fprintf(fp, " size=%d\n", (int)fileinfo.st_size); + + fprintf(fp, " owner=%s\n", file->user); + fprintf(fp, " group=%s\n", file->group); + fprintf(fp, " mode=%04o\n", (unsigned)file->mode); + fputs("\n", fp); + } + break; + default : + qprintf(fp, "%s:\n", file->dst); + fprintf(fp, " class=apply,inventory,%s\n", prodfull); + + switch (tolower(file->type)) + { + case 'd' : + fputs(" type=DIRECTORY\n", fp); + break; + case 'l' : + fputs(" type=SYMLINK\n", fp); + qprintf(fp, " target=%s\n", file->src); + break; + case 'c' : + fputs(" type=FILE\n", fp); + fputs(" size=VOLATILE\n", fp); + break; + default : + fputs(" type=FILE\n", fp); + if (!stat(file->src, &fileinfo)) + fprintf(fp, " size=%ld\n", (long)fileinfo.st_size); + break; + } + + fprintf(fp, " owner=%s\n", file->user); + fprintf(fp, " group=%s\n", file->group); + fprintf(fp, " mode=%04o\n", (unsigned)file->mode); + fputs("\n", fp); + break; + } + } + + fclose(fp); + + /* + * Write the lpp.README file... + */ + + snprintf(filename, sizeof(filename), "%s/lpp.README", directory); + + if (dist->license[0]) + copy_file(filename, dist->license, 0644, 0, 0); + else if (dist->readme[0]) + copy_file(filename, dist->readme, 0644, 0, 0); + else if ((fp = fopen(filename, "w")) != NULL) + fclose(fp); + else + { + fprintf(stderr, "epm: Unable to create .README file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + /* + * Create the liblpp.a file... + */ + + if (Verbosity > 1) + puts(" Creating liblpp.a archive..."); + + if (root) + { + snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s/inst_root", + directory, prodname, prodname); + make_directory(filename, 0755, 0, 0); + + snprintf(filename, sizeof(filename), "%s/usr/lpp/%s/inst_root/liblpp.a", + prodname, prodname); + } + else + { + snprintf(filename, sizeof(filename), "%s/%s/usr/lpp/%s", + directory, prodname, prodname); + make_directory(filename, 0755, 0, 0); + + snprintf(filename, sizeof(filename), "%s/usr/lpp/%s/liblpp.a", + prodname, prodname); + } + + if (!subpackage) + if (run_command(directory, "ar rc %s lpp.README", filename)) + return (1); + + for (i = 0; i < (sizeof(files) / sizeof(files[0])); i ++) + { + if (i >= 4 && !root) + break; + + if (i == 1 && !configcount) + continue; + + if (run_command(directory, "ar rc %s %s.%s", + filename, prodfull, files[i])) + return (1); + } + + return (0); +} diff --git a/tmp/epm/bsd.c b/./epm/bsd.c index 8086146..9e7d957 100644 --- a/tmp/epm/bsd.c +++ b/./epm/bsd.c @@ -26,6 +26,18 @@ * Local functions... */ +#ifdef __FOR_AOO__ +static void cr2semicolon(char *command) +{ + int len, i; + + len = strlen(command); + for (i = 0; i < len; i++) + if (*(command+i)=='\n') + *(command+i)=';'; +} +#endif + static int make_subpackage(const char *prodname, const char *directory, const char *platname, dist_t *dist, const char *subpackage); @@ -197,12 +209,24 @@ make_subpackage( if (d->subpackage != subpackage) continue; +#ifdef __FOR_AOO__ +#ifdef __FreeBSD__ + if (d->type == DEPEND_REQUIRES) { + if (dist->relnumber) { + fprintf(fp, "@pkgdep %s-%s-%d-%s", d->product, dist->version, dist->relnumber, platname); + } else { + fprintf(fp, "@pkgdep %s-%s-%s", d->product, dist->version, platname); + } + } else +#endif /* __FreeBSD__ */ +#else if (d->type == DEPEND_REQUIRES) #ifdef __OpenBSD__ fprintf(fp, "@depend %s", d->product); #else fprintf(fp, "@pkgdep %s", d->product); #endif /* __OpenBSD__ */ +#endif /* __FOR_AOO__ */ else #ifdef __FreeBSD__ /* @@ -229,9 +253,15 @@ make_subpackage( " by the BSD packager.\n", stderr); break; case COMMAND_POST_INSTALL : +#ifdef __FOR_AOO__ + cr2semicolon(c->command); +#endif /* __FOR_AOO__ */ fprintf(fp, "@exec %s\n", c->command); break; case COMMAND_PRE_REMOVE : +#ifdef __FOR_AOO__ + cr2semicolon(c->command); +#endif /* __FOR_AOO__ */ fprintf(fp, "@unexec %s\n", c->command); break; case COMMAND_POST_REMOVE : diff --git a/tmp/epm/config.h.in b/./epm/config.h.in index 765b587..7870c1a 100644 --- a/tmp/epm/config.h.in +++ b/./epm/config.h.in @@ -50,6 +50,7 @@ */ #define EPM_RPMBUILD "rpm" +#define EPM_RPMBUILD_NEW "rpmbuild" /* diff --git a/tmp/epm/configure b/./epm/configure index 5fabb92..27a3674 100755 --- a/tmp/epm/configure +++ b/./epm/configure @@ -1,8 +1,8 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for EPM 4.5. +# Generated by GNU Autoconf 2.69 for EPM 4.5.0-jj. # -# Report bugs to . +# Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -267,8 +267,8 @@ fi $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: https://github.com/michaelrsweet/epm/issues about your -$0: system, including any error possibly output before this +$0: https://github.com/jimjag/epm/issues about your system, +$0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi @@ -580,10 +580,10 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='EPM' PACKAGE_TARNAME='epm' -PACKAGE_VERSION='4.5' -PACKAGE_STRING='EPM 4.5' -PACKAGE_BUGREPORT='https://github.com/michaelrsweet/epm/issues' -PACKAGE_URL='https://www.msweet.org/epm' +PACKAGE_VERSION='4.5.0-jj' +PACKAGE_STRING='EPM 4.5.0-jj' +PACKAGE_BUGREPORT='https://github.com/jimjag/epm/issues' +PACKAGE_URL='https://github.com/jimjag/epm' # Factoring default headers for most tests. ac_includes_default="\ @@ -642,6 +642,8 @@ STRIP RPMBUILD RPM RM +GROFF +NROFF MKDIR INSTALL_DATA INSTALL_SCRIPT @@ -652,6 +654,9 @@ CP CODE_SIGN CHMOD AR +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM RANLIB ac_ct_CXX CXXFLAGS @@ -720,6 +725,8 @@ with_archflags with_optim enable_debug enable_gui +enable_fltk +enable_aoo with_docdir with_softwaredir ' @@ -1275,7 +1282,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures EPM 4.5 to adapt to many kinds of systems. +\`configure' configures EPM 4.5.0-jj to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1340,7 +1347,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of EPM 4.5:";; + short | recursive ) echo "Configuration of EPM 4.5.0-jj:";; esac cat <<\_ACEOF @@ -1350,6 +1357,8 @@ Optional Features: --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-debug turn on debugging [default=no] --enable-gui turn on GUI utilities [default=auto] + --enable-fltk enable fltk [default=auto] + --enable-aoo enable AOO modifications [default=no] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1376,8 +1385,8 @@ Some influential environment variables: Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. -Report bugs to . -EPM home page: . +Report bugs to . +EPM home page: . _ACEOF ac_status=$? fi @@ -1440,7 +1449,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -EPM configure 4.5 +EPM configure 4.5.0-jj generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1756,9 +1765,9 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ---------------------------------------------------------- ## -## Report this to https://github.com/michaelrsweet/epm/issues ## -## ---------------------------------------------------------- ##" +( $as_echo "## --------------------------------------------------- ## +## Report this to https://github.com/jimjag/epm/issues ## +## --------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac @@ -1847,7 +1856,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by EPM $as_me 4.5, which was +It was created by EPM $as_me 4.5.0-jj, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2198,8 +2207,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" -VERSION="4.5" -VERNUMBER=450 + +VERSION="4.5.0-jj" +VERNUMBER=450jj cat >>confdefs.h <<_ACEOF @@ -2308,8 +2318,13 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac +uname=`uname` +uversion=`uname -r | sed -e '1,$s/[^0-9]//g'` host_os_name=`echo $host_os | sed -e '1,$s/[0-9.]*$//g'` +if test "$uname" = "IRIX64"; then + uname="IRIX" +fi CFLAGS="${CFLAGS:=}" @@ -2353,6 +2368,18 @@ if test "${enable_gui+set}" = set; then : fi +# Check whether --enable-fltk was given. +if test "${enable_fltk+set}" = set; then : + enableval=$enable_fltk; +fi + + +# Check whether --enable-aoo was given. +if test "${enable_aoo+set}" = set; then : + enableval=$enable_aoo; +fi + + # Check whether --with-docdir was given. if test "${with_docdir+set}" = set; then : @@ -3319,6 +3346,99 @@ else RANLIB="$ac_cv_prog_RANLIB" fi +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -3709,6 +3829,93 @@ $as_echo "no" >&6; } fi +# Extract the first word of "nroff", so it can be a program name with args. +set dummy nroff; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_NROFF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $NROFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_NROFF="$NROFF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NROFF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +NROFF=$ac_cv_path_NROFF +if test -n "$NROFF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5 +$as_echo "$NROFF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test x$NROFF = x; then + # Extract the first word of "groff", so it can be a program name with args. +set dummy groff; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GROFF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GROFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_GROFF="$GROFF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GROFF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GROFF=$ac_cv_path_GROFF +if test -n "$GROFF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GROFF" >&5 +$as_echo "$GROFF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test x$GROFF = x; then + NROFF="echo" + else + NROFF="$GROFF -T ascii" + fi +fi # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -4383,6 +4590,12 @@ if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then fi +if test "$uname" = "IRIX"; then + if test `uname -r` = 6.5; then + STRIP="$STRIP -f -s -k -l -h" + fi +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : @@ -4701,7 +4914,11 @@ _ACEOF fi done -for ac_func in snprintf vsnprintf +if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Forcing snprintf emulation for HP-UX." >&5 +$as_echo "$as_me: WARNING: Forcing snprintf emulation for HP-UX." >&2;} +else + for ac_func in snprintf vsnprintf do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -4713,6 +4930,7 @@ _ACEOF fi done +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostname" >&5 $as_echo_n "checking for library containing gethostname... " >&6; } if ${ac_cv_search_gethostname+:} false; then : @@ -4770,7 +4988,18 @@ if test "$ac_res" != no; then : fi -if test "x$enable_gui" != xno; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking if building for Apache OpenOffice" >&5 +$as_echo_n "checking Checking if building for Apache OpenOffice... " >&6; } +if test "x$enable_aoo" = xyes; then + CFLAGS="-D__FOR_AOO__ $CFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +if test "x$enable_gui" != xno && test "x$enable_fltk" = xyes; then # Extract the first word of "fltk-config", so it can be a program name with args. set dummy fltk-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -4949,6 +5178,79 @@ $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$OLDCFLAGS" + + # See if we are running HP-UX or Solaris; if so, try the + # -fpermissive option... + case $uname in + SunOS* | HP-UX*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GCC supports -fpermissive" >&5 +$as_echo_n "checking if GCC supports -fpermissive... " >&6; } + + OLDCFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fpermissive" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + CXXFLAGS="$CXXFLAGS -fpermissive" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$OLDCFLAGS" + ;; + + *) + ;; + esac +else + case $uname in + AIX*) + if test -z "$OPTIM"; then + OPTIM="-O2" + fi + ;; + HP-UX*) + if test -z "$OPTIM"; then + OPTIM="+O2" + fi + OPTIM="$OPTIM +DAportable" + ;; + IRIX*) + if test -z "$OPTIM"; then + OPTIM="-O2" + fi + if test $uversion -ge 62; then + OPTIM="$OPTIM -n32 -mips3" + OPTIM="$OPTIM -OPT:Olimit=3000" + OPTIM="-fullwarn -woff 1209,1506,1692 $OPTIM" + else + OPTIM="-fullwarn $OPTIM" + fi + ;; + SunOS*) + # Solaris + if test -z "$OPTIM"; then + OPTIM="-xO4" + fi + ;; + *) + # Running some other operating system... + echo "Building EPM with default compiler optimizations. Set the CFLAGS and CXXFLAGS" + echo "environment variable before running configure to override them." + ;; + esac fi case $host_os_name in @@ -4992,6 +5294,23 @@ elif test "$datadir" = "\${datarootdir}"; then datadir="$datarootdir" fi +if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then + case "$uname" in + *BSD* | Darwin* | Linux*) + # BSD, Darwin (macOS), and Linux + mandir="/usr/share/man" + ;; + IRIX*) + # SGI IRIX + mandir="/usr/share/catman/u_man" + ;; + *) + # All others + mandir="/usr/man" + ;; + esac +fi + if test x$softwaredir = x; then EPM_SOFTWARE="/etc/software" else @@ -5587,7 +5906,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by EPM $as_me 4.5, which was +This file was extended by EPM $as_me 4.5.0-jj, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5643,14 +5962,14 @@ $config_files Configuration headers: $config_headers -Report bugs to . -EPM home page: ." +Report bugs to . +EPM home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -EPM config.status 4.5 +EPM config.status 4.5.0-jj configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -5762,6 +6081,10 @@ _ASBOX $as_echo "$ac_log" } >&5 + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF diff --git a/tmp/epm/configure.ac b/./epm/configure.ac index bf8e416..5c94a44 100644 --- a/tmp/epm/configure.ac +++ b/./epm/configure.ac @@ -15,12 +15,13 @@ dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. dnl -AC_INIT([EPM],[4.5],[https://github.com/michaelrsweet/epm/issues],[epm],[https://www.msweet.org/epm]) +AC_INIT([EPM],[4.5.0-jj],[https://github.com/jimjag/epm/issues],[epm],[https://github.com/jimjag/epm]) AC_CONFIG_HEADER(config.h) dnl Version number... + VERSION="AC_PACKAGE_VERSION" -VERNUMBER=450 +VERNUMBER=450jj AC_SUBST(VERSION) AC_SUBST(VERNUMBER) AC_DEFINE_UNQUOTED(EPM_VERSION, "ESP Package Manager v$VERSION") @@ -29,8 +30,13 @@ dnl Get the build and host platforms and split the host_os value AC_CANONICAL_BUILD AC_CANONICAL_HOST +uname=`uname` +uversion=`uname -r | sed -e '1,$s/[[^0-9]]//g'` [host_os_name=`echo $host_os | sed -e '1,$s/[0-9.]*$//g'`] +if test "$uname" = "IRIX64"; then + uname="IRIX" +fi dnl Clear default debugging options and set normal optimization by dnl default unless the user asks for debugging specifically. @@ -59,6 +65,10 @@ fi) AC_ARG_ENABLE(gui, [ --enable-gui turn on GUI utilities [[default=auto]]]) +AC_ARG_ENABLE(fltk, [ --enable-fltk enable fltk [[default=auto]]]) + +AC_ARG_ENABLE(aoo, [ --enable-aoo enable AOO modifications [[default=no]]]) + AC_ARG_WITH(docdir, [ --with-docdir=/dir set directory for documentation [[default=${datadir}/doc/epm]]], docdir="$withval", @@ -75,6 +85,7 @@ dnl Checks for programs... AC_PROG_CC(clang cc gcc) AC_PROG_CXX(clang++ c++ g++) AC_PROG_RANLIB +AC_PROG_INSTALL AC_PATH_PROG(AR,ar) AC_PATH_PROG(CHMOD,chmod) AC_PATH_PROGS(CODE_SIGN, codesign true) @@ -90,6 +101,15 @@ if test "$INSTALL" = "$ac_install_sh"; then INSTALL="`pwd`/install-sh -c" fi AC_PATH_PROG(MKDIR,mkdir) +AC_PATH_PROG(NROFF,nroff) +if test x$NROFF = x; then + AC_PATH_PROG(GROFF,groff) + if test x$GROFF = x; then + NROFF="echo" + else + NROFF="$GROFF -T ascii" + fi +fi AC_PATH_PROG(RM,rm) AC_PATH_PROG(RPM,rpm) AC_PATH_PROG(RPMBUILD,rpmbuild) @@ -99,6 +119,12 @@ dnl Architecture checks... AC_C_CONST AC_C_CHAR_UNSIGNED +if test "$uname" = "IRIX"; then + if test `uname -r` = 6.5; then + STRIP="$STRIP -f -s -k -l -h" + fi +fi + dnl Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT @@ -110,10 +136,22 @@ AC_CHECK_HEADER(sys/vfs.h,AC_DEFINE(HAVE_SYS_VFS_H)) dnl Checks for string functions. AC_CHECK_FUNCS(strcasecmp strdup strlcat strlcpy strncasecmp) -AC_CHECK_FUNCS(snprintf vsnprintf) +if test "$uname" = "HP-UX" -a "$uversion" = "1020"; then + AC_MSG_WARN(Forcing snprintf emulation for HP-UX.) +else + AC_CHECK_FUNCS(snprintf vsnprintf) +fi AC_SEARCH_LIBS(gethostname, socket) -if test "x$enable_gui" != xno; then +AC_MSG_CHECKING(Checking if building for Apache OpenOffice) +if test "x$enable_aoo" = xyes; then + CFLAGS="-D__FOR_AOO__ $CFLAGS" + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +if test "x$enable_gui" != xno && test "x$enable_fltk" = xyes; then AC_PATH_PROG(FLTKCONFIG,fltk-config) else FLTKCONFIG="" @@ -199,6 +237,62 @@ if test -n "$GCC"; then AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) CFLAGS="$OLDCFLAGS" + + # See if we are running HP-UX or Solaris; if so, try the + # -fpermissive option... + case $uname in + SunOS* | HP-UX*) + AC_MSG_CHECKING(if GCC supports -fpermissive) + + OLDCFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fpermissive" + AC_TRY_COMPILE(,, + CXXFLAGS="$CXXFLAGS -fpermissive" + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no)) + CFLAGS="$OLDCFLAGS" + ;; + + *) + ;; + esac +else + case $uname in + AIX*) + if test -z "$OPTIM"; then + OPTIM="-O2" + fi + ;; + HP-UX*) + if test -z "$OPTIM"; then + OPTIM="+O2" + fi + OPTIM="$OPTIM +DAportable" + ;; + IRIX*) + if test -z "$OPTIM"; then + OPTIM="-O2" + fi + if test $uversion -ge 62; then + OPTIM="$OPTIM -n32 -mips3" + OPTIM="$OPTIM -OPT:Olimit=3000" + OPTIM="-fullwarn -woff 1209,1506,1692 $OPTIM" + else + OPTIM="-fullwarn $OPTIM" + fi + ;; + SunOS*) + # Solaris + if test -z "$OPTIM"; then + OPTIM="-xO4" + fi + ;; + *) + # Running some other operating system... + echo "Building EPM with default compiler optimizations. Set the CFLAGS and CXXFLAGS" + echo "environment variable before running configure to override them." + ;; + esac fi dnl Flags for "ar" command... @@ -248,6 +342,24 @@ elif test "$datadir" = "\${datarootdir}"; then datadir="$datarootdir" fi +dnl Fix "mandir" variable if it hasn't been specified... +if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/usr"; then + case "$uname" in + *BSD* | Darwin* | Linux*) + # BSD, Darwin (macOS), and Linux + mandir="/usr/share/man" + ;; + IRIX*) + # SGI IRIX + mandir="/usr/share/catman/u_man" + ;; + *) + # All others + mandir="/usr/man" + ;; + esac +fi + dnl EPM_SOFTWARE needs special attention for the default location... if test x$softwaredir = x; then EPM_SOFTWARE="/etc/software" diff --git a/tmp/epm/deb.c b/./epm/deb.c index 59e7a80..1606e1f 100644 --- a/tmp/epm/deb.c +++ b/./epm/deb.c @@ -26,6 +26,31 @@ * Local functions... */ +#ifdef __FOR_AOO__ +/* + * 'add_size()' - Append Installed-Size tag to DEBIAN/control file + */ + +static int /* O - 0 = success, 1 = fail */ +add_size(FILE *fpControl, /* Control file stream */ + const char *directory) /* Directory containing all files to package */ +{ + FILE *fp; + char command[1024]; + + snprintf(command, sizeof(command), "du -k -s %s", directory); + fp = popen(command, "r"); + if( NULL != fp ) + { + char size[1024]; + fscanf(fp, "%s .", size); + fprintf(fpControl, "Installed-Size: %s\n", size); + return pclose(fp); + } + return 1; +} +#endif /* __FOR_AOO__ */ + static int make_subpackage(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform, @@ -48,11 +73,34 @@ make_deb(const char *prodname, /* I - Product short name */ char name[1024], /* Full product name */ filename[1024]; /* File to archive */ +#ifdef __FOR_AOO__ + /* + * Use debian default naming scheme + */ + + if (!strcmp(platname, "intel")) +#ifdef __FreeBSD_kernel__ + platname = "kfreebsd-i386"; +#else + platname = "i386"; +#endif + else if (!strcmp(platname, "x86_64")) +#ifdef __FreeBSD_kernel__ + platname = "kfreebsd-amd64"; +#else + platname = "amd64"; +#endif + else if (!strcmp(platname, "ppc")) + platname = "powerpc"; + +#else /* __FOR_AOO__ */ /* Debian packages use "amd64" instead of "x86_64" for the architecture... */ if (!strcmp(platname, "x86_64")) platname = "amd64"; +#endif /* __FOR_AOO__ */ + if (make_subpackage(prodname, directory, platname, dist, platform, NULL)) return (1); @@ -72,14 +120,26 @@ make_deb(const char *prodname, /* I - Product short name */ */ if (dist->release[0]) +#ifdef __FOR_AOO__ + snprintf(name, sizeof(name), "%s_%s_%s", prodname, dist->version, +#else /* __FOR_AOO__ */ snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, +#endif /* __FOR_AOO__ */ dist->release); else +#ifdef __FOR_AOO__ + snprintf(name, sizeof(name), "%s_%s", prodname, dist->version); +#else /* __FOR_AOO__ */ snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); +#endif /* __FOR_AOO__ */ if (platname[0]) { +#ifdef __FOR_AOO__ + strlcat(name, "_", sizeof(name)); +#else /* __FOR_AOO__ */ strlcat(name, "-", sizeof(name)); +#endif /* __FOR_AOO__ */ strlcat(name, platname, sizeof(name)); } @@ -183,7 +243,11 @@ make_subpackage(const char *prodname, */ if (subpackage) +#ifdef __FOR_AOO__ + snprintf(prodfull, sizeof(prodfull), "%s_%s", prodname, subpackage); +#else /* __FOR_AOO__ */ snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); +#endif /* __FOR_AOO__ */ else strlcpy(prodfull, prodname, sizeof(prodfull)); @@ -192,14 +256,26 @@ make_subpackage(const char *prodname, */ if (dist->release[0]) +#ifdef __FOR_AOO__ + snprintf(name, sizeof(name), "%s_%s_%s", prodfull, dist->version, +#else /* __FOR_AOO__ */ snprintf(name, sizeof(name), "%s-%s-%s", prodfull, dist->version, +#endif /* __FOR_AOO__ */ dist->release); else +#ifdef __FOR_AOO__ + snprintf(name, sizeof(name), "%s_%s", prodfull, dist->version); +#else /* __FOR_AOO__ */ snprintf(name, sizeof(name), "%s-%s", prodfull, dist->version); +#endif /* __FOR_AOO__ */ if (platname[0]) { +#ifdef __FOR_AOO__ + strlcat(name, "_", sizeof(name)); +#else /* __FOR_AOO__ */ strlcat(name, "-", sizeof(name)); +#endif /* __FOR_AOO__ */ strlcat(name, platname, sizeof(name)); } @@ -239,6 +315,24 @@ make_subpackage(const char *prodname, * (which we change in get_platform to a common name) */ +#ifdef __FOR_AOO__ + if (!strcmp(platform->machine, "intel")) +#ifdef __FreeBSD_kernel__ + fputs("Architecture: kfreebsd-i386\n", fp); +#else + fputs("Architecture: i386\n", fp); +#endif + else if (!strcmp(platform->machine, "x86_64")) +#ifdef __FreeBSD_kernel__ + fputs("Architecture: kfreebsd-amd64\n", fp); +#else + fputs("Architecture: amd64\n", fp); +#endif + else if (!strcmp(platform->machine, "ppc")) + fputs("Architecture: powerpc\n", fp); + else + fprintf(fp, "Architecture: %s\n", platform->machine); +#else /* __FOR_AOO__ */ if (!strcmp(platform->machine, "intel")) fputs("Architecture: i386\n", fp); if (!strcmp(platform->machine, "x86_64")) @@ -247,6 +341,7 @@ make_subpackage(const char *prodname, fputs("Architecture: powerpc\n", fp); else fprintf(fp, "Architecture: %s\n", platform->machine); +#endif fprintf(fp, "Description: %s\n", dist->product); fprintf(fp, " Copyright: %s\n", dist->copyright); @@ -504,6 +599,27 @@ make_subpackage(const char *prodname, fclose(fp); +#ifdef __FOR_AOO__ + /* + * Calculate and append Installed-Size to DEBIAN/control + */ + + if (Verbosity) + puts("Calculating Installed-Size..."); + + snprintf(filename, sizeof(filename), "%s/%s/DEBIAN/control", directory, name); + if ((fp = fopen(filename, "a")) == NULL) + { + fprintf(stderr, "epm: Unable to Installed-Size to file \"%s\" - %s\n", filename, + strerror(errno)); + return (1); + } + + snprintf(filename, sizeof(filename), "%s/%s", directory, name); + add_size(fp, filename); + fclose(fp); +#endif /* __FOR_AOO__ */ + /* * Copy the files over... */ diff --git a/tmp/epm/doc/1-intro.html b/./epm/doc/1-intro.html index 9cad352..5fcc7d5 100644 --- a/tmp/epm/doc/1-intro.html +++ b/./epm/doc/1-intro.html @@ -50,6 +50,20 @@ any operating system from the same sources.

    Map Files Un- install + + installp + AIX + Yes + No + No + No + Yes + Yes + No + No + No + Yes + pkg_add FreeBSD @@ -94,6 +108,34 @@ any operating system from the same sources.

    No Yes + + depot + HP-UX + Yes + No + Yes + Yes + Yes + Yes + No + Yes + Yes + Yes + + + inst + IRIX + Yes + No + Yes + Yes + Yes + Yes + Yes + Yes + Yes + Yes + Install.app macOS @@ -108,6 +150,20 @@ any operating system from the same sources.

    No No + + pkgadd + Solaris + Yes + No + Yes + No + Yes + Yes + No + Yes + Yes + Yes + rpm CentOS
    @@ -124,6 +180,34 @@ any operating system from the same sources.

    No Yes + + setld + Tru64 UNIX + Yes + No + No + No + Yes + Yes + No + No + No + Yes + + + slackware + Slackware Linux + Yes + No + No + No + Yes + Yes + No + No + No + Yes +
      diff --git a/tmp/epm/doc/2-building.html b/./epm/doc/2-building.html index e6e3c33..84f9d83 100644 --- a/tmp/epm/doc/2-building.html +++ b/./epm/doc/2-building.html @@ -149,10 +149,28 @@ Installing EPM documentation in /usr/local/share/doc/epm Operating System Name + + AIX + aix + + + Compaq Tru64 UNIX
      + Digital UNIX
      + OSF/1 + tru64 + FreeBSD freebsd + + HP-UX + hpux + + + IRIX + irix + Linux linux @@ -169,6 +187,10 @@ Installing EPM documentation in /usr/local/share/doc/epm OpenBSD openbsd + + Solaris + solaris + @@ -178,6 +200,14 @@ Installing EPM documentation in /usr/local/share/doc/epm Processor(s) Abbreviation + + Compaq Alpha + alpha + + + HP Precision Architecture + hppa + INTEL 80x86 intel @@ -225,6 +255,18 @@ Installing EPM documentation in /usr/local/share/doc/epm Format Command + + AIX + aix + installp -ddirectory epm + + + Compaq Tru64 UNIX
      + Digital UNIX
      + OSF/1 + setld + setld -a directory + FreeBSD
      NetBSD
      @@ -233,6 +275,16 @@ Installing EPM documentation in /usr/local/share/doc/epm cd directory
      pkg_add epm
      + + HP-UX + depot + swinstall -f directory + + + IRIX + inst + swmgr -f directory + Linux rpm @@ -243,6 +295,11 @@ Installing EPM documentation in /usr/local/share/doc/epm osx open directory/epm-4.1.pkg + + Solaris + pkg + pkgadd -d directory epm + diff --git a/tmp/epm/doc/3-packaging.html b/./epm/doc/3-packaging.html index 950b345..8786563 100644 --- a/tmp/epm/doc/3-packaging.html +++ b/./epm/doc/3-packaging.html @@ -113,6 +113,14 @@ provide them as a subpackage so that users that will not be developing add-ons to your software can omit them from the installation.

      +
      + +
      Note:
      +Subpackages are implemented as native subsets of the main package +for the AIX, HPUX, IRIX, Solaris, and Tru64 formats and as +separate packages that depend on the main (parent) package for +all other formats.
      +

      To define a subpackage, use the %subpackage directive followed by a %description directive:

      @@ -226,21 +234,37 @@ macOS software packages.

        +
      • aix - AIX software packages. +
      • bsd - FreeBSD, NetBSD, or OpenBSD software packages. +
      • depot or swinstall - HP-UX + software packages. +
      • dpkg - Debian software packages. +
      • inst or tardist - IRIX + software packages. +
      • native - "Native" software packages - (RPM, etc.) for the platform. + (RPM, INST, DEPOT, PKG, etc.) for the platform.
      • osx - macOS software packages. +
      • pkg - Solaris software packages. +
      • portable - Portable software packages (default).
      • rpm - Red Hat software packages. +
      • setld - Tru64 (setld) software + packages. + +
      • slackware - Slackware software + packages. +

      Everything in the software list file stays the same - you just @@ -263,12 +287,29 @@ directory is based on the operating system name, version, and architecture. Each package format will leave different files in the output directory.

      +

      AIX Package Files

      + +

      AIX packages are contained in a file called +name.bff, where "name" is the product/package name you +supplied on the command-line.

      +

      BSD Package Files

      BSD packages are contained in a file called name.tgz, where "name" is the product/package name you supplied on the command-line.

      +

      HP-UX Package Files

      + +

      HP-UX packages are contained in two files called +name.depot.gz and name.depot.tgz, where +"name" is the product/package name you supplied on the +command-line. The name.depot.gz file can be supplied +directly to the swinstall(1m) command, while the +name.depot.tgz file contains a compressed +tar(1) archive that can be used to install the +software from CD-ROM or network filesystem.

      +

      Debian Package Files

      Debian packages are contained in a file called @@ -279,6 +320,12 @@ contains a compressed tar archive containing name.deb and name-subpackage.deb files that can be installed from CD-ROM, disk, or network filesystem.

      +

      IRIX Package Files

      + +

      IRIX packages are contained in a file called +name.tardist, where "name" is the product/package name +you supplied on the command-line.

      +

      macOS Package Files

      macOS packages are contained in a file called @@ -295,5 +342,28 @@ contains a compressed tar archive containing name.rpm and name-subpackage.rpm files that can be installed from CD-ROM, disk, or network filesystem.

      +

      Slackware Package Files

      + +

      Slackware packages are contained in a file called +name.tgz, where "name" is the product/package name you +supplied on the command-line.

      + +

      Solaris Package Files

      + +

      Solaris packages are contained in two files called +name.pkg.gz and name.pkg.tgz, where "name" +is the product/package name you supplied on the command-line. The +name.pkg.gz file is a compressed package file that can +be used directly with the pkgadd(1m) command, while +the name.pkg.tgz file is a compressed tar +archive that can be used to install the software from CD-ROM, +disk, or network filesystem.

      + +

      Tru64 Package Files

      + +

      Tru64 packages are contained in a file called +name.tar.gz, where "name" is the product/package name +you supplied on the command-line.

      + diff --git a/tmp/epm/doc/4-advanced.html b/./epm/doc/4-advanced.html index 7ba68de..09afc17 100644 --- a/tmp/epm/doc/4-advanced.html +++ b/./epm/doc/4-advanced.html @@ -35,6 +35,13 @@ each package format.

      %replaces %requires + + aix + No + No + Yes + Yes + bsd Yes @@ -49,6 +56,13 @@ each package format.

      Yes Yes + + inst + Yes + No + Yes + Yes + osx No @@ -56,6 +70,13 @@ each package format.

      No No + + pkg + Yes + No + No + Yes + portable Yes @@ -70,6 +91,27 @@ each package format.

      No Yes + + setld + No + No + No + No + + + slackware + No + No + No + No + + + swinstall + No + No + Yes + Yes +
        @@ -170,6 +212,15 @@ of the software:

        %preremove %postremove + + aix + Yes + Yes + No + No + Yes + Yes + bsd No @@ -188,6 +239,15 @@ of the software:

        Yes Yes + + inst + Yes + Yes + No + No + Yes + Yes + osx Yes @@ -197,6 +257,15 @@ of the software:

        No No + + pkg + Yes + Yes + No + No + Yes + Yes + portable Yes @@ -215,6 +284,33 @@ of the software:

        Yes Yes + + setld + Yes + Yes + No + No + Yes + Yes + + + slackware + No + Yes + No + No + No + No + + + swinstall + Yes + Yes + No + No + Yes + Yes +

         

        @@ -488,6 +584,21 @@ Priority: extra EOF +

        PKG Literal Data

        + +

        PKG packages support request files that are used to do batch +installations when installation commands require user input. The +%literal(request) directive can be used to provide this user +input:

        + +
        +%literal(request) <<EOF
        +John Doe
        +1 Any Lane
        +Forest Lawn, OH 12345
        +EOF
        +
        +

        RPM Literal Data

        RPM packages support numerous attributes in the "spec" file that control diff --git a/tmp/epm/doc/epm-book.html b/./epm/doc/epm-book.html index ad5df73..acabc73 100644 --- a/tmp/epm/doc/epm-book.html +++ b/./epm/doc/epm-book.html @@ -191,9 +191,15 @@ A { text-decoration: none; }

  • ]W!<=xP R/^ɬ*r$z:.DbUk{kNԐCdMZFڷzMwÙѕ'@KP9"[8bqKy79{glK5Qn(*cp*f6 QG_ P(E;0N a=o>bU@Z=bHW[VP@} nh I5@ejSV!% ܜ>e6g<uzoom5JdC?p R0W2۫@bM\onHkO/Xތ"q0&Pы{c %?p#_U8#IFn7P͵O./#/z|RY(|Tfgx6W4#SfXtt%C]{D G:AUGU'ͤ śG:.-~3ǻp?c-IrOUV<اO\klDk?s('r4E {dSYӉKZ9kE@8tN!lbøw I})s& CbW"4K ~_D sBO?"wB;ys-93ѮŢ;O-?1OJaX@W0Pjk,o򯭥я>úҬWsB\QW®uѻ W<(IZq_TQv) Zjd2tf&_g̓MR g0UT S =B(n߳Zkr5_&;֚ߍuN0K W VOGY>e]cc}t҆Kpu:i!y "E1m̉ BPT<ч |/U@څn<#[$=(C$ޑ2u8x:!_9qbxᒂwX>k5Ȫ`O/S)V6'rja@]zdW/]Mho? ~^'j i`. AR1ʈVaf`F. kaqPd{ZdBG} Q8aPYڤjZӻ(}}v}rGUG943]I5B,Υs3 7>wfrfەan߮meAL-d,C.ZP>]Qp wuXyd:3.ӓ*co{{MVW<N<-Զ]jgzH`f~Pt c[NІ[ҁ?rYtCHU ! NVV%؏4 K6quFWh"v9Z 7c):lk,'Ч; " Y>C90;ýK9p|>!]l=y :\UIE~uYLzB3]J.6Npg ?^e0 ̮%ʅI_j_vf.8 8îTZYæ=QΏl#x9՘}&%>-s~*pp% !y= |r3YTd3{ܝ%>#Eg<*BtMPqdw k+&jwR\nr(*r䎠R4$1Bz~8LFRF(f28dFV$qY{r|oDdBu&\f86W1 'B⡿pY$ZrlEqzoJ塋:sE9BpMoHʷŏ8{2~Gjvp&ͷÙ:G/ΝxSe<%lk RUrayצU/`U5|IьmaSD faƸ2z2@T2ULI.w!~U(,ޠO0&Nҧn#P^TRPD6V`۠Mv3>1 FoFT&<)Nu5G#1M3K89,Lw}\@cYUa=`ȫ֨ç4zƤRfWn v%(]e!U߮e*8E]:^mcL;x=H.z'7څ iSݨ159`Hr%ֹ~ŋC|<6losݮ^ b9'uU2º'n)ԤE~59stDcVTN얞iԢC0Zn!ќ!^"z;(܇ ׍8P\rWAߊ};O;{t޹0 5k yW՘@!7š]ɖk;gկ`> A՛=(Ohʟ%g] dj~!*r q5ISX;]e3ZG9?7]kJx.J0B*2F]nScbلXƒ^ tj30'~.ܻ>Z ni+`!n0[r!z9"a l"ګBLp'`F`E-R(Kuؼ6r`bqYG=]Wx =] e PCbү4 b?5. c۬sthl>H8/px%|QbKp@ pr!"H >r#;ȭ$hփ$eH o̓a]fb"$47EAwydA|`mvxT6^>X9q-`' CCc(y/.)AUNLWI6GIJeeٻP?٪{HH r >LzF@Wqmz]x: KyX?Q2gErHe~ŨRZ3Qrmm{HR9F&pBm QوP.l=cѫe OǾL Ԯ:vc{98ۈ?H3QYpӉİҠ๋%,n]oʔj s?VQ˅sä0bϕO5 `#@sǟ9Yv`骖GsKu1aHn:K؞9T#'K?My$u(6lcf˯Mρ4'[SDwwk#H 91Blqb{}R1Y6OEn.ت= ND@Tw [ Y+ )U;hp gN8ht7 %qCC黣6pcLol 59 œs/Éev{Gֹ4d4bxap5͓,d-osYe?S[L׫ $XuNry STP-ܥy9 fEDy.0cE~;;]"JNsm#sL)x,[];dP} ;[%Hm)Z.Dzٓ?*/?$z!QYxC.).O I(Su-$Q8/2fZ}cjUoр_:0t8vH=*K7+1r=lB6b:N-0 5wYv"ߖF@dVtMV lޘ a 4EOq%%?{#-bρAw~|6 yȭDЕCCW08mL %= ԄɊ풅TP&=c#PT[W6Mo{' ;xywp pj[aHHG|+#ZPw],!0Y->{bwRw$$ fՃ?7W Wz-mr o`hj1puxVrB *azzZ%[F_56 ߍ(>M\Bmn].Tź5"T3e*I''Zq /?OM3s &Zm7}H\YV#˰|ѦοM >Kí{Um@OFsqp`{S)ΈYd]FiGʵ:mtLL>5;+bn"}S Q]G2eGT4qX|]r8m \N#c;Eh3Cꄜ3F& rD%>39q𐵜(Ena_^0h$/`uL79 ]A\l؇h & ֥qfX2h(ʀT>b_vN3A3}x| %k"C2|[]Q:PpՐ@zg&O)F*\yſ&[tm/OB|H s {._ـiS ÞzQi> ~Es;IѱM!.lѯ~ۢH}ѽ-\p$) @|$cq8hBz wa&p>`TLBf4>ڳߠI'(YKx#Erg#L6ܴ QtG%W$ jcR;x'Ͷɱi>fuEf˓pETp.VT?Q#1Azw@ KX$D"gK9`4\M[ެu c4XܓPzMU ylf45U ׺Ȑ[L[L67 x=V"k[q#Zjp/ޫ0$Caܝü^3U?] 5ő|^ U$g7"dP?7\AUf3 5q/Vz3]nJ [R8Nb=7W~1k B vX3HڍS6P>YQ.vDkV# XcR z`d| >BִdoW4!H>\ =fD/odz"Ep5p'}+FX75Q~C0rYЄUE1.2vgH+s!/cuSGeގ (D_ FȌwÙ\<:0L~rlB}h8,fIgdҗ_\}64K55&6U|uuUHn ;?.Hh@Xߣﮛ+lB+G))5- ^ 2?kg͚]_?= i).\V z=I좯p '>7}Gc]kM$)ԯYB טY隀HGmw]$sVu.{ts=ϟln%~bk7[6]koZQK!@;|nS1"2X<¼|T_ 1 gՖΩ7BߒCA< Tmvglf+;Q嘮v D䎻&c1 kbߖ'%nSk[aWBe,̲-! nW𔤣 S=H{eUF[$<գ]0.rislԭf< ˘oYXY3~\@)r}+5z"V_Azp:́qo?9M8p 9l 2O,ZJ rz4ߥ;4z&훙٣/XEWw#jchoR޿!>Who2v@ɅBemlv55O~Sl#d;po;Si+-+R&9W{[PהǕW?H;qeVɽһNh,)؇B2i`st*v:gZusEAE%۔d?hnN,tz)yKW4d: 6>sgyv  BW;oZި3޵5zhN3 (!ޯs "EAO)qW>$*rb# vLjo L`ddFD$gefHix䃶`nxfQ`H/3(׽JpQpzrV&LkL}֔G%N>Oڷr'۪jZl(G1 +aZֿD B$[*TúI9TU=Fzn`i Hޅ/IަU[_. .}uKp|K2d|yϬl^2>ܪ]gfJ H|yWۏ@hθHuUA[<4npss]+F 4y g0KWV@%ð6+ԛc%0t^عxIhs^eOĠosrWOzٸ!0A6"papZBTe7>z&"I:Nz_YX;J2*wߔ; $h S-lojK8c^l),/5oGF] wLV7Qu9/!M?#H; ۈ(Fob?uZKgH_K(26:W`-&[YZ3Q9:j*<*6(A!4*f+ĦLuAXv;;_զGb 霠+ʸJˋ-gkNf--?[ve֕N*G?w[筛h %|'Lՠ V) v7(Wu^'UƼTSẅlS;H-"R#&^*% ~E(99"OG;w=hub-jrhtj`u©7T1ϖLsnP`d$>GXHS!5g\&~GakJĽ jlNjEЩ-z8ga}M3^;]#==/K^ ;u%2@Q3`u; TBT٠Nl -B=/s+iN$JRJ\&x@*#Hd?]G0tlB6ɁxCIj?K67QkP P||!,R= `Zb({yCܴW~:ŢWYKzj0q$A&fߢJ@w.*aww 5e~?5cXa-t&<\2f]B-%Avު4]ό*. 9ӷ閪!Ze?q=9l<)$#F=&sFRf\k$JOVsXZk/m1lʾy"e$=ƿȧ1i.nltǑݦñhEM@pv-\r}X}7߯L!gvGآv ~QlG#w׺hTpRt?K`$9_(:ˆ&MY3R+l|y`ꭺ)+qwG[$O򸡐6mѲ>^Сb n}?J41@l;t C?|7bF2uܕԿ.9tja=ThqP_nke>.vPàGj|ڌ ۶ZVo-eU%TǟSju]遴d~lLpl. I0CU,|>  y}Ka=K,\Xaxls5Q;?}}?¬&]Aw?Z!Vìcv@ϢqԢQ9AzbU[ `J4wGJ6+~ZXG9Ű3DJ\mJC1@Bʓ =O$GRWƵ󍊞$ ۤ0y(tg$M7" r5'&Mز e.Wt5[a%fAj@끜|`nZ7sd',Nms`j@xF!<Ԍ@qDoKGdrwM{eU;XIA_r1dnZ~ܛ:R! Uaz=\A+P, 1Sr^!Kg Nb X|YNTW.tfH7IG8Yo`H3BS՟=V&Q9M@0` _UŸt-85L [?D}D}+RBڰozv*AknJz/\yC* > $u_{əp"gl}:Q7jSyH\eFn2 < N%1HdGc8B>\2,B̌KwF>z]\ h_?! d&,RC2sT6r'Gs\\h"P&5{@ ]'46̉vw6FOu!sz(|/{9$blfح PR<#N]VqKbt:b7Njn9Bv*0n!qQ" G•=*.kj>#IN- z>jbVtuKv)!&O C֯~Põ'$>'R&-oSX)ʼ ݥ2 Ea>V+UV߲O:Y5"dbWny;#v5"tH>ܠRgv滸߃idV':)ܥIZK}k Ö-`eU\w$$@xfSIp#9]cpRN-e#:qiyʮ_Jq h 81O~Ž1:V #s.u 5AK;X,+H e;<[dW03 - >?XB_veW@xj rY G b%1K8kL@ iѻVhXI%m)+*}Èr#?2>颕[^9S{ms&Ӛk?rD#Y= qylAInˊLyԄeQ9cFV:>CMи Ѡ|a#Ŀiw'"wqUb_AWla&{cvs1dB`LLGD?hR:{ S,/T:zlyZ)r(Ufհ0ҙz-{B۬ӥ rT,l3CD?68H盉l֏ q=i݊abtS]'{%N$7YטW< :|};>^v>0cpNF j1J&7agSP捭cxȎЫ+hToKVmoα^}{!((r W~(ka ( g%k!"e,*0I96b?+ 9:GSG P.{K0T]+{owմ2)4C|.܌b DfYd) ޮC{xG`ڡgEM^{si4dc bVUףPy);=.<*q[մi$=Sb*M;i8ՀeLŭ_T>`z*< )^JJ O!*m̗͂+r4rto:@B~ \sWfoMh_VV.$ηw&M~]J۝9GxAJN&&KKgBJsU都BX\q3B,#g_k3Щ/~{˘D#t7J#c4[ŅL,B:YYb'sto* >QJ"Ԛ2ݤxSE%KK̨{ u|I^T2i.& n~G^GPϦsZ2$Wqbȵ 6?ŘЮ:lՔ` Fv˶lG3HYS7!ȑ:&WYO~chNu~59+f|cъnA~ C "=f2<+T=,wqYJwD;WϓlaZݟXHL3y;^s?GI:DP-XvAC)mg5 e=Pm4WڭX& ݒkQ= ّlCE0]QVKk7T֊h;aVTNrݷ.Ǧ|^N:l!'b`FPqSp5jPB<ߊn\(esȐՃd=T|cOY@|(^}ڼ3uBffvznԫ2 s<^%~P:iÉIܿqؽ;\XUM']ke.evyfoq=S啧Qz bJ, U%gK|mult-i\Qu'>Jo݊;@䐶(zML- E` Nl%Lݖĭ $FI0$$k!3G4/B묦É0ƅE0^C>9q+PIW֏nJ&pвh3A 0$w6V͟*k#X쭡|w6@m; 2~lGJ=JH*~O$ "S{:QU?[w V0N:b|O>@nze4)M)9 \[!On[Xl;Uq~|BpXWVo4) W'a0$c1jFlhZe1)Z@fZ1M+1Uuk"[= Zi_A[35q-@2eeƚ)JMҺ#gg\DҠ~#q?#iRude;0@!HD^]L%._FܣBw-k2ƚ{';M"2FPHW3t=I^_8ˮsx׽#|T]k:hH6tW{:l\fГI5flp׽M%E ec)/s<%;!o:#nb~1T"J{kBΥL;vRII{3 @; 2e,XbIUF _!Ec3['|B5NU8o8LhDp%CΘ('{QQ1@@ē؈s4uq|4Y:U pcs޼z,hM=[6fS(M2GX:t^ҊA$Ij84@vKR NU-T2>;94\j$uin壇@#bqhe>ƀ-6tPdXz;ngvuSa#hkRᭉ:t$S1%#?hl-qj~!g}5Z3Xl>RL8qwefZWvЏÊGjOgΖP[=@?ECKyLCz9_/$=wz cH!m_Oy)hl>߲1~]X/Rieo5mZ?L~$T2N-ʞ:V$vpbH!i ƲGC8[V_`n< ?m F*耊}u7i_+CCϺk/?c,`(`Xu?_M8-A(R~Fלgs1xVzpG>=P83GK/kqK;Ft77MJAh2!D~|emY˧{ GFBAA<33D?S1-g;'j& థ|HԽi.<##+ 1xiŶK/_c`Ra# ff9žA5[YQ~#[n>1CtWDYO2ҀgPcSg!֗7n.w'SY.&: !.j"c!jo5K5,ޔxZsbe*ը=MynO"\ XoCp].6MDYAkb͞e 3L1G.KKͷ`F@&BQ+X J}xlO0pWx(P݇{S5uflAQF92}i6}C[^:l_Va9"P$E{).*ڗ 쌅8[%PFsy@ˎ4{\NS ݚ7vr wc:LhhJ$Vv]Jt,V}2}yک{k2P.A #Y&$v=B93FF|) ֋+(^0u7+dC`q限Ãm.Mލ_Z>2*C}t؛N{* ïa;Acv=#Ye۳,k|[$%ױzLh1TB& zr <8Y_#0~q?y3<kgC,v$ |BH  BI؊Lr=HgʠT˨>47 O a~NZ 'W8Ìfiu 9hX5O' =|ҏvP\jW7&TM%oa\U5_>^Xԯ 2 h"9ߪ7 49sOWC, w?W1D;p,ܳ|7 L(ls0"xluƪă|K pckq7b' -b04+)J;[ S"SXUb{E6~E_󌱨|K|y͙Хn a'.Y◒xtkp5Z4}\=ӂ%/ W 4yˡ_Cn0BT6>:U0iJs+BA֬bcpV |g(ZnH);HVrlwh<u ̹I!67?X3Z% !}>g_ӍƋz-da̵Ƌd.f4$]<hߝI$J0B=oZL% JH+/9݄#*&/(ޅ-30Y}=@b^%FJk. csXv%N \d'V cN=5-ݺ<Η6&|^orK ݕ Z vtCևSGO;EB G~ ,8w\=o->igXAGG]d;c]_Dʭf[8%aD\hB0qShSb WT>ɑ]ҹ;@녘ra,i DGY끾cQFf51\<$62hu6jsjѲ qPp|w}γr+{q1Kΰ&F]EG͓c'>9\5Vg_p(RPp Y;$NtaV_ 5 05Lj$X-vk  "NHy[5pJj>f]i&+!wxښy`mƯJϓmэc>=/-< "B;h+ôa-U1dw@e uMNj΂ =̓tPϢțዽF}.óz+D/]Vr?̷s i:>lJkɾJjpQNr(Zy'!&~\1)MJ+fÁj<۫xS9oynOrX $(GK#6Y%Ƹ)L癀ArbW)[D`|ǪKW9Qh/>15*CmyNcA;P?#Hb:Dx0@. C,/6ߏ3)7fv0yt}Obx C$*5j2[+Vm)iuVg~CY!Hֱ_w%fl?FxerhBbvfKjG1W1D'ēg݂T2[DV8eV`dȺJ.`kNγg_aQD$45^ rԍ~?W;Ȅ]%)xzʍ:] wG=ziZ8*dЬ/t-d&k4CAmiLQ"6Er+M  塉\1P0mMw^J8 ꐻ~vx.N5.U)]l~ C bg|'M5_rFV]*ȑj~^xܰhr o;j}FR鋝}Ulgb˕(^&BGiXGǑ'cv~y%G#*c'韠CtvshYs_W7zLZn]4QkQ!sa|k+3ҊȣG`ILm 57.zP@'+Tљr]Y19^;|ߢe+sf~2+:o:kM3wMae0q!0PO9mR[*qnc~jGc!?JJ K|`0}Iz<0P 2!e^s@%hmxfX뜫6SA")}n GRYVbi KCظ ?Z0s?_ wbzRoᤏW߹f\+3@nLwvҨby9 zʸѥyͰڀoam>jG ttQ0<$jy?l/¯^)a @2hCu xOH۳aԵ؎^:Jyu9 `xh^V.2scUvc%TN*}9ikG؆zoD.h!-1?4.NT)uU7j :>*K[|^d#g.bѴ6A`))ӱlx?D8J ě!ү-Z)7szRgY, )V=nt5Z)ue7$QQ HHdҦ򬴽w2h\/0oBEz'Q 4\k~قkWUZvA)L It3ʓz8y-ܼ|c@7TOc$)QjIwLZýKVɖ?ƢQ.x³"Y-{ o ߌy/Յ2hnq[1mRbx-Vw8f`fB 紩V 9zA6=;ZsUՒ6LOA!3r<!"RѾ,Di%e(m̋'o*R`P_L%NՏЖ߶1Le]VǢI*~%m$T)jaFjrbӾIJuM JS#o*a)/BK3/HN~N2l?XgIH) ,V?*@@| ;x1dyZokuԵ7g.4a +Gy 31ݻzrX2FP_.xdzD㷯l鋣Em@u{k4l faпr3Qu8H;ciMȷ'hzng޻q4}$O$laCfxI1bƠ\>LCO7Ͱa o %X?d ՁiŦݍmGui@XaPW)ol|W4jSHKv>x68$KJ/nvsmLc2nݶ{3s2 _Vwu@9jj2͖4^wD.ںDٹ1KnE.NtW[d&#X2v4ãW~ >Ġ/4I*R !]:QTHj5+UhDHώW=Em7 PyBza>7a$m=ְsYxU@z`PQrj\\ `Q WΛ7NSwV|1OL| ΝŢ{bCHf>|iZ{įy׆di@a̝x,M L!a_;׼\i`Xh[Y!$CM[0a,iV)"@$)*'"m]\yjt2I#o(F"-AY)$mS?GmulgU=}6;9p; &\-(24tg;;~ =smHƮM6c]gU쐽1+ DpF3 ޣGmun:V.Y//s84Aܡ۳W#!kFi0`c~b=]r~s:95)>*yW,߇*rϹi DH]+07qQ֔") [}b-1_nYf ܶFu`ԂcWZe7bpu bذrG7]Yk+>1ŬXWX*Xg/Тk!g)8-ؚ;gaM@tQRE턗⠐+$٨\%Wd9ᡅdj~b̓>,@_!Y(&.TlZ+_Xa{g((Ўvg=brp#^TTswqnC2.<2" _?I{\c Jy'@NuK'2YnGu "32uKs8?(]|BSX|Sewu6VEC2Á66~rO "͎"îCϦ`j4v"|F= .G"OK?[gHQ;MK3R6H8F{|ٌ,UKk@.T<քO,p=|# CvJ2x1l_[.00QKC GKQ5Ůp&p46\ե></Xh%z)B4AhN}A"&eAf0+p1wxPd-XV @~ǞAKF@y]搹P8♏i܁0a=i(R{9)JPplsC.׎ժ g5d@fCZ:Jf0}&='x*"F.TNҖzĊ3#r "z|PIJFhnP qЃ2Z]>rk g ڝ3i@<"'L!5E6ōk~j7/5L|W?>…Fny7=WX "FFoCj B+q%*aBKy۩.P]s^2H+=qV97L@ σ90 et!3A xU}z\f$:ge u90_?INv`[5{̬wfN[K$K5!BSF) Cz2ݡ Ȳ<e0pױ E X$ #>O]^pi]>!P4:boqo 3k2~';M7AhQ/.OTt3.aC+! d Y96Uraт0}O:w&Y3hp2`y 5"ڂ2vRXx"9Vl0Gh"ʱH^uЯI]m:JB. }FZnj#0o3}8(bA!:A BB8HѳoVT @}':sJXaM)sSkd͢UAĺJus6XWK9D2)$2S9BMhcG}˿7\2'zDIVjnA']j-7$)mFSqRM| }V B]"0_||XI07*L詢>oWW5<h=I_hutNd(,ҕ]cUħO̅cE ׼?E@Q(n3ʮDU8c !z-}&!"i.+/5e[ j?r!JiQ3zc$\? {Z)]nhu ,LuWյ]-91T jKrRV.mNy/:hz-ʁ} !qdR=4ZЦ*5Fe'W[:W4K'‡%ħe9=9Zf^zIز{:E|)txL\6{uwUJ`ZVhER@w0`>As7|e,]U;zFc{vG%qpKФz*G۪2| 2U5d!@ѿs RO\ ^; ϫ;̢[8aNfɴ;,ϱP )m "x6dMN,|ymp8gjcF4Lm͕Vsl VۊUaqCTHRCv;эO\QCwthyz[>D VLFg@cMIo־ }^Pѣ2+ya(A$+=tLz@Bk B/IX̕sZ@3w8q.s8-O1(%p ʔZ~Mp kuW*er VoCҊ{SK7 {^q jN+(7һGj W8&ϓ@|!t ͔?M6ן?ZPf遟 f۳~"NRCG oYOHhS_o7*㣚[ ཎqUSKG!a (\  02)D}!Oӈg.rh4c54n$z=2PbDmSA21ܘ48S65m Bxy&Nn; EAI;9i KNK|˗!@ΨF،0#ݎB%VQ=:KtqHãOE zI9D`tpx]@+ ڱTwF{%;dd(HY76S5>,6֭ae}!?/ڰ2 =Ij;P<zf\.آVQ3Q"p v"6M6-|pĘ6d4$|#RU#StY>"kA8EHkQ۲jL )ν{.J[x2} %'C} VLy( <6q5yM[knP *"b sBTrU1` Y_o`}J_ ޾j<%1|ZHoSCNQM$<Gr`MFfE0bXOItsiBŻpS03e'ȠMи$ a`ՑmZ;0y iyfmf-!*-BtySRE$ Fq8S=;!dxJMGY+N>=PB5CT![:aM WJ Ob7/f۱dm4|\yM()Sip^RzR U6a@-O;ܹincp\F>Ŀ#=0օ}EIu#S=ex:zxy*[c+8 NqOwz]=Y8ӿpv"q/`lT9ѭo1-l:9MC0~v7ƾ.y`TQ6iTW{S0۵Zr/uƵ1yHcBmfbMȱ%8E޶Luk ȭMY<&W K0E(jMH'k z`F7ϸΚ2ml.f=|LEl>.JuBt3;((T7)BhG,X~0]MяH 1z!BIH+SM%CB}.?. Oib7 +?d!{s _vd*d%i0zHejGg 0'k@zsRDQCCJ+>K>t3^a7#\/HiFWe1Ϸ 3z,PلtiEH&|&EX2RFIKH!^+'l$n`MK08"'2CnC5k<2B7?ΓH/@'.`8)WkgڮmG۾C\'#:Iߍnjby !}X~(K,Z85HY>pGRwϼ`jr#L=ⅰ PDT]8Eayq=JG M>Z?,ŗfwB )RaB Q?~roǝF/i7:x|yur\tY0P?OU{Pʭ->J72X3ǙO0/ ΞN!1kG4.o/aw}J9ϋIˈ\?xHO_F&52f%gUL2W:\ƬX߉<'%rC>|x&Z <j $ ƿrց5D+c~PM;753 :^;+܎EaS2~g%3f`͕ E7,. +I-(gAX6-dVda\sqA\6VB~q߫8"%P39Dd{ԝAY,P'~5_`/~YцB}&8_vڣ^;{tj{to;OFE!!Jςyχ~ E .)d2 !xPb\cHLDmK:LE)"868bS %%_꒝DJ&U1iJ#S_ EBH.hA| 7r^!9p3|1A8;w0_]'YښdhWy񟵩H b >.~E cy{?ΰ,g|gjP)!SZkt-6T0@(~dQIc]PR)ӂ-x!U:Gq$Lo7'NL5|Ƴv?s^ ϒ&1ЉhZr  kIySܾ|.i+"q|_y/F8h~r~w`?_3\nm Pܚ 0[-&1`?c_Eb/'VlM&P[8T錥Z sb O>6hvqzKǵysxn؍\s`TA#e~UTl䔻٥@ N''g. AB΁sIa#dDu+LP_z "q7ľlNXr$LPK6r<ݼ{Q8VA{bj:d4Z$]&S b\<޳Mb)T.־{o9\;tɟ3J%2>k:x_;* ?jL{OHwUeI-A s5 ($c.Sk jcsid`#i̳PPz 1X5PFxXڃQtԘ蘽}$tI =,<̃I9nX(J1 #Uޘj_EHe}2V39#rl=uZ8g֜kK' _#Ԛ}?BnHnxxREK/OOs4pk%D,)5Qz-^3N.yG)(?p E;fi4;+l)}>]\vy9^TY"'\g|5F*˯G WW*5B![gyh@g{ YTNwIx4E(#.)k{[+ W{báS4KNK^)-#I{YǨ8G=ޡ2M'_,/\&5b n;hOM86J{%i`qAv fnUJ8`x}.du ͧpɰ%D:O i8Mp;s*ՌŎp, 9*gpGPZ ;N4"'D̸9r >6I?HmYMۤ<[Va`<[(ո}m~þ+Ƴu:Kzp-X5ͧ3(ޭ;SB7jZ2οLd~>NCH\簀ݝh9JR,c\g=6cJ/E TD} ن΂t#{ V%auy(0+ԭ_ a>b"_1yZvbAeoMU[U9 \ z.0mWy?H\ +(+:t,B*m?2 >-*!&slDc#܈qR\%ZJj99?Oچ,YsUe` ૩ɦ.ItK oԩ㖇]0~Ș9G|*H:J( sˍ&z 9+0Oe; P 1D cN;dr7}iiX$uw@rf;33ګk[wBʝ7zëU>'-T*IHR/FCV {l+F|)_ꤍ#?NTADFxYEi*{.F bq,q,ïlWݭ*]ܠd -v#ZxP`ԕn7JHM޿﭅ " 8} 1uzDULr-I$ƯߋE=9<]ſsx_32M`ЬΚ '2wOvEgjSb^IO ށ) *l˙@XQ|ū)mNyf ? IƧk[b;}'{p)nÑ{&'aP6oĔwRe׻8@J!Nw!i !xd5j,&g>;2YjPb$}Gli4&-ŕ?ZRt9Y,:NznK&A̚`x$rK(U"^9W~sNmɡ] VLۊT]X X r;iaNvCGmrS80.+Y]؎M6Ϲwdw; Z`_k'XCz [s?h f6n6A0Nť:TJa~" H?nF h(K~ċ^VW}ŋ T1Tc}\݌ A }z}Ϝ;N {ݼ{ %f@kX-^yƫeQWzHA0lb0~xf(Ll[UiHyZRMZ") d 0UgÈ$ ɷHy%UrMDe*D9-RA3r]tcgD%B>ߚ\}:TǛժ\w01ꨩ5$!Yj^k a.A=hx VA >JG=fYbH.hqp f^qUF zzǛƜ1knjn"9 qĠ+@x-ғ({!J+ŕD$FӼa3|,16KoP3K6 ݦTcۨg }^^^ 8P]l9:#t3 fE/m)@ؖ(z"M赊i*Ђce8v_͈蚦gSOnEXDXmZ5Z,E W7aF]vz!h. lm[K s:{$ i6$Ӏ)$o&zMZǨpJz?X?_ ίǍ *g?hȷ$qպ2v7Z -%L >j Zd'9D}ݥe\نFQ)#pon˜CK7̎A!5[!{*>.eARw8!JgѠz?4ygkPwh]Pv[]9˃M_i!$U!{%m"΍X[umd5T)e\*[}2x-J!5L=M(rwGԴϥ(ܡ6GU):gӰ1Q[SK^ٻ|YW/DsjbĄ)rXr=ROC⃲ 9ez~_0(W"Үqq؁/4#*!ٴ_}@<" @e@g8G"e̔ g#d/S΃oĔߟ@+n:[1-t!  œZ')®Q940_MPΗo$ _N jeT='Gk@(]/tLH#IUE>>yW,Z@J[F6D)/ `,Lh8\>f /|j1?d/;YݥOKe,揧$eX: Ij ?G?hqƔaCyFcSv%2pwF:1-p-m?L.>k%&BZZmDi/?S8yj:t-1#9O<8 8Nyd&<_ɪg[X״A>TX$#Y:ȯG.1 YEuAj4@B^Ҥq=j^PAL{^PôM#5|Ek ^Mn߯30^ć|68wrj?=AU s)5gSNT.q[e76Ao]GގF7޳6pdMs y@h]#2OM @6#Զ*0?e:. ?ûvyʃQac2DDE!\=qgWL\G UJ2 j^zh.FVrx:j[6?mMlO'> dͩڦlPd Bx^OL; f3N=ڷT Li8 GYo$v~e٬1 g.}X04-5T3"5͊Ofg> ptZ4bN13jS`Y@2Fp⩃,Lf?@/+{6|,88+EA8 U&&* zr@V=mku݈J ǂax iM\qu+%T%}n6.s=l=i0'JTCKF:zHq!$X('Dߗ.4h3ac0axM @^dsMסiar$˗7E@Urup޴dsH< 骰RFrtVr+  g^݀ELwe'˥)HlSs6ION*18ma\=t,SgaF/sRP [QingS!D(Z gLtڣ6bD*\~XÍi,LoI!H"57b7îvӠOs_p!>Zڛ6)hr `J&#DZ#``H~DC7+EB%bYs Շ°i7̝%<-U1J_A4OrNJ$<\.Igd]%=F\8P5aijioN1C`E&iR_Г{-mEtx`BD#p<.Á`7nO'=a 0ϧ> 춐IɞU@5唖ǣMMNcio2 M85`^WZ)&r&a*'z]OWZiX@b_\Nzű`dn-8U^D $9Fj:t>6EEx:@ ތFY3aY= ʀuM.^/Bk4. +4&v&3TUқ!# y^X:GS;Z,, E4x%9EQ>MߟkLDgJyfqP5̼rз}c"&6VS.!4>ž+i)M^|2w5*߷r(nL([!:9$mvSY;`nMwoڛFueF *)kpi*Z"6eM/b1 &mf[iLYـ~EM=HdG. O+Vb9{#kX(qM@ѤDgǣZEK[0. vZ؝ɨJ.JS]cT@>;A R:qE{q_lAd-dMhMaZcΝGovg'(ՅTNG)%C?*X'.K*a]kؤL`А'I} :aY癛aq> 7Z})J/ {j/ O;m~4kU8xA~;b  C\gW=m_MIU,Q] J_^24+13NG\Ņ ڭFc- bTMe8[0J+{E+TbSгN2 jڃ B@d,a7BzhnJJU 澰H7^lYݭj٦WE#dSzı ЈQ}<;|Q"A^ 6FKanQg7BT_xѱ;<#6zd/nB疊T:U4+ +;JƘᴄ0.!qvɸW+Mgy?9/jR`4e_Z`~0!DLJ1$Aםr+\k8V& 2CI^(imYȟ֩O[fEenASI6t{ĪݰH:Qnw㱾i@ W{H0 oP4A-Ȧߋ,^kQڻ"tEu|TtےF5ddsdOM0ˎrxN|Ƴ#,^L{UM~ I{n8?u D{@Xڦa9M8Ox [J'uFt0k-XSьcV۹Np8UNv#\Ëڢ0@OVì2ަZE>|1:,uC@F%'^ߪïLh]x-oŹwK$dhnhR2Zy:Qf̩6JQ`ldL,2VkBt9(;yL;{ =bNf1U5?oD!>}|(ZV0 v/$H+|NW %vᄘa6N9 8mZlxV= -SvQv. 'zd泽;rRRsČx~%+FA0XE7@cٺcj7(̠B d+dw,F #s|tWM`!{08Ok'ttc!d~RQM2?ȣ S\z#]D/aȜooØ( L?K+Qaz TQ唎9 3#KC&wXg]+UIubE\]+UW|D֠mX'F;3gĖ;~?50μ@$>:SCȀ7T_0ВG*g&Aǥ3 a9e'ܭtCFCmoZAg& IR$RIUA (<#!<]ǗGƫ0#0G}qѡ"5I$ .Mɪ"ʆYE<{O G1,E7t)72x0 TV9vdtf⚸Ƕ! Wb:|X;2@'wzfI/z;'&q/658ҫ:rP )Oi>b ܇! 3Zo[)%l5oO I$NdSk{6 fjH 3z]3C=_v_k@\~Ĭ*᢯ΐ!R.ӥg8gy Ԧ!e fȳ17A V K%ȌjKvR~%PvQO1"Ӑ^[3U%!w@@h 0ṡ3I1oL#'P*8/ޗ~B|G8 j^9ޚۘ'J1DёZsOI / OtsS -} eMVK*q)TMmgRcH{+4I%|idy fܢԺMϟLI2TXaSR7Rb\0oII?մ[kU %FsE)4e]%VD)_IACpF,d]{?l%+Aszs9O\[X !?uQ.8T8(G3K0Ʀ> 'j%Xc>ӟ&z˕Mq)U צtT,w46X鮏ps2*ʫZj+A#8:=ݷG  tjRirH#_)rR{yЏ\nl2[o"/"HQуJLj*K1+\b.eBMu,2ӽ\"Zin$n$;WzCS:X@BJ yy]$6%9rp F ȑ)G<JϼOOkg~{0h%,؂XҷZ,G?}DjnQE\{N ŏfl2'u%*֛ 묤x@@P$$ "<1k1`5g×f'}xI]7?Чd$p()vcqZ+NЌlנ'~H0)-/)+g9׿+4ށHVz/a!oGw: F߻k kނ}A"K[^Ғ>ҐDEpb*{C•MJl 9 Sw6S}t42S+OL = c_xmH$fF!ٗø5~K%UCdAA HWjaO9 ڻctC"dUqU*˭"n5 +;8>Yt8?jO*oF)FN=(!a7ٕp͇huVazؘİ92ѵAGgO#*|yGB.NVh+[ZN7_'BF D]g~ϽVݻ9 Y:L f{g _Gqknylx/۾a >`AX%j\A I}(c7Pׄ AM-qDlT򊲬=ݜҋR@xH9ҰjJWL\Tlh9a`f]9lS@YU-\- |,1/GMՊOUILCy2W4 \׋3ttύnC? d[ru=0xE$X|m3MUE-3:*mōj]q\uYsTPx_&m۪٘9&M>f{5ۏnte9OǞ ,m]Wp55)gF>b <O =x I&cY|R;f|szCrKWe}Ԏ_7Ķ|9\㺪W Ci4'yE7ӊCut_ D0ϑ7qM6X zqir­ md. V%'3x[_q,*D-U8i$Lrge  Ϫo?Tۚ(n|!){b1yLuGo9,$ʊO7:Ssj&ö_ܫ{-d4p^5I1M{M(40hٍ*3$} r\$׮`%sk% 6\6Ց 5UX ]bh u|H?$jo9- ~bHHO=i y6 TIy@r NZD~" _CMvW& ,(W80u"mXFYɬX\sWje\*-" A|$EZ}@l`Ai#/ B"pƂgah(쫉:]ޫ;4/؜v])YN\w$:>IOZ`HEM8J!"l|̯wr!AFG@^>wgt"5RbK]|HU2ܾ!v}JiMn soC*ws_rT탹%f<{Teu͆g0" u&>[Q'd=SC'ؚRFJ%I@(okq;vt;,: <p||ZxEO &Ǿn|Β%==ש0oC;ĄM_$ݟRuJ"[nPP;l/j8vB~BːH1%nUb?!,F[66yr>ZWn<`hK" vl/sݗw>k)w?I};v^[׻I4׮zK>2[4ESKoʍ8&u o( .$K8\S2S&RCgΩp{oZޘ=OhbՓRDχ4Ou͢9?YrCurl5~ҕdɎKO62'„yZ^jE.HXxĢk{Aka iZȧG =9 Y͔cVqW(e8bMޙ[Ν@7iɖtkIڱ+΂7a]FRXKu^ _JA%FH}{j(!RnX_ @uKE>ӣ|X8XbRI?ܡ,*ed۾+nr=1W;@>V!q}d|*2%3{w(_YA>'1]'!Q^bC%'a1VwM7r%'ysS-qоQ4ZLM$3jjqA >#&*J/@چ{'^X G vʴRnqN,f0>%.QXv*ޮ{*eo%NnEs}NCU<~CAV*d#}ޱaTՁtrc:,[7Cj8DA MJýj2 Հ"ǕmYOWPx/ϕsg廹ԲIԲ'n1޿dx[*\ NWؗ1DGr#Y*!|sIGQ@ +27 χ΁*)PvTF7c 3ۂfـ$rE͗;LJ;RgǏ chEMspNt>†~S{'yS&|J ]E1Mf9н>TY%w!ѯV 3;-e1VK@JQ<~J MO!3^W7!hS(׿@K2ۢAxl>+6jcbEt 7³rXP؄ q꓋pmC]5c r^,Z]N'ښF|=#=jX6"s,#|EvkϴaJfH=)^)Տif8sWd "K\nz]chKPج;z\ BvTF[BfudNڊr;kƾ fn!MoMΙ-s渨 . 787D%''JQdºJQP ^n֠YZy5+ooBя-<A DwuDtG=mPbMRj(Qy5PlJaȚTYֈv';34G\XOC 9h8El)1^CeAZbC4].j.8&Jo 㓑꿀%d$$n'bԪe ⃜0_>@'C5ϙLx;CM dA½glqֺqPdYp"zY嬦~v͓dV2{"vJ^?67zx.Ъ|7@Gy+cë[YtP{/gJ2tBdA_1t*!0HaPL1 ~nc*E\H>v#YD>F7exRHt7h&Tta6J`Ju2 ]/Պy: :W9 p~ ^_lihobbboc?1)endstream endobj 22 0 obj<>endobj 23 0 obj[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 348 456 520 837 695 1001 872 306 457 457 522 837 379 415 379 365 695 695 695 695 695 695 695 695 695 695 399 399 837 837 837 580 1000 773 762 733 830 683 683 820 836 372 372 774 637 995 836 850 732 850 770 720 682 812 773 1103 770 724 725 457 365 457 837 500 500 674 715 592 715 678 435 715 711 342 342 665 342 1041 711 687 715 715 493 595 478 711 651 923 645 651 582 711 365 711 837 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 456 695 695 636 695 365 500 500 1000 563 645 837 837 1000 500 500 837 437 437 500 735 636 379 500 437 563 645 1035 1035 1035 580 773 773 773 773 773 773 1084 733 683 683 683 683 372 372 372 372 837 836 850 850 850 850 850 837 850 812 812 812 812 724 737 719 674 674 674 674 674 674 1047 592 678 678 678 678 342 342 342 342 687 711 687 687 687 687 687 837 687 711 711 711 711 651 715 651]endobj 24 0 obj<>stream xڤuTJwHHR@]8ݍ4twtt( ;^{xo\{^{GjrE!S[c+Fn#`zĆBM-jkl qRqLA& Gndok UNV ? G |8 Q#'\U g `fdg7l #bk6pO ,cw0 ƚ ec deP5 rp @H`badcr9`3 lB ـ lM+`栿h212qh,츁_!15 H 9 :Z, v@-666f&%3!&9 @n&_ہde61Y9f OG#xw0Cnd ˃wd73rrt_122rr2s2 djkcT ۺ<X8 L,F&3#'wO˪ǿ2>81L`߹@@+_im:M@edc4bL/״?8PJW9;[Yu%4WhY&ko¶^R@)'#!s+䞙 vLN& ٘6 E[G/A0039j69:X7hhy&66, ߩlLlM6f##wM &`*?`>6`?j>.?F& 3b=3X7KJ`Mz0ɏCpCQBrq^ 'pML@GO$!# x؀GZ>B@G p2&&F#}v$!V#y{;:?B@G nbz&^;@ֶ&xXٚM Er.3?JDO =֯e4DYLs)3ATẂP{Tx r) ՖG(_#22qvzE֏RF2hyvD_.w2Bcv"l I(gB Bǭ@ RC &οʣ#(_ɏs"xBDDV93+УW:?Dpr-!'$rE #Nbccȡؿ0CdQOl@?}'P?|rŜ,a.a|" l P :d* DZvV@+3Df TP@W{C$XVuyd(5I5zRJc?A?@JaA h[2@2&ɿ̃ 9HO7HO'ON ?}r iAH;oǶnm! m mtQ`):.&Bd$tttE;{gHV*}]}ȧLP0QKma{$3Tībuh :%V2&pr>Zr/y!b#[{lNda8< c̰r.x8Ot3SZL=uo dqOYdhJJ/IKUOn&7CVUZVqa7bC>R1dsxLV݋&Td NQ^T(9KoܦzXy%wƈZAOzZl%hJY0* ioƋ =b0O; P[q:dh@BUXo(LjXDH44"Mz`}Ƿm/ݾ&#r |agP{t\g?q^/]DInvKzfD==ƵԽkW2 3Z"O03*5C`4@bȹ%:jʾ :qX6aS|!C&+DQK!ܰsSBU6dzJ|85ֱ`n",f6K+_R@胲Y3T8JkZ/,O'㝫o#j3^m5}N.4شgmBwiֳ';[*-4fPR*sz7?BZx} YOcOlqeM\[Q7nkay>WIo_tQ|`/|s&rli\ Yd(¯Mu!TlC4@Vڕ!x34vfb")tb5׺n#oɂ莼+i8앳sWp){]sIfjor L<;SL*㡕2tӒH٧BQP!ўB\+#J~ BN8Q̕rrr{.Ƅ b.gxq*؊gPCYc| ./&Rqm~mhc.{7w9w d`/ PGptcx!PˁɎW+Fbpe͈ C0} sժ)nl$>?GD@-Nu ޒH3jCtThO o$NōqL õpxHDcṡWgY,R=)P_+io4uv/2!߼X7>.2٥~WWB1@ xAMؓs-]SY"zW JD5 /ȿ 23~ L*b;6=&!xS(`98_20D~MltiqË5K.[NHYJ/S#i3'&~B皲iAh 2- 0 f +ϊSYc'0)C; &OEfC8Mf6_z5: 5|!}&ٛZeKʎ٨퉆NRFW7ME)셚V,\qަII+s'_ ?gfT cB xVRH6_\:p|c}7A59r׼Ao͂zV@)d[7jg2 gyǻ½P ZäJV9ዜa[ƍ/^o !jSqV ,;:4'?+"G)޳Δkهǟi!gnڹQúk46f: `5o6*Rfג >6 88V5a&/'`(h+j6Pnij%kbY"v9UK9Sq2~ i G4I^?v z '+!8ug_eز Aւe9K}\-z)֋3!) Vz Oג$Rh/$L0`1&]\xJ$a|77%%}fHY刍 } }#7*Xh(b'}85)#ԝ$(lJjhl ?UDڽ0iMn 80zIz@-{cz;TXQ^`]՗nhk<C(a( [HƙO[{{9)i,#cbsg$Hopx<]QAzZ2neCk`+72fҎhS? *Xuvt 9 442? eo*4|mhh!l,Źϻ&WWw.0Km1^kOp,MWtWJhjC>9$"V!EDJc;`z?iC^\c674:LVݑLaƽM?MioaI`;N]FREc ͗6[T]$h\ѧ!B8fJ.{KM\sY_۰k,e30ʇ;`kae+޲Ӛؾ`2\|{H1=>ar{-omKR#+w,,{KPzpdn4Qtu9EaWJjZiFڣF6 ;}T,bjE5v99껌wpµɒcŤ H$EBnUS~G*4]j13K[s:Ple4u:btOO}Ko)rFZBkyS zYBp's…+~KlRa> 8G ޹FR@kkd7pJ)\0U ku7г}ӹ>S1Sd/&74 Ŀ>opyB Œ-j)EOe|;sC'1'5\4nQC!ބ`.ctP+C'G⫎=>ڃ|~~j(M@AaBgz7 )eUҧ1{{4R?O$niި;l[věS`G!sWE6X_F-}lGfeU_NOбTyVQE <ֆ;[ !B_4 C*DF)MXgkct"(ݳt3s 6 FY"|]ͥnW^լX& 8i6F4bucfZm>Ϣq|*^k*NhVxx`Fft= _LŢv|fTEPmEt7ͨ+Z{W#S5kݨ\੻wMj~D ݲ*7.X-˱W剾\e&oҹCE`<˟x #f%abZ!6 U᭺H#m㲤"oTn8Fc`vDUkp8q|sswƺKnP`_-4p@s?iz~:Ewmk)}ɀ-?{;͉M *Z/y!_k% ֫|f7n &U-HWE< 6\EXK*EzԳY'ZRW\H0?{۽ (%Vsɖ2w"TAoG|طp& hZps|Ipc9SrT~nHUI8\gli9fNzg&\,BqFw~‘I4HǸ6*4UOÜ0{89T/ulMTTqJhZ!a})phg:zpqSm٥O2Odx;-ͧgž*^B7Fv5g`rܦ{VmWpHN8x\+Vd6b9 b95bG=,'[ ʓ`di}C,o C!vOp'ӊ2{i ?I6N CZi3lJfώ r7mښ~ /9hESU2sF8QUk!Ӻ 6_||Z :#,ZS՟!f5>Ng϶wCߐ6%YKoQIB?CpAvbDY\(&ha㍓b(UKh%ҢW„I4kR)y{3O)+Cu$Xj9QREeZM@N;۸AW8T{MڔYVdрUf]DgC]Q+̚Prս@'9ז^-q;)9hq@hA@'*9߹uP&b뎛v('0,Ntz$#\`zQvߖ%6*AvE ZN.kO&a%F֊}{<OczeEB{mW#%ߛ::싢AT2 髃^u>U&Nٿ*3Y/W$fvGhUhF]le\h(A(4LRIg˕zZױ-}tr#-; eΔ.ݟD:.&jMlfaf]-n<J=[䑣ݹϻM{#4_( Zc}2Fԙ[T7PluIExOvY([P1-Ep5mr~jWW;W (H&sKJU[&?8o J!obǭ޵S:l^q8W~>ldqJ{S-z'Me^DWjYD2`WAΥd4n.VL㐹ˮa! KgZД!?<gf5鞢l*HkV~'Dq!$;~|<}Ĕlgbdnb >@mBc?]psCCz6Ew_Z> ? 9v}}m@+)JшN]Df`d߅S7E +Ђ"+ NOQ $#ZHCrs'jDq|ʹ>>R]ko4`TW;ʑyFu,Ԩgxl{d)q{~ia {v|aƎL huV-m]l5h~׼qu쟥exxIiG._8v ?:2luT4=e5+$lq@DyQq~wu):EG:90by,ӧj2G&M6d"K?~}iw[_ˏzFI.ZAܑb_c{[sN>x4{O~dDC09U1e ,+09T%K -, xjnKF^=Ipxactc@Z$=Cl® d6S:7?ʝƐ}j$M[bU1C($fN.7$7'AvщsPTt)p_l=h{X+?U)ɶ!]=l?CAwjpMtK՗݂S>X4NBv92Mzpr~wn}ܤrW/vmaѸ2m\1+q>K7j~M>J ,tE3dw'1 af PqӋnNjl M0q2ЃwA>lX0;3ȗZJr!8[wZM[Mj/w33BaڮEս3Nmfu\,Po e,Msݫ}ydlW8MeMUG+i6bP gFP!P`z/J«jݻd?=3H:ޞ*|5QhQQG_$R p6l҆ (!lK\\xGkh5;"XlDxƽ:,ArW 8Cw).)P-VLJ> V|J)FTefTtGx XIov)O8%,?iaDz4/Lފ%eXH:ߦz:诫x^a*5wΧ*EkZt:fؕYAA=ƞق^G{վ~Vd;ȶpU԰xԬR(fRߎuM=3X}T[]@:[4FB+M_z6k@rҟĹ$t=L;t],  DW 7#^J 0]>SY .YuBg8>! IYZXnȇ7:J&<&Wy#4j?j)WH 7aݗ>'ApTA$֦ |prHRg[p@qE!6"S^L!#X kph^Φ'{:2n:YVz8° =9;bX' &N,gH de eSׄ8.!Tj~d%.KDV2S alX[nP̺n**BЎ%:Ą-7)f(ܧ -jm7+ܲ^9 \ߦD'JZaonD 9{Ir2C ZLnI*5NѦ4SuS2kُўV (ᒭI}Q=Ea)<[-vO]j♧Fo@ h5R_0y)VrF,^9 Y5B t=|+N),E+K$rI 1S$9FuI*/Jjsv=W ٝU)Iu/9>)ɸKxy KSŒJ̸D}wbՎ.g6Y1wbrAMc\( ,u`9 i^43y.]ttʙùuowfm/^3Y߹mL Rf:""YoX>X;Ȯ :".2XqE5_O͌ iVϰxK7km.&˵>t~o,Y}mOܔppfT Y|'5fiSTHϑ_xۚ-HK~'l\OΕ4TPPg wScXZ46xN"E&^ڂzq^*>1~[|@ӝ̾7 ۊ/~Gn0sȿ/}g1g< /e v^-fMSu83i&MhC.:噙Q8@!ta+nǵ/{H?}-NQ hggXm 5"ٿT'NNqP|Ѿt;#f|Sϣ!Σ>dG3Ex% :`7xnޛ:!md<Y!`S))3't/nXzHO`POۤp[4F..+Zk_z(e~p0mGu@ˉyc cgeк_,ՏPIӔ!i#6䮎7ԥeHUn9eWƮݹrU|ÿ bvh1{9؁*gXvS눎0/CP蜑q Wu3d2 iG/4⛛; itbV֠ 0~5we_׾x~=Q*^O-{ٓD|jx*E:ae'O߫4S^Γ$59֭uzYw 2.aDx-b9Lm)uv1cLd&E?c5rv&Lf`bd;'[bfU (Ӷb(­U,xnuN!JMxW|dc*zmpOR-ʻO<-㧨8<,%rX`p¥㞆脁NQtOjcdIno%KeqWo[m  x kӏ{\M^ :=|2vQߧ-V,@boe#0*b kuL}.k+TJאg _Oӂ(/Z(@{[h3C.j@' juMw̯DN# .-fz[24[b-\k"U@2O蟪~+-q2Ch#zŋ)+P85F!Jj|1/W+aҊ.`XB֒8˒hBd 9^}fB(]dZӯ=~ xV@X\C,G7L"x)1rnlbI)p,MܽbnKPjpFo??1vFG'6Έi#xzɼ ZZ^WrDo$R^V\H,<LQƴ$Q?6^+}cw5eW5h.|&3 l5&^z6~gɹe)D십 mjK' ,v'IvƒuWsY:u \Ք$%T&HU3tN砦+4SDا.U_Naj1n3VPhAQzHahD@4n\ðh9!Xx 5~/;%~jԇRC᜘luvϏ(*u g7eͭgHo`=JMW#z·~!]G4m'E}A!=9hU^Kf(cTC8E?HwuʘZ8 Oܤx-v1 7K"C DUIБkxW+yPlŠ xo+jr ~ G_JʼnטfOsQ41V|jL?ǠY,4\Hwt7hsZ|g_`ɋWB۝Ȓi~ ]RDse] 6/&V4,*taY&Q&h ꓳsU/<QPuhFuzcM<5dP_D^3<Q&Lt+7O}b;tZ8Wj[ s}qv#6֤We Kr_nJ?mX3lR`MޛI_zڜ8EF"HoȽ^Kc.ώT<4 Ͳ^+n;/t8n&C{Y0FYUY9SXA~5 bߗUȟIi׵`BDA+nC ~^2'cP*§^BI]찯{Dl3-^*R>%祱ۗ &v7w2bENT DT۬zLW}ww᪡3`놎,B`FA;),rV`!,G sˆ*|chVCEB uk9re)[ G[t$)ҷD(ņ~^?(]@e7q0(pi2#"GY +«eC8d<@YPҹŌi- sB0Ur2[3hFyd*zXr8}B]\6<M|;7ޟ\\VT?lU|HR&%1(ީGYu;,l |!iRb婵VU|>;u-Yddɓ:_%p+>Hzjp(glpKkJqMp@$͈[>)+Z3)Xnٞl}DMP"ԵU|lk3 66Ke(2#3%8?!pUA.A8Z+ķV(Xmo}a\j[ { ov#Dkftܩ߾1ӹGחE+ Y8 ƻD`aN!1n0ۿ*"h(Ny9)~dQ*I;A(p[yHOL^+wiUZ9ҜDZS;jUoMFTlKueaCc^w% Tqİ47}gV0+QvWZEZ{?&w {n/Ecsml 4T7.zJY C2!K6.iYۉSG>tOJFwI'VxkLW#Z\:b$ݳ]QPժch/&h0Á'-Y+Lr-h5Iȗz(s  | $u~;<04@%n{whUu@:g>f)F ,_t7YF4%Qء<5dh2"^g%S0>DP.I;" yV|&O9KR]9Df0,x[?c*QeQ.j,^Fb{хFTC0d_ bei$02iЮ*7MbK cH,Y~ƻ w=˺W+09WE 4ڷfG&pXG"v~.<.miB׍]W_~]+䪹X?y}[=~^$e_Yv QgMxUʚ[O ]u`L%8z]z^f .|&1X~%fp6'KILƸL=:+# mP+S9fa堸"!!3w¶!whh[q[T}gL~ypO%G7Ƽ٪JD&"[yD$"&m&x'-:4IJv4!JÕK+ Yuh I܁Ww؏T3⒞$Cw&K #6kH|`o73tYkL±BLҐ"B+H7\W$*2;sX70M:qݷ)+M3'ؐ1TCgM-Py>Ib_ǒ 2fs=51u7#iNČ;avN(BUtukJkVC=H~{mNVpcd3-i)?SDao4UW% N[c:R1@5b$١P\PN"<+@@pJ b ) Đʯퟚ^caZlswϼp%lWMX)tbgCXd~,4\(`[/YF4+BdAҡ`1tc͍HgRnwj[ξlO> gt1b/PB%ڔi@y0Q[Lr˅WzFWoVns>6oق}r,rgt2467YGh`1X3YC70a{-xyB**XeVeB?U2 E#o.6v5286fE|nЬS:0G+`0ܢ3W;BŸ=l_ժ "\+bO5`Vhzm5 c6"V 0Eֺ mJ7I<^w[;3}ZS ٜo |8xh PK~.30hTΘ#t7 7ԘAWԒ Ȩ6̻Sn  yEƁI'Pe1KZ>" lT*Y+E]04|Sk i+-S:/q+`*I*|1.r+ +Hnj1ǂu&0Hd/h\n)h6W4b zH4g~sݘOFwګЫDyHrjWZ H:qaob՝KXw$!ݔSʒ)k-eq7a9D6lgF"7Q;Fe#̊w8j;y4s"] -ka˼9Xrn!YK'clT8l3w1M*fpMѻ"ܓꡖ:؎Ғ s@,9cO~)e=8N4. Ha p 3頱mt5DhJ߯pǁ4 a9ߏRӒeci/Cwٶ%zP6x! 2ԙX9 I1ɤ$%]pO yњ)53BK2//N]3`{ӵ5 XB\ W!6=ƝmƹG<byԸY~X`ߟїB[ 5̳P`e 6 ;//njqcM"0Q!_FrYF#zo4E% Gޞnz# *Kwo{j0e0w3OĔv4>!ɪ+Wdr+JQC/]Mah_Y@c Is{.$n蟕WɅ}(8Dz1zRιrn$ꀐKq ; f5+?Syݞ/AS6e4ψg1.sږf8&Qo'"@` 0ճ1jOy [ h\CU%r,R)zzϽjP.?{Ŵ8{,}*s}~Ne{t%seD4$0G pQjhYUWbf@ON`J97YS2[r⺠<071oYTx|OuwŲzS700GTG+X&ieřוGLvű \,_)tv !K~fzhPU^Bk Ε"޿cq-bPQi5Ah}o F zdt_w*4gnC!uS0UGhv#O,zG\#6͘πDeuDHU]>XvDE$Z^v(&eg/kVC4}1 [4ǘ2Nf{L=s3[&K0Bhۮ6gfyct"pLQ"o~{ qs WK =_v.`-ܹy-;e?!^.|oUH!aREh%iBpٝ/"R{R-Ui"5$e|IUXè`4^XhFVnf4k uffvl k B {t :ҙstD| J~ /mn[02$`x,\j|XRsMr֧ ^ŶGHjo㈀O.&R Dud%/>ԫE?0#:̻"@M'bF tF &S&)?8j~irruRɍzP 1H h8%f_9K k&D&~yQli" 0{1GMtY%_AGî:.<0x P69p4BZ)Q (KucA`r!.6N;rOy4WjmaS:>(n̦zmg%S;jؾWn$":w˃><̘ й*4#i.g_}St8CItZM D 5"\Xؼ ;M ,W!w9ŒqXfݜ>Rj6G'{_VI_oS qwPl[[;2F*65/moӺ ep5^5FK;Qok?c/yn<яbTi#sNZc3'f DɁKo#FT sD>.߬ῨgŎO}Wn?+j\ρ3gU䈔JӞ3SbjݗCEϭ]1܈|*c݂&sq j 5̍YAj t^>.8O|:1ѵ0䩶2 ͓+{п;X=!Ir4/3״`U iˑlǀ^Di` I~SIٳn:h| V:OW!?4o. ]YZEHp5@X[6Ǭ[V} !dwGzBҨ[-TSTZQAd{#Z"}:2@kSUtrC x$ _xCfJ,5Hw@_K4fx@+I{{2?0"H}^Aw@,k 4B^ժnl9ls IC;OOLM.Fdٛ=p4}>e=*Jeߗ_1?wfxrK$`,_`cWDj4P(($X.)y]3tJ)hwu"6X\EM! :p75^ $ί2+qy#5{̥_mļ#/«eA>@OlK|PvJQy ρA-޺/(8~\/7#= j 0`Փa]a3ԽHMp;%-rD0(UȨAg+IIλh jݤ-Gc԰l}I ^DZg*># Y2$݄^G'G%^mvuϜ N4Lcec+gF/؊q{jR` z_~U@JJFP UȍuXɌ/!yVJQiE(w MuHaWEV 8@)u:D2W`qevKa(7"tmxף)PXӶ3V6".cmwr_#VSZQCnDVjw-<%ԃFףhblTX%FhYҾDŀ C8!{ENeXإ e/j4*>5?xsZpPay?s-%gtPځOtCp j dN+RYTI`zl~$\A!svW-noBһgԿT\COV@FXRPY߿̵RH\""ID:w&;ۥAfYA.\Upc*ɔXiK9LF^8r8;se}B =sQD%Gl8(|۔p[4fG,-n\,@ ]|MfjZDqDnmq $p̢Sɐ.),~]!RtS;۵Jpe'7t'?0QԹB\ygPč{z[K 8>U?[*qHk^A.*R1Ѝ{Ҁ׈чq7x+t̠t^Sb;X%"Ik' tU"BS/v ch|F?Hx {**}y3;C%C7a!tU-fX{RF` Ea_acm3ߓM0(PčɎU-h k{ͻfTa¹(J/niB[/K'(VˁtfCtqף*vO92 "R-I=Eb^9HӡZ#* fg93٠nʶM)z+2Œ˾ I_adk ҞC݂b5k8?P\0zmoC5]w;:䜹Z*5γtZ{[18us~MBO|],,u9{;9>c+*kmh/LOql Lt;2Ӯef}*'~t98ўrseaJp2v.Nh!ni< wܙ]`{pK1aYA>yΗPJ  eXP\/!4dizTJNuPs3U">= _2ݻ\"j@ ^-YIeDSq"bJQJ/ډ H(iGd!6qTew)JR|Zc DoOl(-PR,I\=ᇬGSt (1Dc VDſDd[KϝQjB-!{V|Eeh׋G*3O|R SCHHNNTWߥL9ct&A @E"QQw7ǒfe48ENGvB nh+ɣ e;{:TkܭN{rt>'UBE2Mr{ptiUdF -kURDI|ͻAI¥4@̍e~zh4fgPZF_7Vub]bEYD_JsrElwE  #nw`ٿl$ˎߙxHKN[_ ;-`5j7ov6X҈]՛ AoGíC3M6?v$Hb7nSt`aorUE&w"{3E=dN'*{u|΄I,pƊFl鏓-ؠy-wflQ׆ ޛԔm]!{MܣFIM̮I,=TDj(KV,gڊj!ר&fYrvXKJsX9ߙˉ^9Baqd)hYM]X%zU řeR sļ]Rc tdQB/Y%t&uxf1䂊]OoǴ:)6JJtwێer^\ls0AF5\#vU`4{Ruv%wh-g~~v͔N-8*\A,w vY y%V;GYQ^,pgs %^LKE :"ݦ ^$t賭 i$U1pɀ{IXM j..B4qUpޯWXKUѱU,`#?T]@r:~BrQ!Nh/FN$ypMBߋj|#aՔjw/mBR: .5an#m%z<4v<=W T  &R0Ԍ+Lލ%(Ծ6^q-'+)] 8}AXJJm YZkrBl[&U85/P{,u d?`3h7Ͻ֦f|i\BSYB9GP (qx\byj}&֓Q^~E$A ,ʂbZ<:sȟg^}o%ˆ` yϸ}Ud>!irUN(M޳mʶb,b1 ^ccDKUJ00܆+iQ^>s $M5^u}{.i"g2 QqD=zi;Jj*H&"\4f 㯚q,K̦ۻKҖ;B'ոH}u̶ MEJdj,5\uknTT؜V(1UN *t&tRL+wbe TK~*@~leg {l B0M*R.jP6?yok]f;׸ҋm1CծO'iӿaj8O&w$x64&f#^'>@愿:T@kHdSyuhI "K ]?)+p9g(h9$o\y5]< xR%Sp1GYUkXttx906G8W^5Z6^r̍)4*{8 JSvw<>#PCRNN}%Gᔥ1Ҫ5TgԥodM]P0uevNS3>6i}&b"L`xlP!gqR"@YHӓEQdP_пi,Zr-8lv%zsw2E2͢~K>ЕJGl*ƙ8q$D!A4yl/e/=)rzxk[ʜz2ޡryzߗ|d0n0"ie6bX`00Svw`]~1coNQ_c{  йVݙtgx HZJ_a_њl\Ȳ`ЬΚhrwmQCi(A>d/RzAFF|F=@?.y5[D^K(O}9+BM>F*9\#.faCg7bd v H75%`͉;@r{ry)FW; XR=N0?1]ON{=pP}=|y-m~D_Y0Jg&6 ( (SR)͟S.K_ ' ,ld$N+tԅr^g"V1왂[jbf!yb:O&f H f E(܂9|~i?m `ɂ}X#b_Tp1?{s-Zlʶ^ uWZ*rЖ=AZ&AŒk]~34<(`3eO`4؈wgghi!*''X^kf JsȇƵ*0M|sAQn4)ĭU̿➍qN%{d1!0UF]ԭ+iL~ d#6]#P,J/7^+REÎDi-7cdru/2yiwt+u>VÜ|j޴,Cj}s0fۼw[Dǝe?Q=pe@ej\rFPю/&>n ޣ'aEA*ٰۖ{Xs+d,5YhX)9$!U&"hxv5v9M]?db$+tuoJIj4PO//g$(ݗJɍL rʸyh+^>2:(F(L\U] wa,dƞiNq hc.QiM1: 8tژ^Fĺv7m^pGi#!P\ ,fĶ_4B-\)(_ٽ]A\]\ֳ"LmM+>2ee7PmN"<@u&@LM3s`X+[ꌕ,t uJL?=Wɀ;.|VX{l͠&C=\.Vrto$ 1` 0I,beU5'ß/$l ±Gʏ'Fy $[4kxbId\?o) gχf`Ie0Ҕys3>oeDR #=Ml6,rMD!|`:W؁XRG}2FV%Sx7= KxI T f @P'%[Cw2`5Q2[1zI[hr8ukgp [kRPW,EfyQ؄dܿ^bY>ڷZ b/1^d^㐖#H E0E[b}|) n^:7Ѱ6׷TDoF}{78h{8{yP+~W@_%fHހA d\A 룕S"\?v|u䓬*]Z ۲ p V&3p*wLUsֵLN>Ya.vh7b[!+Wߩq_# ;9lhwT8Q[7(e%Y8DgIYOn:H…"vwD` h9/;uS]$ԶJTv 7GŕgjV5e=Lި> F"؈}_ &!hqw'~&QG{4ś`i2&Ԭs '^`є?QKs`^SAk`"CNon@mmu`FyX6E@LG͜Ppd^\@ WQ#M\@\0]8:j80"y:+r3L#,S)c "ƪ<79jET=;) mPBxd5s1!ŖT&l+}j0""=#Qa}K F޶*T6l+ҩ w> ]tCZ]bBβ6Ͱ!@ <*'p26t6VHS47WK^>'UF°4; ]b {p\?`  J|A-J9lS}70SiY^l7Tk_'N1L(WݦHVWHy}9tf~cv ID^Ű8A6&|ȴ`,ڈ_Hvt;;G˥h.c7)ȣmwh+|Ig3%J ܋"M˟8ǥ5ڠ$JuQXoʜމ#ŧoUgIN`IBS3NmQ_W=DtRk8 &HkfWnk(_G`B 3K& @,Y=3Seb'Z =imʎ!计8'jO |e ܴo9yKR>f dDP8X'^#0ҏ؏ jg7-I((TP!_{j `Kߓ`џ wc%my:H@XOmfBkzYLr.k;kiRKf Y?_^tP^=Uԡ2Et)q%nQS8 qrO'Cs;N}f)&`zѨ_qvPܕ?/8_b/EăADˋYz$|HڳSlcwZcLla*/ .{fD=ol>Ą ,P%iډd'( aS!BoٶKjO=AYQLg'x!RēԤ hK'!7(S?xۨź ]J"3':t:\mr 2Rn|WJYA%]tXR/i;SC y^ڨ_bV%ZS'(=2w)aFk~=t4- 5cXΑrX \RE bވE P# PX"᪋Ŋt#2O|?eu7ݕ\ (@ Zy)\O7?}Ct//+ܕb vëGgwҼ|S&C էmc7)&1ms'e=/=nd afc杖2# Lm 5R@wvmmHbq gF>F:l!"QUǙ.>([5UXR;$Ds"j/q?INx[4%N2&HsD_ᴔChx l +Yr :8`Xbs/ݜn_ĔXbO" Yf&/dG.b})Pt!0C;K`VxfJQR٠ 5,c#'e 8^Ht`peZY0LcZ;xY7*V3춇DEgM'z핆vGK:mC!Z }l@Z{M&F['_yzUN $kșvrD>'=ZC^G!ͬ%\{6 Vk W7a3R;md/%nVp`?N @øiijO֝帲: 91 [!4iwpnm s6:Ȁ)UgMDUo!3yWD 3Jk# 51 DZ}9{7s o`n"kvITh1yK1h:ʼn:ޣ /, 2$53qiBj$1R8`鵟 7-^w|K8gFπȩ~S24,T&=aFԶnSw a#e_u11`쪊ִ|@YȔ4!r'L¤FTf %զ?ipˋ]Be,m𶶜~t_e:b OPLgzNIscDl~zW{H)ۏ_Fs'[jIܭ j+jU:7g '~Fڟ>L`=ct큇%^BM$GoxLKWiҦmd4n!Ҏr@uWV΀؞^1zm3?9o:EufK3aG&MO:"ϪLԧ2juwe]%f!nIć&Q il`!js UY_]hAY\|.fހ 8%E"$dS܌hr9ii;&"-|>a0jݹ]҆VВt"nTH䦜qC[\?2?#_!YYBd~;78- ʅ` 7Xtq^/r*{OW&ٌy۟"Xw9 }Qi,?ʅ˨JPKbJO5*}+qC257ס eO~r4MBԳ\`s|tp,g@d|Q;צrݭ.{gˊ{?z|Ys٣ !1mHp{'2>H9h:Ĭ) 㩿N擲 [3Pu[*Tyfo߱p.{+<k,soF:ϝ2W>eZ(Ll:Q.PDVr㽽U6gdYHލ'0?<`8퀴 On N+cRgoТ^S%|(1'h݌? v&rSrioT3.ျ­Ԩ3sUd2IO)Mؔ""z\R@!vl'(3_W $ ; hx&dSA6* )䊈4iKouFq,JYS=;+gWFUJbL!YѴ뵕-RޡCV<=$/r~Z |T\]5miBp)sF?L N?F!/-ς1e֒{vPGUeHCy8P&2) s6P@_۽P74]z)t73Q9pw> 6w=ٰI@r՘OKF&{DԵB$yT5>ӿbny/hq ? sfsuYn}U9,`/RQZ ګz"DsKC7c\VY&cg>aJ->"4;Fk d΅AE9A˫!ͺIud]Zc遠%ޥnovXs0+-MfvO!f2^Ķ-{eyJs.bjp-Ţd@Qv*͘pPLČ\ fQxD l ύc9n?b|&0vJNa#ojC[K >HإUZ垉*v.#R^BGJx5Q$^y3mܿ{?kx3OԌh55ֳ85WmpdqW<мqw?FHbnRUzB􈦪&>E;%.WD}}/.\,>Yݸv`*/;WG2u.[D7d5:⠻HE"eLuTʀw(ȐY-k)79М./hX|(Wu܅l@)Eͨn,WG3CZYPC&nR?m)s,MxGE]6HTBcXNV=ukuOЙUTM!i+?h욧/ 2f΍.CM+_m6sWJIq ބYBsTC]d*x8"$i %Z \IUmu<+:!{J(0Tg0\$2i*71NZ/`"V,avE*8l ;{,eb),,XLݨ~'PfW՘2 ]BBySѓViֽ0q@J9V A(@0EKHJ9: ,24@jP'T j,,3Ru֥!Cp{, -+znɘoΰ1[?i\iȬlG9q%IsK;IhTsZRϙ[jbhkkmLPΩG|Ab$X)Hq'I[z1k+i6@Ժ* (Sх\$_pO6VWȩA# mK`LoeoXI|49'Ir4AFjD.MF+@riдOw(NƬq\$}?alH(t+0!56\ CFpǩ5 UO:ziGOn|g5cIKP#[e93}DʚqNl+.ZNRǒY|"OLKj̀*ʄ{҆f^\͡Qj3mL=R9, `J53Y e5 unQ˖-'1@)x9:-lo"@{P<yъ/Mފ)hmMc !hZܦ.YV=\/z:ƃoAkB\1Lv0GyeKydUF>t6x'R<ߎ{+.d㲆.y?Nkk0c}Ʊh־{z<2<j%[AծINy\{l} ZHk]+<Z(%qN Y;=G劈k)JN |54,>e1#L+NzU;'p\ ri})Zf߀#僄h 9&o[ q[ 98 q֐oa82;@Syp)M/8ƾ(/J^L'!P 3Uy;]C.>Ϩ漽?Xg<0ΫϓofK&Mk$r6a="gJ+ a<#z8"-gPIIm!7S>_)Z%[d7l)q}S7ԈЭXgxN^F]ի(8lG xG2H%\DnӵգsҘwV =e1ڀBBٛ,(}؅ r~j-$q ?, "*xC5:.έ"9/lrUErEqd!NY "o p z NtvvD|:L4܇[G0GKQ /^3䪤$ӬBPKe!z6vAa L-q#,WE]X~K>8g 2q]n3xz >B,j`ioBqE? ׈\1&y lRy7D;~$*HVi%ukN/KiɽLO| WD~|tĦ_mKmXK^V3(U +&?z}HٽZg-u_ߏR!c- ܰ<*j1HSޫ˷aBԓD̽l$r? բeNSR]U +aHf4ng?#(L!N6M[n6ݴgèEbl9rWv+I~ȏl_֡() dxs.2wٗzՍXVSmhKÏ^NSantW7)aѤz6LsՈJ!{ff8e#ƐFJ-@"H~D @^6DʶRejKeA+C"1PV _X-QÏZ N|˜`itr ]7;T J>M3>v(k UҨq2] fA~ 5(gȞp7ܦMV{ o4pVqU=o7GӨrvḊ[mJ <. 38_ə| gdNZDŽ^ϊs mN!-Z`&y-|TӀuK,o&H` V+w1X̫S! ;;j%̍xgOJ_× 撀& 1ݯZijp/88m'Q5Bឤn03Iߋq=!X"#|Qt d>H6جQ!԰_n?VC(a&ci-]3U|հ'TDA.1G.s#U&EH "Sʑ,줲-Mn#GO}dn ji\18` i}3Zdsd ^m8L\cx VA6,|cף},>k8\\#tfS-?=Qͧ0U}4~ M?݀"hwEt3_/0Nè΄BD=^gR J9K.7߿  yi͓/l*CRepx"A ŊJHZcƀ>mi.;>]!D,)t << <ր40۽cq bM \氎w*2R*ϑ\jQJ{(%CFR3ր~ȀZt"lEkNY9+0b$$Ǹ=m;kbԃ[?p>&nžy1dΕ[SȽuF6-8}MB־Ȳ3^(cY+\of!|hzTd@=تV(T ~>k'h;ų۩[ni o5 kW%(JW#Wq\#bsdUG>RvX[CU᳒EkI,3hck-Z_/!X1$ O ၭo QضT|6wDLY SVŕgd0s2,-͎3r=U$=v wweW[.cϩ]F=k/t{nW o: e[CS:*ddRv!? 0; CN⥟= H/(6{@(Vt}~] 4ÖX #{@ $s֏WC[[0%вֻTFv@|v 4P(>N̊Ŵb`fjFܛ"^Mm|H0̋~zHsDa?r8ƾ+4ͷe1I$z-;7rfnYE|8TC#^ :+^c-_ cZL+ x9PJp̈`Hk8RUpBD@}ju_$ bF!2 .?kHEYUg-/E_%uON)rL<*:Q4{"؁k9ſ!MXMyp*zSeHW\Z@V< YUdŰA`^Gi(smMֶp,p"HAz0~d'h~D/4u=o0}0V|Iɵk]=d /u䝇*8-ꢤѸ-ۉC$F> YIL\~&4KUfb5o)j5hvĦ/vheZ| ] / ]/uɏes+YqeUQ#AK% ԮX(DOz/Zd:&7)̎Иs5E]{6 X*HzI .KʉONAz'SlAi]Vh{s?D{GӍZOTS(U {Nr4孡joCKRg#gcүtQD ) k"m .+l6_^6ϼURԗIօ8~h0nȬ]3nRH2:-#\ЮO5zM}K7>X }&`=QMt=|s/D}U!NEe } vb-G_ ;Êfe%.6_GRHCiHi>%e|8M@Y_ "+`ԡY{-53ɲiy4ބR~H0%J$?3,2ۃ:W#yl.'MqͩB$2xJm0IHo (V S$I'nb~{ޓnIa;iwU?2WfUfij6Hq_8,h>69-٨3s-6&bϐxRssW ѿT#6(fuydF`I_ld[]0+ʼnpk k=&W=zм~4LJպK_~+G8./`B)=x -jy״~"ҚOKv͌ȇ]ԥ$ږ!8Reަ)??ͤp8a*L6Liʈ _,ql-GW3S^"tc'UZ PDǽa9H,r 4x54>Z N':JU/9h_qXm g{!EP!q,cy=Mb|t]I8zUq)`re,LZ*>?cx8ZV[C+k$38]ۅ^*P({ GҮF(lnxan޴h V#I8 Jli72fMM5ϥ<"bEVB3ҢYL -OK0ύLZȇTS2Vpd^VF:r=ƅB^|eː[!kXE8EuEѸ}4 H9Jw?Ő&򻨿jo٪ Z} ԝrB)gFfv9U!W6i|r0kT \! QdGmk+.ucW^ L.zB|=j +sUbr&|k]`rX",)%G% j«KUgk3DlʊObۮ8Tm .PӓȆq-eYop!c-F_[͐]qMZ'*hA"nJb< ]e(SU{La>0]w3Yݣyw9~)E/_~BYY{bޔhN9xxeH7U/A `I{4bl9>FÇ楐Ní)ċ{?&uBy7i=ٚIYerZMcIT rxGN =Ef}}j g]&WnTL` ydpYB8LmzLK}AbO_yɺfvA@"| D=KRM)>ϛ ֲ5J,V\*߇$614/8AyU7%l155qu y7)ى ?#XVɒPCŌS׫= ޯ{=L|_f%AΨ PX\[{!IyU׍n -%KmgiT&JH44 Hٓ=kD.A!Ęd\;X8C'HxvBdqdϋiٻf]6`"P w(dmMB٩L-!?7+5iBH1cyӈGEHYJp(*{~wu(ִat4M(A*b^R\/eTl5xs A^ԪU1a$MO6TFQ8X1攼B+|h&S_mZ \>6?F܊sY @>>d34qLL k0 hd8 mA8IT9tOU Wۉd Z: 4$݅ڡUx5/;_ͭ)ݠ{:@qư9FW%&cɹX='*J(zC(h"{yZxR$ ߛ 8~' wQJ^gEPB=;+ ( KFO^i>"pdv_bŞx:MƋ fh..p=2;H7]ܷʖZ0r-0A]{iM7ǻPԱ9mw&C$9Ŵx=rQGLn UU7"R~M"4/ȘLmyblՃURT'8P'a7F|yCn*r-MZl 1;A"ܼӉ#}-F}]JORy\?@eVẾQ2JrM:rmH~^<]"84>? \=Ӗ^qb[ MP#\E iҡlG5ů6'o8QCWfG gcmk/<l"Gp9mꏾ^k ( +.ąkS,^o +dN>XW& ?㙢 vj Hi_+TIyxa3oB2yFDڊ98~p׻Z$;k%aXi9LȽ "=Rmr YiAߴ\ m„IV0㵀J@0TAQFs5kϳHQ/迣 t _X/|eMMlxAReA9/gH Gp =fݯTgK}(7)0oxvITihȊGU\ϣX>SKħ[4X+/ :N+AOyQ͒qal`=-{PF< F77xTAa]iA0Wa=VƆsm|Lu%gҧɨ86$9؇"k oEC`B}vҜ% )R~FgxϢjPmmAkٶ+Nf:+tr0{X07dRt.YK 5YAHΠQ8F?3 DI/8Բ6g )(3BA#@s=3(ilXH:85LC } @{qU:SjGV8"Y.ꁾA:hY!<ɲF +Td^!K XFc{ SprYN?2P󕻉 ܀}G2cf(D_$J2/ILuyTurƜwZk'[w`1e:]EZk|#o# *ə ~0*H^M46dPF-2Ez\[EjL4Or/νi[d Vu}hUǺ6~44IncHmVK |w|+Ql':VXܩ]Z>)w?|g;~=~'@ւ ' cvO77 Gj[SF)726^P>"ĬN^p;d.bn'H`Aás,js &.-@+tٖ;bN`Smdj F=K}CvOyIzoG''6~Կ)Ly 7a,XnB @J]}AS92YE>T%l'V[kY6O%8 eb"pnY$ir-g۾lT0Uz4{K~ɚGb\`"R/iௗ b"raZWGGkC .rݪNKl Qysn<71wEDX~z x9?):)'Z+`l {5/Uߡ#HDNEΌ&//Jen '=HF~iz }Ftg Mp'0ҢV R#D= L'~C #ٿE :_C+CX+\Nb aTЗimmON"/Is7KjҧmqChOkC+I"^$DU 𣫬yy! W{eSq5%8kEgXBj &uBrB ~t\(}c,=@#G'ww'ԻdNYXP흓Rp6dž,u^+лL%% X7JO{yZ{Tow5$G_ 0DDdyR e z,of=Ǥ&1iU[ّ_992 QL(hTwx2Qu$Mt(#x9D}5+sZL NP|_PNxyZw\WBW2ſ$䟐lTU'9y[)ӔEL3/舏-[baKӢ(Xr.mK!cBKd7APj _qW?hxδ5_h}QLg/iGpF JsA3wK,SL~{t ´m7~^7XNT{|wno$VEo'^  !{Z,4}gj3`Sp ZնΑAϤVbb6_~A1Z+ڹ!/WaͯNfݴ:H,F(j 3rǛ!׽AKucľ#_z5F{MVXZ%H+$gxh΋5j~oLXEXl Gôf0x0+b9"k+ąZ]=|F?aw.Lli8A,?UDgjw}%/7cPmѭ4#A,t? z`=:I3:T\qX͒|NͰ:|SڇG[S붇lUy,jAj0iS܂LOtlyL2 m[)rH%$,FaT2/Gwg| Pir~lI,)<%Ƃ}"?L^5OJ cۥwo‘T YE \9Z/q}0ؠ2Yfޙ#Z>ل?5 O&@E:]K|"Hc[ m KP;3Gr\R,QoD7Ls"x R#5^FrC=a|!}-.*[֨G8Mu@JH,))ԃYJ+X4g Eh)=a'AqQW^vXMe qd ts R-fZF/ۢU`Eƒ&s@܋w_erAWChRuuS\qs\(yhлǔͰWX}` %zT-3 RL/\1$~/:wD eƖ~e9] . ̂T1VlSf!$V% `{mQ$<޷[t5B43F(>ZmU{}bМ0[Ln}ݎa`,OLt 9GokB'>y-zdۍέdMO0EY8]!]ïҚdAI{}8i#NNn(K:)E)%R".NV3Hcsj(>pRz?#tkX !!af}+ҺK}ӏvj76\6i^b(!EB[JaYFM~MlaS0aJƹ#g-]#q  @F{)5 M:ݹ*(plp {^{?d0zjHu tP0 xF^Y]|f(QMC>z~:ԢbYm"/\D|ғJ9dsF! !+ЀMVC G2E%@ƒt2zca!rS.4%.zO8(Lpmn/mL|m7u(4 .ÈQ͆ڽD1&@N%a9QV7KP2n&/u|>es-3|֑ϖ WWɍX|Kh3-W[%Fv*P {nR*׺oJLۃl"$~wv{zL_lp S\R{N)e{GT,t4`j_:yM/kq^kvBB'qե R>b$)Ҫ9c U \Ծ_uPvedӐ9Rn*ݡ.Ԟ$Mbv*t>FGtf! %_]R1<nFپDvIPS15NrתAbFuh4JCS*חWk"`۷H)E[vEY`slͅM|CΊڰÕRBa! $jgSy( FK|xuO_|z{E՗k?."I=-йnR! ]9Uje1LjZnDd7-bɇ\p )'F .z [ mM'`bI@dTfdtU2f}G$ }JĿ+&K2}e(3NjK DeM;5un$i(F2SRMKima%Y?ѓݚ} n`>Hp/*@TU,bN0ǬkE< \5׾ŋd| ÃtQTL9 Ih BMJ( Xz 3M!H4w"ĘN&1H L(<}8SJ8ai!dIl' Gl9h}bx~,8 ۅʌQtOԄw&N߰$5P 4Ξa>JZLM|LAKꫭʛ"blUSAZY-"5lj3Lv+?B捤lVB&C9+^@bH Wy wdiMӣp~$Q#uYE{LҵnؼiWn7 RS}B?ެEIQY*5+wloWE׺e{tĴ}s(UE[` 6vőQ?50nُ?e;ox3KWs#=;sr@FL=驯 85^=^c3#0~jb],+PoZOl]ni*~h[HsT\}iI"q^W x' P IblǺ|vx}7 tY*(1h A$.+ԉ:zxVU`>]R,X~9<ۅ!q$ 3(g-sj%eѨ 'N(a J.I‘:*z{~k{ӬfN%ggGRZtmgXh%[k,9άkee$—`!-8jk p7 >ICߏzK6Fیh]r ۗ3{K C ?.PٰjU1,}G<67* B-Gހ݇/HsULڑnh6TIۍ49&2z@*ZjAWBa@Xg&*+6ME􍥔xid4ZFج.ޒ<%Xz"7pے7%(3(:4Q>Gm3*_"Y>cczQ Qlh@*VIB{ou?bp(+ygRb:<`[e:nˍQ/UC 6ˮjIV.<Ia#|k8EKN"%hm w|Itf1gLGU ˈ*agw%Eؘv,Lh蔈pɛ@@=CFB_?aWNw =@7|1{(?:o B]kV cL<0/>#%ueSi==ؘϵ%DrV"ɴXI2D@1I]iL"^sQ5 oM^d*{z4>!({~سT!,Z:1i 򴚙`?3 " pDxi(!r?{\G$q}%k\5Dؘo w/Qy&2Vr0ڗNA}wHX+kC|9,P&Q掗)sdlZ,Sd,&a>ɸo,|(9/VSO xFIPbs'H<-[!an^%9jo >_"&lʎ%_~8t .twG /1sԘe/7cV$S[U;:345s ),j Mw lOrM&FT#E{!KxKb3*{;w q1[/Mb#Z:;@BeAg0-59(3qY<o4$aeq'cŇ P69zI {G ̠0"{|Wq_$ThRdαQ> IkbM[U,)T9 ;lp8*>O%[#i|>jO8&=ݑE6(I7̱ebbV׺IkZq|;.u%gDwTNcsu&Zho)rHGR]sx5Ϻ՛~Lz>/Aaj"!,m;?'o~O"=AbrjglQ&$l۾ =-h&N{,IմҙMj;k4?*5)TQFºo|,+ {װ4A?e"Ts#sʊĹl: [m~nSh-ڍ@t+C앃ZZUt:.AA#\R芊fIi ƎaJ^BOθF" |?nU|x"q]3uŰNavHĜvFKr.HjCT4Tx;#,;Eqsťr0ec/g% 2[S/m M$U"cVh~Z̭,/lcɃϤofi93,Qi# R]G^k`7Hӈ]`˻zq_k'M=̠"s*Tn] sf N U+z!V(z /""9qz$YĘF4=R4*vA#o]MZ)80vE_BK! eE6.M0Huҁa}qy? ظ-!t|*gFwf ?Nԁ^FDzLaX%'D'#7z;r鳈 -ɐq^|nV ۞A$[ԙd*^r1;Fe3M89?/~ :(̤R3REkm Gݩp4J%cUAxacIQ0\vdB +mAGECB^NxE!wPNUH9\,I*~珏j Tв#ToI:.{<2z3#=K&O[ҘZT;4k[G{a$uZJ0X}>HdEҐJk.H\$Whxwg6[{º={?MIT!הHG.?Ir!ݭ[]W}N+M/?3%y׎sY%7~ YC45]9.x cjIPdntܝ( tɱWs=`w/3LEa ȶX9ÕoJp5g3\d"j˛b#ޅ.i+6Y izVȌPr"LH-=zT(p8Ayk^eJ@,,UGLQ|;znvoSoS_-ůrr+'+^Yy>m<h?N5JL=XUiFkWS|o?͠T}O2-T$f+ȓs7k{~%vbT1X$S\?kr[8:@R SmޠO[L%rUfwqƷ>w( a:+eJ ZLuqouf.xj``D&r;Fr15Y:s8D zh=-jn^&ȢY D/Gv<~6uhFxG^f׹wkБ7|[%W=/X)]RӀ색pLlzbOOUhLַE q HL%)}00.9 -ÿ9 u)JU|vOfaU8Ȍ*J2 FU"7hYq')hl=#pJ?bV*ΰ/"mRe'.e_M M<Rx(ڇ'cUa ß*ʐ;_LUM 8uh Re{ KAU1Q8BP14v":*+ Xݥ(iW7&v \$ߩe2\N#o$go/-ݢVn"i{תOR?/:%CJuEL`?n_K복:dg(eArk_ bSІ_N8ԕP3/1f\it =xcD ը/rBЈ炩yJl^ѤbWDBY.i 'y2&l\'_my'3cshдz 7VM[wh &gTl|>Ry3:$Z@*NPjJ3lZQ'! Tz!aa7&IE~2K"\ZzI]퉎CGFǃf0geD{tU@0d[ оVlCgE?ߩ_j< 'W)p #"ԙN˯gI9$GG](h6aVɣoW/t܀G{Pk߼Ok{24EDyaڑ#~R$)rCo_-(cÛX'+,̎m*,jB37DshU`5nKd3V#nCM =eǃfԽ+GZ4~rj!08;{E;:[_)\I+eU[e*P= ǭӀ}o4Ksw#, )9+%TwZڧ"|-SHQ%Kz@jBjmcjQfT`h2=%E2N a:H/Jnۏ0{DSjYJrJ:,ɷT$ƾ QCoKQGU4#L+0yFE 柖`p 'qu+4/ j׸Ć?F:P긭qqut h%r,KYIޘպ눌_^ЋA2u".bJҖ4V;|][w]^b۸tO^CX샷CtZ+ 2˩2 آ3v̦p= άHaKNߐi!$J 6s}μ!x,'!gQCE8m݌q3=!\5; fcOJ02 8[W G_uwwA72ZSz8831BsVD,|C`hL"z+ߦ&kڣXRsP.sw)@m9Y+ٯi1'+!N䣏0 2F;'pZ{2Ŏ,ҟ-drAԵ3s+q &Ρ4^RFS1#0B= )ĭBt:@ʎpܣ c^|xOc.^)35(w54䍝}"ay:yܜ[Ens-!M}>|/='xîFF#or)1 1apqbOҝ r"fom)GF)4k{THc/XRB6?B rW\XV@=Dv.6Yش>m}e8Aj^8RNwObln},9`63 zHĠOZ?%C>N4-G-dD+7ʮC1r>%:^u:t,,z&Nš]&#\`ٵ7Saʧ aߝz쎔Q ,KzOr QG9G8Ol/OsR[3@L3+t˱ɂl^]Yk~ Q:zI}"H1b3M`bwWZCDf`\k43%d+:/e74f֑λfF~qTvhw]'$4?m0!zש"AԱ6iEp\TTҕg Gkzwl0ZFPj!RL'}&vx \/kT駒 ZY8]n~z `8C#H<\$ͺ$X]l!K2Ԋ2c"r|eAen F:"z]VԎz:2 j][%4/occ3 =UXVyB 밲:G ]n,YLm)?ѧÚH ص(rɌ"VNU5LA8Yj3ݧz$9jAdAҭk"MZ!2(i77]` ߬_-*cT?}DڋuK]ښV>~[U?RXuBr.랥/V'w%1[ Zdq+OA-كt @]x)N{bCh7Ϸ&y5*KܗfC; b[ .GgHqb rE1bB/ջkf};:"ơnwLG (IL1 w:pE]7Mey[;pFG}WGZT0$ȰJ wz~z*UIh0.ǜY/9DtrT@S=}Ŗ2w~{M.õa:%ְ,Ǩ4h#RWX> c._~ݢd{xzmnhE%*8nhN`.1ꃡA~ɸRaڻ6L$X8UV$}v& |wP6X8`&{TA"Gٍ2̦Py"c.r8[8KbIm[f,܊ToĵQί&,š:dI>CrTIGo‚VURȉ 4fMQ>-r ܮpP6뀣TM6fLM3xSݾ 믃+zov@o(3u\ױKu.^I,,p6~G9F"Z3'!࣎k#k3bI)ۍ켔L7ɩ Sn5%c}lqY6v*]>n/=Dj@]&1bLxbNծ}Uá(m;EZmC1p ">RT?ǒQ b>Rt'u|RfX:߱:e8jڶ̃eEM+h|d h ^ Obf9TWEEcsT3ŒY]t$E{ $=H-n&JUI߫ B'Lpes YoRd7 _D~j\x=T}V}Si}O\ΊWmM=͜ M(F E^H4sَh0^:s}.7|'G>P}~a2g TKPO!vge~Ө(}]l|O"΃`,eg@?V774=`y*̀XtR,Rjy{rQ[ڭCm6|^Yq^c5>u3\&C?{P X~ !|U?s~oX/)7Ί82Df!8Z.'jBIxچKyϲc;H d=HgzyͭkwLlJ!OWXf !5"y%(ۇb'ա&Cu,(;8 '-h.MSޤY;WAuG41 R+us\Qͮ~K$t䫽;[$2¾!)T %FQc2:fW^=yf>E^axјqxi4 ǭG[:mjC!015y[ ?-}cZKrGzcLy 崭UK^$3A2-au{!SPI R+Z O~H؄iS2qFG79Iȷ4X(c{4 ;I.NxF0ℹ;yIEw7fMjrSoˉ(Qa ~LY1?'rzҏƷ|$2#<<}8Sx3C&7;)iQ#Y1 !x#ݪE6ˊ m-\R:3M%I˸B91C@y!f 61;+qB7j6ppo =W8Pe 'iDTGctۉuSl,'kxF=~d_tnA$"&55{ vF} \b >{av9+F&?>y<)C8.cܲ@TIJ|4/(5қH*DX`}kx/È P|ў-I;~}|-BLڶd\XkH ޲)9Z0zz9D8IKBF=~O9^x+֦*?Dx`P#a9dYJΏIo\+e*ZgR4N$dv0m+XZROc˘իl!xJi;JJ Ѹ#?W1KϣPM ӫ%^< (|N .~㨌_ҍvn(6b9+J?pDɖNP*S mUl/:q:T96~9MUOxqRy)CX ndɞTLWϞ nD%YY*#X(CjB :t #hh-UI;EtHvǚyz˵D/2{'& ''P*)đ> م]ʮ L` 5Z6\ƕJx&AT="_.La-Z[zDBP.ퟓTZ&>u~l*جi_r6%QƗU/яRp6:{e{O^f8C9cm<w%Qc.@>Mr#뉎pdz^3ĝTܱlV̱l8m1зxN/më'PpiY*6p?_ T҈,H͢Xg@ g3CmͭYW M۔\ٳZ|e0w MhGy:HzrJ31?BC[t[WVfiճWtQ<6cK2~*ג - zFsZ SvaEEHrtУųۛbN ^HokDAb1 T- $EY.\uI:L<@~rQ(/J]ADj&^s@H]rvcY~Xun/5z,(8bVS8>B$ dtz9QG>V.MH Y`Nw Ѥi, 8$ Ej;G&$y˯ Qaui+*%b.ÖYҝ7:[^d4X Epc;n3%*!;H𧱩4S ss^a2''GA']Loef5t; -bP!^+[\ POlO%~䷹n/=C=_OMi:Tv8޴9(osfuzcfC~t$XJsO_WDj;,O29[B3v)K"52cܜuGc}*}O2y/\؂bׇ7L̪}-ZL*͵GƌiH" |E!kaM)~j;dK}qC v7AS{S9/4U_=Tt4aWq CHK;d};&xav tq.*_T9wqQ^.: |5`A^ Y_ ΰ\{+ s7aJ(mIGk|.:;gfs h z"!#f '{FO=|I1h}U˧x 6Oб\bS>_Y^v\dް*m\zٴĩ^-0i{+hc/t6#:[2 jArZg$#dhb%*L_vdHۚN-'`yd&<_C;9bG+CcZ-d(>3f@Z|nxzW$D.W!{9?ZnrTV1M$%Z7~αzB|o/1:;l^K,_85woZ|tC7 Cn:ɝ$%fNoQɁ\$ޙ+vJ:VсLs`|tDsC3Kʡ" 8u$2+hcL@6R1 ϲ|*qj4#>&bwlg*\i9ofGmlN[tp#uZx#[|)ڡ_ PnB8f:jm*/]w&P]o)H{:Șpsubc_¼6ކ]/>@L% ~RY*& U8WW2ϓ<.FwE+N?\oqj-n ;]L; Z=cI =xgsJ{ivEUHZЄ 9 |?ز4P;?ij$ɘݞfeIJZ[3mftU,D / h<}8IX ! N4oHEl0gZKQg8%o:[HCiP&΂6ouL/A $mn,Ƌuc (Ј2˗U\7[ =4hOt(d0!(/竖ΈnIL_mJGMzUk-\r^w+ ES8C[ C< ow{A:7/z`QL̷V|0v\81l!,/B‹6yfHS"ߛ@)1aj\9_Sqkrkm5)Y/sWr}9SKHם! nDټMgJDdR4;^k5>#q*ks˓@kQ!'GfG b0N*;>L. FMam%6I??u')O$59??0MzVsqY„)8TQD)Mn& 5IPm3U?z[c\P P򞿎4 HPsycmVJPfG +Hr+zN7߾.W/DPH`ڕFjpTQnZ,t|~EM3* R76 jO]"',:9 LrgRM;Fۉ-pߙ nN~>3-`fFMm }Un OԞ6S$irFfq%вEdl5!ZQ<hFwL&^2b L{Ay}/fe&Q,%Ƚr{c^W(EXAFcoYB'=0@ T34ԾaC36'8M 7o1 x-|`,_O­*`'eݚZPP=TQV_-nB=(o+ Hֈki{A$Xvvl]*R"DGceY^Ĕ\ 8Gwr2G#7Z:0@`^(;D:.E//b~o`]Ii2 Һltȟ[ E #^ƟgH auv- u…p}Ny72ʻA$o?fx+ 'c߳ЉatyD{*8ey'ʒH!CP+6&<&Mbu7#n>i$mř[gkDw{׆nP';^Y".BSK?K'i̳]uسgh%f5X^wWU ܸ侉U͋ 9u@Q@+zmR*_+TC^}VC\B8 e]٦Rmcu$C:tA5bgatjTyT|l&`9 KQ XƥQfjA~5.\ncoL__gkpe/d}B" E)Vt}W+BXY#𱴩p|L~艃Gvh0?#! qcM#-wCRu,bjض?JzZRPrp| 0|WGX-@7_?asJy?B' ks6*35Em;.zȌNRl4wjq y 2~N`ABU0h ֨e2szVmXrL$;{dUg'Ufr HE4mCPK1twۿ0a9rxZ Ҩ{y*hD;tPjW; , ăп>@ ʝ։-4ghH_˦lzK fsR 3`¸^fZ̮kZ<ڦKL&EӢNL~$b GQ:c=!v W[1G/uv3KT/w= 0 ?x YaR&&^`ʶ(D n*plM"hd#5+`|I".^AB,]ۮI1aBB/\ "a1>>3 >qɷ\k5ESq}@/)N % }x>nk`ݣǞ)P.OK8*5yZ=rYVSd&‚nǚc:p/* b Z |w[3|a/Fuq1c~ >o܆/LFuO(uZ6*`M { #G/.+6\G"ΗOw$nܰjg8BEfcGGu{-u,~hhi35|8281ju.rUHhw09nRoX. :x *lg ĚhG\AU&m鹀e65+`7-T;33tur h MD:qjl%\>MZT9o(cخ_+Z_dJ$S&skFҚ-3Qv6٦ ]lx)^fl97ݜ :⑋XY @k #$u{%)\ eK&bl`OO R{#KprTvOB֓*Acx"fuxHҟ윏{47S6V{RDe }Wab1wYB08Fgmx%Y@4zsqsA@@"n'^ DuLe%3tF ;d*zs|{=#Rjorq8oO?D蛫mʿoz"au$o'YUDMȣ-5t8m 1s61<9+Z27;-@{4*[q.+'cXhONUWQqIͭ,z̐z)~zYpHɽIbUټJ(@J9b41EdY;V؃Mɷ d'q7 m^9)GI4m.bڻd9ouJmH~u; Yv(|єd؟K'`08՝JRˡ:}fs !UTcq[R=V#] (t}}&GT{+%-#"V:xn4cFܾq QY0]&vx|:.4z *)31~iZq2FC 8pbZ?D.AQ$i)%3 c?~}0Ҝ f+0*Z_FY,@ )*Vhךfܪp6$~ cIw/Hbx]ѿ"F}(}x ,(tܘ/BʗiE`@ HnY34&ZC. wj%+ʵw^74+f3 CژjSFLNK8ѿlo#e@bX۷pLZz^İ|i Da#&&-~@R"ehs:⨸Yͨv)Tix‚3'Dm6Tɣ_TbH O1,+m;Np|U ]v'0y?*d_NNrv ي$ Tb]BA'#ݖMD5S;FߒڒtLSߡ^ eFOeR&?A1g '4d޶c-wp"Iyzo#~Y`t!v:.]T% Z;&2,u< /s?a _NтbϚZg0~YVS o8dVsߜ3BI{rEkovKRa)sg;&%6AӤO8P;R5XN^%?@ m~BWzB#Ʌ~9Ɣق.{|‘l9_Hv& 9H We.$wAuMxetKe 6=xY `H&vG.wa^;r%ejώ p7!J0f5~=Qki⫗'$HaZ/ @A;IߙY4궻pɏl[0l"׈!/%SпliLmޟ3y)OjD, ƴӽyegrZ]@W]I0x`=j4Bϴv]v9"SKU3@)=sN F~ ~ H-S6vyV5 @QFiHNT-O<:BGѐ@OĬS"_D6OyG)%(DBJiٶ cQ񅱼EDYx`ur9׺G5eD+,J*iy?a$9ʼnf7#% %s+ ATw=*sR_U*~/nR3+yF jt+< og:E'ވE\˒*у՟N' '!skdV( MFFWlD{ϫa+qY710"v*0_'6E#E XG9f{_$&8?gVMCE:Fo_G7e:ûb+X_ϡA'Zg^%x G)G->/R{UbYӑ Z1m [2EKkoG{W'pl'-9\mkwjnķvM5C|qY+l.:M3(эLhɋ4<3@I_ v-_$#[%Bc+:$.!]96%^#gea6>!hpJЪv[;EuK/kT޼_qa~>gm}z˾5MZ;=<+<0)sE >gѼv' XYnn]AVr)B !LD'>(>޶)wKֳ. p0 +Jc~Db=kDnWc|4G%AgBay *U8I!3APGQ7AN^"ʕ3@j)c_k-~~r3U<[BD@Qn`Ê:[c>4R-4l.&ҪwYO_W_z0[qyӹ.#m!~e bʓy :*Y ,P_oX5wjF=c?U8$Y]yG4!iuy3e|f=VdO}FM6$%Y5W{7pDwނi~&OD6-{@=)*Y2dM cNLrl34fpڹw"Y|2nx.7t΄p $Q[|~`v3&/l.{)*ơiҎu1GMj{Qd P*fcM$(~r{f<"}/"%:T؁KDk.v+zHky 3*Ź(R\]I6]zϐ~C;".ԑ!${Zλ7YX4(9Y23bd<]+̤6,Sܢ'an.Ȓ`a:wc|LP {mk6J$}G6--_i( OTjtY `!CPCqTcIdO?v`،pRi!|9_>yfRCX betڜ:wXZBR8Ǩx*bUb_` i\$S_N~d^pRň2Z|ePxWםP-^YipQ @%0]J#4E~Yi7`#|_ViXn)aniNEZA|{<3ۘ۩,ԺYkaGYQ.o@-|E,6y1sMpς"#O+1$"n~8 mG&p8N"\$n;}t ~װGa6jofCt7z$yi Aaur2Cg=Zo4VeV^d|gc⹙Av׿KoJVoiμ&WJY"?juovMI:pnБUqL\} ǙVrC~~ƅׯNZKHus## $kEQ3[u#0ow5%#%Nb%tZx© 2U$14cuhbb9Rl-"*ZڈUc %ܓLQQ)XwdC{SHU9Tu]#UGYeK*~ ?-Шe&@g2|3&|4(V2&PٜWq"Koe#Ϋ_̑@ZlLp%k 6.,XH ;E56v-M{-qĦ\r.tvE u?LuL叭g]u"N/|.~8nS`6x(*/fkhu$Z:wN"˨J>KZd|!3{NM`|-D.uoGHsb^ϩՀ?@pq[z oAY;7w2r塠B/(v6F\AϖjnvG=vsXIߍ J|* f_u *.%JX_n~ T5ˡgHt7~mlvܼݐ!ڀG~cEb?cugutKyQ9 iƂv&cnzB~. CF_pjouȨLa %kRN7?fWS('lMtiǂY(#~P3V@oz!6wޖ&}bCtykSG\V {$U}l,epÎVfb}@Ijl쪓bJLXR=Dvyiep[m~p7+RͲb -%2^, +bE`?ezfť=|ol{vw;o'rٶBpm3\^u|j9:ܟ\%݃܉"G7Ip܆K`92ҌssT}LlAONx2&i^EI#5 kÔNOoS zi0e\ ޒN>Y@'Ynqл 91Ic A|2!bZ#'oK $ڽ _Q6.*npSGÊaVyYaܪشmQö)f.$y0aZq ^n(/SaJ9`gVLXr()ļv_XfmaNҋrJfA%S5bݦɷT?' x5cn*(^)Pʒ\0zꮨ7yGYpX &(A!ʓ Nt+R տ/^Fh\XGްLX:O叹'RL=6Y&ytWͼ9:,yG#cDQz{$EF6; ٝH TX=P祝h@5sRdяrāj;ߪJLCo{Ĥ͟\lrc k lcqA ]mFC:z>#inRy<͌FiQfAvJ`Σ#2G'D + :=rbW[,ԡcVcbC~;ޣ{f8$|{=,hB%!c 7yq*5G7rh!z0j@lzw~S0s|&h%\&;9$zE_۟ ;Kiv^4 *;"9r'>PRs|[搿;Mlay߁ {,C|j n{vw49i*dmq )a5/\=*(Sz2P.X¼_1:hU5{ "̏vuDGA h(2 KuQz)iVv4Bˏb'Je^4:t"VoS81[bc vۋ|vhP7dǣ7̔"F?Ӱf:)LgeZHT).[a"HS\BQ(ZOy^pPD1(G;$ #ڨuknr>G| nfeqN G_98~/,22?{?3uAH5&U-zVdFa[v7+;FylcɆ¢ qx1ZU1Iy9Ҳog%[.@:,ㄩhE]MLDiY Bg, *wENcmUQVnÑ`?&*˨/IY6~^e=<-Ce܎d=;@ 8 FTIt79^  Y?˳fLz3=P_y6琮Lf"ؤ`_Lnm~MEx5"t!n'ri3o<:򜦴<6bNJ5f74 . zthN×Xu~yS.65xC($ǐFdF&i\FsܿL"h+®{|-> ԉR4w+a߰"ͧ{=,C3:trL }8V:ər{qsmjgC-mT + q_t6;jv7?=~nS۞ W= M_ЊKu|Xl͌*E\q4krI<) g0❼=QTގ# Ƃzq KS32wQ=Wac'>|I$PT.E Om̴,I4h_ f~hUFGS HHz"=sVP8@Zx8633iP "FXrU!Θ ߆%$q{Kt yXj ZlIU wv_+ OXd!l9+jB8S\}"AWV##3 qPaRgJÈueM5Mjp'_fK]JZKAێ`4 Tvx\2ۿUng2w,fVj:HA{LU=WVf*gFߪ)S߁~Y7*?L~e^lb}v_+|y$`c;3AJL,#?03 ?G`O5i"s NƯ,ޱD:BLB}nizs,ҟM+P} oY?J} 93dĉhE\ӆX}H~3t ʃó}*V~/dXZ*0}n Q-DifF-WhiݕC2#Lq ҧe:6o*i KWYҥ?aR U RlvlkhKN; zg] MJ J?A"'/hEW[lXhvWP.$4_oCߟ̑<t }zd%i[ݤڳZb+qiyCZ2{GmJ@bmԼ=2~?O=XFq7o*~:bҩ;T3~Pu-|ahVtG_joAc˾}i| f?8`)jjymOYJg*Ҽ.u}Hyg 6}ȶv'c /&)mPv@k[!dC3R,U|65\ %W͚8YrbN/@UFAZ%9doX6M52y9ge@Y[8[EFG΍|Tm|eRfa@?}纜qyUW>/$˓hNn! P,B+3"O ̵[l;Z8OSW=M΃BbxZT ^ pRsԝ& X:l`Fȫ}6:8f2b(Thqfo66ZLS{9=* vC-&%}ҍm 5{tn{,ItU/ B;aЊ΁T}9k_K&C{ߕNH;|u/5/ud1Pʄ9XM249:t7dDC ^j h5$'?N)xJ 8[^%ZC keNHMx G,T2K=Ʉ7o$fj-.iGWd"V|m7}KDFS3s~qA[߽{h\eC\3h#0f c,hAҠwp16@GBLdeA9}={#S p}U:n841x1:vuWYgf +t,vB{#ŠGaT[:S[$=t7D@Ô="`Kua켠U-콸Ɗ5 n<9uG@ZE+׺ú d\t*PmBDd)I]3^t[:c01ҼGNkK[Ix*EY'.8=6zPpA gkOQ.W}hP_|#(>}ì0o>yNuC.rV&@"F%eeXcW_5-GO갈 Ka߄Fv7`aDZG |"3"ږ'/9}Fa2@(-%ocwG >A-yw񍄡Hl/LVb.&ӎIN۾i_]/8B=kZFҰQە ^-%ѵkgD9cމ+S|tiv'v?fstD6zǨ2}yi聝sZѪRჄ]_sAdW 61ȯ[H2Bx*򍭿<+޾oOoc-)gqNtL~uRon Þ cnsg`8Zp_UFָ_i^>nG=+GZu{5ʲ]S[9zyTb<1IsmT%"Y]oTG?E;9 DGjn7?.n3&EykB\8~Z`%ޏW~IESaNO5 Iu/Jh !⼃1B 2IG?Z<Z3u5MIݹS\%qPwvpX KL_5iGKq uX{(Jt|]`߹L7߇bTM4 t/8(*%.( m [Gm{ٯSƃ|.^tT@|U'W !BD:? )r%MUosuh6og:n}t½rzО۟Ä/XDExӎ3R;yx ܈N62S-feg;wxSʒM[ǻINULaZuCm<{qw{DD5.RD Oi#d̖;i~sݹ^Y± |vCWZ/S2Z=Z"/wӄj(D\ ă~HX_&_4Q2ݨ/b+4g=R8:V=&F^iF(#tD ДCl y.kZԩw$$9f."Sz y~Cƾ Zv ^rhqӶ,F9완 zE8StJAStEڌ.N6ÀNYeiWӇ A9:GT˗õ_{Ŋ'Q<&#?Bv25S h2FS~Jf&ݺ}_K'k33:?w endstream endobj 25 0 obj<>endobj 26 0 obj[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 317 400 459 837 636 950 779 274 390 390 500 837 317 360 317 336 636 636 636 636 636 636 636 636 636 636 336 336 837 837 837 530 1000 684 686 698 770 631 575 774 751 294 294 655 557 862 748 787 603 787 694 634 610 731 684 988 685 610 685 390 336 390 837 500 500 612 634 549 634 615 352 634 633 277 277 579 277 974 633 611 634 634 411 520 392 633 591 817 591 591 524 636 336 636 837 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 400 636 636 636 636 336 500 500 1000 471 617 837 837 1000 500 500 837 400 400 500 636 636 317 500 400 471 617 969 969 969 530 684 684 684 684 684 684 974 698 631 631 631 631 294 294 294 294 774 748 787 787 787 787 787 837 787 731 731 731 731 610 607 629 612 612 612 612 612 612 995 549 615 615 615 615 277 277 277 277 611 633 611 611 611 611 611 837 611 633 633 633 633 591 634 591]endobj 27 0 obj<>stream xڬuX]6JKHw !H0 C %t4Ht~nǷ!Z\k Cu-)K9Pqpr?hy8C64hA2f0#  fHC= k@GSA8|7K l+= T@QM,P3{=,+`ݐvr g@w ㍉:P30 h A 8nO ܉#CaP# _U]F?Qyndhq+m0+7 bM@!Mo}+~X 7NK+1w7 .MCrq8¹^Ht^k;5۬aڌӇJ /uPNV DbIg[#c!sycpFgje*anqH,)`jV+<=X!_|Nh^'AIi"F2GOw%Zq_C n-4u8@P+2dM6RJd%iRt< nr/.:h'k'{D#:H}]Cd&IHr1 G^a siTT[ + K[Pr 2W:vK7/+(;hx5뎒I`ސnw&UrL9V{^/#Y͙#ڰȆ0{ X5Rg͏]1mt8q a:v̴h㉽GSG^Y(#`"qzY1䮿-uvóY.MjIb-n40v-^h r9ի6 I{M$QF㰗Ffw6#6ՖL5> 5C\>f9zM^y~:ĤC,xn;{Hmu 26R+&' /vUbQ+ vUr{طiaj2= S,F;f~.9hз^!\6VA* XV,.z?}:F̛|G iseC&{3W\~}*~y{(~$L.k~bV'U>?rs[K%Hq{]0M-Fy(Ӭ/FV3VbԱX޼1~cкg2&,St *ޏeO_#Vggƨ]oC~E?\4UAOռH"5.Wn[aVc˄XKVJ6E6̺):|ڝuuI{sG%2jB_! 4ռ]F!C]J9FHFLJTr&u)hW5a+O[)n= fm:\W0OPd(3~^,C7 +U_z$jT'Y'i0qrW/o$:eS;F@H`GnRZh!I[J`GQQۿFܡIg.bcv4f1?;"Q ڑbHKԙ`j@sUabFG\ڂFT%K}E/ӭ݀j痺Ω,֩{#|Y2osJr?X=/5jȪ>U5r$(dƝT, W`(v:+`-x) w=BDOR{c-hc^x IlF}=ߥ~ld5pcqG? nR"s$ wsDҜn\Ȟzeٗmaܰ(i-~z"_[[+U<;7{k ׈OQh?ʢ$m8\fskwn9*ҡiH/ja~Ld].;ۇvp@ J45wqjJ(:Wo 3J$'&tRWejş'JC!{s:<=\?װ^(2tڋPZ0/˜[j?B281O1Dm~w=\:$X`Fͦ^Gr3iX٥Cݲ<@!9V-='qkt#^[Nجs}ߨY xZ^a^WOre{N=Me?[գ{rUݏq=&:=\&C䫢H|EC,z}\V~$%RVXVAЅvEڰޮ6LTԞX/WȨw н:C8n|RE/`mfŗ^Ӣa)N\<+l0a^K2gywY kܦ S9 ɟvӍlE 1_0ݭ~Cawaݬ =*eT!)O1}wS}mRl ayW]]nnOr˕'ۡZm⸁hLܮ%$%. j lOًg~%:%$p睊s">ؕ ڻqOxSm\]?{/ UkǧD9n*ssm 7 pl@/TGѪ)\QbW֓1gݫ<= wrѲ5JK'RQl28d͢M^ivl/Tbt>6 yoe_Xae]κj:PB]c󟍹[3z'% ]o&a/{]կcjd} R%$HXg"ΙYyR!&5.Ɛ2L=ebB+|ahEWQoe6 GB w/Vdl:ub4|? {~8VVB#m =gm Ey*DKFeyRw]x}J0YuqreYTyը]m% FwWБ4 Ĝ>]x`Q`UZD8d%{; Ճ,7gZ%0uw!3L^򃩒ue0UYF!NOJdD!%:˱bi,Tvi1Ex>M{NLP)o13 9j[ Af\wMsxE;΁"t(+m]wȑ N` $9;֕V(~GL>=3fwELϓ"`6{lԵP*Zc*f>%DïJ6QZ Ͳ(^/GK[Wo0F7*VɹOtC $ !'z3 L3k{[$% tMIX/ J))qy 'k-r|AFwz,悈A\$g^ҥgi~?KR{8vJJ[;a]ynPu`Ra\5xM`Zܯ(EfAÙ4x\_qwS]rkZ߇w}v婡y~$,.dSy)^vm(d  Fny<@YQ Ks̵{z&,,(CAi0 r0VDc$ ZJ ^nˠwe_lSK|Ll_ $=1~ve{HX/R^JNM4boc S6xV.aD"{d LjRw7C0Ե3845i)vE[/&,t0D>6z,3Кm^ֻM\DEt_e 7^=;D#dT)IOУmoES=Uv6s[@/;nf3܁p/L&Bٖh#eIcc.. ,"5t8ѹsDSϖxN#Q`79qjI6dpמzl6ib=F@+ԀjCz܁<^+l$ۜyq5kLہij1~ ׷z&KO||܉[C/ZWחk*/*V+v.&}4Ye /HP2>+ l!dD2?WOmvFy!߸65fUTȱ}#ʵcGL;2:Szs $ ~>m1ȩI%)ṁ&Tu8$}5e=?`Ɋ5ObP  h1Z߯7% hTMn:-[!}b4L'܏Oq~;{0n ^ ϫf+FKF.c]Ћ,K(.$ 0=If iXX r\̳Wd;=O)9ީzigWzk\Y1?=y))[oR/.FYz4} _IXӲҩ?.%Mn}~n)sj3sZf6> Pۜd#Pm?lǘnO#:mf(HÂ"Ѣ_eR'E[L@v"/C}%pwyxXYԦɐ_& "ʱynD2@0"aߧ /2"#ðvگ\-$5J:yYsu6o?}Mʯ:\2+P %|J} n-w@zU:5y!&e0"œLFQT?% qIDK1[~y{zZqOZ _HYArw?Ѫ4M!|PΙ(`t)~^ݹ)RuY/R2桬q}v.ɔf_IԣO[6k"ec[II$HyMW`{-?2+?=nԯԢׯZQ<(u&f4p8hDkOe=\,(; Є[@P-~ᨃGxRGSuxdbW qU/G[:"s}yN3&rG4ϴ[)~>F>${Z~ky(9N oNy~G@[ V|rr|3p/bG'$|P; 7$H2DM1D+E4cH#.kk(T̊FڮHlDpIj=~S+k̀7N5~} J<цy-'Ү_,yiG-Vڰ'+BMtޕVi>dP$dB#ʲژz%m2AjxO"47EXO x0WB\$3ּ|Rf[9E]0Bi|oߞR}|G(Zr'y~]1j$S<XCy`2NLl0o2FzTw~*CġV:^Ϩ1v5Q$Ͳu3W֯[P.m#wGmBџʔ:e/r #ᮒ jOIֹkRLenz'XgΪ&G_~Z>D?^ªnt[A+e.%'!^h "P1u"oX3ݸ=}{PL3q6ӄg32Z~/ϼGH;ѝE118xp-v 6N uU/Kk:MXԡ[fX Hhe1iHLuΈa/1,d{봧Q[ [X>20@I҆77GshyC# + Ȼ{94ن".Ͳ#̕ G xk0ӬH@jBqǶ tCA-"8n~w:GPzOe/С=]+YȔoŭdn~}*ׅg͓_nf0M&B [#1Y=Fe%\$G(b s[Պ_sXVxzP柢4 KX|!: K\~a-%SDpքGcpIb6!ueansqN6xQ PU@G@~+<;3GADqr0Anu?f*A_Kh۷"|oz?2 g6w#Iʸ%KUV?ǏjlOQ.(~>{>3.-(w0덍/̔2;^|uSbA!]_ bJ2su:&eЌ>,u|¢>-P)mxa{`\.5:ỰUU="-!OO4_{rp3Kx+ Ds^+&>LfkGkzf@߹ků~lPPG`0ڕ~ZݡGiIHEIln2ºl6mEą{|lAFU[BɌڢEd?6A LY=e.HŸWZu&-͘g:R슼`o"a{ fnY1W. S 7f>LӾoӧyΘƄ"9ҙ5 6PܔD~%H#J-O ]]V&kjCH(K"& g2"eT5řѯ(ԩbI1gJØm6@2xJOX J>?a?ɒ:dp,AUBWvA9@7 Z_HPÚ5>%ys:TƝWTO&sRM44CG2J#Z `j=*#ӱZJZ3 J~5[S'|hQx{F1'9I2xjϜLqO ܃Ls99nKIO;'޽ ]$q1Vj\WJt@\'zd- _ 5p2\O# nGx g/͵bd/Z=; Lu~r纁*4IϔCDfb}L/UӝǪ9$F.2 _V?KP@NpFܧ2ֵGܞ4v-KwӱKTɆ:QM:͊oņAX1N(ס|{y /7̃"eS&8 59 òvzYt(m-ΉXD.U18c;Km.a'{ɡV@]A#vۧm_ߕY~܋)a¢dxnJˆ|ӎË쐆A^~SKIVtpUX:GaARp9'8ih ũE śl˖GIC]gGR2Xbu:xϻQ;5/d N)$0$9۔} 'uĪBù$P:%댄v!tnx=t1>^!8y sMԏSR>ƙn,W]_yC w5Μl$d!ZZT՝=C/'Z>7r}ll >F^N-24[/OtE<<%4ӫIBЦW' /}q)Q_pԅF"<7Nŀ7Ap%&QPxZ&aژBS $I73kKrGyv'U JKqݗ>ey\Up`ZVƔxU62uB$c#'(k-T/W')[j{9~DLX|B.jgb4ʙDP%e*)D) 0ͫvܻ%ϒRBdi._ MI7Nݔ{ڣ"LJH\ꩧ&)1 ܬ+6wUb9}' u8*+ %g-STPЍU(T*u\D.by 0E@3mD[P"x_^C#y@/9lF\tŊlo!]It{U&\ӜH\xLip:(4rőA x9q"c㙄հ,ua[\ȕ>fY64S8gqܦ n,"pc7Jƒi]{JOb1:6%&/ÆOȖ=VudYѾ>h_/޳Z"rm.DRxi+(8VLpsݔuZ jÛexPCߛx=*Ӝ7>J 1lkQ4nHq_] {=޺+|Ly^^b.d8R5նwߡ#r@ސ4fdns`Ӎ6_p0 *a;z^N=wjfM缮h/y}\]tMsF@TW ާqPƷf%k<x?JF19y[\Ix4}~t=>+|nfF|"f&C SOBcٰG:6>>&-_ݒ=Q|l61g^2%zhW6UrMl@Q]z+Z±ё]@qwDe]^pU}r 2p G/D,~%dƷ!wF)")LoGCP~OݡW*Xl#xAtIh\[32:IpѶ=t{Đoilg/Vg Hs\|4ʴk3> S,F}E&_͟7\5ΦS+SRjB;U(.W$"*pӗLe>+yIvy[o݁Ol=vrrA/ SXZ;~(`{]ͽ ܲJIr*Da[!X>9]R*bp\< eܽ'hRk2T"_]GFopL|$\{L|>t%4!Qq5#ϗzo2,RN ~|4R:SxBaz LK eG4  WgDioZ`Hq[kjtYrl/£yU>[U˶D1"Akd#Kkw6xՀTE(b*w 8y)O(~bjP t3|0"9[R]=ȩPG0$4 bсFQamFVEs\8Ee6"F ]nPجw|a]aV3PM3?e :Ol1N9z:6#9U;z{I"Nx-^2&o\gcdɯtj L 쩕#vfDDZNZ yOǙ?ɩ{4DڞʒzA1׆赓~* l${͸D;:z> 8H#øI$β):P7DE8gso>գ`rFĠÍo)u>IJYB)hNJr|HBeGYzC9,d['keEqi6 h{mA9T鞯}/'@;UrA ҏs֕`Aé VYM2$RI2[ckSSTgcӫtBujrV$WbعC1_\ÍM5CT HLOBL*v2{J|)EFԠƻECRoIif[x)p4] .Qf=62#9D$F!/MQ*2(Jfѻmm1y*:>w}qLVJ߹%Ȁ,|\/b<ѩSlkv ZDҍB_B/ # _=mVnӮqkMLb0dg[ڤYl(&i na|A5u$.~P4'XD%0XȬx5ϡ'4]#oJ3NෳS'kUPaw^Ǿ d,%kַ';= tG|2."\,IA|9R) m Ju͌;ߢ73uMJk1򫟲<g)fu\ބUGəy+^t?ﵦR뵧迒qnrF~b=rE2(qTqg$ َ$IǬ g5žP ;2ʐ W:Sy[|E +˄EhS]Bu ߿guM#Á$%^)l'?SoNVĴ)wEoVY8`"IoOKl| )"4ƿgV On U q&gS+wa36}N`=f>'6yt/~GB_\S gJXʼn9'9*8~%z鲜MrzSⳀ+"㫨W:M|DwQW4o\ם5ȕz5̞ӽvxZG|;QвVnhH!LnA^1#|fy{1粅N`1yrfb+Ȧy1Pe|e ļyht8XbhIw>vOmě{Qύ2'8s5hKMYK"9 _D><Ìz]YB\jܞEG g/0lȊ.I o,dΧ/5}K3e%}z]5WhT=\\ #=vPވnÝ0/,琊+K=vmզ =W2/~P@hy. @U++#Ynb[|,A&[YT0BU;x0%sa1m۶m۶m۶m[Ӷm۶͹=Y ˗zԹIpI5+)S}u} t'15A9G}JA6re)+˒e2-x3CN)Tiй=%z {֟{-̱gcm>R҉ynY Kt;j\E.B-X{ =QWm{ŷ e h-cV_! GGH(!da[&,{~Ba~X66Q!x}3ɀ䭡; fIRF*"iȒIJܘSI-sG{`76(e ^h̭T as$U )n3ΈΛ9g0*CBuK*ʒݵ陂gnz8fCݰjK$1?@i"b 5xO\.=Y^d\wӺME?{`DH";/X[Z8Sk7'l\:wZAt=2+e q v@58)ZTE 7KNSeb5~!ʎsW>d?38(⮜^6'E>e 9WOn1G?mPh` n;>Tq>~/Z7w$nx=NS?!zu8l#h!(TE;tA_8<}MXm"&U9uo=FZn3hPUv_L݃t8 ^\(Oe%XhoPGβC,"9mI .`Kb@N!r9u0FڠއwL\ǤjqE*v@ $o0IYL*tqUp3Lu^*\c#:<0Q( AD y!*NVĭG/uVۦX\OύE 2T1 S-؝ʅso d X(fTUnwӭp2y4t<_e<)nnC-`[PWo%.98Dxx0~UWGEk1 `)ߖܭ2Ƨ_u:0* dKX+ O\!'jԩWfQ|p]K-?1&\cUfXnj7QKz\c u`u5".\w @ 59Z/2"Uk9H-H=3E[C;}͔ЬċU xJy]jw'6:o-F}|Pcʫ 6fъs]!kAz,ؿDqR\sZӿB*s @$>BI)l߹0&Jp\3og kvH$t(;fY@VUz|aktfz?8R)ߏ̣69" Nͩ 0;QV1u'ɬԦ`z1Q~& e8*vEމr!Erc7 l)m\i ]h,(~DTi_=XfEi5:'CO}&݈D *$^# 恠̆>L5V ѥcL{ \OKh /' n:7CFEoMWqX) ڵ3P\U}7 ^ZośX35+c꒏NQ:!$dRC[6 +)5a`-q%DK2t4m5u /@ 9F[Ncw$Q3SJ5INGstxڸo®'SiBg*.ma{/(; 7̏z - 6t71(Yos5?}jc8 ad:\q Of [4C̜kZNft"lt/Q#T.rˆȕli d4MxAh`H8|N߀}^l'x;wl 9z>Taʠ'\*~ I@Sf8?y 2Ωx❡U*.!.#1Pn2pnÊK<MZ&0)kvPޛ"6"E'bS#QWȫ~Z k L+`ܫca畩g۔ɃNnhvz`IH2oce?,W6@KjdP=I=~<6tr3gW&hu@41]ieu@tsCro Y 6@4l\K R[[5Y\-d/pp%kK9ԝBf8ʪ+%.L*K4ހ5G9$^i' ֪T4' E0^)~͠ՙ47 ,UFlw@ǔN#EfSMo0x%OU*|Ke@r> q[/<"욚B3 ?zC(f5KOgHԷJ5X8qyRDD/tp-=MT|^eެ>Hy\ oK_-%a5]U0/0RMH(iQ~ դɭxLK@w"x;tϋy`vV<1NgtNL\:$#[eq܀Zh ߚ\J;2p^;̧?ZV Sk=P[3 vJ0FR׬:OCNeDxONeu;Wn{ ^5av_;F΅huxo7 EmwY;bS=*Z9)tP%px@`ًaUt򡪼d['LNlܤs#}gټ$B,i3w7u{HD i3ybYv? ^.HagR2^BI2bN{ M,`g& 4sڀa0f"q/}ybz[8]Cυo׌jl]Bѿ>yVQ/'~MCcqة0y#q5xFe M~ֶKqv$u!nuK^\N Sk\zSa@~|;^? gFAW=ݵvt 0j|oӭv]5ōK\IWg2$wk)p a֙lSd;]5Gz\Wo՛oX*LbrOے7T|0&EXLJGԔ?cS)"!szxl04ؿΚ.gƢ@>9о^q+DL#\|ŃP-3ܚ^޿ZBRHXY40|yle]mi|4}$VF@$sḀǎw/;Eg_H3//p@J^3j"E$^0Q馯E^CX k1"58vHJ4`6T?Hu7 fXrAא ņqdtI.O:\ Ⲁ,R{^pPY9UGFF1 0ڣ2L!.S0H+XoyE4ܾ8L㼿1~rQԌUB7,}Z?T]$^i׌)`P#6УN5s]Ӭ%@5.\|dN6Ũ4}h/c86d:}oW(>[Y m:lHjï>m  {YW=`lih~` >~>ڸN&5\b2zᮕ#( ĵ'y ZAM:i± ѸrYH4$*tHTĀt()m@FiOS *L.q7Bȡz w4Xg;_8nϽKz;&,0LʪT7d8e.:^ [C_m)W]4k54a.љF1V? M0̒mfP-,% d0G_@B- Ըk)jLX6br+x\"K."L▆&HR'qeIOJaY2_Q#voJ&/ޏSL*krM]܁/{ȩzL{MlpTFЈ d\8ס8*X5fa%,s zЩb`C5ǰQB3bD⧟eCŴA sT4a{&qS8jGHW_k|\}.A.\'f?݉jt(a|8i lȧݱ@JYfg9Eڇ=&;<  @0~3Cs؉,@e֜ʩ|{IеFK0\ńcN *LI`H`ѽQz&k}JPQuv~[Hzd2CmcT>GwcLO0hzXnKaҗT|)iPk[]? Ackږ3=6(F'lZ{K-v*\)q4J]>#p<bdo'gڧ@uhsA{K9ewSj4 &tQZ9&;[7zwUR^ti@M<05,(1EJqbkV}~YxĔἃ٧) Vx%{dAޙT18B lXֆb$“J`,߮*iq"F^ׯq@OiUA\* Nk,V+RJ;؃]!J%.ILH)O/D9]nbC X({*2[G[+^W{h;>%m+n[[JՅ dl^j=O8X ײlIix ьq'>;0?mv<Wo }h<$" YGTAwjۋ8*'?=\4joJ%⧤ђV? @e["Z*I` Ȇzg$wCH%)1t@7 m)0;ѡU*~#k> + K]K=~=26c&d]"V"\5FQ~V[!Nȩ]:6[WD eF Y&253ilH ˄1Q>wəI+r?t+`a=JADCxyMCm2:lЁsU䐭 d :&n-%1˓U<ɝ{_i[RQV@wEViy s8_3/c:ѱpj|Yd%`nvϻ`F\c: `1hQ"̀rwftjh ֝jLO`D`ᣕ茙S¢W,nOc1WN[O:*`$6KDž#e&ӌ0RAkn^[I(3$אw^W*A 48MUn ,"J(0ܲ0~!~d@k Bb%3+Kk=Om>X%&2E&?&g+'k P0ZghW;0ߌTԸHk'0BM"ޅ;_deEpWa ҇6]Z߁v/ˎXtoR@|eN!) M9{ R#"p Gu5Y]q0itkt80Y]4-sI.FYUzVQ]Nww:#~~ݣ n.'o~rna3|іk [wpc%.z7VJAJs޿( 2R_PZY Fc5\ڒSiR(߫[3 /~j2~jҊم` "a8{1zh뤅aLM_d/yu;,?:)]UwS׉*o}BP'8xaz8?Ws|xq 1dBL}=gN96GN?[{4)\hƧI8 /s14CK#dE~H`Fbb'=p6]VqľtGނCgOiJO9.+;cQMNR2'rQL'>>+*c 9?;Joz6 K"kyLS~g^5Yi]˾փٶt?+|+Sł Kk'!AwjILV$u q:D f{}3/l ǔDϯjm&veVN`z9'&a.+5ϡs&v'rX(ƈ>]Atgn"Uete*KYK `)k={K]d,]q&^앹R .rYFC8k0-e:}E C I(jY{rY=p`uAёCS(y!"rQ'Ӹ8KNҋo?WGME  |Qz:UVq>ʒ tys02F,KUזDJλf]k v1FO=B`QL0F fn\,=GtHs|t-;=/ >jfsJ%mޢb𿊤gye/c@$ 1[F5w"ɂk^g7\~m؋7kqؐrm i\e4\,מaflDp9Ul$CCh3S×LϚuG}zT\A;1L}d7ډ(Q-t05K>c r-?CAsv5[q Bo$j4T(^1/ۣPƤ 2@=4Q,n ځBhˏct U ~; |_}J7h{H;u nA\ʤTqp0Pw-m,x!;0=fۉam:3U8+1q-n!>0roHHAIC|n2|Y !(xdz[?"WZ9rD(gqk)A9GL}F AwlSxO AGZ#w/kB=/1X,GrdIcHsT8n Vw"P_fJ$ b4p}ۛƲKg1E2xAGh:7nxM^ziK7{'1)c??Vgj~i iXm(1h+)ֵ!knJ?Sd2^ hPlϝAY.yycP#Y5QC", .훱?V` s!zĘNn".%Dr&fQ^TI@:A4Ey&USȞ%}.H̶|x<y}Rr(A2BF Ǭ%֛ 4]a -x rG}3_Pjr^@gTS% fr4rfwQgy1.# Nܪaxte:`{Ẍ+;p Db˹ (U }6q^ ?Қ)Bp9t*7` A74WF+R26Y n&-6w+\۽}z!>(͸:h b 6+T4끞j`s1vf| b|چI #YB寂]y8QS- R63)uDuN 4_5DZ@uڔ)1d]wsN,h ӏN.G*~AKL C-߰bzo~FgF7,֛֖]sv{ahOB~ KmR%?4дR_Xğl/aXBfkNkp-Q~'(0Ds{#Wd]\ UR>EY]N>=syC#_Z6(J{@m;k^Bc\Wꆃůtm*7t fOqQkc ֚q' "w5 8q;g r&~8 O"?-Ty ]lfO{f7 ZRA6xrR|0=jO rPS3l.V)j܉h! @8G&e IȏF{[Rr@úI?m} "wZY=6B}uD#2 {T*oadOn9n:#"ןT)΢5P݋Y(jF'ǶNUGL$~Vx$g[5ؓ.qCuC7[jZ %CHNEJ8кm)iFQAZ^DC ǺRDG2fG:J6#I;k Y4ls2\1Eu͉wqEW0${UoFpg+h_ΛW+v=NO"'aVM?}{F)@КΕ7ݵُou6E(Ex ?glVx V6YvcuD+j#;q< 'I>9E/ T@j;û]ʎh!r()6oI痤1^,TJWk{^)z}qы{~9~Uߐ .FŨ0S'joV~bp6z|Qs]fVǨӷ{yzm:ynDSֻ0(E#_9a?)-(&1G`=͐P!'U0y4R`_m*W]>q2spm‡Am9K1m˯3wf[66#SJ4j[(! z6k3R岝^H"8N< ȬgBQθUD}N/$DOj{횿 /os( F'!x7]/84UՒAFRl]V;{=V¯&%{m29`rYFg Z30` =}Em!,2 p4 `Z|T)T%.큔M Y`C6#tL^VXEOiq^a;*y r%$H$&l-eBJk;>8>K;Vf2\[K߼5<`4P<Ũ£LZ _3WBz%bvȒܯ11H5<&I2ڣë?5Y!AK^ťdKׯ4*i_71 C$-ep^L/*'Wֈt1 ;*On- E?))/ qM%u`gp %/lWiXt a>U;N B99viĸLJ*NԠrW#A"sQNMvB ~o9= -z}%mGufP7R꼒ܨ_AҢ #T^780W0Nܵ  _/%daR޽ s<'lIH$7f̳ήrs5bEh?fb TC S z=m4~LX2OBho>R-I-lfBRGhB;v2U{iwQZo,"LUDg8$Mw^jw:㥺6̂u!^o 2:,=.ql. 蜊=0űFG[P3'Gm6s#z(xVj Gt!92&e8e\.?0:aMCD:L_A/_}S;yF<#)0 [!'ft®ռ~/kgϒo[y k]2_oaendstream endobj 28 0 obj<>endobj 29 0 obj[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 250 333 713 500 549 833 778 439 333 333 500 549 250 549 250 278 500 500 500 500 500 500 500 500 500 500 278 278 549 549 549 444 549 722 667 722 612 611 763 603 722 333 631 722 686 889 722 722 768 741 556 592 611 690 439 768 645 795 611 333 863 333 658 500 500 631 549 549 494 439 521 411 603 329 603 549 549 576 521 549 549 521 549 603 439 576 713 686 493 686 494 480 200 480 549 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 762 620 247 549 167 713 500 753 753 753 753 1042 987 603 987 603 400 549 411 549 549 713 494 460 549 549 549 549 1000 603 1000 658 823 686 795 987 768 768 823 768 768 713 713 713 713 713 713 713 768 713 790 790 890 823 549 250 713 603 603 1042 987 603 987 603 494 329 790 790 786 713 384 384 384 384 384 384 494 494 494 494 600 329 274 686 686 686 384 384 384 384 384 384 494 494 494 600]endobj 30 0 obj<>endobj 31 0 obj<>endobj 32 0 obj<>endobj 33 0 obj<>endobj 34 0 obj<>endobj 35 0 obj<>endobj 36 0 obj<>endobj 37 0 obj<>endobj 38 0 obj<>endobj 39 0 obj<>stream xylǙ>ήYkǮ^N#8H(Ԕ TLF*G"qBAEHP*DDItfqBH#gޛ[``````````````````````````````````````nAPZh堠T_"Aרb@P.6V)O?/צS ^V.+?\5\Q~pgHx(|)suEN~~쉶\BP(|Zc4ȱ:SZ~:%Q]uڏD4Q@[w/?6+ϔ@CáGK[p)$g[A49y= mbQ{FZFxl?c{?DӢ8Fyu!O~̯/1< o-cSAC鼡3˃1B9 ^"$^ UF<2 @/q|@,a@A?;xŃ? (> Dyb [$=pJ71p@ȕKƃ(W6:Ixoyh yoR!cs3lhzpowkV'WA;Y0 [z03xL7voi<&vˏfګ禇;J=G2UG=[&s`U_3_ܙϊWR~d bFbaիoՓ{B.L|_P~1/5CVWRt?r |\Pc' \@6{_f_ͥ>fY~WAR\Dw ʵ>bHԆ7̀?/}Tu?Hyϰ_~F~ɻxe˦@Ua&w@4gzKj[$% ڼ[ZOb7Wdd[nVOImL|yN']&pv $_ ִ}O<n9% p:'d4Oq $(>iuY&waѿIuTG6 `tCgX@Bi,P |_Wjg l~0MݿV①- Js_W=^QZb+ox!@g% +,|yqnzZL/o8hi e?v2IE_*J Sn F g^\̧tAJi<Ayb U v~ ᓦ ?k}6 4i= [JG8BO_ Iib'Ux>P@>|hY+A˨@"5I=h~|>Or>6!!e*_O>cGZ|.FN_9Sw4זF4G+ߵ4dvpO{SU @@';_=~mK GfL W~& $ۏ/-gLӳ>u,q''Foٽ3T*̉ G}chlo*/{愿 ?N?!ݝ;[քK6{ss,X l?pwCxhiV[Y%ʱ ,,G@/lo UK>a3uj\* ~@c&{v6ˊ }\bgg2X(zxj;-TRGv^Q)RDX_k]flib/I\v?~1jrT?5VS4ÿ?ʷdIIvP'=FC >:C~!?C~!?f2, Z~+ϓfM\~qW9pc `6mzH%?G ˶ow?x%#4 +ÝK3hHPӮU򓧂\`C C%JXlkkCW2D =y7#%Z~|BkTTfRO5fw.=̓@cǃJFJ ̖@cB1TgH?c%.~J m7H)㥏H' "C K ~߉ӣ][:Y =ێ/ڵ5ԦC%@s"H߮ǿ'b[}ggO՗s`%pGCns>2<#R_ws$`HC^<=9wxwJ7LYR'iVbwE @̟z \<6Hq:LOOń;ClwiTr ~2D7h~btdi[M n1]- fn];VK{l7[>7XC1"^f6;뾱4Jj~ q`R)3 NhvXM,~n(k^Oeq<Ơ'+ꚗT8%Ey%@L$pZIHO\,|B8wFI^틋 ,|<hzq4"]|w uwJ%PXQN%`rCUbiV75ogI@ћ,VPH*Wj\>i|H,TT*d [````hendstream endobj 40 0 obj<>stream xyy<{m.>w]hSxގӯ,'N?~$33 Ivvll<\ܜll\\ܧxA<|00?z+/q}Y,ps~z_@𴐤̹ʗUT5^72iۃ~OC""cbSR_g~_PXT\RZcMmS}Ck[׎ήѱ K+?v!78-.n:cǏ3gXOqGל侀Xx&VaW}H5{8+sW[eCNÙAeŷE#9ǥe~pT| CȌ naBʧD(p*1kD&up hIXdo w!@-W/<D1@bEL$ OC @bY?TTe{c)^rk0 q9v"B8@FI^)\pm fo–MhJ uF7`{eq],p<Б5G"KKLW?NZ/Pyw$?K`pwD?z&7qbpAp yxGh9_ux* ڃ4>&ҀAЯKL6ui!ʳ4 Se TZaW w8fJ6`[F~9i@80vLИ[XxٔbŽvC,"C=í,_A"_o'X\UJ]? wƇZ(ܚ5ypht"BYQ"6g(N{xqeSFgj+hWj.!T 6) ߄o'L>j/dp)5^j->썀,XV<#fگVa!sQA#pX% Nz q;>ltq9' bqUbG3 o*W{$I}amqhz=^eoSA|^T[% cl].N9L9cTޏ3_S2f)Bχ2RV@T`ڹe[τI|dowgwpÖ =qYH]+,XB6onxΌ.=;3"+όMQ?"=Du/Xx?B]~a|T\&>ep&iр w1K_i@<ݙ /cG|>]ޱJ1xqfPTXj$&ݧi\S1Ѐܪ-#o'j~9Nn 塮"I?SrhVYb 3JVfP{s),_DOXH*h􌉡lnQQ3] $GHJCmjۓ#U'?\c9p4 | @61B$#w8>`6pGC9qm MQSb<_Fsal0%`?| ť֖*e^ LmoheF>DEP.+Ja+951mZo.K_0;N(Q:bvuՔ΁b*4>6DL/"nAb7C] йCp$BAEsV PWl@ γ*<{9Hvٴ_Sd#$K^`%2 Pl2ć#'g?Uwh,Kb:i-Bթmw ga7- N} ^B?Ko2M+l V mo3^=8A?Xm,=Zݎ$a!œe 87gO31deă#dbv=.k85pIDFt Rwa4}l ֊63L*>_ ݯ Ui|wmL)3l 8k> 9P}.l⋒-ez]lpigXwKy/” h7Tc;cm+t2bks&điގ9;ݐC?AG~s s<\TXBZʆ}m:Q»{ nO2\$C6f&#^b?cUsֽa`"[a2lu6ĸpi|zC2!i{vZ%b@h`H J̱)Sj;$Hx>__ 8N``ōrxbJbC xT( HaKWV[h݆2b3ʞM_e)2v(hjA*N(bYjߺuӾѷa7(8WIq_P*]\BGQNj-m?8iYs:ֻw#Bϒ d-tD؇[Uh 0ߚs;l,pLLy`N^p#F*hzCiL'7w>l}Eg]n'Kzm!&*[WcoEq7횒LD 2'qq mW&¡!6|Ut$G>~wj0"渚^!:\gk#_%G[BP\`kbȗu+ۚGj!6.XeYx 2>A 놀,:$7UG% [?E>VB(?ulJ=_H<|1X,+ZXGމcJiWڦG&'O|"|}դ. /Iy PUCgLſ? (HD7Q+Ӛl^o$zh>⑊Q }:dVc=~k uYXrqp\0]V/%2$CXH4_Nl6ֹ]әl#(DB( 0o#5<<8Em^zއ4H'8ӀFt, 8Mtτo|%d+ߏk;J*2D"c2?^p`.|Å[rgw&tHQvQf&geN (pj`3KUZQ=d ߏ} k#46T]uX\9 @ґ(פd%a, #z+JA|r=^lF\'C^KF,t=gh@TtC%з/ cV4f<3pz^juSՑAjBЦej<|z} >Lcߓ=`}g A4T!1OҀ4@sr: I|aGsܺ>rR+UR~ E++bI"9_(r?n˘|E㖿=aRd2}ˍzޚ[?=vz%|82#<O:F\l/D)Qg7J4AĊ>[2 O\{v6)SeTlT[1Qofm |U  _P*_z3<T;~"K5611#E1Ij+9n;75CenB2鼙F O7abn.U2QMOSk= SSg.'\N\J<kᐺ^Zkb_ʼ4rA F;>]Y7&Ӏ1>Ix/AfZGęihv1d3m ʜ靐.Xd)2 8&hU/D{B|#IgJu缒8h#؁'R~" ݶ2֖nu ؎W?_4gy_;_GX‘ֺ_JORU`!; t0*$}݄1Nm^ƸAS8^N"҉ ]${~icz^ˤI/]#p%>޿jO9âAS<`sNBAbJ'ƍD Lϸ?ːTPŖ<߃۷$G-z j7c[㶪UeZ\}?e8r뼦;5n CJ)嬙˲L윃C]'tDU秄HloG;,o 5{F-5pPN5UjKkc z7,S+yyp B `]u*BQрdj)w!f %+,X-sk~6smRzj |::* !B3kI p]C#8],~jا:6N2҅Urq3uYzX[ShU hOGi5btx0ϰ-[I| iwQ1=̾WbFQ}g;PN\(]'HAzOf7sՙXN k%.Xr+)ÐB%f_u@n mOԬ](R|`}c˞:}zʧ3$(( 3#ݫ|Ag{_Qi%s?IZ0F la@I ~hl&pQQc쪖&Ȱ"J"fWԥ C;k]$įEnlW (.NӶhp$ћ;],܈;oikUbzz*:)sz*31$%5eew0#P2 KR-0bׄ>wi W7SmZ>o0l|VSSc8df& oBumҏ^b`2{=fůu 9K և۱S~S? JJߥ6v<[ {jQ~nOЖZ1W6]}4CcQa!˓P$mPV6#a3khj@at:\Uh`O~OI'nbΤ(7 nb++ JNlJP<|xjpG-WWMIX>ߋ9Q07qizݔkZ0C/ě-~:[2E.,F3\ECƑyg.?[Ҝ~]OgP\D|2l;m:6ԝc'TX"H>wbSw u\fcr , Db`c|K˕/;+9u`vk2^ s[J.jf󍓺|f|B`E}{vj4|xۻ5+f\xm浉gG!Sݮq@/V!|߾WPqC',:y6}3Wn!~rv:¹&Z҄VC26).jObW:/יaN>**%Jn8Г-s_]>/\\ &]V\[h%M?TW2Kg[ lp^\qӾ<`;4k)~0+%e; 4|yETA?dl:7a 9Sއc=>&⍹8_f֌{Z QEfs@aeZ(] >, ?SXpIַM*KiZe}vWgzp v+rm%xijX!2AHw'^E[tޯ4y2ߨuգ1N➸!^BjƆ&+1zimHרJt55ŏNa|[⭮5eэ>c*Mk6!vg}efj:ӢnɇB4 EV;;m~VZ ,qx˵9y[Dj*՗Jr_3H`v!Ε(#{SuWGuGz@"w/ZP :ML/QC~_C'+Mmf_` Ds%qE՟"Fyuڹ2鳐hEmAYk t:\#HGqF۲Χj,;+{)oAԸkGuU}_j}2Z>e( RW>FDo)CHedؘ7Z.12^DZ#1pn4{FtyDftVuoq&hVwPē6Mp0wJ;F-jrcη`o}<57]|3̯* ]RYXbunDm7$_/gz1&endstream endobj 41 0 obj<>stream xr陠agUEQA R*TWpDo|Ч+ç{Af".XH@RZVhiO7߭i@i]tޭi@i}wu>g{{:=muhrSjtY'i @ݦ؋oN:]NOhUR[MtӵZɍI?V{\]jtΝTхcSZ/: t;=ƣ?gȸfWzCi7FkfOٗZsUrG!@͍ZWzi@i*=>jk=(,;pB]N߼ҕ6*ڕ^L#2_pJ] ;=}ˍOҕm~P{ͮ˭G?Ӆ9zF?Z]bÍǨF =]t uuۏѥO f~52ԋt.nareUyGR'Էt4L?}Z?}[Vvl'tJ4,Yҵpد,|i2R/U*=>_omwv{{{}Q8v2tZ `K*)W8gqآv;[+/#uΗ;=OxjvQ9_k7K TVA)NEk_x=QB=NOzOSY'ϖVZ>hyIpFop:{xu:?Ml_thJz[+ʼnz~ 1\M?4͟׊Wv=KOGw4Yuz֣Xp7-W h\|ܤ4ir4PO[i:N4ч u8QVjqNG~li/~-a`ӭGx6MO=f^7~MԹ[&m>fl/7z: 4ӻP'Yuz#yiӛ]TͨD]~8z1N>ҫ郭WKϟ=}2g骭G3g[N4N&~?K|Gvi;MI=ruj2jǏ?ӣgr:NQ܊ax#l>nIWz~)zG۫KiΣL'>i>N:= 70QwthrwN^Tt/sjdgmy) ||̶Óvz嫵NMt{˥:骭G:N|>KM^O:rN/W;: 4ӝc770Un:9i>lD.rqۘnr_ntR@Su7V_Uzz~NovuhnϻQ_.-6wN2@;:釳tqzemk/4V:]Nothr{[+#7wiqɏӫ_ h^+tyC}WܪiWV7Z{: 4{Օ <;~q8N/'iٝN:<O%ί{7_ZY]޿iX[]yzC=N'2"[8@;V1PgɼQO?ckQR@SG^_NOxn^ٿiI;7}w;Nol4Nlm7snh=T'N?+O|̦Axu>iɝ>lNƋw]NW1zvs/4NWaK>wNnH"nl:G: 4GF$1>mlAӧLo4[ن:z8NW+w{VvQQ'fi;g~)wwNGs==~@s;xOOʹӅSyLkNMN+^| >̻NOVNuhz#;=MiobUt'nro~)ο8ݮӕƝnNuhrO{F.:u@;ݩO;MSy: td^ԳtN~yӽi:9>Ng_O4Nuv6; _]4Nwtˌ;}i<^{4N''үϼ#a;guhnߟOtI:5K:}@;}v:=|#qN~Yw:tv[^xvKTQ;NgoGC}w-o\wϿi|wR?&io5-”~sKN;}{+\:hl.thr/vB;i@Nt@'j;=ͦ: аNo5najm;: tu:ys7PϩӽR@S]}}qiN^4N_֮٭: tf9uzu.yKtZuwt/o4Nt5t|0o%ug~)VNw: tSN4N4N4NN4Wlu`NC:GW: 4WG: : ::: : ::: : ::: : u'?iv:,N4NרQu tjiiiiiiiiiiiiii: : ::: : ::: : ::: : : NN4N4N4NN4N4N4NN4N4N4NNN4N4NNN4N4NNN4N4N4: : ::: : ::: : ::: : : NN4N4N4NN4N4N4NN4N4N4NNN4N4NNN4N4NNN4N4N4: : ::: : ::: : ::: : : :: : : :: : : ::tZtZt@u@u@tZt@u@u@tZt@u@u@tZtZiiiiiiiiiiiiiiiiiiiiiiiiitZtZt@u@u@tZt@u@u@tZt@u@u@tZtZiiiiiiiiiiiiiiiiiiiiiiiiitZtZt@u@u@tZt@u@u@tZt@u@u@tZtZt@u@tZtZt@u@tZtZt@u@RN4N4NNN4N4NNN4N4NNN4N4N4: : ::: : ::: : ::: : : :: : : :: : : ::ӀN4N4NNN4N4NNN4N4NNN4N4N4: : ::: : ::: : ::: : : :: : : :: : : ::ӀN4N4NNN4N4NNN4N4NNN4N4N4NN4N4N4NN4N4N4NN_ iiiiiiiiiiiiiiitZtZt@u@u@tZt@u@u@tZt@u@u@tZtZt@u@tZtZt@u@tZtZt@u@uiiiiiiiiiiiiiiitZtZt@u@u@tZt@u@u@tZt@u@u@tZtZt@u@tZtZt@u@tZtZt@u@uiiiiiiiiiiiiqu tiieR4:6Xt@u@u@tZtZt@u@tZtZt@u@tZtZ>N^4N_4N4t?: pN?}:: : Nthz{utӀNw5W~)YwjJ: tӀNGn4N4tTjNG]SyNGu[I_-׮: 4tz0ON;e=/4Wut?NW]t5Ϟ4N;NL+: ӓ:i@Nc;@;}?~sN^t: t͍5|LqRlRuhnߟw'u|QP?:iQ/R@S]D_$k_ M'|e~)ο8M[.3triMt:tK)n[: 4:u:|s<94N\-oNfӠӻ'R@S;ٽ]7obJtir\[>VbNgoD'Qia;t:ɼcݝTw򆏠㷧~)Nw;]u ;zKrvyh<樻}skp*/ˬ:]r;_ϯ;N?;̋Cj\]D?J3=Tނ:ܙٻ&?^_һɼ@;Z@OקlOͬӣtyqᆺ=Z@GV\aw1ogDvk3}g|xitzԃwvv^@^lm:d7l8KѼ_ hӽ)rx*.;])yXtr#Jbw稁Fÿ׿ytQq#tR4? : ё&ntأ0N'k?M.|uu[ t!ڝnoo,`;ޅDːx= (xǑd9s|vzzrr||ttxv yUxxGg><8vJoi:c;㾹u.i:*u:JXǵNr;i ۩k +t)iTT8qNGN;t2M3]]L`IJ:u|BYFSt:G+t\4(m.;ê uz#RGۏA Hif,J֣OimǰL*NYv:=1NO|wuNBQu:S7Z YBg[ҥLoD tNo%R':_lEz:=Mo". up.:~d:_lEz:mt(T0Mg=w: uG6Q(uiXGiFt)ilgꑡMY^XGiFǕ1tzPdNZ:_lE4*UVzLϭ6ԓ&AGXr/,RVlU:^y *=a}k>ƅ:RNZu)+t:IǕ62^1NO1Qǥ#kuf_XaJ+ң7z}k>SPԃ`[ֺl V*m`TztN.NO(OԃRˏtM/u:Ugsub/,RZtN&,W:^y *_zLuv[t:]QLNi^ YJVz0K4|q.Ɣ=:G>QZ:uXlEɚV*iV, Qt 1}cco`M>BIVg`Q*JT:YyTd:c.=KζL:^ aRxtWz4=i1N&:VonfuU',SZY:Luzˏh[YXLiBg'JVi qcvD]\:k+mtP鑙N;٬:=y1jlۏz%^OiBk#Lo!bqN'o&fԃ']u6Y{] 0eJ5hl/L'`cG=KndOc0S'g? H6Y]0S5*Vfl呟ۗ&?Cus;GyNK:4eJ,(gc81:_e =Y:xXyO./PJ:b_Mi҂.d:s?K ԏ[,VWoSHޒ23vzt+K]5@]*UzDK)Rg[MaTi]tTc:]u0UWZ:ֹ$];=YRgT]•97IǍT.!޾ӟ}^SuXZEX\taNOM/ӓK]5SSYVi'Y&^lP)^uJ^X-u^zyPF UJtiYW.;] uE5W+*t-;].GՅZ]`U)kWУxt:yaǷj SB;}RW8U.6rj]uzTO.eMVj v9VV|F/ҳP*5ta+ P;neE*7N:]N/uUjuTlWصb=J4uRouUb¾Mj|*ӀN׽U[]uUb 8ѳN:]NO.uZ{}> =y1J4utu.ֺ P+b>xMR[]bUm+pT+\ tk}CuwzV6wi@۵*ZԻ: p:րB4N+6]gtZYi-4Xt !endstream endobj 42 0 obj<>stream xTS[.{" J쨈HV"*" d+B(BD:,;*m#" B&5R#D@ %ܸr>dzww52dηwy֚ $eg H@fHYtE/]t+W,_bj5V]bŚuk+(**D()SPSPT.dt̢/^j*KXTuq̂-µ d.THq,ڸDv+ ,\$j鯡߁Ekm>Do7c^,z3m:Z|;w}@WO_;~sm.9]qv߾s^>{YBj̬WyEҏU5u;:h_{C#ƹ3s<@8ݯ̂\?kԯ,ׂ;]xCV쿹Tp̋wm9Q|umsgcm ;&oN[H9CLYGJ,dtEgۦz{Qic^3wcM$/DH?x[Qt;KX L}/5 pkh\3hG p$ps[nh[dDچ3OTkce_!yRAE^h:t=nPUJ\9u0&%j(0Z{l4q L<zD˶x#pIńKIJmfv3C£ϝ+\]}~M*XgY@T6G{Df<^Nˆ #T8|LYwG;?P~4?N(O9SТSYo2 otS,fV2JOl+e/V{4_ש 7 EU8BM m+5e˼Cc/G&4M A'MiB1B?=p$ >RgQ_ҏc߸/D;Vo Kʰހh9'v10T,yzYcJ{$lazBxf7@/ggF}kE7Wu2Ȥ tqz u$>G$'&н9\!M痾T%L,@vLON9 ?:A3Ў 9kNuѢlG1as^Cu}f;Hp+,AzԳWChD\:P9 v'W)]6"+q,MA!i  V)I\ieK9cj>vY{ [HkmQ%T:X{5P7*OoRR*R$hIo-1Ks?Ɉ*}6c<~dw3!$1/A*>rRViNT9 q C4mKgzCF ! +a+=@|fwlqeZ۶iah.u *]KI(0Eۯix+LӪ.g[RU=c+Iȫ1=_1 _9'sǫuxFmBd^Cx`b?w|1aCN7"'%Xt hF$fJ,#H(\%^ ՟jVNUrx*[HU⇫ zI/>9}:~ޡ&8EIoɟ8܎CK {Jhl YVmc$I |raZUXw-x,K k!pV47%VhW_<8 ݚ3ze֩Ae,C/~hyH@+2Cy, DbA+ZG_gO071o'Je{T{.{ mnߩ8`bi[)w,|󧈿@4QQ+ّXh]:%Ej):cFxi %>F\ŕv fH-RN`YjrQ8o ZU=3oП ث5KSE9`Bp(ΕȓX4|EKJt-BpryQ K8NTաfѨi&"~)⧈"~);FlK_@gsT^88صTFsc7vJ!J_9NjK!0!i藺EQBCk E]H`F!BA)!%!b]/-5l\^I/ ^_KӪ,NM^ow-~^Þ<1wvZ:-]P01-dB AבXO;e9 0ax?!E뷼)Qt+Q=at B1V<3]QUطRc_ߊ v#q_BrsNqC9kٞ]y}p?.W[Ftt/pexRcT{wQի@WNa4\{-%0`PȚc\F!{&g6_hMg"\n'ϯ`^e -gcQ3Q/Txu@+V}GԹB#׸cpd gz g?pA9RoU;xS0Zl:.:܆FaZL@S)\ HÐͽTư|CcrqӌLomc.0צ׸1QOϐ? K7 +^aF/_-?ii+;pygz|)"9w +P[wqO9 &r 3g#، e7TjC9Up< _\CAN8# R' q"VE{|):I;Qi8r^o^A83PyUěU:ق#G,dӓkJJ*C?1ukh'dV%ǶyR (~7(A"!9./3Ra/Odw>}&RT6/! Vܺ8RHJ~.翡QnuL i蘠[ײ͡)E2`iMg|)CD !za)6l?H'%9׃,;ߊRL\{FR mý]`p>IB_voi G6;/MAO 0c\$w8QYoXX4㔔 \H+ˁ0 睥B$Ih;RSϿ~et/Kb̰K"(#Hia}=KMD B8˖TYǣ84^)7 RV2 Q_y ZUJUu0.I}Z3+mv)7 6>J>"K}CAG %sP>A]pw -ySJ:z#ah4JA L@b 1mղX^XBT)S5gy~&PJ=J ;ZwTIT6eN0*­ EKq-:@d&A< =ۻP{ndG&Lo͖+zf ]虑$*x:JڭU/}G:OL|^n۟NՁ,_y/ߣ8SZ j'%~Ӵ|[sIdIaQybbe9"k\~(])j_Y|AZ<1,,7.L0_EøqW =Ɍ/Mэ44~ЕPW%|7)NF[N|2 d\',}7x&H{`Ü.q&E~$ zdW^uAOb~00Uˊyܙj%iȿzyd,1#ʣY W1MLgw!֢v>5PLqnfj;4M[Gxś.[H,8Gc*Se.uf8xV|%7+rcʑ'u_PjF_nH䝭sswߑ >n/ YOgоđ5yϝ*݃mx`@9/r5XKHmLJ;'N_Wn .x/Z&YKK#t~E*C%/3g87עB7(\ԗNeXqy($&GKc8 R8Z>GKJQ$ coA:%LkPuI67sFZ WK,`ϲQ<D$@- 3Z!bß$-\ LjH{(U/?I,f' e]ÂQ/5ޮ&ΐa% wP3B?^&{d}nY'(g?矙3~fY2F;=sPz2E~yY(Ze<("@lvz< FOXpNߟ',R5))F<`/o%K E;ɛMZNJgzr*OONhPDhX^p;Δp\LN(8KȷΜ͗XiQQVq4ҔcbN`w/ϔ/x)>*:y_= >^Wdv3 ܋,@R\(Yg…JxH$ێ.c^kiȥg$>!{Ľsz8Í`T*W. l]w!/mP zU2%۠<2ȡEChVwO{Дm)sœ]NyB{;yNH(&y~tE?̠DG ZG̗pu:9LT1D߰_(W)) e3T^LmRpk\mO6k,[,4[Q5On麛J5~oZߝ~Dtu~ti6P$>TS\C?b Q>I7 =R;71aQfQwMG"Ew|bre&ͦ"C-ht)t:VqiM||Lf-{c`zy"hgv:tN{+ a[qs%X nn[wENg;y71NPkW x!3y`:uFt/#˦7Yd͟G- i!ڴ.pmifߕ*. Zɽ;,΍aFR/PyX럁 ԓQ'=`/|׶G'䙴Sp4kJL?R2/2} mc\I*jޢ,!' [!;Ͷ搙G=%AM,(˘x k)--wvEN {8sv5fW8#6v28G3xr ,e/=a|cj/L 5a4{gߨ}qwhI5~lwY~cvp7.Z^OA7 4`j5uM쭀㜽LT~`vi{*~2ܕ?-otz16nc]yQGLJQ Q~Tђ6JՖbd-3V{Sr?Jŧx5J%<>&|"_CvXZc[E3`WA<g}.f&l.54&\ubQUf F\خ]HhT,J_7MI+dKGz)]vs&sm%2~s?=G~#> 4+O/^zq 2DmYd:VtpGjIL`W) @oub%›Eh#qU3IynlDd~zrչSq}~F5}jvNco/sy~/6do0`d VprM.Z<4NdIrN.~=O!-kKm0[ 3yF>\͇l>2Yc#=4QgC׍Zh$:,`uT."!Yjt\ϐ^oKe{v0sX٥І`wLx:tTE/ gG EHP)G>Jd}v0ei6cS>WJW}uv^#cF+]Dl1QOgh|BFa;9O~襃Ȍ3*W7MT06B[gGW\ZRT`nPVjO.^ 10JVD +.OMtp(i,+-,+yi-ؽиَYG"{xyw2zݓ n:1QqI҃t"}頮.}N6Q66>+!|iܴ$m=T3GD741NZ5SIN?Z@}G+褜[:$Iul|љ^6'ߖP{M+>en!1HA^fWםE|[W98;nw Jc"%YDif 3)-3x$rׂ%l{&=7S2+Q9?AoKT AɣV?BABjzp]Ԝ0ŬxO)u68U#& )y蔶3ErpxBtDסUFsh*alk<^3Ty,MSCъy+ e-a424yG#,tC`5$d*V`H]ꌁ XGdld(bJ'zʠysfC-}xoP:?B3$`" j P`j%H?֏8\I=XZ;ӿ6'пDL@tot'W9v:&Yfl7KaFG%HxE,}xG7tLtPfaj⧠YstAK>ga+t>pïV~~[mM Nl[^:,z܆ $y;Lw?ùݟTU>`AȠwuRA:@C5pWMTX#gѢw7R>N$g١i6\d;V^$ӱd8d'ʽt{ϷK \"lFĘ̄#m) P_o <:o=fMok % V+fHﳩ&Q6.΄֥=[,ag٨d0QZMYFyI`~j Ñքc {`W.5fPv :ɉ Ň&ش}C !EPd0|#-K0K^!N6ІJo;t:"Ekʡ,KA#qy˵|-Wn{%u(nWJ(\mYģ):?R*"NfKZfOOoOT;4];5G/|cb% XMiPxnCFUd0/ U>:{_l#[͜ vwU2|)6G4:(0X0S#.˫fJYeXs_EZXCWDHGug>.ۭ/{rKN-<;ՓHULTbgr6U<ǢvW{EÔUE3'ѧ|) "mg+Jdtӹżֱ\xG!"$Y?8*v[qn]'~Q,x(A~ H ރ O3Tl.5}NO k )YÓw>c!_$׃/ H;NUF:njԉۙ-FVI9%3jqH4_!LE)nx\9{[W: w*ZNnFkxU&-' z 9'%֭oڎiyo Pk~U4<߳>g9cZ_E-D=f c5&AAz^o7~X.VM=$( 23CBBgbYUOd(85e"Ҏr})w ¸c͕GjLݬUOiյCRg?V 6'^We33gĞ} ƳZJM|M!>~P,㿢+?}IKAy0aA}Ղ" T՘1@{8Vi: W`q VTSzJGC_XJ+[ӿ~wN Jѣ3!(Q~~ "i9 CtT$(EvJۑN +r`4ᱱNEUƽhꅐ|q nn4DKC_y7nyr!ܨ\+o|+/sm=#ܙs!GpMC9Ө[ ʕKZUfvaf`z57!ҭ'n+F2EvEV 8JWR֟^/?N*Čx'Hi=8GRLOe͌swDs0ήlvuKbtvSښNvKtԤP JC^<[g\UlC_Yx>l܉*mGnےQ~lMB%"6 jMA<+ -a{+䣪ߎpU+KT{j~ݖLZc1xչvڊm0ZllnTuѤiؑFRZd_e)qYw?N TejcGdot'T@oVh9VIuc*TB֥"J^L#^L?!/[*ށ®h9k؅OWj7꥿)!^پ7o>N!jA{ò/Ql8<ѻӓ`(Qq+1Q&u~A qk]}F[ 0+ޗЪDcosV®Ѫ^ jԞCiηl\:2d ++?OmŃ|olv)=&D}z#[* XUZrkevVA&H }OSn%B/#uB)=*ſ[֖slY;msamZK3Ju0yQYdI;G2Ï ^+HZTAUEߙG?uaF>BYҍNnKkwtR VkE3a<[b8ӏ Bh^B}r4};9T*jtߔ*ݜű+.0I{ Ԙ)S&ã"χ3u +{=uO 'fG .Ϥ#B6R+݌A nk&.ȉAHe !ҘzSELOt1"ա#۝ Wft,a&y5n|$4s3Ì% G} RB!gO4㤆٠M3'/^<SQA eVጱs[?߰aq8Uj g\:HFm7r]BovCnyܕIRJ\{ղ[h8GE3e5}LU›w})[h,SV2K~ǀ][kxʴgb, 뉈q\H hġiJ>f`grDSqU^*H=dm)T,ɹ{ g;H_Ci=wtk۟'SCB)J=a•e%:$G23?19KMù_)jw5ar OB6rU+,黬"^{IJ_7i>֐]c[ǺzXƧAwqV'I=X|!4 t*B= %!$"30yLcFk܃TBw`U8< iD|{Qг[5[P &fS( , ϬB DzAX RueJcdEVGYdKjR0BcV$u|2!o$L}AD#lp|Tzۭuuq!rE>|,oD;Afk Q8w/ mщY eu` ̄dMiHi6yFѽNɣN<΄h ;4ޜm1U{s tN􇰰FoeOYm܉{ۭ޼Lؑz~ULuR+ Ȳ$̥` -ҒEdeYϯ-59&PX#hm 5`b )_c)㹃o'|1z vS(^de8W rү>_w{gNOF'(Ne1Tœyn|I/SX]K0g)K)MwuOk9Y5 i+М4ޞ+?HP>#-%#9B2[DaOy=g2w$iJ<^ @J> D!^;5rJʀ}#LBGa*тQ},#h!T ,YlT;9JjɓrNc==cOuigo77ۑ\9(M=e`m˾W9mzZ{}Wybqh'Sdb_NAq%S#Ɨɦp=aɺ-4&me]}u~]Z o܀)i~9*pLj Ibb}tj?]h,} "Wv7Mg6߈"O/CH×^BJ}Yu*wx'bJ!ɸ9j ckh:66C *LO*p2{Lj8؉Y;vIПuViսOf!J69{3'0۰mI;q~;\S`:"㘬((Ti&3 qܮ]KuZ0sY3 A򤢚M|AQO#H% t*Fk=[j#g4 %?et9HTSǖzjjYݎ R?tQ=)ȢO"l9>lUSƚIaw7Y~@7G= 3 ]f$=&\Vg^-.ՍnoW`H1ѯM6, :[@^8_ĥVM}?Q uZ2K]E6/&E*JXstWQA=]5y"."39p4]Plg\ˁ&Kz nU?pu|wd6wn01Pa4]o {"r%@ײ:KSOJ{ix y+ h:.<rNlbÇ ^~t5w?/pκӏk=(%kA\ K z>O)bܪ zwm\M6^5]18UevThCo/(DA/玉7@ro Ge{WkNy&' *PLU܌P(:ʉ"2)K׫e*s덹&Ţ.?4v>LIYu7uU/B;Bdk~vswmAゐؼXF(} eSnp,Aa,HNQ?hĞaˠ\D pB ^w'B,GUl/g$~XU]``j3ϗ`d/zABx`=+>ۀ*lf!*GqEGkKW"u  VvጴusncyO^u޵9=|O!(u2'&y)\U֊H ߬FIL-NJBL-@H$],Nk^ Bғ;0h* Hp_; <'s^ םOZn` [Y% V$/Q?XX} ޏ9KQ#^?ʪW8O+ ΢\n9@aj%/v֮<,*U6)$<8b,,?qk-s|x~&/ԒMn:XgXkr_AIEa '3Ie9h86.k7ާJL[?m2L'P#Hmg9.g^ /RK[].20VKɫp8#j~FȴQOޖN${-Z{9OLx^:zy_l"I(0 vR"E;M϶aCTBʆ P"҉((-*M@lZ"]tHk %_t]9o\?+YkzE*13C[g;ݧ<>ѓԜVQY!wyGi Can|T;4ο!$mF N܃adW T~=!HH͐? o8$O=l2Ogi%j&D{N mc"PsE5ffDzJZ]*^ s3]uSXq NQ{~r۲X_$PV'STej?7Pml0]9H(| ubɌzU[Ӡً}%0VBsk4ڈd%<=[̻UW:? HȞ2>jie%dʂO Br?6.,?aRl RLs,.(p P#@`8i5(Z!WqSr'Ë@,FIRww@imP\ VS C@|jKD ?ػǤFOԹ;2lu^ۭ]sm]>jjz];t22.&&n6ycBlj_ՓOw-WWXZ5a9PVћ_U&]yw8l4 ,O0ױkYR>k=%&YZGd+[[WV Ζ21_Q$0yy5,oMsTPC,' ʳ8Ewr^n9HևT쭐$I} b>1e&UDG9+t3z1t(t~ : \ُgV FKΩ:EܥdvGވԕv9/{ҹ1U 0W ԓJ=}+V<#v:w+ Նwk/k?8"Vب,)v̙%9tX>uNM OLGs|D7(.;lc]Xgƹ|x. 7bU_FI'&@#d#PkOC_VL(yd^Ry A,vZh!p{dR/rekp ܿ?mvģʰ}GHt{{ꃯ빽B z n<"%Y㲄BJ,Jy8ҏaJ cpFZ+57_1FEz0Ykdg 2 3Y}+[-z2k1Z m.0UM_s)k]3zq9HHn枍0vLjЏ pJiH"{@D`Kw'1^X'De)*Xf vϰG+= %ˬʭx :A/Txf=}sbW{`@c)!^r9|tmw ]aG6 +gb&>FlNV<(8b(gzAn@3{AVW;t FuK)CsN*S9 mE{#KYowQѢxTyӗҪ|D/#5}0jI!O8x\> 5V 5틯skK[Ն;K+jx+.iU.z0$3-aj^u]#Hfg7=@6hiƜBK!wm*:/~AJ(s B6F!dΫ|Wĩ4bÐ,Mz7TY\ Yd?1V) #zϨM /2:ؽ=[[*ƪV(k37 FNQ Jmp2^HO^!p/@tSM:0v SkHovL S s@ }NQ8\^$דcTR+T M*B"=q};DY/I5I.BEA&Ѽ.05%~^AZو[6\q.;U!*@dUot1 v@]8a+-| T^| pM'~o?dOb[MD0oWx##*h.DX su}:)A| ×cm GIC ob JaH:.>zӷMAQ쪾ͱ:~A@u=z]'!1dCo1W{iX94n)T>TBMҘV9=s"a:d7O2!5Uz~\qXƈNLHOM95diKb-|HHsun(5$[K=qQú=ǜ0lWEt@`iN7@kJ0]4۶)aȸ#>-dƙgl-nLxrl mf^#y*f *?טhv4,Wr*_{0d`Z1ubDNuld<5}]M*e0oy6$\7~6M~f7!lI@Onzeޛ5F8 kJ)߿y.DPre(@DgɅ;vOUcUF?X,Mj&f+ &/y. .Cs ~H JQf8-+؝ p]kEOūC|0.&g/-\w%{#@ Pi`N|(ۘ)Y>Ka۔\8*HѮUx9Vbɪ|MUÜ-]UOg6EZAfQ0μvrGg>(BsVGM+Qz7]׻Z,QL\gbr RCk:6E'~{OjVr3 HXh:{S)aWꑊ: &x~*awdӦ@z)$*Yg +!'*(grorݩ^~; dpNsN6],hW/uLZIZ~4vVkU=Q`U2ʻ7 7qI{}6ᝋ6ƫoXmU7úZUM%\>L )[dlz5~4㮒F& zT_<~O9\` /i{|5̵;C֮zx  Vy5}p"3jm1"~}d}+*'U(Ħia?~ӪUǍ\M5 c{V< Xg&ֽa1)tKrAiՍпۿ'%L{i ]z~Tx^-oc@DUCb/28%a+ƍy#ZGOJF5QM5p01*ƪ)QlLla[%Ŵ^©5 S5Ўrs!OT']ڂ5(񈌶AWN˯6I"Vݒ 0Xǐ+9چzNY U|pkSlKV%%=K#8mϸgko"yl@wZ_rDgU[ZCGW6v6!Aԝjӱ-q('%fZĽ}1ݚ 9# W(pardWklT$~WXÕHoL7^g{/r}d홂mQRk$l?d~ #w?ƴũ>K'GU8F 4 5o+mj=<\5<炡E <.S|Qq4a(F!c/@#W NaLuܫ[m59f|Y^XQ8wo|:˳R .oVoC6?+ZסT!3T˅L?gGQyzﱿža_6awz!;$J%.MmsEىK㶩o]kV8O.nLm(ߺ3h>.KaR"_J/&Zk)t^Ё^3|GၹG;LYYЙNd56YhPyD?ջ(׹'u}tnWH[K;aFiQbЁdSY?"-X " >i1C1wY%M֯rJ_ ݻ0Q/a8|S:>*4*HsO Nnή쟸e Y@읮aUd@PzRiZ}nwf~ @-nB ~ЯhK+A>xScg; *:fX/8 4G#W"-uw9wg7eߒz2ܥ^*+-(|BkVR+K$!t2ROqݎjC%G/7m3[^}qBrg&wPu_=H?hǨ=`BUxf!#83.lbahsR׵ύ0O؎gY%#^O:hYaGMR8 pn;m`0.'Z{BM\34FBuφd?W㧟л)tH\kBxipRN1t6tQ4} i6Q۲PUj%+L:[dg4u2grJq5>_=U2"UN66{|}ƫL&l^X:Б9 T(#83G͑PoBy%}uB4iURݱ/Eo+mܴBɮ&vHy5uF$F_IPAsTy 7F1V7 Z( sC~h]&mUfF;g,@TLFS3b6Ǵ G>ut:"$&OBQَFۑ "%D[FҾ{g$9O[s3VP.]!A#᜿ sÄw"09GU B^ m=]PZ澺)\6}LLVmg;pزN0b'XAz#Z[맂RWmό%KOSm,fr2Y 4]F\\o=RLGxh}+a#D] n[๐!Tk=QܴcVo$.3*c:"W3W)h4f.kثgX5,=w~ w* +ͩG?x3b60R?]J/Ιx!g] yxT\K.Su0Ҧx8-t cc(,防/Pvhl' J[UCJh*JM8@{JuNtO2rD5bt!^Enc?RiM'U}ǟA_ѐ:cL8NaSAV\6G vsKqV T3RGm{e1|C"VC`3oC~pzEsuS#(ǛSg:,B @2VAm'ܓ6US~J{}VhPI2ف*5 e` ޿Bq) X^@THOD/\H¸dwjDܕZ٢c.t'MO(s]g4 ^p)3 HhFR±+ 7[⩍0}/m9v] :H%q ?CU?mDZbkd/j@$@}؎ v/}#]-i-o\3LAph_B:p۾ d^+$FI1wcSyZ%`a > ύ)z|nro#W^b>+3P Jh6Ł|0jp`ͫ  L#"a 9]tM^p*/u_3`7v[Q!Zu/Bw!dVO_O:V::5KB)}.fUo WsGA^d:Q~ס[s< Z+uw^~\sjN;#j% pN-+Y?Z+S4abdg7|֪;m/.4W=1ӓS*L:}bHBu6-=O'cy*ش?R38uGp~ 0iw<~'S5䔌Bǃ`. ?/޺is̴y쇹χHLl֣O KP3ZUm:{,\8 .gٙtLVTɟ&UG7ya,lV^ʛ0S] ̓/q=f `^ ԤՐ?nx-nNk۾d{zI=O&թjh+#v…QC  읷:0Wc\ w {l:f4 k{̙׌Wցm̼Ecl:x?Vw /Y[t)NHI+?tC#OO&K_x?SkouEЯ tWѤH'hX]1վ%t&_z〻ǃ&/ !3ǒitMaLDg}VfIЍ2ɒ8"u!$MBsa߅s'HqLW>EW\CuNp \y홊^~*0ΈlHT@',Gz+hR9>|'b1M]\ꆎR_%q@K4>Y&Mm+  O3=JJKg1j>XlP]u#xC7"Zjk.6H<ߩ83fw-Mb:T02/g !6ܛt'ٮi0.!O Pʎ lk4Jpw6}Z2cɂˋ ^gWI("F+Ǯu ͒鶺JfW NէoND$_ꁎ.4ǐh;q/:u\t$[qA*`Qu% aq.x 5!Rd+RCs{Td?_a Bm"w#(FkW%cNjYz+&t| / 5zj#z6T5 4X÷|m)T$>cȡ_>?ξ/(2“%Rgqm.p=n rRXa>+EQu|5%T8s>k!!ĚۼD pcLch>-`zsU>[P5٫Ě5EM)kyC T%̌ޓc]fsG\{B㞇Ft:xey*tR\717Lybnb 4ahRawi]C+v j.fQѓ&AC\d[P{xS^ܸvA*!>Ÿv48<{:c-~HnܰܣTEG#|qd/Dk?Yo9!(tMϼyl9l}mC_YfmS'O;dGSvBAFO7G;K㥸WL='WЎ]EWfٽ{a9˧8WKqWM_V ow<"#nҎ4/pO|>qf.Boi+[J:"fGU du9״BTQoD0DHGɄ t+qb||[٧W|o߶8!_kjD%:/gnVG{vӨb@'Hpt ì}@hR}bcW$PZmcVQ} 7)L;@a,w "T8*^'>ӼOilj-pxi f)Q{f?H-qb'_ Z0q^Kf>d09 !DKn *~[Ua'(v]K,_ 4Ϸ(w.#r󽨞__$}1HX38<L:~Ll-pUb,L*s8&2g~ _9,uzaTeOÑ+Ɓ+B*\]h//ĸdҦ#s qt XA b2fWK_Hlk5q,`a $ Az.K{@nGfr9&2QRε ~,Q}{|u##6ڴxF,6V'̫=l抆mK\:~R NsL̜~2qQ "7Ϣj)Ye^X?(l]qf6VS G k:nyF]K8ifuEv(6'q4Hm:'ꄢ=拯͒\#_aBGG9ytnXF;W\#Ǫ߁@GYVW?*$rf %)J :{-)/Sjn哎`Ϝ:B,D:$>@x.+W-j$ {-}kπIqoB\==(~VZƩ@ #7fqfԸ 5)30 . wBip3 JMQ{ xY2FI ˆsD˞F>~D9 W.{])3Fmj+7y=tMe{ !(դ¹ƨDUN-9Dރrd+lG=k21ͱ!Ć`QqnctZ~y([-gb9JR*ci`rm+3zJh Qk y?ݒ51RԿE9z)wKkS},UΥbX9ϋo֊wElFAn,yձUq{m# ˤe *UUs:Hr~^@62LuMKDH\}pfQLj}dy K˟H)XY:=fbپu*Xq]XaEr٧9;{8oR&U͂MkI "/-W thTۼ.Ѽ.6uz͆%HAsb )T Il:oz67#Nlܭ 7v*;>,Miɷ7Iͭm1w~Ϝ^%]a'V$cRgLztxx[wWaΨ[V~/!xej6bs8- u7,N4E-NHM-KvR4d@u=} ,Mr7E Yʋ2Bá#1$ a-X lj6ccŎlA}83-$[#XYyr !% K*sZŷx RvNv# Vd1mxyx9nwZS //^>뿮iլ 9V6u)dzHZ}mcuZ9s,Bl sz2AƂH Y*t7K_sqғ5"$ qz}ʘ3'6hGK{ OgL]jx!A5n3D:{YJFbtnR`URJ7uS*]_='2Wc-,KM^%֌Ź ,c vA⎢DnwBƷgIJ Fb?0=1E;}%AT,$h!}+-*ʅ}.:j\ =/OMcV\Cdh`f Uvo^ٙiwSuB &^! .%˫uO4z%!`$a:, ҢHi X0.D*Fj [[|2|H~3(\0K /OqwR! 7 ,$V8VB-G "1~[VjY)tg˛5qG0~)^{IdzqgCn9AT'[BSZ:ǰ(խ1vQͺ)4$30avWm LWK  I}ٙJVBgLw mE0˨Ø,5hAjXp3Kw͙b1"F ףkJ:jR !#T/? a0%,2駷3*_JZV?1*Vj 6er~g^1BBr$X#18# x5Ú!/Ϣqo5N9H{O ƶ 8DžRWMtdoPTc kXJ[<ͥߑ nid&,%'Fw3^B\6AJ| I$AgSҌ Q5S6ϞX[0 %WtBK8V9qBvCOFb7Vٖ{2Yg@d6&P-A">s5 B)5`K&KA~uv`#h!D-c3^y"l&#^! ˾P 1oai u5/M9G+{"(!!@b— DI} d+i ;rYp}^X[i\3^_*Ȉ&l$@ &L6s@*s愎8G$f:Sb&qFTf C߸)6˚P֒B䆰a<3!(RUԃJȔdʝJ3_ح;¾ wCs}N}=^>^%}.5AQ8'Dw5ԓi40BN-m.w|+n՝̜6`XVȌ^q=gֹcc<.ڹ Xd}Se3:p[rjTj.#Ma(r R0~VLKG1>PI@w|ċUWwsȉ#?s6\fE CcAܗ ,o'dzC7w D7X+RH]!L9c ~|ioFۓq$A)m-/5N'[ _\`|(òSf\})8طɠFbFWo߃9,u,ɉ˳7d9UxdG2g6닣ziy0;,K1S5*nvMwO^h@ͼIZ)=WX nP:Az?&)+a_hEoZ/:hK?\Ȧd@  N՘)Di٠AhHM"pH& 2k 4b?,0iG[U2FXêVzG#mH5)O>2f褕LBv|۞Ha&5W(črHrsTUӭ+1͖ۑ54//(Mq3ym\>z\t'I53v1H7Bq4z%8GVH CaObPi۫th 7 ?E:!}qžV*:?>.G8 Z>T$tM6#:q)ͮ;BڹA*Cۖea܋^,_v/{͋ !&S/HPM0ۂD/<1) 7C8WzDϾqH) G G|}wfhBڇ}"KVFt+5_mysUPC  |~l䕓͌-py[ "HKJbjmKM>oK hdYNޑ'F31b-PZ#-vxᒧ]bo-E'ww&Ėw- p>VZ>Zo!IhuBAj!!B:e K~Wl7wt `3~v뢣Meҿ'W_Gϵˋk~P^7o6<@/܅|x `g=S#| P`RRҫ/: `B^;#pnu29ʑ)41ЀtL/A`R) *$z([yB>2=->7n"n| ځ2{&.m8j**@MҶ BdM+ Q!5 DE@@@e $@ׄ$B egwwf>?_Ruߧιs:dE}:L-S3(6/F,PirELLTr07Ϻں%NzO|}R.pw ?8C?_cj"\ cpW1>(ߪ2yI7n) #> I⠻TD IIrZĜ酧7OUwyOncv(J7~/}Kn#6oPY~W?wSpn`dtnao}VǷdeI Ls߾kK&zMGr%kTAlԠ$n+fWY6O{?%qUv./Ϊ^1#}3pZӿf„|zf ԝd29kP8KoF$ Zx0B2A!45IѼZr>\ﺳsb[7 7MhM (͑%M>Hi@g-cqPA LkvH[p(=7jDqkP6 _IOYh)KźNxwc}'#^|-:12.'矍D Ԋ}:OwmGjtp%1mtUq3okr o,8/ L<Ռzd.Yε?1Jʾ3;?'J *l~~abl@7+wITBSsH/BcN:FxchZ̨11=z:T'[rB+ӄ{$VIFFZn {ﶫW`[9ߣ f#>'Z;ܩ}v6J 8* iֲ*ɛF9 t|bpFS% WXj8-RkBWx%q-4Gdgs2%\pOǦ_[e_#_::J<{E;㿝&wdKՓPV7db5UbS[ |KDn ,sH 3kUy˵<땡6 M'RZ/ ڗ`4ޑ9ɏ]&b%TΆZGDkgn˿זL}\uB#0{?* iq`ꈫ{&F5JA*놋BJ5Rz]kLd{wr4ǨN}fǯ4^Ė1 ^+y滧qہLXh3zT`P ֯ 5#")a# gƣUIW[>9[?Oa[j>C<(0 b]os=\ǜ tH#L`^>NR3SJ<]AKܑE/el{8QtHA Y Tf*y[jQcI+Ѳژk#<9T.=*K*}xv}LAh\lfaqdvF>r0ITa^Io5(>~v4<Vax㦄BӇGo_ӄBWquK?@lT3$7z@dcՙC{+wC1-91%N(G ;;% >$=: ؽF|@)|Ly*+V*6ӯ_%D?B Zc4ͼb5]դgpc׬?gk_=o>\%q־m޹~n#9GHo ~p/5)?Ef?Maҧ"n,İkv _ǛM,D\+ A/ztP{7|0 Fe|;_G=O / ZYգ[2{OOeWJ$7 Jymnb;`Y{*59tX#=~^- ]}(uh d6\eVGVuG}/u|kX߬=3kb=YETl3>.3Ivə=i=}WP!mP'J L$?AM{xa6˝A# 2y1]W4Y]D8'0>\pW-qyod5F W7q$n*BpV ~lTH+rmЃX-yP\nn-p?CxN. :*a{Ao^7,Yxk!E[~=䑅g>I,UG.{dz П:/b%|߀xM݇|` )]I7pUY#k9$_蛌;y|U0!;4cЯ# 9@/'o5%悓j,^Bz)1ĸu񉗩WcE?<Ņ5 ߾k@c/uj }fe1\žNLgWe3jPKLSӫi;FcOΌ| rƻ -P-t &`\HgeК4vD%] +׋M㥅k~~ޑ+)~|ON;ɽq &n6cl$lݐ h3ΫZ`Y1 TMoKckH{:pߝYx{T{FN -=qGpO@s8LSn*4m+-C"O);Kk'vfϠIVw~Ĩ߻6͒}S"+ZٶLysў+/Tz2Ry:M8LhձZӦ6V ƺ_E,%j$Mgѡ#Nitdwm]Zɜ)?2 zsЄ\Dw}fG|M$# mV/!y"`F *CzqY+#X'A0z/<c~ 4'"D3esZizYiԝ%7B*v[8~VN+2{:CW!AFvʐx7^ZVzJ؜KW(wsU @`{u 88#WÕݧE0.Eީ{{vvs[U-:2]zvxՈ'gN>h4+dl*c[ꂲ y{3 AqlNDS` UEΡy<9CM:jhŽ@FgFG0t,?O7%ɗGv`JcY s}1тPy1i# Kj.͜0'=NK=*@A3yw)G` }JiWZHnCCQ{T̨W"}iiy *M;E}+y< m=.)$'r[v:t"/ ack#ZSg+"v~,%ȴy4sw rScqRvN}wSp6UOa;p79$]l~މxi<"@C8q5Tb[tdѾu) 0h҈=]nnYtr|6Z}X!6p?$QhǡG:; Cap'2@vց5z0ZI˱=:D4%VePK+}{RD91B0bD0g'#,*$LN0 𛪰utF+7E-,Ip>g>^k̫pn%ɹ.?;.ߚFxu թCWYButl_6DFJT7,@)1 82[CU37a C\T"qk+Չe':jw`UMm+.Բ4j}Ĩꌟ_ 3G}Du3}^WEmjB6B{+- -hA~2!8Ap`DL!vYK(S#%Z\jw ".A/Bs}UH^ 33Af-kH[YB(vG?b44Xm>˭[NH埲P*uж8610CPtٚy.;!9&'"=rAĔbWMe}dt͕WBFrMy.+vg奯ݽ`m(UT_ȽE=j]KuG$#Л{,!jsHop{0?o1ufF}Λ" Ra!,CYݝpjU BHj-י&y7.yGÉ/Cdi+>$/-.<"bɿod{ᩨ?%)޲\j;*g1t,'i5;HovE#iVYz#PE98LLF@ | k?P2XꅐGF'j BXcX<1wdMY]ROstxT`/c2p+CmwC,}㖦 h%}P<;B&=ehd؄l&L5X:Mc]?e%FU).hv3OYճkO۷ z`<6vV"6$xu]ˉ8}J^r₻|g?e1矴M]h!c\Q[8=z/$RGnB>聄bpW]fP$6#po:O\^ k*U_ VA|Z -CeL.ͧ}X4Ud0p>0PfTNe&}@u3uv21<iy':M1dfn~fC=po߱K;ξy)osPΎ:ZWsXMY`_$TkXeWy rN7^[`\/~Rv _ߺ-ZҕoO~)Dyk9Z~e_qQi#Mt\GQg+X~\M iW gY){(}e2B~[ss7͝ j 7Y ~EvϷzgzO+~VmYr= X^,ٙTVVdw)YѪκ?"a#`f^R2[?M"s_RT$|Ar`P)ps5v :vLj kD")|c9KA;_x Vhn&&nvl-/|9rll{Fݍ+dY9mS8VoMУ' !W |M 8qY7 ;C⦋@/;.બU4uk]5Z~`9=I)Oӣw[?1uR.^dAHȹfu3p t;d2哐*r?auzP,%7\>aܹ>!+1Vb)͹;|m4 Inε ZO.=I<3FHS6'6(#$kQp1qD7zb.t<d $ENL[[iJܺ[jT#S{PY)ZFMUaS/ѯ}:&4\̼6qRUȈA*ew &Ю++E9_m[+R?T/ߔ7&0U#{ }a٨@gn{LǽE\/;8S?5PZ67N4jUX\C]/mMkyz+.?KYN~?ȓ'YA_%ҿOqUV{࿶U?xW˯J_.*]~UtUW˯J_.*]~UtU%|Iv+k TuLg!)]T\v1fShzl;I%d g ;2rS̬ UJAى)d]`EԖ"]P/W[ex*nYY\&"au%<Fe vb-wfCcLw5BWv]pE'zF0`|/vaم@BS$w a#9'erjnTr#nXק#cJΘ`Nivx7DY-{G;'yQ?ϳkLk]d4#6 dqHx0`!%- Vxb~* gO B_{$9xh5n_?!6 BE$?"[s|$90}ci|z:BF 5f#|8ýbgUūNoUޣ˱2JY$vGO#OǻWJ.^-I¼IlT9\/5d>K*c/ $Ϯ>8eVMe>j(ϝn8 X{Ǯ70mq&6|9GAۮ@->d>=yU`(&l*;&Ss[⠬3~!պ'Fn5٩~)޺WZ\ͤ!E@:h@-ǂS>B;h1Wqh.g PzۼѾI=}/`c61 -y5Vzu1/A"wɽѦR{Gl*m6<`;ap?%Ⱥ(?ZvwJkS)0jz|$#jX9;fSx>Rj`%UYNj#Ha:S_5~9?^ۋ?R9-xf8WG,{z`']Ύqa{~3EĦ3,c~Dc9ϰ:H]B)ax$$=tiaqpBL Z;5zWSO&kE~7 =jZ2FS|ԂׯeɃ*NB.^!C ˦*IYd?U ޙ%o-O85#܊V@߉g^\ [!K8C;^(f &~w$ۈGU <1]qU45rאu<|k+L%H~ܖׄM ^, 2rXQ8ވ5K]|^j`p/vz|c!ÿPhUE0>JHKŲrsoϺ-ڽT lU*a/f$:=#]*t$W`ȩ]p&w6V{~tE B\x|O  RMH 7+UmhߋL$cFZEbjR+9 f1 U4X=#FkN ę\@@p鄳CnRBiV{fPafO]zqݨ/?<5]&s*k;V9^#BG 2pp_^g4R ے̰m.kD#@wG!zޜEAGP<4=߀$}\;̐.hzD}h 5CQSZ6YC<'O~9ΞQO)@! &D0װB̞F-(?էOYlh+s ?0k:Ȩu?:a= +GizJ +lK{chPc8!QR1i"طl^UAҔNtݺaq󜖵F 0  Q5(Oȥ^ ̙d^cv"β9γ[x ނRvWjkGK=cMW 8oN|"a:3A^B[+NMn灩IdL+!~zֿ.)Tr츫MgpLB>m95(c|SP37gwnstGRLjUo$axSJ2\ # 7*9{/JpO+ڳ¤J t@E㔼o2tݺ7FYyn5 X(W›.Xi2}~ mxY~wP{!eʠHEa[ ndLܕ쎨*80Tťxݽ^IVIbad&)Xi|,3h8vaFp=C@˴8G;d-Ti93DK=j ̮ھJ$l H5& !V- ia@>C\ vh.=4iǮl[X؛U+z0zjE0ep\(vkL<6+)UPmE9"XF+SM*NOK'NRѧ"f,![22mcKE?ܬ10ZvsRPttls"Fe"c=vøD`wv(Lsjl?~V kܮ=Î)<24FTmKBl釆"9=Pԅ`phN|Ǥ(m%JZϘPchBsLS-W}\nde{c…N@?1/LxSY^jYx#?XKGE2}ޥ$bzJکi(:o  1*aC-?W=?yHVA+d. pu:11VGKOH`oD 1_3"8elJېI-{qx@(~fܬbnG_ve-wFž0rNl1@adff2KLG '@l_\4\4?'[7 ˯."`~C̥97,a!i"M&㤿#_.Sz ?bꟍw1#?X6y0-3GYB -Fzo^^ow"J1hm̋OZl9P)MRsLS{F_.e<Π =-nJmhĸx`o".CxRIfL4j{zpgt4kOHh`bO(L="N{!7">@؋@__ɗ~YI)L` \ABbx) ū jbU޻a+Lt/mZ~eypݶg<*ayvM};[z㓶z;H,VK}c،.hԂ)w6ZQ_'+Y ?>yO5lls\1A~[ ; ZVlE"٧pG:0GKl^( MVqnlr+VOE3 YG`?U~' TP$,Z0E-ZmUn}K/E0˩Z&uܔR㽡ni[G参i )&=D@K]W~e<ʵ0Ksh '-"2pԳDyL*|P-38 ceR_NY:I 5X=$/C)ArlR<TF a |Lu bPWS.?ڞ8wAb˻[F]C%̔E0|Y@0|1)QajNFíx+yRhj&rtG$#~a=Ҹ§"tGx.^~ь. 1^$9SGEw}jS)T6àԚRWqdQwuOFxOEvE5mT#XC޹^tA.kBs~D86k yۘ(IRt?Ab6%fk,@a_4dLq9A]'yZzueEO_ `bpu>a?FXL%Ϟj![[-kIGm I/Rî8GYk{8{5oaJUBQzsdp ]`vdHf1 2`t (xMYXBU_~_i幼@Mn䌑mb0jE! lus3cwfV2g/Z }S蔧Uh'O__*_?Szߞ=I?֢z˅M3^^lh~5&q07ɆKϊ9\Pb=,LJ.9ɩ6#]h¬ۛ) md)|뺏m9!%`-W #DKI5X`NɌE+a,ZpwC<|0B2-cW *svc%Rc |Lc%cV2F}dGr~oj(4tci 0(:_ ^uZ> &`+6eS'r 1, )5H=RyRϠ/NM׾wKn؈@ZO 'DMi"s~M³k+%}eW=fPo,=p`/4K?[h0Oȿ"vFB+G-$雊f[qY, ui/%;xJHݢ?;'ޘF.*%?@3ZACCәʓŤe7GKxp.&}|q:oUȋHU:9 MqyIL `4"nq|.{]cNZn6#ژ <&kyHy>SQ25Nc\vU&A zOfLv=:xV*+n (nt)%[rڄbKj-F~.@LؾR'n&1@nFY6]džPa􍞵M0aτoߣ0b^hqDEED b@@"%!"HHN*  EzRO~3w>|;g:k]v0:=q Xo&wB#gAn'ˑC\da=ʀ0R׏{]M \ޠ>&y`г'-} ¼rGn4I7 q-oAobK-|8j"m>b?䛖ʼeqAmVQ]fe/̟S}kzOg8CjUnX:k 67C(fDXwD=My=w5]7&Sؔޜ &*r$0G=?5t-,}_+FpіjDl#n@v]*j5)Yz$ 9isڣX `N\c?2Tu:+qYRoIO;\k,t>ZU=n?4t}L)X4ܝ2̫yKC CBUb%q@;iOoMpp4" ^h,l!CSx)9e*IKR8dw|-so 3 ))V̢H?WBԝV eUG$o\F&d K]#oN︦vW:ƾڟ`)_mf5fS8D;Fu'/~KHy9FffɚL93V y@8!Ywbdl&p)ۺ.>4Jo+2>l%O30D dNbSm!tUU0zm)h7Ik!c~WpruhS,F>V_F?h,4 5Mw;ko1.^O^+?`T@!3 $y;ri_K13}fW{EcjB[M] f֭{ e?C'vő9Wz#fW/d1%Web)q>z~(fڏQ hmB-]v"s(l0mT`[obU2geBZ<c_C0 &M?q)'2};zN9z71aܗx뼄Ʌ# Asq;cݴS3o'HV'F\`">/{"[/ 툻30~!X?s ueB$: R{^B vj{rUEA4"byt!6#ԥvo,\nnWxV޹-P^@m0#WTloxƢv;צ {C ̭LO!c|^mk3;Q:F$-;P-ZD{BC?Vw?}ٕ:AW  J5̇L,?ܶ,`M:8biئbE}-CU*w,R鰞xZ-!?Նgczt O\ĥ(k`=e,&sbee $MY(%3tKj-o1{Ƶyr1טʦJ' Lq%JNn$[Tj9o ]n~1e/!3W(t 7 Y f.+ߦ$|ԅ" 2x(# ^J[t[p0?qNجs!3!0N!CN6y>5\h;&&7.1UY3pNBmJ֟^gaWo3mkVC]JmLRiz !&bN^}+7zDcnʽro&IY0zڨc[BZy\Eq3̅e g훼 ,\;?i5;,^ߑ|œtxW>]/PtҴP }`7,MG*JاqsNԘ|_sW*IRe b뮨f1!lJ/ L OYfL˝.}QEqK(Ogo(yxpPt->߷旫q<2oo$pwG*{7?YoE^h4r) cP"Kuaѭ3k'fƻ}50?_= f6̯c,J>+bQs^8t+/~ XQ'xv銓WMۏw(ogWݢ7z zCȱN{"jSWB;,Qy^pt~C>אSx[RKֳtb"su4?wol” ]7y̳;]U:'P;>}vaGX5X0Y8a<s1/,#^'WaV\F0^E"~7?l6P)BDvC&*Ꮙzi\P@K/pxr$htTbĜI|XK3 @y}ū5gX;۠q}Rʑ*޽Eť w:_eB࣑s@d90nJa-e,nb\ rI6j^OKs[api_6`n8q9DӬ'ʋzWUjѡeyvHCLE໔l ^6a6^Ag3u8>q ~Les$5EA{GysfX| g!PWx3jօ&B4iZlewbkt`t柸G^?VJ`+軂+軂+軂 f9qMFumss]OyiDc!vyׯ8p@MXy 성,R #k1 `yY,Y\+y~ю<|!gsY(2Tv0.8'ЯYl,~UUxPt nV>B-<-Iyɖ{4P=Εݘ1~>vy|z~vZIt䚬MB)^|x!"_@~I_y(M*#M ڬL]qᶓ!ORSi <23@L:{ P휛lƾT fA5EwV<r 2>H\7_=VgB@1Xo" rJtċƞ@!{~Lxʸfɭen5jc]fP(j'͑L@xG%Y[Sᱮ˒x4Vњ^)Xup[63 je&[iyۯ;;TK?{G T(vTX>wGs_I<‘RPwUɞF6PO؟A%gfpmv7vJtˎP=yK`yW0H^Lb$L,OW{Y՚ӆa=(0Mٸ'aTfמyKDbs?v&QZ棤<@mRfCq؁-Q<(_^EfmǍkCn֕ƹ=sK**&[<5'V*.\PLyP16M۽ZU:Y;dw1ޝo^W*&;NޒzU5t8KĖҴ0`V}9; -[4L޻L{W޼Ήlk[G)zQoC&L!J؎8'A*Gg[I_~S=Cr2(g [kn BW׏Wpٚoy&a RH*AC/WQ`9pztTAH `Xum$[^e}iV٥̄B%R$fM vcKe5|\CP,HEm3e!:Q u慤Qr k\agZM03 ~%rlaLD`6!19&}:>uy0Whr G,EMRGm8Sȳ}S۱#X+w*{+?#Qsd;5< zmɚ؏x(M!zn8Yl^| ը(s;}&&wJ/ۻtRO8~.\;eu;"ՖnXi6l}9cZBLRGQ8:8z?ix;O\m`3_.znt =ޫ :BIٽ`kt W6ʞ{i&KkfK$ /6fkKi"X BQ /^K͘*g's W-f DP6v!k R"Qq)ݷRznmbѥ  +~ա-eg@_|B0Gl߀MImB`9{o9 [k pP+jtNb !p9KGS =- ;/iD^! qտg5}_F75e2c˖.l_]3hPɤs#:%iGz^X.EUǤAJP-ϖSbۢa7 H=P#X r`_=&fC:")tQf Q`sSG}j~p0F~?7`>vh rٽa ERDH]TAn# fo {o Q|qE|Mĭwƿ2:0{gA 3 ظZ#~Fu^ 4[ioĤTry"WfCD2z7Ѧ0^տ+WZ3- OUmA*KzWSWe<.ZϲqԌzf䰛! sᣋfA WE_,8ztI⢳ӓAdc̃?~z%60W·T1*#؄Nt-R?{8$|DSbUj-z.h͔IczQ >F*S&ѕqD#lr l$0G ltD4? vs$VJrN^~~ٵab㛊I DƓ=b]2[oOՉQs2_ K[ݢWPB%=7X69sd_2ڌT#!, !/+b.~wѬ6Ǘ-&=;6'YoA96n9nPפ.H﹒1f9)Z͊ ?zO*n ~PKdx+jsnVYf*QE#k&B kᄇʖQFAl+q8fd" C/;k۟զuv| lZkqYѤ5]`WY9CXTSsD^K}UR׶Ss+E,KtQ7kLΨPrf KRXԗ~ ?3jw|Щo{u@?7^Jjw~E)2V9„m5pNHLw'#{U9_hdZ+kؚV= K?u ^ CG9*W7̪0_4s)?%yTIxFolӥF  KrM3)fY,-|f1"DcaiQV˸^~?eE4R1'2mv7 ٗz5?vaB\ݝ^V1By95w\~=MpԹ\e%Tԯ U ?4 ΍kDY[HyO/fh1Ks_i>#&"CͲC=G*nh"xul '3 cSU_F]ijk)A>+"]ފnԖN!&}I#䒳" cAJe}b<0J(ܡ$+xU96Ʃsk XO¤"$u4-S5Z~/ Y/#j"!?DA_޴"v.]8ɮ͠nniO|ɭVÑ-03S؊U{NKd'c>cry6{BDnC ^>e)ֻH@qFL!P5-]NvjUR\:Wt ܟק+Ҿz~Wpl#ax5F3jG j0..3/ ۞y}29>AIMKt|sb€`?m[mViփ/˝em&U$ 6мS݄6¯n[ 5;?ȐiF'Ks(d/+f}LB4XSXwvl)ȿ{e,j ހDy/Nh j WI֥a).2 >b@Ub8F%Jύ>*^>%ow{G Y8($Dn^sa/0䀱9lIzHR ,ycCIGOƖfy@ӃSZoRY\ 2-C1JU3m-YLbZGKuʛp;_؄ѕ[d,ϿOTvUzt//cy@JK5FP:ꏲ1ӥ@MٟCYJ"@eޜ!lLjiϗhK˚uyeh7*lO B$ h_{͜lQ} 7ICRl~ ڰK48ġCθ v@++֮J7NCQ Xip Ȑ@j@b;E1O0xKYyhvs"GYu҄SٗmmNt-qKibl_2q}q1Mo5]m ~e|j޷(, \`7uut/d4)In=:qRĮ^wqć9-a}׊pwpqӈUM1ĐiΦir?{ 3d2Rbыm]<. 3/, ~!Tb$q"7Ś-CЋݬRL2z4{COUkrn,Y\.^Su)AqN_XHb=:v%VTĒna'2gvK׋q&<rns8SoHt,?nm9CGGy-BdxOjh^M&ZɈ^d8I!`&bQOmQZs^j;`񱶶rc%=FqJ]}xV-U;+Ae%4 /M&ݠ~)A&xx\@ *NNJhmtM zlU>ՑZZ )K5B/C"13ct;ME|aIk0gt3[웖Wu6F/O'/k4~mk6YA,{֊3%KrrF1jW`8⼻t^hUWN+.`y`oe?;,owd@[ΖjOeA &1)g6֠l<iE  ?ݣڰjxfGEN#=S_ufJUV̟>wn=Վ[~aMQ5,Pd,ټђb%(n{1b~r4GqF,5z,Ҭ4RΦ2@FYS<,#ϓuWV!ne (bN}duf\Q `K<[˷wF_, ţ,L9[J.16mcC<9ac2Jg3ze5@0o4$hO}ǎ?L=@9Ag /MVyψToeM<$ϻP`4mSpbMrIz5"s8%GJ4υ.|y°W #Q^YKsI4RuO>D}La YGmG ES{=-,#2xeI^4Ys,U gFŅ^Sx72xEug&m ,V(?i #np9PD"tN?f[T e:6c=f'f{;4c DUJAaԜWN}_ī;dqaM{Is!ݭsHRs@p3-ܗNdnH{Tzc/7޽|эqEP:}:Mř0|\y ͪ =gi'>qk4TCyTYEz )tTovcBөqI9p՚`7ѴQE0,iPX2ɞ?'*|A'.֍M&WwK7$6A jC:W^Oy _MȍF@*1wD>endobj 44 0 obj<>endobj 45 0 obj<>endobj 46 0 obj<>endobj 47 0 obj<>endobj 48 0 obj<>endobj 49 0 obj<>endobj 50 0 obj<>endobj 51 0 obj<>endobj 52 0 obj<>endobj 53 0 obj<>endobj 54 0 obj<>endobj 55 0 obj<>endobj 56 0 obj<>endobj 57 0 obj<>endobj 58 0 obj<>endobj 59 0 obj<>endobj 60 0 obj<>endobj 61 0 obj<>endobj 62 0 obj<>endobj 63 0 obj<>endobj 64 0 obj<>endobj 65 0 obj<>endobj 66 0 obj<>endobj 67 0 obj<>endobj 68 0 obj<>endobj 69 0 obj<>endobj 70 0 obj<>endobj 71 0 obj<>endobj 72 0 obj<>endobj 73 0 obj<>endobj 74 0 obj<>endobj 75 0 obj<>endobj 76 0 obj<>endobj 77 0 obj<>endobj 78 0 obj<>endobj 79 0 obj<>endobj 80 0 obj<>endobj 81 0 obj<>endobj 82 0 obj<>endobj 83 0 obj<>endobj 84 0 obj<>endobj 85 0 obj<>endobj 86 0 obj[43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R]endobj 87 0 obj<>endobj 88 0 obj<>endobj 89 0 obj<>endobj 90 0 obj<>endobj 91 0 obj<>endobj 92 0 obj<>endobj 93 0 obj<>endobj 94 0 obj<>endobj 95 0 obj[87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R]endobj 96 0 obj<>endobj 97 0 obj<>endobj 98 0 obj<>endobj 99 0 obj<>endobj 100 0 obj<>endobj 101 0 obj<>endobj 102 0 obj<>endobj 103 0 obj<>endobj 104 0 obj<>endobj 105 0 obj<>endobj 106 0 obj<>endobj 107 0 obj<>endobj 108 0 obj[97 0 R 99 0 R 101 0 R 103 0 R 105 0 R 107 0 R]endobj 109 0 obj<>endobj 110 0 obj<>endobj 111 0 obj<>endobj 112 0 obj[110 0 R 111 0 R]endobj 113 0 obj<>endobj 114 0 obj<>endobj 115 0 obj[114 0 R]endobj 116 0 obj<>endobj 117 0 obj<>endobj 118 0 obj[117 0 R]endobj 119 0 obj<>endobj 120 0 obj[119 0 R]endobj 121 0 obj<>endobj 122 0 obj<>endobj 123 0 obj[121 0 R 122 0 R]endobj 124 0 obj<>endobj 125 0 obj[124 0 R]endobj 126 0 obj<>endobj 127 0 obj<>endobj 128 0 obj[126 0 R 127 0 R]endobj 129 0 obj<>endobj 130 0 obj[129 0 R]endobj 131 0 obj<>endobj 132 0 obj[131 0 R]endobj 133 0 obj<>endobj 134 0 obj<>endobj 135 0 obj[134 0 R]endobj 136 0 obj<>endobj 137 0 obj[136 0 R]endobj 138 0 obj<>endobj 139 0 obj<>endobj 140 0 obj<>endobj 141 0 obj<>endobj 142 0 obj<>endobj 143 0 obj<>endobj 144 0 obj[138 0 R 139 0 R 140 0 R 141 0 R 143 0 R]endobj 145 0 obj<>endobj 146 0 obj[145 0 R]endobj 147 0 obj<>endobj 148 0 obj<>endobj 149 0 obj[148 0 R]endobj 150 0 obj<>endobj 151 0 obj<>endobj 152 0 obj<>endobj 153 0 obj<>endobj 154 0 obj<>endobj 155 0 obj[150 0 R 151 0 R 152 0 R 154 0 R]endobj 156 0 obj<>endobj 157 0 obj<>endobj 158 0 obj<>endobj 159 0 obj<>endobj 160 0 obj<>endobj 161 0 obj[156 0 R 157 0 R 158 0 R 160 0 R]endobj 162 0 obj<>endobj 163 0 obj<>endobj 164 0 obj<>endobj 165 0 obj<>endobj 166 0 obj<>endobj 167 0 obj<>endobj 168 0 obj<>endobj 169 0 obj<>endobj 170 0 obj<>endobj 171 0 obj<>endobj 172 0 obj<>endobj 173 0 obj<>endobj 174 0 obj<>endobj 175 0 obj<>endobj 176 0 obj<>endobj 177 0 obj<>endobj 178 0 obj<>endobj 179 0 obj<>endobj 180 0 obj<>endobj 181 0 obj<>endobj 182 0 obj<>endobj 183 0 obj<>endobj 184 0 obj<>endobj 185 0 obj<>endobj 186 0 obj<>endobj 187 0 obj<>endobj 188 0 obj<>endobj 189 0 obj<>endobj 190 0 obj<>endobj 191 0 obj<>endobj 192 0 obj<>endobj 193 0 obj<>endobj 194 0 obj<>endobj 195 0 obj<>endobj 196 0 obj<>endobj 197 0 obj<>endobj 198 0 obj<>endobj 199 0 obj<>endobj 200 0 obj<>endobj 201 0 obj<>endobj 202 0 obj<>endobj 203 0 obj<>endobj 204 0 obj<>endobj 205 0 obj<>endobj 206 0 obj<>endobj 207 0 obj<>endobj 208 0 obj<>endobj 209 0 obj<>endobj 210 0 obj<>endobj 211 0 obj<>endobj 212 0 obj<>endobj 213 0 obj<>endobj 214 0 obj<>endobj 215 0 obj<>endobj 216 0 obj<>endobj 217 0 obj<>endobj 218 0 obj<>endobj 219 0 obj<>endobj 220 0 obj<>endobj 221 0 obj<>endobj 222 0 obj<>endobj 223 0 obj<>endobj 224 0 obj<>endobj 225 0 obj<>endobj 226 0 obj<>endobj 227 0 obj<>endobj 228 0 obj<>endobj 229 0 obj<>endobj 230 0 obj<>endobj 231 0 obj<>endobj 232 0 obj<>endobj 233 0 obj<>endobj 234 0 obj<>endobj 235 0 obj<>endobj 236 0 obj<>endobj 237 0 obj<>endobj 238 0 obj<>endobj 239 0 obj<>endobj 240 0 obj<>endobj 241 0 obj<>endobj 242 0 obj<>endobj 243 0 obj<>endobj 244 0 obj<>endobj 245 0 obj<>endobj 246 0 obj<>/XObject<>>>>>endobj 247 0 obj<>stream xUN0~9n؎c\%8h ڙo5W&S ZbWXKrNpqd cc"ē g,0'‘RiOXwн]f%eBfn|–d?;9Q54L!#WhRzbp[Wc&l؄ c9dGgG,endstream endobj 248 0 obj<>/XObject<<>>>>>>endobj 249 0 obj<>stream xڍRn@#NDcAi{"@T P4eY?6}ƐCe˫7;=p=^kF $xD_!PV70Q.J嶘 ,| QdwׂлaX{êCXqvԾ^sΉVP%’w`NX B:{t>փYQd1-a ˱/2X*DXka v(,بKTwyD&}rk'+nsp[nY8XIi ݇`<ۿ=e)Y Co2'rv&:%6!9]9/r*Kڰ|؜x39s"Cs"As}?Ex-YLC̗g 3a4{&m=7ՙظBCHtF׷lsj$4KjLh)[ e1RSNsfNXQQg/rR endstream endobj 250 0 obj<>/XObject<<>>>>/Annots 86 0 R>>endobj 251 0 obj<>stream xYnF}WoPmw/(M\DH[ /4Eٌ)Q(; wgwuH2:s93gNh4$&1WTFT& aGJH”Fcs/F(D-f}:,&+x)&Y^t7%pw?q Sv@uPm֖ dD#;>1f*Nt`XR),J`1|J3MwbR4,/ dXقM4ƒ}]Ts;@Tɛ鼩l "MiaHwv^׷ÔzpM'H~;b|=u Mchg[)crj[T(>kz55'mk$I=|g.}0d,%)#;} `mPJ`04Iԑk ((2\u}egś.%+ûZThU|96S"?Փ>k,!(_fmvHAE[LHX>]?DSe(79: P$Oh DLhhEl (R<`\C! /jY$>WKTpz[M1AC1:1hik$}Y\KHa+ơ(fhre,}.e_-9Bjk\QKJz_^5&loPlgqT+laIt6g2MgwbHfRc92#<@{ڰ=+(vn _Hdګ*ħqN-jĔ0!Pl|eLS4<#\N%UW^-ǡv)?d*:-?2Ƈv[dwy1\7G!>>M9o]zi[ø&2B_9 vSۯ4u!BCF>\}pt+O%H<4YpB 0G0@_EB+`&bu5e\=fB#DK[ Ïԫ,Nm]K0Q2k3YbKK}{ڥt:G;{6cОנɺt ?1S1Ky% V3Z[%fs6@pb(~s,JyC }FƷU x9,o/{ '=n29qR++COš8}˃dH3+&盁|,3.׌28+;\vŮ)b>rJi4W;4,v #_1[YV hl5[R4[KorOF-ε~I+h7S&OAvtF>wuL{MAMk,m}dHVYU׵H04*JT$46䵀ʼ 2hi]6<(-N~Pendstream endobj 252 0 obj<>/XObject<<>>>>>>endobj 253 0 obj<>stream x+2T0BCSJr 23 ‰t}7C3K4C#=S c3sSdĢT⒢̤Ғ<̒ T< Uť 3JbFf&H5+ 'Aendstream endobj 254 0 obj<>/XObject<<>>>>/Annots 95 0 R>>endobj 255 0 obj<>stream xڥU]o@|WD`0$O$R%фJW;Lj`nofwngg#! ԏ(7F'YSsاphB 0OʀJ|>@pDa muA 9HKK [ ) 0ذVڐ0Mf4V /CdlqNVܣ0|i;6VjEsQ‚VP7A9]BtGoD y*1+ÆԢ/Auţ0"~ DXgM!gp*H|r$8tJ4V\fOkF&{Z&EN8ڬHB7&CcD k2DȞ(~ fY+:a [!>žO!]ټKr˕2<a_rFj6[BD8.m捡 zνC/Ge5 zAw8ET4dendstream endobj 256 0 obj<>/XObject<<>>>>/Annots 108 0 R>>endobj 257 0 obj<>stream xڭVQs8~W=ܴ7ScߒkҔ Gh"k[|[#$d:McI߮o}0 WTU'`->zGYG>`$1x+ZV7lw!L@tYT9}++nB7J ؃Hfa_R'w;Іҩ֟c[soNFYcp'nQ"k\A%% jz79˥+Iú=3L K(tP/,X9Wt1`u6D:;;%͆H6y/[,|Nm-]owmnl.Ї\,/TBZM~ hꪍ)K9wO~Hک` ZܐxX0GjoV^g_^Z!Tw~Ѐ6){h w\ JEwL%iY9yYe$kKȻy5AZaYz&v669p8N֭[Kkc 3 {SVzSb{˜P5z#nԨ)6?ڐVȤ!-}wO]Bܞ:UK"o쎙π:o1R&U W5-ֻW߰T7)aJ&=f Sq1(^wZPi1uz#?KAJ¬⪡NQe4u i9%a<^;L)vUl|Т@DgEC,%ǍoX4AS»o1xyԎ>5@x!~5 "v29~1[uIendstream endobj 258 0 obj<>/XObject<<>>>>>>endobj 259 0 obj<>stream xڭn@yLcL;(iBvzrcaJ8I^U8B2Ҏ?{B4}|0CV0hAV)?pDU+C&MB hH&+eFH){Y+NCV=^o\.<#Z5b SC-WhHV\hR)1kljFBIJk?Jb>/XObject<<>>>>>>endobj 261 0 obj<>stream x=0}9l5C_BXjx}F3dz1$|f$AhD=/c{b) lǣ$f DyMPO[U8Y}}9=,P* W8Knĝy"<7jQ7R y50}endstream endobj 262 0 obj<>/XObject<<>>>>/Annots 112 0 R>>endobj 263 0 obj<>stream xڅVMo8W |p8qzYlC/4XKBRv~Pr9nY&93yo@t><4=8INMgX~1Ja'4MtDc4hk(X~0qC4[NϓNs)UQRgI;焜i4[.Ԝ2a!z?$m8L@W>*"a{&WWlbgaS}pk!?)E~OLJ/ 6sSk3Zۚ|+gI`Dhː$klNm>phn"<ٕy 9 ɶ`m!xf*)Wsl$G *KgV,Fv!:tozK2^ħB ľSj.(+$^Iޒ+c9s6O,3él2"3gDP׮|d>պȶ w70>=lΜ-Uڥ ZD-[QCΆFʯEMyZ)VӚJFKmY Eg;YZMnG哆^e\6MlФpĘY!+!t0H]~Hdox|UNꀷG12D,ۖ&rkԻnYmWB,+ 0Ae@deERZPƜaydP\#*;4" ]y-N n)덅kfm7M;@.x,|;A!TjJҺuc鈌6:Iin!i\V8Qc:Ԟ>Rcۂg3M]}1x0f_Z@8zbƔLr4(ܮ(][i׀A֭$KLjꡑ{{P^/lZùEHcIrFK!&JWbV񈌡mNJۆƓh0ЕHiSt8)gz :t}GJ͝j# ޙ'K[S~zOVXhSu)fFQe;Y2ΕhFM5wM}oӀ; \bWwD +D{jFi | E6Pho(떢ܦ߹/Β lsy3sBendstream endobj 264 0 obj<>/XObject<<>>>>>>endobj 265 0 obj<>stream x՜[+Qkb[U[vURX"" qi8`N0-gY#gr|M-k4g}sS+Q0`*IJup =!S-⢬ AaV=1.N /Lu0Sc=@m `c|H QZ QNVhjP+ihj[l- ^U;b?G6F!@dx=O 3]mWvޑ;iJ!Q4 GĢ$4nRY-" ϓ'ڵPMhY8i$':ԔeӖ4&F><$xB,'B7Q"sa-+U)oow6|8ui?5nr .0춋Srq^vU<,IDsv`A[iM SՊpG/8F}~#4XDKc,|Hӡ;Ug7^((ߗUq07gRBIdq8OԹl osh /'mVٸ$7x.޼yf=Quk aCo^@c뚩U>M"mKۮZz/Ow3Lҕ!hէV ?#TC;X\{vAmC{,hF j@uuj;*. kkj"-CsqVV[B}鿘X]SoNk7úX{2T4>U'DЎUp~X5g`^^m(6hsD/jm6EW]K9XQ+յiQ}іQ>;Zi]MNvdp`yG?Us(m:vw,ڊuS*%*ow8RڟGk,fMv rnOۭ_Dx-V.ߨyu 9/oϧ>R^oN|`U Х}y(UJL1Ɩ9:m)ha:w~-JߜG:,6 `q0:Ό*$09kiؓ 2r55tbrk]Z9݅5/{C}˿(͏h>z$u.hŧ闟IBݳ?7; endstream endobj 266 0 obj<>/XObject<<>>>>/Annots 115 0 R>>endobj 267 0 obj<>stream x}TMs0+΀6c'iO҄ekmDlɕd}weHqv`+$OVK(ɗd!t0 Y%**Waʻ6ƃqiwn b@ҥlvGO$=B-=B6F׍BmN!(E5zJ۶0'%)!|t)u vDe;nnɺW.4`;t%[ҨWD/:]$TQEM9C,4vN!4aO''.lO bXC) ]<) Rc!y`*]nt.."(TJ@2W G)D(3hCS堋|Hux,_e=dz}#򃮢#Ectf0 :9ˎߞY1gr9,se 5V$0Xj;&)I+nŽh%LT6"c5YNrReC|~A֢aB9vYf"׷Vn׼+hG4FMGG G-v4-724UGj_Ai19c&k0м :>Ʊdk#unҀǗ-lm'iήMfz-B\H9-լncPendstream endobj 268 0 obj<>/XObject<<>>>>>>endobj 269 0 obj<>stream x=0D9l`f@5BlK}F3f2/@ ~$4>;,Y!6(@!uҌm38XNfzTMZ NjVN_TJByg\)˥L. endstream endobj 270 0 obj<>/XObject<<>>>>/Annots 118 0 R>>endobj 271 0 obj<>stream xڝWQo8~ﯘGt{ڶkI&7@ {Vm<<"6~p݁Ek򇞃58Àqa6:ЂLH$s{zsQ=yLs/pR5`*<Ӽ 3kK"LJ w/O%sx` ^2ynzg&4_ĚN=o0et-Haj* Ӝn^zaF G)\naFj-" bnc- )T [i5*%`s QU*$M'CJXdX%6Q b1lUa0m|{|m˗\It9LCg)1D,x2ķ[L,tҬ0efnC!}DZWtzy%qP*aS!>ntGs(OGB~CiM:y`xo^{N1x}M{doK6 KpXl̈́d3&fݺXI6)w1vigl6^,Szir]߿WNxP{Z*PzPSme$c ك/[og ceT (%⦖Ő$b:ʻA!YTCuQje,&9Of-P"1*-;7}xbURc}Р~ؗGxhZ*CUx8 187/9A'&"(VM?ӭIg;)<$ߣ=jvr3B)Cb NQ\Ŀl:S8V"SL؊qH[5mvZWݱTl8rN&'xZ%n!z 2*a)q`[u#޹AA|Efv ȇ'')C4ꀿap+Ϙa/ m.LάgAB.f^G8|D<]n ((97Vk.Ȣx7m'j2~\U _u/wendstream endobj 272 0 obj<>/XObject<<>>>>>>endobj 273 0 obj<>stream xڕVr8+TE$F&r֌C|HP˜$, (*^lm_!$=~ҲyK s4Mg3\zzcZ^d=r*2}RaB,$_b?[uendstream endobj 274 0 obj<>/XObject<<>>>>/Annots 120 0 R>>endobj 275 0 obj<>stream xr:̙e]riS;3XiQ Bb`?Nj}ϙK㒥G€$̡<>+qÈ#DDrِSyFte"^Rs8T V9 8qN1mB 9]8$!q #L 臁s"ag9B%P؇a~0H@alhH?whYGg$0 6!~0H@alrBqH;B4㬣3PGZE#7'ev0f<+o"KǮ@/e'1'Xu }{UYH:AʏKc!^)?2NnŃ 7G{x)hk^M U,KWguw٤Q"ׇ{%%oh{eMC*ARSYp(H*Kh]Ot~:>/XObject<<>>>>/Annots 123 0 R>>endobj 277 0 obj<>stream xڕVMo8WjFߖ{K^lMכ Zbv%Q!;([i;y̐|#Uxr/> IdPL,d. I;$H=;a:f$:Cta<[lW$X[΁ c܎.YG7$8$tP[:2q;rhL9%)BF@1NG. 鬣\,$t9aۑCe:# E1~:0ȡ2utCӑKtdvp:!%4Wg\0ȡ2]薄1wϐNXA.ylA@O"cJ 2r2CFj.jaÐƖ>̂xGS 1g!L"/5S eaϲ>v XIqG&po=_?!~2^kV?6%цkXҬV&8`?I gxzxrzϏ{&au1[ϫՠU3)ΗZynjs RĮY'i&+^RmrS<@&jMymt,FfgGЇ˅(KM왨*Z(Pe #RTmQz~CKj>/XObject<<>>>>>>endobj 279 0 obj<>stream xڥAs0{t(H5MUeV-A$QՈ IըPv ENod ff} 1Iff갅q'̉0{UplC sj390]'NojW.48̩]NBCKlAì uj390C7 !VjA9˙hp׮ÓHibX7Xij.s!`^u'DZNo jW3,8ԩ]@@üX7Xj.gs a^u(6!VjA9˙lBo-2FP}fY+YYzH&#f#+z ӿu# U6V04^1A|(pJ"R”?E3cT!SK]^5cpmD$&]6yiY^ySV 7ŐG7̪gZsyZEƻήq3Q܃^Pf mtEҁ@Y%TRO/9ecjo65}'lx9ضJ}6_i[ZCֻ;v3)^o.ՏpbY_}+\[U/?RT'T'"LWnu2N#0ZJ>/XObject<<>>>>>>endobj 281 0 obj<>stream x=0}9ls5bC_b*Xjx}df_aɲ͓/R-.x#8kMPU8Y}};=( lS8K݈; רdqES0h k+3iendstream endobj 282 0 obj<>/XObject<<>>>>>>endobj 283 0 obj<>stream xڥVn6+."ے:Ql&쑦($$Wr,;(X(pޛ73g0a>4^q㏇)9ϒE֙ a͇SƟVV[ O*{/)q\M(IghI|j+4dp-7N*hX;-A} oLpq%҂ Gf$7oIłJ PT~\=/N0I!%*dՇ+dUOwXIZ]YJJUEa*Se)*kBBc%* U8veԂ[">T= ^lCZ~$ϗ*sjt\nG@0mHGA!,&=I7'nbBV¿9R [}߭J.Lub%Uj!g?]5!0oK_n_OQe*ډ+y5p9f$4nqN*2dA>Mꜛžy{?S%#eOm-}c$[Aף4w",C&\vGEucq8^~6t;8rEvi Z)[׍Y]dJ]z\na sL ˉlcCPfps`E: Myp?Nz?5\endstream endobj 284 0 obj<>/XObject<<>>>>>>endobj 285 0 obj<>stream xڥVn6}W (-,&u vl6.ڇK*I%|}ge9q d9Cs1) ?-. W( 0OXU!G)ٵxF32^emsCk:6/p=g7Y)lr, d> \IGi#rp;; {f(wFkݾP ʼVW&P2û݇! XbQ80y`fbK$Ao^IWB1)cZl)HV"cqHW>o^)OHx.9˧-I#a,Mc4Q4ޣ$9AUJMӛV5qm-Y3KP&Q3e;#w1 ј5oʢ%h ~4Ad~4Qj]^י#[E%(mye ,9f.FK^gtBV ?1// !@*r(p,Ns+8z֯gO_?w~%3zTIDG+rcB</9kuM jF#s䭉! Nh{U8w`src˵?]`F>~˦tz퇁_"{%VBafT/jBg8kpo3{қ]H\Eg0j=zzË všp|ūxk.}Έm9|ƯLo$˘\Zjᵼ=?2+R?B?m.~sendstream endobj 286 0 obj<>/XObject<<>>>>>>endobj 287 0 obj<>stream xڵUM6W V%K[=6 %l&%R—4|3͛"5"Ɛ&Pԋ:\C`%a_Rpf]) &Ud!G!J0mް;;ffVwxX= 7.& ͆ТBI "\pk\|I%nVѫ\U4{}̇seP*5;?4Z4ͻY-VhW_fIң#Ӹ";r4fQht lN,W?V7BK}/!`)&6Sd'FQ\T~C't<%73\QF/=DG^sY*$Lg݅Ù$L! ɗ[QqǎWUڎz&+p;pU!62z.pKh d.)1j9cRt *mY^Oo7Spy{j^R#^zȇ9?sbL zߝnwYDܙDjW 0ǭ,`!t{FޅzI밪n#fgdGn҉4&x! Ď8c\w_@,q> ߯Cq٥5y[p8rmhh;aWq/{弯tA@cxzZꪞ[yt1.Tڢq2Н Gvjg^趷ڠߜ*{>59щδۅni בǟEzx_GӃ\җ&G mzLm1J_5rendstream endobj 288 0 obj<>/XObject<>>>/Annots 125 0 R>>endobj 289 0 obj<>stream xeAs0wtfc&8CZ3=䢀 Juv:c}o%z!B${E^3dl ?LXpRzGxns/`?LM# &K&)\,6g Z"=`/ǩUE0QʖV+ۮhRuF<Qb`4zRt?*݉} CЧ+\C9t\WlsU7=jz,gH1J (bD+lE%mvmiH!KLͳFRbiBkpd}%VSZq-A-P8Jod_wIW׼a^Qhn⹑nVa< ڈ^(NkwhG,fn0)jwFx.~LE2'ϔ{`I5 NV6˽G/E'nendstream endobj 290 0 obj<>/XObject<<>>>>/Annots 128 0 R>>endobj 291 0 obj<>stream xWKsH+8*6-Ƶe5d+.ŒF;32avLX/U[K_OjtC.\`8/n|7:n^_jnC`=k]+&LV'&T0޳X!܆@vz&{D"R%Cx*iKCr^ Z Scއa~H C K(&+wGK=_c!0*QsUoc=]"ȄG HnثgnǪkR%zt F(,r KCLJ=go-_q?n>))&}\@2$Έʚ)$ڈ(zFP~X#9S 'c:~Ϫz 4I }f6L[xKՖ` e^Ua3 QJe2#aZՒc ,. | }Bldh4Q\e9m)Hk pWv?yA5k abnTrPHle3:4A F=X=i.R,jTgI63yvlS6aTA,ݒ[+ 7kwTڅV8_O~Ōxm})3fRIJT[>i1aʨ@Hz-R mh_ r*'m{V$PGZ Mh)Ee q1$SmƔ&m4E[yАL [ MⅬ9Xᡂt>#=ĝEĈXeo첻  5Mh26va5 g,hQgi{=DC7DwY?kV;Չol6Hc^U=t؍٪q98-q}cnmyE[5yn80em54٠TH*F1d)5wnM/YTcE/l ٌ+չ(x_mB Qy]1\o8h-zlKϬa2|/z(8ˡ-]ڦ /ᰗ/ +~57hgendstream endobj 292 0 obj<>/XObject<<>>>>>>endobj 293 0 obj<>stream xVMo@Wr"vlN$R(4C.-ήm(خL* ̬n8`wAb| ۲G_#C3`0+FRX`K" /,f` 2GKD BR 8aǫ % B:+0wb-lwP,1TÁ(V5!N&T< @>T(]Y󘡎L>dIBЌQ~yڟoiJi?S!X j$Mxa? XU?426v)6")(6YH]X,3m>o,{!ibUi<}}w 5D<:0' Lo˾KuDZbW^%IM7M}n4YU'6e%zJ!Mf6XdkuyMo u`8};ZO:V6 gB2̢'y82')~Ιu{tUOGk:v+|07,vendstream endobj 294 0 obj<>/XObject<<>>>>/Annots 130 0 R>>endobj 295 0 obj<>stream xڭKo8 &4QO ̣z3KYkMmIs)^ْ}Xf ]~$|S"JdHbQГV2q`~& n,DP3ʕ-(_Qe6deYҕ +H, jv @Z&$sp6y"\WZ:X1fg Y*cTfCP6#@!؜jas1ͭ!8@!l!5̆ln1F1C9 Vc0[CqBBsol c0Sxln5FqC8(-и3-<`6#8!j`sq<P8[P_a*!0[x  lN5FqC Vxpc!\OϮl |`6EsC,ͭfCsBBv|CC-<P 6#8@!@jasq<P8[8a*!0[x  lN5FqC Vxpgoh2C Tc0[xln5 g r|CC-<`6#8!j`sq<P8[P̆ln1F1C9 Vc0[CqT}seҶ ^bM9}!>1 ]Oy5R_S5OψBV!LdqW(y;N/j{1'p쌰dex^_uq8fߤ։?~XV֎\pjWEYuG-^u3u0shʶ/JiPFQdfWx=z$4)ZS~8<jөC#$=؁;oV.ti6(Pmtu]T?l(QmnŮ9ubxn-r@-446!yǪt{ &w74ۉ boZ9͓¬[@΋=gZ|;hgTkӻ1[qnlu.`lNҵ T 0g+Z4I<mfLyhkXKvIYQR1y}.5: %cpO=ϚLm Tde6ɶ/Y Q˷ii%Q-2$zRo\һؔ6S mq""]O]5Ty^,=\-^ҕw/p(4MWmgs'4E"xR@$s*X|̧Գf\ab.ߵG~;"4tگ_˔,V`ӟt*l2E[r>ZLD`hѳNq"8zM#2X;j?eCg8u:h-Qw}Ej}:nqK!t>FG߸ss!J jm>7^M;T`=HVծ2tT=$.Yt N<ӾOco43y&nc֑|/ڛ+|ۖGW7iˑj.2 q PBEݩ6u~g}ST \g.jtj\t/LŚeLt ]<2\gendstream endobj 296 0 obj<>/XObject<<>>>>/Annots 132 0 R>>endobj 297 0 obj<>stream xڍQs0 =v-oVc5S;' `J-HIJxO jtE$‹ eB@ljlx<5LpTs05g|  7AҊkPu#ewRv;`'f˵A_m۟8]2XU4`$d6YBB"ECFI:TUӦwyb4tڊuĕ3#Yvkvx QrO[OCP/A+{:>o?krY(pOEW#^h3Mnh^b|a-֎ G* ߼oe铕JTACc"$zYKRzbq̒~๠r|:v)()ґCo$Y'iQ79N%Y,ǽjD4su 0s8kXI$U4,jvڰ WjKv{f(lxGKS9 ˴;gn48D[좿e폘e)VlpG(™}reSeg|>[gCgc9Ṡyݱ˻"*QR]Ǯ?]Lx:~ CLu >GgB s] DHm 2 r7H{O:nXх իL`8Φ],|1y,v_:p@؉f/?nKEds"q4~+]q5=vlendstream endobj 298 0 obj<>/XObject<<>>>>>>endobj 299 0 obj<>stream xڽKoVŅ`|?&)Ml(PBR;9$sQ'3.7Qh q;:D&}5i u9xnp2Y2%U”.'2Q,M&kiv_N@Oi`kt m6X5~\'a74^cB%-aGkivN& -$54x1Øpj L&K jP cRJ0ӘF 4&4C9I) jPLcRJ0dF 0&C9I) jPLcRJ0ӘF 4&4C9Q+ jqDi74&%5b(YRZ0,)Di 4KJkQ#b%5C9͢$Ufi L&KjP cRJ1Ә 4&4@C9I) jPLcRJ1NƯh2YQ#bR @ԀƤ5b(1)D iLJiQ#bR@Ԁƨ5hUJ&%5b(1)D iLJiQ#bR@ԀƤ5b(1)D iZiPv'+-L@ԈƤ5`(1)DiLJiQrR@ԈƤ5`(1jB ځw~?1ØR 4&4C1I) jPNcRJ1Ә 4F4@qfJ&%5b(YRZ0,)Di 4KJkQ#b%5C9͢74&%5d(1)BiLJiPCbR ԈƤ5d(1)BiZiPv+-L@ԈƤ5`(1)DiLJiQrR@ԈƤ5`(1j<{/4k{řE&bލ^MUߘm[ܞǦ_ ;R=;eyUɜ̛,iCnrh+?sE[pv^>rtD;Utc&mT,)،'ّ̉CHdc$ʆѦdi4K@I9#q4dωݐ4mȀ ?`^i2IL5c z׳h.Mћޑ>cKTfo.3ԛWMAфŮvMl;ϧ740a+ Om/{9ࡨa_޼d>J~WyMh9e'a)+]B/áw?/!QPendstream endobj 300 0 obj<>/XObject<<>>>>>>endobj 301 0 obj<>stream xڽVao0_q4) }V]?8Nlf=H ɤSP0󻃿F `ًfO×`AG0[y< f >b p<{QG~lŠ\jò֦,j@@HS=Qd1\C ɘk4Ӿ8q =5\tcr [|ۆ\X`. (lO Q֑3򀰉X@>E6g(&Tצ; #R>0EhZ,d2$-oKOcL<5mVhA&JoƙrQx7m}!6s,u)lU?lsaX&ݝ'ǹ}'GW 5?䞹d±7.mȕLk-:DƏAjw1(IO0N.͆Ξ 7+8xs#sӉu1t8/S$^:~soendstream endobj 302 0 obj<>/XObject<<>>>>>>endobj 303 0 obj<>stream xڕVnH}+jD`&̾iFHyi3vߪ68IBAN! o#' ΗUg k% vOaDvoy,lіvӟ'{z yt:߁2RALkTԐT*OL@)Of; 53ց!_KT G~_#>q1]Q"WT"- C?]gwA9  +7ʣE!,7]x9oڑCYq4޳\iHA*L8nʕF.AaQyw-^cwԲNh:m& Zq!UWV^7oz/{ үY ³J$9>u-:!Bi{X~[;4ag1Xc<"Ar(ό̉w?WHxW^eiW9  ŋ`|c>]mhۼ 0$95KkX5x{zyP̚5eIXf;[mnS5&S=I0ád$,AZxg>Qհ]܅M1kLiiJ %s9/O_d~˄[v{ZUeiwXpeTqRtFJ"0,D -jYk Ko51VYvul9 Q] ~*$S{ko GPғS__(shδϱzEK@i5sRf!OI7?a8}^SR\>n$*^Bu|_a:9 gJUQӞ5烀-9Lei+໩҈vM d;͛.F m53J}FF<tb>zXu,bendstream endobj 304 0 obj<>/XObject<<>>>>>>endobj 305 0 obj<>stream xڝVmo6_q(RlE~M\ 64@hlHxEHɶ ņ9^{9~BJ_CN;+.~^\IJ>'0La"t<'YOaX*t ,B+1KAPvoQJXprncVG]!{`E.eZBl`8z[*|xI|z8K@_Um csQ"9K# I9'd[GtVRqSLyN9/OO70_f80VZ Ծ_*SM3 bCHeBs^* Z D;:S%R#:lcd89d!l[AA:#*L$_BmP)?#iMT:C=,Ȣ[  sd&=QBNG9xOzR R;򣢙 "0,:7 \feIvw.o)/HM;ƞs>Z9\ y :) '(7I"a~4aCJcdэYZ(_ ֬ "@NjM ~_bMbD#-됔BWc|p{HZzY:s-l/Қ1 pcM18ĠVd^5n_, ﵧpU%#BT: %\O`\m9?ۼ;o3[i*GS)*)t E_^aLA58ӶdF|0J")iF})DWWBgtU,)" m<giD޺Msk,%_@6O…]t5r/pphgO']fx2NF԰_ 1MCendstream endobj 306 0 obj<>/XObject<<>>>>>>endobj 307 0 obj<>stream xڭT]o0}W\!U i(6ǾwMYBIGU6Ms<$+l1I Lؒ3"9L&}gBff臎j7$kVBFP)9x% %yʠ`+$kx3јNF`|wBRܰ%d)hc/w- ||'Wvj*t- PvVK9_Ze/%8o_t/F* =TF*aI4EIꌉNl(HK 4Jؠ۞[5WG3Uf&u\'-O2H-5ߥc~sdTEU0%֊/+k\G Ѿͻ}m ^I#-`1~]Mni^ZsVۢHrkwxlЌ5S>bpYw1._*٧T /ogpaVxAK3*nBfX)Ȕojendstream endobj 308 0 obj<>/XObject<<>>>>>>endobj 309 0 obj<>stream x=0}9l^ xC_`łb-nf/3}2G@UGElNd@uq"AKڠ;7(Ysz;3jjި8]+ U+'r!SӖK$GR>S1endstream endobj 310 0 obj<>/XObject<<>>>>>>endobj 311 0 obj<>stream xڕVn6|W,lْq9 4q%b#:]lvC[ |c/b!W0&H> <<-`wpOgb|U?.;=^Nx2QJ M%TlZ2cHH /lCleLiH`R&~kK RJ3["H(ѥ Dbh/`3`8irp.0S 0Wz^P+reNZǪ#*ՕA"c )0,Pl8RHdJi\N+>"LH}WN6 KҢUy.MQ#S&iջ^!Do6T@ZgʜrM4 TщpI8#Vjyl'԰|&~ddi&Jb&i|݁rbFp^db_>K%Fv蟓K1o{W۰hbp`D{"r4p;ĕ!ڠ زa&J1ĕ6DIj`xeeb4ky53kq8jf~kǶ-$jG "zuti]ݙ\kA*)Y߷_>Y=̯ozo7C]񾚒ǯv{?Dxf6?xdxpP qCkͰ\;T|f9| C3CqSIVX#t[ &XwmQ(i'^ ZNj! CBh@*fּ}D3Ck=lGUM^T OM^Pn;}c>},xhQ.jv-yv|/['pջ6=cs=t77IzxOR9h~6͚)ϼioK/ `s|endstream endobj 312 0 obj<>/XObject<<>>>>>>endobj 313 0 obj<>stream xڕSۊ0}W 4 )4Mr& )q?@rC(d'٘grhGCuD蹘N=|̃p#`ERdlIl y#\AD)-tf*n I6U;KbuHXm=`#\w8bUv`&,E]7<Q#յ6 Qo_@RvPFb9@m|Jp[%!,b1$vϹ.i*\ !7Ù9}Ѧc8;w}?c]438}EӋaT\?^p/T/-¸u\_&qaюv(^#];ͩQ5;VRH(;dW+{~Bz;-QGXﶰ CCIRȖAs4"YBseNNy\:BHendstream endobj 314 0 obj<>/XObject<<>>>>/Annots 135 0 R>>endobj 315 0 obj<>stream xڍWaOHίE:JI rB%NwpU'ec-׷k_o;:Bޝyߣ oB4RR1VܒE|FK|>);4?:2ф39~ai1͓㏕JV~7.o%[y74,,o:ϧ~NwlE*6t:Oed_^̺~=9Yױu˓5O‰C>^on=}}y9]W7O_y%6 ;tfJS0pv(>"RyNV% ֮ʔ[)ʬvr6m^dWj|̢R>8iyINi&l\% _&M D0&8\dץvt8m ^Yg~NWS8^.@ fE/UNeOSr&(J`kgstRxKDbZzZk:Q5_~fLQ5<=w .B0L~(HB)TS(|̈+- M_a0ɜ_d&7=/v x< BBlSy qNm6%H vl3qn#;l҆M:ڕ5vaJ{Iu<'(_f1ct=y['Y X%h7B JۯA!fE-R"C]݊(zGfkd&~nǯM<5RlJRzޣڕ\"@LNpY\B D ڍ}s;5<[kKЩQTo=YJXdZ*bA-!BhtT[{۫Z9 Zq moEۻn~YCܷ~/݆ &)/!&|e6 -{y fYP9wBanE9^7|bR7]ij)`لGendstream endobj 316 0 obj<>/XObject<<>>>>>>endobj 317 0 obj<>stream xXn7}W~rI$[M"@ڤѢ_]dTH} Jr ˙3Ck ŏ׳k,/n#y~#J< +[k6Xw)Vֵh4. iJ6~e+kjw&pֈJJ췶çk1/סs+=v+#*~RXrm]{U&Ԥng عa[%޽.f'M {6$%*0vIAˢrgK jOwB&Bb{KUN I߶R۩'bo]]u IƚZԭuZlۨI&كaZ9M9d =p ?( A[yw#ɦ\UmU7(ikO=NqB m= 둻]5FBN2F 9vh1a+4Цrl"m2Ę^<5VSfdሟ?BBOo5̍NRu4* m<ʢSЛhHzcUN$RHY琉yT wVvV:(H<`Z؆>`5x0!a;H>ZjM6T$A)*\Qה=Yy[nfsR 2ɁTl tD -HgݶA4ԕ.9lj1SGm)ozJr ZK*3(ʅt"1(ی Y/ HL930.$)3j2ұQNTDId 8}P$$ЄT$F, ܹ[svc84DA8 ]{sl RDԊ$/MW״nJo޽D8:Tzn›T 1I54;%~|=Q 4p)SQ/h5 9 Vp̓ɶrٰGw.sEKAƀJ4E{3 15QF^sU\6<<8B)wb`>/XObject<<>>>>>>endobj 319 0 obj<>stream xڝWr6}W~=#ӗXv>)hjˮDyHPDC @J,mLb^Ξ=wN]9Ip?fɎoN _ /Xwx 6Vjt®*\T%~_{~^_?أʄ쓮^d2ea`LYK+M:aGgp~ U)=%e)bhä"=W8vne$a[VXzS [HX(26PײLuUyp z֧HEz H#!V0VĂ:ݩ%@ρ7kCe|ioXWuQEQ88F,q*J{{5"w9:;S Enb-,͖#>dP 5peJ֘⹰~Z7fY(E"q_ǁҏDYdgnQE&<*[j߸PXx4UF.j<95#|$8ܙއ1Kd&^2`F9OxW j>RcGLx#eղsK 䱒H2(KWCrGs6}'{C4Fp2^Oݰm2F%dI r(x@ ]f),/o B] (0_ݧςԖNiHjXv_;#EgcƵ%'tP>Ҳ,뀻4m=t>>㤯N:)״>CflD/;y0|] d~XnGcM6?t GKg9^;oУqߺkendstream endobj 320 0 obj<>/XObject<<>>>>>>endobj 321 0 obj<>stream xUQO0+N|oCFXԁ}[7+n{oI06m9͗h3az$BJz; G`"%i|߷V WQ$$ʒuuZE)K 4a"i(}f? z!I]~S4rWo(\dBL<\F$M-rY[=?lQRUɦZ5VdӼW0tB3[ہ?f`h.7s#ΖX|C1]ƒzg@o4-bXyb-15z>u=RE5/NQ l,'fγ hendstream endobj 322 0 obj<>/XObject<<>>>>>>endobj 323 0 obj<>stream xu˱ 0`hδb{ RlMn`BZ!k['\Ⴉ!ߌ2K'2ƴ%BfҴߕGx=\VU>BO )endstream endobj 324 0 obj<>/XObject<<>>>>/Annots 137 0 R>>endobj 325 0 obj<>stream xڕW[oF~WJ؁@hR"K#5.TUV} ̘}o%((79߹ {cEObOn Sw ೫;oGDOӇz2:3{a=ض!6E-y4 #KJ[w'`ze´^+?tkyG\i}7GIh.⳺ϰ%XUo( +[bAC ~,iCg],aBfrϘJK[\QsOG{J㛎9xtHq,M1?&lsQ`CGx#Px"Fzb$mpg ɬpqGS`2rDzK]Vܫ)8*t0Uh2ca}|xλNkz3SoUZujU)lf&*ЋgHgpھgIU:@p'Mq99ϲ2;⬙ F l1F56Q4D1ƫHc*dTyi>۰Wk8\gIBUP Y)Iw,7iǻ>Mέb,:؄ؘTFSjw^2Ӑ0Vؿ.=RW e>/XObject<<>>>>>>endobj 327 0 obj<>stream xVmo"7ίK6Rvȥ˝TRn~}g %*U33<:=_n0@:?;ݬK;O0FIKybR{ )<$q旀>&0%: / 鼕KN^K i1Ʈ2^&HRJT5{f/-6[14OS$㫫R*@c ƌ g.=HaP8ᐨIRTE qp3FTJTWYk'/ Tr]Bjp>D_yYTXVĕs V)hT+6dg5Etщ4I-( 3ٺJ|]Pd~(B۾:ke'yQ;c) x7_"ܕ M㭐%詗ȯ|-@z eYEew8"L Sӕ \K>=imY+&mv0*O7M<52`fbe,놠H)dU",]2]qjԾ)|iFD37"T6`S_6z/%ݣZ(k&: N۵m26Aöx*@C_W,;T*JޫҊ"{z'3,~6]>[*j[Y+!%.NNa^[K 5>\]Ep71-qGO1"O5b^͌ {Ȍ` :i&XX|$Ux70?؋XjB#mDtIޟuiZk'y􍅏u饴F+r~ )K7G`)hOYi8n8V/_???|za|?h]nLi[, \s< Ē}:-J <Ӓ 3ɼ˩'dJOb3=-#]?p C ڋnC#Xt_n鋏tt3dd"&(m\ݸK_; endstream endobj 328 0 obj<>/XObject<<>>>>/Annots 144 0 R>>endobj 329 0 obj<>stream xڍQo@hTm{k'&0^vR"pHf;ߎ }\ 7:WaDZz#ܺ#p=7 :@Y"LS%?=7 ja\i 3lke|je%J'O}8)m^شp-k.?Xy#dρxe Q0ZX7mnJLQuze֫ c(%-U"z4FXY6;D A.4 I+j >/XObject<<>>>>/Annots 146 0 R>>endobj 331 0 obj<>stream xڽVQ6~WxKt{zntRU`\; ؄`zB"=fՊ!_ }HI+ #Z>'L$>Lp#,r!eY6nwgk{= <n@s`*]`.2`<rV@&[)N블0=ց߫a +4 ?UacM|I:qS<T o?e}4KѼ.!%9[gv [ZalI)0CPZpF%6rFh%s6L 6# pYe[܅ڽZhX`!wF_׽HrO*w@M ؠDȅvc1<\-88Fzlyr@Q 4 I4[+̰lifڅwU)HP0;:5E灭ot.\("b` 4^Ź 1엂 =v|*ι5%e݋MZh}6gItط#^]sX[@۔^7;^΅1~Bך]DINu_UMLܖHn1> %.gͨ?dR+e/&ӜGH`Qq?hIoyytS=.8!ۮ Du[;ow$BJJi:YRҞkh~DdW?#DN]# ßE~Ћ>̬i5=HQukw_XNvu 0"9vמvR!g%U1$^R,k)35eoo25O*)+J Y6r1)MQ8XF(Z֮smݏ[ <0I`$^'u$YFn~Cendstream endobj 332 0 obj<>/XObject<<>>>>/Annots 149 0 R>>endobj 333 0 obj<>stream xUR]o0}W))IцjhU5/oP)ۿuZ*Elݯs"b] 1#='/ 9ƞrt:}N[]OY2d]do/dqI5d 4 ]ebѣ&RJUaڽ&TX-w'9'U=Gp<Ӏ4ɭPsn>/XObject<<>>>>/Annots 155 0 R>>endobj 335 0 obj<>stream xڥV[s8~W`;34Y-tNb m¿#c4&3ss{˅>p9oAzA+4{.>A'ybYswyq*\3+hv#p嶅+p O h vic+)r-䖜eTdjl|:N[")Ss|I/G7 Qo $4+:^gIAs3I*Zr"]U]\OAp4Z̚I6X@144)T r,涴_bʳLHlci@|s rqYICV 6FmU7}g,+̓ km9UrB&;U2ʽn0(U\: Cu&mI8,Q󔚳5{3{I.lEE"1lͣ@v[ ѶT3ǜǡ 8zMu v/WnYM"Il(cRgF" p84n9^@Y5Rc#IybCԅQ^@N e[^47"J[roˁ{}} > dtvdf&L&-՛gnڬ 4iWab Wά'\9j)p?} ]w5hD=rQv>,# L*h{8%3NKyn\tnOZendstream endobj 336 0 obj<>/XObject<<>>>>/Annots 161 0 R>>endobj 337 0 obj<>stream xڕVmsFίA2"@ɔ4.Rɔ~8F)w'}w no_=}y0 ì>-t)xwAL泩 -\]jqmg YV"f{ިݮF p ѢPPZR`whhMD\LvrUi^}nVfǕHj ҇7\ ~&ԲR?‘~'X:!V,sbVlS@ ƅ`h0X,'-RTC2JV@Q'C,sNhĬY3h9.ePp'-*Cr+J/a5y!,CKMUg:*#EN*st/<%8h. =2`ɔqjƪBVP|-nIX*$PG8IEj(`Y ( o3 )Aƭ !nQVȍsJrb!:36bw8he]M`3z:xAGX͜"]2 cw[78reYtwr<$gߊT^]ƙZA 픰z߻JU:n搹[Cw}S44~/iPD ((jTyTS,17bGZnK{ `6gԘ9>,>K_2_`q we|\ѿ0_}cʪiw%̚8fRyReg9ؽFPgҰLz h%8nYIz;^ VVOͽr;g˔]LƼ>/XObject<<>>>>>>endobj 339 0 obj<>stream xVN@}WL)HA"n"R*/8ubR̙s O?8(켞vA_n/.#0|NrܠS=өK#|ra/\{Q۝.t "I(}+N@eGp Dց_ \|DF),+Y-O2*Q;OZ^^-L`2a !2ƖK5LzXa@ZxTBx QfQ|N_qn_  "Nu.h(X Ō+lQj8)[Z#[JJhWV YsRGlI s Kd99J;krֽuM/|Cu}Cucdrۣ{Vڈ\@5w}" o%PojbiG3#VwYf_ cA}4n {ͭAG U ]8fʹEtԶ ;4mUAuJ+{vU(\MwӾS1-iXV*O4fݎg+-+tgyO+3֑Qn,f4_7uEͶ{:P )>9/cxfEnO$o Gd5R\ bMendstream endobj 340 0 obj<>/XObject<<>>>>>>endobj 341 0 obj<>stream xVMs0+f!LOmɩBjD% +&iv`}[Y^c07]>Ľq0GmA88 fęItGafQJ<2Y" kV#a^`aHC<Ȍ{*rb+Ʉfh@pI\-. .%U .b fO8J4$4L#,R%hp:i~t$w'!=\J$HYG4ҒgR7V+  9)d K7rP94~ţ.s3MmZ&K_Xa:^<8%̙L}j.W~\m觲 t5ԫ!ґ%ue=]4mWxj 8* KOfзOܑI-N wL{5 >/XObject<<>>>>>>endobj 343 0 obj<>stream xڽUMo@+JpÆTU@T-xǰA.6$J+$[g޼7~ a@!LGoqg (x5|C Na[\"a7b. kdpX(}FahY;.f>IVrj.g…㪴BWLnFa2P6GoQZR{%ʅĊ-.{MI2$|B U N˪A^1eef:XZ[d,9o|V>YSIpR6A;7A}_ hD/ڶgIGNe fJZޙ4Ė;77At3I8LUjwy%;a70;aktg8?F"&ʳ \yk4ȅfqg/ endstream endobj 344 0 obj<>/XObject<<>>>>>>endobj 345 0 obj<>stream xWQo9~W* HxDV,뮽pܯ^`]ҤRk3}{o |^Mi!7RnԪӡoCendstream endobj 346 0 obj<>/XObject<<>>>>>>endobj 347 0 obj<>stream xڽVMo7WA$Zk%;ͩ}JRЅrwI0jeE iEg޼y3ԗΈxh>tJ !nCWw)yMtF,bM hի kʧU?/ &3ưmLU7o3R_m^bURZy#lNUQ^5B! h/' ][7n źTO"WB7˰d?k]EvX+k,<Z$Jz:L#5ryLefZ/> k S;9̎H[U0<Fyʄ-8pD(dkqEp*WeF:@fѥ<ă˪mXtL'Ʉ]Zǻ6,,ŭQ=aDoluq~s{\0z8!4MYxSZfp߮rk!L{t:A7O֌I2ӧ8l &8Xw+BLycUyv_endstream endobj 348 0 obj<>/XObject<<>>>>>>endobj 349 0 obj<>stream xڭUMo@+FͅH1[J)prY1ޥ}g_Dxg޼fB0&> ĝ(Chʝg;ps~ (q_o><\=:bXA aVT=@h0SjT&9d ZfԤm![\hCPWxӿƇF::.WÌ'!5Y_Pə,*Z Nʎ?! c#Xa;&`OM CO|8fKFwȘ&i-clzmWIР*܌8r6H0een05'Hݵ#)b$Qy.*^3%G^lvxT+l#_.ƚ;9\sF;|evjhOWO7=OK:jesL򸱺¹mn.;R|S:rU}+<1Aʢzj!&s8{~sǾu%/o!endstream endobj 350 0 obj<>endobj 351 0 obj<>endobj 352 0 obj<>endobj 353 0 obj<>endobj 354 0 obj<>endobj 355 0 obj<>endobj 356 0 obj<>endobj 357 0 obj<>endobj 358 0 obj<>endobj 359 0 obj<>endobj 360 0 obj<>endobj 361 0 obj<>endobj 362 0 obj<>endobj 363 0 obj<>endobj 364 0 obj<>endobj 365 0 obj<>endobj 366 0 obj<>endobj 367 0 obj<>endobj 368 0 obj<>endobj 369 0 obj<>endobj 370 0 obj<>endobj 371 0 obj<>endobj 372 0 obj<>endobj 373 0 obj<>endobj 374 0 obj<>endobj 375 0 obj<>endobj 376 0 obj<>endobj 377 0 obj<>endobj 378 0 obj<>endobj 379 0 obj<>endobj 380 0 obj<>endobj 381 0 obj<>endobj 382 0 obj<>endobj 383 0 obj<>endobj 384 0 obj<>endobj 385 0 obj<>endobj 386 0 obj<>endobj 387 0 obj<>endobj 388 0 obj<>endobj 389 0 obj<>endobj 390 0 obj<>endobj 391 0 obj<>endobj 392 0 obj<>endobj 393 0 obj<>endobj 394 0 obj<>endobj 395 0 obj<>1<>2<>4<>8<>12<>18<>24<>32<>34<>38<>46<>]>>>>endobj xref 0 396 0000000000 65535 f 0000000015 00000 n 0000000487 00000 n 0000001808 00000 n 0000046396 00000 n 0000046576 00000 n 0000047615 00000 n 0000140136 00000 n 0000140319 00000 n 0000141358 00000 n 0000219853 00000 n 0000220042 00000 n 0000221082 00000 n 0000312298 00000 n 0000312494 00000 n 0000313534 00000 n 0000395340 00000 n 0000395539 00000 n 0000396579 00000 n 0000482798 00000 n 0000482980 00000 n 0000484023 00000 n 0000571248 00000 n 0000571435 00000 n 0000572486 00000 n 0000662556 00000 n 0000662748 00000 n 0000663791 00000 n 0000693988 00000 n 0000694171 00000 n 0000695215 00000 n 0000695349 00000 n 0000695485 00000 n 0000695628 00000 n 0000695774 00000 n 0000695924 00000 n 0000696057 00000 n 0000696195 00000 n 0000696336 00000 n 0000696456 00000 n 0000699884 00000 n 0000708369 00000 n 0000717507 00000 n 0000781829 00000 n 0000781930 00000 n 0000782032 00000 n 0000782134 00000 n 0000782236 00000 n 0000782338 00000 n 0000782440 00000 n 0000782541 00000 n 0000782643 00000 n 0000782745 00000 n 0000782847 00000 n 0000782949 00000 n 0000783051 00000 n 0000783152 00000 n 0000783254 00000 n 0000783356 00000 n 0000783458 00000 n 0000783560 00000 n 0000783661 00000 n 0000783763 00000 n 0000783865 00000 n 0000783967 00000 n 0000784068 00000 n 0000784170 00000 n 0000784272 00000 n 0000784374 00000 n 0000784476 00000 n 0000784578 00000 n 0000784680 00000 n 0000784782 00000 n 0000784884 00000 n 0000784986 00000 n 0000785087 00000 n 0000785189 00000 n 0000785290 00000 n 0000785392 00000 n 0000785493 00000 n 0000785595 00000 n 0000785697 00000 n 0000785799 00000 n 0000785901 00000 n 0000786002 00000 n 0000786103 00000 n 0000786203 00000 n 0000786520 00000 n 0000786622 00000 n 0000786724 00000 n 0000786826 00000 n 0000786928 00000 n 0000787030 00000 n 0000787132 00000 n 0000787234 00000 n 0000787336 00000 n 0000787408 00000 n 0000787468 00000 n 0000787552 00000 n 0000787611 00000 n 0000787695 00000 n 0000787751 00000 n 0000787837 00000 n 0000787888 00000 n 0000787974 00000 n 0000788026 00000 n 0000788112 00000 n 0000788180 00000 n 0000788266 00000 n 0000788329 00000 n 0000788382 00000 n 0000788469 00000 n 0000788572 00000 n 0000788605 00000 n 0000788666 00000 n 0000788753 00000 n 0000788778 00000 n 0000788830 00000 n 0000788917 00000 n 0000788942 00000 n 0000789045 00000 n 0000789070 00000 n 0000789173 00000 n 0000789275 00000 n 0000789308 00000 n 0000789411 00000 n 0000789436 00000 n 0000789539 00000 n 0000789641 00000 n 0000789674 00000 n 0000789777 00000 n 0000789802 00000 n 0000789905 00000 n 0000789930 00000 n 0000789993 00000 n 0000790080 00000 n 0000790105 00000 n 0000790206 00000 n 0000790231 00000 n 0000790333 00000 n 0000790436 00000 n 0000790539 00000 n 0000790642 00000 n 0000790716 00000 n 0000790802 00000 n 0000790859 00000 n 0000790962 00000 n 0000790987 00000 n 0000791061 00000 n 0000791147 00000 n 0000791172 00000 n 0000791274 00000 n 0000791377 00000 n 0000791480 00000 n 0000791554 00000 n 0000791640 00000 n 0000791689 00000 n 0000791790 00000 n 0000791891 00000 n 0000791993 00000 n 0000792067 00000 n 0000792153 00000 n 0000792202 00000 n 0000792236 00000 n 0000792270 00000 n 0000793632 00000 n 0000793675 00000 n 0000793718 00000 n 0000793761 00000 n 0000793804 00000 n 0000793847 00000 n 0000793890 00000 n 0000793933 00000 n 0000793976 00000 n 0000794019 00000 n 0000794062 00000 n 0000794105 00000 n 0000794148 00000 n 0000794191 00000 n 0000794234 00000 n 0000794277 00000 n 0000794320 00000 n 0000794363 00000 n 0000794406 00000 n 0000794449 00000 n 0000794492 00000 n 0000794535 00000 n 0000794578 00000 n 0000794621 00000 n 0000794664 00000 n 0000794707 00000 n 0000794750 00000 n 0000794793 00000 n 0000794836 00000 n 0000794879 00000 n 0000794922 00000 n 0000794965 00000 n 0000795008 00000 n 0000795051 00000 n 0000795094 00000 n 0000795137 00000 n 0000795180 00000 n 0000795223 00000 n 0000795266 00000 n 0000795309 00000 n 0000795352 00000 n 0000795395 00000 n 0000795438 00000 n 0000795481 00000 n 0000795524 00000 n 0000795567 00000 n 0000795610 00000 n 0000795653 00000 n 0000795696 00000 n 0000795739 00000 n 0000795782 00000 n 0000795825 00000 n 0000795868 00000 n 0000795911 00000 n 0000795954 00000 n 0000795997 00000 n 0000796040 00000 n 0000796083 00000 n 0000796126 00000 n 0000796169 00000 n 0000796212 00000 n 0000796255 00000 n 0000796298 00000 n 0000796341 00000 n 0000796384 00000 n 0000796427 00000 n 0000796470 00000 n 0000796513 00000 n 0000796556 00000 n 0000796599 00000 n 0000796642 00000 n 0000796685 00000 n 0000796728 00000 n 0000796771 00000 n 0000796814 00000 n 0000796857 00000 n 0000796900 00000 n 0000796943 00000 n 0000796986 00000 n 0000797029 00000 n 0000797072 00000 n 0000797535 00000 n 0000797738 00000 n 0000798035 00000 n 0000798206 00000 n 0000798804 00000 n 0000798989 00000 n 0000800594 00000 n 0000800743 00000 n 0000800948 00000 n 0000801164 00000 n 0000802043 00000 n 0000802250 00000 n 0000803218 00000 n 0000803389 00000 n 0000804026 00000 n 0000804175 00000 n 0000804403 00000 n 0000804589 00000 n 0000805916 00000 n 0000806107 00000 n 0000809905 00000 n 0000810101 00000 n 0000810889 00000 n 0000811038 00000 n 0000811260 00000 n 0000811466 00000 n 0000812785 00000 n 0000812986 00000 n 0000814143 00000 n 0000814369 00000 n 0000815742 00000 n 0000815968 00000 n 0000817058 00000 n 0000817259 00000 n 0000818214 00000 n 0000818363 00000 n 0000818593 00000 n 0000818784 00000 n 0000819902 00000 n 0000820093 00000 n 0000821305 00000 n 0000821496 00000 n 0000822434 00000 n 0000822672 00000 n 0000823221 00000 n 0000823438 00000 n 0000824661 00000 n 0000824842 00000 n 0000825561 00000 n 0000825767 00000 n 0000827623 00000 n 0000827819 00000 n 0000828679 00000 n 0000828870 00000 n 0000830764 00000 n 0000830945 00000 n 0000831756 00000 n 0000831937 00000 n 0000833041 00000 n 0000833222 00000 n 0000834559 00000 n 0000834740 00000 n 0000835461 00000 n 0000835610 00000 n 0000835836 00000 n 0000836017 00000 n 0000837153 00000 n 0000837323 00000 n 0000837885 00000 n 0000838071 00000 n 0000839641 00000 n 0000839812 00000 n 0000841485 00000 n 0000841666 00000 n 0000843647 00000 n 0000843806 00000 n 0000844213 00000 n 0000844373 00000 n 0000844570 00000 n 0000844756 00000 n 0000845986 00000 n 0000846157 00000 n 0000847320 00000 n 0000847506 00000 n 0000848203 00000 n 0000848389 00000 n 0000849486 00000 n 0000849661 00000 n 0000850141 00000 n 0000850337 00000 n 0000851483 00000 n 0000851669 00000 n 0000852729 00000 n 0000852900 00000 n 0000853813 00000 n 0000853973 00000 n 0000854677 00000 n 0000854837 00000 n 0000855541 00000 n 0000855712 00000 n 0000856760 00000 n 0000856941 00000 n 0000858052 00000 n 0000858233 00000 n 0000859097 00000 n 0000859153 00000 n 0000859252 00000 n 0000859390 00000 n 0000859492 00000 n 0000859600 00000 n 0000859711 00000 n 0000859832 00000 n 0000859929 00000 n 0000860083 00000 n 0000860177 00000 n 0000860293 00000 n 0000860423 00000 n 0000860537 00000 n 0000860628 00000 n 0000860775 00000 n 0000860869 00000 n 0000860988 00000 n 0000861104 00000 n 0000861209 00000 n 0000861376 00000 n 0000861468 00000 n 0000861590 00000 n 0000861685 00000 n 0000861847 00000 n 0000861955 00000 n 0000862062 00000 n 0000862164 00000 n 0000862281 00000 n 0000862414 00000 n 0000862525 00000 n 0000862629 00000 n 0000862736 00000 n 0000862838 00000 n 0000862995 00000 n 0000863090 00000 n 0000863248 00000 n 0000863372 00000 n 0000863524 00000 n 0000863614 00000 n 0000863724 00000 n 0000863833 00000 n 0000863925 00000 n 0000864066 00000 n 0000864172 00000 n 0000864274 00000 n trailer <<17c2c90357afd4f014cd0e05e2f4b2da>]>> startxref 864665 %%EOF jimjag-epm-84910c6/doc/epm.1000066400000000000000000000137531521151356300154350ustar00rootroot00000000000000.\" .\" Manual page for the ESP Package Manager (EPM). .\" .\" Copyright © 2020 by Jim Jagielski .\" Copyright © 1999-2020 by Michael R Sweet .\" Copyright © 1999-2008 by Easy Software Products, all rights reserved. .\" .\" Licensed under the Apache License, Version 2.0 (the "License"); .\" you may not use this file except in compliance with the License. .\" You may obtain a copy of the License at .\" .\" http://www.apache.org/licenses/LICENSE-2.0 .\" .\" Unless required by applicable law or agreed to in writing, software .\" distributed under the License is distributed on an "AS IS" BASIS, .\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. .\" See the License for the specific language governing permissions and .\" limitations under the License. .\" .TH epm 1 "ESP Package Manager" "20 November 2020" "Jim Jagielski" .SH NAME epm \- create software packages. .SH SYNOPSIS .B epm [ .B \-a .I architecture ] [ .B \-f .I format ] [ .B \-g ] [ .B \-k ] [ .B \-m .I name ] [ \fB\-n\fR[\fBmrs\fR] ] [ .B \-s .I setup.ext ] [ .B \-\-depend ] [ .B \-\-help ] [ .B \-\-keep\-files ] [ .B \-\-output\-dir .I directory ] [ .B \-\-setup\-image .I setup.ext ] [ .B \-\-setup\-program .I /foo/bar/setup ] [ .B \-\-setup\-types .I setup.types ] [ .B \-\-uninstall\-program .I /foo/bar/uninst ] [ .B \-v ] [ .I name=value \... .I name=value ] .I product [ .I listfile ] .SH DESCRIPTION .BR epm (1) generates software packages complete with installation, removal, and (if necessary) patch scripts. Unless otherwise specified, the files required for \fIproduct\fR are read from a file named "\fIproduct\fR.list". .SH OPTIONS The following options are recognized: .TP 5 \fB\-a \fIarchitecture\fR Specifies the actual architecture for the software. Without this option the generic processor architecture is used ("intel", "sparc", "mips", etc.) .TP 5 \fB\-f bsd\fR Generate a BSD distribution suitable for installation on a FreeBSD, NetBSD, or OpenBSD system. .TP 5 \fB\-f deb\fR Generate a Debian distribution suitable for installation on a Debian-based Linux system. .TP 5 \fB\-f native\fR Generate a native distribution. This uses \fIdeb\fR or \fIrpm\fR for Linux, \fIbsd\fR for FreeBSD, NetBSD, and OpenBSD, and \fImacos\fR for macOS. All other operating systems default to the \fIportable\fR format. .TP 5 \fB\-f macos\fR .TP 5 \fB\-f macos\-signed\fR Generate a macOS software package. The \fImacos\-signed\fR format uses the signing identity in the EPM_SIGNING_IDENTITY environment variable. .TP 5 \fB\-f portable\fR Generate a portable distribution based on shell scripts and tar files. The resulting distribution is installed and removed the same way on all operating systems. [default] .TP 5 \fB\-f rpm\fR .TP 5 \fB\-f rpm\-signed\fR Generate a Red Hat Package Manager ("RPM") distribution suitable for installation on an RPM-based Linux system. The \fIrpm\-signed\fR format uses the GPG private key you have defined in the ~/.rpmmacros file. .TP 5 \fB\-g\fR Disable stripping of executable files in the distribution. .TP 5 \fB\-k\fR Keep intermediate (spec, etc.) files used to create the distribution in the distribution directory. .TP 5 \fB\-m \fIname\fR Specifies the platform name as a string. The default is to use the auto-generated name from the \fI\-n\fR option. .TP 5 \fB\-n\fR[\fImrs\fR] Specifies the operating system and machine information that is included in the package name. Distributions normally are named "product-version-system-release-machine.ext" and "product-version-system-release-machine-patch.ext" for patch distributions. The "system-release-machine" information can be customized or eliminated using the appropriate trailing letters. Using \fI-n\fR by itself will remove the "system-release-machine" string from the filename entirely. The letter 'm' includes the architecture (machine). The letter 'r' includes the operating system version (release). The letter 's' includes the operating system name. .TP 5 \fB\-v\fR Increases the amount of information that is reported. Use multiple v's for more verbose output. .TP 5 \fB\-\-depend\fR Lists the dependent (source) files for all files in the package. .TP 5 \fB\-\-output\-dir \fIdirectory\fR Specifies the directory for output files. The default directory is based on the operating system, version, and architecture. .TP 5 \fB\-s \fIsetup.ext\fR .TP 5 \fB\-\-setup\-image \fIsetup.ext\fR Include the ESP Software Wizard with the specified image file with the distribution. This option is currently only supported by portable distributions. .TP 5 \fB\-\-setup\-program \fI/foo/bar/setup\fR Specifies the setup executable to use with the distribution. This option is currently only supported by portable distributions. .TP 5 \fB\-\-setup\-types \fIsetup.types\fR .LP Specifies the \fIsetup.types\fR file to include with the distribution. This option is currently only supported by portable distributions. .TP 5 \fB\-\-uninstall\-program \fI/foo/bar/uninst\fR Specifies the uninst executable to use with the distribution. This option is currently only supported by portable distributions. .SH ENVIRONMENT The following environment variables are supported by \fBepm\fR: .TP 5 .B EPM_SIGNING_IDENTITY The common name that should be used when signing a package. .SH LIST FILES The EPM list file format is now described in the \fIepm.list(5)\fR man page. .SH SEE ALSO .BR epminstall (1), .BR mkepmlist (1), .BR epm.list (5), .BR setup (1). .SH COPYRIGHT Copyright \[co] 1999-2020 by Michael R Sweet, All Rights Reserved. Copyright \[co] 2020 by Jim Jagielski, All Rights Reserved. .LP Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at .LP http://www.apache.org/licenses/LICENSE-2.0 .LP Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. jimjag-epm-84910c6/doc/epm.html000066400000000000000000000153631521151356300162400ustar00rootroot00000000000000 epm(1)

    Debian Developers' Corner
     
    +
    http://techpubs.sgi.com/
    +
    IRIX Documentation On-Line +
     
    http://www.rpm.org/
    The Red Hat Package Manager home page.
     
    +
    http://docs.sun.com/
    +
    Solaris Documentation On-Line +
     

    Help Me Improve This Book!

    I've done my best to ensure that this book is both accurate and @@ -290,6 +296,13 @@ https://www.cups.org/) in 1997, the initial goal was to add support Re- placesConfig FilesMap FilesUn- install +installp +AIXYes +NoNo +NoYes +YesNo +NoNo +Yes pkg_add FreeBSDYes Yes2NoYes YesYes YesYes NoYes +depot +HP-UXYes +NoYes +YesYes +YesNo +YesYes +Yes +inst +IRIXYes +NoYes +YesYes +YesYes +YesYes +Yes Install.app macOSYes NoNo @@ -320,6 +347,13 @@ NoYes NoNo NoNo No +pkgadd +SolarisYes +NoYes +NoYes +YesNo +YesYes +Yes rpm CentOS
    Red Hat @@ -328,6 +362,22 @@ CentOS ALIGN="CENTER">YesYes Yes NoYes +YesYes +NoYes +NoYes +setld +Tru64 UNIXYes +NoNo +NoYes +YesNo +NoNo +Yes +slackware +Slackware LinuxYesNoNo +No +YesYes +NoNo NoYes

      @@ -541,11 +591,18 @@ Installing EPM documentation in /usr/local/share/doc/epm + + + + +
      Table 2.1: Operating System Name Abbreviations
      Operating SystemName
      AIXaix
      Compaq Tru64 UNIX +
      Digital UNIX +
      OSF/1
      tru64
      FreeBSDfreebsd
      HP-UXhpux
      IRIXirix
      Linuxlinux
      macOSosx
      NetBSDnetbsd
      OpenBSDopenbsd
      Solarissolaris
      @@ -554,6 +611,8 @@ Installing EPM documentation in /usr/local/share/doc/epm + + @@ -585,15 +644,27 @@ Installing EPM documentation in /usr/local/share/doc/epm
      Table 2.2: Processor Architecture Abbreviations
      Processor(s)Abbreviation
      Compaq Alphaalpha
      HP Precision Architecturehppa
      INTEL 80x86intel
      INTEL 80x86 w/64bit Extensionsx86_64
      MIPS RISCmips
      + + + + +
      Table 2.3: Native Operating System Formats
      Operating SystemFormatCommand
      AIXaixinstallp -d +directory epm
      Compaq Tru64 UNIX +
      Digital UNIX +
      OSF/1
      setldsetld -a + directory
      FreeBSD
      NetBSD
      OpenBSD
      bsdcd directory
      pkg_add epm
      HP-UXdepotswinstall + -f directory
      IRIXinstswmgr -f + directory
      Linuxrpmrpm -i directory/epm-4.1.rpm
      macOSosxopen directory/epm-4.1.pkg
      Solarispkgpkgadd -d + directory epm

      @@ -684,6 +755,15 @@ f 0444 root sys /usr/share/doc/foo/foo.html foo.html if your package includes developer files, you might provide them as a subpackage so that users that will not be developing add-ons to your software can omit them from the installation.

      +
      + + +
      Note: +
      Subpackages are implemented as native subsets of the main package + for the AIX, HPUX, IRIX, Solaris, and Tru64 formats and as separate + packages that depend on the main (parent) package for all other + formats.
      +

      To define a subpackage, use the %subpackage directive followed by a %description directive:

      @@ -770,13 +850,20 @@ Figure 3.1). To include the setup program in your distributions,
       

      The format option can be one of the following keywords:

        +
      • aix - AIX software packages.
      • bsd - FreeBSD, NetBSD, or OpenBSD software packages.
      • +
      • depot or swinstall - HP-UX software + packages.
      • dpkg - Debian software packages.
      • -
      • native - "Native" software packages (RPM, etc.) for the - platform.
      • +
      • inst or tardist - IRIX software packages.
      • +
      • native - "Native" software packages (RPM, INST, DEPOT, + PKG, etc.) for the platform.
      • osx - macOS software packages.
      • +
      • pkg - Solaris software packages.
      • portable - Portable software packages (default).
      • rpm - Red Hat software packages.
      • +
      • setld - Tru64 (setld) software packages.
      • +
      • slackware - Slackware software packages.

      Everything in the software list file stays the same - you just use the -f option to select the format. For example, to build @@ -792,10 +879,22 @@ epm -f rpm epm Portable Distribution", the default output directory is based on the operating system name, version, and architecture. Each package format will leave different files in the output directory.

      +

      AIX Package Files

      +

      AIX packages are contained in a file called name.bff, + where "name" is the product/package name you supplied on the + command-line.

      BSD Package Files

      BSD packages are contained in a file called name.tgz, where "name" is the product/package name you supplied on the command-line.

      +

      HP-UX Package Files

      +

      HP-UX packages are contained in two files called name.depot.gz + and name.depot.tgz, where "name" is the product/package name + you supplied on the command-line. The name.depot.gz file can + be supplied directly to the swinstall(1m) command, while + the name.depot.tgz file contains a compressed tar(1) + archive that can be used to install the software from CD-ROM or network + filesystem.

      Debian Package Files

      Debian packages are contained in a file called name.deb or name.deb.tgz when there are subpackages, where "name" is the @@ -803,6 +902,10 @@ epm -f rpm epm name.deb.tgz file contains a compressed tar archive containing name.deb and name-subpackage.deb files that can be installed from CD-ROM, disk, or network filesystem.

      +

      IRIX Package Files

      +

      IRIX packages are contained in a file called name.tardist, + where "name" is the product/package name you supplied on the + command-line.

      macOS Package Files

      macOS packages are contained in a file called name.dmg, where "name" is the product/package name you supplied on the @@ -814,6 +917,22 @@ epm -f rpm epm name.rpm.tgz file contains a compressed tar archive containing name.rpm and name-subpackage.rpm files that can be installed from CD-ROM, disk, or network filesystem.

      +

      Slackware Package Files

      +

      Slackware packages are contained in a file called name.tgz +, where "name" is the product/package name you supplied on the + command-line.

      +

      Solaris Package Files

      +

      Solaris packages are contained in two files called name.pkg.gz + and name.pkg.tgz, where "name" is the product/package name + you supplied on the command-line. The name.pkg.gz file is a + compressed package file that can be used directly with the +pkgadd(1m) command, while the name.pkg.tgz file is a + compressed tar archive that can be used to install the + software from CD-ROM, disk, or network filesystem.

      +

      Tru64 Package Files

      +

      Tru64 packages are contained in a file called name.tar.gz, + where "name" is the product/package name you supplied on the + command-line.


      4 - Advanced Packaging with EPM

      This chapter describes the advanced packaging features of EPM.

      @@ -836,17 +955,29 @@ epm -f rpm epm 4.1: Dependency Support Format%incompat%provides%replaces %requires +aixNo +NoYesYes bsdYes NoNoYes debYes Yes1YesYes +instYes +NoYesYes osxNo NoNoNo +pkgYes +NoNoYes portableYes YesYesYes rpmYes YesNoYes +setldNo +NoNoNo +slackwareNo +NoNoNo +swinstallNo +NoYesYes
        @@ -917,21 +1048,39 @@ Table 4.2 shows the support for scripts in each package format.

        %postinstall%prepatch %postpatch%preremove %postremove +aixYes +YesNoNo +YesYes bsdNo YesNoNo YesNo debYes YesNoNo YesYes +instYes +YesNoNo +YesYes osxYes YesNoNo NoNo +pkgYes +YesNoNo +YesYes portableYes YesYesYes YesYes rpmYes YesNoNo YesYes +setldYes +YesNoNo +YesYes +slackwareNo +YesNoNo +NoNo +swinstallYes +YesNoNo +YesYes

         

        @@ -1130,6 +1279,18 @@ Section: misc Priority: extra EOF +

        PKG Literal Data

        +

        PKG packages support request files that are used to do batch + installations when installation commands require user input. The +%literal(request) directive can be used to provide this user + input:

        +
        +%literal(request) <<EOF
        +John Doe
        +1 Any Lane
        +Forest Lawn, OH 12345
        +EOF
        +

        RPM Literal Data

        RPM packages support numerous attributes in the "spec" file that control how the package is created and what metadata is included with @@ -1519,23 +1680,41 @@ product.list".

        Specifies the actual architecture for the software. Without this option the generic processor architecture is used ("intel", "sparc", "mips", etc.)
        +
        -f aix
        +
        Generate an AIX distribution suitable for + installation on an AIX system.
        -f bsd
        Generate a BSD distribution suitable for installation on a FreeBSD, NetBSD, or OpenBSD system.
        -f deb
        Generate a Debian distribution suitable - for installation on a Debian-based Linux system.
        + for installation on a Debian Linux system. +
        -f inst
        +
        +
        -f tardist
        +
        Generate an IRIX distribution suitable + for installation on an system running IRIX.
        +
        -f lsb
        +
        +
        -f lsb-signed
        +
        Generate RPM packages for LSB-conforming + systems. The lsb-signed format uses the GPG private key you have + defined in the ~/.rpmmacros file.
        -f native
        Generate a native distribution. This uses - deb or rpm for Linux, bsd for FreeBSD, NetBSD, and - OpenBSD, and macos for macOS. All other operating systems - default to the portable format.
        + rpm
        for Linux, inst for IRIX, pkg for Solaris, + swinstall for HP-UX, bsd for FreeBSD, NetBSD, and OpenBSD, + and osx for macOS. All other operating systems default to the + portable format.
        -f macos
        -f macos-signed
        Generate a macOS software package. The macos-signed format uses the signing identity in the EPM_SIGNING_IDENTITY environment variable.
        +
        -f pkg
        +
        Generate an AT&T software package. These + are used primarily under Solaris.
        -f portable
        Generate a portable distribution based on shell scripts and tar files. The resulting distribution is installed @@ -1547,6 +1726,16 @@ product.list". ("RPM") distribution suitable for installation on an RPM-based Linux system. The rpm-signed format uses the GPG private key you have defined in the ~/.rpmmacros file.
        +
        -f setld
        +
        Generate a Tru64 (setld) software + distribution.
        +
        -f slackware
        +
        Generate a Slackware Linux software + distribution.
        +
        -f swinstall
        +
        +
        -f depot
        +
        Generate a HP-UX software distribution.
        -g
        Disable stripping of executable files in the distribution.
        diff --git a/tmp/epm/doc/epm.html b/./epm/doc/epm.html index 893d7c7..bb873b9 100644 --- a/tmp/epm/doc/epm.html +++ b/./epm/doc/epm.html @@ -70,25 +70,44 @@ The following options are recognized:
        -a architecture
        Specifies the actual architecture for the software. Without this option the generic processor architecture is used ("intel", "sparc", "mips", etc.) +
        -f aix +
        Generate an AIX distribution suitable for installation on an AIX system.
        -f bsd
        Generate a BSD distribution suitable for installation on a FreeBSD, NetBSD, or OpenBSD system.
        -f deb -
        Generate a Debian distribution suitable for installation on a Debian-based Linux system. +
        Generate a Debian distribution suitable for installation on a Debian Linux system. +
        -f inst +
        -f tardist +
        Generate an IRIX distribution suitable for installation on an system running IRIX. +
        -f lsb +
        -f lsb-signed +
        Generate RPM packages for LSB-conforming systems. +The lsb-signed format uses the GPG private key you have defined in the ~/.rpmmacros file.
        -f native
        Generate a native distribution. -This uses deb or rpm for Linux, bsd for FreeBSD, NetBSD, and OpenBSD, and macos for macOS. +This uses rpm for Linux, inst for IRIX, pkg for Solaris, swinstall for HP-UX, bsd for FreeBSD, NetBSD, and OpenBSD, and osx for macOS. All other operating systems default to the portable format.
        -f macos
        -f macos-signed
        Generate a macOS software package. The macos-signed format uses the signing identity in the EPM_SIGNING_IDENTITY environment variable. +
        -f pkg +
        Generate an AT&T software package. +These are used primarily under Solaris.
        -f portable
        Generate a portable distribution based on shell scripts and tar files. The resulting distribution is installed and removed the same way on all operating systems. [default]
        -f rpm
        -f rpm-signed -
        Generate a Red Hat Package Manager ("RPM") distribution suitable for installation on an RPM-based Linux system. +
        Generate a Red Hat Package Manager ("RPM") distribution suitable for installation on a Red Hat Linux system. The rpm-signed format uses the GPG private key you have defined in the ~/.rpmmacros file. +
        -f setld +
        Generate a Tru64 (setld) software distribution. +
        -f slackware +
        Generate a Slackware Linux software distribution. +
        -f swinstall +
        -f depot +
        Generate a HP-UX software distribution.
        -g
        Disable stripping of executable files in the distribution.
        -k diff --git a/./epm/doc/epm.list.man b/./epm/doc/epm.list.man new file mode 100644 index 0000000..5d152fe --- /dev/null +++ b/./epm/doc/epm.list.man @@ -0,0 +1,295 @@ +.\" +.\" Manual page for the ESP Package Manager (EPM) list file format. +.\" +.\" Copyright 1999-2017 by Michael R Sweet +.\" Copyright 1999-2010 by Easy Software Products, 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, 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. +.\" +.TH epm.list 5 "ESP Package Manager" "3 October 2017" "Michael R Sweet" +.SH NAME +epm.list \- epm list file format. +.SH DESCRIPTION +Each +.BR epm (1) +product has an associated list file that describes the files to include with the product. +Comment lines begin with the "#" character and are ignored. +All other non-blank lines must begin with a letter, dollar sign ("$"), or the percent sign ("%") as follows: +.TP 5 +$name=value +Sets the named variable to \fIvalue\fR. +\fBNote:\fR Variables set in the list file are overridden by variables specified on the command-line or in the current environment. +.TP 5 +%arch all +Uses following files and directives on all processor architectures. +.TP 5 +%arch \fIarchitecture [... architecture]\fR +Uses following files and directives on the named processor architectures. +.TP 5 +%arch !\fIarchitecture [... architecture]\fR +Uses following files and directives on all but the named processor +architectures. +.TP 5 +%copyright \fIcopyright notice\fR +Sets the copyright notice for the file. +.TP 5 +%description \fIdescription text\fR +Adds a line of descriptive text to the distribution. Multiple lines are +supported. +.TP 5 +%format \fIformat [... format]\fR +Uses following files and directives only if the distribution format is the same as \fIformat\fR. +.TP 5 +%format !\fIformat [... format]\fR +Uses following files and directives only if the distribution format is not the same as \fIformat\fR. +.TP 5 +%if \fIvariable\fR [... variable]\fR +.TP 5 +%if !\fIvariable\fR [... variable]\fR +.TP 5 +%ifdef \fIvariable\fR [... variable]\fR +.TP 5 +%ifdef !\fIvariable\fR [... variable]\fR +.TP 5 +%elseif \fIvariable\fR [... variable]\fR +.TP 5 +%elseif !\fIvariable\fR [... variable]\fR +.TP 5 +%elseifdef \fIvariable\fR [... variable]\fR +.TP 5 +%elseifdef !\fIvariable\fR [... variable]\fR +.TP 5 +%else +.TP 5 +%endif +Conditionally includes lines in the list file. +The \fI%if\fR lines include the lines that follow if the named variables are (not) defined with a value. +The \fI%ifdef\fR lines include the lines that follow if the named variables are (not) defined with any value. +These conditional lines cannot be nested. +.TP 5 +%include \fIfilename\fR +Includes files listed in \fIfilename\fR. +.TP 5 +%incompat \fIproduct\fR +.TP 5 +%incompat \fIfilename\fR +Indicates that this product is incompatible with the named product or file. +.TP 5 +%install \fIscript or program\fR +Specifies a script or program to be run after all files are installed. +(This has been obsoleted by the %postinstall directive) +.TP 5 +%license \fIlicense file\fR +Specifies the file to display as the software license. +.TP 5 +%literal(section) \fIline\fR +.TP 5 +%literal(section) <\fIfile\fR +.TP 5 +%literal(section) <<\fIstring\fR +Specifies format-specific literal data for packaging. +Currently only supported for RPM and PKG packages. +.TP 5 +%packager \fIname of packager\fR +Specifies the name of the packager. +.TP 5 +%patch \fIscript or program\fR +Specifies a script or program to be run after all files are patched. +(This has been obsoleted by the %postpatch directive) +.TP 5 +%postinstall \fIscript or program\fR +.TP 5 +%postinstall <\fIscriptfile\fR +.TP 5 +%postinstall <<\fIstring\fR +Specifies a script or program to be run after all files are installed. +.TP 5 +%postpatch \fIscript or program\fR +.TP 5 +%postpatch <\fIscriptfile\fR +.TP 5 +%postpatch <<\fIstring\fR +Specifies a script or program to be run after all files are patched. +.TP 5 +%postremove \fIscript or program\fR +.TP 5 +%postremove <\fIscriptfile\fR +.TP 5 +%postremove <<\fIstring\fR +Specifies a script or program to be run after removing files. +.TP 5 +%preinstall \fIscript or program\fR +.TP 5 +%preinstall <\fIscriptfile\fR +.TP 5 +%preinstall <<\fIstring\fR +Specifies a script or program to be run before all files are installed. +.TP 5 +%prepatch \fIscript or program\fR +.TP 5 +%prepatch <\fIscriptfile\fR +.TP 5 +%prepatch <<\fIstring\fR +Specifies a script or program to be run before all files are patched. +.TP 5 +%preremove \fIscript or program\fR +.TP 5 +%preremove <\fIscriptfile\fR +.TP 5 +%preremove <<\fIstring\fR +Specifies a script or program to be run before removing files. +.TP 5 +%product \fIproduct name\fR +Specifies the product name. +.TP 5 +%readme \fIreadme file\fR +Specifies a README file to be included in the distribution. +.TP 5 +%remove \fIscript or program\fR +Specifies a script or program to be run before removing files. +(This has been obsoleted by the %preremove directive) +.TP 5 +%release \fInumber\fR +Specifies the release or build number of a product (defaults to 0). +.TP 5 +%replaces \fIproduct\fR +Indicates that this product replaces the named product. +.TP 5 +%requires \fIproduct\fR +.TP 5 +%requires \fIfilename\fR +Indicates that this product requires the named product or file. +.TP 5 +%subpackage +.TP 5 +%subpackage \fIname\fR +Selects the named subpackage; if no name is given, selects the main (parent) package. +.TP 5 +%vendor \fIvendor or author name\fR +Specifies the vendor or author of the product. +.TP 5 +%version \fIversion number\fR +Specifies the version number of the product. +.TP 5 +%system \fIsystem[-release] [... system[-release]]\fR +Specifies that the following files should only be used for the specified operating systems and releases. +.TP 5 +%system !\fIsystem[-release] [... system[-release]]\fR +Specifies that the following files should not be used for the specified operating systems and releases. +.TP 5 +%system all +Specifies that the following files are applicable to all operating systems. +.TP 5 +c \fImode user group destination source\fR +.TP 5 +C \fImode user group destination source\fR +Specifies a configuration file for installation. +The second form specifies that the file has changed or is new and should be included as part of a patch. +Configuration files are installed as "destination.N" if the destination already exists. +.TP 5 +d \fImode user group destination -\fR +.TP 5 +D \fImode user group destination -\fR +Specifies a directory should be created when installing the software. +The second form specifies that the directory is new and should be included as part of a patch. +.TP 5 +f \fImode user group destination source [nostrip()]\fR +.TP 5 +F \fImode user group destination source [nostrip()]\fR +Specifies a file for installation. +The second form specifies that the file has changed or is new and should be included as part of a patch. +If the "nostrip()" option is included, the file will not be stripped before the installation is created. +.TP 5 +f \fImode user group destination source/pattern [nostrip()]\fR +.TP 5 +F \fImode user group destination source/pattern [nostrip()]\fR +Specifies one or more files for installation using shell wildcard patterns. +The second form specifies that the files have changed or are new and should be included as part of a patch. +If the "nostrip()" option is included, the file will not be stripped before the installation is created. +.TP 5 +i \fImode user group service-name source ["options"]\fR +.TP 5 +I \fImode user group service-name source ["options"]\fR +Specifies an initialization script for installation. +The second form specifies that the file has changed or is new and should be included as part of a patch. +Initialization scripts are stored in /etc/software/init.d and are linked to the appropriate system-specific directories for run levels 0, 2, 3, and 5. +Initialization scripts \fBmust\fR accept at least the \fIstart\fR and \fIstop\fR commands. +The optional \fIoptions\fR following the source filename can be any of the following: +.TP 10 + order(\fIstring\fR) +Specifies the relative startup order compared to the required and used system functions. +Supported values include First, Early, None, Late, and Last (macOS only). +.TP 10 + provides(\fIname(s)\fR) +Specifies names of system functions that are provided by this startup item (macOS only). +.TP 10 + requires(\fIname(s)\fR) +Specifies names of system functions that are required by this startup item (macOS only). +.TP 10 + runlevel(\fIlevels\fR) +Specifies the run levels to use. +.TP 10 + start(\fInumber\fR) +Specifies the starting sequence number from 00 to 99. +.TP 10 + stop(\fInumber\fR) +Specifies the ending sequence number from 00 to 99. +.TP 10 + uses(\fIname(s)\fR) +Specifies names of system functions that are used by this startup +item (macOS only). + +.TP 5 +l \fImode user group destination source\fR +.TP 5 +L \fImode user group destination source\fR +Specifies a symbolic link in the installation. +The second form specifies that the link has changed or is new and should be included as part of a patch. +.TP 5 +R \fImode user group destination\fR +Specifies that the file is to be removed upon patching. +The \fIuser\fR and \fIgroup\fR fields are ignored. +The \fImode\fR field is only used to determine if a check should be made for a previous version of the file. +.SH LIST VARIABLES +\fIEPM\fR maintains a list of variables and their values which can be used to substitute values in the list file. +These variables are imported from the current environment and taken from the command-line and list file as provided. +Substitutions occur when the variable name is referenced with the dollar sign ($): +.nf +.br + + %postinstall <foo.list +.fi +.SH SEE ALSO +.BR epm (1), +.BR epminstall (1), +.BR epm.list (5). +.SH COPYRIGHT +Copyright \[co] 1999-2017 by Michael R Sweet, All Rights Reserved. +.LP +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, or (at your option) +any later version. +.LP +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. diff --git a/tmp/epm/doc/preface.html b/./epm/doc/preface.html index 693586c..c04016f 100644 --- a/tmp/epm/doc/preface.html +++ b/./epm/doc/preface.html @@ -121,11 +121,21 @@
        Debian Developers' Corner
         
        +
        http://techpubs.sgi.com/
        + +
        IRIX Documentation On-Line +
         
        +
        http://www.rpm.org/
        The Red Hat Package Manager home page.
         
        +
        http://docs.sun.com/
        + +
        Solaris Documentation On-Line +
         
        +

        Help Me Improve This Book!

        diff --git a/./epm/doc/setup.man b/./epm/doc/setup.man new file mode 100644 index 0000000..bba4e02 --- /dev/null +++ b/./epm/doc/setup.man @@ -0,0 +1,53 @@ +.\" +.\" Manual page for the ESP Package Manager (EPM) setup GUI. +.\" +.\" Copyright 1999-2017 by Michael R Sweet +.\" Copyright 1999-2007 by Easy Software Products, 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, 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. +.\" +.TH setup 1 "ESP Package Manager" "3 October 2017" "Michael R Sweet" +.SH NAME +setup \- graphical setup program for the esp package manager +.SH SYNOPSIS +.B setup +[ +.I directory +] +.SH DESCRIPTION +.BR setup (1) +provides a graphical installation interface for EPM-generated portable installation packages. +It presents a step-by-step dialog for collecting a list of packages to install and accepting any license agreements for those packages. +.LP +.B setup +searches for products in the current directory or the directory specified on the command-line. +.SH INSTALLATION TYPES +The default type of installation is "custom". +That is, users will be able to select from the list of products and install them. +.LP +.B setup +also supports other types of installations. +The \fIsetup.types\fR file, if present, defines the other installation types. +.SH SEE ALSO +.BR epm (1), +.BR setup.types (5). +.SH COPYRIGHT +Copyright \[co] 1999-2017 by Michael R Sweet, All Rights Reserved. +.LP +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, or (at your option) +any later version. +.LP +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. diff --git a/./epm/doc/setup.types.man b/./epm/doc/setup.types.man new file mode 100644 index 0000000..829ae80 --- /dev/null +++ b/./epm/doc/setup.types.man @@ -0,0 +1,64 @@ +.\" +.\" Manual page for the ESP Package Manager (EPM) setup types file format. +.\" +.\" Copyright 1999-2017 by Michael R Sweet +.\" Copyright 1999-2007 by Easy Software Products, 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, 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. +.\" +.TH setup.types 5 "ESP Package Manager" "3 October 2017" "Michael R Sweet" +.SH NAME +setup.types \- epm gui setup types file format. +.SH DESCRIPTION +The EPM +.BR setup (1) +program normally presents the user with a list of software products to install, which is called a "custom" software installation. +.LP +If a file called \fIsetup.types\fR is present in the package directory, the user will instead be presented with a list of installation types. +Each type has an associated product list which determines the products that are installed by default. +If a type has no products associated with it, then it is treated as a custom installation and the user is presented with a list of packages to choose from. +.SH FILE FORMAT +The \fIsetup.types\fR file is an ASCII text file consisting of type and product lines. +Comments can be inserted by starting a line with the pound sign (#). +Each installation type is defined by a line starting with the word TYPE. +Products are defined by a line starting with the word INSTALL: +.in 5 +.nf + +TYPE Typical End-User Configuration +INSTALL foo +INSTALL foo-help +TYPE Typical Developer Configuration +INSTALL foo +INSTALL foo-help +INSTALL foo-devel +INSTALL foo-examples +TYPE Custom Configuration +.fi +.in +.LP +In the example above, three installation types are defined. +Since the last type includes no products, the user will be presented with the full list of products to choose from. +.SH SEE ALSO +.BR epm (1), +.BR setup (1). +.SH COPYRIGHT +Copyright \[co] 1999-2017 by Michael R Sweet, All Rights Reserved. +.LP +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, or (at your option) +any later version. +.LP +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. diff --git a/tmp/epm/epm.c b/./epm/epm.c index 2da9ea4..8b1657f 100644 --- a/tmp/epm/epm.c +++ b/./epm/epm.c @@ -70,14 +70,20 @@ main(int argc, /* I - Number of command-line args */ static char *formats[] = /* Distribution format strings */ { "portable", + "aix", "bsd", "deb", + "inst", "rpm", "rpm", "macos", "macos", + "pkg", "rpm", - "rpm" + "rpm", + "setld", + "slackware", + "swinstall" }; @@ -152,18 +158,36 @@ main(int argc, /* I - Number of command-line args */ if (!strcasecmp(temp, "portable")) format = PACKAGE_PORTABLE; + else if (!strcasecmp(temp, "aix")) + format = PACKAGE_AIX; else if (!strcasecmp(temp, "bsd")) format = PACKAGE_BSD; else if (!strcasecmp(temp, "deb")) format = PACKAGE_DEB; + else if (!strcasecmp(temp, "inst") || + !strcasecmp(temp, "tardist")) + format = PACKAGE_INST; + else if (!strcasecmp(temp, "lsb")) + format = PACKAGE_LSB; + else if (!strcasecmp(temp, "lsb-signed")) + format = PACKAGE_LSB_SIGNED; else if (!strcasecmp(temp, "macos") || !strcasecmp(temp, "osx")) format = PACKAGE_MACOS; else if (!strcasecmp(temp, "macos-signed") || !strcasecmp(temp, "osx-signed")) format = PACKAGE_MACOS_SIGNED; + else if (!strcasecmp(temp, "pkg")) + format = PACKAGE_PKG; else if (!strcasecmp(temp, "rpm")) format = PACKAGE_RPM; else if (!strcasecmp(temp, "rpm-signed")) format = PACKAGE_RPM_SIGNED; + else if (!strcasecmp(temp, "setld")) + format = PACKAGE_SETLD; + else if (!strcasecmp(temp, "slackware")) + format = PACKAGE_SLACKWARE; + else if (!strcasecmp(temp, "swinstall") || + !strcasecmp(temp, "depot")) + format = PACKAGE_SWINSTALL; else if (!strcasecmp(temp, "native")) #if defined(__linux) { @@ -176,8 +200,18 @@ main(int argc, /* I - Number of command-line args */ else format = PACKAGE_DEB; } +#elif defined(__sgi) + format = PACKAGE_INST; +#elif defined(__osf__) + format = PACKAGE_SETLD; +#elif defined(__hpux) + format = PACKAGE_SWINSTALL; +#elif defined(_AIX) + format = PACKAGE_AIX; #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) format = PACKAGE_BSD; +#elif defined(__svr4__) || defined(__SVR4) || defined(M_XENIX) + format = PACKAGE_PKG; #elif defined(__APPLE__) format = PACKAGE_MACOS; #else @@ -514,11 +548,15 @@ main(int argc, /* I - Number of command-line args */ i = make_portable(prodname, directory, platname, dist, &platform, setup, types); break; - + case PACKAGE_AIX : + i = make_aix(prodname, directory, platname, dist, &platform); + break; case PACKAGE_BSD : i = make_bsd(prodname, directory, platname, dist, &platform); break; - + case PACKAGE_SLACKWARE : + i = make_slackware(prodname, directory, platname, dist, &platform); + break; case PACKAGE_DEB : if (geteuid()) fputs("epm: Warning - file permissions and ownership may not be correct\n" @@ -526,17 +564,39 @@ main(int argc, /* I - Number of command-line args */ i = make_deb(prodname, directory, platname, dist, &platform); break; - + case PACKAGE_INST : + i = make_inst(prodname, directory, platname, dist, &platform); + break; case PACKAGE_MACOS : case PACKAGE_MACOS_SIGNED : i = make_osx(format, prodname, directory, platname, dist, &platform, setup); break; - + case PACKAGE_PKG : + i = make_pkg(prodname, directory, platname, dist, &platform); + break; + case PACKAGE_LSB : + case PACKAGE_LSB_SIGNED : case PACKAGE_RPM : case PACKAGE_RPM_SIGNED : i = make_rpm(format, prodname, directory, platname, dist, &platform, setup, types); break; + case PACKAGE_SETLD : + if (geteuid()) + fputs("epm: Warning - file permissions and ownership may not be correct\n" + " in Tru64 packages unless you run EPM as root!\n", stderr); + + i = make_setld(prodname, directory, platname, dist, &platform); + break; + case PACKAGE_SWINSTALL : + if (geteuid()) + { + fputs("epm: Error - HP-UX packages must be built as root!\n", stderr); + i = 1; + } + else + i = make_swinstall(prodname, directory, platname, dist, &platform); + break; } /* @@ -589,6 +649,10 @@ info(void) { puts(EPM_VERSION); puts("Copyright (c) 1999-2020 by Michael R Sweet."); +#ifdef __FOR_AOO__ + puts("Patched for Apache OpenOffice"); + puts(" url: https://github.com/jimjag/epm/"); +#endif /* __FOR_AOO__ */ puts(""); puts("EPM is free software and comes with ABSOLUTELY NO WARRANTY; for details"); puts("see the GNU General Public License in the file LICENSE or at"); @@ -613,7 +677,7 @@ usage(void) puts(" Use the named architecture instead of the local one."); puts("-g"); puts(" Don't strip executables in distributions."); - puts("-f {bsd,deb,macos,macos-signed,native,portable,rpm,rpm-signed}"); + puts("-f {aix,bsd,deb,depot,inst,macos,macos-signed,native,pkg,portable,rpm,rpm-signed,setld,slackware,swinstall,tardist}"); puts(" Set distribution format."); puts("-k"); puts(" Keep intermediate files (spec files, etc.)"); diff --git a/tmp/epm/epm.h b/./epm/epm.h index 884d775..63f47f3 100644 --- a/tmp/epm/epm.h +++ b/./epm/epm.h @@ -94,12 +94,20 @@ extern "C" { enum { PACKAGE_PORTABLE, /* Shell-script based EPM */ + PACKAGE_AIX, /* AIX package format */ PACKAGE_BSD, /* BSD package format */ PACKAGE_DEB, /* Debian package format */ + PACKAGE_INST, /* IRIX package format */ + PACKAGE_LSB, /* LSB (RPM) package format */ + PACKAGE_LSB_SIGNED, /* LSB (RPM) package format (signed) */ PACKAGE_MACOS, /* macOS package format */ PACKAGE_MACOS_SIGNED, /* macOS package format (signed) */ + PACKAGE_PKG, /* AT&T package format (AIX, Solaris) */ PACKAGE_RPM, /* RedHat package format */ - PACKAGE_RPM_SIGNED /* RedHat package format (signed) */ + PACKAGE_RPM_SIGNED, /* RedHat package format (signed) */ + PACKAGE_SETLD, /* Tru64 package format */ + PACKAGE_SLACKWARE, /* Slackware package format */ + PACKAGE_SWINSTALL /* HP-UX package format */ }; /* @@ -261,6 +269,9 @@ extern const char *get_runlevels(file_t *file, const char *deflevels); extern int get_start(file_t *file, int defstart); extern int get_stop(file_t *file, int defstop); extern int get_vernumber(const char *version); +extern int make_aix(const char *prodname, const char *directory, + const char *platname, dist_t *dist, + struct utsname *platform); extern int make_bsd(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform); @@ -269,10 +280,16 @@ extern int make_deb(const char *prodname, const char *directory, struct utsname *platform); extern int make_directory(const char *directory, mode_t mode, uid_t owner, gid_t group); +extern int make_inst(const char *prodname, const char *directory, + const char *platname, dist_t *dist, + struct utsname *platform); extern int make_link(const char *dst, const char *src); extern int make_osx(int format, const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform, const char *setup); +extern int make_pkg(const char *prodname, const char *directory, + const char *platname, dist_t *dist, + struct utsname *platform); extern int make_portable(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform, const char *setup, @@ -281,6 +298,15 @@ extern int make_rpm(int format, const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform, const char *setup, const char *types); +extern int make_setld(const char *prodname, const char *directory, + const char *platname, dist_t *dist, + struct utsname *platform); +extern int make_slackware(const char *prodname, const char *directory, + const char *platname, dist_t *dist, + struct utsname *platform); +extern int make_swinstall(const char *prodname, const char *directory, + const char *platname, dist_t *dist, + struct utsname *platform); extern dist_t *new_dist(void); extern int qprintf(FILE *fp, const char *format, ...); extern dist_t *read_dist(const char *filename, struct utsname *platform, diff --git a/tmp/epm/file.c b/./epm/file.c index 1cd53f0..0923d6a 100644 --- a/tmp/epm/file.c +++ b/./epm/file.c @@ -98,8 +98,10 @@ copy_file(const char *dst, /* I - Destination file */ if (mode) chmod(dst, mode); +#ifndef __FOR_AOO__ if (owner != (uid_t)-1 && group != (gid_t)-1) chown(dst, owner, group); +#endif /* __FOR_AOO__ */ return (0); } @@ -130,8 +132,10 @@ make_directory(const char *directory, /* I - Directory */ mkdir(buffer, 0755); if (mode) chmod(buffer, mode | 0700); +#ifndef __FOR_AOO__ if (owner != (uid_t)-1 && group != (gid_t)-1) chown(buffer, owner, group); +#endif /* __FOR_AOO__ */ } } @@ -145,8 +149,10 @@ make_directory(const char *directory, /* I - Directory */ mkdir(buffer, 0755); if (mode) chmod(buffer, mode | 0700); +#ifndef __FOR_AOO__ if (owner != (uid_t)-1 && group != (gid_t)-1) chown(buffer, owner, group); +#endif /* __FOR_AOO__ */ } return (0); diff --git a/tmp/epm/gui-common.h b/./epm/gui-common.h index c79c6dd..ebacd7b 100644 --- a/tmp/epm/gui-common.h +++ b/./epm/gui-common.h @@ -22,11 +22,11 @@ // Include necessary headers... // -# include "epmstring.h" -# include "epm.h" -# include -# include -# include +#include "epmstring.h" +#include "epm.h" +#include +#include +#include // @@ -77,11 +77,11 @@ typedef int (*compare_func_t)(const void *, const void *); // Globals... // -# ifdef _DEFINE_GLOBALS_ -# define VAR -# else -# define VAR extern -# endif // _DEFINE_GLOBALS_ +#ifdef _DEFINE_GLOBALS_ +# define VAR +#else +# define VAR extern +#endif // _DEFINE_GLOBALS_ VAR int NumDists; // Number of distributions in directory VAR gui_dist_t *Dists; // Distributions in directory diff --git a/./epm/inst.c b/./epm/inst.c new file mode 100644 index 0000000..ec9e6e3 --- /dev/null +++ b/./epm/inst.c @@ -0,0 +1,681 @@ +/* + * IRIX package gateway for the ESP Package Manager (EPM). + * + * Copyright 1999-2017 by Michael R Sweet + * Copyright 1999-2006 by Easy Software Products. + * + * 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, 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 necessary headers... + */ + +#include "epm.h" + + +/* + * Local functions... + */ + +void inst_subsys(FILE *fp, const char *prodname, dist_t *dist, + const char *subpackage, const char *category, + const char *section); + + +/* + * 'make_inst()' - Make an IRIX software distribution package. + */ + +int /* O - 0 = success, 1 = fail */ +make_inst(const char *prodname, /* I - Product short name */ + const char *directory, /* I - Directory for distribution files */ + const char *platname, /* I - Platform name */ + dist_t *dist, /* I - Distribution information */ + struct utsname *platform) /* I - Platform information */ +{ + int i; /* Looping var */ + FILE *fp; /* Spec/IDB/script file */ + tarf_t *tarfile; /* .tardist file */ + char name[1024]; /* Full product name */ + char specname[1024]; /* Spec filename */ + char idbname[1024]; /* IDB filename */ + char filename[1024], /* Destination filename */ + srcname[1024], /* Name of source file in distribution */ + dstname[1024]; /* Name of destination file in distribution */ + char preinstall[1024], /* Pre install script */ + postinstall[1024], /* Post install script */ + preremove[1024], /* Pre remove script */ + postremove[1024]; /* Post remove script */ + char subsys[255]; /* Subsystem name */ + file_t *file; /* Current distribution file */ + command_t *c; /* Current command */ + struct stat fileinfo; /* File information */ + const char *runlevels; /* Run levels */ + static const char *extensions[] = /* INST file extensions */ + { + "", + ".idb", + ".man", + ".sw" + }; + + + REF(platform); + + if (Verbosity) + puts("Creating inst distribution..."); + + if (dist->release[0]) + { + if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, dist->version, dist->release, + platname); + else + snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, dist->release); + } + else if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); + else + snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); + + /* + * Write the spec file for gendist... + */ + + if (Verbosity) + puts("Creating spec file..."); + + snprintf(specname, sizeof(specname), "%s/spec", directory); + + if ((fp = fopen(specname, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create spec file \"%s\": %s\n", specname, + strerror(errno)); + return (1); + } + + fprintf(fp, "product %s\n", prodname); + qprintf(fp, " id \"%s, %s\"\n", dist->product, dist->version); + + fputs(" image sw\n", fp); + qprintf(fp, " id \"%s, Software, %s\"\n", dist->product, + dist->version); + fprintf(fp, " version %d\n", dist->vernumber); + + inst_subsys(fp, prodname, dist, NULL, "Software", "sw"); + for (i = 0; i < dist->num_subpackages; i ++) + inst_subsys(fp, prodname, dist, dist->subpackages[i], "Software", "sw"); + + fputs(" endimage\n", fp); + + fputs(" image man\n", fp); + qprintf(fp, " id \"%s, Man Pages, %s\"\n", dist->product, + dist->version); + fprintf(fp, " version %d\n", dist->vernumber); + + inst_subsys(fp, prodname, dist, NULL, "Man Pages", "man"); + for (i = 0; i < dist->num_subpackages; i ++) + inst_subsys(fp, prodname, dist, dist->subpackages[i], "Man Pages", "man"); + + fputs(" endimage\n", fp); + + fputs("endproduct\n", fp); + + fclose(fp); + + /* + * Add symlinks for init scripts... + */ + + for (i = 0; i < dist->num_files; i ++) + if (tolower(dist->files[i].type) == 'i') + { + /* + * Make symlinks for all of the selected run levels... + */ + + for (runlevels = get_runlevels(dist->files + i, "02"); + isdigit(*runlevels & 255); + runlevels ++) + { + file = add_file(dist, dist->files[i].subpackage); + file->type = 'l'; + file->mode = 0; + strlcpy(file->user, "root", sizeof(file->user)); + strlcpy(file->group, "sys", sizeof(file->group)); + snprintf(file->src, sizeof(file->src), "../init.d/%s", + dist->files[i].dst); + + if (*runlevels == '0') + snprintf(file->dst, sizeof(file->dst), "/etc/rc0.d/K%02d%s", + get_stop(dist->files + i, 0), dist->files[i].dst); + else + snprintf(file->dst, sizeof(file->dst), "/etc/rc%c.d/S%02d%s", + *runlevels, get_start(dist->files + i, 99), + dist->files[i].dst); + } + + /* + * Then send the original file to /etc/init.d... + */ + + file = dist->files + i; + + snprintf(filename, sizeof(filename), "/etc/init.d/%s", file->dst); + strlcpy(file->dst, filename, sizeof(file->dst)); + } + + /* + * Add preinstall script as needed... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_INSTALL) + break; + + if (i) + { + /* + * Add the preinstall script file to the list... + */ + + file = add_file(dist, NULL); + file->type = '1'; + file->mode = 0555; + strlcpy(file->user, "root", sizeof(file->user)); + strlcpy(file->group, "sys", sizeof(file->group)); + snprintf(file->src, sizeof(file->src), "%s/%s.preinstall", directory, + prodname); + snprintf(file->dst, sizeof(file->dst), "%s/%s.preinstall", SoftwareDir, + prodname); + + /* + * Then create the install script... + */ + + if (Verbosity) + puts("Creating preinstall script..."); + + snprintf(preinstall, sizeof(preinstall), "%s/%s.preinstall", directory, prodname); + + if ((fp = fopen(preinstall, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preinstall, + strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_INSTALL) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + else + preinstall[0] = '\0'; + + /* + * Add postinstall script as needed... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_INSTALL) + break; + + if (i) + { + /* + * Add the postinstall script file to the list... + */ + + file = add_file(dist, NULL); + file->type = '2'; + file->mode = 0555; + strlcpy(file->user, "root", sizeof(file->user)); + strlcpy(file->group, "sys", sizeof(file->group)); + snprintf(file->src, sizeof(file->src), "%s/%s.postinstall", directory, + prodname); + snprintf(file->dst, sizeof(file->dst), "%s/%s.postinstall", SoftwareDir, + prodname); + + /* + * Then create the install script... + */ + + if (Verbosity) + puts("Creating postinstall script..."); + + snprintf(postinstall, sizeof(postinstall), "%s/%s.postinstall", directory, prodname); + + if ((fp = fopen(postinstall, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postinstall, + strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (; i > 0; i --, c ++) + if (c->type == COMMAND_POST_INSTALL) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + else + postinstall[0] = '\0'; + + /* + * Add preremove script as needed... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_REMOVE) + break; + + if (i) + { + /* + * Add the preremove script file to the list... + */ + + file = add_file(dist, NULL); + file->type = '3'; + file->mode = 0555; + strlcpy(file->user, "root", sizeof(file->user)); + strlcpy(file->group, "sys", sizeof(file->group)); + snprintf(file->src, sizeof(file->src), "%s/%s.preremove", directory, + prodname); + snprintf(file->dst, sizeof(file->dst), "%s/%s.preremove", SoftwareDir, + prodname); + + /* + * Then create the install script... + */ + + if (Verbosity) + puts("Creating preremove script..."); + + snprintf(preremove, sizeof(preremove), "%s/%s.preremove", directory, prodname); + + if ((fp = fopen(preremove, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preremove, + strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_REMOVE) + fprintf(fp, "%s\n", c->command); + + qprintf(fp, "/bin/rm -f %s.copy\n", file->dst); + + fclose(fp); + } + else + preremove[0] = '\0'; + + /* + * Add postremove script as needed... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_REMOVE) + break; + + if (i) + { + /* + * Add the postremove script file to the list... + */ + + file = add_file(dist, NULL); + file->type = '4'; + file->mode = 0555; + strlcpy(file->user, "root", sizeof(file->user)); + strlcpy(file->group, "sys", sizeof(file->group)); + snprintf(file->src, sizeof(file->src), "%s/%s.postremove", directory, + prodname); + snprintf(file->dst, sizeof(file->dst), "%s/%s.postremove", SoftwareDir, + prodname); + + /* + * Then create the remove script... + */ + + if (Verbosity) + puts("Creating postremove script..."); + + snprintf(postremove, sizeof(postremove), "%s/%s.postremove", directory, prodname); + + if ((fp = fopen(postremove, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postremove, + strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (; i > 0; i --, c ++) + if (c->type == COMMAND_POST_REMOVE) + fprintf(fp, "%s\n", c->command); + + qprintf(fp, "/bin/rm -f %s.copy\n", file->dst); + + fclose(fp); + } + else + postremove[0] = '\0'; + + /* + * Sort the file list by the destination name, since gendist needs a sorted + * list... + */ + + sort_dist_files(dist); + + /* + * Write the idb file for gendist... + */ + + if (Verbosity) + puts("Creating idb file..."); + + snprintf(idbname, sizeof(idbname), "%s/idb", directory); + + if ((fp = fopen(idbname, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create idb file \"%s\": %s\n", idbname, + strerror(errno)); + return (1); + } + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + { + if (strstr(file->dst, "/man/") != NULL || + strstr(file->dst, "/catman/") != NULL) + snprintf(subsys, sizeof(subsys), "%s.man.%s", prodname, + file->subpackage ? file->subpackage : "eoe"); + else + snprintf(subsys, sizeof(subsys), "%s.sw.%s", prodname, + file->subpackage ? file->subpackage : "eoe"); + + switch (tolower(file->type)) + { + case '1' : + qprintf(fp, "f %04o %s %s %s %s %s postop($rbase/%s)\n", file->mode, + file->user, file->group, file->dst + 1, file->src, subsys, + file->dst + 1); + break; + case '2' : + qprintf(fp, "f %04o %s %s %s %s %s exitop($rbase/%s)\n", file->mode, + file->user, file->group, file->dst + 1, file->src, subsys, + file->dst + 1); + break; + case '3' : + case '4' : + qprintf(fp, "f %04o %s %s %s %s %s " + "postop(cp $rbase/%s $rbase/%s.copy) " + "removeop($rbase/%s.copy; rm -f $rbase/%s.copy)\n", + file->mode, file->user, file->group, file->dst + 1, + file->src, subsys, file->dst + 1, file->dst + 1, + file->dst + 1); + break; + case 'c' : + qprintf(fp, "f %04o %s %s %s %s %s config(suggest)\n", file->mode, + file->user, file->group, file->dst + 1, file->src, subsys); + break; + case 'd' : + qprintf(fp, "d %04o %s %s %s - %s\n", file->mode, + file->user, file->group, file->dst + 1, subsys); + break; + case 'f' : + qprintf(fp, "f %04o %s %s %s %s %s\n", file->mode, + file->user, file->group, file->dst + 1, file->src, subsys); + break; + case 'i' : + qprintf(fp, "f %04o %s %s %s %s %s " + "postop(cp $rbase/etc/init.d/%s $rbase/etc/init.d/%s.copy) " + "exitop($rbase/etc/init.d/%s start) " + "removeop($rbase/etc/init.d/%s.copy stop; rm -f $rbase/etc/init.d/%s.copy)\n", + file->mode, file->user, file->group, file->dst + 1, + file->src, subsys, + file->dst + 12, file->dst + 12, + file->dst + 12, + file->dst + 12, file->dst + 12); + break; + case 'l' : + qprintf(fp, "l %04o %s %s %s - %s symval(%s)\n", file->mode, + file->user, file->group, file->dst + 1, subsys, file->src); + break; + } + } + + fclose(fp); + + /* + * Build the distribution from the spec file... + */ + + if (Verbosity) + puts("Building INST binary distribution..."); + + if (run_command(NULL, "gendist %s -dist %s -sbase . -idb %s -spec %s", + Verbosity == 0 ? "" : "-v", directory, idbname, specname)) + return (1); + + /* + * Build the tardist file... + */ + + if (Verbosity) + printf("Writing tardist file:"); + + snprintf(filename, sizeof(filename), "%s/%s.tardist", directory, name); + if ((tarfile = tar_open(filename, 0)) == NULL) + { + if (Verbosity) + puts(""); + + fprintf(stderr, "epm: Unable to create file \"%s\" -\n %s\n", + filename, strerror(errno)); + return (1); + } + + for (i = 0; i < 4; i ++) + { + snprintf(srcname, sizeof(srcname), "%s/%s%s", directory, prodname, extensions[i]); + snprintf(dstname, sizeof(dstname), "%s%s", prodname, extensions[i]); + + stat(srcname, &fileinfo); + if (tar_header(tarfile, TAR_NORMAL, fileinfo.st_mode, fileinfo.st_size, + fileinfo.st_mtime, "root", "sys", dstname, NULL) < 0) + return (-1); + + if (tar_file(tarfile, srcname) < 0) + return (-1); + + if (Verbosity) + { + printf(" %s%s", prodname, extensions[i]); + fflush(stdout); + } + } + + tar_close(tarfile); + + if (Verbosity) + { + stat(filename, &fileinfo); + if (fileinfo.st_size > (1024 * 1024)) + printf(" size=%.1fM\n", fileinfo.st_size / 1024.0 / 1024.0); + else + printf(" size=%.0fk\n", fileinfo.st_size / 1024.0); + } + + /* + * Remove temporary files... + */ + + if (!KeepFiles) + { + if (Verbosity) + puts("Removing temporary distribution files..."); + + if (preinstall[0]) + unlink(preinstall); + if (postinstall[0]) + unlink(postinstall); + if (preremove[0]) + unlink(preremove); + if (postremove[0]) + unlink(postremove); + + unlink(idbname); + unlink(specname); + } + + return (0); +} + + +/* + * 'inst_subsys()' - Write a subsystem definition for the product. + */ + +void +inst_subsys(FILE *fp, /* I - File to write to */ + const char *prodname, /* I - Product short name */ + dist_t *dist, /* I - Distribution */ + const char *subpackage, /* I - Subpackage name or NULL */ + const char *category, /* I - "Software" or "Man Pages" */ + const char *section) /* I - "sw" or "man" */ +{ + int i; /* Looping var */ + depend_t *d; /* Current dependency */ + const char *product; /* Product for dependency */ + char selfname[1024]; /* Self product name */ + char title[1024]; /* Product description/title */ + + + snprintf(selfname, sizeof(selfname), "%s.%s.eoe", prodname, section); + + if (subpackage) + { + fprintf(fp, " subsys %s\n", subpackage); + + for (i = 0; i < dist->num_descriptions; i ++) + if (dist->descriptions[i].subpackage == subpackage) + break; + + if (i < dist->num_descriptions) + snprintf(title, sizeof(title), "%s %s", dist->product, + dist->descriptions[i].description); + else + strlcpy(title, dist->product, sizeof(title)); + } + else + { + fputs(" subsys eoe default\n", fp); + + strlcpy(title, dist->product, sizeof(title)); + } + + qprintf(fp, " id \"%s, %s, %s\"\n", title, category, + dist->version); + fprintf(fp, " exp \"%s.%s.%s\"\n", prodname, section, + subpackage ? subpackage : "eoe"); + + for (i = dist->num_depends, d = dist->depends; i > 0; i --, d ++) + if (d->type == DEPEND_REQUIRES && d->subpackage == subpackage) + break; + + if (i) + { + fputs(" prereq\n", fp); + fputs(" (\n", fp); + for (; i > 0; i --, d ++) + if (d->type == DEPEND_REQUIRES && d->subpackage == subpackage) + { + if (!strcmp(d->product, "_self")) + product = selfname; + else + product = d->product; + + if (strchr(product, '.') != NULL) + fprintf(fp, " %s %d %d\n", + product, d->vernumber[0], d->vernumber[1]); + else if (product[0] != '/') + fprintf(fp, " %s.%s.* %d %d\n", + product, section, d->vernumber[0], d->vernumber[1]); + } + fputs(" )\n", fp); + } + + for (i = dist->num_depends, d = dist->depends; i > 0; i --, d ++) + if (d->type == DEPEND_REPLACES && d->subpackage == subpackage) + { + if (!strcmp(d->product, "_self")) + product = selfname; + else + product = d->product; + + if (strchr(product, '.') != NULL) + { + fprintf(fp, " replaces %s %d %d\n", + product, d->vernumber[0], d->vernumber[1]); + fprintf(fp, " updates %s %d %d\n", + product, d->vernumber[0], d->vernumber[1]); + } + else if (product[0] != '/') + { + fprintf(fp, " replaces %s.%s.* %d %d\n", + product, section, d->vernumber[0], d->vernumber[1]); + fprintf(fp, " updates %s.%s.* %d %d\n", + product, section, d->vernumber[0], d->vernumber[1]); + } + } + else if (d->type == DEPEND_INCOMPAT && d->subpackage == subpackage) + { + if (!strcmp(d->product, "_self")) + product = selfname; + else + product = d->product; + + if (strchr(product, '.') != NULL) + fprintf(fp, " incompat %s %d %d\n", + product, d->vernumber[0], d->vernumber[1]); + else if (product[0] != '/') + fprintf(fp, " incompat %s.%s.* %d %d\n", + product, section, d->vernumber[0], d->vernumber[1]); + } + + fputs(" endsubsys\n", fp); +} diff --git a/tmp/epm/makesrcdist b/./epm/makesrcdist index 0542318..d34471a 100755 --- a/tmp/epm/makesrcdist +++ b/./epm/makesrcdist @@ -15,5 +15,4 @@ git tag -m "Tag $version" v$version git push origin v$version echo Creating epm-$version-source.tar.gz... -git archive --format tar --prefix=epm-$version/ HEAD | gzip -v9 >epm-$version.tar.gz -gpg --detach-sign epm-$version.tar.gz +git archive --format tar HEAD | gzip -v9 >epm-$version-source.tar.gz diff --git a/./epm/pkg.c b/./epm/pkg.c new file mode 100644 index 0000000..b391678 --- /dev/null +++ b/./epm/pkg.c @@ -0,0 +1,573 @@ +/* + * AT&T package gateway for the ESP Package Manager (EPM). + * + * Copyright 1999-2017 by Michael R Sweet + * Copyright 1999-2010 by Easy Software Products. + * + * 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, 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 necessary headers... + */ + +#include "epm.h" + + +/* + * Local functions... + */ + +static const char *pkg_path(const char *filename, const char *dirname); + + +/* + * 'make_pkg()' - Make an AT&T software distribution package. + */ + +int /* O - 0 = success, 1 = fail */ +make_pkg(const char *prodname, /* I - Product short name */ + const char *directory, /* I - Directory for distribution files */ + const char *platname, /* I - Platform name */ + dist_t *dist, /* I - Distribution information */ + struct utsname *platform) /* I - Platform information */ +{ + int i; /* Looping var */ + FILE *fp; /* Control file */ + char name[1024]; /* Full product name */ + char filename[1024], /* Destination filename */ + preinstall[1024], /* Pre install script */ + postinstall[1024], /* Post install script */ + preremove[1024], /* Pre remove script */ + postremove[1024], /* Post remove script */ + request[1024]; /* Request script */ + char current[1024]; /* Current directory */ + file_t *file; /* Current distribution file */ + command_t *c; /* Current command */ + depend_t *d; /* Current dependency */ + tarf_t *tarfile; /* Distribution file */ + time_t curtime; /* Current time info */ + struct tm *curdate; /* Current date info */ + const char *runlevels; /* Run levels */ + + + if (Verbosity) + puts("Creating PKG distribution..."); + + if (dist->release[0]) + { + if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, dist->version, dist->release, + platname); + else + snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, dist->release); + } + else if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); + else + snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); + + getcwd(current, sizeof(current)); + + /* + * Write the pkginfo file for pkgmk... + */ + + if (Verbosity) + puts("Creating package information file..."); + + snprintf(filename, sizeof(filename), "%s/%s.pkginfo", directory, prodname); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create package information file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + curtime = time(NULL); + curdate = gmtime(&curtime); + + fprintf(fp, "PKG=%s\n", prodname); + fprintf(fp, "NAME=%s\n", dist->product); + fprintf(fp, "VERSION=%s\n", dist->version); + fprintf(fp, "VENDOR=%s\n", dist->vendor); + fprintf(fp, "PSTAMP=epm%04d%02d%02d%02d%02d%02d\n", + curdate->tm_year + 1900, curdate->tm_mon + 1, curdate->tm_mday, + curdate->tm_hour, curdate->tm_min, curdate->tm_sec); + + if (dist->num_descriptions > 0) + fprintf(fp, "DESC=%s\n", dist->descriptions[0].description); + + fputs("CATEGORY=application\n", fp); + fputs("CLASSES=none", fp); + for (i = 0; i < dist->num_subpackages; i ++) + fprintf(fp, " %s", dist->subpackages[i]); + putc('\n', fp); + + if (strcmp(platform->machine, "intel") == 0) + fputs("ARCH=i86pc\n", fp); + else + fputs("ARCH=sparc\n", fp); + + fclose(fp); + + /* + * Write the depend file for pkgmk... + */ + + if (Verbosity) + puts("Creating package dependency file..."); + + snprintf(filename, sizeof(filename), "%s/%s.depend", directory, prodname); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create package dependency file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + for (i = dist->num_depends, d = dist->depends; i > 0; i --, d ++) + if (!strcmp(d->product, "_self")) + continue; + else if (d->type == DEPEND_REQUIRES) + fprintf(fp, "P %s\n", d->product); + else + fprintf(fp, "I %s\n", d->product); + + fclose(fp); + + /* + * Write the preinstall file for pkgmk... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_INSTALL) + break; + + if (i) + { + /* + * Write the preinstall file for pkgmk... + */ + + if (Verbosity) + puts("Creating preinstall script..."); + + snprintf(preinstall, sizeof(preinstall), "%s/%s.preinstall", directory, + prodname); + + if ((fp = fopen(preinstall, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preinstall, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_INSTALL) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + else + preinstall[0] = '\0'; + + /* + * Write the postinstall file for pkgmk... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_INSTALL) + break; + + if (!i) + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + break; + + if (i) + { + /* + * Write the postinstall file for pkgmk... + */ + + if (Verbosity) + puts("Creating postinstall script..."); + + snprintf(postinstall, sizeof(postinstall), "%s/%s.postinstall", directory, + prodname); + + if ((fp = fopen(postinstall, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postinstall, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_INSTALL) + fprintf(fp, "%s\n", c->command); + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + qprintf(fp, "/etc/init.d/%s start\n", file->dst); + + fclose(fp); + } + else + postinstall[0] = '\0'; + + /* + * Write the preremove script... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_REMOVE) + break; + + if (!i) + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + break; + + if (i) + { + /* + * Write the preremove file for pkgmk... + */ + + if (Verbosity) + puts("Creating preremove script..."); + + snprintf(preremove, sizeof(preremove), "%s/%s.preremove", directory, prodname); + + if ((fp = fopen(preremove, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preremove, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + qprintf(fp, "/etc/init.d/%s stop\n", file->dst); + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_REMOVE) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + else + preremove[0] = '\0'; + + /* + * Write the postremove file for pkgmk... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_REMOVE) + break; + + if (i) + { + /* + * Write the postremove file for pkgmk... + */ + + if (Verbosity) + puts("Creating postremove script..."); + + snprintf(postremove, sizeof(postremove), "%s/%s.postremove", directory, + prodname); + + if ((fp = fopen(postremove, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postremove, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (; i > 0; i --, c ++) + if (c->type == COMMAND_POST_REMOVE) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + else + postremove[0] = '\0'; + + /* + * Write the request file for pkgmk... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_LITERAL && !strcmp(c->section, "request")) + break; + + if (i) + { + /* + * Write the request file for pkgmk... + */ + + if (Verbosity) + puts("Creating request script..."); + + snprintf(request, sizeof(request), "%s/%s.request", directory, + prodname); + + if ((fp = fopen(request, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", request, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (; i > 0; i --, c ++) + if (c->type == COMMAND_LITERAL && !strcmp(c->section, "request")) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + else + request[0] = '\0'; + + /* + * Add symlinks for init scripts... + */ + + for (i = 0; i < dist->num_files; i ++) + if (tolower(dist->files[i].type) == 'i') + { + /* + * Make symlinks for all of the selected run levels... + */ + + for (runlevels = get_runlevels(dist->files + i, "023"); + isdigit(*runlevels & 255); + runlevels ++) + { + file = add_file(dist, dist->files[i].subpackage); + file->type = 'l'; + file->mode = 0; + strlcpy(file->user, "root", sizeof(file->user)); + strlcpy(file->group, "sys", sizeof(file->group)); + snprintf(file->src, sizeof(file->src), "../init.d/%s", + dist->files[i].dst); + + if (*runlevels == '0') + snprintf(file->dst, sizeof(file->dst), "/etc/rc0.d/K%02d%s", + get_stop(dist->files + i, 0), dist->files[i].dst); + else + snprintf(file->dst, sizeof(file->dst), "/etc/rc%c.d/S%02d%s", + *runlevels, get_start(dist->files + i, 99), + dist->files[i].dst); + } + + /* + * Then send the original file to /etc/init.d... + */ + + file = dist->files + i; + + snprintf(filename, sizeof(filename), "/etc/init.d/%s", file->dst); + strlcpy(file->dst, filename, sizeof(file->dst)); + } + + /* + * Write the prototype file for pkgmk... + */ + + if (Verbosity) + puts("Creating prototype file..."); + + snprintf(filename, sizeof(filename), "%s/%s.prototype", directory, prodname); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create prototype file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + if (dist->license[0]) + fprintf(fp, "i copyright=%s\n", pkg_path(dist->license, current)); + fprintf(fp, "i depend=%s/%s.depend\n", pkg_path(directory, current), prodname); + fprintf(fp, "i pkginfo=%s/%s.pkginfo\n", pkg_path(directory, current), + prodname); + + if (preinstall[0]) + fprintf(fp, "i preinstall=%s\n", pkg_path(preinstall, current)); + if (postinstall[0]) + fprintf(fp, "i postinstall=%s\n", pkg_path(postinstall, current)); + if (preremove[0]) + fprintf(fp, "i preremove=%s\n", pkg_path(preremove, current)); + if (postremove[0]) + fprintf(fp, "i postremove=%s\n", pkg_path(postremove, current)); + if (request[0]) + fprintf(fp, "i request=%s\n", pkg_path(request, current)); + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + switch (tolower(file->type)) + { + case 'c' : + qprintf(fp, "e %s %s=%s %04o %s %s\n", + file->subpackage ? file->subpackage : "none", + file->dst, pkg_path(file->src, current), + file->mode, file->user, file->group); + break; + case 'd' : + qprintf(fp, "d %s %s %04o %s %s\n", + file->subpackage ? file->subpackage : "none", + file->dst, file->mode, file->user, file->group); + break; + case 'f' : + case 'i' : + qprintf(fp, "f %s %s=%s %04o %s %s\n", + file->subpackage ? file->subpackage : "none", + file->dst, pkg_path(file->src, current), + file->mode, file->user, file->group); + break; + case 'l' : + qprintf(fp, "s %s %s=%s\n", + file->subpackage ? file->subpackage : "none", + file->dst, file->src); + break; + } + + fclose(fp); + +#ifndef __FOR_AOO__ + /* + * Build the distribution from the prototype file... + */ + + if (Verbosity) + puts("Building PKG binary distribution..."); + + if (run_command(NULL, "pkgmk -o -f %s/%s.prototype -d %s/%s", + directory, prodname, current, directory)) + return (1); + + /* + * Tar and compress the distribution... + */ + + if (Verbosity) + puts("Creating .pkg.tgz file for distribution..."); + + snprintf(filename, sizeof(filename), "%s/%s.pkg.tgz", directory, name); + + if ((tarfile = tar_open(filename, 1)) == NULL) + return (1); + + snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); + + if (tar_directory(tarfile, filename, prodname)) + { + tar_close(tarfile); + return (1); + } + + tar_close(tarfile); + + /* + * Make a package stream file... + */ + + if (Verbosity) + puts("Copying into package stream file..."); + + if (run_command(directory, "pkgtrans -s %s/%s %s.pkg %s", + current, directory, name, prodname)) + return (1); + + /* + * Compress the package stream file... + */ + + snprintf(filename, sizeof(filename), "%s.pkg.gz", name); + unlink(filename); + + if (run_command(directory, EPM_GZIP " -vf9 %s.pkg", name)) + return (1); + + /* + * Remove temporary files... + */ + + if (!KeepFiles) + { + if (Verbosity) + puts("Removing temporary distribution files..."); + + snprintf(filename, sizeof(filename), "%s/%s.pkginfo", directory, prodname); + unlink(filename); + snprintf(filename, sizeof(filename), "%s/%s.depend", directory, prodname); + unlink(filename); + snprintf(filename, sizeof(filename), "%s/%s.prototype", directory, prodname); + unlink(filename); + if (preinstall[0]) + unlink(preinstall); + if (postinstall[0]) + unlink(postinstall); + if (preremove[0]) + unlink(preremove); + if (postremove[0]) + unlink(postremove); + if (request[0]) + unlink(request); + + snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); + unlink_directory(filename); + } +#endif /* __FOR_AOO__ */ + return (0); +} + + +/* + * 'pkg_path()' - Return an absolute path for the prototype file. + */ + +static const char * /* O - Absolute filename */ +pkg_path(const char *filename, /* I - Source filename */ + const char *dirname) /* I - Source directory */ +{ + static char absname[1024]; /* Absolute filename */ + + + if (filename[0] == '/') + return (filename); + + snprintf(absname, sizeof(absname), "%s/%s", dirname, filename); + return (absname); +} diff --git a/tmp/epm/qprintf.c b/./epm/qprintf.c index acb8c35..c8eb2a8 100644 --- a/tmp/epm/qprintf.c +++ b/./epm/qprintf.c @@ -173,12 +173,15 @@ qprintf(FILE *fp, /* I - File to write to */ for (i = slen; i > 0; i --, s ++, bytes ++) { +#if defined(__FreeBSD__) && defined(__FOR_AOO__) + if (strchr("`~!#%^&*()[{]}\\|;\'\"<>? ", *s)) +#else if (strchr("`~#$%^&*()[{]}\\|;\'\"<>? ", *s)) +#endif { putc('\\', fp); bytes ++; } - putc(*s, fp); } diff --git a/tmp/epm/rpm.c b/./epm/rpm.c index 1e9efbf..7dd89d9 100644 --- a/tmp/epm/rpm.c +++ b/./epm/rpm.c @@ -20,6 +20,7 @@ */ #include "epm.h" +#include /* @@ -106,6 +107,9 @@ make_rpm(int format, /* I - Subformat */ fprintf(fp, "Packager: %s\n", dist->packager); fprintf(fp, "Vendor: %s\n", dist->vendor); + if (format == PACKAGE_LSB || format == PACKAGE_LSB_SIGNED) + fputs("Requires: lsb >= 3.0\n", fp); + /* * Tell RPM to put the distributions in the output directory... */ @@ -185,7 +189,12 @@ make_rpm(int format, /* I - Subformat */ return (1); break; case 'i' : - snprintf(filename, sizeof(filename), "%s/buildroot%s/init.d/%s", directory, SoftwareDir, file->dst); + if (format == PACKAGE_LSB || format == PACKAGE_LSB_SIGNED) + snprintf(filename, sizeof(filename), "%s/buildroot/etc/init.d/%s", + directory, file->dst); + else + snprintf(filename, sizeof(filename), "%s/buildroot%s/init.d/%s", + directory, SoftwareDir, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); @@ -212,6 +221,7 @@ make_rpm(int format, /* I - Subformat */ } } +#ifndef __FOR_AOO__ /* * Build the distribution from the spec file... */ @@ -219,26 +229,30 @@ make_rpm(int format, /* I - Subformat */ if (Verbosity) puts("Building RPM binary distribution..."); - if (format == PACKAGE_RPM_SIGNED) + if (format == PACKAGE_LSB_SIGNED || format == PACKAGE_RPM_SIGNED) build_option = "-signed "; else build_option = ""; + + bool use_new_rpm = false; + if( access( "/usr/bin/rpmbuild", F_OK ) == -1 ) + use_new_rpm = true; if (!strcmp(platform->machine, "intel")) { - if (run_command(NULL, EPM_RPMBUILD " -bb --buildroot \"%s/buildroot\" " + if (run_command(NULL, use_new_rpm ? EPM_RPMBUILD : EPM_RPMBUILD_NEW " -bb --buildroot \"%s/buildroot\" " EPM_RPMARCH "i386 %s%s", absdir, build_option, specname)) return (1); } else if (!strcmp(platform->machine, "ppc")) { - if (run_command(NULL, EPM_RPMBUILD " -bb --buildroot \"%s/buildroot\" " + if (run_command(NULL, use_new_rpm ? EPM_RPMBUILD : EPM_RPMBUILD_NEW " -bb --buildroot \"%s/buildroot\" " EPM_RPMARCH "ppc %s%s", absdir, build_option, specname)) return (1); } - else if (run_command(NULL, EPM_RPMBUILD " -bb --buildroot \"%s/buildroot\" " + else if (run_command(NULL, use_new_rpm ? EPM_RPMBUILD : EPM_RPMBUILD_NEW " -bb --buildroot \"%s/buildroot\" " EPM_RPMARCH "%s %s%s", absdir, platform->machine, build_option, specname)) return (1); @@ -465,7 +479,7 @@ make_rpm(int format, /* I - Subformat */ dist->subpackages[i]); } } - +#endif return (0); } @@ -705,59 +719,75 @@ write_spec(int format, /* I - Subformat */ fputs("if test \"x$1\" = x1; then\n", fp); fputs(" echo Setting up init scripts...\n", fp); - /* - * Find where the frigging init scripts go... - */ - - fputs(" rcdir=\"\"\n", fp); - fputs(" for dir in /sbin/rc.d /sbin /etc/rc.d /etc ; do\n", fp); - fputs(" if test -d $dir/rc3.d -o -h $dir/rc3.d; then\n", fp); - fputs(" rcdir=\"$dir\"\n", fp); - fputs(" fi\n", fp); - fputs(" done\n", fp); - fputs(" if test \"$rcdir\" = \"\" ; then\n", fp); - fputs(" echo Unable to determine location of startup scripts!\n", fp); - fputs(" else\n", fp); - for (; i > 0; i --, file ++) + if (format == PACKAGE_LSB) { - if (tolower(file->type) == 'i' && file->subpackage == subpackage) - { - fputs(" if test -d $rcdir/init.d; then\n", fp); - qprintf(fp, " /bin/rm -f $rcdir/init.d/%s\n", file->dst); - qprintf(fp, " /bin/ln -s %s/init.d/%s " - "$rcdir/init.d/%s\n", SoftwareDir, file->dst, file->dst); - fputs(" else\n", fp); - fputs(" if test -d /etc/init.d; then\n", fp); - qprintf(fp, " /bin/rm -f /etc/init.d/%s\n", file->dst); - qprintf(fp, " /bin/ln -s %s/init.d/%s " - "/etc/init.d/%s\n", SoftwareDir, file->dst, file->dst); - fputs(" fi\n", fp); - fputs(" fi\n", fp); - - for (runlevels = get_runlevels(dist->files + i, "0123456"); - isdigit(*runlevels & 255); - runlevels ++) + /* + * Use LSB commands to install the init scripts... + */ + + for (; i > 0; i --, file ++) + if (tolower(file->type) == 'i' && file->subpackage == subpackage) { - if (*runlevels == '0') - number = get_stop(file, 0); - else - number = get_start(file, 99); - - qprintf(fp, " /bin/rm -f $rcdir/rc%c.d/%c%02d%s\n", *runlevels, - (*runlevels == '0' || *runlevels == '1' || - *runlevels == '6') ? 'K' : 'S', number, file->dst); - qprintf(fp, " /bin/ln -s %s/init.d/%s " - "$rcdir/rc%c.d/%c%02d%s\n", SoftwareDir, file->dst, - *runlevels, - (*runlevels == '0' || *runlevels == '1' || - *runlevels == '6') ? 'K' : 'S', number, file->dst); + fprintf(fp, " /usr/lib/lsb/install_initd /etc/init.d/%s\n", file->dst); + fprintf(fp, " /etc/init.d/%s start\n", file->dst); } + } + else + { + /* + * Find where the frigging init scripts go... + */ - qprintf(fp, " %s/init.d/%s start\n", SoftwareDir, file->dst); - } + fputs(" rcdir=\"\"\n", fp); + fputs(" for dir in /sbin/rc.d /sbin /etc/rc.d /etc ; do\n", fp); + fputs(" if test -d $dir/rc3.d -o -h $dir/rc3.d; then\n", fp); + fputs(" rcdir=\"$dir\"\n", fp); + fputs(" fi\n", fp); + fputs(" done\n", fp); + fputs(" if test \"$rcdir\" = \"\" ; then\n", fp); + fputs(" echo Unable to determine location of startup scripts!\n", fp); + fputs(" else\n", fp); + for (; i > 0; i --, file ++) + { + if (tolower(file->type) == 'i' && file->subpackage == subpackage) + { + fputs(" if test -d $rcdir/init.d; then\n", fp); + qprintf(fp, " /bin/rm -f $rcdir/init.d/%s\n", file->dst); + qprintf(fp, " /bin/ln -s %s/init.d/%s " + "$rcdir/init.d/%s\n", SoftwareDir, file->dst, file->dst); + fputs(" else\n", fp); + fputs(" if test -d /etc/init.d; then\n", fp); + qprintf(fp, " /bin/rm -f /etc/init.d/%s\n", file->dst); + qprintf(fp, " /bin/ln -s %s/init.d/%s " + "/etc/init.d/%s\n", SoftwareDir, file->dst, file->dst); + fputs(" fi\n", fp); + fputs(" fi\n", fp); + + for (runlevels = get_runlevels(dist->files + i, "0123456"); + isdigit(*runlevels & 255); + runlevels ++) + { + if (*runlevels == '0') + number = get_stop(file, 0); + else + number = get_start(file, 99); + + qprintf(fp, " /bin/rm -f $rcdir/rc%c.d/%c%02d%s\n", *runlevels, + (*runlevels == '0' || *runlevels == '1' || + *runlevels == '6') ? 'K' : 'S', number, file->dst); + qprintf(fp, " /bin/ln -s %s/init.d/%s " + "$rcdir/rc%c.d/%c%02d%s\n", SoftwareDir, file->dst, + *runlevels, + (*runlevels == '0' || *runlevels == '1' || + *runlevels == '6') ? 'K' : 'S', number, file->dst); + } + + qprintf(fp, " %s/init.d/%s start\n", SoftwareDir, file->dst); + } } - fputs(" fi\n", fp); + fputs(" fi\n", fp); + } fputs("fi\n", fp); } @@ -774,50 +804,66 @@ write_spec(int format, /* I - Subformat */ fputs("if test \"x$1\" = x0; then\n", fp); fputs(" echo Cleaning up init scripts...\n", fp); - /* - * Find where the frigging init scripts go... - */ + if (format == PACKAGE_LSB) + { + /* + * Use LSB commands to remove the init scripts... + */ - fputs(" rcdir=\"\"\n", fp); - fputs(" for dir in /sbin/rc.d /sbin /etc/rc.d /etc ; do\n", fp); - fputs(" if test -d $dir/rc3.d -o -h $dir/rc3.d; then\n", fp); - fputs(" rcdir=\"$dir\"\n", fp); - fputs(" fi\n", fp); - fputs(" done\n", fp); - fputs(" if test \"$rcdir\" = \"\" ; then\n", fp); - fputs(" echo Unable to determine location of startup scripts!\n", fp); - fputs(" else\n", fp); - for (; i > 0; i --, file ++) + for (; i > 0; i --, file ++) + if (tolower(file->type) == 'i' && file->subpackage == subpackage) + { + fprintf(fp, " /etc/init.d/%s stop\n", file->dst); + fprintf(fp, " /usr/lib/lsb/remove_initd /etc/init.d/%s\n", file->dst); + } + } + else { - if (tolower(file->type) == 'i' && file->subpackage == subpackage) - { - qprintf(fp, " %s/init.d/%s stop\n", SoftwareDir, file->dst); - - fputs(" if test -d $rcdir/init.d; then\n", fp); - qprintf(fp, " /bin/rm -f $rcdir/init.d/%s\n", file->dst); - fputs(" else\n", fp); - fputs(" if test -d /etc/init.d; then\n", fp); - qprintf(fp, " /bin/rm -f /etc/init.d/%s\n", file->dst); - fputs(" fi\n", fp); - fputs(" fi\n", fp); - - for (runlevels = get_runlevels(dist->files + i, "0123456"); - isdigit(*runlevels & 255); - runlevels ++) + /* + * Find where the frigging init scripts go... + */ + + fputs(" rcdir=\"\"\n", fp); + fputs(" for dir in /sbin/rc.d /sbin /etc/rc.d /etc ; do\n", fp); + fputs(" if test -d $dir/rc3.d -o -h $dir/rc3.d; then\n", fp); + fputs(" rcdir=\"$dir\"\n", fp); + fputs(" fi\n", fp); + fputs(" done\n", fp); + fputs(" if test \"$rcdir\" = \"\" ; then\n", fp); + fputs(" echo Unable to determine location of startup scripts!\n", fp); + fputs(" else\n", fp); + for (; i > 0; i --, file ++) + { + if (tolower(file->type) == 'i' && file->subpackage == subpackage) { - if (*runlevels == '0') - number = get_stop(file, 0); - else - number = get_start(file, 99); - - qprintf(fp, " /bin/rm -f $rcdir/rc%c.d/%c%02d%s\n", *runlevels, - (*runlevels == '0' || *runlevels == '1' || - *runlevels == '6') ? 'K' : 'S', number, file->dst); + qprintf(fp, " %s/init.d/%s stop\n", SoftwareDir, file->dst); + + fputs(" if test -d $rcdir/init.d; then\n", fp); + qprintf(fp, " /bin/rm -f $rcdir/init.d/%s\n", file->dst); + fputs(" else\n", fp); + fputs(" if test -d /etc/init.d; then\n", fp); + qprintf(fp, " /bin/rm -f /etc/init.d/%s\n", file->dst); + fputs(" fi\n", fp); + fputs(" fi\n", fp); + + for (runlevels = get_runlevels(dist->files + i, "0123456"); + isdigit(*runlevels & 255); + runlevels ++) + { + if (*runlevels == '0') + number = get_stop(file, 0); + else + number = get_start(file, 99); + + qprintf(fp, " /bin/rm -f $rcdir/rc%c.d/%c%02d%s\n", *runlevels, + (*runlevels == '0' || *runlevels == '1' || + *runlevels == '6') ? 'K' : 'S', number, file->dst); + } } - } } - fputs(" fi\n", fp); + fputs(" fi\n", fp); + } fputs("fi\n", fp); } @@ -890,7 +936,12 @@ write_spec(int format, /* I - Subformat */ file->group, file->dst); break; case 'i' : - fprintf(fp, "%%attr(0555,root,root) \"%s/init.d/%s\"\n", SoftwareDir, file->dst); + if (format == PACKAGE_LSB) + fprintf(fp, "%%attr(0555,root,root) \"/etc/init.d/%s\"\n", + file->dst); + else + fprintf(fp, "%%attr(0555,root,root) \"%s/init.d/%s\"\n", + SoftwareDir, file->dst); break; } diff --git a/./epm/setld.c b/./epm/setld.c new file mode 100644 index 0000000..ac399f7 --- /dev/null +++ b/./epm/setld.c @@ -0,0 +1,456 @@ +/* + * Tru64 package gateway for the ESP Package Manager (EPM) + * + * Copyright 2001-2017 by Michael R Sweet + * Copyright 2001-2010 by Easy Software Products + * Copyright 2001 by Aneesh Kumar (aneesh.kumar@digital.com) at Digital India. + * + * 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, 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 necessary headers... + */ + +#include "epm.h" + + +/* + * 'make_setld()' - Make a Tru64 setld package. + */ + +int /* O - 0 = success, 1 = fail */ +make_setld(const char *prodname, /* I - Product short name */ + const char *directory, /* I - Directory for distribution files */ + const char *platname, /* I - Platform name */ + dist_t *dist, /* I - Distribution information */ + struct utsname *platform) /* I - Platform information */ +{ + int i, j; /* Looping vars */ + FILE *fp; /* Spec file */ + tarf_t *tarfile; /* .tardist file */ + char name[1024]; /* Full product name */ + char scpname[1024]; /* XXXVVV control program filename */ + char miname[1024]; /* XXXVVV.mi filename */ + char keyname[1024]; /* XXXVVV.key filename */ + char filename[1024]; /* Destination filename */ + char subset[1024]; /* Subset name */ + file_t *file; /* Current distribution file */ + command_t *c; /* Current command */ + char current[1024]; /* Current directory */ + struct passwd *pwd; /* Pointer to user record */ + struct group *grp; /* Pointer to group record */ + const char *runlevels; /* Run levels */ + + + REF(platform); + + /* + * Check the package information to make sure it complies with the + * extremely limited Tru64 packager requirements. + */ + + if (dist->vernumber < 100 || dist->vernumber > 999) + { + fprintf(stderr, "epm: Need a version number between 100 and 999 inclusive.\n" + " The current version number (%d) is out of range.\n", + dist->vernumber); + return (1); + } + + if (strlen(prodname) < 3) + { + fprintf(stderr, "epm: Need a product name of at least 3 uppercase characters.\n" + " The current product name (%s) is not acceptable.\n", + prodname); + return (1); + } + + for (i = 0; prodname[i]; i ++) + if (!isupper(prodname[i] & 255)) + { + fprintf(stderr, "epm: Need a product name of at least 3 uppercase characters.\n" + " The current product name (%s) is not acceptable.\n", + prodname); + return (1); + } + + for (i = 0; i < dist->num_subpackages; i ++) + { + if ((strlen(dist->subpackages[i]) + strlen(prodname)) > 77) + { + fprintf(stderr, "epm: Product + subpackage names must be less than 77 characters.\n" + " The current subpackage name (%s) is not acceptable.\n", + dist->subpackages[i]); + return (1); + } + + for (j = 0; dist->subpackages[i][j]; j ++) + if (!isupper(dist->subpackages[i][j] & 255)) + { + fprintf(stderr, "epm: Subpackage names may only contain uppercase letters.\n" + " The current subpackage name (%s) is not acceptable.\n", + dist->subpackages[i]); + return (1); + } + } + + /* + * Prepare for packaging... + */ + + if (dist->release[0]) + { + if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, dist->version, + dist->release, platname); + else + snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, + dist->release); + } + else if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); + else + snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); + + getcwd(current, sizeof(current)); + + /* + * Add symlinks for init scripts... + */ + + for (i = 0; i < dist->num_files; i ++) + if (tolower(dist->files[i].type) == 'i') + { + /* + * Make symlinks for all of the selected run levels... + */ + + for (runlevels = get_runlevels(dist->files + i, "023"); + isdigit(*runlevels & 255); + runlevels ++) + { + file = add_file(dist, dist->files[i].subpackage); + file->type = 'l'; + file->mode = 0; + strlcpy(file->user, "root", sizeof(file->user)); + strlcpy(file->group, "sys", sizeof(file->group)); + snprintf(file->src, sizeof(file->src), "../init.d/%s", + dist->files[i].dst); + + if (*runlevels == '0') + snprintf(file->dst, sizeof(file->dst), "/sbin/rc0.d/K%02d%s", + get_stop(dist->files + i, 0), dist->files[i].dst); + else + snprintf(file->dst, sizeof(file->dst), "/sbin/rc%c.d/S%02d%s", + *runlevels, get_start(dist->files + i, 99), + dist->files[i].dst); + } + + /* + * Then send the original file to /sbin/init.d... + */ + + file = dist->files + i; + + snprintf(filename, sizeof(filename), "/sbin/init.d/%s", file->dst); + strlcpy(file->dst, filename, sizeof(file->dst)); + } + + /* + * Build package directories... + * + * Note: The src/scps directory and the key, inventory, and + * subset control programs below should actually go in + * a data subdirectory according to the Tru64 + * documentation, but (at least under 4.0d) the invcutter + * program will not be able to find the distribution files + * if they are not colocated with these data files. + */ + + if (Verbosity) + puts("Creating Tru64 (setld) distribution..."); + + snprintf(filename, sizeof(filename), "%s/output", directory); + unlink_directory(filename); + + snprintf(filename, sizeof(filename), "%s/src", directory); + unlink_directory(filename); + + snprintf(filename, sizeof(filename), "%s/output", directory); + mkdir(filename, 0777); + + snprintf(filename, sizeof(filename), "%s/src", directory); + mkdir(filename, 0777); + + snprintf(filename, sizeof(filename), "%s/src/scps", directory); + mkdir(filename, 0777); + + /* + * Write the subset control program... + */ + + if (Verbosity) + puts("Creating subset control program..."); + + snprintf(scpname, sizeof(scpname), "%s/src/scps/%sALL%03d.scp", directory, + prodname, dist->vernumber); + + if ((fp = fopen(scpname, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create subset control program \"%s\": %s\n", scpname, strerror(errno)); + return (1); + } + + fputs("#!/bin/sh\n", fp); + fputs("case $ACT in\n", fp); + + fputs("PRE_L)\n", fp); + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + { + qprintf(fp, "if test -x %s; then\n", file->dst); + qprintf(fp, " %s stop\n", file->dst); + fputs("fi\n", fp); + } + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_INSTALL) + fprintf(fp, "%s\n", c->command); + fputs(";;\n", fp); + + fputs("POST_L)\n", fp); + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_INSTALL) + fprintf(fp, "%s\n", c->command); + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'c') + { + qprintf(fp, "if test ! -f %s; then\n", file->dst); + qprintf(fp, " /bin/cp %s.N %s\n", file->dst, file->dst); + fputs("fi\n", fp); + } + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + qprintf(fp, "%s start\n", file->dst); + fputs(";;\n", fp); + + fputs("PRE_D)\n", fp); + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + qprintf(fp, "%s stop\n", file->dst); + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_REMOVE) + fprintf(fp, "%s\n", c->command); + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'c') + { + qprintf(fp, "if cmp -s %s.N %s; then\n", file->dst, file->dst); + qprintf(fp, " /bin/rm -f %s\n", file->dst); + fputs("fi\n", fp); + } + fputs(";;\n", fp); + + fputs("POST_D)\n", fp); + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_REMOVE) + fprintf(fp, "%s\n", c->command); + fputs(";;\n", fp); + + fputs("esac\n", fp); + + fclose(fp); + + /* + * Sort the file list by the destination name, since kits need a sorted + * list... + */ + + sort_dist_files(dist); + + /* + * Now do the inventory file... + */ + + if (Verbosity) + puts("Creating master inventory file..."); + + snprintf(miname, sizeof(miname), "%s/src/%s%03d.mi", directory, prodname, dist->vernumber); + + if ((fp = fopen(miname, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create master inventory file \"%s\": %s\n", miname, strerror(errno)); + return (1); + } + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + { + snprintf(subset, sizeof(subset), "%s%s%03d", prodname, + file->subpackage ? file->subpackage : "ALL", dist->vernumber); + + switch (tolower(file->type)) + { + case 'c' : + fprintf(fp, "2\t.%s.N\t%s\n", file->dst, subset); + break; + case 'd' : + case 'i' : + case 'f' : + case 'l' : + fprintf(fp, "0\t.%s\t%s\n", file->dst, subset); + break; + } + } + + fclose(fp); + + /* + * Create the key file... + */ + + if (Verbosity) + puts("Creating key file..."); + + snprintf(keyname, sizeof(keyname), "%s/src/%s%03d.k", directory, prodname, + dist->vernumber); + + if ((fp = fopen(keyname, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create key file \"%s\": %s\n", keyname, strerror(errno)); + return (1); + } + + qprintf(fp, "NAME='%s, %s'\n", dist->product, dist->version); + fprintf(fp, "CODE=%s\n", prodname); + fprintf(fp, "VER=%03d\n", dist->vernumber); + fprintf(fp, "MI=%s%03d.mi\n", prodname, dist->vernumber); + fputs("COMPRESS=0\n", fp); + fputs("%%\n", fp); + qprintf(fp, "%sALL%03d\t.\t0\t'%s, %s'\n", prodname, dist->vernumber, + dist->product, dist->version); + for (i = 0; i < dist->num_subpackages; i ++) + qprintf(fp, "%s%s%03d\t.\t0\t'%s, %s'\n", prodname, dist->subpackages[i], + dist->vernumber, dist->product, dist->version); + fclose(fp); + + /* + * Copy the files over... + */ + + if (Verbosity) + puts("Copying temporary distribution files..."); + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + { + /* + * Find the username and groupname IDs... + */ + + pwd = getpwnam(file->user); + grp = getgrnam(file->group); + + endpwent(); + endgrent(); + + /* + * Copy the file or make the directory or make the symlink as needed... + */ + + switch (tolower(file->type)) + { + case 'c' : + case 'f' : + case 'i' : + snprintf(filename, sizeof(filename), "%s/src%s", directory, file->dst); + + if (Verbosity > 1) + printf("%s -> %s...\n", file->src, filename); + + if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, + grp ? grp->gr_gid : 0)) + return (1); + break; + + case 'd' : + snprintf(filename, sizeof(filename), "%s/src%s", directory, file->dst); + + if (Verbosity > 1) + printf("Directory %s...\n", filename); + + make_directory(filename, file->mode, pwd ? pwd->pw_uid : 0, + grp ? grp->gr_gid : 0); + break; + + case 'l' : + snprintf(filename, sizeof(filename), "%s/src%s", directory, file->dst); + + if (Verbosity > 1) + printf("%s -> %s...\n", file->src, filename); + + make_link(filename, file->src); + break; + } + } + + /* + * Build the distribution from the inventory and control files... + */ + + if (Verbosity) + puts("Building Tru64 (setld) distribution..."); + + snprintf(filename, sizeof(filename), "%s/src", directory); + chdir(filename); + + if (run_command(NULL, "kits %s%03d.k . ../output", prodname, dist->vernumber)) + return (1); + + chdir(current); + + /* + * Tar and compress the distribution... + */ + + if (Verbosity) + puts("Creating tar.gz file for distribution..."); + + snprintf(filename, sizeof(filename), "%s/%s.tar.gz", directory, name); + + if ((tarfile = tar_open(filename, 1)) == NULL) + return (1); + + snprintf(filename, sizeof(filename), "%s/output", directory); + + if (tar_directory(tarfile, filename, prodname)) + { + tar_close(tarfile); + return (1); + } + + tar_close(tarfile); + + /* + * Remove temporary files... + */ + + if (!KeepFiles) + { + if (Verbosity) + puts("Removing temporary distribution files..."); + + snprintf(filename, sizeof(filename), "%s/output", directory); + unlink_directory(filename); + + snprintf(filename, sizeof(filename), "%s/src", directory); + unlink_directory(filename); + } + + return (0); +} diff --git a/./epm/slackware.c b/./epm/slackware.c new file mode 100644 index 0000000..7018cc1 --- /dev/null +++ b/./epm/slackware.c @@ -0,0 +1,320 @@ +/* + * Slackware package gateway for the ESP Package Manager (EPM). + * + * Copyright 2003-2017 by Michael R Sweet + * Copyright 2003-2010 by Easy Software Products. + * + * Contributed by Alec Thomas <$givenname at korn dot ch> + * + * 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, 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 necessary headers... + */ + +#include "epm.h" + + +/* + * Local functions... + */ + +static int make_subpackage(const char *prodname, const char *directory, + const char *platname, dist_t *dist, + const char *subpackage); + + +/* + * 'make_slackware()' - Make a Slackware software distribution packages. + */ + +int /* O - 0 = success, 1 = fail */ +make_slackware(const char *prodname,/* I - Product short name */ + const char *directory, + /* I - Directory for distribution files */ + const char *platname,/* I - Platform name */ + dist_t *dist, /* I - Distribution information */ + struct utsname *platform)/* I - Platform information */ +{ + int i; /* Looping var */ + + + REF(platform); + + /* + * Check to see if we are being run as root... + */ + + if (getuid()) + { + fprintf(stderr, "ERROR: Can only make Slackware packages as root\n"); + return (1); + } + + /* + * Create subpackages... + */ + + if (make_subpackage(prodname, directory, platname, dist, NULL)) + return (1); + + for (i = 0; i < dist->num_subpackages; i ++) + if (make_subpackage(prodname, directory, platname, dist, + dist->subpackages[i])) + return (1); + + return (0); +} + + +/* + * 'make_subpackage()' - Make a Slackware subpackage. + */ + +static int /* O - 0 = success, 1 = fail */ +make_subpackage(const char *prodname, /* I - Product short name */ + const char *directory, /* I - Directory for distribution files */ + const char *platname, /* I - Platform name */ + dist_t *dist, /* I - Distribution information */ + const char *subpackage) /* I - Subpackage name */ +{ + int i; /* Looping var */ + FILE *fp; /* Spec file */ + char prodfull[1024], /* Full name of product */ + filename[1024], /* Destination filename */ + pkgname[1024]; /* Package filename */ + file_t *file; /* Current distribution file */ + command_t *c; /* Current command */ + struct passwd *pwd; /* Pointer to user record */ + struct group *grp; /* Pointer to group record */ + struct utsname platform; /* Original platform data */ + + + /* + * Figure out the full product name... + */ + + if (subpackage) + snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); + else + strlcpy(prodfull, prodname, sizeof(prodfull)); + + if (Verbosity) + printf("Creating Slackware %s pkg distribution...\n", prodfull); + + /* + * Slackware uses the real machine type in its package names... + */ + + if (uname(&platform)) + { + fprintf(stderr, "ERROR: Can't get platform information: %s\n", strerror(errno)); + + return (1); + } + + snprintf(pkgname, sizeof(pkgname), "%s-%s-%s-%s.tgz", prodfull, + dist->version, platform.machine, dist->release); + + /* + * Make a copy of the distribution files... + */ + + if (Verbosity) + puts("Copying temporary distribution files..."); + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + { + /* + * Check subpackage... + */ + + if (file->subpackage != subpackage) + continue; + + /* + * Find the user and group IDs... + */ + + pwd = getpwnam(file->user); + grp = getgrnam(file->group); + + endpwent(); + endgrent(); + + /* + * Copy the file, make the directory, or make the symlink as needed... + */ + + switch (tolower(file->type)) + { + case 'c' : + case 'f' : + snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodfull, + file->dst); + + if (Verbosity > 1) + printf("F %s -> %s...\n", file->src, filename); + + if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, + grp ? grp->gr_gid : 0)) + return (1); + break; + + case 'i' : + snprintf(filename, sizeof(filename), "%s/%s/etc/rc.d/%s", directory, + prodfull, file->dst); + + if (Verbosity > 1) + printf("I %s -> %s...\n", file->src, filename); + + if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, + grp ? grp->gr_gid : 0)) + return (1); + break; + + case 'd' : + snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodfull, + file->dst); + + if (Verbosity > 1) + printf("D %s...\n", filename); + + make_directory(filename, file->mode, pwd ? pwd->pw_uid : 0, + grp ? grp->gr_gid : 0); + break; + + case 'l' : + snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodfull, + file->dst); + + if (Verbosity > 1) + printf("L %s -> %s...\n", file->src, filename); + + make_link(filename, file->src); + break; + } + } + + /* + * Write descriptions and post-install commands as needed... + */ + + for (i = 0; i < dist->num_descriptions; i ++) + if (dist->descriptions[i].subpackage == subpackage) + break; + + if (i < dist->num_descriptions) + { + snprintf(filename, sizeof(filename), "%s/%s/install", directory, prodfull); + make_directory(filename, 0755, 0, 0); + + strlcat(filename, "/slack-desc", sizeof(filename)); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "ERROR: Couldn't create Slackware description file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + fprintf(fp, "%s: %s\n%s:\n", prodfull, dist->product, prodfull); + + for (; i < dist->num_descriptions; i ++) + if (dist->descriptions[i].subpackage == subpackage) + fprintf(fp, "%s: %s\n", prodfull, dist->descriptions[i].description); + + fprintf(fp, "%s:\n", prodfull); + fprintf(fp, "%s: (Vendor: %s, Packager: %s)\n", prodfull, dist->vendor, + dist->packager); + fprintf(fp, "%s:\n", prodfull); + + fclose(fp); + } + + for (i = 0, c = dist->commands; i < dist->num_commands; i ++, c ++) + if (c->subpackage == subpackage) + break; + + if (i < dist->num_commands) + { + snprintf(filename, sizeof(filename), "%s/%s/install", directory, prodfull); + make_directory(filename, 0755, 0, 0); + + strlcat(filename, "/doinst.sh", sizeof(filename)); + + if (!(fp = fopen(filename, "w"))) + { + fprintf(stderr, "ERROR: Couldn't create post install script \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + fputs("#!/bin/sh\n", fp); + + for (i = 0, c = dist->commands; i < dist->num_commands; i ++, c ++) + if (c->subpackage == subpackage) + { + switch (c->type) + { + case COMMAND_PRE_INSTALL : + fputs("WARNING: Package contains pre-install commands which are not supported\n" + " by the Slackware packager.\n", stderr); + break; + + case COMMAND_POST_INSTALL : + fprintf(fp, "%s\n", c->command); + break; + + case COMMAND_PRE_REMOVE : + fputs("WARNING: Package contains pre-removal commands which are not supported\n" + " by the Slackware packager.\n", stderr); + break; + + case COMMAND_POST_REMOVE : + fputs("WARNING: Package contains post-removal commands which are not supported\n" + " by the Slackware packager.\n", stderr); + break; + } + } + + fclose(fp); + } + + /* + * Remove any existing package of the same name, then create the + * package... + */ + + snprintf(filename, sizeof(filename), "%s/%s", directory, pkgname); + unlink(filename); + + if (Verbosity) + puts("Building Slackware package..."); + + snprintf(filename, sizeof(filename), "%s/%s", directory, prodfull); + + if (run_command(filename, "makepkg --linkadd y --chown n ../%s", pkgname)) + return (1); + + /* + * Remove temporary files... + */ + + if (!KeepFiles) + { + if (Verbosity) + puts("Removing temporary distribution files..."); + + unlink_directory(filename); + } + + return (0); +} diff --git a/./epm/swinstall.c b/./epm/swinstall.c new file mode 100644 index 0000000..1bf9d30 --- /dev/null +++ b/./epm/swinstall.c @@ -0,0 +1,735 @@ +/* + * HP-UX package gateway for the ESP Package Manager (EPM). + * + * Copyright 1999-2017 by Michael R Sweet + * Copyright 1999-2010 by Easy Software Products. + * + * 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, 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 necessary headers... + */ + +#include "epm.h" + + +/* + * Local functions... + */ + +static void write_fileset(FILE *fp, dist_t *dist, const char *directory, + const char *prodname, const char *subpackage); + + +/* + * 'make_swinstall()' - Make an HP-UX software distribution package. + */ + +int /* O - 0 = success, 1 = fail */ +make_swinstall(const char *prodname,/* I - Product short name */ + const char *directory, + /* I - Directory for distribution files */ + const char *platname,/* I - Platform name */ + dist_t *dist, /* I - Distribution information */ + struct utsname *platform)/* I - Platform information */ +{ + int i, j; /* Looping vars */ + FILE *fp; /* Spec/script file */ + tarf_t *tarfile; /* .tardist file */ + int linknum; /* Symlink number */ + const char *vendor; /* Pointer into vendor name */ + char vtag[65], /* Vendor tag */ + *vtagptr; /* Pointer into vendor tag */ + char name[1024]; /* Full product name */ + char infoname[1024], /* Info filename */ + preinstall[1024], /* preinstall script */ + postinstall[1024], /* postinstall script */ + preremove[1024], /* preremove script */ + postremove[1024]; /* postremove script */ + char filename[1024]; /* Destination filename */ + file_t *file; /* Current distribution file */ + command_t *c; /* Current command */ + const char *runlevels; /* Run levels */ + + + REF(platform); + + if (Verbosity) + puts("Creating swinstall distribution..."); + + if (dist->release[0]) + { + if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, + dist->version, dist->release, platname); + else + snprintf(name, sizeof(name), "%s-%s-%s", prodname, + dist->version, dist->release); + } + else if (platname[0]) + snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); + else + snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); + + /* + * Write the preinstall script if needed... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_INSTALL) + break; + + if (i) + { + /* + * Create the preinstall script... + */ + + snprintf(preinstall, sizeof(preinstall), "%s/%s.preinst", directory, + prodname); + + if (Verbosity) + puts("Creating preinstall script..."); + + if ((fp = fopen(preinstall, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preinstall, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_INSTALL) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + else + preinstall[0] = '\0'; + + /* + * Write the postinstall script if needed... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_INSTALL) + break; + + if (!i) + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + break; + + if (i) + { + /* + * Create the postinstall script... + */ + + snprintf(postinstall, sizeof(postinstall), "%s/%s.postinst", directory, + prodname); + + if (Verbosity) + puts("Creating postinstall script..."); + + if ((fp = fopen(postinstall, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postinstall, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_INSTALL) + fprintf(fp, "%s\n", c->command); + + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + qprintf(fp, "/sbin/init.d/%s start\n", file->dst); + + fclose(fp); + } + else + postinstall[0] = '\0'; + + /* + * Write the preremove script if needed... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_REMOVE) + break; + + if (!i) + for (i = dist->num_files, file = dist->files; i > 0; i --, file ++) + if (tolower(file->type) == 'i') + break; + + if (i) + { + /* + * Then create the remove script... + */ + + if (Verbosity) + puts("Creating preremove script..."); + + snprintf(preremove, sizeof(preremove), "%s/%s.prerm", directory, prodname); + + if ((fp = fopen(preremove, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preremove, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (j = dist->num_files, file = dist->files; j > 0; j --, file ++) + if (tolower(file->type) == 'i') + qprintf(fp, "/sbin/init.d/%s stop\n", file->dst); + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_PRE_REMOVE) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + else + preremove[0] = '\0'; + + /* + * Write the postremove script if needed... + */ + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_REMOVE) + break; + + if (i) + { + /* + * Create the postremove script... + */ + + snprintf(postremove, sizeof(postremove), "%s/%s.postrm", directory, + prodname); + + if (Verbosity) + puts("Creating postremove script..."); + + if ((fp = fopen(postremove, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postremove, strerror(errno)); + return (1); + } + + fchmod(fileno(fp), 0755); + + fputs("#!/bin/sh\n", fp); + fputs("# " EPM_VERSION "\n", fp); + + for (i = dist->num_commands, c = dist->commands; i > 0; i --, c ++) + if (c->type == COMMAND_POST_REMOVE) + fprintf(fp, "%s\n", c->command); + + fclose(fp); + } + else + postremove[0] = '\0'; + + /* + * Add symlinks for init scripts... + */ + + for (i = 0; i < dist->num_files; i ++) + if (tolower(dist->files[i].type) == 'i') + { + /* + * Make symlinks for all of the selected run levels... + */ + + for (runlevels = get_runlevels(dist->files + i, "02"); + isdigit(*runlevels & 255); + runlevels ++) + { + file = add_file(dist, dist->files[i].subpackage); + file->type = 'l'; + file->mode = 0; + strlcpy(file->user, "root", sizeof(file->user)); + strlcpy(file->group, "sys", sizeof(file->group)); + snprintf(file->src, sizeof(file->src), "../init.d/%s", + dist->files[i].dst); + + if (*runlevels == '0') + snprintf(file->dst, sizeof(file->dst), "/sbin/rc0.d/K%02d0%s", + get_stop(dist->files + i, 0), dist->files[i].dst); + else + snprintf(file->dst, sizeof(file->dst), "/sbin/rc%c.d/S%02d0%s", + *runlevels, get_start(dist->files + i, 99), + dist->files[i].dst); + } + + /* + * Then send the original file to /sbin/init.d... + */ + + file = dist->files + i; + + snprintf(filename, sizeof(filename), "/sbin/init.d/%s", file->dst); + strlcpy(file->dst, filename, sizeof(file->dst)); + } + + /* + * Create all symlinks... + */ + + if (Verbosity) + puts("Creating symlinks..."); + + for (i = dist->num_files, file = dist->files, linknum = 0; + i > 0; + i --, file ++) + if (tolower(file->type) == 'l') + { + snprintf(filename, sizeof(filename), "%s/%s.link%04d", directory, + prodname, linknum); + symlink(file->src, filename); + linknum ++; + } + + /* + * Write the description file(s) for swpackage... + */ + + if (dist->num_descriptions > 0) + { + if (Verbosity) + puts("Creating description file(s)..."); + + for (i = 0; i < dist->num_descriptions; i ++) + if (!dist->descriptions[i].subpackage) + break; + + if (i < dist->num_descriptions) + { + snprintf(filename, sizeof(filename), "%s/%s.desc", directory, prodname); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create description file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + for (; i < dist->num_descriptions; i ++) + if (!dist->descriptions[i].subpackage) + fprintf(fp, "%s\n", dist->descriptions[i].description); + + fclose(fp); + } + + for (i = 0; i < dist->num_subpackages; i ++) + { + for (j = 0; j < dist->num_descriptions; j ++) + if (dist->descriptions[j].subpackage == dist->subpackages[i]) + break; + + if (j < dist->num_descriptions) + { + snprintf(filename, sizeof(filename), "%s/%s-%s.desc", directory, + prodname, dist->subpackages[i]); + + if ((fp = fopen(filename, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create description file \"%s\": %s\n", filename, strerror(errno)); + return (1); + } + + for (; j < dist->num_descriptions; j ++) + if (dist->descriptions[j].subpackage == dist->subpackages[i]) + fprintf(fp, "%s\n", dist->descriptions[j].description); + + fclose(fp); + } + } + } + + /* + * Write the info file for swpackage... + */ + + if (Verbosity) + puts("Creating info file..."); + + snprintf(infoname, sizeof(infoname), "%s/%s.info", directory, prodname); + + if ((fp = fopen(infoname, "w")) == NULL) + { + fprintf(stderr, "epm: Unable to create info file \"%s\": %s\n", infoname, strerror(errno)); + return (1); + } + + /* + * Figure out the vendor tag and write a vendor class... + */ + + for (vendor = dist->vendor, vtagptr = vtag; *vendor; vendor ++) + if (isalnum(*vendor) && vtagptr < (vtag + sizeof(vtag) - 1)) + *vtagptr++ = *vendor; + + *vtagptr = '\0'; + + fputs("vendor\n", fp); + fprintf(fp, " tag %s\n", vtag); + fprintf(fp, " description %s\n", dist->vendor); + fprintf(fp, " title %s\n", dist->vendor); + fputs("end\n", fp); + + /* + * Then the product class... + */ + + fputs("product\n", fp); + fprintf(fp, " tag %s\n", prodname); + fprintf(fp, " revision %s\n", dist->version); + fprintf(fp, " title %s, %s\n", dist->product, dist->version); + + snprintf(filename, sizeof(filename), "%s/%s.desc", directory, prodname); + if (!access(filename, 0)) + fprintf(fp, " description < %s\n", filename); + if (dist->license[0]) + { + if (strncmp(dist->license, "./", 2)) + fprintf(fp, " copyright < %s\n", dist->license); + else + fprintf(fp, " copyright < %s\n", dist->license + 2); + } + if (dist->readme[0]) + { + if (strncmp(dist->readme, "./", 2)) + fprintf(fp, " readme < %s\n", dist->readme); + else + fprintf(fp, " readme < %s\n", dist->readme + 2); + } + fprintf(fp, " vendor_tag %s\n", vtag); + fputs(" is_locatable false\n", fp); + + if (dist->num_subpackages > 0) + { + /* + * Write subproduct specifications... + */ + + fputs(" subproduct\n", fp); + fputs(" tag base\n", fp); + fputs(" contents fs_base\n", fp); + fprintf(fp, " revision %s\n", dist->version); + + for (i = 0; i < dist->num_descriptions; i ++) + if (!dist->descriptions[i].subpackage) + { + fprintf(fp, " title %s, %s\n", dist->descriptions[i].description, + dist->version); + break; + } + + if (!access(filename, 0)) + fprintf(fp, " description < %s\n", filename); + fputs(" end\n", fp); + + for (i = 0; i < dist->num_subpackages; i ++) + { + fputs(" subproduct\n", fp); + fprintf(fp, " tag %s\n", dist->subpackages[i]); + fprintf(fp, " contents fs_%s\n", dist->subpackages[i]); + fprintf(fp, " revision %s\n", dist->version); + + for (j = 0; j < dist->num_descriptions; j ++) + if (dist->descriptions[j].subpackage == dist->subpackages[i]) + { + fprintf(fp, " title %s, %s\n", dist->descriptions[j].description, + dist->version); + break; + } + + snprintf(filename, sizeof(filename), "%s/%s-%s.desc", directory, + prodname, dist->subpackages[i]); + if (!access(filename, 0)) + fprintf(fp, " description < %s\n", filename); + fputs(" end\n", fp); + } + } + + /* + * Write filesets... + */ + + write_fileset(fp, dist, directory, prodname, NULL); + for (i = 0; i < dist->num_subpackages; i ++) + write_fileset(fp, dist, directory, prodname, dist->subpackages[i]); + + fputs("end\n", fp); + + fclose(fp); + + /* + * Build the distributions from the spec file... + */ + + if (Verbosity) + puts("Building swinstall depot.gz distribution..."); + + snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); + mkdir(filename, 0777); + + if (run_command(NULL, "/usr/sbin/swpackage %s-s %s " + "-x target_type=tape " + "-d '|" EPM_GZIP " -9 >%s/%s.depot.gz' %s", + Verbosity == 0 ? "" : "-v ", infoname, directory, + name, prodname)) + return (1); + + if (Verbosity) + puts("Building swinstall binary distribution..."); + + snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); + mkdir(filename, 0777); + + if (run_command(NULL, "/usr/sbin/swpackage %s-s %s -d %s/%s " + "-x write_remote_files=true %s", + Verbosity == 0 ? "" : "-v ", infoname, directory, + prodname, prodname)) + return (1); + + /* + * Tar and compress the distribution... + */ + + if (Verbosity) + puts("Creating depot.tgz file for distribution..."); + + snprintf(filename, sizeof(filename), "%s/%s.depot.tgz", directory, name); + + if ((tarfile = tar_open(filename, 1)) == NULL) + return (1); + + snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); + + if (tar_directory(tarfile, filename, prodname)) + { + tar_close(tarfile); + return (1); + } + + tar_close(tarfile); + + /* + * Remove temporary files... + */ + + if (!KeepFiles) + { + if (Verbosity) + puts("Removing temporary distribution files..."); + + unlink(infoname); + + if (preinstall[0]) + unlink(preinstall); + if (postinstall[0]) + unlink(postinstall); + if (preremove[0]) + unlink(preremove); + if (postremove[0]) + unlink(postremove); + + while (linknum > 0) + { + linknum --; + snprintf(filename, sizeof(filename), "%s/%s.link%04d", directory, + prodname, linknum); + unlink(filename); + } + + snprintf(filename, sizeof(filename), "%s/%s.desc", directory, prodname); + unlink(filename); + + for (i = 0; i < dist->num_subpackages; i ++) + { + snprintf(filename, sizeof(filename), "%s/%s-%s.desc", directory, + prodname, dist->subpackages[i]); + unlink(filename); + } + } + + return (0); +} + + +/* + * 'write_fileset()' - Write a fileset specification for a subpackage. + */ + +static void +write_fileset(FILE *fp, /* I - File to write to */ + dist_t *dist, /* I - Distribution */ + const char *directory, /* I - Output directory */ + const char *prodname, /* I - Product name */ + const char *subpackage) /* I - Subpackage to write */ +{ + int i; /* Looping var */ + char filename[1024]; /* Temporary filename */ + depend_t *d; /* Current dependency */ + file_t *file; /* Current distribution file */ + int linknum; /* Symlink number */ + + + fputs(" fileset\n", fp); + fprintf(fp, " tag fs_%s\n", subpackage ? subpackage : "base"); + fprintf(fp, " revision %s\n", dist->version); + + for (i = 0; i < dist->num_descriptions; i ++) + if (dist->descriptions[i].subpackage == subpackage) + { + fprintf(fp, " title %s, %s\n", dist->descriptions[i].description, + dist->version); + break; + } + + for (i = dist->num_depends, d = dist->depends; i > 0; i --, d ++) + if (d->type == DEPEND_REQUIRES && d->product[0] != '/' && + d->subpackage == subpackage) + break; + + if (i) + { + for (; i > 0; i --, d ++) + { + if (d->type == DEPEND_REQUIRES && d->product[0] != '/' && + d->subpackage == subpackage) + { + if (!strcmp(d->product, "_self")) + fprintf(fp, " prerequisites %s", prodname); + else + fprintf(fp, " prerequisites %s", d->product); + + if (d->vernumber[0] == 0) + { + if (d->vernumber[1] < INT_MAX) + fprintf(fp, ",r<=%s\n", d->version[1]); + else + putc('\n', fp); + } + else + fprintf(fp, ",r>=%s,r<=%s\n", d->version[0], d->version[1]); + } + } + } + + for (i = dist->num_depends, d = dist->depends; i > 0; i --, d ++) + if (d->type == DEPEND_REPLACES && d->product[0] != '/' && + d->subpackage == subpackage) + break; + + if (i) + { + for (; i > 0; i --, d ++) + { + if (d->type == DEPEND_REPLACES && d->product[0] != '/' && + d->subpackage == subpackage) + { + fprintf(fp, " ancestor %s", d->product); + if (d->vernumber[0] == 0) + { + if (d->vernumber[1] < INT_MAX) + fprintf(fp, ",r<=%s\n", d->version[1]); + else + putc('\n', fp); + } + else + fprintf(fp, ",r>=%s,r<=%s\n", d->version[0], d->version[1]); + } + } + } + + if (!subpackage) + { + /* + * Write scripts... + */ + + snprintf(filename, sizeof(filename), "%s/%s.preinst", directory, prodname); + if (!access(filename, 0)) + fprintf(fp, " preinstall %s\n", filename); + + snprintf(filename, sizeof(filename), "%s/%s.postinst", directory, prodname); + if (!access(filename, 0)) + fprintf(fp, " postinstall %s\n", filename); + + snprintf(filename, sizeof(filename), "%s/%s.prerm", directory, prodname); + if (!access(filename, 0)) + fprintf(fp, " preremove %s\n", filename); + + snprintf(filename, sizeof(filename), "%s/%s.postrm", directory, prodname); + if (!access(filename, 0)) + fprintf(fp, " postremove %s\n", filename); + } + + for (i = dist->num_files, file = dist->files, linknum = 0; + i > 0; + i --, file ++) + { + if (file->subpackage != subpackage) + { + if (tolower(file->type) == 'l') + linknum ++; + + continue; + } + + switch (tolower(file->type)) + { + case 'd' : + qprintf(fp, " file -m %04o -o %s -g %s . %s\n", file->mode, + file->user, file->group, file->dst); + break; + case 'c' : + qprintf(fp, " file -m %04o -o %s -g %s -v %s %s\n", file->mode, + file->user, file->group, file->src, file->dst); + break; + case 'f' : + case 'i' : + qprintf(fp, " file -m %04o -o %s -g %s %s %s\n", file->mode, + file->user, file->group, file->src, file->dst); + break; + case 'l' : + snprintf(filename, sizeof(filename), "%s/%s.link%04d", directory, + prodname, linknum); + linknum ++; + qprintf(fp, " file -o %s -g %s %s %s\n", file->user, file->group, + filename, file->dst); + break; + } + } + + fputs(" end\n", fp); +} jimjag-epm-84910c6/macos.c000066400000000000000000000317341521151356300152720ustar00rootroot00000000000000/* * macOS package gateway for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright © 2002-2020 by Michael R Sweet * Copyright © 2002-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local functions... */ static int make_package(int format, const char *prodname, const char *directory, dist_t *dist, const char *setup); /* * 'make_macos()' - Make a macOS disk image containing a macOS package. */ int /* O - 0 = success, 1 = fail */ make_macos(int format, /* I - Format */ const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform, /* I - Platform information */ const char *setup) /* I - Setup GUI image */ { char filename[1024]; /* Destination filename */ REF(platname); REF(platform); /* * Create the main package and subpackages (if any)... */ if (make_package(format, prodname, directory, dist, setup)) return (1); /* * TODO: Copy uninstall application to disk image... */ /* * Create a disk image of the package... */ if (Verbosity) puts("Creating disk image..."); if (dist->release[0]) snprintf(filename, sizeof(filename), "%s-%s-%s", prodname, dist->version, dist->release); else snprintf(filename, sizeof(filename), "%s-%s", prodname, dist->version); if (platname[0]) { strlcat(filename, "-", sizeof(filename)); strlcat(filename, platname, sizeof(filename)); } if (run_command(NULL, "hdiutil create -ov -srcfolder %s/%s.pkg %s/%s.dmg", directory, prodname, directory, filename)) { fputs("epm: Unable to create disk image.\n", stderr); return (1); } return (0); } /* * 'make_package()' - Make a macOS package. */ static int make_package(int format, /* I - Format */ const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ dist_t *dist, /* I - Distribution information */ const char *setup) /* I - Setup GUI image */ { int i; /* Looping var */ FILE *fp; /* Spec file */ char prodfull[1024], /* Full product name */ title[1024], /* Software title */ filename[1024], /* Destination filename */ pkgname[1024]; /* Package name */ file_t *file; /* Current distribution file */ command_t *c; /* Current command */ struct passwd *pwd; /* Pointer to user record */ struct group *grp; /* Pointer to group record */ char current[1024]; /* Current directory */ const char *option; /* Init script option */ strlcpy(prodfull, prodname, sizeof(prodfull)); strlcpy(title, dist->product, sizeof(title)); if (Verbosity) printf("Creating %s macOS package...\n", prodfull); getcwd(current, sizeof(current)); /* * Copy the resources for the license, readme, and welcome (description) * stuff... */ if (Verbosity) puts("Copying temporary resource files..."); snprintf(filename, sizeof(filename), "%s/%s/Resources", directory, prodfull); make_directory(filename, 0755, 0, 0); /* * Do pre/post install commands... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL) break; if (i) { snprintf(filename, sizeof(filename), "%s/%s/Resources/preinstall", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create preinstall script \"%s\": %s\n", filename, strerror(errno)); return (1); } fputs("#!/bin/sh\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL) fprintf(fp, "%s\n", c->command); fclose(fp); chmod(filename, 0755); } for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL) break; if (!i) { for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') break; } if (i) { snprintf(filename, sizeof(filename), "%s/%s/Resources/postinstall", directory, prodfull); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create postinstall script \"%s\": %s\n", filename, strerror(errno)); return (1); } fputs("#!/bin/sh\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL) fprintf(fp, "%s\n", c->command); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') qprintf(fp, "/Library/StartupItems/%s/%s start\n", file->dst, file->dst); fclose(fp); chmod(filename, 0755); } /* * Copy the files over... */ if (Verbosity) puts("Copying temporary distribution files..."); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { /* * Find the username and groupname IDs... */ pwd = getpwnam(file->user); grp = getgrnam(file->group); endpwent(); endgrent(); /* * Copy the file or make the directory or make the symlink as needed... */ switch (tolower(file->type)) { case 'c': case 'f': if (!strncmp(file->dst, "/etc/", 5) || !strncmp(file->dst, "/var/", 5)) snprintf(filename, sizeof(filename), "%s/%s/Package/private%s", directory, prodfull, file->dst); else snprintf(filename, sizeof(filename), "%s/%s/Package%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); break; case 'i': snprintf(filename, sizeof(filename), "%s/%s/Package/Library/StartupItems/%s/%s", directory, prodfull, file->dst, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); snprintf(filename, sizeof(filename), "%s/%s/Package/Library/StartupItems/%s/StartupParameters.plist", directory, prodfull, file->dst); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create init data file \"%s\": %s\n", filename, strerror(errno)); return (1); } fputs("{\n", fp); fprintf(fp, " Description = \"%s\";\n", dist->product); qprintf(fp, " Provides = (%s);\n", get_option(file, "provides", file->dst)); if ((option = get_option(file, "requires", NULL)) != NULL) qprintf(fp, " Requires = (%s);\n", option); if ((option = get_option(file, "uses", NULL)) != NULL) qprintf(fp, " Uses = (%s);\n", option); if ((option = get_option(file, "order", NULL)) != NULL) qprintf(fp, " OrderPreference = \"%s\";\n", option); fputs("}\n", fp); fclose(fp); snprintf(filename, sizeof(filename), "%s/%s/Package/Library/StartupItems/%s/Resources/English.lproj", directory, prodfull, file->dst); make_directory(filename, 0755, 0, 0); snprintf(filename, sizeof(filename), "%s/%s/Package/Library/StartupItems/%s/Resources/English.lproj/" "Localizable.strings", directory, prodfull, file->dst); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create init strings file \"%s\": %s\n", filename, strerror(errno)); return (1); } fputs("\n", fp); fputs("\n", fp); fputs("\n", fp); fputs("\n", fp); fprintf(fp, " Starting %s\n", dist->product); fprintf(fp, " Starting %s\n", dist->product); fputs("\n", fp); fputs("\n", fp); fclose(fp); break; case 'd': if (!strncmp(file->dst, "/etc/", 5) || !strncmp(file->dst, "/var/", 5) || !strcmp(file->dst, "/etc") || !strcmp(file->dst, "/var")) snprintf(filename, sizeof(filename), "%s/%s/Package/private%s", directory, prodfull, file->dst); else snprintf(filename, sizeof(filename), "%s/%s/Package%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("Directory %s...\n", filename); make_directory(filename, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0); break; case 'l': if (!strncmp(file->dst, "/etc/", 5) || !strncmp(file->dst, "/var/", 5)) snprintf(filename, sizeof(filename), "%s/%s/Package/private%s", directory, prodfull, file->dst); else snprintf(filename, sizeof(filename), "%s/%s/Package%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); make_link(filename, file->src); break; } } /* * Build the distribution... */ if (Verbosity) puts("Building macOS package..."); if (directory[0] == '/') strlcpy(filename, directory, sizeof(filename)); else snprintf(filename, sizeof(filename), "%s/%s", current, directory); /* * The package stands alone - just put it in the output directory... */ snprintf(pkgname, sizeof(pkgname), "%s/%s.pkg", filename, prodfull); if (format == PACKAGE_MACOS_SIGNED) { const char *identity = getenv("EPM_SIGNING_IDENTITY"); if (!identity) { fputs("epm: Using default 'Developer ID Installer' signing identity.\n" " Set the EPM_SIGNING_IDENTITY environment variable to override.\n", stderr); identity = "Developer ID Installer"; } run_command(NULL, "/usr/bin/pkgbuild --identifier %s --version %s --ownership preserve " "--scripts %s/%s/Resources --root %s/%s/Package --sign '%s' %s", prodfull, dist->version, directory, prodfull, directory, prodfull, identity, pkgname); } else { run_command(NULL, "/usr/bin/pkgbuild --identifier %s --version %s --ownership preserve " "--scripts %s/%s/Resources --root %s/%s/Package %s", prodfull, dist->version, directory, prodfull, directory, prodfull, pkgname); } /* * Verify that the package was created... */ if (access(pkgname, 0)) return (1); /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) puts("Removing temporary distribution files..."); snprintf(filename, sizeof(filename), "%s/%s", directory, prodfull); unlink_directory(filename); } return (0); } jimjag-epm-84910c6/makesrcdist000077500000000000000000000005461521151356300162600ustar00rootroot00000000000000#!/bin/sh # # makesrcdist - make a source distribution of EPM. # if test $# != 1; then echo "Usage: ./makesrcdist version" exit 1 fi version=$1 echo Creating tag for release... git tag -m "Tag $version" v$version git push origin v$version echo Creating epm-$version-source.tar.gz... git archive --format tar HEAD | gzip -v9 >epm-$version-source.tar.gz jimjag-epm-84910c6/mkepmlist.c000066400000000000000000000343421521151356300161730ustar00rootroot00000000000000/* * List file generation utility for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 2003-2019 by Michael R Sweet * Copyright 2003-2005 by Easy Software Products * Copyright 2003 Andreas Voegele * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "epm.h" /* * Lookup hash table structure... */ #define HASH_M 101 struct node { unsigned id; /* User or group ID */ char *name; /* User or group name */ }; /* * Globals... */ char *DefaultUser = NULL, /* Default user for entries */ *DefaultGroup = NULL; /* Default group for entries */ struct node Users[HASH_M]; /* Hash table for users */ struct node Groups[HASH_M]; /* Hash table for groups */ /* * Functions... */ char *get_group(gid_t gid); char *get_user(uid_t uid); void hash_deinit(struct node *a); unsigned hash_id(unsigned id); void hash_init(struct node *a); char *hash_insert(struct node *a, unsigned id, const char *name); char *hash_search(struct node *a, unsigned id); void info(void); int process_dir(const char *srcpath, const char *dstpath); int process_file(const char *src, const char *dstpath); char *quote_string(char *q, const char *s, size_t qsize); void usage(void); /* * 'main()' - Scan directories to produce a distribution list. */ int /* O - Exit status */ main(int argc, /* I - Number of command-line arguments */ char *argv[]) /* I - Command-line arguments */ { int i; /* Looping var */ const char *prefix, /* Installation prefix */ *dstpath; /* Destination path */ char dst[1024], /* Destination */ *ptr; /* Pointer into filename */ struct stat info; /* File information */ /* * Initialize the hash tables... */ hash_init(Users); hash_init(Groups); /* * Loop through the command-line arguments, processing directories as * needed... */ prefix = NULL; for (i = 1; i < argc; i++) if (strcmp(argv[i], "-u") == 0) { /* * -u username */ i++; if (i >= argc) usage(); DefaultUser = argv[i]; } else if (strcmp(argv[i], "-g") == 0) { /* * -g groupname */ i++; if (i >= argc) usage(); DefaultGroup = argv[i]; } else if (strcmp(argv[i], "--prefix") == 0) { i++; if (i >= argc) usage(); prefix = argv[i]; } else if (argv[i][0] == '-') { /* * Unknown option... */ fprintf(stderr, "Unknown option \"%s\"!\n", argv[i]); usage(); } else { /* * Directory name... */ if (prefix) dstpath = prefix; else { if (argv[i][0] == '/') dstpath = argv[i]; else { if (argv[i][0] == '.') { for (dstpath = argv[i]; *dstpath == '.';) { if (strncmp(dstpath, "./", 2) == 0) dstpath += 2; else if (strncmp(dstpath, "../", 3) == 0) dstpath += 3; else break; } if (strcmp(dstpath, ".") == 0) dstpath = ""; } else dstpath = argv[i]; if (dstpath[0]) { snprintf(dst, sizeof(dst), "/%s", dstpath); dstpath = dst; } } } if (!lstat(argv[i], &info)) { if (!S_ISDIR(info.st_mode)) { if (!prefix) { /* * Remove trailing filename component from destination... */ if (dstpath != dst) { strlcpy(dst, dstpath, sizeof(dst)); dstpath = dst; } if ((ptr = strrchr(dstpath, '/')) != NULL) *ptr = '\0'; } process_file(argv[i], dstpath); } else process_dir(argv[i], dstpath); } } /* * Free any memory we have left allocated... */ hash_deinit(Users); hash_deinit(Groups); return (0); } /* * 'get_group()' - Get a group name for the given group ID. */ char * /* O - Name of group or NULL */ get_group(gid_t gid) /* I - Group ID */ { char *name; /* Name of group */ struct group *gr; /* Group entry for group */ char buf[16]; /* Temporary string buffer for group numbers */ /* * Always return the default group if set... */ if (DefaultGroup) return (DefaultGroup); /* * See if the group ID is already in the hash table... */ if ((name = hash_search(Groups, gid)) != NULL) return (name); /* * Lookup the group ID in the password file... */ setgrent(); if ((gr = getgrgid(gid)) != NULL) name = gr->gr_name; else { /* * Unable to find group ID; just return the number... */ snprintf(buf, sizeof(buf), "%u", (unsigned)gid); name = buf; } /* * Add the name to the hash table and return it... */ return (hash_insert(Groups, gid, name)); } /* * 'get_user()' - Get a user name for the given user ID. */ char * /* O - Name of user or NULL */ get_user(uid_t uid) /* I - User ID */ { char *name; /* Name of user */ struct passwd *pw; /* Password entry for user */ char buf[16]; /* Temporary string buffer for user numbers */ /* * Always return the default user if set... */ if (DefaultUser) return (DefaultUser); /* * See if the user ID is already in the hash table... */ if ((name = hash_search(Users, uid)) != NULL) return (name); /* * Lookup the user ID in the password file... */ setpwent(); if ((pw = getpwuid(uid)) != NULL) name = pw->pw_name; else { /* * Unable to find user ID; just return the number... */ snprintf(buf, sizeof(buf), "%u", (unsigned)uid); name = buf; } /* * Add the name to the hash table and return it... */ return (hash_insert(Users, uid, name)); } /* * 'hash_deinit()' - Deinitialize a hash table. */ void hash_deinit(struct node *a) /* I - Hash table */ { unsigned h; /* Looping var */ for (h = 0; h < HASH_M; h++) if (a[h].name) { free(a[h].name); memset(a, 0, sizeof(struct node)); } } /* * 'hash_id()' - Generate a hash for a user or group ID. */ unsigned /* O - Hash number */ hash_id(unsigned id) /* I - User or group ID */ { return (id % HASH_M); } /* * 'hash_init()' - Initialize a hash table. */ void hash_init(struct node *a) /* I - Hash table to initialize */ { /* * Zero out the hash table... */ memset(a, 0, HASH_M * sizeof(struct node)); } /* * 'hash_insert()' - Insert a new entry in a hash table. */ char * /* O - New user or group name or NULL */ hash_insert(struct node *a, /* I - Hash table */ unsigned id, /* I - User or group ID */ const char *name) /* I - User or group name */ { unsigned h, /* Current hash value */ start; /* Starting hash value */ for (h = start = hash_id(id); a[h].name;) { h = (h + 1) % HASH_M; if (h == start) return (NULL); } a[h].id = id; a[h].name = strdup(name); return (a[h].name); } /* * 'hash_search()' - Find a user or group ID in the hash table... */ char * /* O - User or group name, or NULL */ hash_search(struct node *a, /* I - Hash table */ unsigned id) /* I - User or group ID */ { unsigned h, /* Current hash value */ start; /* Starting hash value */ for (h = start = hash_id(id); a[h].name;) { h = (h + 1) % HASH_M; if (a[h].id == id) return (a[h].name); if (h == start) break; } return (NULL); } /* * 'info()' - Show the EPM copyright and license. */ void info(void) { puts(EPM_VERSION); puts("Copyright 1999-2019 by Michael R Sweet."); puts("Copyright 2020 by Jim Jagielski."); puts(""); puts("EPM is free software and comes with ABSOLUTELY NO WARRANTY; for details"); puts("see the Apache License version 2.0 in the file LICENSE or at"); puts("\"https://www.apache.org/licenses/LICENSE-2.0\". Report all problems to"); puts("\"https://github.com/jimjag/epm/issues\"."); puts(""); } /* * 'process_dir()' - Process a directory... */ int /* O - 0 on success, -1 on error */ process_dir(const char *srcpath, /* I - Source path */ const char *dstpath) /* I - Destination path */ { DIR *dir; /* Directory to read from */ struct dirent *dent; /* Current directory entry */ size_t srclen; /* Length of source path */ char src[1024]; /* Temporary source path */ /* * Try opening the source directory... */ if ((dir = opendir(srcpath)) == NULL) { fprintf(stderr, "mkepmlist: Unable to open directory \"%s\": %s.\n", srcpath, strerror(errno)); return (-1); } /* * Read from the directory... */ srclen = strlen(srcpath); while ((dent = readdir(dir)) != NULL) { /* * Skip "." and ".."... */ if (strcmp(dent->d_name, ".") == 0 || strcmp(dent->d_name, "..") == 0) continue; /* * Process file... */ if (srclen > 0 && srcpath[srclen - 1] == '/') snprintf(src, sizeof(src), "%s%s", srcpath, dent->d_name); else snprintf(src, sizeof(src), "%s/%s", srcpath, dent->d_name); if (process_file(src, dstpath)) { closedir(dir); return (-1); } } closedir(dir); return (0); } /* * 'process_file()' - Process a file... */ int /* O - 0 on success, -1 on error */ process_file(const char *src, /* I - Source path */ const char *dstpath) /* I - Destination path */ { const char *srcptr; /* Pointer into source path */ struct stat srcinfo; /* Information on the source file */ ssize_t linklen; /* Length of link path */ size_t dstlen; /* Length of destination path */ char link[1024], /* Link for source */ dst[1024], /* Temporary destination path */ qdst[1024], /* Quoted destination */ qsrc[1024]; /* Quoted source/link */ /* * Get source file info... */ dstlen = strlen(dstpath); if ((srcptr = strrchr(src, '/')) != NULL) srcptr++; else srcptr = src; if (dstlen > 0 && dstpath[dstlen - 1] == '/') snprintf(dst, sizeof(dst), "%s%s", dstpath, srcptr); else snprintf(dst, sizeof(dst), "%s/%s", dstpath, srcptr); if (lstat(src, &srcinfo)) { fprintf(stderr, "mkepmlist: Unable to stat \"%s\": %s.\n", src, strerror(errno)); return (-1); } /* * Process accordingly... */ if (S_ISDIR(srcinfo.st_mode)) { /* * Directory... */ printf("d %o %s %s %s -\n", (unsigned)(srcinfo.st_mode & 07777), get_user(srcinfo.st_uid), get_group(srcinfo.st_gid), quote_string(qdst, dst, sizeof(qdst))); if (process_dir(src, dst)) return (-1); } else if (S_ISLNK(srcinfo.st_mode)) { /* * Symlink... */ if ((linklen = readlink(src, link, sizeof(link) - 1)) < 0) { fprintf(stderr, "mkepmlist: Unable to read symlink \"%s\": %s.\n", src, strerror(errno)); return (-1); } link[linklen] = '\0'; printf("l %o %s %s %s %s\n", (unsigned)(srcinfo.st_mode & 07777), get_user(srcinfo.st_uid), get_group(srcinfo.st_gid), quote_string(qdst, dst, sizeof(qdst)), quote_string(qsrc, link, sizeof(qsrc))); } else if (S_ISREG(srcinfo.st_mode)) { /* * Regular file... */ printf("f %o %s %s %s %s\n", (unsigned)(srcinfo.st_mode & 07777), get_user(srcinfo.st_uid), get_group(srcinfo.st_gid), quote_string(qdst, dst, sizeof(qdst)), quote_string(qsrc, src, sizeof(qsrc))); } return (0); } /* * 'quote_string()' - Quote space, backslash, and $ in a string... */ char * /* O - Quoted string */ quote_string(char *q, /* I - Quoted string buffer */ const char *s, /* I - Original string */ size_t qsize) /* I - Size of buffer */ { char *qptr, *qend; for (qptr = q, qend = q + qsize - 2; *s && qptr < qend;) { if (*s == '\\' || *s == ' ' || *s == '\t') *qptr++ = '\\'; else if (*s == '$') *qptr++ = '$'; *qptr++ = *s++; } *qptr = '\0'; return (q); } /* * 'usage()' - Show command-line usage instructions. */ void usage(void) { info(); puts("Usage: mkepmlist [options] directory [... directory] >filename.list"); puts("Options:"); puts("-g group Set group name for files."); puts("-u user Set user name for files."); puts("--prefix directory Set directory prefix for files."); exit(1); } jimjag-epm-84910c6/pkg.c000066400000000000000000000407771521151356300147600ustar00rootroot00000000000000/* * AT&T package gateway for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2017 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local functions... */ static const char *pkg_path(const char *filename, const char *dirname); /* * 'make_pkg()' - Make an AT&T software distribution package. */ int /* O - 0 = success, 1 = fail */ make_pkg(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform) /* I - Platform information */ { int i; /* Looping var */ FILE *fp; /* Control file */ char name[1024]; /* Full product name */ char filename[1024], /* Destination filename */ preinstall[1024], /* Pre install script */ postinstall[1024], /* Post install script */ preremove[1024], /* Pre remove script */ postremove[1024], /* Post remove script */ request[1024]; /* Request script */ char current[1024]; /* Current directory */ file_t *file; /* Current distribution file */ command_t *c; /* Current command */ depend_t *d; /* Current dependency */ tarf_t *tarfile; /* Distribution file */ time_t curtime; /* Current time info */ struct tm *curdate; /* Current date info */ const char *runlevels; /* Run levels */ if (Verbosity) puts("Creating PKG distribution..."); if (dist->release[0]) { if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, dist->version, dist->release, platname); else snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, dist->release); } else if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); else snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); getcwd(current, sizeof(current)); /* * Write the pkginfo file for pkgmk... */ if (Verbosity) puts("Creating package information file..."); snprintf(filename, sizeof(filename), "%s/%s.pkginfo", directory, prodname); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create package information file \"%s\": %s\n", filename, strerror(errno)); return (1); } curtime = time(NULL); curdate = gmtime(&curtime); fprintf(fp, "PKG=%s\n", prodname); fprintf(fp, "NAME=%s\n", dist->product); fprintf(fp, "VERSION=%s\n", dist->version); fprintf(fp, "VENDOR=%s\n", dist->vendor); fprintf(fp, "PSTAMP=epm%04d%02d%02d%02d%02d%02d\n", curdate->tm_year + 1900, curdate->tm_mon + 1, curdate->tm_mday, curdate->tm_hour, curdate->tm_min, curdate->tm_sec); if (dist->num_descriptions > 0) fprintf(fp, "DESC=%s\n", dist->descriptions[0].description); fputs("CATEGORY=application\n", fp); fputs("CLASSES=none", fp); for (i = 0; i < dist->num_subpackages; i++) fprintf(fp, " %s", dist->subpackages[i]); putc('\n', fp); if (strcmp(platform->machine, "intel") == 0) fputs("ARCH=i86pc\n", fp); else fputs("ARCH=sparc\n", fp); fclose(fp); /* * Write the depend file for pkgmk... */ if (Verbosity) puts("Creating package dependency file..."); snprintf(filename, sizeof(filename), "%s/%s.depend", directory, prodname); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create package dependency file \"%s\": %s\n", filename, strerror(errno)); return (1); } for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) if (!strcmp(d->product, "_self")) continue; else if (d->type == DEPEND_REQUIRES) fprintf(fp, "P %s\n", d->product); else fprintf(fp, "I %s\n", d->product); fclose(fp); /* * Write the preinstall file for pkgmk... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL) break; if (i) { /* * Write the preinstall file for pkgmk... */ if (Verbosity) puts("Creating preinstall script..."); snprintf(preinstall, sizeof(preinstall), "%s/%s.preinstall", directory, prodname); if ((fp = fopen(preinstall, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preinstall, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL) fprintf(fp, "%s\n", c->command); fclose(fp); } else preinstall[0] = '\0'; /* * Write the postinstall file for pkgmk... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL) break; if (!i) for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') break; if (i) { /* * Write the postinstall file for pkgmk... */ if (Verbosity) puts("Creating postinstall script..."); snprintf(postinstall, sizeof(postinstall), "%s/%s.postinstall", directory, prodname); if ((fp = fopen(postinstall, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postinstall, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL) fprintf(fp, "%s\n", c->command); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') qprintf(fp, "/etc/init.d/%s start\n", file->dst); fclose(fp); } else postinstall[0] = '\0'; /* * Write the preremove script... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE) break; if (!i) for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') break; if (i) { /* * Write the preremove file for pkgmk... */ if (Verbosity) puts("Creating preremove script..."); snprintf(preremove, sizeof(preremove), "%s/%s.preremove", directory, prodname); if ((fp = fopen(preremove, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preremove, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') qprintf(fp, "/etc/init.d/%s stop\n", file->dst); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE) fprintf(fp, "%s\n", c->command); fclose(fp); } else preremove[0] = '\0'; /* * Write the postremove file for pkgmk... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE) break; if (i) { /* * Write the postremove file for pkgmk... */ if (Verbosity) puts("Creating postremove script..."); snprintf(postremove, sizeof(postremove), "%s/%s.postremove", directory, prodname); if ((fp = fopen(postremove, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postremove, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE) fprintf(fp, "%s\n", c->command); fclose(fp); } else postremove[0] = '\0'; /* * Write the request file for pkgmk... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && !strcmp(c->section, "request")) break; if (i) { /* * Write the request file for pkgmk... */ if (Verbosity) puts("Creating request script..."); snprintf(request, sizeof(request), "%s/%s.request", directory, prodname); if ((fp = fopen(request, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", request, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && !strcmp(c->section, "request")) fprintf(fp, "%s\n", c->command); fclose(fp); } else request[0] = '\0'; /* * Add symlinks for init scripts... */ for (i = 0; i < dist->num_files; i++) if (tolower(dist->files[i].type) == 'i') { /* * Make symlinks for all of the selected run levels... */ for (runlevels = get_runlevels(dist->files + i, "023"); isdigit(*runlevels & 255); runlevels++) { file = add_file(dist, dist->files[i].subpackage); file->type = 'l'; file->mode = 0; strlcpy(file->user, "root", sizeof(file->user)); strlcpy(file->group, "sys", sizeof(file->group)); snprintf(file->src, sizeof(file->src), "../init.d/%s", dist->files[i].dst); if (*runlevels == '0') snprintf(file->dst, sizeof(file->dst), "/etc/rc0.d/K%02d%s", get_stop(dist->files + i, 0), dist->files[i].dst); else snprintf(file->dst, sizeof(file->dst), "/etc/rc%c.d/S%02d%s", *runlevels, get_start(dist->files + i, 99), dist->files[i].dst); } /* * Then send the original file to /etc/init.d... */ file = dist->files + i; snprintf(filename, sizeof(filename), "/etc/init.d/%s", file->dst); strlcpy(file->dst, filename, sizeof(file->dst)); } /* * Write the prototype file for pkgmk... */ if (Verbosity) puts("Creating prototype file..."); snprintf(filename, sizeof(filename), "%s/%s.prototype", directory, prodname); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create prototype file \"%s\": %s\n", filename, strerror(errno)); return (1); } if (dist->license[0]) fprintf(fp, "i copyright=%s\n", pkg_path(dist->license, current)); fprintf(fp, "i depend=%s/%s.depend\n", pkg_path(directory, current), prodname); fprintf(fp, "i pkginfo=%s/%s.pkginfo\n", pkg_path(directory, current), prodname); if (preinstall[0]) fprintf(fp, "i preinstall=%s\n", pkg_path(preinstall, current)); if (postinstall[0]) fprintf(fp, "i postinstall=%s\n", pkg_path(postinstall, current)); if (preremove[0]) fprintf(fp, "i preremove=%s\n", pkg_path(preremove, current)); if (postremove[0]) fprintf(fp, "i postremove=%s\n", pkg_path(postremove, current)); if (request[0]) fprintf(fp, "i request=%s\n", pkg_path(request, current)); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) switch (tolower(file->type)) { case 'c': qprintf(fp, "e %s %s=%s %04o %s %s\n", file->subpackage ? file->subpackage : "none", file->dst, pkg_path(file->src, current), file->mode, file->user, file->group); break; case 'd': qprintf(fp, "d %s %s %04o %s %s\n", file->subpackage ? file->subpackage : "none", file->dst, file->mode, file->user, file->group); break; case 'f': case 'i': qprintf(fp, "f %s %s=%s %04o %s %s\n", file->subpackage ? file->subpackage : "none", file->dst, pkg_path(file->src, current), file->mode, file->user, file->group); break; case 'l': qprintf(fp, "s %s %s=%s\n", file->subpackage ? file->subpackage : "none", file->dst, file->src); break; } fclose(fp); if (AooMode) return (0); /* * Build the distribution from the prototype file... */ if (Verbosity) puts("Building PKG binary distribution..."); if (run_command(NULL, "pkgmk -o -f %s/%s.prototype -d %s/%s", directory, prodname, current, directory)) return (1); /* * Tar and compress the distribution... */ if (Verbosity) puts("Creating .pkg.tgz file for distribution..."); snprintf(filename, sizeof(filename), "%s/%s.pkg.tgz", directory, name); if ((tarfile = tar_open(filename, 1)) == NULL) return (1); snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); if (tar_directory(tarfile, filename, prodname)) { tar_close(tarfile); return (1); } tar_close(tarfile); /* * Make a package stream file... */ if (Verbosity) puts("Copying into package stream file..."); if (run_command(directory, "pkgtrans -s %s/%s %s.pkg %s", current, directory, name, prodname)) return (1); /* * Compress the package stream file... */ snprintf(filename, sizeof(filename), "%s.pkg.gz", name); unlink(filename); if (run_command(directory, EPM_GZIP " -vf9 %s.pkg", name)) return (1); /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) puts("Removing temporary distribution files..."); snprintf(filename, sizeof(filename), "%s/%s.pkginfo", directory, prodname); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.depend", directory, prodname); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.prototype", directory, prodname); unlink(filename); if (preinstall[0]) unlink(preinstall); if (postinstall[0]) unlink(postinstall); if (preremove[0]) unlink(preremove); if (postremove[0]) unlink(postremove); if (request[0]) unlink(request); snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); unlink_directory(filename); } return (0); } /* * 'pkg_path()' - Return an absolute path for the prototype file. */ static const char * /* O - Absolute filename */ pkg_path(const char *filename, /* I - Source filename */ const char *dirname) /* I - Source directory */ { static char absname[1024]; /* Absolute filename */ if (filename[0] == '/') return (filename); snprintf(absname, sizeof(absname), "%s/%s", dirname, filename); return (absname); } jimjag-epm-84910c6/portable.c000066400000000000000000003056771521151356300160120ustar00rootroot00000000000000/* * Portable package gateway for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2017 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local functions... */ static void clean_distfiles(const char *directory, const char *prodname, const char *platname, dist_t *dist, const char *subpackage); static int write_combined(const char *title, const char *directory, const char *prodname, const char *platname, dist_t *dist, const char **files, time_t deftime, const char *setup, const char *types); static int write_commands(dist_t *dist, FILE *fp, int type, const char *subpackage); static FILE *write_common(dist_t *dist, const char *title, int rootsize, int usrsize, const char *filename, const char *subpackage); static int write_confcheck(FILE *fp); static int write_depends(const char *prodname, dist_t *dist, FILE *fp, const char *subpackage); static int write_distfiles(const char *directory, const char *prodname, const char *platname, dist_t *dist, time_t deftime, const char *subpackage); static int write_install(dist_t *dist, const char *prodname, int rootsize, int usrsize, const char *directory, const char *subpackage); static int write_instfiles(tarf_t *tarfile, const char *directory, const char *prodname, const char *platname, const char **files, const char *destdir, const char *subpackage); static int write_patch(dist_t *dist, const char *prodname, int rootsize, int usrsize, const char *directory, const char *subpackage); static int write_remove(dist_t *dist, const char *prodname, int rootsize, int usrsize, const char *directory, const char *subpackage); static int write_space_checks(const char *prodname, FILE *fp, const char *sw, const char *ss, int rootsize, int usrsize); /* * 'make_portable()' - Make a portable software distribution package. */ int /* O - 1 = success, 0 = fail */ make_portable(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform, /* I - Platform information */ const char *setup, /* I - Setup GUI image */ const char *types) /* I - Setup GUI install types */ { int i; /* Looping var */ int havepatchfiles; /* 1 if we have patch files, 0 otherwise */ time_t deftime; /* File creation time */ file_t *file; /* Software file */ static const char *distfiles[] = /* Distribution files */ {"install", "license", "readme", "remove", "ss", "sw", NULL}; static const char *patchfiles[] = /* Patch files */ {"patch", "license", "pss", "psw", "readme", "remove", NULL}; REF(platform); if (Verbosity) puts("Creating PORTABLE distribution..."); /* * See if we need to make a patch distribution... */ for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (isupper((int)file->type)) break; havepatchfiles = i > 0; deftime = time(NULL); /* * Build the main package and all of the subpackages... */ if (write_distfiles(directory, prodname, platname, dist, deftime, NULL)) return (1); for (i = 0; i < dist->num_subpackages; i++) if (write_distfiles(directory, prodname, platname, dist, deftime, dist->subpackages[i])) return (1); /* * Create the distribution archives... */ if (write_combined("distribution", directory, prodname, platname, dist, distfiles, deftime, setup, types)) return (1); if (havepatchfiles) if (write_combined("patch", directory, prodname, platname, dist, patchfiles, deftime, setup, types)) return (1); /* * Cleanup... */ if (!KeepFiles) { clean_distfiles(directory, prodname, platname, dist, NULL); for (i = 0; i < dist->num_subpackages; i++) clean_distfiles(directory, prodname, platname, dist, dist->subpackages[i]); } /* * Return! */ return (0); } /* * 'clean_distfiles()' - Remove temporary software distribution files... */ static void clean_distfiles(const char *directory, /* I - Directory */ const char *prodname, /* I - Product name */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution */ const char *subpackage) /* I - Subpackage */ { char prodfull[255], /* Full name of product */ filename[1024]; /* Name of temporary file */ /* * Figure out the full name of the distribution... */ if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); /* * Remove the distribution files... */ if (Verbosity) printf("Removing %s temporary files...\n", prodfull); snprintf(filename, sizeof(filename), "%s/%s.install", directory, prodfull); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.license", directory, prodfull); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.patch", directory, prodfull); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.psw", directory, prodfull); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.psw", directory, prodfull); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.readme", directory, prodfull); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.remove", directory, prodfull); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.ss", directory, prodfull); unlink(filename); snprintf(filename, sizeof(filename), "%s/%s.sw", directory, prodfull); unlink(filename); } /* * 'write_combined()' - Write all of the distribution files in tar files. */ static int /* O - 0 on success, -1 on failure */ write_combined(const char *title, /* I - Title */ const char *directory, /* I - Output directory */ const char *prodname, /* I - Base product name */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution */ const char **files, /* I - Files */ time_t deftime, /* I - Default timestamp */ const char *setup, /* I - Setup program */ const char *types) /* I - Setup types file */ { int i; /* Looping var */ tarf_t *tarfile; /* Distribution tar file */ char tarfilename[1024], /* Name of tar file */ filename[1024]; /* Name of temporary file */ #ifdef __APPLE__ FILE *fp; /* Plist file... */ #endif /* __APPLE__ */ struct stat srcstat; /* Source file information */ const char *destdir; /* Destination directory */ const char *setup_img; /* Setup image name */ /* * Figure out the filename... */ if (dist->release[0]) snprintf(tarfilename, sizeof(tarfilename), "%s/%s-%s-%s", directory, prodname, dist->version, dist->release); else snprintf(tarfilename, sizeof(tarfilename), "%s/%s-%s", directory, prodname, dist->version); if (!strcmp(title, "patch")) strlcat(tarfilename, "-patch", sizeof(tarfilename)); if (platname[0]) { strlcat(tarfilename, "-", sizeof(tarfilename)); strlcat(tarfilename, platname, sizeof(tarfilename)); } strlcat(tarfilename, ".tar.gz", sizeof(tarfilename)); /* * Open output file... */ if ((tarfile = tar_open(tarfilename, 1)) == NULL) { fprintf(stderr, "epm: Unable to create output pipe to gzip -\n %s\n", strerror(errno)); return (-1); } if (Verbosity) printf("Writing %s archive:\n", title); #ifdef __APPLE__ if (setup) { /* * Create directories for the setup application... */ if (tar_header(tarfile, TAR_DIR, (mode_t)0755, (size_t)0, deftime, "root", "root", "Install.app", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_header(tarfile, TAR_DIR, (mode_t)0755, (size_t)0, deftime, "root", "root", "Install.app/Contents", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_header(tarfile, TAR_DIR, (mode_t)0755, (size_t)0, deftime, "root", "root", "Install.app/Contents/MacOS", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_header(tarfile, TAR_DIR, (mode_t)0755, (size_t)0, deftime, "root", "root", "Install.app/Contents/Resources", NULL) < 0) { tar_close(tarfile); return (-1); } /* * Then copy the data files... */ snprintf(filename, sizeof(filename), "%s/default.icns", DataDir); stat(filename, &srcstat); if (tar_header(tarfile, TAR_NORMAL, srcstat.st_mode & (~0222), srcstat.st_size, srcstat.st_mtime, "root", "root", "Install.app/Contents/Resources/setup.icns", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, filename) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk setup.icns\n", (srcstat.st_size + 1023) / 1024.0); snprintf(filename, sizeof(filename), "%s/%s.setup.plist", directory, prodname); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Error writing %s -\n %s\n", filename, strerror(errno)); tar_close(tarfile); return (-1); } fprintf(fp, "\n" "\n" " \n" " CFBundleInfoDictionaryVersion\n" " 6.0\n" " CFBundleExecutable\n" " setup\n" " CFBundleIdentifier\n" " org.msweet.epmsetup\n" " CFBundleVersion\n" " %s\n" " CFBundleDevelopmentRegion\n" " English\n" " NSHumanReadableCopyright\n" " Copyright %s\n" " CFAppleHelpAnchor\n" " help\n" " CFBundleName\n" " Installer for %s\n" " CFBundlePackageType\n" " APPL\n" " CFBundleSignature\n" " FLTK\n" " CFBundleIconFile\n" " setup.icns\n" " CFBundleShortVersionString\n" " %s\n" " CFBundleGetInfoString\n" " %s, Copyright %s\n" " \n" "\n", dist->version, dist->copyright, dist->product, dist->version, dist->version, dist->copyright); fclose(fp); stat(filename, &srcstat); if (tar_header(tarfile, TAR_NORMAL, srcstat.st_mode & (~0222), srcstat.st_size, srcstat.st_mtime, "root", "root", "Install.app/Contents/Info.plist", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, filename) < 0) { tar_close(tarfile); return (-1); } if (!KeepFiles) unlink(filename); if (Verbosity) printf(" %7.0fk Info.plist\n", (srcstat.st_size + 1023) / 1024.0); } destdir = "Install.app/Contents/Resources/"; #else /* !__APPLE__ */ destdir = ""; #endif /* __APPLE__ */ /* * Write installer files... */ if (write_instfiles(tarfile, directory, prodname, platname, files, destdir, NULL)) { tar_close(tarfile); return (-1); } for (i = 0; i < dist->num_subpackages; i++) if (write_instfiles(tarfile, directory, prodname, platname, files, destdir, dist->subpackages[i])) { tar_close(tarfile); return (-1); } /* * Now the setup files... */ if (setup) { /* * Include the ESP Software Installation Wizard (setup)... */ if (stat(SetupProgram, &srcstat)) { fprintf(stderr, "epm: Unable to stat GUI setup program %s: %s\n", SetupProgram, strerror(errno)); tar_close(tarfile); return (-1); } #ifdef __APPLE__ if (tar_header(tarfile, TAR_NORMAL, 0555, srcstat.st_size, srcstat.st_mtime, "root", "root", "Install.app/Contents/MacOS/setup", NULL) < 0) #else if (tar_header(tarfile, TAR_NORMAL, 0555, srcstat.st_size, srcstat.st_mtime, "root", "root", "setup", NULL) < 0) #endif /* __APPLE__ */ { tar_close(tarfile); return (-1); } if (tar_file(tarfile, SetupProgram) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk setup\n", (srcstat.st_size + 1023) / 1024.0); /* * And the image file... */ stat(setup, &srcstat); if (strlen(setup) > 4 && !strcmp(setup + strlen(setup) - 4, ".gif")) setup_img = "setup.gif"; else if (strlen(setup) > 4 && !strcmp(setup + strlen(setup) - 4, ".jpg")) setup_img = "setup.jpg"; else if (strlen(setup) > 4 && !strcmp(setup + strlen(setup) - 4, ".png")) setup_img = "setup.png"; else setup_img = "setup.xpm"; snprintf(filename, sizeof(filename), "%s%s", destdir, setup_img); if (tar_header(tarfile, TAR_NORMAL, 0444, srcstat.st_size, srcstat.st_mtime, "root", "root", filename, NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, setup) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk %s\n", (srcstat.st_size + 1023) / 1024.0, setup_img); /* * And the types file... */ if (types) { stat(types, &srcstat); snprintf(filename, sizeof(filename), "%ssetup.types", destdir); if (tar_header(tarfile, TAR_NORMAL, 0444, srcstat.st_size, srcstat.st_mtime, "root", "root", filename, NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, types) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk setup.types\n", (srcstat.st_size + 1023) / 1024.0); } /* * And finally the uninstall stuff... */ #ifdef __APPLE__ if (tar_header(tarfile, TAR_DIR, 0755, 0, deftime, "root", "root", "Uninstall.app", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_header(tarfile, TAR_DIR, 0755, 0, deftime, "root", "root", "Uninstall.app/Contents", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_header(tarfile, TAR_DIR, 0755, 0, deftime, "root", "root", "Uninstall.app/Contents/MacOS", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_header(tarfile, TAR_DIR, 0755, 0, deftime, "root", "root", "Uninstall.app/Contents/Resources", NULL) < 0) { tar_close(tarfile); return (-1); } /* * Then copy the data files... */ snprintf(filename, sizeof(filename), "%s/default.icns", DataDir); stat(filename, &srcstat); if (tar_header(tarfile, TAR_NORMAL, srcstat.st_mode & (~0222), srcstat.st_size, srcstat.st_mtime, "root", "root", "Uninstall.app/Contents/Resources/uninst.icns", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, filename) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk uninst.icns\n", (srcstat.st_size + 1023) / 1024.0); snprintf(filename, sizeof(filename), "%s/%s.uninst.plist", directory, prodname); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Error writing %s -\n %s\n", filename, strerror(errno)); tar_close(tarfile); return (-1); } fprintf(fp, "\n" "\n" " \n" " CFBundleInfoDictionaryVersion\n" " 6.0\n" " CFBundleExecutable\n" " uninst\n" " CFBundleIdentifier\n" " org.msweet.epmuninst\n" " CFBundleVersion\n" " %s\n" " CFBundleDevelopmentRegion\n" " English\n" " NSHumanReadableCopyright\n" " Copyright %s\n" " CFAppleHelpAnchor\n" " help\n" " CFBundleName\n" " Uninstaller for %s\n" " CFBundlePackageType\n" " APPL\n" " CFBundleSignature\n" " FLTK\n" " CFBundleIconFile\n" " uninst.icns\n" " CFBundleShortVersionString\n" " %s\n" " CFBundleGetInfoString\n" " %s, Copyright %s\n" " \n" "\n", dist->version, dist->copyright, dist->product, dist->version, dist->version, dist->copyright); fclose(fp); stat(filename, &srcstat); if (tar_header(tarfile, TAR_NORMAL, srcstat.st_mode & (~0222), srcstat.st_size, srcstat.st_mtime, "root", "root", "Uninstall.app/Contents/Info.plist", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, filename) < 0) { tar_close(tarfile); return (-1); } if (!KeepFiles) unlink(filename); if (Verbosity) printf(" %7.0fk Info.plist\n", (srcstat.st_size + 1023) / 1024.0); #endif /* __APPLE__ */ /* * Include the ESP Software Removal Wizard (uninst)... */ if (stat(UninstProgram, &srcstat)) { fprintf(stderr, "epm: Unable to stat GUI uninstall program %s: %s\n", UninstProgram, strerror(errno)); tar_close(tarfile); return (-1); } #ifdef __APPLE__ if (tar_header(tarfile, TAR_NORMAL, 0555, srcstat.st_size, srcstat.st_mtime, "root", "root", "Uninstall.app/Contents/MacOS/uninst", NULL) < 0) #else if (tar_header(tarfile, TAR_NORMAL, 0555, srcstat.st_size, srcstat.st_mtime, "root", "root", "uninst", NULL) < 0) #endif /* __APPLE__ */ { tar_close(tarfile); return (-1); } if (tar_file(tarfile, UninstProgram) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk uninst\n", (srcstat.st_size + 1023) / 1024.0); #ifdef __APPLE__ /* * And the image file... */ stat(setup, &srcstat); snprintf(filename, sizeof(filename), "Uninstall.app/Contents/Resources/%s", setup_img); if (tar_header(tarfile, TAR_NORMAL, 0444, srcstat.st_size, srcstat.st_mtime, "root", "root", filename, NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, setup) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk %s\n", (srcstat.st_size + 1023) / 1024.0, setup_img); #endif /* __APPLE__ */ } if (Verbosity) { puts(" ------- ----------------------------------------"); printf(" %7.0fk %s-%s", tarfile->blocks * 0.5f, prodname, dist->version); if (dist->release[0]) printf("-%s", dist->release); if (!strcmp(title, "patch")) fputs("-patch", stdout); if (platname[0]) printf("-%s", platname); puts(".tar"); } tar_close(tarfile); if (Verbosity) { stat(tarfilename, &srcstat); puts(" ------- ----------------------------------------"); printf(" %7.0fk %s\n", (srcstat.st_size + 1023) / 1024.0, tarfilename); } #ifdef __APPLE__ { char dmgfilename[1024]; /* Disk image filename */ /* * Make a disk image containing the package files... */ if (dist->release[0]) snprintf(filename, sizeof(filename), "%s/%s-%s-%s", directory, prodname, dist->version, dist->release); else snprintf(filename, sizeof(filename), "%s/%s-%s", directory, prodname, dist->version); if (!strcmp(title, "patch")) strlcat(filename, "-patch", sizeof(filename)); if (platname[0]) { strlcat(filename, "-", sizeof(filename)); strlcat(filename, platname, sizeof(filename)); } snprintf(dmgfilename, sizeof(dmgfilename), "%s.dmg", filename); mkdir(filename, 0777); if (run_command(filename, "tar xvzf ../%s", strrchr(tarfilename, '/') + 1)) { fputs("epm: Unable to create disk image template folder!\n", stderr); return (1); } if (run_command(NULL, "hdiutil create -ov -srcfolder %s %s", filename, dmgfilename)) { fputs("epm: Unable to create disk image!\n", stderr); return (1); } if (!KeepFiles) unlink_directory(filename); if (Verbosity) { stat(dmgfilename, &srcstat); printf(" %7.0fk %s\n", (srcstat.st_size + 1023) / 1024.0, dmgfilename); } } #endif /* __APPLE__ */ return (0); } /* * 'write_commands()' - Write commands. */ static int /* O - 0 on success, -1 on failure */ write_commands(dist_t *dist, /* I - Distribution */ FILE *fp, /* I - File pointer */ int type, /* I - Type of commands to write */ const char *subpackage) /* I - Subsystem */ { int i; /* Looping var */ command_t *c; /* Current command */ static const char *commands[] = /* Command strings */ {"pre-install", "post-install", "pre-patch", "post-patch", "pre-remove", "post-remove"}; for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == type && c->subpackage == subpackage) break; if (i) { fprintf(fp, "echo Running %s commands...\n", commands[type]); for (; i > 0; i--, c++) if (c->type == type && c->subpackage == subpackage) if (fprintf(fp, "%s\n", c->command) < 1) { perror("epm: Error writing command"); return (-1); } } return (0); } /* * 'write_common()' - Write the common shell script header. */ static FILE * /* O - File pointer */ write_common(dist_t *dist, /* I - Distribution */ const char *title, /* I - "Installation", etc... */ int rootsize, /* I - Size of root files in kbytes */ int usrsize, /* I - Size of /usr files in kbytes */ const char *filename, /* I - Script to create */ const char *subpackage) /* I - Subpackage name */ { int i; /* Looping var */ FILE *fp; /* File pointer */ char line[1024], /* Line buffer */ *start, /* Start of line */ *ptr; /* Pointer into line */ /* * Remove any existing copy of the file... */ unlink(filename); /* * Create the script file... */ if ((fp = fopen(filename, "w")) == NULL) return (NULL); /* * Update the permissions on the file... */ fchmod(fileno(fp), 0755); /* * Write the standard header... */ fputs("#!/bin/sh\n", fp); fprintf(fp, "# %s script for %s version %s.\n", title, dist->product, dist->version); fputs("# Produced using " EPM_VERSION " (https://michaelrsweet.github.io/epm).\n", fp); fprintf(fp, "#%%product %s", dist->product); if (subpackage) { for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) break; if (i < dist->num_descriptions) { strlcpy(line, dist->descriptions[i].description, sizeof(line)); if ((ptr = strchr(line, '\n')) != NULL) *ptr = '\0'; fprintf(fp, " - %s", line); } } fputs("\n", fp); fprintf(fp, "#%%vendor %s\n", dist->vendor); fprintf(fp, "#%%copyright %s\n", dist->copyright); fprintf(fp, "#%%version %s %d\n", dist->version, dist->vernumber); for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) break; if (i < dist->num_descriptions) { /* * Just do descriptions for this subpackage... */ for (; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) { strlcpy(line, dist->descriptions[i].description, sizeof(line)); for (start = line; start; start = ptr) { if ((ptr = strchr(start, '\n')) != NULL) *ptr++ = '\0'; fprintf(fp, "#%%description %s\n", start); } } } else { /* * Just do descriptions for the main package... */ for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == NULL) { strlcpy(line, dist->descriptions[i].description, sizeof(line)); for (start = line; start; start = ptr) { if ((ptr = strchr(start, '\n')) != NULL) *ptr++ = '\0'; fprintf(fp, "#%%description %s\n", start); } } } fprintf(fp, "#%%rootsize %d\n", rootsize); fprintf(fp, "#%%usrsize %d\n", usrsize); fputs("#\n", fp); fputs("PATH=/usr/gnu/bin:/usr/xpg4/bin:/bin:/usr/bin:/usr/ucb:${PATH}\n", fp); fputs("SHELL=/bin/sh\n", fp); fputs("case \"`uname`\" in\n", fp); fputs("\tDarwin*)\n", fp); fputs("\tcase \"`id -un`\" in\n", fp); fputs("\t\troot)\n", fp); fputs("\t\t;;\n", fp); fputs("\t\t*)\n", fp); fprintf( fp, "\t\techo Sorry, you must have administrative priviledges to %s this software.\n", title[0] == 'I' ? "install" : title[0] == 'R' ? "remove" : "patch"); fputs("\t\texit 1\n", fp); fputs("\t\t;;\n", fp); fputs("\tesac\n", fp); fputs("\t;;\n", fp); fputs("\t*)\n", fp); fputs("\tcase \"`id`\" in\n", fp); fputs("\t\tuid=0*)\n", fp); fputs("\t\t;;\n", fp); fputs("\t\t*)\n", fp); fprintf(fp, "\t\techo Sorry, you must be root to %s this software.\n", title[0] == 'I' ? "install" : title[0] == 'R' ? "remove" : "patch"); fputs("\t\texit 1\n", fp); fputs("\t\t;;\n", fp); fputs("\tesac\n", fp); fputs("\t;;\n", fp); fputs("esac\n", fp); qprintf(fp, "echo Copyright %s\n", dist->copyright); fprintf(fp, "# Reset umask for %s...\n", title[0] == 'I' ? "install" : title[0] == 'R' ? "remove" : "patch"); fputs("umask 002\n", fp); write_confcheck(fp); /* * Return the file pointer... */ return (fp); } /* * 'write_confcheck()' - Write the echo check to find the right echo options. */ static int /* O - -1 on error, 0 on success */ write_confcheck(FILE *fp) /* I - Script file */ { /* * This is a simplified version of the autoconf test for echo; basically * we ignore the Stardent Vistra SVR4 case, since 1) we've never heard of * this OS, and 2) it doesn't provide the same functionality, specifically * the omission of a newline when prompting the user for some text. */ fputs("# Determine correct echo options...\n", fp); fputs("if (echo \"testing\\c\"; echo 1,2,3) | grep c >/dev/null; then\n", fp); fputs(" ac_n=-n\n", fp); fputs(" ac_c=\n", fp); fputs("else\n", fp); fputs(" ac_n=\n", fp); fputs(" ac_c='\\c'\n", fp); fputs("fi\n", fp); /* * This is a check for the correct options to use with the "tar" * command. */ fputs("# Determine correct extract options for the tar command...\n", fp); fputs("if test `uname` = Darwin; then\n", fp); fputs(" ac_tar=\"tar -xpPf\"\n", fp); fputs("elif test \"`tar --help 2>&1 | grep GNU`\" = \"\"; then\n", fp); fputs(" ac_tar=\"tar -xpf\"\n", fp); fputs("else\n", fp); fputs(" ac_tar=\"tar -xpPf\"\n", fp); fputs("fi\n", fp); return (0); } /* * 'write_depends()' - Write dependencies. */ static int /* O - 0 on success, - 1 on failure */ write_depends(const char *prodname, /* I - Product name */ dist_t *dist, /* I - Distribution */ FILE *fp, /* I - File pointer */ const char *subpackage) /* I - Subpackage */ { int i; /* Looping var */ depend_t *d; /* Current dependency */ const char *product; /* Product/file to depend on */ static const char *depends[] = /* Dependency strings */ {"requires", "incompat", "replaces", "provides"}; for (i = 0, d = dist->depends; i < dist->num_depends; i++, d++) if (d->subpackage == subpackage) { if (!strcmp(d->product, "_self")) product = prodname; else product = d->product; fprintf(fp, "#%%%s %s %d %d\n", depends[(int)d->type], product, d->vernumber[0], d->vernumber[1]); switch (d->type) { case DEPEND_REQUIRES: if (product[0] == '/') { /* * Require a file... */ qprintf(fp, "if test ! -r %s -a ! -h %s; then\n", product, product); qprintf(fp, " echo Sorry, you must first install \\'%s\\'!\n", product); fputs(" exit 1\n", fp); fputs("fi\n", fp); } else { /* * Require a product... */ fprintf(fp, "if test ! -x %s/%s.remove; then\n", SoftwareDir, product); fprintf(fp, " if test -x %s.install; then\n", product); fprintf(fp, " echo Installing required %s software...\n", product); fprintf(fp, " ./%s.install now\n", product); fputs(" else\n", fp); fprintf(fp, " echo Sorry, you must first install \\'%s\\'!\n", product); fputs(" exit 1\n", fp); fputs(" fi\n", fp); fputs("fi\n", fp); if (d->vernumber[0] > 0 || d->vernumber[1] < INT_MAX) { /* * Do version number checking... */ fprintf(fp, "installed=`grep \'^#%%version\' " "%s/%s.remove | awk \'{print $3}\'`\n", SoftwareDir, product); fputs("if test x$installed = x; then\n", fp); fputs(" installed=0\n", fp); fputs("fi\n", fp); fprintf(fp, "if test $installed -lt %d -o $installed -gt %d; then\n", d->vernumber[0], d->vernumber[1]); fprintf(fp, " if test -x %s.install; then\n", product); fprintf( fp, " echo Installing required %s software...\n", product); fprintf(fp, " ./%s.install now\n", product); fputs(" else\n", fp); fprintf(fp, " echo Sorry, you must first install " "\\'%s\\' version %s to %s!\n", product, d->version[0], d->version[1]); fputs(" exit 1\n", fp); fputs(" fi\n", fp); fputs("fi\n", fp); } } break; case DEPEND_INCOMPAT: if (product[0] == '/') { /* * Incompatible with a file... */ qprintf(fp, "if test -r %s -o -h %s; then\n", product, product); qprintf(fp, " echo Sorry, this software is incompatible with " "\\'%s\\'!\n", product); fputs(" echo Please remove it first.\n", fp); fputs(" exit 1\n", fp); fputs("fi\n", fp); } else { /* * Incompatible with a product... */ fprintf(fp, "if test -x %s/%s.remove; then\n", SoftwareDir, product); if (d->vernumber[0] > 0 || d->vernumber[1] < INT_MAX) { /* * Do version number checking... */ fprintf(fp, " installed=`grep \'^#%%version\' " "%s/%s.remove | awk \'{print $3}\'`\n", SoftwareDir, product); fputs(" if test x$installed = x; then\n", fp); fputs(" installed=0\n", fp); fputs(" fi\n", fp); fprintf( fp, " if test $installed -ge %d -a $installed -le %d; then\n", d->vernumber[0], d->vernumber[1]); fprintf(fp, " echo Sorry, this software is " "incompatible with \\'%s\\' version %s to %s!\n", product, d->version[0], d->version[1]); fprintf(fp, " echo Please remove it first by running " "\\'%s/%s.remove\\'.\n", SoftwareDir, product); fputs(" exit 1\n", fp); fputs(" fi\n", fp); } else { fprintf(fp, " echo Sorry, this software is incompatible with " "\\'%s\\'!\n", product); fprintf(fp, " echo Please remove it first by running " "\\'%s/%s.remove\\'.\n", SoftwareDir, product); fputs(" exit 1\n", fp); } fputs("fi\n", fp); } break; case DEPEND_REPLACES: fprintf(fp, "if test -x %s/%s.remove; then\n", SoftwareDir, product); if (d->vernumber[0] > 0 || d->vernumber[1] < INT_MAX) { /* * Do version number checking... */ fprintf(fp, " installed=`grep \'^#%%version\' " "%s/%s.remove | awk \'{print $3}\'`\n", SoftwareDir, product); fputs(" if test x$installed = x; then\n", fp); fputs(" installed=0\n", fp); fputs(" fi\n", fp); fprintf(fp, " if test $installed -ge %d -a $installed -le %d; then\n", d->vernumber[0], d->vernumber[1]); fprintf(fp, " echo Automatically replacing \\'%s\\'...\n", product); fprintf(fp, " %s/%s.remove now\n", SoftwareDir, product); fputs(" fi\n", fp); } else { fprintf(fp, " echo Automatically replacing \\'%s\\'...\n", product); fprintf(fp, " %s/%s.remove now\n", SoftwareDir, product); } fputs("fi\n", fp); break; } } return (0); } /* * 'write_distfiles()' - Write a software distribution... */ static int /* O - -1 on error, 0 on success */ write_distfiles(const char *directory, /* I - Directory */ const char *prodname, /* I - Product name */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution */ time_t deftime, /* I - Default file time */ const char *subpackage) /* I - Subpackage */ { int i; /* Looping var */ int havepatchfiles; /* 1 if we have patch files, 0 otherwise */ tarf_t *tarfile; /* Distribution tar file */ char prodfull[255], /* Full name of product */ swname[255], /* Name of distribution tar file */ pswname[255], /* Name of patch tar file */ filename[1024]; /* Name of temporary file */ struct stat srcstat; /* Source file information */ file_t *file; /* Software file */ int rootsize, /* Size of files in root partition */ usrsize; /* Size of files in /usr partition */ int prootsize, /* Size of patch files in root partition */ pusrsize; /* Size of patch files in /usr partition */ /* * Figure out the full name of the distribution... */ if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); /* * See if we need to make a patch distribution... */ for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (isupper((int)file->type) && file->subpackage == subpackage) break; havepatchfiles = i > 0; /* * Copy the license and readme files... */ if (Verbosity) printf("Copying %s license and readme files...\n", prodfull); if (dist->license[0]) { snprintf(filename, sizeof(filename), "%s/%s.license", directory, prodfull); if (copy_file(filename, dist->license, 0444, getuid(), getgid())) return (1); } if (dist->readme[0]) { snprintf(filename, sizeof(filename), "%s/%s.readme", directory, prodfull); if (copy_file(filename, dist->readme, 0444, getuid(), getgid())) return (1); } /* * Create the non-shared software distribution file... */ if (Verbosity) puts("Creating non-shared software distribution file..."); snprintf(swname, sizeof(swname), "%s.sw", prodfull); snprintf(filename, sizeof(filename), "%s/%s", directory, swname); unlink(filename); if ((tarfile = tar_open(filename, CompressFiles)) == NULL) { fprintf(stderr, "epm: Unable to create file \"%s\" -\n %s\n", filename, strerror(errno)); return (1); } for (i = dist->num_files, file = dist->files, rootsize = 0, prootsize = 0; i > 0; i--, file++) if (strncmp(file->dst, "/usr", 4) != 0 && file->subpackage == subpackage) switch (tolower(file->type)) { case 'f': /* Regular file */ case 'c': /* Config file */ case 'i': /* Init script */ if (stat(file->src, &srcstat)) { fprintf(stderr, "epm: Cannot stat \"%s\": %s\n", file->src, strerror(errno)); tar_close(tarfile); return (1); } rootsize += (srcstat.st_size + 1023) / 1024; if (isupper(file->type & 255)) prootsize += (srcstat.st_size + 1023) / 1024; /* * Configuration files are extracted to the config file name with * .N appended; add a bit of script magic to check if the config * file already exists, and if not we copy the .N to the config * file location... */ if (tolower(file->type) == 'c') snprintf(filename, sizeof(filename), "%s.N", file->dst); else if (tolower(file->type) == 'i') snprintf(filename, sizeof(filename), "%s/init.d/%s", SoftwareDir, file->dst); else strlcpy(filename, file->dst, sizeof(filename)); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (tar_header(tarfile, TAR_NORMAL, file->mode, srcstat.st_size, srcstat.st_mtime, file->user, file->group, filename, NULL) < 0) { tar_close(tarfile); return (1); } if (tar_file(tarfile, file->src) < 0) { tar_close(tarfile); return (1); } break; case 'd': /* Create directory */ if (Verbosity > 1) printf("Directory %s...\n", file->dst); rootsize++; if (isupper(file->type & 255)) prootsize++; break; case 'l': /* Link file */ if (Verbosity > 1) printf("%s -> %s...\n", file->src, file->dst); if (tar_header(tarfile, TAR_SYMLINK, file->mode, 0, deftime, file->user, file->group, file->dst, file->src) < 0) { tar_close(tarfile); return (1); } rootsize++; if (isupper(file->type & 255)) prootsize++; break; } tar_close(tarfile); /* * Create the shared software distribution file... */ if (Verbosity) puts("Creating shared software distribution file..."); snprintf(swname, sizeof(swname), "%s.ss", prodfull); snprintf(filename, sizeof(filename), "%s/%s", directory, swname); unlink(filename); if ((tarfile = tar_open(filename, CompressFiles)) == NULL) { fprintf(stderr, "epm: Unable to create file \"%s\" -\n %s\n", filename, strerror(errno)); return (1); } for (i = dist->num_files, file = dist->files, usrsize = 0, pusrsize = 0; i > 0; i--, file++) if (strncmp(file->dst, "/usr", 4) == 0 && file->subpackage == subpackage) switch (tolower(file->type)) { case 'f': /* Regular file */ case 'c': /* Config file */ case 'i': /* Init script */ if (stat(file->src, &srcstat)) { fprintf(stderr, "epm: Cannot stat \"%s\": %s\n", file->src, strerror(errno)); tar_close(tarfile); return (1); } usrsize += (srcstat.st_size + 1023) / 1024; if (isupper(file->type & 255)) pusrsize += (srcstat.st_size + 1023) / 1024; /* * Configuration files are extracted to the config file name with * .N appended; add a bit of script magic to check if the config * file already exists, and if not we copy the .N to the config * file location... */ if (tolower(file->type) == 'c') snprintf(filename, sizeof(filename), "%s.N", file->dst); else if (tolower(file->type) == 'i') snprintf(filename, sizeof(filename), "%s/init.d/%s", SoftwareDir, file->dst); else strlcpy(filename, file->dst, sizeof(filename)); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (tar_header(tarfile, TAR_NORMAL, file->mode, srcstat.st_size, srcstat.st_mtime, file->user, file->group, filename, NULL) < 0) { tar_close(tarfile); return (1); } if (tar_file(tarfile, file->src) < 0) { tar_close(tarfile); return (1); } break; case 'd': /* Create directory */ if (Verbosity > 1) printf("%s...\n", file->dst); usrsize++; if (isupper(file->type & 255)) pusrsize++; break; case 'l': /* Link file */ if (Verbosity > 1) printf("%s -> %s...\n", file->src, file->dst); if (tar_header(tarfile, TAR_SYMLINK, file->mode, 0, deftime, file->user, file->group, file->dst, file->src) < 0) { tar_close(tarfile); return (1); } usrsize++; if (isupper(file->type & 255)) pusrsize++; break; } tar_close(tarfile); /* * Create the patch distribution files... */ if (havepatchfiles) { if (Verbosity) puts("Creating non-shared software patch file..."); snprintf(pswname, sizeof(pswname), "%s.psw", prodfull); snprintf(filename, sizeof(filename), "%s/%s", directory, pswname); unlink(filename); if ((tarfile = tar_open(filename, CompressFiles)) == NULL) { fprintf(stderr, "epm: Unable to create file \"%s\" -\n %s\n", filename, strerror(errno)); return (1); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (strncmp(file->dst, "/usr", 4) != 0 && file->subpackage == subpackage) switch (file->type) { case 'C': /* Config file */ case 'F': /* Regular file */ case 'I': /* Init script */ if (stat(file->src, &srcstat)) { fprintf(stderr, "epm: Cannot stat \"%s\": %s\n", file->src, strerror(errno)); tar_close(tarfile); return (1); } /* * Configuration files are extracted to the config file name with * .N appended; add a bit of script magic to check if the config * file already exists, and if not we copy the .N to the config * file location... */ if (file->type == 'C') snprintf(filename, sizeof(filename), "%s.N", file->dst); else if (file->type == 'I') snprintf(filename, sizeof(filename), "%s/init.d/%s", SoftwareDir, file->dst); else strlcpy(filename, file->dst, sizeof(filename)); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (tar_header(tarfile, TAR_NORMAL, file->mode, srcstat.st_size, srcstat.st_mtime, file->user, file->group, filename, NULL) < 0) { tar_close(tarfile); return (1); } if (tar_file(tarfile, file->src) < 0) { tar_close(tarfile); return (1); } break; case 'd': /* Create directory */ if (Verbosity > 1) printf("%s...\n", file->dst); break; case 'L': /* Link file */ if (Verbosity > 1) printf("%s -> %s...\n", file->src, file->dst); if (tar_header(tarfile, TAR_SYMLINK, file->mode, 0, deftime, file->user, file->group, file->dst, file->src) < 0) { tar_close(tarfile); return (1); } break; } tar_close(tarfile); if (Verbosity) puts("Creating shared software patch file..."); snprintf(pswname, sizeof(pswname), "%s.pss", prodfull); snprintf(filename, sizeof(filename), "%s/%s", directory, pswname); unlink(filename); if ((tarfile = tar_open(filename, CompressFiles)) == NULL) { fprintf(stderr, "epm: Unable to create file \"%s\" -\n %s\n", filename, strerror(errno)); return (1); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (strncmp(file->dst, "/usr", 4) == 0 && file->subpackage == subpackage) switch (file->type) { case 'C': /* Config file */ case 'F': /* Regular file */ case 'I': /* Init script */ if (stat(file->src, &srcstat)) { fprintf(stderr, "epm: Cannot stat \"%s\": %s\n", file->src, strerror(errno)); tar_close(tarfile); return (1); } /* * Configuration files are extracted to the config file name with * .N appended; add a bit of script magic to check if the config * file already exists, and if not we copy the .N to the config * file location... */ if (file->type == 'C') snprintf(filename, sizeof(filename), "%s.N", file->dst); else if (file->type == 'I') snprintf(filename, sizeof(filename), "%s/init.d/%s", SoftwareDir, file->dst); else strlcpy(filename, file->dst, sizeof(filename)); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (tar_header(tarfile, TAR_NORMAL, file->mode, srcstat.st_size, srcstat.st_mtime, file->user, file->group, filename, NULL) < 0) { tar_close(tarfile); return (1); } if (tar_file(tarfile, file->src) < 0) { tar_close(tarfile); return (1); } break; case 'd': /* Create directory */ if (Verbosity > 1) printf("%s...\n", file->dst); break; case 'L': /* Link file */ if (Verbosity > 1) printf("%s -> %s...\n", file->src, file->dst); if (tar_header(tarfile, TAR_SYMLINK, file->mode, 0, deftime, file->user, file->group, file->dst, file->src) < 0) { tar_close(tarfile); return (1); } break; } tar_close(tarfile); } /* * Create the scripts... */ if (write_install(dist, prodname, rootsize, usrsize, directory, subpackage)) return (1); if (havepatchfiles) if (write_patch(dist, prodname, prootsize, pusrsize, directory, subpackage)) return (1); if (write_remove(dist, prodname, rootsize, usrsize, directory, subpackage)) return (1); /* * Return... */ return (0); } /* * 'write_install()' - Write the installation script. */ static int /* O - -1 on error, 0 on success */ write_install(dist_t *dist, /* I - Software distribution */ const char *prodname, /* I - Product name */ int rootsize, /* I - Size of root files in kbytes */ int usrsize, /* I - Size of /usr files in kbytes */ const char *directory, /* I - Directory */ const char *subpackage) /* I - Subpackage */ { int i; /* Looping var */ int col; /* Column in the output */ FILE *scriptfile; /* Install script */ char prodfull[255]; /* Full product name */ char filename[1024]; /* Name of temporary file */ file_t *file; /* Software file */ const char *runlevels; /* Run levels */ int number; /* Start/stop number */ if (Verbosity) puts("Writing installation script..."); if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); snprintf(filename, sizeof(filename), "%s/%s.install", directory, prodfull); if ((scriptfile = write_common(dist, "Installation", rootsize, usrsize, filename, subpackage)) == NULL) { fprintf(stderr, "epm: Unable to create installation script \"%s\" -\n" " %s\n", filename, strerror(errno)); return (-1); } fputs("if test \"$*\" = \"now\"; then\n", scriptfile); fputs(" echo Software license silently accepted via command-line option.\n", scriptfile); fputs("else\n", scriptfile); fputs(" echo \"\"\n", scriptfile); qprintf(scriptfile, " echo This installation script will install the %s\n", dist->product); qprintf(scriptfile, " echo software version %s on your system.\n", dist->version); fputs(" echo \"\"\n", scriptfile); fputs(" while true ; do\n", scriptfile); fputs(" echo $ac_n \"Do you wish to continue? $ac_c\"\n", scriptfile); fputs(" read yesno\n", scriptfile); fputs(" case \"$yesno\" in\n", scriptfile); fputs(" y | yes | Y | Yes | YES)\n", scriptfile); fputs(" break\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" n | no | N | No | NO)\n", scriptfile); fputs(" exit 1\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" *)\n", scriptfile); fputs(" echo Please enter yes or no.\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" esac\n", scriptfile); fputs(" done\n", scriptfile); if (dist->license[0]) { fprintf(scriptfile, " more %s.license\n", prodfull); fputs(" echo \"\"\n", scriptfile); fputs(" while true ; do\n", scriptfile); fputs(" echo $ac_n \"Do you agree with the terms of this license? " "$ac_c\"\n", scriptfile); fputs(" read yesno\n", scriptfile); fputs(" case \"$yesno\" in\n", scriptfile); fputs(" y | yes | Y | Yes | YES)\n", scriptfile); fputs(" break\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" n | no | N | No | NO)\n", scriptfile); fputs(" exit 1\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" *)\n", scriptfile); fputs(" echo Please enter yes or no.\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" esac\n", scriptfile); fputs(" done\n", scriptfile); } fputs("fi\n", scriptfile); fprintf(scriptfile, "if test -x %s/%s.remove; then\n", SoftwareDir, prodfull); fprintf(scriptfile, " echo Removing old versions of %s software...\n", prodfull); fprintf(scriptfile, " %s/%s.remove now\n", SoftwareDir, prodfull); fputs("fi\n", scriptfile); write_space_checks(prodfull, scriptfile, rootsize ? "sw" : NULL, usrsize ? "ss" : NULL, rootsize, usrsize); write_depends(prodname, dist, scriptfile, subpackage); write_commands(dist, scriptfile, COMMAND_PRE_INSTALL, subpackage); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if ((tolower(file->type) == 'f' || tolower(file->type) == 'l') && strncmp(file->dst, "/usr", 4) != 0 && file->subpackage == subpackage) break; if (i) { fputs("echo Backing up old versions of non-shared files to be installed...\n", scriptfile); col = fputs("for file in", scriptfile); for (; i > 0; i--, file++) if ((tolower(file->type) == 'f' || tolower(file->type) == 'l') && strncmp(file->dst, "/usr", 4) != 0 && file->subpackage == subpackage) { if (col > 80) col = qprintf(scriptfile, " \\\n%s", file->dst) - 2; else col += qprintf(scriptfile, " %s", file->dst); } fputs("; do\n", scriptfile); fputs(" if test -d \"$file\" -o -f \"$file\" -o -h \"$file\"; then\n", scriptfile); fputs(" mv -f \"$file\" \"$file.O\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs("done\n", scriptfile); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if ((tolower(file->type) == 'f' || tolower(file->type) == 'l') && strncmp(file->dst, "/usr", 4) == 0 && file->subpackage == subpackage) break; if (i) { fputs("if test -w /usr ; then\n", scriptfile); fputs(" echo Backing up old versions of shared files to be installed...\n", scriptfile); col = fputs(" for file in", scriptfile); for (; i > 0; i--, file++) if ((tolower(file->type) == 'f' || tolower(file->type) == 'l') && strncmp(file->dst, "/usr", 4) == 0 && file->subpackage == subpackage) { if (col > 80) col = qprintf(scriptfile, " \\\n%s", file->dst) - 2; else col += qprintf(scriptfile, " %s", file->dst); } fputs("; do\n", scriptfile); fputs(" if test -d \"$file\" -o -f \"$file\" -o -h \"$file\"; then\n", scriptfile); fputs(" mv -f \"$file\" \"$file.O\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs(" done\n", scriptfile); fputs("fi\n", scriptfile); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'd' && file->subpackage == subpackage) break; if (i) { fputs("echo Creating installation directories...\n", scriptfile); for (; i > 0; i--, file++) if (tolower(file->type) == 'd' && file->subpackage == subpackage) { qprintf(scriptfile, "if test ! -d %s -a ! -f %s -a ! -h %s; then\n", file->dst, file->dst, file->dst); qprintf(scriptfile, " mkdir -p %s\n", file->dst); fputs("else\n", scriptfile); qprintf(scriptfile, " if test -f %s; then\n", file->dst); qprintf( scriptfile, " echo Error: %s already exists as a regular file!\n", file->dst); fputs(" exit 1\n", scriptfile); fputs(" fi\n", scriptfile); fputs("fi\n", scriptfile); qprintf(scriptfile, "chown %s %s\n", file->user, file->dst); qprintf(scriptfile, "chgrp %s %s\n", file->group, file->dst); qprintf(scriptfile, "chmod %o %s\n", file->mode, file->dst); } } fputs("echo Installing software...\n", scriptfile); if (rootsize) { if (CompressFiles) fprintf(scriptfile, "gzip -dc %s.sw | $ac_tar -\n", prodfull); else fprintf(scriptfile, "$ac_tar %s.sw\n", prodfull); } if (usrsize) { fputs("if echo Write Test >/usr/.writetest 2>/dev/null; then\n", scriptfile); if (CompressFiles) fprintf(scriptfile, " gzip -dc %s.ss | $ac_tar -\n", prodfull); else fprintf(scriptfile, " $ac_tar %s.ss\n", prodfull); fputs("fi\n", scriptfile); } fprintf(scriptfile, "if test -d %s; then\n", SoftwareDir); fprintf(scriptfile, " rm -f %s/%s.remove\n", SoftwareDir, prodfull); fputs("else\n", scriptfile); fprintf(scriptfile, " mkdir -p %s\n", SoftwareDir); fputs("fi\n", scriptfile); fprintf(scriptfile, "cp %s.remove %s\n", prodfull, SoftwareDir); fprintf(scriptfile, "chmod 544 %s/%s.remove\n", SoftwareDir, prodfull); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'c' && file->subpackage == subpackage) break; if (i) { fputs("echo Checking configuration files...\n", scriptfile); col = fputs("for file in", scriptfile); for (; i > 0; i--, file++) if (tolower(file->type) == 'c' && file->subpackage == subpackage) { if (col > 80) col = qprintf(scriptfile, " \\\n%s", file->dst) - 2; else col += qprintf(scriptfile, " %s", file->dst); } fputs("; do\n", scriptfile); fputs(" if test ! -f \"$file\"; then\n", scriptfile); fputs(" cp \"$file.N\" \"$file\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs("done\n", scriptfile); } fputs("echo Updating file permissions...\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (strncmp(file->dst, "/usr", 4) != 0 && strcmp(file->user, "root") != 0 && file->subpackage == subpackage) switch (tolower(file->type)) { case 'c': qprintf(scriptfile, "chown %s %s.N\n", file->user, file->dst); qprintf(scriptfile, "chgrp %s %s.N\n", file->group, file->dst); case 'f': qprintf(scriptfile, "chown %s %s\n", file->user, file->dst); qprintf(scriptfile, "chgrp %s %s\n", file->group, file->dst); break; } fputs("if test -f /usr/.writetest; then\n", scriptfile); fputs(" rm -f /usr/.writetest\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (strncmp(file->dst, "/usr", 4) == 0 && strcmp(file->user, "root") != 0 && file->subpackage == subpackage) switch (tolower(file->type)) { case 'c': qprintf(scriptfile, " chown %s %s.N\n", file->user, file->dst); qprintf(scriptfile, " chgrp %s %s.N\n", file->group, file->dst); case 'f': qprintf(scriptfile, " chown %s %s\n", file->user, file->dst); qprintf(scriptfile, " chgrp %s %s\n", file->group, file->dst); break; } fputs("fi\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) break; if (i) { fputs("echo Setting up init scripts...\n", scriptfile); /* * Find where the frigging init scripts go... */ fputs("rcdir=\"\"\n", scriptfile); fputs("for dir in /sbin/rc.d /sbin /etc/rc.d /etc ; do\n", scriptfile); fputs(" if test -d $dir/rc2.d -o -h $dir/rc2.d -o " "-d $dir/rc3.d -o -h $dir/rc3.d; then\n", scriptfile); fputs(" rcdir=\"$dir\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs("done\n", scriptfile); fputs("if test \"$rcdir\" = \"\" ; then\n", scriptfile); fputs(" if test -d /usr/local/etc/rc.d; then\n", scriptfile); fputs(" for file in", scriptfile); for (; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) qprintf(scriptfile, " %s", file->dst); fputs("; do\n", scriptfile); fputs(" rm -f /usr/local/etc/rc.d/$file.sh\n", scriptfile); qprintf(scriptfile, " ln -s %s/init.d/$file " "/usr/local/etc/rc.d/$file.sh\n", SoftwareDir); fputs(" done\n", scriptfile); fputs(" else\n", scriptfile); fputs(" echo Unable to determine location of startup scripts!\n", scriptfile); fputs(" fi\n", scriptfile); fputs("else\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) { fputs(" if test -d $rcdir/init.d; then\n", scriptfile); qprintf(scriptfile, " /bin/rm -f $rcdir/init.d/%s\n", file->dst); qprintf(scriptfile, " /bin/ln -s %s/init.d/%s " "$rcdir/init.d/%s\n", SoftwareDir, file->dst, file->dst); fputs(" else\n", scriptfile); fputs(" if test -d /etc/init.d; then\n", scriptfile); qprintf(scriptfile, " /bin/rm -f /etc/init.d/%s\n", file->dst); qprintf(scriptfile, " /bin/ln -s %s/init.d/%s " "/etc/init.d/%s\n", SoftwareDir, file->dst, file->dst); fputs(" fi\n", scriptfile); fputs(" fi\n", scriptfile); for (runlevels = get_runlevels(dist->files + i, "0235"); isdigit(*runlevels & 255); runlevels++) { if (*runlevels == '0') number = get_stop(file, 0); else number = get_start(file, 99); fprintf(scriptfile, " if test -d $rcdir/rc%c.d; then\n", *runlevels); qprintf(scriptfile, " /bin/rm -f $rcdir/rc%c.d/%c%02d%s\n", *runlevels, *runlevels == '0' ? 'K' : 'S', number, file->dst); qprintf(scriptfile, " /bin/ln -s %s/init.d/%s " "$rcdir/rc%c.d/%c%02d%s\n", SoftwareDir, file->dst, *runlevels, *runlevels == '0' ? 'K' : 'S', number, file->dst); fputs(" fi\n", scriptfile); } #ifdef __sgi fputs(" if test -x /etc/chkconfig; then\n", scriptfile); qprintf(scriptfile, " /etc/chkconfig -f %s on\n", file->dst); fputs(" fi\n", scriptfile); #endif /* __sgi */ } fputs("fi\n", scriptfile); } write_commands(dist, scriptfile, COMMAND_POST_INSTALL, subpackage); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) qprintf(scriptfile, "%s/init.d/%s start\n", SoftwareDir, file->dst); fputs("echo Installation is complete.\n", scriptfile); fclose(scriptfile); return (0); } /* * 'write_instfiles()' - Write the installer files to the tar file... */ static int /* O - 0 = success, -1 on failure */ write_instfiles(tarf_t *tarfile, /* I - Distribution tar file */ const char *directory, /* I - Output directory */ const char *prodname, /* I - Base product name */ const char *platname, /* I - Platform name */ const char **files, /* I - Files */ const char *destdir, /* I - Destination directory in tar file */ const char *subpackage) /* I - Subpackage */ { int i; /* Looping var */ char srcname[1024], /* Name of source file in distribution */ dstname[1024], /* Name of destination file in distribution */ prodfull[255]; /* Full name of product */ struct stat srcstat; /* Source file information */ if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); for (i = 0; files[i] != NULL; i++) { snprintf(srcname, sizeof(srcname), "%s/%s.%s", directory, prodfull, files[i]); snprintf(dstname, sizeof(dstname), "%s%s.%s", destdir, prodfull, files[i]); if (stat(srcname, &srcstat)) { if (!i) break; else continue; } if (srcstat.st_size == 0) continue; if (tar_header(tarfile, TAR_NORMAL, srcstat.st_mode & 07555, srcstat.st_size, srcstat.st_mtime, "root", "root", dstname, NULL) < 0) { return (-1); } if (tar_file(tarfile, srcname) < 0) return (-1); if (Verbosity) printf(" %7.0fk %s.%s\n", (srcstat.st_size + 1023) / 1024.0, prodfull, files[i]); } return (0); } /* * 'write_patch()' - Write the patch script. */ static int /* O - -1 on error, 0 on success */ write_patch(dist_t *dist, /* I - Software distribution */ const char *prodname, /* I - Product name */ int rootsize, /* I - Size of root files in kbytes */ int usrsize, /* I - Size of /usr files in kbytes */ const char *directory, /* I - Directory */ const char *subpackage) /* I - Subpackage */ { int i; /* Looping var */ FILE *scriptfile; /* Patch script */ char filename[1024]; /* Name of temporary file */ char prodfull[255]; /* Full product name */ file_t *file; /* Software file */ const char *runlevels; /* Run levels */ int number; /* Start/stop number */ if (Verbosity) puts("Writing patch script..."); if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); snprintf(filename, sizeof(filename), "%s/%s.patch", directory, prodfull); if ((scriptfile = write_common(dist, "Patch", rootsize, usrsize, filename, subpackage)) == NULL) { fprintf(stderr, "epm: Unable to create patch script \"%s\" -\n" " %s\n", filename, strerror(errno)); return (-1); } fputs("if test \"$*\" = \"now\"; then\n", scriptfile); fputs(" echo Software license silently accepted via command-line option.\n", scriptfile); fputs("else\n", scriptfile); fputs(" echo \"\"\n", scriptfile); qprintf(scriptfile, " echo This installation script will patch the %s\n", dist->product); qprintf(scriptfile, " echo software to version %s on your system.\n", dist->version); fputs(" echo \"\"\n", scriptfile); fputs(" while true ; do\n", scriptfile); fputs(" echo $ac_n \"Do you wish to continue? $ac_c\"\n", scriptfile); fputs(" read yesno\n", scriptfile); fputs(" case \"$yesno\" in\n", scriptfile); fputs(" y | yes | Y | Yes | YES)\n", scriptfile); fputs(" break\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" n | no | N | No | NO)\n", scriptfile); fputs(" exit 1\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" *)\n", scriptfile); fputs(" echo Please enter yes or no.\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" esac\n", scriptfile); fputs(" done\n", scriptfile); if (dist->license[0]) { fprintf(scriptfile, " more %s.license\n", prodfull); fputs(" echo \"\"\n", scriptfile); fputs(" while true ; do\n", scriptfile); fputs(" echo $ac_n \"Do you agree with the terms of this license? " "$ac_c\"\n", scriptfile); fputs(" read yesno\n", scriptfile); fputs(" case \"$yesno\" in\n", scriptfile); fputs(" y | yes | Y | Yes | YES)\n", scriptfile); fputs(" break\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" n | no | N | No | NO)\n", scriptfile); fputs(" exit 1\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" *)\n", scriptfile); fputs(" echo Please enter yes or no.\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" esac\n", scriptfile); fputs(" done\n", scriptfile); } fputs("fi\n", scriptfile); write_space_checks(prodfull, scriptfile, rootsize ? "psw" : NULL, usrsize ? "pss" : NULL, rootsize, usrsize); write_depends(prodname, dist, scriptfile, subpackage); fprintf(scriptfile, "if test ! -x %s/%s.remove; then\n", SoftwareDir, prodfull); fputs(" echo You do not appear to have the base software installed!\n", scriptfile); fputs(" echo Please install the full distribution instead.\n", scriptfile); fputs(" exit 1\n", scriptfile); fputs("fi\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) qprintf(scriptfile, "%s/init.d/%s stop\n", SoftwareDir, file->dst); write_commands(dist, scriptfile, COMMAND_PRE_PATCH, subpackage); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (file->type == 'D' && file->subpackage == subpackage) break; if (i) { fputs("echo Creating new installation directories...\n", scriptfile); for (; i > 0; i--, file++) if (file->type == 'D' && file->subpackage == subpackage) { qprintf(scriptfile, "if test ! -d %s -a ! -f %s -a ! -h %s; then\n", file->dst, file->dst, file->dst); qprintf(scriptfile, " mkdir -p %s\n", file->dst); fputs("else\n", scriptfile); qprintf(scriptfile, " if test -f %s; then\n", file->dst); qprintf( scriptfile, " echo Error: %s already exists as a regular file!\n", file->dst); fputs(" exit 1\n", scriptfile); fputs(" fi\n", scriptfile); fputs("fi\n", scriptfile); qprintf(scriptfile, "chown %s %s\n", file->user, file->dst); qprintf(scriptfile, "chgrp %s %s\n", file->group, file->dst); qprintf(scriptfile, "chmod %o %s\n", file->mode, file->dst); } } fputs("echo Patching software...\n", scriptfile); if (rootsize) { if (CompressFiles) fprintf(scriptfile, "gzip -dc %s.psw | $ac_tar -\n", prodfull); else fprintf(scriptfile, "$ac_tar %s.psw\n", prodfull); } if (usrsize) { fputs("if echo Write Test >/usr/.writetest 2>/dev/null; then\n", scriptfile); if (CompressFiles) fprintf(scriptfile, " gzip -dc %s.pss | $ac_tar -\n", prodfull); else fprintf(scriptfile, " $ac_tar %s.pss\n", prodfull); fputs("fi\n", scriptfile); } fprintf(scriptfile, "rm -f %s/%s.remove\n", SoftwareDir, prodfull); fprintf(scriptfile, "cp %s.remove %s\n", prodfull, SoftwareDir); fprintf(scriptfile, "chmod 544 %s/%s.remove\n", SoftwareDir, prodfull); fputs("echo Updating file permissions...\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (strncmp(file->dst, "/usr", 4) != 0 && strcmp(file->user, "root") != 0 && file->subpackage == subpackage) switch (file->type) { case 'C': case 'F': qprintf(scriptfile, "chown %s %s\n", file->user, file->dst); qprintf(scriptfile, "chgrp %s %s\n", file->group, file->dst); break; } fputs("if test -f /usr/.writetest; then\n", scriptfile); fputs(" rm -f /usr/.writetest\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (strncmp(file->dst, "/usr", 4) == 0 && strcmp(file->user, "root") != 0 && file->subpackage == subpackage) switch (file->type) { case 'C': case 'F': qprintf(scriptfile, " chown %s %s\n", file->user, file->dst); qprintf(scriptfile, " chgrp %s %s\n", file->group, file->dst); break; } fputs("fi\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (file->type == 'C' && file->subpackage == subpackage) break; if (i) { fputs("echo Checking configuration files...\n", scriptfile); fputs("for file in", scriptfile); for (; i > 0; i--, file++) if (file->type == 'C' && file->subpackage == subpackage) qprintf(scriptfile, " %s", file->dst); fputs("; do\n", scriptfile); fputs(" if test ! -f \"$file\"; then\n", scriptfile); fputs(" cp \"$file.N\" \"$file\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs("done\n", scriptfile); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (file->type == 'R' && file->subpackage == subpackage) break; if (i) { fputs("echo Removing files that are no longer used...\n", scriptfile); fputs("for file in", scriptfile); for (; i > 0; i--, file++) if (file->type == 'R' && file->subpackage == subpackage) qprintf(scriptfile, " %s", file->dst); fputs("; do\n", scriptfile); fputs(" rm -f \"$file\"\n", scriptfile); fputs(" if test -d \"$file.O\" -o -f \"$file.O\" -o -h \"$file.O\"; then\n", scriptfile); fputs(" mv -f \"$file.O\" \"$file\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs("done\n", scriptfile); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (file->type == 'I' && file->subpackage == subpackage) break; if (i) { fputs("echo Setting up init scripts...\n", scriptfile); /* * Find where the frigging init scripts go... */ fputs("rcdir=\"\"\n", scriptfile); fputs("for dir in /sbin/rc.d /sbin /etc/rc.d /etc ; do\n", scriptfile); fputs(" if test -d $dir/rc2.d -o -h $dir/rc2.d -o " "-d $dir/rc3.d -o -h $dir/rc3.d; then\n", scriptfile); fputs(" rcdir=\"$dir\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs("done\n", scriptfile); fputs("if test \"$rcdir\" = \"\" ; then\n", scriptfile); fputs(" if test -d /usr/local/etc/rc.d; then\n", scriptfile); fputs(" for file in", scriptfile); for (; i > 0; i--, file++) if (tolower(file->type) == 'I' && file->subpackage == subpackage) qprintf(scriptfile, " %s", file->dst); fputs("; do\n", scriptfile); fputs(" rm -f /usr/local/etc/rc.d/$file.sh\n", scriptfile); qprintf(scriptfile, " ln -s %s/init.d/$file " "/usr/local/etc/rc.d/$file.sh\n", SoftwareDir); fputs(" done\n", scriptfile); fputs(" else\n", scriptfile); fputs(" echo Unable to determine location of startup scripts!\n", scriptfile); fputs(" fi\n", scriptfile); fputs("else\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) { fputs(" if test -d $rcdir/init.d; then\n", scriptfile); qprintf(scriptfile, " /bin/rm -f $rcdir/init.d/%s\n", file->dst); qprintf(scriptfile, " /bin/ln -s %s/init.d/%s " "$rcdir/init.d/%s\n", SoftwareDir, file->dst, file->dst); fputs(" else\n", scriptfile); fputs(" if test -d /etc/init.d; then\n", scriptfile); qprintf(scriptfile, " /bin/rm -f /etc/init.d/%s\n", file->dst); qprintf(scriptfile, " /bin/ln -s %s/init.d/%s " "/etc/init.d/%s\n", SoftwareDir, file->dst, file->dst); fputs(" fi\n", scriptfile); fputs(" fi\n", scriptfile); for (runlevels = get_runlevels(dist->files + i, "0235"); isdigit(*runlevels & 255); runlevels++) { if (*runlevels == '0') number = get_stop(file, 0); else number = get_start(file, 99); fprintf(scriptfile, " if test -d $rcdir/rc%c.d; then\n", *runlevels); qprintf(scriptfile, " /bin/rm -f $rcdir/rc%c.d/%c%02d%s\n", *runlevels, *runlevels == '0' ? 'K' : 'S', number, file->dst); qprintf(scriptfile, " /bin/ln -s %s/init.d/%s " "$rcdir/rc%c.d/%c%02d%s\n", SoftwareDir, file->dst, *runlevels, *runlevels == '0' ? 'K' : 'S', number, file->dst); fputs(" fi\n", scriptfile); } #ifdef __sgi fputs(" if test -x /etc/chkconfig; then\n", scriptfile); qprintf(scriptfile, " /etc/chkconfig -f %s on\n", file->dst); fputs(" fi\n", scriptfile); #endif /* __sgi */ } fputs("fi\n", scriptfile); } write_commands(dist, scriptfile, COMMAND_POST_PATCH, subpackage); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) qprintf(scriptfile, "%s/init.d/%s start\n", SoftwareDir, file->dst); fputs("echo Patching is complete.\n", scriptfile); fclose(scriptfile); return (0); } /* * 'write_remove()' - Write the removal script. */ static int /* O - -1 on error, 0 on success */ write_remove(dist_t *dist, /* I - Software distribution */ const char *prodname, /* I - Product name */ int rootsize, /* I - Size of root files in kbytes */ int usrsize, /* I - Size of /usr files in kbytes */ const char *directory, /* I - Directory */ const char *subpackage) /* I - Subpackage */ { int i; /* Looping var */ int col; /* Current column */ FILE *scriptfile; /* Remove script */ char filename[1024]; /* Name of temporary file */ char prodfull[255]; /* Full product name */ file_t *file; /* Software file */ const char *runlevels; /* Run levels */ int number; /* Start/stop number */ if (Verbosity) puts("Writing removal script..."); if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); snprintf(filename, sizeof(filename), "%s/%s.remove", directory, prodfull); if ((scriptfile = write_common(dist, "Removal", rootsize, usrsize, filename, subpackage)) == NULL) { fprintf(stderr, "epm: Unable to create removal script \"%s\" -\n" " %s\n", filename, strerror(errno)); return (-1); } fputs("if test ! \"$*\" = \"now\"; then\n", scriptfile); fputs(" echo \"\"\n", scriptfile); qprintf(scriptfile, " echo This removal script will remove the %s\n", dist->product); qprintf(scriptfile, " echo software version %s from your system.\n", dist->version); fputs(" echo \"\"\n", scriptfile); fputs(" while true ; do\n", scriptfile); fputs(" echo $ac_n \"Do you wish to continue? $ac_c\"\n", scriptfile); fputs(" read yesno\n", scriptfile); fputs(" case \"$yesno\" in\n", scriptfile); fputs(" y | yes | Y | Yes | YES)\n", scriptfile); fputs(" break\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" n | no | N | No | NO)\n", scriptfile); fputs(" exit 1\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" *)\n", scriptfile); fputs(" echo Please enter yes or no.\n", scriptfile); fputs(" ;;\n", scriptfile); fputs(" esac\n", scriptfile); fputs(" done\n", scriptfile); fputs("fi\n", scriptfile); /* * Find any removal commands in the list file... */ for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) qprintf(scriptfile, "%s/init.d/%s stop\n", SoftwareDir, file->dst); write_commands(dist, scriptfile, COMMAND_PRE_REMOVE, subpackage); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) break; if (i) { fputs("echo Cleaning up init scripts...\n", scriptfile); /* * Find where the frigging init scripts go... */ fputs("rcdir=\"\"\n", scriptfile); fputs("for dir in /sbin/rc.d /sbin /etc/rc.d /etc ; do\n", scriptfile); fputs(" if test -d $dir/rc2.d -o -h $dir/rc2.d -o " "-d $dir/rc3.d -o -h $dir/rc3.d; then\n", scriptfile); fputs(" rcdir=\"$dir\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs("done\n", scriptfile); fputs("if test \"$rcdir\" = \"\" ; then\n", scriptfile); fputs(" if test -d /usr/local/etc/rc.d; then\n", scriptfile); fputs(" for file in", scriptfile); for (; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) qprintf(scriptfile, " %s", file->dst); fputs("; do\n", scriptfile); fputs(" rm -f /usr/local/etc/rc.d/$file.sh\n", scriptfile); fputs(" done\n", scriptfile); fputs(" else\n", scriptfile); fputs(" echo Unable to determine location of startup scripts!\n", scriptfile); fputs(" fi\n", scriptfile); fputs("else\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) { qprintf(scriptfile, " %s/init.d/%s stop\n", SoftwareDir, file->dst); fputs(" if test -d $rcdir/init.d; then\n", scriptfile); qprintf(scriptfile, " /bin/rm -f $rcdir/init.d/%s\n", file->dst); fputs(" else\n", scriptfile); fputs(" if test -d /etc/init.d; then\n", scriptfile); qprintf(scriptfile, " /bin/rm -f /etc/init.d/%s\n", file->dst); fputs(" fi\n", scriptfile); fputs(" fi\n", scriptfile); for (runlevels = get_runlevels(dist->files + i, "0235"); isdigit(*runlevels & 255); runlevels++) { if (*runlevels == '0') number = get_stop(file, 0); else number = get_start(file, 99); fprintf(scriptfile, " if test -d $rcdir/rc%c.d; then\n", *runlevels); qprintf(scriptfile, " /bin/rm -f $rcdir/rc%c.d/%c%02d%s\n", *runlevels, *runlevels == '0' ? 'K' : 'S', number, file->dst); fputs(" fi\n", scriptfile); } #ifdef __sgi fputs(" if test -x /etc/chkconfig; then\n", scriptfile); qprintf(scriptfile, " rm -f /etc/config/%s\n", file->dst); fputs(" fi\n", scriptfile); #endif /* __sgi */ } fputs("fi\n", scriptfile); } fputs("echo Removing/restoring installed files...\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if ((tolower(file->type) == 'f' || tolower(file->type) == 'l') && strncmp(file->dst, "/usr", 4) != 0 && file->subpackage == subpackage) break; if (i) { col = fputs("for file in", scriptfile); for (; i > 0; i--, file++) if ((tolower(file->type) == 'f' || tolower(file->type) == 'l') && strncmp(file->dst, "/usr", 4) != 0 && file->subpackage == subpackage) { if (col > 80) col = qprintf(scriptfile, " \\\n%s", file->dst) - 2; else col += qprintf(scriptfile, " %s", file->dst); } fputs("; do\n", scriptfile); fputs(" rm -f \"$file\"\n", scriptfile); fputs(" if test -d \"$file.O\" -o -f \"$file.O\" -o -h \"$file.O\"; then\n", scriptfile); fputs(" mv -f \"$file.O\" \"$file\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs("done\n", scriptfile); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if ((tolower(file->type) == 'f' || tolower(file->type) == 'l') && strncmp(file->dst, "/usr", 4) == 0 && file->subpackage == subpackage) break; if (i) { fputs("if test -w /usr ; then\n", scriptfile); col = fputs(" for file in", scriptfile); for (; i > 0; i--, file++) if ((tolower(file->type) == 'f' || tolower(file->type) == 'l') && strncmp(file->dst, "/usr", 4) == 0 && file->subpackage == subpackage) { if (col > 80) col = qprintf(scriptfile, " \\\n%s", file->dst) - 2; else col += qprintf(scriptfile, " %s", file->dst); } fputs("; do\n", scriptfile); fputs(" rm -f \"$file\"\n", scriptfile); fputs(" if test -d \"$file.O\" -o -f \"$file.O\" -o -h \"$file.O\"; " "then\n", scriptfile); fputs(" mv -f \"$file.O\" \"$file\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs(" done\n", scriptfile); fputs("fi\n", scriptfile); } fputs("echo Checking configuration files...\n", scriptfile); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'c' && file->subpackage == subpackage) break; if (i) { col = fputs("for file in", scriptfile); for (; i > 0; i--, file++) if (tolower(file->type) == 'c' && file->subpackage == subpackage) { if (col > 80) col = qprintf(scriptfile, " \\\n%s", file->dst) - 2; else col += qprintf(scriptfile, " %s", file->dst); } fputs("; do\n", scriptfile); fputs(" if cmp -s \"$file\" \"$file.N\"; then\n", scriptfile); fputs(" # Config file not changed\n", scriptfile); fputs(" rm -f \"$file\"\n", scriptfile); fputs(" fi\n", scriptfile); fputs(" rm -f \"$file.N\"\n", scriptfile); fputs("done\n", scriptfile); } for (i = dist->num_files, file = dist->files + i - 1; i > 0; i--, file--) if (tolower(file->type) == 'd' && file->subpackage == subpackage) break; if (i) { fputs("echo Removing empty installation directories...\n", scriptfile); for (; i > 0; i--, file--) if (tolower(file->type) == 'd' && file->subpackage == subpackage) { qprintf(scriptfile, "if test -d %s; then\n", file->dst); qprintf(scriptfile, " rmdir %s >/dev/null 2>&1\n", file->dst); fputs("fi\n", scriptfile); } } write_commands(dist, scriptfile, COMMAND_POST_REMOVE, subpackage); fprintf(scriptfile, "rm -f %s/%s.remove\n", SoftwareDir, prodfull); fputs("echo Removal is complete.\n", scriptfile); fclose(scriptfile); return (0); } /* * 'write_space_checks()' - Write disk space checks for the installer. */ static int /* O - 0 on success, -1 on error */ write_space_checks(const char *prodname, /* I - Distribution name */ FILE *fp, /* I - File to write to */ const char *sw, /* I - / archive */ const char *ss, /* I - /usr archive */ int rootsize, /* I - / install size in kbytes */ int usrsize) /* I - /usr install size in kbytes */ { fputs("case `uname` in\n", fp); fputs(" AIX)\n", fp); fputs(" dfroot=`df -k / | tr '\\n' ' '`\n", fp); fputs(" dfusr=`df -k /usr | tr '\\n' ' '`\n", fp); fputs(" fsroot=`echo $dfroot | awk '{print $15}'`\n", fp); fputs(" sproot=`echo $dfroot | awk '{print $11}'`\n", fp); fputs(" fsusr=`echo $dfusr | awk '{print $15}'`\n", fp); fputs(" spusr=`echo $dfusr | awk '{print $11}'`\n", fp); fputs(" ;;\n\n", fp); fputs(" HP-UX)\n", fp); fputs(" dfroot=`df -k / | tr '\\n' ' '`\n", fp); fputs(" dfusr=`df -k /usr | tr '\\n' ' '`\n", fp); fputs(" fsroot=`echo $dfroot | awk '{print $1}'`\n", fp); fputs(" sproot=`echo $dfroot | awk '{print $9}'`\n", fp); fputs(" fsusr=`echo $dfusr | awk '{print $1}'`\n", fp); fputs(" spusr=`echo $dfusr | awk '{print $9}'`\n", fp); fputs(" ;;\n\n", fp); fputs(" IRIX*)\n", fp); fputs(" dfroot=`df -k / | tr '\\n' ' '`\n", fp); fputs(" dfusr=`df -k /usr | tr '\\n' ' '`\n", fp); fputs(" fsroot=`echo $dfroot | awk '{print $15}'`\n", fp); fputs(" sproot=`echo $dfroot | awk '{print $13}'`\n", fp); fputs(" fsusr=`echo $dfusr | awk '{print $15}'`\n", fp); fputs(" spusr=`echo $dfusr | awk '{print $13}'`\n", fp); fputs(" ;;\n\n", fp); fputs(" SCO*)\n", fp); fputs(" dfroot=`df -k -B / | tr '\\n' ' '`\n", fp); fputs(" dfusr=`df -k -B /usr | tr '\\n' ' '`\n", fp); fputs(" fsroot=`echo $dfroot | awk '{print $13}'`\n", fp); fputs(" sproot=`echo $dfroot | awk '{print $11}'`\n", fp); fputs(" fsusr=`echo $dfusr | awk '{print $13}'`\n", fp); fputs(" spusr=`echo $dfusr | awk '{print $11}'`\n", fp); fputs(" ;;\n\n", fp); fputs(" *)\n", fp); fputs(" dfroot=`df -k / | tr '\\n' ' '`\n", fp); fputs(" dfusr=`df -k /usr | tr '\\n' ' '`\n", fp); fputs(" fsroot=`echo $dfroot | awk '{print $13}'`\n", fp); fputs(" sproot=`echo $dfroot | awk '{print $11}'`\n", fp); fputs(" fsusr=`echo $dfusr | awk '{print $13}'`\n", fp); fputs(" spusr=`echo $dfusr | awk '{print $11}'`\n", fp); fputs(" ;;\n", fp); fputs("esac\n", fp); fputs("\n", fp); fputs("if test x$sproot = x -o x$spusr = x; then\n", fp); fputs(" echo WARNING: Unable to determine available disk space\\; " "installing blindly...\n", fp); fputs("else\n", fp); fputs(" if test x$fsroot = x$fsusr; then\n", fp); fprintf(fp, " if test %d -gt $sproot; then\n", rootsize + usrsize); fputs(" echo Not enough free disk space for " "software:\n", fp); fprintf(fp, " echo You need %d kbytes but only have " "$sproot kbytes available.\n", rootsize + usrsize); fputs(" exit 1\n", fp); fputs(" fi\n", fp); fputs(" else\n", fp); fprintf(fp, " if test %d -gt $sproot; then\n", rootsize); fputs(" echo Not enough free disk space for " "software:\n", fp); fprintf(fp, " echo You need %d kbytes in / but only have " "$sproot kbytes available.\n", rootsize); fputs(" exit 1\n", fp); fputs(" fi\n", fp); fputs("\n", fp); fprintf(fp, " if test %d -gt $spusr; then\n", usrsize); fputs(" echo Not enough free disk space for " "software:\n", fp); fprintf(fp, " echo You need %d kbytes in /usr but only have " "$spusr kbytes available.\n", usrsize); fputs(" exit 1\n", fp); fputs(" fi\n", fp); fputs(" fi\n", fp); fputs("fi\n", fp); return (0); } jimjag-epm-84910c6/qprintf.c000066400000000000000000000132511521151356300156450ustar00rootroot00000000000000/* * Quoted fprintf function for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2014 by Michael R Sweet * Copyright 1999-2009 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" #include "epmstring.h" #include #include /* * 'qprintf()' - Do formatted output to a file. */ int /* O - Number of bytes formatted */ qprintf(FILE *fp, /* I - File to write to */ const char *format, /* I - printf-style format string */ ...) /* I - Additional args as needed... */ { va_list ap; /* Pointer to additional arguments */ int bytes; /* Bytes written */ char sign, /* Sign of format width */ size, /* Size character (h, l, L) */ type; /* Format type character */ const char *bufformat; /* Start of format */ int width, /* Width of field */ prec; /* Number of characters of precision */ char tformat[100]; /* Temporary format string for fprintf() */ char *s; /* Pointer to string */ int slen; /* Length of string */ int i; /* Looping var */ char *pattern = "`~#$%^&*()[{]}\\|;\'\"<>? "; #if defined(__FreeBSD__) if (AooMode) pattern = "`~!#%^&*()[{]}\\|;\'\"<>? "; #endif /* * Loop through the format string, formatting as needed... */ va_start(ap, format); bytes = 0; while (*format) { if (*format == '%') { bufformat = format; format++; if (*format == '%') { putc(*format++, fp); bytes++; continue; } else if (strchr(" -+#\'", *format)) sign = *format++; else sign = 0; width = 0; while (isdigit(*format & 255)) width = width * 10 + *format++ - '0'; if (*format == '.') { format++; prec = 0; while (isdigit(*format & 255)) prec = prec * 10 + *format++ - '0'; } else prec = -1; if (*format == 'l') size = *format++; else size = '\0'; if (!*format) break; type = *format++; switch (type) { case 'E': /* Floating point formats */ case 'G': case 'e': case 'f': case 'g': if ((format - bufformat + 1) > sizeof(tformat)) break; strlcpy(tformat, bufformat, (size_t)(format - bufformat + 1)); bytes += fprintf(fp, tformat, va_arg(ap, double)); break; case 'B': /* Integer formats */ case 'X': case 'b': case 'd': case 'i': case 'o': case 'u': case 'x': if ((format - bufformat + 1) > sizeof(tformat)) break; strlcpy(tformat, bufformat, (size_t)(format - bufformat + 1)); if (size == 'l') bytes += fprintf(fp, tformat, va_arg(ap, long)); else bytes += fprintf(fp, tformat, va_arg(ap, int)); break; case 'p': /* Pointer value */ if ((format - bufformat + 1) > sizeof(tformat)) break; strlcpy(tformat, bufformat, (size_t)(format - bufformat + 1)); bytes += fprintf(fp, tformat, va_arg(ap, void *)); break; case 'c': /* Character or character array */ if (width <= 1) { bytes++; putc(va_arg(ap, int), fp); } else { fwrite(va_arg(ap, char *), 1, (size_t)width, fp); bytes += width; } break; case 's': /* String */ if ((s = va_arg(ap, char *)) == NULL) s = "(null)"; slen = (int)strlen(s); if (slen > width && prec != width) width = slen; if (slen > width) slen = width; if (sign != '-') { for (i = width - slen; i > 0; i--, bytes++) putc(' ', fp); } for (i = slen; i > 0; i--, s++, bytes++) { if (strchr(pattern, *s)) { putc('\\', fp); bytes++; } putc(*s, fp); } if (sign == '-') { for (i = width - slen; i > 0; i--, bytes++) putc(' ', fp); } break; } } else { putc(*format++, fp); bytes++; } } va_end(ap); /* * Return the number of characters written. */ return (bytes); } jimjag-epm-84910c6/rpm.c000066400000000000000000000745331521151356300147720ustar00rootroot00000000000000/* * Red Hat package gateway for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright © 1999-2020 by Michael R Sweet * Copyright © 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local functions... */ static int move_rpms(const char *prodname, const char *directory, const char *platname, dist_t *dist, struct utsname *platform, const char *rpmdir, const char *subpackage, const char *release); static int write_spec(int format, const char *prodname, dist_t *dist, FILE *fp, const char *subpackage); /* * 'make_rpm()' - Make a Red Hat software distribution package. */ int /* O - 0 = success, 1 = fail */ make_rpm(int format, /* I - Subformat */ const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform, /* I - Platform information */ const char *setup, /* I - Setup GUI image */ const char *types) /* I - Setup GUI install types */ { int i; /* Looping var */ FILE *fp; /* Spec file */ tarf_t *tarfile; /* Distribution tar file */ char specname[1024]; /* Spec filename */ char name[1024], /* Product filename */ filename[1024]; /* Destination filename */ file_t *file; /* Current distribution file */ char absdir[1024]; /* Absolute directory */ char rpmdir[1024]; /* RPMDIR env var */ char release[256]; /* Release: number */ const char *build_option; /* Additional rpmbuild option */ if (Verbosity) puts("Creating RPM distribution..."); if (directory[0] != '/') { char current[1024]; /* Current directory */ getcwd(current, sizeof(current)); snprintf(absdir, sizeof(absdir), "%s/%s", current, directory); } else strlcpy(absdir, directory, sizeof(absdir)); /* * Write the spec file for RPM... */ if (Verbosity) puts("Creating spec file..."); snprintf(specname, sizeof(specname), "%s/%s.spec", directory, prodname); if ((fp = fopen(specname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create spec file \"%s\": %s\n", specname, strerror(errno)); return (1); } if (dist->release[0]) strlcpy(release, dist->release, sizeof(release)); else strlcpy(release, "0", sizeof(release)); fprintf(fp, "Name: %s\n", prodname); fprintf(fp, "Version: %s\n", dist->version); if (dist->epoch) fprintf(fp, "Epoch: %d\n", dist->epoch); fprintf(fp, "Release: %s\n", release); fprintf(fp, "License: %s\n", dist->copyright); fprintf(fp, "Packager: %s\n", dist->packager); fprintf(fp, "Vendor: %s\n", dist->vendor); if (format == PACKAGE_LSB || format == PACKAGE_LSB_SIGNED) fputs("Requires: lsb >= 3.0\n", fp); /* * Tell RPM to put the distributions in the output directory... */ #ifdef EPM_RPMTOPDIR fprintf(fp, "%%define _topdir %s\n", absdir); strlcpy(rpmdir, absdir, sizeof(rpmdir)); #else if (getenv("RPMDIR")) strlcpy(rpmdir, getenv("RPMDIR"), sizeof(rpmdir)); else if (!access("/usr/src/redhat", 0)) strlcpy(rpmdir, "/usr/src/redhat", sizeof(rpmdir)); else if (!access("/usr/src/Mandrake", 0)) strlcpy(rpmdir, "/usr/src/Mandrake", sizeof(rpmdir)); else strlcpy(rpmdir, "/usr/src/RPM", sizeof(rpmdir)); #endif /* EPM_RPMTOPDIR */ snprintf(filename, sizeof(filename), "%s/BUILD", directory); make_directory(filename, 0, getuid(), getgid()); snprintf(filename, sizeof(filename), "%s/RPMS", directory); make_directory(filename, 0, getuid(), getgid()); snprintf(filename, sizeof(filename), "%s/rpms", directory); symlink("RPMS", filename); if (!strcmp(platform->machine, "intel")) snprintf(filename, sizeof(filename), "%s/RPMS/i386", directory); else if (!strcmp(platform->machine, "ppc")) snprintf(filename, sizeof(filename), "%s/RPMS/ppc", directory); else snprintf(filename, sizeof(filename), "%s/RPMS/%s", directory, platform->machine); make_directory(filename, 0, getuid(), getgid()); /* * Now list all of the subpackages... */ write_spec(format, prodname, dist, fp, NULL); for (i = 0; i < dist->num_subpackages; i++) write_spec(format, prodname, dist, fp, dist->subpackages[i]); /* * Close the spec file... */ fclose(fp); /* * Copy the files over... */ if (Verbosity) puts("Copying temporary distribution files..."); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { /* * Copy the file or make the directory or make the symlink as needed... */ switch (tolower(file->type)) { case 'c': case 'f': snprintf(filename, sizeof(filename), "%s/buildroot%s", directory, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, 0, -1, -1)) return (1); break; case 'i': if (format == PACKAGE_LSB || format == PACKAGE_LSB_SIGNED) snprintf(filename, sizeof(filename), "%s/buildroot/etc/init.d/%s", directory, file->dst); else snprintf(filename, sizeof(filename), "%s/buildroot%s/init.d/%s", directory, SoftwareDir, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, 0, -1, -1)) return (1); break; case 'd': snprintf(filename, sizeof(filename), "%s/buildroot%s", directory, file->dst); if (Verbosity > 1) printf("Directory %s...\n", filename); make_directory(filename, 0755, -1, -1); break; case 'l': snprintf(filename, sizeof(filename), "%s/buildroot%s", directory, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); make_link(filename, file->src); break; } } if (AooMode) return (0); /* * Build the distribution from the spec file... */ if (Verbosity) puts("Building RPM binary distribution..."); if (format == PACKAGE_LSB_SIGNED || format == PACKAGE_RPM_SIGNED) build_option = "-signed "; else build_option = ""; if (!strcmp(platform->machine, "intel")) { if (run_command(NULL, EPM_RPMBUILD " -bb --buildroot \"%s/buildroot\" " EPM_RPMARCH "i386 %s%s", absdir, build_option, specname)) return (1); } else if (!strcmp(platform->machine, "ppc")) { if (run_command(NULL, EPM_RPMBUILD " -bb --buildroot \"%s/buildroot\" " EPM_RPMARCH "ppc %s%s", absdir, build_option, specname)) return (1); } else if (run_command(NULL, EPM_RPMBUILD " -bb --buildroot \"%s/buildroot\" " EPM_RPMARCH "%s %s%s", absdir, platform->machine, build_option, specname)) return (1); /* * Move the RPMs to the local directory and rename the RPMs using the * product name specified by the user... */ move_rpms(prodname, directory, platname, dist, platform, rpmdir, NULL, release); for (i = 0; i < dist->num_subpackages; i++) move_rpms(prodname, directory, platname, dist, platform, rpmdir, dist->subpackages[i], release); /* * Build a compressed tar file to hold all of the subpackages... */ if (dist->num_subpackages || setup) { /* * Figure out the full name of the distribution... */ if (dist->release[0]) snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, dist->release); else snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); if (platname[0]) { strlcat(name, "-", sizeof(name)); strlcat(name, platname, sizeof(name)); } /* * Create a compressed tar file... */ snprintf(filename, sizeof(filename), "%s/%s.rpm.tgz", directory, name); if ((tarfile = tar_open(filename, 1)) == NULL) return (1); /* * Archive the setup and uninst GUIs and their data files... */ if (setup) { /* * Include the ESP Software Installation Wizard (setup)... */ const char *setup_img; /* Setup image name */ struct stat srcstat; /* File information */ if (stat(SetupProgram, &srcstat)) { fprintf(stderr, "epm: Unable to stat GUI setup program %s: %s\n", SetupProgram, strerror(errno)); tar_close(tarfile); return (-1); } if (tar_header(tarfile, TAR_NORMAL, 0555, srcstat.st_size, srcstat.st_mtime, "root", "root", "setup", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, SetupProgram) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk setup\n", (srcstat.st_size + 1023) / 1024.0); /* * And the image file... */ stat(setup, &srcstat); if (strlen(setup) > 4 && !strcmp(setup + strlen(setup) - 4, ".gif")) setup_img = "setup.gif"; else if (strlen(setup) > 4 && !strcmp(setup + strlen(setup) - 4, ".jpg")) setup_img = "setup.jpg"; else if (strlen(setup) > 4 && !strcmp(setup + strlen(setup) - 4, ".png")) setup_img = "setup.png"; else setup_img = "setup.xpm"; if (tar_header(tarfile, TAR_NORMAL, 0444, srcstat.st_size, srcstat.st_mtime, "root", "root", setup_img, NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, setup) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk %s\n", (srcstat.st_size + 1023) / 1024.0, setup_img); /* * And the types file... */ if (types) { stat(types, &srcstat); if (tar_header(tarfile, TAR_NORMAL, 0444, srcstat.st_size, srcstat.st_mtime, "root", "root", "setup.types", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, types) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk setup.types\n", (srcstat.st_size + 1023) / 1024.0); } /* * Include the ESP Software Removal Wizard (uninst)... */ if (stat(UninstProgram, &srcstat)) { fprintf(stderr, "epm: Unable to stat GUI uninstall program %s: %s\n", UninstProgram, strerror(errno)); tar_close(tarfile); return (-1); } if (tar_header(tarfile, TAR_NORMAL, 0555, srcstat.st_size, srcstat.st_mtime, "root", "root", "uninst", NULL) < 0) { tar_close(tarfile); return (-1); } if (tar_file(tarfile, UninstProgram) < 0) { tar_close(tarfile); return (-1); } if (Verbosity) printf(" %7.0fk uninst\n", (srcstat.st_size + 1023) / 1024.0); } /* * Archive the main package and subpackages... */ if (tar_package(tarfile, "rpm", prodname, directory, platname, dist, NULL)) { tar_close(tarfile); return (1); } for (i = 0; i < dist->num_subpackages; i++) { if (tar_package(tarfile, "rpm", prodname, directory, platname, dist, dist->subpackages[i])) { tar_close(tarfile); return (1); } } tar_close(tarfile); } /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) puts("Removing temporary distribution files..."); snprintf(filename, sizeof(filename), "%s/BUILD", directory); unlink_directory(filename); snprintf(filename, sizeof(filename), "%s/RPMS", directory); unlink_directory(filename); snprintf(filename, sizeof(filename), "%s/rpms", directory); unlink(filename); unlink(specname); if (dist->num_subpackages) { /* * Remove .rpm files since they are now in a .tgz file... */ unlink_package("rpm", prodname, directory, platname, dist, NULL); for (i = 0; i < dist->num_subpackages; i++) unlink_package("rpm", prodname, directory, platname, dist, dist->subpackages[i]); } } return (0); } /* * 'move_rpms()' - Move RPM packages to the build directory... */ static int /* O - 0 = success, 1 = fail */ move_rpms(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform, /* I - Platform information */ const char *rpmdir, /* I - RPM directory */ const char *subpackage, /* I - Subpackage name */ const char *release) /* I - Release: value */ { char rpmname[1024]; /* RPM name */ char prodfull[1024]; /* Full product name */ struct stat rpminfo; /* RPM file info */ /* * Move the RPMs to the local directory and rename the RPMs using the * product name specified by the user... */ if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); if (dist->release[0]) snprintf(rpmname, sizeof(rpmname), "%s/%s-%s-%s", directory, prodfull, dist->version, dist->release); else snprintf(rpmname, sizeof(rpmname), "%s/%s-%s", directory, prodfull, dist->version); if (platname[0]) { strlcat(rpmname, "-", sizeof(rpmname)); strlcat(rpmname, platname, sizeof(rpmname)); } strlcat(rpmname, ".rpm", sizeof(rpmname)); if (!strcmp(platform->machine, "intel")) run_command(NULL, "/bin/mv %s/RPMS/i386/%s-%s-%s.i386.rpm %s", rpmdir, prodfull, dist->version, release, rpmname); else if (!strcmp(platform->sysname, "aix") && !strcmp(platform->machine, "ppc")) run_command(NULL, "/bin/mv %s/RPMS/ppc/%s-%s-%s.%s%s.ppc.rpm %s", rpmdir, prodfull, dist->version, release, platform->sysname, platform->release, rpmname); else if (!strcmp(platform->machine, "ppc")) run_command(NULL, "/bin/mv %s/RPMS/powerpc/%s-%s-%s.powerpc.rpm %s", rpmdir, prodfull, dist->version, release, rpmname); else run_command(NULL, "/bin/mv %s/RPMS/%s/%s-%s-%s.%s.rpm %s", rpmdir, platform->machine, prodfull, dist->version, release, platform->machine, rpmname); if (Verbosity) { stat(rpmname, &rpminfo); printf(" %7.0fk %s\n", rpminfo.st_size / 1024.0, rpmname); } return (0); } /* * 'write_spec()' - Write the subpackage-specific parts of the RPM spec file. */ static int /* O - 0 on success, -1 on error */ write_spec(int format, /* I - Subformat */ const char *prodname, /* I - Product name */ dist_t *dist, /* I - Distribution */ FILE *fp, /* I - Spec file */ const char *subpackage) /* I - Subpackage name */ { int i; /* Looping var */ char name[1024]; /* Full product name */ const char *product; /* Product to depend on */ file_t *file; /* Current distribution file */ command_t *c; /* Current command */ depend_t *d; /* Current dependency */ const char *runlevels; /* Run levels */ int number; /* Start/stop number */ int have_commands; /* Have commands in current section? */ /* * Get the name we'll use for the subpackage... */ if (subpackage) snprintf(name, sizeof(name), " %s", subpackage); else name[0] = '\0'; /* * Common stuff... */ if (subpackage) { fprintf(fp, "%%package%s\n", name); fprintf(fp, "Summary: %s", dist->product); for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) break; if (i < dist->num_descriptions) { char line[1024], /* First line of description... */ *ptr; /* Pointer into line */ strlcpy(line, dist->descriptions[i].description, sizeof(line)); if ((ptr = strchr(line, '\n')) != NULL) *ptr = '\0'; fprintf(fp, " - %s", line); } fputs("\n", fp); } else fprintf(fp, "Summary: %s\n", dist->product); fputs("Group: Applications\n", fp); /* * List all of the dependencies... */ for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) { if (d->subpackage != subpackage) continue; if (!strcmp(d->product, "_self")) product = prodname; else product = d->product; if (d->type == DEPEND_REQUIRES) fprintf(fp, "Requires: %s", product); else if (d->type == DEPEND_PROVIDES) fprintf(fp, "Provides: %s", product); else if (d->type == DEPEND_REPLACES) fprintf(fp, "Obsoletes: %s", product); else fprintf(fp, "Conflicts: %s", product); if (d->vernumber[0] == 0) { if (d->vernumber[1] < INT_MAX) fprintf(fp, " <= %s\n", d->version[1]); else putc('\n', fp); } else if (d->vernumber[0] && d->vernumber[1] < INT_MAX) { if (d->vernumber[0] < INT_MAX && d->vernumber[1] < INT_MAX) fprintf(fp, " >= %s, %s <= %s\n", d->version[0], product, d->version[1]); } else if (d->vernumber[0] != d->vernumber[1]) fprintf(fp, " >= %s\n", d->version[0]); else fprintf(fp, " = %s\n", d->version[0]); } for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && c->subpackage == subpackage && !strcmp(c->section, "spec")) break; if (i > 0) { for (; i > 0; i--, c++) if (c->type == COMMAND_LITERAL && c->subpackage == subpackage && !strcmp(c->section, "spec")) fprintf(fp, "%s\n", c->command); } /* * Pre/post install commands... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL && c->subpackage == subpackage) break; if (i > 0) { fprintf(fp, "%%pre%s\n", name); for (; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); } for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL && c->subpackage == subpackage) break; if (i > 0) { have_commands = 1; fprintf(fp, "%%post%s\n", name); for (; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); } else have_commands = 0; for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) break; if (i) { if (!have_commands) fprintf(fp, "%%post%s\n", name); fputs("if test \"x$1\" = x1; then\n", fp); fputs(" echo Setting up init scripts...\n", fp); if (format == PACKAGE_LSB) { /* * Use LSB commands to install the init scripts... */ for (; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) { fprintf(fp, " /usr/lib/lsb/install_initd /etc/init.d/%s\n", file->dst); fprintf(fp, " /etc/init.d/%s start\n", file->dst); } } else { /* * Find where the frigging init scripts go... */ fputs(" rcdir=\"\"\n", fp); fputs(" for dir in /sbin/rc.d /sbin /etc/rc.d /etc ; do\n", fp); fputs(" if test -d $dir/rc3.d -o -h $dir/rc3.d; then\n", fp); fputs(" rcdir=\"$dir\"\n", fp); fputs(" fi\n", fp); fputs(" done\n", fp); fputs(" if test \"$rcdir\" = \"\" ; then\n", fp); fputs(" echo Unable to determine location of startup scripts!\n", fp); fputs(" else\n", fp); for (; i > 0; i--, file++) { if (tolower(file->type) == 'i' && file->subpackage == subpackage) { fputs(" if test -d $rcdir/init.d; then\n", fp); qprintf(fp, " /bin/rm -f $rcdir/init.d/%s\n", file->dst); qprintf(fp, " /bin/ln -s %s/init.d/%s " "$rcdir/init.d/%s\n", SoftwareDir, file->dst, file->dst); fputs(" else\n", fp); fputs(" if test -d /etc/init.d; then\n", fp); qprintf(fp, " /bin/rm -f /etc/init.d/%s\n", file->dst); qprintf(fp, " /bin/ln -s %s/init.d/%s " "/etc/init.d/%s\n", SoftwareDir, file->dst, file->dst); fputs(" fi\n", fp); fputs(" fi\n", fp); for (runlevels = get_runlevels(dist->files + i, "0123456"); isdigit(*runlevels & 255); runlevels++) { if (*runlevels == '0') number = get_stop(file, 0); else number = get_start(file, 99); qprintf( fp, " /bin/rm -f $rcdir/rc%c.d/%c%02d%s\n", *runlevels, (*runlevels == '0' || *runlevels == '1' || *runlevels == '6') ? 'K' : 'S', number, file->dst); qprintf( fp, " /bin/ln -s %s/init.d/%s " "$rcdir/rc%c.d/%c%02d%s\n", SoftwareDir, file->dst, *runlevels, (*runlevels == '0' || *runlevels == '1' || *runlevels == '6') ? 'K' : 'S', number, file->dst); } qprintf(fp, " %s/init.d/%s start\n", SoftwareDir, file->dst); } } fputs(" fi\n", fp); } fputs("fi\n", fp); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) break; if (i) { have_commands = 1; fprintf(fp, "%%preun%s\n", name); fputs("if test \"x$1\" = x0; then\n", fp); fputs(" echo Cleaning up init scripts...\n", fp); if (format == PACKAGE_LSB) { /* * Use LSB commands to remove the init scripts... */ for (; i > 0; i--, file++) if (tolower(file->type) == 'i' && file->subpackage == subpackage) { fprintf(fp, " /etc/init.d/%s stop\n", file->dst); fprintf(fp, " /usr/lib/lsb/remove_initd /etc/init.d/%s\n", file->dst); } } else { /* * Find where the frigging init scripts go... */ fputs(" rcdir=\"\"\n", fp); fputs(" for dir in /sbin/rc.d /sbin /etc/rc.d /etc ; do\n", fp); fputs(" if test -d $dir/rc3.d -o -h $dir/rc3.d; then\n", fp); fputs(" rcdir=\"$dir\"\n", fp); fputs(" fi\n", fp); fputs(" done\n", fp); fputs(" if test \"$rcdir\" = \"\" ; then\n", fp); fputs(" echo Unable to determine location of startup scripts!\n", fp); fputs(" else\n", fp); for (; i > 0; i--, file++) { if (tolower(file->type) == 'i' && file->subpackage == subpackage) { qprintf(fp, " %s/init.d/%s stop\n", SoftwareDir, file->dst); fputs(" if test -d $rcdir/init.d; then\n", fp); qprintf(fp, " /bin/rm -f $rcdir/init.d/%s\n", file->dst); fputs(" else\n", fp); fputs(" if test -d /etc/init.d; then\n", fp); qprintf(fp, " /bin/rm -f /etc/init.d/%s\n", file->dst); fputs(" fi\n", fp); fputs(" fi\n", fp); for (runlevels = get_runlevels(dist->files + i, "0123456"); isdigit(*runlevels & 255); runlevels++) { if (*runlevels == '0') number = get_stop(file, 0); else number = get_start(file, 99); qprintf( fp, " /bin/rm -f $rcdir/rc%c.d/%c%02d%s\n", *runlevels, (*runlevels == '0' || *runlevels == '1' || *runlevels == '6') ? 'K' : 'S', number, file->dst); } } } fputs(" fi\n", fp); } fputs("fi\n", fp); } else have_commands = 0; for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE && c->subpackage == subpackage) break; if (i > 0) { if (!have_commands) fprintf(fp, "%%preun%s\n", name); for (; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); } for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE && c->subpackage == subpackage) break; if (i > 0) { fprintf(fp, "%%postun%s\n", name); for (; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE && c->subpackage == subpackage) fprintf(fp, "%s\n", c->command); } /* * Description... */ for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) break; if (i < dist->num_descriptions) { fprintf(fp, "%%description %s\n", name); for (; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) fprintf(fp, "%s\n", dist->descriptions[i].description); } /* * Files... */ fprintf(fp, "%%files%s\n", name); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (file->subpackage == subpackage) switch (tolower(file->type)) { case 'c': fprintf(fp, "%%attr(%04o,%s,%s) %%config(noreplace) \"%s\"\n", file->mode, file->user, file->group, file->dst); break; case 'd': fprintf(fp, "%%attr(%04o,%s,%s) %%dir \"%s\"\n", file->mode, file->user, file->group, file->dst); break; case 'f': case 'l': fprintf(fp, "%%attr(%04o,%s,%s) \"%s\"\n", file->mode, file->user, file->group, file->dst); break; case 'i': if (format == PACKAGE_LSB) fprintf(fp, "%%attr(0555,root,root) \"/etc/init.d/%s\"\n", file->dst); else fprintf(fp, "%%attr(0555,root,root) \"%s/init.d/%s\"\n", SoftwareDir, file->dst); break; } return (0); } jimjag-epm-84910c6/run.c000066400000000000000000000104251521151356300147660ustar00rootroot00000000000000/* * External program function for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2014 by Michael R Sweet * Copyright 1999-2005 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" #include #include #include /* * 'run_command()' - Run an external program. */ int /* O - Exit status */ run_command(const char *directory, /* I - Directory for command or NULL */ const char *command, /* I - Command string */ ...) /* I - Additional arguments as needed */ { va_list ap; /* Argument pointer */ int pid, /* Child process ID */ status, /* Status of child */ argc; /* Number of arguments */ char argbuf[10240], /* Argument buffer */ *argptr, /* Argument string pointer */ *argv[100]; /* Argument strings */ /* * Format the command string... */ va_start(ap, command); vsnprintf(argbuf, sizeof(argbuf) - 1, command, ap); argbuf[sizeof(argbuf) - 1] = '\0'; if (Verbosity > 1) puts(argbuf); /* * Parse the argument string; arguments can be separated by whitespace * and quoted by " and '... */ argv[0] = argbuf; for (argptr = argbuf, argc = 1; *argptr != '\0' && argc < 99; argptr++) if (isspace(*argptr & 255)) { *argptr++ = '\0'; while (isspace(*argptr & 255)) argptr++; if (*argptr != '\0') { argv[argc] = argptr; argc++; } argptr--; } else if (*argptr == '\'') { if (argptr == argv[argc - 1]) argv[argc - 1]++; for (argptr++; *argptr && *argptr != '\''; argptr++) if (*argptr == '\\' && argptr[1]) memmove(argptr, argptr + 1, strlen(argptr)); if (*argptr == '\'') memmove(argptr, argptr + 1, strlen(argptr)); argptr--; } else if (*argptr == '\"') { if (argptr == argv[argc - 1]) argv[argc - 1]++; for (argptr++; *argptr && *argptr != '\"'; argptr++) if (*argptr == '\\' && argptr[1]) memmove(argptr, argptr + 1, strlen(argptr)); if (*argptr == '\"') memmove(argptr, argptr + 1, strlen(argptr)); argptr--; } argv[argc] = NULL; /* * Execute the command... */ if ((pid = fork()) == 0) { /* * Child comes here... Redirect stdin, stdout, and stderr to /dev/null * if !Verbosity... */ if (Verbosity < 2) { close(0); close(1); close(2); open("/dev/null", O_RDWR); dup(0); dup(0); } /* * Change directories... */ if (directory) chdir(directory); /* * Execute the program; if an error occurs, exit with the UNIX error... */ execvp(argv[0], argv); fprintf(stderr, "epm: Unable to execute \"%s\" program: %s\n", argv[0], strerror(errno)); exit(errno); } else if (pid < 0) { /* * Error - can't fork! */ perror("epm: fork failed"); return (1); } /* * Fork successful - wait for the child and return the error status... */ if (wait(&status) != pid) { fputs("epm: Got exit status from wrong program!\n", stderr); return (1); } else if (WIFSIGNALED(status)) return (-WTERMSIG(status)); else return (WEXITSTATUS(status)); } jimjag-epm-84910c6/setld.c000066400000000000000000000343061521151356300153010ustar00rootroot00000000000000/* * Tru64 package gateway for the ESP Package Manager (EPM) * * Copyright © 2020 by Jim Jagielski * Copyright 2001-2017 by Michael R Sweet * Copyright 2001-2010 by Easy Software Products * Copyright 2001 by Aneesh Kumar (aneesh.kumar@digital.com) at Digital India. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * 'make_setld()' - Make a Tru64 setld package. */ int /* O - 0 = success, 1 = fail */ make_setld(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform) /* I - Platform information */ { int i, j; /* Looping vars */ FILE *fp; /* Spec file */ tarf_t *tarfile; /* .tardist file */ char name[1024]; /* Full product name */ char scpname[1024]; /* XXXVVV control program filename */ char miname[1024]; /* XXXVVV.mi filename */ char keyname[1024]; /* XXXVVV.key filename */ char filename[1024]; /* Destination filename */ char subset[1024]; /* Subset name */ file_t *file; /* Current distribution file */ command_t *c; /* Current command */ char current[1024]; /* Current directory */ struct passwd *pwd; /* Pointer to user record */ struct group *grp; /* Pointer to group record */ const char *runlevels; /* Run levels */ REF(platform); /* * Check the package information to make sure it complies with the * extremely limited Tru64 packager requirements. */ if (dist->vernumber < 100 || dist->vernumber > 999) { fprintf(stderr, "epm: Need a version number between 100 and 999 inclusive.\n" " The current version number (%d) is out of range.\n", dist->vernumber); return (1); } if (strlen(prodname) < 3) { fprintf(stderr, "epm: Need a product name of at least 3 uppercase characters.\n" " The current product name (%s) is not acceptable.\n", prodname); return (1); } for (i = 0; prodname[i]; i++) if (!isupper(prodname[i] & 255)) { fprintf(stderr, "epm: Need a product name of at least 3 uppercase characters.\n" " The current product name (%s) is not acceptable.\n", prodname); return (1); } for (i = 0; i < dist->num_subpackages; i++) { if ((strlen(dist->subpackages[i]) + strlen(prodname)) > 77) { fprintf(stderr, "epm: Product + subpackage names must be less than 77 characters.\n" " The current subpackage name (%s) is not acceptable.\n", dist->subpackages[i]); return (1); } for (j = 0; dist->subpackages[i][j]; j++) if (!isupper(dist->subpackages[i][j] & 255)) { fprintf(stderr, "epm: Subpackage names may only contain uppercase letters.\n" " The current subpackage name (%s) is not acceptable.\n", dist->subpackages[i]); return (1); } } /* * Prepare for packaging... */ if (dist->release[0]) { if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, dist->version, dist->release, platname); else snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, dist->release); } else if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); else snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); getcwd(current, sizeof(current)); /* * Add symlinks for init scripts... */ for (i = 0; i < dist->num_files; i++) if (tolower(dist->files[i].type) == 'i') { /* * Make symlinks for all of the selected run levels... */ for (runlevels = get_runlevels(dist->files + i, "023"); isdigit(*runlevels & 255); runlevels++) { file = add_file(dist, dist->files[i].subpackage); file->type = 'l'; file->mode = 0; strlcpy(file->user, "root", sizeof(file->user)); strlcpy(file->group, "sys", sizeof(file->group)); snprintf(file->src, sizeof(file->src), "../init.d/%s", dist->files[i].dst); if (*runlevels == '0') snprintf(file->dst, sizeof(file->dst), "/sbin/rc0.d/K%02d%s", get_stop(dist->files + i, 0), dist->files[i].dst); else snprintf(file->dst, sizeof(file->dst), "/sbin/rc%c.d/S%02d%s", *runlevels, get_start(dist->files + i, 99), dist->files[i].dst); } /* * Then send the original file to /sbin/init.d... */ file = dist->files + i; snprintf(filename, sizeof(filename), "/sbin/init.d/%s", file->dst); strlcpy(file->dst, filename, sizeof(file->dst)); } /* * Build package directories... * * Note: The src/scps directory and the key, inventory, and * subset control programs below should actually go in * a data subdirectory according to the Tru64 * documentation, but (at least under 4.0d) the invcutter * program will not be able to find the distribution files * if they are not colocated with these data files. */ if (Verbosity) puts("Creating Tru64 (setld) distribution..."); snprintf(filename, sizeof(filename), "%s/output", directory); unlink_directory(filename); snprintf(filename, sizeof(filename), "%s/src", directory); unlink_directory(filename); snprintf(filename, sizeof(filename), "%s/output", directory); mkdir(filename, 0777); snprintf(filename, sizeof(filename), "%s/src", directory); mkdir(filename, 0777); snprintf(filename, sizeof(filename), "%s/src/scps", directory); mkdir(filename, 0777); /* * Write the subset control program... */ if (Verbosity) puts("Creating subset control program..."); snprintf(scpname, sizeof(scpname), "%s/src/scps/%sALL%03d.scp", directory, prodname, dist->vernumber); if ((fp = fopen(scpname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create subset control program \"%s\": %s\n", scpname, strerror(errno)); return (1); } fputs("#!/bin/sh\n", fp); fputs("case $ACT in\n", fp); fputs("PRE_L)\n", fp); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') { qprintf(fp, "if test -x %s; then\n", file->dst); qprintf(fp, " %s stop\n", file->dst); fputs("fi\n", fp); } for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL) fprintf(fp, "%s\n", c->command); fputs(";;\n", fp); fputs("POST_L)\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL) fprintf(fp, "%s\n", c->command); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'c') { qprintf(fp, "if test ! -f %s; then\n", file->dst); qprintf(fp, " /bin/cp %s.N %s\n", file->dst, file->dst); fputs("fi\n", fp); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') qprintf(fp, "%s start\n", file->dst); fputs(";;\n", fp); fputs("PRE_D)\n", fp); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') qprintf(fp, "%s stop\n", file->dst); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE) fprintf(fp, "%s\n", c->command); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'c') { qprintf(fp, "if cmp -s %s.N %s; then\n", file->dst, file->dst); qprintf(fp, " /bin/rm -f %s\n", file->dst); fputs("fi\n", fp); } fputs(";;\n", fp); fputs("POST_D)\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE) fprintf(fp, "%s\n", c->command); fputs(";;\n", fp); fputs("esac\n", fp); fclose(fp); /* * Sort the file list by the destination name, since kits need a sorted * list... */ sort_dist_files(dist); /* * Now do the inventory file... */ if (Verbosity) puts("Creating master inventory file..."); snprintf(miname, sizeof(miname), "%s/src/%s%03d.mi", directory, prodname, dist->vernumber); if ((fp = fopen(miname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create master inventory file \"%s\": %s\n", miname, strerror(errno)); return (1); } for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { snprintf(subset, sizeof(subset), "%s%s%03d", prodname, file->subpackage ? file->subpackage : "ALL", dist->vernumber); switch (tolower(file->type)) { case 'c': fprintf(fp, "2\t.%s.N\t%s\n", file->dst, subset); break; case 'd': case 'i': case 'f': case 'l': fprintf(fp, "0\t.%s\t%s\n", file->dst, subset); break; } } fclose(fp); /* * Create the key file... */ if (Verbosity) puts("Creating key file..."); snprintf(keyname, sizeof(keyname), "%s/src/%s%03d.k", directory, prodname, dist->vernumber); if ((fp = fopen(keyname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create key file \"%s\": %s\n", keyname, strerror(errno)); return (1); } qprintf(fp, "NAME='%s, %s'\n", dist->product, dist->version); fprintf(fp, "CODE=%s\n", prodname); fprintf(fp, "VER=%03d\n", dist->vernumber); fprintf(fp, "MI=%s%03d.mi\n", prodname, dist->vernumber); fputs("COMPRESS=0\n", fp); fputs("%%\n", fp); qprintf(fp, "%sALL%03d\t.\t0\t'%s, %s'\n", prodname, dist->vernumber, dist->product, dist->version); for (i = 0; i < dist->num_subpackages; i++) qprintf(fp, "%s%s%03d\t.\t0\t'%s, %s'\n", prodname, dist->subpackages[i], dist->vernumber, dist->product, dist->version); fclose(fp); /* * Copy the files over... */ if (Verbosity) puts("Copying temporary distribution files..."); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { /* * Find the username and groupname IDs... */ pwd = getpwnam(file->user); grp = getgrnam(file->group); endpwent(); endgrent(); /* * Copy the file or make the directory or make the symlink as needed... */ switch (tolower(file->type)) { case 'c': case 'f': case 'i': snprintf(filename, sizeof(filename), "%s/src%s", directory, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); break; case 'd': snprintf(filename, sizeof(filename), "%s/src%s", directory, file->dst); if (Verbosity > 1) printf("Directory %s...\n", filename); make_directory(filename, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0); break; case 'l': snprintf(filename, sizeof(filename), "%s/src%s", directory, file->dst); if (Verbosity > 1) printf("%s -> %s...\n", file->src, filename); make_link(filename, file->src); break; } } /* * Build the distribution from the inventory and control files... */ if (Verbosity) puts("Building Tru64 (setld) distribution..."); snprintf(filename, sizeof(filename), "%s/src", directory); chdir(filename); if (run_command(NULL, "kits %s%03d.k . ../output", prodname, dist->vernumber)) return (1); chdir(current); /* * Tar and compress the distribution... */ if (Verbosity) puts("Creating tar.gz file for distribution..."); snprintf(filename, sizeof(filename), "%s/%s.tar.gz", directory, name); if ((tarfile = tar_open(filename, 1)) == NULL) return (1); snprintf(filename, sizeof(filename), "%s/output", directory); if (tar_directory(tarfile, filename, prodname)) { tar_close(tarfile); return (1); } tar_close(tarfile); /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) puts("Removing temporary distribution files..."); snprintf(filename, sizeof(filename), "%s/output", directory); unlink_directory(filename); snprintf(filename, sizeof(filename), "%s/src", directory); unlink_directory(filename); } return (0); } jimjag-epm-84910c6/setup.cxx000066400000000000000000012573301521151356300157130ustar00rootroot00000000000000// generated by Fast Light User Interface Designer (fluid) version 1.0304 #include "setup.h" Fl_Double_Window *SetupWindow = (Fl_Double_Window *)0; static void cb_SetupWindow(Fl_Double_Window *, void *) { if (CancelButton->active()) exit(0); } Fl_Box *Title[6] = {(Fl_Box *)0}; Fl_Wizard *Wizard = (Fl_Wizard *)0; Fl_Help_View *ReadmeFile = (Fl_Help_View *)0; Fl_Round_Button *TypeButton[8] = {(Fl_Round_Button *)0}; Fl_Check_Browser *SoftwareList = (Fl_Check_Browser *)0; Fl_Box *SoftwareSize = (Fl_Box *)0; Fl_Button *InstallAllButton = (Fl_Button *)0; static void cb_InstallAllButton(Fl_Button *, void *) { SoftwareList->check_all(); list_cb(0, 0); } Fl_Button *InstallNoneButton = (Fl_Button *)0; static void cb_InstallNoneButton(Fl_Button *, void *) { SoftwareList->check_none(); list_cb(0, 0); } Fl_Browser *ConfirmList = (Fl_Browser *)0; Fl_Help_View *LicenseFile = (Fl_Help_View *)0; Fl_Round_Button *LicenseAccept = (Fl_Round_Button *)0; static void cb_LicenseAccept(Fl_Round_Button *, void *) { NextButton->activate(); } Fl_Round_Button *LicenseDecline = (Fl_Round_Button *)0; static void cb_LicenseDecline(Fl_Round_Button *, void *) { NextButton->activate(); } Fl_Group *Pane[6] = {(Fl_Group *)0}; Fl_Progress *InstallPercent = (Fl_Progress *)0; Fl_Browser *InstallLog = (Fl_Browser *)0; Fl_Box *WelcomeImage = (Fl_Box *)0; #include static const unsigned char idata_default[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 0, 0, 0, 255, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 39, 0, 0, 0, 29, 0, 0, 0, 17, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 28, 0, 255, 208, 28, 0, 255, 0, 0, 0, 255, 0, 0, 0, 69, 0, 0, 0, 51, 0, 0, 0, 29, 0, 0, 0, 12, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 210, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 30, 0, 255, 211, 29, 0, 255, 211, 30, 0, 255, 211, 30, 0, 255, 211, 29, 0, 255, 211, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 147, 0, 0, 0, 71, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 212, 30, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 212, 29, 0, 255, 211, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 30, 0, 255, 212, 29, 0, 255, 212, 30, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 243, 0, 0, 0, 222, 0, 0, 0, 87, 0, 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 72, 0, 0, 0, 115, 0, 0, 0, 169, 0, 0, 0, 217, 0, 0, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 0, 0, 0, 255, 3, 3, 3, 255, 1, 1, 1, 255, 0, 0, 0, 245, 0, 0, 0, 163, 0, 0, 0, 27, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 66, 0, 0, 0, 110, 0, 0, 0, 163, 0, 0, 0, 212, 0, 0, 0, 246, 0, 0, 0, 245, 1, 1, 1, 239, 2, 2, 2, 248, 3, 3, 3, 255, 3, 3, 3, 255, 0, 0, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 0, 0, 0, 255, 4, 4, 4, 255, 4, 4, 4, 255, 3, 3, 3, 255, 1, 1, 1, 247, 0, 0, 0, 238, 0, 0, 0, 93, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 61, 0, 0, 0, 105, 0, 0, 0, 155, 0, 0, 0, 207, 0, 0, 0, 243, 0, 0, 0, 247, 1, 1, 1, 239, 2, 2, 2, 247, 3, 3, 3, 255, 4, 4, 4, 255, 5, 5, 5, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 0, 0, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 29, 0, 255, 215, 30, 0, 255, 215, 29, 0, 255, 215, 29, 0, 255, 215, 30, 0, 255, 215, 29, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 214, 29, 0, 255, 215, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 215, 30, 0, 255, 214, 29, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 0, 0, 0, 255, 5, 5, 5, 255, 5, 5, 5, 255, 6, 6, 6, 255, 5, 5, 5, 255, 4, 4, 4, 255, 0, 0, 0, 243, 0, 0, 0, 194, 0, 0, 0, 43, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 56, 0, 0, 0, 99, 0, 0, 0, 149, 0, 0, 0, 201, 0, 0, 0, 239, 0, 0, 0, 248, 2, 2, 2, 239, 3, 3, 3, 245, 6, 6, 6, 255, 8, 8, 8, 255, 9, 9, 9, 255, 11, 11, 11, 255, 10, 10, 10, 255, 10, 10, 10, 255, 11, 11, 11, 255, 10, 10, 10, 255, 11, 11, 11, 255, 11, 11, 11, 255, 10, 10, 10, 255, 11, 11, 11, 255, 10, 10, 10, 255, 10, 10, 10, 255, 0, 0, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 31, 0, 255, 216, 30, 0, 255, 216, 31, 0, 255, 216, 31, 0, 255, 215, 30, 0, 255, 216, 31, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 0, 0, 0, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 5, 5, 5, 255, 3, 3, 3, 251, 0, 0, 0, 245, 0, 0, 0, 126, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 50, 0, 0, 0, 94, 0, 0, 0, 141, 0, 0, 0, 195, 0, 0, 0, 236, 0, 0, 0, 249, 2, 2, 2, 240, 4, 4, 4, 243, 7, 7, 7, 255, 9, 9, 9, 255, 11, 11, 11, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 12, 12, 12, 255, 12, 12, 12, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 13, 13, 13, 255, 0, 0, 0, 255, 217, 31, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 31, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 217, 31, 0, 255, 0, 0, 0, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 6, 6, 6, 255, 2, 2, 2, 243, 0, 0, 0, 221, 0, 0, 0, 66, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 45, 0, 0, 0, 88, 0, 0, 0, 134, 1, 1, 1, 190, 0, 0, 0, 231, 0, 0, 0, 250, 2, 2, 2, 240, 5, 5, 5, 242, 8, 8, 8, 253, 11, 11, 11, 255, 14, 14, 14, 255, 16, 16, 16, 255, 17, 17, 17, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 18, 18, 18, 255, 0, 0, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 31, 0, 255, 218, 30, 0, 255, 218, 31, 0, 255, 218, 31, 0, 255, 218, 30, 0, 255, 0, 0, 0, 255, 11, 11, 11, 255, 11, 11, 11, 255, 10, 10, 10, 255, 11, 11, 11, 255, 10, 10, 10, 255, 10, 10, 10, 255, 10, 10, 10, 255, 10, 10, 10, 255, 10, 10, 10, 255, 6, 6, 6, 255, 0, 0, 0, 245, 0, 0, 0, 161, 0, 0, 0, 25, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 244, 1, 1, 1, 243, 5, 5, 5, 241, 10, 10, 10, 252, 13, 13, 13, 255, 16, 16, 16, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 0, 0, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 0, 0, 0, 255, 12, 12, 12, 255, 12, 12, 12, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 11, 11, 11, 255, 5, 5, 5, 247, 0, 0, 0, 238, 0, 0, 0, 93, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 10, 10, 10, 250, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 22, 22, 22, 255, 0, 0, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 30, 0, 255, 220, 31, 0, 255, 215, 29, 0, 255, 110, 15, 0, 255, 108, 15, 0, 255, 108, 14, 0, 255, 108, 15, 0, 255, 108, 15, 0, 255, 142, 19, 0, 255, 220, 31, 0, 255, 220, 30, 0, 255, 220, 30, 0, 255, 220, 31, 0, 255, 220, 30, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 221, 31, 0, 255, 220, 31, 0, 255, 221, 31, 0, 255, 221, 31, 0, 255, 220, 31, 0, 255, 221, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 30, 0, 255, 0, 0, 0, 255, 16, 16, 16, 255, 16, 16, 16, 255, 15, 15, 15, 255, 16, 16, 16, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 11, 11, 11, 255, 2, 2, 2, 243, 0, 0, 0, 194, 0, 0, 0, 43, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 40, 1, 1, 1, 246, 24, 24, 24, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 0, 0, 0, 255, 222, 32, 0, 255, 222, 32, 0, 255, 221, 31, 0, 255, 222, 32, 0, 255, 221, 31, 0, 255, 221, 31, 0, 255, 222, 31, 0, 255, 221, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 156, 21, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 13, 2, 0, 255, 215, 30, 0, 255, 222, 32, 0, 255, 222, 32, 0, 255, 222, 31, 0, 255, 222, 32, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 0, 0, 0, 255, 17, 17, 17, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 9, 9, 9, 251, 0, 0, 0, 245, 0, 0, 0, 126, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 1, 1, 1, 185, 16, 16, 16, 253, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 0, 0, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 78, 10, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 151, 21, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 223, 31, 0, 255, 0, 0, 0, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 17, 17, 17, 255, 4, 4, 4, 243, 0, 0, 0, 221, 0, 0, 0, 65, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 71, 2, 2, 2, 244, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 33, 33, 33, 255, 32, 32, 32, 255, 33, 33, 33, 255, 33, 33, 33, 255, 32, 32, 32, 255, 33, 33, 33, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 0, 0, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 213, 29, 0, 255, 9, 1, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 73, 10, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 0, 0, 0, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 14, 14, 14, 255, 1, 1, 1, 245, 0, 0, 0, 161, 0, 0, 0, 24, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 23, 1, 1, 1, 207, 22, 22, 22, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 0, 0, 0, 255, 224, 31, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 225, 32, 0, 255, 224, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 224, 31, 0, 255, 146, 20, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 70, 9, 0, 255, 12, 1, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 7, 0, 0, 255, 211, 30, 0, 255, 224, 32, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 31, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 225, 32, 0, 255, 224, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 224, 32, 0, 255, 0, 0, 0, 255, 23, 23, 23, 255, 23, 23, 23, 255, 24, 24, 24, 255, 23, 23, 23, 255, 24, 24, 24, 255, 24, 24, 24, 255, 23, 23, 23, 255, 24, 24, 24, 255, 23, 23, 23, 255, 23, 23, 23, 255, 24, 24, 24, 255, 23, 23, 23, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 22, 22, 22, 255, 9, 9, 9, 247, 1, 1, 1, 238, 0, 0, 0, 93, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 95, 5, 5, 5, 242, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 0, 0, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 31, 0, 255, 226, 32, 0, 255, 226, 31, 0, 255, 226, 31, 0, 255, 226, 32, 0, 255, 67, 9, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 139, 19, 0, 255, 71, 10, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 140, 19, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 0, 0, 0, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 20, 20, 20, 255, 3, 3, 3, 243, 1, 1, 1, 194, 0, 0, 0, 43, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 28, 1, 1, 1, 226, 29, 29, 29, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 0, 0, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 33, 0, 255, 227, 32, 0, 255, 227, 33, 0, 255, 227, 33, 0, 255, 227, 32, 0, 255, 227, 33, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 210, 29, 0, 255, 4, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 205, 28, 0, 255, 142, 20, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 61, 8, 0, 255, 227, 32, 0, 255, 226, 32, 0, 255, 227, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 227, 32, 0, 255, 226, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 226, 32, 0, 255, 0, 0, 0, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 27, 27, 27, 255, 14, 14, 14, 251, 1, 1, 1, 245, 0, 0, 0, 126, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 112, 11, 11, 11, 242, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 0, 0, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 228, 32, 0, 255, 227, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 33, 0, 255, 228, 32, 0, 255, 228, 33, 0, 255, 228, 33, 0, 255, 227, 32, 0, 255, 228, 33, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 135, 19, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 46, 6, 0, 255, 228, 32, 0, 255, 210, 30, 0, 255, 2, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 2, 0, 0, 255, 206, 28, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 33, 0, 255, 228, 32, 0, 255, 228, 33, 0, 255, 228, 33, 0, 255, 228, 32, 0, 255, 0, 0, 0, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 26, 26, 26, 255, 7, 7, 7, 243, 1, 1, 1, 221, 0, 0, 0, 65, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 11, 0, 0, 0, 33, 1, 1, 1, 238, 37, 37, 37, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 0, 0, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 33, 0, 255, 229, 32, 0, 255, 229, 33, 0, 255, 229, 33, 0, 255, 230, 33, 0, 255, 229, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 55, 7, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 116, 16, 0, 255, 229, 32, 0, 255, 230, 33, 0, 255, 55, 8, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 129, 18, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 0, 0, 0, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 21, 21, 21, 255, 2, 2, 2, 245, 2, 2, 2, 161, 0, 0, 0, 24, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 19, 0, 0, 0, 133, 16, 16, 16, 245, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 0, 0, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 231, 33, 0, 255, 230, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 230, 32, 0, 255, 231, 33, 0, 255, 230, 32, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 203, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 186, 26, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 127, 18, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 48, 6, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 230, 32, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 0, 0, 0, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 32, 32, 32, 255, 13, 13, 13, 247, 1, 1, 1, 238, 0, 0, 0, 93, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 42, 1, 1, 1, 245, 45, 45, 45, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 0, 0, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 32, 0, 255, 231, 33, 0, 255, 231, 32, 0, 255, 231, 32, 0, 255, 231, 33, 0, 255, 231, 32, 0, 255, 231, 33, 0, 255, 125, 17, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 27, 3, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 199, 28, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 198, 28, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 0, 0, 0, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 28, 28, 28, 255, 4, 4, 4, 243, 1, 1, 1, 194, 0, 0, 0, 43, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 21, 2, 2, 2, 154, 23, 23, 23, 248, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 0, 0, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 43, 6, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 98, 13, 0, 255, 233, 33, 0, 255, 232, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 40, 5, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 117, 16, 0, 255, 233, 34, 0, 255, 232, 33, 0, 255, 232, 33, 0, 255, 233, 33, 0, 255, 232, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 0, 0, 0, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 16, 16, 16, 251, 0, 0, 0, 239, 0, 0, 0, 28, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13, 0, 0, 0, 54, 2, 2, 2, 246, 52, 52, 52, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 0, 0, 0, 255, 234, 33, 0, 255, 234, 33, 0, 255, 233, 33, 0, 255, 234, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 196, 28, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 170, 24, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 112, 15, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 35, 5, 0, 255, 234, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 0, 0, 0, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 7, 7, 7, 243, 0, 0, 0, 130, 0, 0, 0, 39, 0, 0, 0, 23, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 23, 3, 3, 3, 175, 29, 29, 29, 252, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 0, 0, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 234, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 234, 33, 0, 255, 235, 34, 0, 255, 113, 16, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 19, 2, 0, 255, 21, 3, 0, 255, 21, 3, 0, 255, 21, 3, 0, 255, 21, 3, 0, 255, 13, 1, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 188, 26, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 234, 34, 0, 255, 234, 33, 0, 255, 234, 34, 0, 255, 234, 33, 0, 255, 234, 33, 0, 255, 235, 34, 0, 255, 0, 0, 0, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 24, 24, 24, 252, 1, 1, 1, 209, 0, 0, 0, 84, 0, 0, 0, 62, 0, 0, 0, 39, 0, 0, 0, 19, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 69, 3, 3, 3, 245, 59, 59, 59, 255, 60, 60, 60, 255, 60, 60, 60, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 0, 0, 0, 255, 235, 33, 0, 255, 235, 33, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 236, 34, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 235, 33, 0, 255, 235, 34, 0, 255, 235, 33, 0, 255, 32, 4, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 105, 15, 0, 255, 236, 34, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 235, 33, 0, 255, 235, 34, 0, 255, 235, 33, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 0, 0, 0, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 38, 38, 38, 255, 1, 1, 1, 244, 0, 0, 0, 120, 0, 0, 0, 101, 0, 0, 0, 78, 0, 0, 0, 50, 0, 0, 0, 25, 0, 0, 0, 9, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 25, 4, 4, 4, 198, 38, 38, 38, 254, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 0, 0, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 186, 26, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 25, 3, 0, 255, 235, 33, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 0, 0, 0, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 9, 9, 9, 243, 0, 0, 0, 151, 0, 0, 0, 119, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 50, 0, 0, 0, 24, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 87, 7, 7, 7, 243, 63, 63, 63, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 65, 65, 255, 64, 64, 64, 255, 64, 65, 65, 255, 64, 65, 65, 255, 0, 0, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 35, 0, 255, 237, 34, 0, 255, 103, 15, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 17, 2, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 177, 25, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 35, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 237, 34, 0, 255, 0, 0, 0, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 48, 48, 48, 255, 49, 49, 49, 255, 26, 26, 26, 252, 2, 2, 2, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 96, 0, 0, 0, 69, 0, 0, 0, 40, 0, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 26, 4, 4, 4, 217, 47, 47, 47, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 65, 65, 65, 255, 50, 50, 50, 255, 32, 32, 32, 253, 12, 12, 12, 252, 0, 0, 0, 255, 239, 35, 0, 255, 239, 35, 0, 255, 238, 34, 0, 255, 239, 35, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 236, 34, 0, 255, 22, 3, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 56, 8, 0, 255, 239, 34, 0, 255, 239, 34, 0, 255, 239, 35, 0, 255, 239, 34, 0, 255, 239, 35, 0, 255, 239, 35, 0, 255, 239, 35, 0, 255, 221, 32, 0, 255, 2, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 92, 13, 0, 255, 239, 34, 0, 255, 238, 34, 0, 255, 239, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 239, 35, 0, 255, 238, 34, 0, 255, 239, 35, 0, 255, 239, 35, 0, 255, 238, 34, 0, 255, 0, 0, 0, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 43, 43, 43, 255, 2, 2, 2, 244, 0, 0, 0, 127, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 104, 14, 14, 14, 242, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 67, 67, 67, 255, 50, 50, 50, 255, 33, 33, 33, 253, 12, 12, 12, 252, 1, 1, 1, 254, 4, 4, 4, 252, 2, 2, 2, 253, 3, 3, 3, 255, 0, 0, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 240, 34, 0, 255, 240, 34, 0, 255, 176, 25, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 130, 18, 0, 255, 240, 34, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 57, 8, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 15, 2, 0, 255, 233, 33, 0, 255, 241, 35, 0, 255, 240, 34, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 240, 34, 0, 255, 241, 35, 0, 255, 240, 34, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 0, 0, 0, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 51, 51, 51, 255, 10, 10, 10, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 31, 3, 3, 3, 233, 56, 56, 56, 255, 73, 73, 73, 255, 72, 72, 72, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 70, 70, 70, 255, 53, 53, 53, 255, 34, 34, 34, 253, 12, 12, 12, 252, 1, 1, 1, 254, 4, 4, 4, 252, 2, 2, 2, 253, 5, 5, 5, 255, 7, 7, 7, 255, 9, 9, 9, 255, 9, 9, 9, 255, 10, 10, 10, 255, 0, 0, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 34, 0, 255, 241, 35, 0, 255, 241, 34, 0, 255, 241, 34, 0, 255, 241, 35, 0, 255, 241, 34, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 91, 13, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 204, 29, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 131, 19, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 165, 24, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 0, 0, 0, 255, 54, 54, 54, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 30, 30, 30, 252, 2, 2, 2, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 241, 0, 0, 0, 223, 0, 0, 0, 173, 0, 0, 0, 115, 0, 0, 0, 67, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 123, 21, 21, 21, 243, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 71, 71, 71, 255, 54, 54, 54, 255, 35, 35, 35, 253, 13, 13, 13, 252, 1, 1, 1, 254, 4, 4, 4, 252, 3, 3, 3, 253, 5, 5, 5, 255, 9, 9, 9, 255, 11, 11, 11, 255, 11, 11, 11, 255, 11, 11, 11, 255, 11, 11, 11, 255, 12, 12, 12, 255, 11, 11, 11, 255, 11, 11, 11, 255, 0, 0, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 234, 33, 0, 255, 14, 2, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 36, 5, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 241, 35, 0, 255, 242, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 242, 35, 0, 255, 241, 35, 0, 255, 205, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 79, 11, 0, 255, 242, 35, 0, 255, 241, 34, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 0, 0, 0, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 47, 47, 47, 255, 2, 2, 2, 244, 0, 0, 0, 127, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 62, 0, 0, 0, 247, 0, 0, 0, 255, 1, 1, 1, 248, 0, 0, 0, 239, 0, 0, 0, 248, 0, 0, 0, 236, 0, 0, 0, 192, 0, 0, 0, 133, 0, 0, 0, 83, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 38, 2, 2, 2, 242, 66, 66, 66, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 73, 73, 73, 255, 56, 56, 56, 255, 36, 36, 36, 253, 13, 13, 13, 252, 1, 1, 1, 254, 4, 4, 4, 252, 3, 3, 3, 253, 6, 6, 6, 255, 11, 11, 11, 255, 13, 13, 13, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 0, 0, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 242, 35, 0, 255, 243, 35, 0, 255, 242, 35, 0, 255, 164, 23, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 110, 15, 0, 255, 242, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 36, 0, 255, 243, 35, 0, 255, 243, 36, 0, 255, 37, 5, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 7, 1, 0, 255, 228, 33, 0, 255, 243, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 243, 35, 0, 255, 242, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 36, 0, 255, 0, 0, 0, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 12, 12, 12, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 63, 0, 0, 0, 241, 2, 2, 2, 254, 5, 5, 5, 255, 3, 3, 3, 255, 3, 3, 3, 255, 2, 2, 2, 255, 1, 1, 1, 252, 1, 1, 1, 240, 0, 0, 0, 244, 0, 0, 0, 246, 0, 0, 0, 209, 0, 0, 0, 154, 0, 0, 0, 107, 0, 0, 0, 164, 28, 28, 28, 248, 57, 57, 57, 255, 37, 37, 37, 253, 14, 14, 14, 252, 1, 1, 1, 254, 5, 5, 5, 252, 4, 4, 4, 253, 8, 8, 8, 255, 15, 15, 15, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 0, 0, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 36, 0, 255, 244, 35, 0, 255, 244, 36, 0, 255, 244, 36, 0, 255, 244, 35, 0, 255, 244, 36, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 0, 0, 0, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 60, 60, 60, 255, 59, 59, 59, 255, 60, 60, 60, 255, 60, 60, 60, 255, 59, 59, 59, 255, 60, 60, 60, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 32, 32, 32, 252, 2, 2, 2, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 21, 0, 0, 0, 70, 0, 0, 0, 239, 3, 3, 3, 253, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 5, 5, 5, 255, 4, 4, 4, 255, 3, 3, 3, 255, 2, 2, 2, 243, 0, 0, 0, 242, 0, 0, 0, 254, 2, 2, 2, 253, 4, 4, 4, 253, 9, 9, 9, 255, 16, 16, 16, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 0, 0, 0, 255, 245, 35, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 0, 0, 0, 255, 38, 38, 38, 253, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 52, 52, 52, 255, 2, 2, 2, 244, 0, 0, 0, 128, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 20, 0, 0, 0, 37, 0, 0, 0, 80, 0, 0, 0, 236, 5, 5, 5, 252, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 7, 7, 7, 255, 0, 0, 0, 255, 3, 3, 3, 255, 18, 18, 18, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 0, 0, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 0, 0, 0, 255, 2, 2, 2, 253, 21, 21, 21, 251, 59, 59, 59, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 13, 13, 13, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 28, 0, 0, 0, 48, 0, 0, 0, 85, 0, 0, 0, 233, 6, 6, 6, 251, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 11, 11, 11, 255, 2, 2, 2, 255, 1, 1, 1, 255, 17, 17, 17, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 0, 0, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 0, 0, 0, 255, 15, 15, 15, 255, 3, 3, 3, 251, 7, 7, 7, 253, 54, 54, 54, 255, 64, 64, 64, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 35, 35, 35, 252, 2, 2, 2, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 52, 0, 0, 0, 87, 0, 0, 0, 228, 8, 8, 8, 250, 17, 17, 17, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 15, 15, 15, 255, 7, 7, 7, 255, 0, 0, 0, 255, 14, 14, 14, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 22, 22, 22, 255, 0, 0, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 249, 36, 0, 255, 0, 0, 0, 255, 18, 18, 18, 255, 18, 18, 18, 255, 6, 6, 6, 253, 2, 2, 2, 254, 41, 41, 41, 253, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 56, 56, 56, 255, 2, 2, 2, 244, 0, 0, 0, 128, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 53, 0, 0, 0, 87, 0, 0, 0, 223, 9, 9, 9, 249, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 13, 13, 13, 255, 0, 0, 0, 255, 11, 11, 11, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 0, 0, 0, 255, 249, 37, 0, 255, 249, 37, 0, 255, 250, 37, 0, 255, 249, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 37, 0, 255, 249, 36, 0, 255, 249, 37, 0, 255, 249, 37, 0, 255, 250, 37, 0, 255, 249, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 0, 0, 0, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 13, 13, 13, 255, 3, 3, 3, 253, 23, 23, 23, 251, 65, 65, 65, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 14, 14, 14, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 31, 0, 0, 0, 52, 0, 0, 0, 84, 1, 1, 1, 217, 9, 9, 9, 248, 22, 22, 22, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 18, 18, 18, 255, 2, 2, 2, 255, 6, 6, 6, 255, 25, 25, 25, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 28, 28, 28, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 0, 0, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 251, 37, 0, 255, 250, 37, 0, 255, 251, 37, 0, 255, 251, 37, 0, 255, 250, 36, 0, 255, 251, 37, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 0, 0, 0, 255, 21, 21, 21, 255, 21, 21, 21, 255, 20, 20, 20, 255, 21, 21, 21, 255, 18, 18, 18, 255, 4, 4, 4, 251, 8, 8, 8, 253, 58, 58, 58, 255, 69, 69, 69, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 70, 70, 70, 255, 70, 70, 70, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 38, 38, 38, 252, 4, 4, 4, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 30, 0, 0, 0, 51, 0, 0, 0, 81, 1, 1, 1, 210, 10, 10, 10, 247, 29, 29, 29, 255, 29, 29, 29, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 26, 26, 26, 255, 6, 6, 6, 255, 2, 2, 2, 255, 24, 24, 24, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 0, 0, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 0, 0, 0, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 8, 8, 8, 253, 2, 2, 2, 254, 44, 44, 44, 253, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 71, 71, 71, 255, 60, 60, 60, 255, 2, 2, 2, 244, 0, 0, 0, 128, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 29, 0, 0, 0, 50, 0, 0, 0, 78, 1, 1, 1, 204, 10, 10, 10, 246, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 33, 33, 33, 255, 32, 32, 32, 255, 33, 33, 33, 255, 33, 33, 33, 255, 31, 31, 31, 255, 14, 14, 14, 255, 1, 1, 1, 255, 19, 19, 19, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 0, 0, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 0, 0, 0, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 25, 25, 25, 255, 16, 16, 16, 255, 3, 3, 3, 253, 24, 24, 24, 251, 69, 69, 69, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 15, 15, 15, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 28, 0, 0, 0, 49, 0, 0, 0, 76, 1, 1, 1, 198, 9, 9, 9, 245, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 22, 22, 22, 255, 1, 1, 1, 255, 13, 13, 13, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 0, 0, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 254, 38, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 254, 38, 0, 255, 254, 37, 0, 255, 254, 38, 0, 255, 254, 37, 0, 255, 254, 37, 0, 255, 253, 37, 0, 255, 254, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 254, 37, 0, 255, 253, 37, 0, 255, 254, 37, 0, 255, 254, 37, 0, 255, 254, 38, 0, 255, 0, 0, 0, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 23, 23, 23, 255, 5, 5, 5, 251, 9, 9, 9, 253, 61, 61, 61, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 41, 41, 41, 252, 4, 4, 4, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 28, 0, 0, 0, 48, 0, 0, 0, 74, 1, 1, 1, 189, 9, 9, 9, 244, 37, 37, 37, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 30, 30, 30, 255, 3, 3, 3, 255, 7, 7, 7, 255, 32, 32, 32, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 34, 34, 34, 255, 0, 0, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 254, 37, 0, 255, 255, 37, 0, 255, 254, 37, 0, 255, 254, 37, 0, 255, 255, 37, 0, 255, 254, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 0, 0, 0, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 10, 10, 10, 253, 3, 3, 3, 254, 47, 47, 47, 253, 75, 75, 75, 255, 76, 76, 76, 255, 75, 75, 75, 255, 65, 65, 65, 255, 2, 2, 2, 244, 0, 0, 0, 128, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 27, 0, 0, 0, 47, 0, 0, 0, 72, 1, 1, 1, 182, 9, 9, 9, 244, 39, 39, 39, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 38, 38, 38, 255, 9, 9, 9, 255, 3, 3, 3, 255, 30, 30, 30, 255, 36, 36, 36, 255, 37, 37, 37, 255, 36, 36, 36, 255, 37, 37, 37, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 0, 0, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 0, 0, 0, 255, 29, 29, 29, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 29, 29, 29, 255, 28, 28, 28, 255, 20, 20, 20, 255, 3, 3, 3, 253, 26, 26, 26, 251, 73, 73, 73, 255, 76, 76, 76, 255, 16, 16, 16, 243, 2, 2, 2, 152, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 26, 0, 0, 0, 46, 0, 0, 0, 70, 1, 1, 1, 174, 8, 8, 8, 244, 41, 41, 41, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 19, 19, 19, 255, 2, 2, 2, 255, 25, 25, 25, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 0, 0, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 0, 0, 0, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 26, 26, 26, 255, 6, 6, 6, 251, 9, 9, 9, 253, 34, 34, 34, 252, 4, 4, 4, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 45, 0, 0, 0, 69, 2, 2, 2, 166, 7, 7, 7, 255, 42, 42, 42, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 30, 30, 30, 255, 2, 2, 2, 255, 16, 16, 16, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 31, 31, 31, 255, 31, 31, 31, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 27, 27, 27, 255, 14, 14, 14, 255, 6, 6, 6, 255, 0, 0, 0, 254, 0, 0, 0, 254, 0, 0, 0, 171, 0, 0, 0, 120, 0, 0, 0, 104, 0, 0, 0, 81, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 25, 0, 0, 0, 44, 0, 0, 0, 67, 1, 1, 1, 255, 7, 7, 7, 255, 45, 45, 45, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 49, 49, 49, 255, 40, 40, 40, 255, 4, 4, 4, 255, 9, 9, 9, 255, 38, 38, 38, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 0, 0, 0, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 34, 34, 34, 255, 33, 33, 33, 255, 34, 34, 34, 255, 34, 34, 34, 255, 33, 33, 33, 255, 34, 34, 34, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 26, 26, 26, 255, 14, 14, 14, 255, 5, 5, 5, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 255, 2, 2, 2, 255, 2, 2, 2, 255, 0, 0, 0, 245, 0, 0, 0, 238, 0, 0, 0, 134, 0, 0, 0, 66, 0, 0, 0, 38, 0, 0, 0, 16, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 43, 0, 0, 0, 255, 9, 9, 9, 255, 6, 6, 6, 255, 46, 46, 46, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 48, 48, 48, 255, 11, 11, 11, 255, 4, 4, 4, 255, 36, 36, 36, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 0, 0, 0, 255, 35, 35, 35, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 25, 25, 25, 255, 13, 13, 13, 255, 3, 3, 3, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 255, 3, 3, 3, 255, 4, 4, 4, 255, 5, 5, 5, 255, 6, 7, 7, 255, 6, 6, 6, 255, 6, 7, 7, 255, 6, 7, 7, 255, 6, 6, 6, 255, 4, 5, 5, 255, 1, 1, 1, 243, 0, 0, 0, 220, 0, 0, 0, 84, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 10, 0, 0, 0, 24, 0, 0, 0, 255, 18, 18, 18, 255, 10, 10, 10, 255, 5, 5, 5, 255, 50, 50, 50, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 56, 56, 56, 255, 24, 24, 24, 255, 2, 2, 2, 255, 29, 29, 29, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 0, 0, 0, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 33, 33, 33, 255, 23, 23, 23, 255, 11, 11, 11, 255, 3, 3, 3, 255, 0, 0, 0, 255, 0, 0, 0, 255, 2, 2, 2, 255, 5, 5, 5, 255, 7, 7, 7, 255, 8, 8, 8, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 6, 6, 6, 255, 0, 0, 0, 244, 0, 0, 0, 191, 0, 0, 0, 47, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 255, 20, 20, 20, 255, 19, 19, 19, 255, 11, 11, 11, 255, 5, 5, 5, 255, 50, 50, 50, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 39, 39, 39, 255, 2, 2, 2, 255, 19, 19, 19, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 0, 0, 0, 255, 37, 37, 37, 255, 37, 37, 37, 255, 37, 37, 37, 255, 37, 37, 37, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 36, 36, 36, 255, 22, 22, 22, 255, 10, 10, 10, 255, 3, 3, 3, 255, 0, 0, 0, 255, 1, 1, 1, 255, 6, 6, 6, 255, 10, 10, 10, 255, 14, 14, 14, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 15, 15, 15, 255, 8, 8, 8, 252, 0, 0, 0, 245, 0, 0, 0, 156, 0, 0, 0, 27, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 13, 13, 13, 255, 4, 4, 4, 255, 51, 51, 51, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 51, 51, 51, 255, 5, 5, 5, 255, 10, 10, 10, 255, 45, 45, 45, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 0, 0, 0, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 35, 35, 35, 255, 21, 21, 21, 255, 9, 9, 9, 255, 2, 2, 2, 255, 0, 0, 0, 255, 2, 2, 2, 255, 7, 8, 7, 255, 13, 13, 13, 255, 17, 18, 17, 255, 19, 20, 19, 255, 19, 19, 19, 255, 19, 20, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 18, 18, 18, 255, 8, 8, 8, 247, 0, 0, 0, 243, 0, 0, 0, 120, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 14, 14, 14, 255, 4, 4, 4, 255, 51, 51, 51, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 66, 66, 66, 255, 65, 65, 65, 255, 66, 66, 66, 255, 66, 66, 66, 255, 65, 65, 65, 255, 66, 66, 66, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 60, 60, 60, 255, 15, 15, 15, 255, 5, 5, 5, 255, 41, 41, 41, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 48, 48, 48, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 0, 0, 0, 255, 40, 40, 40, 255, 40, 40, 40, 255, 33, 33, 33, 255, 19, 19, 19, 255, 8, 8, 8, 255, 2, 2, 2, 255, 0, 0, 0, 255, 4, 4, 4, 255, 11, 11, 11, 255, 18, 18, 18, 255, 24, 24, 24, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 27, 27, 27, 255, 26, 26, 26, 255, 27, 27, 27, 255, 27, 27, 27, 255, 26, 26, 26, 255, 27, 27, 27, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 22, 22, 22, 255, 6, 6, 6, 243, 1, 1, 1, 230, 0, 0, 0, 88, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 25, 25, 25, 255, 25, 25, 25, 255, 25, 25, 25, 255, 25, 25, 25, 255, 24, 24, 24, 255, 16, 16, 16, 255, 4, 4, 4, 255, 52, 52, 52, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 29, 29, 29, 255, 3, 3, 3, 255, 32, 32, 32, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 39, 39, 39, 255, 0, 0, 0, 255, 6, 6, 6, 255, 2, 2, 2, 255, 0, 0, 0, 255, 6, 6, 6, 255, 14, 14, 14, 255, 21, 21, 21, 255, 27, 27, 27, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 21, 21, 21, 255, 4, 4, 4, 243, 1, 1, 1, 206, 0, 0, 0, 59, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 19, 19, 19, 255, 2, 2, 2, 255, 9, 9, 9, 255, 22, 22, 22, 255, 37, 37, 37, 255, 50, 50, 50, 255, 63, 63, 63, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 46, 46, 46, 255, 2, 2, 2, 255, 22, 22, 22, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 39, 39, 39, 255, 20, 20, 20, 255, 7, 7, 7, 255, 2, 2, 2, 255, 1, 1, 1, 255, 8, 8, 8, 255, 19, 19, 19, 255, 27, 27, 27, 255, 34, 34, 34, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 34, 34, 34, 255, 21, 21, 21, 254, 2, 2, 2, 245, 1, 1, 1, 173, 0, 0, 0, 36, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 21, 21, 21, 255, 16, 16, 16, 255, 12, 12, 12, 255, 9, 9, 9, 255, 3, 3, 3, 255, 4, 4, 4, 255, 16, 16, 16, 255, 31, 31, 31, 255, 46, 46, 46, 255, 59, 59, 59, 255, 71, 71, 71, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 59, 59, 59, 255, 6, 6, 6, 255, 12, 12, 12, 255, 51, 51, 51, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 51, 51, 51, 255, 36, 36, 36, 255, 18, 18, 18, 255, 6, 6, 6, 255, 1, 1, 1, 255, 2, 2, 2, 255, 11, 11, 11, 255, 22, 22, 22, 255, 32, 32, 32, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 31, 31, 31, 255, 23, 23, 23, 255, 13, 13, 13, 247, 0, 0, 0, 254, 0, 0, 0, 241, 0, 0, 0, 88, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 25, 25, 25, 255, 20, 20, 20, 255, 15, 15, 15, 255, 12, 12, 12, 255, 7, 7, 7, 255, 1, 1, 1, 255, 10, 10, 10, 255, 24, 24, 24, 255, 40, 40, 40, 255, 54, 54, 54, 255, 67, 67, 67, 255, 75, 75, 75, 255, 69, 69, 69, 255, 17, 17, 17, 255, 6, 6, 6, 255, 48, 48, 48, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 53, 53, 53, 255, 33, 33, 33, 255, 15, 15, 15, 255, 5, 5, 5, 255, 1, 1, 1, 255, 4, 4, 4, 255, 15, 15, 15, 255, 27, 27, 27, 255, 38, 38, 38, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 44, 43, 255, 44, 44, 44, 255, 38, 39, 38, 255, 29, 30, 29, 255, 20, 20, 20, 250, 9, 10, 9, 240, 1, 1, 1, 248, 2, 2, 2, 233, 3, 3, 3, 187, 0, 0, 0, 139, 0, 0, 0, 99, 0, 0, 0, 56, 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 29, 29, 29, 255, 25, 25, 25, 255, 19, 19, 19, 255, 14, 14, 14, 255, 10, 10, 10, 255, 4, 4, 4, 255, 4, 4, 4, 255, 17, 17, 17, 255, 33, 33, 33, 255, 9, 9, 9, 255, 3, 3, 3, 255, 32, 32, 32, 255, 31, 31, 31, 255, 13, 13, 13, 255, 5, 5, 5, 255, 1, 1, 1, 255, 6, 6, 6, 255, 18, 18, 18, 255, 30, 30, 30, 255, 42, 42, 42, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 44, 44, 44, 255, 35, 35, 35, 255, 25, 25, 25, 253, 13, 13, 13, 241, 3, 3, 3, 244, 1, 1, 1, 242, 3, 3, 3, 202, 0, 0, 0, 160, 0, 0, 0, 137, 0, 0, 0, 124, 0, 0, 0, 119, 0, 0, 0, 112, 0, 0, 0, 102, 0, 0, 0, 88, 0, 0, 0, 71, 0, 0, 0, 52, 0, 0, 0, 33, 0, 0, 0, 17, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 28, 28, 28, 255, 22, 22, 22, 255, 17, 17, 17, 255, 13, 13, 13, 255, 4, 4, 4, 255, 0, 0, 0, 255, 0, 0, 0, 255, 21, 21, 21, 255, 36, 36, 36, 255, 48, 48, 48, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 50, 50, 50, 255, 41, 41, 41, 255, 30, 30, 30, 255, 17, 17, 17, 255, 5, 5, 5, 241, 1, 1, 1, 248, 4, 4, 4, 214, 2, 2, 2, 169, 0, 0, 0, 142, 0, 0, 0, 127, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 115, 0, 0, 0, 111, 0, 0, 0, 105, 0, 0, 0, 98, 0, 0, 0, 87, 0, 0, 0, 73, 0, 0, 0, 55, 0, 0, 0, 36, 0, 0, 0, 20, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 34, 34, 34, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 34, 34, 34, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 0, 0, 0, 255, 8, 8, 8, 255, 4, 4, 4, 255, 35, 35, 35, 255, 54, 54, 54, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 54, 54, 54, 255, 47, 47, 47, 255, 34, 34, 34, 255, 23, 23, 23, 255, 10, 10, 10, 255, 1, 1, 1, 255, 5, 5, 5, 255, 8, 8, 8, 255, 0, 0, 0, 255, 0, 0, 0, 132, 0, 0, 0, 126, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 119, 0, 0, 0, 116, 0, 0, 0, 113, 0, 0, 0, 109, 0, 0, 0, 105, 0, 0, 0, 100, 0, 0, 0, 94, 0, 0, 0, 88, 0, 0, 0, 82, 0, 0, 0, 75, 0, 0, 0, 66, 0, 0, 0, 55, 0, 0, 0, 42, 0, 0, 0, 28, 0, 0, 0, 15, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 0, 0, 0, 255, 22, 22, 22, 255, 17, 17, 17, 255, 6, 6, 6, 255, 11, 11, 11, 255, 46, 46, 46, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 54, 54, 54, 255, 42, 42, 42, 255, 28, 28, 28, 255, 14, 14, 14, 255, 3, 3, 3, 255, 4, 4, 4, 255, 8, 8, 8, 255, 11, 11, 11, 255, 16, 16, 16, 255, 20, 20, 20, 255, 22, 22, 22, 255, 21, 21, 21, 255, 0, 0, 0, 255, 0, 0, 0, 125, 0, 0, 0, 120, 0, 0, 0, 115, 0, 0, 0, 108, 0, 0, 0, 102, 0, 0, 0, 96, 0, 0, 0, 90, 0, 0, 0, 84, 0, 0, 0, 77, 0, 0, 0, 71, 0, 0, 0, 63, 0, 0, 0, 56, 0, 0, 0, 49, 0, 0, 0, 43, 0, 0, 0, 37, 0, 0, 0, 30, 0, 0, 0, 22, 0, 0, 0, 15, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 0, 0, 0, 255, 23, 23, 23, 255, 23, 23, 23, 255, 22, 22, 22, 255, 14, 14, 14, 255, 4, 4, 4, 255, 20, 20, 20, 255, 54, 54, 54, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 60, 60, 60, 255, 47, 47, 47, 255, 34, 34, 34, 255, 19, 19, 19, 255, 5, 5, 5, 255, 2, 2, 2, 255, 8, 8, 8, 255, 11, 11, 11, 255, 16, 16, 16, 255, 20, 20, 20, 255, 23, 23, 23, 255, 23, 23, 23, 255, 24, 23, 22, 255, 67, 25, 18, 255, 43, 24, 20, 255, 23, 23, 23, 255, 23, 23, 23, 255, 0, 0, 0, 255, 0, 0, 0, 121, 0, 0, 0, 111, 0, 0, 0, 97, 0, 0, 0, 84, 0, 0, 0, 74, 0, 0, 0, 65, 0, 0, 0, 58, 0, 0, 0, 51, 0, 0, 0, 45, 0, 0, 0, 39, 0, 0, 0, 33, 0, 0, 0, 27, 0, 0, 0, 22, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 0, 0, 0, 255, 26, 26, 26, 255, 26, 26, 26, 255, 25, 25, 25, 255, 26, 26, 26, 255, 24, 24, 24, 255, 13, 13, 13, 255, 3, 3, 3, 255, 32, 32, 32, 255, 65, 65, 65, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 55, 55, 55, 255, 41, 41, 41, 255, 25, 25, 25, 255, 9, 9, 9, 255, 1, 1, 1, 255, 7, 7, 7, 255, 12, 12, 12, 255, 16, 16, 16, 255, 22, 22, 22, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 45, 27, 23, 255, 127, 31, 14, 255, 184, 34, 7, 255, 240, 37, 1, 255, 255, 38, 0, 255, 86, 28, 18, 255, 26, 26, 26, 255, 25, 25, 25, 255, 0, 0, 0, 255, 0, 0, 0, 116, 0, 0, 0, 99, 0, 0, 0, 76, 0, 0, 0, 56, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 23, 0, 0, 0, 19, 0, 0, 0, 15, 0, 0, 0, 12, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 0, 0, 0, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 24, 24, 24, 255, 11, 11, 11, 255, 6, 6, 6, 255, 45, 45, 45, 255, 70, 70, 70, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 61, 61, 61, 255, 46, 46, 46, 255, 30, 30, 30, 255, 14, 14, 14, 255, 2, 2, 2, 255, 6, 6, 6, 255, 11, 11, 11, 255, 15, 15, 15, 255, 21, 21, 21, 255, 26, 26, 26, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 28, 28, 28, 255, 28, 28, 28, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 140, 32, 13, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 88, 30, 20, 255, 27, 27, 27, 255, 28, 28, 28, 255, 0, 0, 0, 255, 0, 0, 0, 112, 0, 0, 0, 89, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 13, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 0, 0, 0, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 22, 22, 22, 255, 8, 8, 8, 255, 14, 14, 14, 255, 58, 58, 58, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 69, 69, 69, 255, 54, 54, 54, 255, 37, 37, 37, 255, 19, 19, 19, 255, 4, 4, 4, 255, 4, 4, 4, 255, 11, 11, 11, 255, 15, 15, 15, 255, 21, 21, 21, 255, 27, 27, 27, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 30, 29, 28, 255, 74, 30, 23, 255, 33, 29, 28, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 209, 36, 5, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 89, 31, 21, 255, 29, 29, 29, 255, 29, 29, 29, 255, 0, 0, 0, 255, 0, 0, 0, 109, 0, 0, 0, 83, 0, 0, 0, 50, 0, 0, 0, 23, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 0, 0, 0, 255, 31, 31, 31, 255, 31, 31, 31, 255, 31, 31, 31, 255, 31, 31, 31, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 29, 29, 29, 255, 19, 19, 19, 255, 5, 5, 5, 255, 25, 25, 25, 255, 66, 66, 66, 255, 60, 60, 60, 255, 44, 44, 44, 255, 25, 25, 25, 255, 8, 8, 8, 255, 2, 2, 2, 255, 10, 10, 10, 255, 14, 14, 14, 255, 20, 20, 20, 255, 27, 27, 27, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 60, 31, 25, 255, 132, 34, 17, 255, 187, 35, 8, 255, 241, 37, 1, 255, 255, 38, 0, 255, 94, 32, 21, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 53, 30, 26, 255, 255, 38, 0, 255, 255, 38, 0, 255, 248, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 90, 32, 22, 255, 31, 31, 31, 255, 30, 30, 30, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 47, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 0, 0, 0, 255, 31, 31, 31, 255, 31, 31, 31, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 30, 30, 30, 255, 16, 16, 16, 255, 3, 3, 3, 255, 9, 9, 9, 255, 14, 14, 14, 255, 19, 19, 19, 255, 26, 26, 26, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 148, 35, 15, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 171, 35, 12, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 122, 34, 19, 255, 255, 38, 0, 255, 247, 37, 1, 255, 199, 36, 8, 255, 255, 38, 0, 255, 255, 38, 0, 255, 91, 33, 23, 255, 32, 32, 32, 255, 32, 32, 32, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 0, 0, 0, 255, 35, 35, 35, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 37, 35, 34, 255, 79, 35, 28, 255, 130, 36, 19, 255, 161, 36, 14, 255, 190, 36, 10, 255, 176, 36, 12, 255, 117, 35, 21, 255, 34, 34, 33, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 149, 36, 16, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 241, 37, 2, 255, 40, 35, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 191, 37, 10, 255, 255, 38, 0, 255, 189, 37, 10, 255, 199, 37, 8, 255, 255, 38, 0, 255, 255, 38, 0, 255, 92, 35, 24, 255, 35, 35, 35, 255, 34, 34, 34, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 0, 0, 0, 255, 36, 36, 36, 255, 36, 36, 36, 255, 37, 37, 37, 255, 36, 36, 36, 255, 37, 37, 37, 255, 37, 37, 37, 255, 36, 36, 36, 255, 37, 37, 37, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 66, 36, 31, 255, 134, 36, 19, 255, 189, 37, 10, 255, 242, 37, 2, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 157, 37, 16, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 150, 37, 17, 255, 255, 38, 0, 255, 255, 38, 0, 255, 235, 37, 3, 255, 255, 38, 0, 255, 255, 38, 0, 255, 100, 36, 25, 255, 37, 37, 37, 255, 37, 37, 37, 255, 36, 36, 36, 255, 46, 37, 35, 255, 248, 37, 1, 255, 255, 38, 0, 255, 123, 37, 22, 255, 208, 37, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 94, 36, 26, 255, 37, 37, 37, 255, 36, 36, 36, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 0, 0, 0, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 39, 38, 37, 255, 79, 37, 29, 255, 81, 38, 30, 255, 38, 38, 38, 255, 38, 38, 38, 255, 151, 38, 18, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 254, 38, 0, 255, 48, 37, 34, 255, 38, 38, 38, 255, 37, 37, 37, 255, 150, 37, 17, 255, 255, 38, 0, 255, 255, 38, 0, 255, 170, 38, 14, 255, 255, 38, 0, 255, 255, 38, 0, 255, 174, 38, 14, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 105, 37, 25, 255, 255, 38, 0, 255, 254, 38, 0, 255, 58, 37, 33, 255, 215, 38, 6, 255, 255, 38, 0, 255, 255, 38, 0, 255, 95, 37, 27, 255, 37, 37, 37, 255, 37, 37, 37, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 0, 0, 0, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 41, 38, 38, 255, 82, 38, 31, 255, 136, 38, 21, 255, 190, 38, 11, 255, 242, 38, 2, 255, 255, 38, 0, 255, 151, 38, 18, 255, 39, 39, 39, 255, 39, 39, 39, 255, 151, 38, 18, 255, 255, 38, 0, 255, 255, 38, 0, 255, 241, 38, 2, 255, 152, 38, 18, 255, 112, 38, 25, 255, 116, 38, 25, 255, 195, 38, 11, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 89, 38, 29, 255, 40, 40, 40, 255, 39, 39, 39, 255, 151, 38, 18, 255, 255, 38, 0, 255, 255, 38, 0, 255, 121, 38, 24, 255, 243, 38, 1, 255, 255, 38, 0, 255, 241, 38, 2, 255, 44, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 172, 38, 14, 255, 255, 38, 0, 255, 210, 38, 8, 255, 39, 39, 39, 255, 219, 38, 6, 255, 255, 38, 0, 255, 255, 38, 0, 255, 96, 38, 28, 255, 39, 39, 39, 255, 39, 39, 39, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 0, 0, 0, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 70, 40, 35, 255, 136, 39, 21, 255, 190, 38, 11, 255, 242, 38, 2, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 152, 39, 19, 255, 41, 41, 41, 255, 41, 41, 41, 255, 152, 39, 19, 255, 255, 38, 0, 255, 255, 38, 0, 255, 213, 38, 7, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 87, 40, 32, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 91, 39, 30, 255, 41, 41, 41, 255, 40, 40, 40, 255, 152, 38, 19, 255, 255, 38, 0, 255, 255, 38, 0, 255, 124, 39, 24, 255, 179, 39, 14, 255, 255, 38, 0, 255, 255, 38, 0, 255, 104, 39, 28, 255, 40, 40, 40, 255, 41, 39, 39, 255, 236, 38, 3, 255, 255, 38, 0, 255, 144, 39, 20, 255, 41, 41, 41, 255, 220, 38, 6, 255, 255, 38, 0, 255, 255, 38, 0, 255, 97, 39, 29, 255, 41, 41, 41, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 0, 0, 0, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 154, 40, 21, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 251, 38, 0, 255, 208, 39, 9, 255, 155, 40, 20, 255, 80, 42, 35, 255, 43, 43, 43, 255, 43, 43, 43, 255, 153, 40, 20, 255, 255, 38, 0, 255, 255, 38, 0, 255, 214, 39, 8, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 95, 41, 32, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 57, 42, 39, 255, 43, 43, 43, 255, 43, 43, 43, 255, 153, 40, 20, 255, 255, 38, 0, 255, 255, 38, 0, 255, 132, 40, 24, 255, 109, 41, 29, 255, 255, 38, 0, 255, 255, 38, 0, 255, 177, 39, 15, 255, 43, 43, 43, 255, 91, 42, 34, 255, 255, 38, 0, 255, 255, 38, 0, 255, 82, 42, 36, 255, 43, 43, 43, 255, 221, 38, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 99, 41, 31, 255, 43, 43, 43, 255, 43, 43, 43, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 51, 51, 51, 255, 52, 52, 52, 255, 52, 52, 52, 255, 51, 51, 51, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 51, 51, 51, 255, 0, 0, 0, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 154, 40, 21, 255, 255, 38, 0, 255, 255, 38, 0, 255, 241, 38, 2, 255, 155, 41, 21, 255, 102, 42, 31, 255, 53, 43, 41, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 154, 41, 21, 255, 255, 38, 0, 255, 255, 38, 0, 255, 214, 39, 8, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 180, 40, 15, 255, 255, 38, 0, 255, 255, 38, 0, 255, 213, 39, 8, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 154, 41, 21, 255, 255, 38, 0, 255, 255, 38, 0, 255, 138, 41, 24, 255, 50, 43, 42, 255, 245, 38, 2, 255, 255, 38, 0, 255, 242, 38, 2, 255, 50, 44, 43, 255, 155, 40, 20, 255, 255, 38, 0, 255, 229, 38, 5, 255, 44, 44, 44, 255, 44, 44, 44, 255, 221, 38, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 101, 43, 33, 255, 44, 44, 44, 255, 45, 45, 45, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 254, 34, 34, 34, 254, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 0, 0, 0, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 155, 41, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 214, 39, 8, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 155, 41, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 214, 39, 8, 255, 46, 46, 46, 255, 91, 44, 35, 255, 199, 40, 12, 255, 255, 38, 0, 255, 255, 38, 0, 255, 254, 38, 0, 255, 91, 44, 35, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 155, 41, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 140, 42, 25, 255, 46, 46, 46, 255, 182, 40, 16, 255, 255, 38, 0, 255, 255, 38, 0, 255, 109, 43, 31, 255, 220, 39, 7, 255, 255, 38, 0, 255, 165, 41, 19, 255, 46, 46, 46, 255, 46, 46, 46, 255, 221, 39, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 101, 43, 33, 255, 46, 46, 46, 255, 46, 46, 46, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 64, 2, 2, 2, 231, 24, 24, 24, 248, 52, 52, 52, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 0, 0, 0, 255, 48, 48, 48, 255, 48, 48, 48, 255, 47, 47, 47, 255, 155, 42, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 215, 39, 9, 255, 47, 47, 47, 255, 48, 48, 48, 255, 48, 48, 48, 255, 47, 47, 47, 255, 56, 47, 46, 255, 51, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 155, 42, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 241, 38, 2, 255, 215, 39, 8, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 251, 38, 0, 255, 137, 43, 26, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 155, 42, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 141, 43, 26, 255, 48, 48, 48, 255, 113, 44, 32, 255, 255, 38, 0, 255, 255, 38, 0, 255, 207, 40, 10, 255, 255, 38, 0, 255, 255, 38, 0, 255, 102, 44, 34, 255, 47, 47, 47, 255, 47, 47, 47, 255, 221, 39, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 102, 44, 34, 255, 47, 47, 47, 255, 47, 47, 47, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 0, 0, 0, 54, 3, 3, 3, 200, 14, 14, 14, 244, 51, 51, 51, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 0, 0, 0, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 215, 39, 9, 255, 56, 47, 45, 255, 104, 45, 35, 255, 155, 42, 22, 255, 208, 40, 11, 255, 250, 38, 0, 255, 74, 47, 43, 255, 49, 49, 49, 255, 49, 49, 49, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 227, 39, 6, 255, 99, 46, 37, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 141, 43, 26, 255, 48, 48, 48, 255, 56, 48, 47, 255, 245, 38, 2, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 243, 38, 2, 255, 52, 47, 47, 255, 48, 48, 48, 255, 49, 49, 49, 255, 221, 39, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 103, 46, 35, 255, 49, 49, 49, 255, 49, 49, 49, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 65, 2, 2, 2, 162, 5, 5, 5, 244, 45, 45, 45, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 0, 0, 0, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 250, 38, 1, 255, 250, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 74, 48, 43, 255, 50, 50, 50, 255, 50, 50, 50, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 238, 38, 4, 255, 179, 42, 18, 255, 102, 46, 37, 255, 50, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 142, 44, 27, 255, 50, 50, 50, 255, 49, 49, 49, 255, 184, 42, 17, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 185, 41, 16, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 216, 40, 9, 255, 205, 40, 11, 255, 155, 43, 24, 255, 69, 48, 45, 255, 50, 50, 50, 255, 50, 50, 50, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 24, 0, 0, 0, 47, 0, 0, 0, 72, 0, 0, 0, 128, 2, 2, 2, 244, 38, 38, 38, 254, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 0, 0, 0, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 158, 45, 25, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 243, 38, 2, 255, 195, 42, 15, 255, 65, 51, 48, 255, 52, 52, 52, 255, 53, 53, 53, 255, 157, 44, 24, 255, 255, 38, 0, 255, 255, 38, 0, 255, 218, 40, 9, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 157, 44, 24, 255, 255, 38, 0, 255, 255, 38, 0, 255, 144, 46, 29, 255, 53, 53, 53, 255, 52, 52, 52, 255, 117, 48, 35, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 124, 47, 33, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 56, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 28, 0, 0, 0, 48, 0, 0, 0, 70, 0, 0, 0, 107, 2, 2, 2, 232, 26, 26, 26, 248, 58, 58, 58, 255, 59, 59, 59, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 58, 58, 58, 255, 58, 58, 58, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 58, 58, 58, 255, 0, 0, 0, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 158, 45, 25, 255, 255, 38, 0, 255, 255, 38, 0, 255, 249, 38, 1, 255, 195, 42, 15, 255, 145, 46, 29, 255, 94, 50, 42, 255, 56, 53, 53, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 158, 45, 25, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 40, 10, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 158, 45, 25, 255, 255, 38, 0, 255, 255, 38, 0, 255, 144, 46, 29, 255, 54, 54, 54, 255, 54, 54, 54, 255, 61, 53, 52, 255, 200, 42, 14, 255, 155, 45, 26, 255, 105, 49, 40, 255, 57, 53, 52, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 3, 3, 3, 201, 15, 15, 15, 244, 55, 55, 55, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 60, 60, 60, 255, 60, 60, 60, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 0, 0, 0, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 159, 46, 26, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 41, 10, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 159, 46, 26, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 41, 10, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 159, 46, 26, 255, 255, 38, 0, 255, 249, 38, 1, 255, 129, 48, 34, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 2, 2, 2, 163, 5, 5, 5, 244, 49, 49, 49, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 0, 0, 0, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 160, 47, 27, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 41, 10, 255, 57, 57, 57, 255, 56, 56, 56, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 160, 47, 27, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 41, 10, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 102, 51, 43, 255, 106, 52, 42, 255, 62, 55, 54, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 129, 2, 2, 2, 244, 41, 41, 41, 254, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 0, 0, 0, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 160, 47, 27, 255, 255, 38, 0, 255, 255, 38, 0, 255, 217, 41, 11, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 62, 56, 55, 255, 105, 53, 43, 255, 101, 52, 44, 255, 57, 57, 57, 255, 58, 58, 58, 255, 160, 47, 27, 255, 255, 38, 0, 255, 255, 38, 0, 255, 217, 41, 11, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 107, 2, 2, 2, 232, 28, 28, 28, 248, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 63, 63, 63, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 63, 63, 63, 255, 64, 64, 64, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 0, 0, 0, 255, 61, 61, 61, 255, 61, 61, 61, 255, 60, 60, 60, 255, 162, 49, 29, 255, 255, 38, 0, 255, 255, 38, 0, 255, 221, 41, 10, 255, 107, 54, 45, 255, 156, 49, 30, 255, 205, 43, 15, 255, 248, 38, 1, 255, 255, 38, 0, 255, 162, 49, 29, 255, 61, 61, 61, 255, 60, 60, 60, 255, 162, 49, 29, 255, 255, 38, 0, 255, 249, 38, 1, 255, 182, 46, 22, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 3, 3, 3, 201, 16, 16, 16, 244, 60, 60, 60, 255, 64, 64, 64, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 0, 0, 0, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 162, 49, 29, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 162, 49, 29, 255, 61, 61, 61, 255, 62, 62, 62, 255, 105, 55, 46, 255, 110, 55, 46, 255, 68, 61, 60, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 2, 2, 2, 163, 6, 6, 6, 244, 54, 54, 54, 255, 66, 66, 66, 255, 67, 67, 67, 255, 67, 67, 67, 255, 67, 67, 67, 255, 67, 67, 67, 255, 66, 66, 66, 255, 66, 66, 66, 255, 67, 67, 67, 255, 66, 66, 66, 255, 67, 67, 67, 255, 66, 66, 66, 255, 66, 66, 66, 255, 67, 67, 67, 255, 66, 66, 66, 255, 0, 0, 0, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 162, 49, 29, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 249, 38, 1, 255, 208, 44, 15, 255, 159, 49, 30, 255, 94, 58, 52, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 129, 2, 2, 2, 244, 44, 44, 44, 254, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 0, 0, 0, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 163, 50, 30, 255, 255, 38, 0, 255, 249, 38, 1, 255, 207, 44, 15, 255, 159, 50, 31, 255, 112, 57, 47, 255, 69, 63, 61, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 59, 59, 59, 255, 45, 45, 45, 255, 29, 29, 29, 250, 10, 10, 10, 246, 0, 0, 0, 254, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 106, 2, 2, 2, 232, 31, 31, 31, 248, 67, 67, 67, 255, 69, 69, 69, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 0, 0, 0, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 108, 58, 49, 255, 112, 58, 48, 255, 70, 64, 62, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 66, 66, 66, 255, 65, 65, 65, 255, 66, 66, 66, 255, 66, 66, 66, 255, 65, 65, 65, 255, 66, 66, 66, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 58, 58, 58, 255, 43, 43, 43, 255, 27, 27, 27, 247, 9, 9, 9, 240, 1, 1, 1, 247, 4, 4, 4, 207, 2, 2, 2, 159, 0, 0, 0, 134, 0, 0, 0, 126, 0, 0, 0, 106, 0, 0, 0, 78, 0, 0, 0, 45, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 3, 3, 3, 201, 17, 17, 17, 244, 64, 64, 64, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 0, 0, 0, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 58, 58, 58, 255, 42, 42, 42, 255, 24, 24, 24, 245, 6, 6, 6, 242, 2, 2, 2, 244, 4, 4, 4, 199, 0, 0, 0, 153, 0, 0, 0, 131, 0, 0, 0, 124, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 112, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 2, 2, 2, 163, 6, 6, 6, 244, 58, 58, 58, 255, 72, 72, 72, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 72, 72, 72, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 0, 0, 0, 255, 68, 68, 68, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 67, 67, 67, 255, 56, 56, 56, 255, 40, 40, 40, 255, 21, 21, 21, 242, 4, 4, 4, 244, 2, 2, 2, 239, 4, 4, 4, 190, 0, 0, 0, 149, 0, 0, 0, 129, 0, 0, 0, 125, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 114, 0, 0, 0, 110, 0, 0, 0, 106, 0, 0, 0, 101, 0, 0, 0, 92, 0, 0, 0, 78, 0, 0, 0, 56, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 128, 3, 3, 3, 244, 47, 47, 47, 254, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 72, 72, 72, 255, 73, 73, 73, 255, 0, 0, 0, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 68, 68, 68, 255, 55, 55, 55, 255, 38, 38, 38, 254, 18, 18, 18, 241, 2, 2, 2, 247, 3, 3, 3, 231, 3, 3, 3, 181, 0, 0, 0, 145, 0, 0, 0, 128, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 120, 0, 0, 0, 117, 0, 0, 0, 114, 0, 0, 0, 110, 0, 0, 0, 105, 0, 0, 0, 99, 0, 0, 0, 93, 0, 0, 0, 86, 0, 0, 0, 79, 0, 0, 0, 72, 0, 0, 0, 63, 0, 0, 0, 51, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 106, 3, 3, 3, 232, 32, 32, 32, 248, 72, 72, 72, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 74, 74, 74, 255, 73, 73, 73, 255, 0, 0, 0, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 68, 68, 68, 255, 53, 53, 53, 255, 35, 35, 35, 252, 15, 15, 15, 240, 1, 1, 1, 249, 5, 5, 5, 224, 3, 3, 3, 174, 0, 0, 0, 141, 0, 0, 0, 126, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 120, 0, 0, 0, 117, 0, 0, 0, 113, 0, 0, 0, 109, 0, 0, 0, 104, 0, 0, 0, 98, 0, 0, 0, 92, 0, 0, 0, 85, 0, 0, 0, 78, 0, 0, 0, 70, 0, 0, 0, 62, 0, 0, 0, 54, 0, 0, 0, 46, 0, 0, 0, 40, 0, 0, 0, 33, 0, 0, 0, 25, 0, 0, 0, 17, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 4, 4, 4, 201, 18, 18, 18, 244, 68, 68, 68, 255, 74, 74, 74, 255, 74, 74, 74, 255, 75, 75, 75, 255, 74, 74, 74, 255, 74, 74, 74, 255, 0, 0, 0, 255, 73, 73, 73, 255, 73, 73, 73, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 68, 68, 68, 255, 51, 51, 51, 255, 34, 34, 34, 250, 13, 13, 13, 240, 1, 1, 1, 249, 5, 5, 5, 216, 2, 2, 2, 166, 0, 0, 0, 137, 0, 0, 0, 126, 0, 0, 0, 123, 0, 0, 0, 122, 0, 0, 0, 119, 0, 0, 0, 116, 0, 0, 0, 112, 0, 0, 0, 108, 0, 0, 0, 103, 0, 0, 0, 97, 0, 0, 0, 91, 0, 0, 0, 84, 0, 0, 0, 76, 0, 0, 0, 69, 0, 0, 0, 61, 0, 0, 0, 53, 0, 0, 0, 45, 0, 0, 0, 38, 0, 0, 0, 32, 0, 0, 0, 25, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 3, 3, 3, 163, 7, 7, 7, 244, 61, 61, 61, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 0, 0, 0, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 74, 74, 74, 255, 75, 75, 75, 255, 74, 74, 74, 255, 74, 74, 74, 255, 75, 75, 75, 255, 74, 74, 74, 255, 75, 75, 75, 255, 75, 75, 75, 255, 74, 74, 74, 255, 75, 75, 75, 255, 67, 67, 67, 255, 49, 49, 49, 255, 30, 30, 30, 247, 10, 10, 10, 240, 1, 1, 1, 247, 5, 5, 5, 207, 2, 2, 2, 159, 0, 0, 0, 134, 0, 0, 0, 125, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 119, 0, 0, 0, 115, 0, 0, 0, 112, 0, 0, 0, 107, 0, 0, 0, 102, 0, 0, 0, 96, 0, 0, 0, 89, 0, 0, 0, 82, 0, 0, 0, 75, 0, 0, 0, 67, 0, 0, 0, 59, 0, 0, 0, 51, 0, 0, 0, 44, 0, 0, 0, 37, 0, 0, 0, 30, 0, 0, 0, 24, 0, 0, 0, 19, 0, 0, 0, 15, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 128, 3, 3, 3, 244, 50, 50, 50, 254, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 0, 0, 0, 255, 76, 76, 76, 255, 76, 76, 76, 255, 75, 75, 75, 255, 76, 76, 76, 255, 75, 75, 75, 255, 75, 75, 75, 255, 76, 76, 76, 255, 75, 75, 75, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 65, 65, 65, 255, 47, 47, 47, 255, 27, 27, 27, 245, 7, 7, 7, 242, 2, 2, 2, 244, 5, 5, 5, 199, 0, 0, 0, 153, 0, 0, 0, 131, 0, 0, 0, 124, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 115, 0, 0, 0, 111, 0, 0, 0, 107, 0, 0, 0, 101, 0, 0, 0, 95, 0, 0, 0, 88, 0, 0, 0, 81, 0, 0, 0, 74, 0, 0, 0, 66, 0, 0, 0, 58, 0, 0, 0, 50, 0, 0, 0, 43, 0, 0, 0, 36, 0, 0, 0, 29, 0, 0, 0, 24, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 106, 3, 3, 3, 232, 34, 34, 34, 248, 77, 77, 77, 255, 78, 78, 78, 255, 0, 0, 0, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 78, 78, 78, 255, 76, 76, 76, 255, 64, 64, 64, 255, 45, 45, 45, 255, 24, 24, 24, 242, 5, 5, 5, 244, 3, 3, 3, 239, 4, 4, 4, 190, 0, 0, 0, 149, 0, 0, 0, 129, 0, 0, 0, 125, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 114, 0, 0, 0, 110, 0, 0, 0, 106, 0, 0, 0, 100, 0, 0, 0, 94, 0, 0, 0, 87, 0, 0, 0, 80, 0, 0, 0, 73, 0, 0, 0, 65, 0, 0, 0, 57, 0, 0, 0, 49, 0, 0, 0, 42, 0, 0, 0, 35, 0, 0, 0, 28, 0, 0, 0, 23, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 4, 4, 4, 201, 19, 19, 19, 244, 73, 73, 73, 255, 0, 0, 0, 255, 79, 79, 79, 255, 79, 79, 79, 255, 78, 78, 78, 255, 77, 77, 77, 255, 61, 61, 61, 255, 42, 42, 42, 254, 20, 20, 20, 240, 3, 3, 3, 247, 3, 3, 3, 231, 4, 4, 4, 181, 0, 0, 0, 145, 0, 0, 0, 128, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 120, 0, 0, 0, 117, 0, 0, 0, 114, 0, 0, 0, 110, 0, 0, 0, 105, 0, 0, 0, 99, 0, 0, 0, 93, 0, 0, 0, 86, 0, 0, 0, 79, 0, 0, 0, 71, 0, 0, 0, 63, 0, 0, 0, 55, 0, 0, 0, 48, 0, 0, 0, 40, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 22, 0, 0, 0, 17, 0, 0, 0, 13, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 3, 3, 3, 163, 7, 7, 7, 244, 0, 0, 0, 255, 59, 59, 59, 255, 39, 39, 39, 252, 17, 17, 17, 240, 2, 2, 2, 249, 5, 5, 5, 224, 3, 3, 3, 174, 0, 0, 0, 141, 0, 0, 0, 126, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 120, 0, 0, 0, 117, 0, 0, 0, 113, 0, 0, 0, 109, 0, 0, 0, 104, 0, 0, 0, 98, 0, 0, 0, 92, 0, 0, 0, 85, 0, 0, 0, 78, 0, 0, 0, 70, 0, 0, 0, 62, 0, 0, 0, 54, 0, 0, 0, 46, 0, 0, 0, 39, 0, 0, 0, 33, 0, 0, 0, 26, 0, 0, 0, 21, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 128, 0, 0, 0, 254, 5, 5, 5, 215, 2, 2, 2, 165, 0, 0, 0, 137, 0, 0, 0, 126, 0, 0, 0, 123, 0, 0, 0, 122, 0, 0, 0, 119, 0, 0, 0, 116, 0, 0, 0, 112, 0, 0, 0, 108, 0, 0, 0, 103, 0, 0, 0, 97, 0, 0, 0, 91, 0, 0, 0, 84, 0, 0, 0, 76, 0, 0, 0, 69, 0, 0, 0, 61, 0, 0, 0, 53, 0, 0, 0, 45, 0, 0, 0, 38, 0, 0, 0, 32, 0, 0, 0, 25, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 109, 0, 0, 0, 105, 0, 0, 0, 114, 0, 0, 0, 117, 0, 0, 0, 115, 0, 0, 0, 112, 0, 0, 0, 107, 0, 0, 0, 102, 0, 0, 0, 96, 0, 0, 0, 89, 0, 0, 0, 82, 0, 0, 0, 75, 0, 0, 0, 67, 0, 0, 0, 59, 0, 0, 0, 51, 0, 0, 0, 44, 0, 0, 0, 37, 0, 0, 0, 30, 0, 0, 0, 24, 0, 0, 0, 19, 0, 0, 0, 15, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 82, 0, 0, 0, 94, 0, 0, 0, 98, 0, 0, 0, 95, 0, 0, 0, 89, 0, 0, 0, 81, 0, 0, 0, 74, 0, 0, 0, 66, 0, 0, 0, 58, 0, 0, 0, 50, 0, 0, 0, 43, 0, 0, 0, 36, 0, 0, 0, 29, 0, 0, 0, 24, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 54, 0, 0, 0, 65, 0, 0, 0, 68, 0, 0, 0, 64, 0, 0, 0, 57, 0, 0, 0, 49, 0, 0, 0, 42, 0, 0, 0, 35, 0, 0, 0, 28, 0, 0, 0, 23, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 17, 0, 0, 0, 28, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 33, 0, 0, 0, 28, 0, 0, 0, 22, 0, 0, 0, 17, 0, 0, 0, 13, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static Fl_Image *image_default() { static Fl_Image *image = new Fl_RGB_Image(idata_default, 128, 128, 4, 0); return image; } Fl_Button *PrevButton = (Fl_Button *)0; static void cb_PrevButton(Fl_Button *, void *) { Wizard->prev(); int i; for (i = 0; i < 6; i++) { Title[i]->activate(); if (Pane[i]->visible()) break; } for (i++; i < 6; i++) Title[i]->deactivate(); } Fl_Button *NextButton = (Fl_Button *)0; Fl_Button *CancelButton = (Fl_Button *)0; static void cb_CancelButton(Fl_Button *, void *) { exit(0); } Fl_Double_Window *make_window() { { SetupWindow = new Fl_Double_Window(640, 330, "Install"); SetupWindow->callback((Fl_Callback *)cb_SetupWindow); { Title[0] = new Fl_Box(10, 10, 130, 25, "Welcome"); Title[0]->labelfont(1); Title[0]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); } // Fl_Box* Title[0] { Title[1] = new Fl_Box(10, 35, 130, 25, "Install Type"); Title[1]->labelfont(1); Title[1]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); Title[1]->deactivate(); } // Fl_Box* Title[1] { Title[2] = new Fl_Box(10, 60, 130, 25, "Select Software"); Title[2]->labelfont(1); Title[2]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); Title[2]->deactivate(); } // Fl_Box* Title[2] { Title[3] = new Fl_Box(10, 85, 130, 25, "Confirm"); Title[3]->labelfont(1); Title[3]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); Title[3]->deactivate(); } // Fl_Box* Title[3] { Title[4] = new Fl_Box(10, 110, 130, 25, "License"); Title[4]->labelfont(1); Title[4]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); Title[4]->deactivate(); } // Fl_Box* Title[4] { Title[5] = new Fl_Box(10, 135, 130, 25, "Installing"); Title[5]->labelfont(1); Title[5]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); Title[5]->deactivate(); } // Fl_Box* Title[5] { Wizard = new Fl_Wizard(150, 10, 480, 275); Wizard->box(FL_THIN_DOWN_BOX); Wizard->color((Fl_Color)48); { Pane[0] = new Fl_Group(150, 10, 480, 275); Pane[0]->labelfont(1); Pane[0]->labelsize(18); Pane[0]->labelcolor((Fl_Color)4); Pane[0]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); Pane[0]->hide(); { ReadmeFile = new Fl_Help_View(170, 30, 440, 235); } // Fl_Help_View* ReadmeFile Pane[0]->end(); } // Fl_Group* Pane[0] { Pane[1] = new Fl_Group(150, 10, 480, 275); Pane[1]->labelfont(1); Pane[1]->labelsize(18); Pane[1]->labelcolor((Fl_Color)4); Pane[1]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); Pane[1]->hide(); { Fl_Box *o = new Fl_Box(170, 30, 440, 25, "Select the installation type:"); o->align(Fl_Align(132 | FL_ALIGN_INSIDE)); } // Fl_Box* o { Fl_Group *o = new Fl_Group(170, 65, 440, 200); { TypeButton[0] = new Fl_Round_Button(170, 65, 440, 25); TypeButton[0]->type(102); TypeButton[0]->down_box(FL_ROUND_DOWN_BOX); TypeButton[0]->callback((Fl_Callback *)type_cb); } // Fl_Round_Button* TypeButton[0] { TypeButton[1] = new Fl_Round_Button(170, 90, 440, 25); TypeButton[1]->type(102); TypeButton[1]->down_box(FL_ROUND_DOWN_BOX); TypeButton[1]->callback((Fl_Callback *)type_cb); } // Fl_Round_Button* TypeButton[1] { TypeButton[2] = new Fl_Round_Button(170, 115, 440, 25); TypeButton[2]->type(102); TypeButton[2]->down_box(FL_ROUND_DOWN_BOX); TypeButton[2]->callback((Fl_Callback *)type_cb); } // Fl_Round_Button* TypeButton[2] { TypeButton[3] = new Fl_Round_Button(170, 140, 440, 25); TypeButton[3]->type(102); TypeButton[3]->down_box(FL_ROUND_DOWN_BOX); TypeButton[3]->callback((Fl_Callback *)type_cb); } // Fl_Round_Button* TypeButton[3] { TypeButton[4] = new Fl_Round_Button(170, 165, 440, 25); TypeButton[4]->type(102); TypeButton[4]->down_box(FL_ROUND_DOWN_BOX); TypeButton[4]->callback((Fl_Callback *)type_cb); } // Fl_Round_Button* TypeButton[4] { TypeButton[5] = new Fl_Round_Button(170, 190, 440, 25); TypeButton[5]->type(102); TypeButton[5]->down_box(FL_ROUND_DOWN_BOX); TypeButton[5]->callback((Fl_Callback *)type_cb); } // Fl_Round_Button* TypeButton[5] { TypeButton[6] = new Fl_Round_Button(170, 215, 440, 25); TypeButton[6]->type(102); TypeButton[6]->down_box(FL_ROUND_DOWN_BOX); TypeButton[6]->callback((Fl_Callback *)type_cb); } // Fl_Round_Button* TypeButton[6] { TypeButton[7] = new Fl_Round_Button(170, 240, 440, 25); TypeButton[7]->type(102); TypeButton[7]->down_box(FL_ROUND_DOWN_BOX); TypeButton[7]->callback((Fl_Callback *)type_cb); } // Fl_Round_Button* TypeButton[7] o->end(); } // Fl_Group* o Pane[1]->end(); } // Fl_Group* Pane[1] { Pane[2] = new Fl_Group(150, 10, 480, 275); Pane[2]->labelfont(1); Pane[2]->labelsize(18); Pane[2]->labelcolor((Fl_Color)4); Pane[2]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); Pane[2]->hide(); { Fl_Box *o = new Fl_Box(170, 30, 440, 25, "Select the software you want to install:"); o->align(Fl_Align(132 | FL_ALIGN_INSIDE)); } // Fl_Box* o { SoftwareList = new Fl_Check_Browser(170, 85, 440, 145, " Available Software:"); SoftwareList->type(3); SoftwareList->box(FL_DOWN_BOX); SoftwareList->selection_color(FL_BACKGROUND2_COLOR); SoftwareList->labelfont(1); SoftwareList->callback((Fl_Callback *)list_cb); SoftwareList->align(Fl_Align(FL_ALIGN_TOP_LEFT)); SoftwareList->when(3); } // Fl_Check_Browser* SoftwareList { SoftwareSize = new Fl_Box(170, 235, 241, 35, "0k marked for installation."); SoftwareSize->align(Fl_Align(196 | FL_ALIGN_INSIDE)); } // Fl_Box* SoftwareSize { InstallAllButton = new Fl_Button(421, 240, 80, 25, "Install All"); InstallAllButton->callback((Fl_Callback *)cb_InstallAllButton); } // Fl_Button* InstallAllButton { InstallNoneButton = new Fl_Button(511, 240, 99, 25, "Install None"); InstallNoneButton->callback((Fl_Callback *)cb_InstallNoneButton); } // Fl_Button* InstallNoneButton Pane[2]->end(); } // Fl_Group* Pane[2] { Pane[3] = new Fl_Group(150, 10, 480, 275); Pane[3]->labelfont(1); Pane[3]->labelsize(18); Pane[3]->labelcolor((Fl_Color)4); Pane[3]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); Pane[3]->hide(); { Fl_Box *o = new Fl_Box(170, 30, 440, 25, "Confirm your software selections below:"); o->align(Fl_Align(132 | FL_ALIGN_INSIDE)); } // Fl_Box* o { ConfirmList = new Fl_Browser(170, 85, 440, 180, "Selected Software:"); ConfirmList->labelfont(1); ConfirmList->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Browser* ConfirmList Pane[3]->end(); } // Fl_Group* Pane[3] { Pane[4] = new Fl_Group(150, 10, 480, 275); Pane[4]->labelfont(1); Pane[4]->labelsize(18); Pane[4]->labelcolor((Fl_Color)4); Pane[4]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); { LicenseFile = new Fl_Help_View(170, 48, 440, 192, "License Agreement:"); LicenseFile->labelfont(1); LicenseFile->align(Fl_Align(FL_ALIGN_TOP_LEFT)); Fl_Group::current()->resizable(LicenseFile); } // Fl_Help_View* LicenseFile { Fl_Group *o = new Fl_Group(170, 240, 400, 35); { LicenseAccept = new Fl_Round_Button( 210, 250, 210, 25, "Accept agreement and install"); LicenseAccept->type(102); LicenseAccept->down_box(FL_ROUND_DOWN_BOX); LicenseAccept->callback((Fl_Callback *)cb_LicenseAccept); LicenseAccept->align(Fl_Align(132 | FL_ALIGN_INSIDE)); } // Fl_Round_Button* LicenseAccept { LicenseDecline = new Fl_Round_Button(430, 250, 140, 25, "Cancel installation"); LicenseDecline->type(102); LicenseDecline->down_box(FL_ROUND_DOWN_BOX); LicenseDecline->callback((Fl_Callback *)cb_LicenseDecline); } // Fl_Round_Button* LicenseDecline o->end(); } // Fl_Group* o Pane[4]->end(); } // Fl_Group* Pane[4] { Pane[5] = new Fl_Group(150, 10, 480, 275); Pane[5]->labelfont(1); Pane[5]->labelsize(18); Pane[5]->labelcolor((Fl_Color)4); Pane[5]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); Pane[5]->hide(); { InstallPercent = new Fl_Progress(170, 47, 440, 15, "Progress Label..."); InstallPercent->color((Fl_Color)48); InstallPercent->selection_color((Fl_Color)221); InstallPercent->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Progress* InstallPercent { InstallLog = new Fl_Browser(170, 74, 440, 191); } // Fl_Browser* InstallLog Pane[5]->end(); } // Fl_Group* Pane[5] Wizard->end(); } // Fl_Wizard* Wizard { WelcomeImage = new Fl_Box(10, 190, 130, 130); WelcomeImage->image(image_default()); WelcomeImage->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT | FL_ALIGN_INSIDE)); } // Fl_Box* WelcomeImage { PrevButton = new Fl_Button(396, 295, 72, 25, "@-2< Back"); PrevButton->callback((Fl_Callback *)cb_PrevButton); } // Fl_Button* PrevButton { NextButton = new Fl_Button(478, 295, 74, 25, "Next @-2>"); NextButton->callback((Fl_Callback *)next_cb); } // Fl_Button* NextButton { CancelButton = new Fl_Button(562, 295, 68, 25, "Cancel"); CancelButton->callback((Fl_Callback *)cb_CancelButton); } // Fl_Button* CancelButton SetupWindow->end(); } // Fl_Double_Window* SetupWindow return SetupWindow; } jimjag-epm-84910c6/setup.fl000066400000000000000000000134331521151356300155030ustar00rootroot00000000000000# data file for the Fltk User Interface Designer (fluid) version 1.0304 header_name {.h} code_name {.cxx} Function {make_window()} {open } { Fl_Window SetupWindow { label Install callback {if (CancelButton->active()) exit(0);} open xywh {167 45 640 330} type Double code0 {\#include "gui-common.h"} visible } { Fl_Box {Title[0]} { label Welcome xywh {10 10 130 25} labelfont 1 align 20 } Fl_Box {Title[1]} { label {Install Type} xywh {10 35 130 25} labelfont 1 align 20 deactivate } Fl_Box {Title[2]} { label {Select Software} xywh {10 60 130 25} labelfont 1 align 20 deactivate } Fl_Box {Title[3]} { label Confirm xywh {10 85 130 25} labelfont 1 align 20 deactivate } Fl_Box {Title[4]} { label License xywh {10 110 130 25} labelfont 1 align 20 deactivate } Fl_Box {Title[5]} { label Installing xywh {10 135 130 25} labelfont 1 align 20 deactivate } Fl_Wizard Wizard {open xywh {150 10 480 275} box THIN_DOWN_BOX color 48 } { Fl_Group {Pane[0]} {open xywh {150 10 480 275} labelfont 1 labelsize 18 labelcolor 4 align 21 hide } { Fl_Help_View ReadmeFile { xywh {170 30 440 235} } } Fl_Group {Pane[1]} { xywh {150 10 480 275} labelfont 1 labelsize 18 labelcolor 4 align 21 hide } { Fl_Box {} { label {Select the installation type:} xywh {170 30 440 25} align 148 } Fl_Group {} { xywh {170 65 440 200} } { Fl_Round_Button {TypeButton[0]} { callback type_cb xywh {170 65 440 25} type Radio down_box ROUND_DOWN_BOX } Fl_Round_Button {TypeButton[1]} { callback type_cb xywh {170 90 440 25} type Radio down_box ROUND_DOWN_BOX } Fl_Round_Button {TypeButton[2]} { callback type_cb xywh {170 115 440 25} type Radio down_box ROUND_DOWN_BOX } Fl_Round_Button {TypeButton[3]} { callback type_cb xywh {170 140 440 25} type Radio down_box ROUND_DOWN_BOX } Fl_Round_Button {TypeButton[4]} { callback type_cb xywh {170 165 440 25} type Radio down_box ROUND_DOWN_BOX } Fl_Round_Button {TypeButton[5]} { callback type_cb xywh {170 190 440 25} type Radio down_box ROUND_DOWN_BOX } Fl_Round_Button {TypeButton[6]} { callback type_cb xywh {170 215 440 25} type Radio down_box ROUND_DOWN_BOX } Fl_Round_Button {TypeButton[7]} { callback type_cb xywh {170 240 440 25} type Radio down_box ROUND_DOWN_BOX } } } Fl_Group {Pane[2]} { xywh {150 10 480 275} labelfont 1 labelsize 18 labelcolor 4 align 21 hide } { Fl_Box {} { label {Select the software you want to install:} xywh {170 30 440 25} align 148 } Fl_Check_Browser SoftwareList { label { Available Software:} callback list_cb xywh {170 85 440 145} type Multi box DOWN_BOX selection_color 7 labelfont 1 align 5 when 3 } Fl_Box SoftwareSize { label {0k marked for installation.} xywh {170 235 241 35} align 212 } Fl_Button InstallAllButton { label {Install All} callback {SoftwareList->check_all(); list_cb(0,0);} xywh {421 240 80 25} } Fl_Button InstallNoneButton { label {Install None} callback {SoftwareList->check_none(); list_cb(0,0);} xywh {511 240 99 25} } } Fl_Group {Pane[3]} {open xywh {150 10 480 275} labelfont 1 labelsize 18 labelcolor 4 align 21 hide } { Fl_Box {} { label {Confirm your software selections below:} xywh {170 30 440 25} align 148 } Fl_Browser ConfirmList { label {Selected Software:} xywh {170 85 440 180} labelfont 1 align 5 } } Fl_Group {Pane[4]} {open xywh {150 10 480 275} labelfont 1 labelsize 18 labelcolor 4 align 21 } { Fl_Help_View LicenseFile { label {License Agreement:} xywh {170 48 440 192} labelfont 1 align 5 resizable } Fl_Group {} {open xywh {170 240 400 35} } { Fl_Round_Button LicenseAccept { label {Accept agreement and install} callback {NextButton->activate();} xywh {210 250 210 25} type Radio down_box ROUND_DOWN_BOX align 148 } Fl_Round_Button LicenseDecline { label {Cancel installation} callback {NextButton->activate();} xywh {430 250 140 25} type Radio down_box ROUND_DOWN_BOX } } } Fl_Group {Pane[5]} {open xywh {150 10 480 275} labelfont 1 labelsize 18 labelcolor 4 align 21 hide } { Fl_Progress InstallPercent { label {Progress Label...} xywh {170 47 440 15} color 48 selection_color 221 align 5 } Fl_Browser InstallLog { xywh {170 74 440 191} } } } Fl_Box WelcomeImage {selected image {default.png} xywh {10 190 130 130} align 22 } Fl_Button PrevButton { label {@-2< Back} callback {Wizard->prev(); int i; for (i = 0; i < 6; i ++) { Title[i]->activate(); if (Pane[i]->visible()) break; } for (i ++; i < 6; i ++) Title[i]->deactivate();} xywh {396 295 72 25} } Fl_Button NextButton { label {Next @-2>} callback next_cb xywh {478 295 74 25} } Fl_Button CancelButton { label Cancel callback {exit(0);} xywh {562 295 68 25} } } } jimjag-epm-84910c6/setup.h000066400000000000000000000023701521151356300153270ustar00rootroot00000000000000// generated by Fast Light User Interface Designer (fluid) version 1.0304 #ifndef setup_h #define setup_h #include "gui-common.h" #include #include extern Fl_Double_Window *SetupWindow; #include extern Fl_Box *Title[6]; #include extern Fl_Wizard *Wizard; #include #include extern Fl_Help_View *ReadmeFile; #include extern void type_cb(Fl_Round_Button *, void *); extern Fl_Round_Button *TypeButton[8]; #include extern void list_cb(Fl_Check_Browser *, void *); extern Fl_Check_Browser *SoftwareList; extern Fl_Box *SoftwareSize; #include extern Fl_Button *InstallAllButton; extern Fl_Button *InstallNoneButton; #include extern Fl_Browser *ConfirmList; extern Fl_Help_View *LicenseFile; extern Fl_Round_Button *LicenseAccept; extern Fl_Round_Button *LicenseDecline; extern Fl_Group *Pane[6]; #include extern Fl_Progress *InstallPercent; extern Fl_Browser *InstallLog; extern Fl_Box *WelcomeImage; extern Fl_Button *PrevButton; extern void next_cb(Fl_Button *, void *); extern Fl_Button *NextButton; extern Fl_Button *CancelButton; Fl_Double_Window *make_window(); #endif jimjag-epm-84910c6/setup2.cxx000066400000000000000000001025271521151356300157710ustar00rootroot00000000000000// // ESP Software Installation Wizard main entry for the ESP Package Manager (EPM). // // Copyright © 2020 by Jim Jagielski // Copyright 1999-2017 by Michael R Sweet // Copyright 1999-2010 by Easy Software Products. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #define _DEFINE_GLOBALS_ #include "setup.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_PARAM_H #include #endif // HAVE_SYS_PARAM_H #ifdef HAVE_SYS_MOUNT_H #include #endif // HAVE_SYS_MOUNT_H #ifdef HAVE_SYS_STATFS_H #include #endif // HAVE_SYS_STATFS_H #ifdef HAVE_SYS_VFS_H #include #endif // HAVE_SYS_VFS_H #ifdef __osf__ // No prototype for statfs under Tru64... extern "C" { extern int statfs(const char *, struct statfs *); } #endif // __osf__ #ifdef __APPLE__ #include #include #include AuthorizationRef SetupAuthorizationRef; #endif // __APPLE__ // // Panes... // #define PANE_WELCOME 0 #define PANE_TYPE 1 #define PANE_SELECT 2 #define PANE_CONFIRM 3 #define PANE_LICENSE 4 #define PANE_INSTALL 5 // // Define a C API function type for comparisons... // extern "C" { typedef int (*compare_func_t)(const void *, const void *); } // // Local functions... // void get_dists(const char *d); int install_dist(const gui_dist_t *dist); int license_dist(const gui_dist_t *dist); void load_image(void); void load_readme(void); void load_types(void); void log_cb(int fd, int *fdptr); void update_sizes(void); // // 'main()' - Main entry for software wizard... // int // O - Exit status main(int argc, // I - Number of command-line arguments char *argv[]) // I - Command-line arguments { Fl_Window *w; // Main window... const char *distdir = "."; // Distribution directory // Use GTK+ scheme for all operating systems... Fl::background(230, 230, 230); Fl::scheme("gtk+"); #ifdef __APPLE__ // macOS uses the setup program in a bundle, so get the bundle's directory. CFBundleRef mainBundle = CFBundleGetMainBundle(); char mainPath[1024] = ""; if (mainBundle) { CFURLRef mainURL = CFBundleCopyBundleURL(mainBundle); CFStringRef mainCFPath = CFURLCopyFileSystemPath(mainURL, kCFURLPOSIXPathStyle); if (CFStringGetCString(mainCFPath, mainPath, sizeof(mainPath), kCFStringEncodingUTF8)) { strlcat(mainPath, "/Contents/Resources", sizeof(mainPath)); fprintf(stderr, "Using \"%s\" as the distribution directory.\n", mainPath); distdir = mainPath; } CFRelease(mainCFPath); CFRelease(mainURL); } else #endif // __APPLE__ // Get the directory that has the software in it... if (argc > 1 && argv[1][0] != '-') distdir = argv[1]; w = make_window(); Pane[PANE_WELCOME]->show(); PrevButton->deactivate(); NextButton->deactivate(); gui_get_installed(); get_dists(distdir); load_image(); load_readme(); load_types(); w->show(); while (!w->visible()) Fl::wait(); #ifdef __APPLE__ OSStatus status; status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &SetupAuthorizationRef); if (status != errAuthorizationSuccess) { fl_alert("You must have administrative priviledges to install this software!"); return (1); } AuthorizationItem items = {kAuthorizationRightExecute, 0, NULL, 0}; AuthorizationRights rights = {1, &items}; status = AuthorizationCopyRights( SetupAuthorizationRef, &rights, NULL, kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights, NULL); if (status != errAuthorizationSuccess) { fl_alert("You must have administrative priviledges to install this software!"); return (1); } #else if (getuid() != 0) { fl_alert("You must be logged in as root to run setup!"); return (1); } #endif // __APPLE__ NextButton->activate(); Fl::run(); #ifdef __APPLE__ AuthorizationFree(SetupAuthorizationRef, kAuthorizationFlagDefaults); #endif // __APPLE__ return (0); } // // 'get_dists()' - Get a list of available software products. // void get_dists(const char *d) // I - Directory to look in { int i; // Looping var int num_files; // Number of files dirent **files; // Files const char *ext; // Extension gui_dist_t *temp, // Pointer to current distribution *installed; // Pointer to installed product FILE *fp; // File to read from char line[1024], // Line from file... product[64]; // Product name... int lowver, hiver; // Version numbers for dependencies // Get the files in the specified directory... if (chdir(d)) { fprintf(stderr, "setup: Unable to change to distribution directory \"%s\": %s\n", d, strerror(errno)); exit(1); } if ((num_files = fl_filename_list(".", &files)) == 0) { fputs("setup: Error - no software products found!\n", stderr); exit(1); } // Build a distribution list... NumDists = 0; Dists = (gui_dist_t *)0; for (i = 0; i < num_files; i++) { ext = fl_filename_ext(files[i]->d_name); if (!strcmp(ext, ".install") || !strcmp(ext, ".patch")) { // Found a .install script... if ((fp = fopen(files[i]->d_name, "r")) == NULL) { perror("setup: Unable to open installation script"); exit(1); } // Add a new distribution entry... temp = gui_add_dist(&NumDists, &Dists); temp->type = PACKAGE_PORTABLE; temp->filename = strdup(files[i]->d_name); strncpy(temp->product, files[i]->d_name, sizeof(temp->product) - 1); *strrchr(temp->product, '.') = '\0'; // Drop .install // Read info from the installation script... while (fgets(line, sizeof(line), fp) != NULL) { // Only read distribution info lines... if (strncmp(line, "#%", 2)) continue; // Drop the trailing newline... line[strlen(line) - 1] = '\0'; // Copy data as needed... if (strncmp(line, "#%product ", 10) == 0) strncpy(temp->name, line + 10, sizeof(temp->name) - 1); else if (strncmp(line, "#%version ", 10) == 0) sscanf(line + 10, "%31s%d", temp->version, &(temp->vernumber)); else if (strncmp(line, "#%rootsize ", 11) == 0) temp->rootsize = atoi(line + 11); else if (strncmp(line, "#%usrsize ", 10) == 0) temp->usrsize = atoi(line + 10); else if (strncmp(line, "#%incompat ", 11) == 0 || strncmp(line, "#%requires ", 11) == 0) { lowver = 0; hiver = 0; if (sscanf(line + 11, "%s%*s%d%*s%d", product, &lowver, &hiver) > 0) gui_add_depend( temp, (line[2] == 'i') ? DEPEND_INCOMPAT : DEPEND_REQUIRES, product, lowver, hiver); } } fclose(fp); } else if (!strcmp(ext, ".rpm")) { // Found an RPM package... char *version, // Version number *size, // Size of package *description; // Summary string // Get the package information... snprintf(line, sizeof(line), "rpm -qp --qf '%%{NAME}|%%{VERSION}|%%{SIZE}|%%{SUMMARY}\\n' %s", files[i]->d_name); if ((fp = popen(line, "r")) == NULL) { free(files[i]); continue; } if (!fgets(line, sizeof(line), fp)) { free(files[i]); continue; } // Drop the trailing newline... line[strlen(line) - 1] = '\0'; // Grab the different fields... if ((version = strchr(line, '|')) == NULL) continue; *version++ = '\0'; if ((size = strchr(version, '|')) == NULL) continue; *size++ = '\0'; if ((description = strchr(size, '|')) == NULL) continue; *description++ = '\0'; // Add a new distribution entry... temp = gui_add_dist(&NumDists, &Dists); temp->type = PACKAGE_RPM; temp->filename = strdup(files[i]->d_name); strlcpy(temp->product, line, sizeof(temp->product)); strlcpy(temp->name, description, sizeof(temp->name)); strlcpy(temp->version, version, sizeof(temp->version)); temp->vernumber = get_vernumber(version); temp->rootsize = (int)(atof(size) / 1024.0 + 0.5); pclose(fp); } free(files[i]); } free(files); if (NumDists == 0) { // fl_alert("No software found to install!"); fl_alert("No software found to install in \"%s\".", d); exit(1); } if (NumDists > 1) qsort(Dists, NumDists, sizeof(gui_dist_t), (compare_func_t)gui_sort_dists); for (i = 0, temp = Dists; i < NumDists; i++, temp++) { sprintf(line, "%s v%s", temp->name, temp->version); if ((installed = gui_find_dist(temp->product, NumInstalled, Installed)) == NULL) { strcat(line, " (new)"); SoftwareList->add(line, 0); } else if (installed->vernumber > temp->vernumber) { strcat(line, " (downgrade)"); SoftwareList->add(line, 0); } else if (installed->vernumber == temp->vernumber) { strcat(line, " (installed)"); SoftwareList->add(line, 0); } else { strcat(line, " (upgrade)"); SoftwareList->add(line, 1); } } update_sizes(); } // // 'install_dist()' - Install a distribution... // int // O - Install status install_dist(const gui_dist_t *dist) // I - Distribution to install { char command[1024]; // Command string int fds[2]; // Pipe FDs int status = 0; // Exit status #ifndef __APPLE__ int pid; // Process ID #endif // !__APPLE__ sprintf(command, "**** %s ****", dist->name); InstallLog->add(command); #ifdef __APPLE__ // Run the install script using Apple's authorization API... FILE *fp = NULL; char *args[2] = {(char *)"now", NULL}; OSStatus astatus; astatus = AuthorizationExecuteWithPrivileges(SetupAuthorizationRef, dist->filename, kAuthorizationFlagDefaults, args, &fp); if (astatus != errAuthorizationSuccess) { InstallLog->add("Failed to execute install script!"); return (1); } fds[0] = fileno(fp); #else // Fork the command and redirect errors and info to stdout... pipe(fds); if ((pid = fork()) == 0) { // Child comes here; start by redirecting stdout and stderr... close(1); close(2); dup(fds[1]); dup(fds[1]); // Close the original pipes... close(fds[0]); close(fds[1]); // Execute the command; if an error occurs, return it... if (dist->type == PACKAGE_PORTABLE) execl(dist->filename, dist->filename, "now", (char *)0); else execlp("rpm", "rpm", "-U", "--nodeps", dist->filename, (char *)0); exit(errno); } else if (pid < 0) { // Unable to fork! sprintf(command, "Unable to install %s:", dist->name); InstallLog->add(command); sprintf(command, "\t%s", strerror(errno)); InstallLog->add(command); close(fds[0]); close(fds[1]); return (1); } // Close the output pipe (used by the child)... close(fds[1]); #endif // __APPLE__ // Listen for data on the input pipe... Fl::add_fd(fds[0], (void (*)(int, void *))log_cb, fds); // Show the user that we're busy... SetupWindow->cursor(FL_CURSOR_WAIT); // Loop until the child is done... while (fds[0]) // log_cb() will close and zero fds[0]... { // Wait for events... Fl::wait(); #ifndef __APPLE__ // Check to see if the child went away... if (waitpid(0, &status, WNOHANG) == pid) break; #endif // !__APPLE__ } #ifdef __APPLE__ fclose(fp); #endif // __APPLE__ if (fds[0]) { // Close the pipe - have all the data from the child... Fl::remove_fd(fds[0]); close(fds[0]); } else { // Get the child's exit status... wait(&status); } // Show the user that we're ready... SetupWindow->cursor(FL_CURSOR_DEFAULT); // Return... return (status); } // // 'license_dist()' - Show the license for a distribution... // int // O - 0 if accepted, 1 if not license_dist(const gui_dist_t *dist) // I - Distribution to license { char licfile[1024]; // License filename struct stat licinfo; // License file info static int liclength = 0; // Size of license file static char liclabel[1024]; // Label for license pane // See if we need to show the license file... sprintf(licfile, "%s.license", dist->product); if (!stat(licfile, &licinfo) && licinfo.st_size != liclength) { // Save this license's length... liclength = licinfo.st_size; // Set the title string... snprintf(liclabel, sizeof(liclabel), "Software License for %s:", dist->name); LicenseFile->label(liclabel); // Load the license into the viewer... LicenseFile->textfont(FL_HELVETICA); LicenseFile->textsize(14); gui_load_file(LicenseFile, licfile); // Show the license window and wait for the user... Pane[PANE_LICENSE]->show(); Title[PANE_LICENSE]->activate(); LicenseAccept->clear(); LicenseDecline->clear(); NextButton->deactivate(); CancelButton->activate(); while (Pane[PANE_LICENSE]->visible()) Fl::wait(); Title[PANE_INSTALL]->deactivate(); CancelButton->deactivate(); NextButton->deactivate(); if (LicenseDecline->value()) { // Can't install without acceptance... char message[1024]; // Message for log liclength = 0; snprintf(message, sizeof(message), "License not accepted for %s!", dist->name); InstallLog->add(message); return (1); } } return (0); } // // 'list_cb()' - Handle selections in the software list. // void list_cb(Fl_Check_Browser *, void *) { int i, j, k; gui_dist_t *dist, *dist2; gui_depend_t *depend; if (SoftwareList->nchecked() == 0) { update_sizes(); NextButton->deactivate(); return; } for (i = 0, dist = Dists; i < NumDists; i++, dist++) if (SoftwareList->checked(i + 1)) { // Check for required/incompatible products... for (j = 0, depend = dist->depends; j < dist->num_depends; j++, depend++) switch (depend->type) { case DEPEND_REQUIRES: if ((dist2 = gui_find_dist(depend->product, NumDists, Dists)) != NULL) { // Software is in the list, is it selected? k = dist2 - Dists; if (SoftwareList->checked(k + 1)) continue; // Nope, select it unless we're unchecked another selection... if (SoftwareList->value() != (k + 1)) SoftwareList->checked(k + 1, 1); else { SoftwareList->checked(i + 1, 0); break; } } else if ((dist2 = gui_find_dist(depend->product, NumInstalled, Installed)) == NULL) { // Required but not installed or available! fl_alert( "%s requires %s to be installed, but it is not available " "for installation.", dist->name, depend->product); SoftwareList->checked(i + 1, 0); break; } break; case DEPEND_INCOMPAT: if ((dist2 = gui_find_dist(depend->product, NumInstalled, Installed)) != NULL) { // Already installed! fl_alert("%s is incompatible with %s. Please remove it before " "installing this software.", dist->name, dist2->name); SoftwareList->checked(i + 1, 0); break; } else if ((dist2 = gui_find_dist(depend->product, NumDists, Dists)) != NULL) { // Software is in the list, is it selected? k = dist2 - Dists; // Software is in the list, is it selected? if (!SoftwareList->checked(k + 1)) continue; // Yes, tell the user... fl_alert("%s is incompatible with %s. Please deselect it before " "installing this software.", dist->name, dist2->name); SoftwareList->checked(i + 1, 0); break; } default: break; } } update_sizes(); if (SoftwareList->nchecked()) NextButton->activate(); else NextButton->deactivate(); } // // 'load_image()' - Load the setup image file (setup.gif/xpm)... // void load_image(void) { Fl_Image *img; // New image if (!access("setup.xpm", 0)) img = new Fl_XPM_Image("setup.xpm"); else if (!access("setup.gif", 0)) img = new Fl_GIF_Image("setup.gif"); else if (!access("setup.jpg", 0)) img = new Fl_JPEG_Image("setup.jpg"); else if (!access("setup.png", 0)) img = new Fl_PNG_Image("setup.png"); else img = NULL; if (img) WelcomeImage->image(img); } // // 'load_readme()' - Load the readme file... // void load_readme(void) { ReadmeFile->textfont(FL_HELVETICA); ReadmeFile->textsize(14); if (access("setup.readme", 0)) { int i; // Looping var gui_dist_t *dist; // Current distribution char *buffer, // Text buffer *ptr; // Pointer into buffer buffer = new char[1024 + NumDists * 300]; strcpy(buffer, "This program allows you to install the following software:\n" "
          \n"); ptr = buffer + strlen(buffer); for (i = NumDists, dist = Dists; i > 0; i--, dist++) { sprintf(ptr, "
        • %s, %s\n", dist->name, dist->version); ptr += strlen(ptr); } strcpy(ptr, "
        "); ReadmeFile->value(buffer); delete[] buffer; } else gui_load_file(ReadmeFile, "setup.readme"); } // // 'load_types()' - Load the installation types from the setup.types file. // void load_types(void) { int i; // Looping var FILE *fp; // File to read from char line[1024], // Line from file *lineptr, // Pointer into line *sep; // Separator gui_intype_t *dt; // Current install type gui_dist_t *dist; // Distribution NumInstTypes = 0; if ((fp = fopen("setup.types", "r")) != NULL) { dt = NULL; while (fgets(line, sizeof(line), fp) != NULL) { if (line[0] == '#' || line[0] == '\n') continue; lineptr = line + strlen(line) - 1; if (*lineptr == '\n') *lineptr = '\0'; if (!strncasecmp(line, "TYPE", 4) && isspace(line[4])) { // New type... if (NumInstTypes >= (int)(sizeof(InstTypes) / sizeof(InstTypes[0]))) { fprintf(stderr, "setup: Too many TYPEs (> %d) in setup.types!\n", (int)(sizeof(InstTypes) / sizeof(InstTypes[0]))); fclose(fp); exit(1); } // Skip whitespace... for (lineptr = line + 5; isspace(*lineptr); lineptr++) ; // Copy name and label string... dt = InstTypes + NumInstTypes; NumInstTypes++; memset(dt, 0, sizeof(gui_intype_t)); if ((sep = strchr(lineptr, '/')) != NULL) *sep++ = '\0'; else sep = lineptr; strncpy(dt->name, lineptr, sizeof(dt->name)); strncpy(dt->label, sep, sizeof(dt->label) - 10); } else if (!strncasecmp(line, "INSTALL", 7) && dt && isspace(line[7])) { // Install a product... if (dt->num_products >= (int)(sizeof(dt->products) / sizeof(dt->products[0]))) { fprintf(stderr, "setup: Too many INSTALLs (> %d) in setup.types!\n", (int)(sizeof(dt->products) / sizeof(dt->products[0]))); fclose(fp); exit(1); } // Skip whitespace... for (lineptr = line + 8; isspace(*lineptr); lineptr++) ; // Add product to list... if ((dist = gui_find_dist(lineptr, NumDists, Dists)) != NULL) { dt->products[dt->num_products] = dist - Dists; dt->num_products++; dt->size += dist->rootsize + dist->usrsize; if ((dist = gui_find_dist(lineptr, NumInstalled, Installed)) != NULL) dt->size -= dist->rootsize + dist->usrsize; } else fprintf(stderr, "setup: Unable to find product \"%s\" for \"%s\"!\n", lineptr, dt->label); } else { fprintf(stderr, "setup: Bad line - %s\n", line); fclose(fp); exit(1); } } fclose(fp); } else { Title[PANE_TYPE]->hide(); Title[PANE_SELECT]->position(10, 35); Title[PANE_CONFIRM]->position(10, 60); Title[PANE_LICENSE]->position(10, 85); Title[PANE_INSTALL]->position(10, 110); } for (i = 0, dt = InstTypes; i < NumInstTypes; i++, dt++) { if (dt->size >= 1024) sprintf(dt->label + strlen(dt->label), " (+%.1fm disk space)", dt->size / 1024.0); else if (dt->size) sprintf(dt->label + strlen(dt->label), " (+%dk disk space)", dt->size); if ((lineptr = strchr(dt->label, '/')) != NULL) TypeButton[i]->label(lineptr + 1); else TypeButton[i]->label(dt->label); TypeButton[i]->show(); } for (; i < (int)(sizeof(TypeButton) / sizeof(TypeButton[0])); i++) TypeButton[i]->hide(); } // // 'log_cb()' - Add one or more lines of text to the installation log. // void log_cb(int fd, // I - Pipe to read from int *fdptr) // O - Pipe to read from { int bytes; // Bytes read/to read char *bufptr; // Pointer into buffer static int bufused = 0; // Number of bytes used static char buffer[8193]; // Buffer bytes = 8192 - bufused; if ((bytes = read(fd, buffer + bufused, bytes)) <= 0) { // End of file; zero the FD to tell the install_dist() function to // stop... Fl::remove_fd(fd); close(fd); *fdptr = 0; if (bufused > 0) { // Add remaining text... buffer[bufused] = '\0'; InstallLog->add(buffer); bufused = 0; } } else { // Add bytes to the buffer, then add lines as needed... bufused += bytes; buffer[bufused] = '\0'; while ((bufptr = strchr(buffer, '\n')) != NULL) { *bufptr++ = '\0'; InstallLog->add(buffer); strcpy(buffer, bufptr); bufused -= bufptr - buffer; } } InstallLog->bottomline(InstallLog->size()); } // // 'next_cb()' - Show software selections or install software. // void next_cb(Fl_Button *, void *) { int i; // Looping var int progress; // Progress so far... int error; // Errors? static char message[1024]; // Progress message... static char install_type[1024]; // EPM_INSTALL_TYPE env variable static int installing = 0; // Installing software? Wizard->next(); PrevButton->deactivate(); if (Wizard->value() == Pane[PANE_TYPE]) { if (NumInstTypes == 0) Wizard->next(); } else if (Wizard->value() == Pane[PANE_SELECT]) { if (NumInstTypes) PrevButton->activate(); // Figure out which type is chosen... for (i = 0; i < (int)(sizeof(TypeButton) / sizeof(TypeButton[0])); i++) if (TypeButton[i]->value()) break; if (i < (int)(sizeof(TypeButton) / sizeof(TypeButton[0]))) { // Set the EPM_INSTALL_TYPE environment variable... snprintf(install_type, sizeof(install_type), "EPM_INSTALL_TYPE=%s", InstTypes[i].name); putenv(install_type); // Skip product selection if this type has a list already... if (InstTypes[i].num_products > 0) Wizard->next(); } } if (Wizard->value() == Pane[PANE_CONFIRM]) { ConfirmList->clear(); PrevButton->activate(); for (i = 0; i < NumDists; i++) if (SoftwareList->checked(i + 1)) ConfirmList->add(SoftwareList->text(i + 1)); } else if (Wizard->value() == Pane[PANE_LICENSE]) Wizard->next(); if (Wizard->value() == Pane[PANE_INSTALL] && !installing) { // Show the licenses for each of the selected software packages... installing = 1; for (i = 0, progress = 0, error = 0; i < NumDists; i++) if (SoftwareList->checked(i + 1) && license_dist(Dists + i)) { InstallPercent->label("Installation Canceled!"); Pane[PANE_INSTALL]->redraw(); CancelButton->label("Close"); CancelButton->activate(); fl_beep(); return; } // Then do the installs... NextButton->deactivate(); CancelButton->deactivate(); CancelButton->label("Close"); for (i = 0, progress = 0, error = 0; i < NumDists; i++) if (SoftwareList->checked(i + 1)) { sprintf(message, "Installing %s v%s...", Dists[i].name, Dists[i].version); InstallPercent->value(100.0 * progress / SoftwareList->nchecked()); InstallPercent->label(message); Pane[PANE_INSTALL]->redraw(); if ((error = install_dist(Dists + i)) != 0) break; progress++; } InstallPercent->value(100.0); if (error) InstallPercent->label("Installation Failed!"); else InstallPercent->label("Installation Complete"); Pane[PANE_INSTALL]->redraw(); CancelButton->activate(); fl_beep(); installing = 0; } else if (Wizard->value() == Pane[PANE_SELECT] && SoftwareList->nchecked() == 0) NextButton->deactivate(); for (i = 0; i <= PANE_INSTALL; i++) { Title[i]->activate(); if (Pane[i]->visible()) break; } } // // 'type_cb()' - Handle selections in the type list. // void type_cb(Fl_Round_Button *w, void *) // I - Radio button widget { int i; // Looping var gui_intype_t *dt; // Current install type gui_dist_t *temp, // Current software *installed; // Installed software for (i = 0; i < (int)(sizeof(TypeButton) / sizeof(TypeButton[0])); i++) if (w == TypeButton[i]) break; if (i >= (int)(sizeof(TypeButton) / sizeof(TypeButton[0]))) return; dt = InstTypes + i; SoftwareList->check_none(); // Select all products in the install type for (i = 0; i < dt->num_products; i++) SoftwareList->checked(dt->products[i] + 1, 1); // And then any upgrade products... for (i = 0, temp = Dists; i < NumDists; i++, temp++) { if ((installed = gui_find_dist(temp->product, NumInstalled, Installed)) != NULL && installed->vernumber < temp->vernumber) SoftwareList->checked(i + 1, 1); } update_sizes(); NextButton->activate(); } // // 'update_size()' - Update the total +/- sizes of the installations. // void update_sizes(void) { int i; // Looping var gui_dist_t *dist, // Distribution *installed; // Installed distribution int rootsize, // Total root size difference in kbytes usrsize; // Total /usr size difference in kbytes struct statfs rootpart, // Available root partition usrpart; // Available /usr partition int rootfree, // Free space on root partition usrfree; // Free space on /usr partition static char sizelabel[1024]; // Label for selected sizes... // Get the sizes for the selected products... for (i = 0, dist = Dists, rootsize = 0, usrsize = 0; i < NumDists; i++, dist++) if (SoftwareList->checked(i + 1)) { rootsize += dist->rootsize; usrsize += dist->usrsize; if ((installed = gui_find_dist(dist->product, NumInstalled, Installed)) != NULL) { rootsize -= installed->rootsize; usrsize -= installed->usrsize; } } // Get the sizes of the root and /usr partition... #if defined(__sgi) || defined(__svr4__) || defined(__SVR4) || defined(M_XENIX) if (statfs("/", &rootpart, sizeof(rootpart), 0)) #else if (statfs("/", &rootpart)) #endif // __sgi || __svr4__ || __SVR4 || M_XENIX rootfree = 1024; else rootfree = (int)((double)rootpart.f_bfree * (double)rootpart.f_bsize / 1024.0 / 1024.0 + 0.5); #if defined(__sgi) || defined(__svr4__) || defined(__SVR4) || defined(M_XENIX) if (statfs("/usr", &usrpart, sizeof(usrpart), 0)) #else if (statfs("/usr", &usrpart)) #endif // __sgi || __svr4__ || __SVR4 || M_XENIX usrfree = 1024; else usrfree = (int)((double)usrpart.f_bfree * (double)usrpart.f_bsize / 1024.0 / 1024.0 + 0.5); // Display the results to the user... if (rootfree == usrfree) { rootsize += usrsize; if (rootsize >= 1024) snprintf(sizelabel, sizeof(sizelabel), "%+.1fm required, %dm available.", rootsize / 1024.0, rootfree); else snprintf(sizelabel, sizeof(sizelabel), "%+dk required, %dm available.", rootsize, rootfree); } else if (rootsize >= 1024 && usrsize >= 1024) snprintf(sizelabel, sizeof(sizelabel), "%+.1fm required on /, %dm available,\n" "%+.1fm required on /usr, %dm available.", rootsize / 1024.0, rootfree, usrsize / 1024.0, usrfree); else if (rootsize >= 1024) snprintf(sizelabel, sizeof(sizelabel), "%+.1fm required on /, %dm available,\n" "%+dk required on /usr, %dm available.", rootsize / 1024.0, rootfree, usrsize, usrfree); else if (usrsize >= 1024) snprintf(sizelabel, sizeof(sizelabel), "%+dk required on /, %dm available,\n" "%+.1fm required on /usr, %dm available.", rootsize, rootfree, usrsize / 1024.0, usrfree); else snprintf(sizelabel, sizeof(sizelabel), "%+dk required on /, %dm available,\n" "%+dk required on /usr, %dm available.", rootsize, rootfree, usrsize, usrfree); SoftwareSize->label(sizelabel); SoftwareSize->redraw(); } jimjag-epm-84910c6/slackware.c000066400000000000000000000226711521151356300161440ustar00rootroot00000000000000/* * Slackware package gateway for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 2003-2017 by Michael R Sweet * Copyright 2003-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local functions... */ static int make_subpackage(const char *prodname, const char *directory, const char *platname, dist_t *dist, const char *subpackage); /* * 'make_slackware()' - Make a Slackware software distribution packages. */ int /* O - 0 = success, 1 = fail */ make_slackware(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform) /* I - Platform information */ { int i; /* Looping var */ REF(platform); /* * Check to see if we are being run as root... */ if (getuid()) { fprintf(stderr, "ERROR: Can only make Slackware packages as root\n"); return (1); } /* * Create subpackages... */ if (make_subpackage(prodname, directory, platname, dist, NULL)) return (1); for (i = 0; i < dist->num_subpackages; i++) if (make_subpackage(prodname, directory, platname, dist, dist->subpackages[i])) return (1); return (0); } /* * 'make_subpackage()' - Make a Slackware subpackage. */ static int /* O - 0 = success, 1 = fail */ make_subpackage(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ const char *subpackage) /* I - Subpackage name */ { int i; /* Looping var */ FILE *fp; /* Spec file */ char prodfull[1024], /* Full name of product */ filename[1024], /* Destination filename */ pkgname[1024]; /* Package filename */ file_t *file; /* Current distribution file */ command_t *c; /* Current command */ struct passwd *pwd; /* Pointer to user record */ struct group *grp; /* Pointer to group record */ struct utsname platform; /* Original platform data */ /* * Figure out the full product name... */ if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); if (Verbosity) printf("Creating Slackware %s pkg distribution...\n", prodfull); /* * Slackware uses the real machine type in its package names... */ if (uname(&platform)) { fprintf(stderr, "ERROR: Can't get platform information: %s\n", strerror(errno)); return (1); } snprintf(pkgname, sizeof(pkgname), "%s-%s-%s-%s.tgz", prodfull, dist->version, platform.machine, dist->release); /* * Make a copy of the distribution files... */ if (Verbosity) puts("Copying temporary distribution files..."); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) { /* * Check subpackage... */ if (file->subpackage != subpackage) continue; /* * Find the user and group IDs... */ pwd = getpwnam(file->user); grp = getgrnam(file->group); endpwent(); endgrent(); /* * Copy the file, make the directory, or make the symlink as needed... */ switch (tolower(file->type)) { case 'c': case 'f': snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("F %s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); break; case 'i': snprintf(filename, sizeof(filename), "%s/%s/etc/rc.d/%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("I %s -> %s...\n", file->src, filename); if (copy_file(filename, file->src, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0)) return (1); break; case 'd': snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("D %s...\n", filename); make_directory(filename, file->mode, pwd ? pwd->pw_uid : 0, grp ? grp->gr_gid : 0); break; case 'l': snprintf(filename, sizeof(filename), "%s/%s%s", directory, prodfull, file->dst); if (Verbosity > 1) printf("L %s -> %s...\n", file->src, filename); make_link(filename, file->src); break; } } /* * Write descriptions and post-install commands as needed... */ for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) break; if (i < dist->num_descriptions) { snprintf(filename, sizeof(filename), "%s/%s/install", directory, prodfull); make_directory(filename, 0755, 0, 0); strlcat(filename, "/slack-desc", sizeof(filename)); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "ERROR: Couldn't create Slackware description file \"%s\": %s\n", filename, strerror(errno)); return (1); } fprintf(fp, "%s: %s\n%s:\n", prodfull, dist->product, prodfull); for (; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) fprintf(fp, "%s: %s\n", prodfull, dist->descriptions[i].description); fprintf(fp, "%s:\n", prodfull); fprintf(fp, "%s: (Vendor: %s, Packager: %s)\n", prodfull, dist->vendor, dist->packager); fprintf(fp, "%s:\n", prodfull); fclose(fp); } for (i = 0, c = dist->commands; i < dist->num_commands; i++, c++) if (c->subpackage == subpackage) break; if (i < dist->num_commands) { snprintf(filename, sizeof(filename), "%s/%s/install", directory, prodfull); make_directory(filename, 0755, 0, 0); strlcat(filename, "/doinst.sh", sizeof(filename)); if (!(fp = fopen(filename, "w"))) { fprintf(stderr, "ERROR: Couldn't create post install script \"%s\": %s\n", filename, strerror(errno)); return (1); } fputs("#!/bin/sh\n", fp); for (i = 0, c = dist->commands; i < dist->num_commands; i++, c++) if (c->subpackage == subpackage) { switch (c->type) { case COMMAND_PRE_INSTALL: fputs("WARNING: Package contains pre-install commands which are not " "supported\n" " by the Slackware packager.\n", stderr); break; case COMMAND_POST_INSTALL: fprintf(fp, "%s\n", c->command); break; case COMMAND_PRE_REMOVE: fputs("WARNING: Package contains pre-removal commands which are not " "supported\n" " by the Slackware packager.\n", stderr); break; case COMMAND_POST_REMOVE: fputs("WARNING: Package contains post-removal commands which are not " "supported\n" " by the Slackware packager.\n", stderr); break; } } fclose(fp); } /* * Remove any existing package of the same name, then create the * package... */ snprintf(filename, sizeof(filename), "%s/%s", directory, pkgname); unlink(filename); if (Verbosity) puts("Building Slackware package..."); snprintf(filename, sizeof(filename), "%s/%s", directory, prodfull); if (run_command(filename, "makepkg --linkadd y --chown n ../%s", pkgname)) return (1); /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) puts("Removing temporary distribution files..."); unlink_directory(filename); } return (0); } jimjag-epm-84910c6/snprintf.c000066400000000000000000000167751521151356300160430ustar00rootroot00000000000000/* * snprintf functions for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2014 by Michael R Sweet * Copyright 1999-2005 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epmstring.h" #include #include #ifndef HAVE_VSNPRINTF /* * 'vsnprintf()' - Format a string into a fixed size buffer. */ int /* O - Number of bytes formatted */ epm_vsnprintf(char *buffer, /* O - Output buffer */ size_t bufsize, /* O - Size of output buffer */ const char *format, /* I - printf-style format string */ va_list ap) /* I - Pointer to additional arguments */ { char *bufptr, /* Pointer to position in buffer */ *bufend, /* Pointer to end of buffer */ sign, /* Sign of format width */ size, /* Size character (h, l, L) */ type; /* Format type character */ const char *bufformat; /* Start of format */ int width, /* Width of field */ prec; /* Number of characters of precision */ char tformat[100], /* Temporary format string for sprintf() */ temp[1024]; /* Buffer for formatted numbers */ char *s; /* Pointer to string */ int slen; /* Length of string */ /* * Loop through the format string, formatting as needed... */ bufptr = buffer; bufend = buffer + bufsize - 1; while (*format && bufptr < bufend) { if (*format == '%') { bufformat = format; format++; if (*format == '%') { *bufptr++ = *format++; continue; } else if (strchr(" -+#\'", *format)) sign = *format++; else sign = 0; width = 0; while (isdigit(*format)) width = width * 10 + *format++ - '0'; if (*format == '.') { format++; prec = 0; while (isdigit(*format)) prec = prec * 10 + *format++ - '0'; } else prec = -1; if (*format == 'l' && format[1] == 'l') { size = 'L'; format += 2; } else if (*format == 'h' || *format == 'l' || *format == 'L') size = *format++; if (!*format) break; type = *format++; switch (type) { case 'E': /* Floating point formats */ case 'G': case 'e': case 'f': case 'g': if ((format - bufformat + 1) > sizeof(tformat) || (width + 2) > sizeof(temp)) break; strlcpy(tformat, bufformat, format - bufformat + 1); sprintf(temp, tformat, va_arg(ap, double)); if ((bufptr + strlen(temp)) > bufend) { strncpy(bufptr, temp, bufend - bufptr); bufptr = bufend; break; } else { strcpy(bufptr, temp); bufptr += strlen(temp); } break; case 'B': /* Integer formats */ case 'X': case 'b': case 'd': case 'i': case 'o': case 'u': case 'x': if ((format - bufformat + 1) > sizeof(tformat) || (width + 2) > sizeof(temp)) break; strlcpy(tformat, bufformat, format - bufformat + 1); sprintf(temp, tformat, va_arg(ap, int)); if ((bufptr + strlen(temp)) > bufend) { strncpy(bufptr, temp, bufend - bufptr); bufptr = bufend; break; } else { strcpy(bufptr, temp); bufptr += strlen(temp); } break; case 'p': /* Pointer value */ if ((format - bufformat + 1) > sizeof(tformat) || (width + 2) > sizeof(temp)) break; strlcpy(tformat, bufformat, format - bufformat + 1); sprintf(temp, tformat, va_arg(ap, void *)); strlcpy(bufptr, temp, bufend - bufptr + 1); bufptr += strlen(bufptr); break; case 'c': /* Character or character array */ if (width <= 1) *bufptr++ = va_arg(ap, int); else { if ((bufptr + width) > bufend) width = bufend - bufptr; memcpy(bufptr, va_arg(ap, char *), width); bufptr += width; } break; case 's': /* String */ if ((s = va_arg(ap, char *)) == NULL) s = "(null)"; slen = strlen(s); if (slen > width && prec != width) width = slen; if ((bufptr + width) > bufend) width = bufend - bufptr; if (slen > width) slen = width; if (sign == '-') { strncpy(bufptr, s, slen); memset(bufptr + slen, ' ', width - slen); } else { memset(bufptr, ' ', width - slen); strncpy(bufptr + width - slen, s, slen); } bufptr += width; break; case 'n': /* Output number of chars so far */ if ((format - bufformat + 1) > sizeof(tformat) || (width + 2) > sizeof(temp)) break; strlcpy(tformat, bufformat, format - bufformat + 1); sprintf(temp, tformat, va_arg(ap, int)); strlcpy(bufptr, temp, bufend - bufptr + 1); bufptr += strlen(bufptr); break; } } else *bufptr++ = *format++; } /* * Nul-terminate the string and return the number of characters in it. */ *bufptr = '\0'; return (bufptr - buffer); } #endif /* !HAVE_VSNPRINT */ #ifndef HAVE_SNPRINTF /* * 'epm_snprintf()' - Format a string into a fixed size buffer. */ int /* O - Number of bytes formatted */ epm_snprintf(char *buffer, /* O - Output buffer */ size_t bufsize, /* O - Size of output buffer */ const char *format, /* I - printf-style format string */ ...) /* I - Additional arguments as needed */ { int bytes; /* Number of bytes formatted */ va_list ap; /* Pointer to additional arguments */ va_start(ap, format); bytes = vsnprintf(buffer, bufsize, format, ap); va_end(ap); return (bytes); } #endif /* !HAVE_SNPRINTF */ jimjag-epm-84910c6/string.c000066400000000000000000000102531521151356300154670ustar00rootroot00000000000000/* * String functions for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2014 by Michael R Sweet * Copyright 1999-2005 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epmstring.h" /* * 'epm_strdup()' - Duplicate a string. */ #ifndef HAVE_STRDUP char * /* O - New string pointer */ epm_strdup(const char *s) /* I - String to duplicate */ { char *t; /* New string pointer */ if (s == NULL) return (NULL); if ((t = malloc(strlen(s) + 1)) == NULL) return (NULL); return (strcpy(t, s)); } #endif /* !HAVE_STRDUP */ /* * 'epm_strcasecmp()' - Do a case-insensitive comparison. */ #ifndef HAVE_STRCASECMP int /* O - Result of comparison (-1, 0, or 1) */ epm_strcasecmp(const char *s, /* I - First string */ const char *t) /* I - Second string */ { while (*s != '\0' && *t != '\0') { if (tolower(*s) < tolower(*t)) return (-1); else if (tolower(*s) > tolower(*t)) return (1); s++; t++; } if (*s == '\0' && *t == '\0') return (0); else if (*s != '\0') return (1); else return (-1); } #endif /* !HAVE_STRCASECMP */ #ifndef HAVE_STRLCAT /* * 'epm_strlcat()' - Safely concatenate two strings. */ size_t /* O - Length of string */ epm_strlcat(char *dst, /* O - Destination string */ const char *src, /* I - Source string */ size_t size) /* I - Size of destination string buffer */ { size_t srclen; /* Length of source string */ size_t dstlen; /* Length of destination string */ /* * Figure out how much room is left... */ dstlen = strlen(dst); size -= dstlen + 1; if (!size) return (dstlen); /* No room, return immediately... */ /* * Figure out how much room is needed... */ srclen = strlen(src); /* * Copy the appropriate amount... */ if (srclen > size) srclen = size; memcpy(dst + dstlen, src, srclen); dst[dstlen + srclen] = '\0'; return (dstlen + srclen); } #endif /* !HAVE_STRLCAT */ #ifndef HAVE_STRLCPY /* * 'epm_strlcpy()' - Safely copy two strings. */ size_t /* O - Length of string */ epm_strlcpy(char *dst, /* O - Destination string */ const char *src, /* I - Source string */ size_t size) /* I - Size of destination string buffer */ { size_t srclen; /* Length of source string */ /* * Figure out how much room is needed... */ size--; srclen = strlen(src); /* * Copy the appropriate amount... */ if (srclen > size) srclen = size; memcpy(dst, src, srclen); dst[srclen] = '\0'; return (srclen); } #endif /* !HAVE_STRLCPY */ /* * 'epm_strncasecmp()' - Do a case-insensitive comparison on up to N chars. */ #ifndef HAVE_STRNCASECMP int /* O - Result of comparison (-1, 0, or 1) */ epm_strncasecmp(const char *s, /* I - First string */ const char *t, /* I - Second string */ size_t n) /* I - Maximum number of characters to compare */ { while (*s != '\0' && *t != '\0' && n > 0) { if (tolower(*s) < tolower(*t)) return (-1); else if (tolower(*s) > tolower(*t)) return (1); s++; t++; n--; } if (n == 0) return (0); else if (*s == '\0' && *t == '\0') return (0); else if (*s != '\0') return (1); else return (-1); } #endif /* !HAVE_STRNCASECMP */ jimjag-epm-84910c6/support.c000066400000000000000000000052331521151356300156770ustar00rootroot00000000000000/* * Support functions for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2014 by Michael R Sweet * Copyright 1999-2006 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * 'get_vernumber()' - Convert a version string to a number... */ int /* O - Version number */ get_vernumber(const char *version) /* I - Version string */ { int numbers[4], /* Raw version numbers */ nnumbers, /* Number of numbers in version */ temp, /* Temporary version number */ offset; /* Offset for last version number */ const char *ptr; /* Pointer into string */ /* * Loop through the version number string and construct a version number. */ memset(numbers, 0, sizeof(numbers)); for (ptr = version; *ptr && !isdigit(*ptr & 255); ptr++) ; /* Skip leading letters, periods, etc. */ for (offset = 0, temp = 0, nnumbers = 0; *ptr && !isspace(*ptr & 255); ptr++) if (isdigit(*ptr & 255)) temp = temp * 10 + *ptr - '0'; else { /* * Add each mini version number (m.n.p) and patch/pre stuff... */ if (nnumbers < 4) { numbers[nnumbers] = temp; nnumbers++; } temp = 0; if (*ptr == '.') offset = 0; else if (*ptr == 'p' || *ptr == '-') { if (strncmp(ptr, "pre", 3) == 0) { ptr += 2; offset = -20; } else offset = 0; nnumbers = 3; } else if (*ptr == 'b') { offset = -50; nnumbers = 3; } else { /* if (*ptr == 'a') */ offset = -100; nnumbers = 3; } } if (nnumbers < 4) numbers[nnumbers] = temp; /* * Compute the version number as MMmmPPpp + offset */ return (((numbers[0] * 100 + numbers[1]) * 100 + numbers[2]) * 100 + numbers[3] + offset); } jimjag-epm-84910c6/swinstall.c000066400000000000000000000533561521151356300162140ustar00rootroot00000000000000/* * HP-UX package gateway for the ESP Package Manager (EPM). * * Copyright © 2020 by Jim Jagielski * Copyright 1999-2017 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local functions... */ static void write_fileset(FILE *fp, dist_t *dist, const char *directory, const char *prodname, const char *subpackage); /* * 'make_swinstall()' - Make an HP-UX software distribution package. */ int /* O - 0 = success, 1 = fail */ make_swinstall(const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ struct utsname *platform) /* I - Platform information */ { int i, j; /* Looping vars */ FILE *fp; /* Spec/script file */ tarf_t *tarfile; /* .tardist file */ int linknum; /* Symlink number */ const char *vendor; /* Pointer into vendor name */ char vtag[65], /* Vendor tag */ *vtagptr; /* Pointer into vendor tag */ char name[1024]; /* Full product name */ char infoname[1024], /* Info filename */ preinstall[1024], /* preinstall script */ postinstall[1024], /* postinstall script */ preremove[1024], /* preremove script */ postremove[1024]; /* postremove script */ char filename[1024]; /* Destination filename */ file_t *file; /* Current distribution file */ command_t *c; /* Current command */ const char *runlevels; /* Run levels */ REF(platform); if (Verbosity) puts("Creating swinstall distribution..."); if (dist->release[0]) { if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s-%s", prodname, dist->version, dist->release, platname); else snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, dist->release); } else if (platname[0]) snprintf(name, sizeof(name), "%s-%s-%s", prodname, dist->version, platname); else snprintf(name, sizeof(name), "%s-%s", prodname, dist->version); /* * Write the preinstall script if needed... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL) break; if (i) { /* * Create the preinstall script... */ snprintf(preinstall, sizeof(preinstall), "%s/%s.preinst", directory, prodname); if (Verbosity) puts("Creating preinstall script..."); if ((fp = fopen(preinstall, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preinstall, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_INSTALL) fprintf(fp, "%s\n", c->command); fclose(fp); } else preinstall[0] = '\0'; /* * Write the postinstall script if needed... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL) break; if (!i) for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') break; if (i) { /* * Create the postinstall script... */ snprintf(postinstall, sizeof(postinstall), "%s/%s.postinst", directory, prodname); if (Verbosity) puts("Creating postinstall script..."); if ((fp = fopen(postinstall, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postinstall, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_INSTALL) fprintf(fp, "%s\n", c->command); for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') qprintf(fp, "/sbin/init.d/%s start\n", file->dst); fclose(fp); } else postinstall[0] = '\0'; /* * Write the preremove script if needed... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE) break; if (!i) for (i = dist->num_files, file = dist->files; i > 0; i--, file++) if (tolower(file->type) == 'i') break; if (i) { /* * Then create the remove script... */ if (Verbosity) puts("Creating preremove script..."); snprintf(preremove, sizeof(preremove), "%s/%s.prerm", directory, prodname); if ((fp = fopen(preremove, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", preremove, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (j = dist->num_files, file = dist->files; j > 0; j--, file++) if (tolower(file->type) == 'i') qprintf(fp, "/sbin/init.d/%s stop\n", file->dst); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_PRE_REMOVE) fprintf(fp, "%s\n", c->command); fclose(fp); } else preremove[0] = '\0'; /* * Write the postremove script if needed... */ for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE) break; if (i) { /* * Create the postremove script... */ snprintf(postremove, sizeof(postremove), "%s/%s.postrm", directory, prodname); if (Verbosity) puts("Creating postremove script..."); if ((fp = fopen(postremove, "w")) == NULL) { fprintf(stderr, "epm: Unable to create script file \"%s\": %s\n", postremove, strerror(errno)); return (1); } fchmod(fileno(fp), 0755); fputs("#!/bin/sh\n", fp); fputs("# " EPM_VERSION "\n", fp); for (i = dist->num_commands, c = dist->commands; i > 0; i--, c++) if (c->type == COMMAND_POST_REMOVE) fprintf(fp, "%s\n", c->command); fclose(fp); } else postremove[0] = '\0'; /* * Add symlinks for init scripts... */ for (i = 0; i < dist->num_files; i++) if (tolower(dist->files[i].type) == 'i') { /* * Make symlinks for all of the selected run levels... */ for (runlevels = get_runlevels(dist->files + i, "02"); isdigit(*runlevels & 255); runlevels++) { file = add_file(dist, dist->files[i].subpackage); file->type = 'l'; file->mode = 0; strlcpy(file->user, "root", sizeof(file->user)); strlcpy(file->group, "sys", sizeof(file->group)); snprintf(file->src, sizeof(file->src), "../init.d/%s", dist->files[i].dst); if (*runlevels == '0') snprintf(file->dst, sizeof(file->dst), "/sbin/rc0.d/K%02d0%s", get_stop(dist->files + i, 0), dist->files[i].dst); else snprintf(file->dst, sizeof(file->dst), "/sbin/rc%c.d/S%02d0%s", *runlevels, get_start(dist->files + i, 99), dist->files[i].dst); } /* * Then send the original file to /sbin/init.d... */ file = dist->files + i; snprintf(filename, sizeof(filename), "/sbin/init.d/%s", file->dst); strlcpy(file->dst, filename, sizeof(file->dst)); } /* * Create all symlinks... */ if (Verbosity) puts("Creating symlinks..."); for (i = dist->num_files, file = dist->files, linknum = 0; i > 0; i--, file++) if (tolower(file->type) == 'l') { snprintf(filename, sizeof(filename), "%s/%s.link%04d", directory, prodname, linknum); symlink(file->src, filename); linknum++; } /* * Write the description file(s) for swpackage... */ if (dist->num_descriptions > 0) { if (Verbosity) puts("Creating description file(s)..."); for (i = 0; i < dist->num_descriptions; i++) if (!dist->descriptions[i].subpackage) break; if (i < dist->num_descriptions) { snprintf(filename, sizeof(filename), "%s/%s.desc", directory, prodname); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create description file \"%s\": %s\n", filename, strerror(errno)); return (1); } for (; i < dist->num_descriptions; i++) if (!dist->descriptions[i].subpackage) fprintf(fp, "%s\n", dist->descriptions[i].description); fclose(fp); } for (i = 0; i < dist->num_subpackages; i++) { for (j = 0; j < dist->num_descriptions; j++) if (dist->descriptions[j].subpackage == dist->subpackages[i]) break; if (j < dist->num_descriptions) { snprintf(filename, sizeof(filename), "%s/%s-%s.desc", directory, prodname, dist->subpackages[i]); if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "epm: Unable to create description file \"%s\": %s\n", filename, strerror(errno)); return (1); } for (; j < dist->num_descriptions; j++) if (dist->descriptions[j].subpackage == dist->subpackages[i]) fprintf(fp, "%s\n", dist->descriptions[j].description); fclose(fp); } } } /* * Write the info file for swpackage... */ if (Verbosity) puts("Creating info file..."); snprintf(infoname, sizeof(infoname), "%s/%s.info", directory, prodname); if ((fp = fopen(infoname, "w")) == NULL) { fprintf(stderr, "epm: Unable to create info file \"%s\": %s\n", infoname, strerror(errno)); return (1); } /* * Figure out the vendor tag and write a vendor class... */ for (vendor = dist->vendor, vtagptr = vtag; *vendor; vendor++) if (isalnum(*vendor) && vtagptr < (vtag + sizeof(vtag) - 1)) *vtagptr++ = *vendor; *vtagptr = '\0'; fputs("vendor\n", fp); fprintf(fp, " tag %s\n", vtag); fprintf(fp, " description %s\n", dist->vendor); fprintf(fp, " title %s\n", dist->vendor); fputs("end\n", fp); /* * Then the product class... */ fputs("product\n", fp); fprintf(fp, " tag %s\n", prodname); fprintf(fp, " revision %s\n", dist->version); fprintf(fp, " title %s, %s\n", dist->product, dist->version); snprintf(filename, sizeof(filename), "%s/%s.desc", directory, prodname); if (!access(filename, 0)) fprintf(fp, " description < %s\n", filename); if (dist->license[0]) { if (strncmp(dist->license, "./", 2)) fprintf(fp, " copyright < %s\n", dist->license); else fprintf(fp, " copyright < %s\n", dist->license + 2); } if (dist->readme[0]) { if (strncmp(dist->readme, "./", 2)) fprintf(fp, " readme < %s\n", dist->readme); else fprintf(fp, " readme < %s\n", dist->readme + 2); } fprintf(fp, " vendor_tag %s\n", vtag); fputs(" is_locatable false\n", fp); if (dist->num_subpackages > 0) { /* * Write subproduct specifications... */ fputs(" subproduct\n", fp); fputs(" tag base\n", fp); fputs(" contents fs_base\n", fp); fprintf(fp, " revision %s\n", dist->version); for (i = 0; i < dist->num_descriptions; i++) if (!dist->descriptions[i].subpackage) { fprintf(fp, " title %s, %s\n", dist->descriptions[i].description, dist->version); break; } if (!access(filename, 0)) fprintf(fp, " description < %s\n", filename); fputs(" end\n", fp); for (i = 0; i < dist->num_subpackages; i++) { fputs(" subproduct\n", fp); fprintf(fp, " tag %s\n", dist->subpackages[i]); fprintf(fp, " contents fs_%s\n", dist->subpackages[i]); fprintf(fp, " revision %s\n", dist->version); for (j = 0; j < dist->num_descriptions; j++) if (dist->descriptions[j].subpackage == dist->subpackages[i]) { fprintf(fp, " title %s, %s\n", dist->descriptions[j].description, dist->version); break; } snprintf(filename, sizeof(filename), "%s/%s-%s.desc", directory, prodname, dist->subpackages[i]); if (!access(filename, 0)) fprintf(fp, " description < %s\n", filename); fputs(" end\n", fp); } } /* * Write filesets... */ write_fileset(fp, dist, directory, prodname, NULL); for (i = 0; i < dist->num_subpackages; i++) write_fileset(fp, dist, directory, prodname, dist->subpackages[i]); fputs("end\n", fp); fclose(fp); /* * Build the distributions from the spec file... */ if (Verbosity) puts("Building swinstall depot.gz distribution..."); snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); mkdir(filename, 0777); if (run_command(NULL, "/usr/sbin/swpackage %s-s %s " "-x target_type=tape " "-d '|" EPM_GZIP " -9 >%s/%s.depot.gz' %s", Verbosity == 0 ? "" : "-v ", infoname, directory, name, prodname)) return (1); if (Verbosity) puts("Building swinstall binary distribution..."); snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); mkdir(filename, 0777); if (run_command(NULL, "/usr/sbin/swpackage %s-s %s -d %s/%s " "-x write_remote_files=true %s", Verbosity == 0 ? "" : "-v ", infoname, directory, prodname, prodname)) return (1); /* * Tar and compress the distribution... */ if (Verbosity) puts("Creating depot.tgz file for distribution..."); snprintf(filename, sizeof(filename), "%s/%s.depot.tgz", directory, name); if ((tarfile = tar_open(filename, 1)) == NULL) return (1); snprintf(filename, sizeof(filename), "%s/%s", directory, prodname); if (tar_directory(tarfile, filename, prodname)) { tar_close(tarfile); return (1); } tar_close(tarfile); /* * Remove temporary files... */ if (!KeepFiles) { if (Verbosity) puts("Removing temporary distribution files..."); unlink(infoname); if (preinstall[0]) unlink(preinstall); if (postinstall[0]) unlink(postinstall); if (preremove[0]) unlink(preremove); if (postremove[0]) unlink(postremove); while (linknum > 0) { linknum--; snprintf(filename, sizeof(filename), "%s/%s.link%04d", directory, prodname, linknum); unlink(filename); } snprintf(filename, sizeof(filename), "%s/%s.desc", directory, prodname); unlink(filename); for (i = 0; i < dist->num_subpackages; i++) { snprintf(filename, sizeof(filename), "%s/%s-%s.desc", directory, prodname, dist->subpackages[i]); unlink(filename); } } return (0); } /* * 'write_fileset()' - Write a fileset specification for a subpackage. */ static void write_fileset(FILE *fp, /* I - File to write to */ dist_t *dist, /* I - Distribution */ const char *directory, /* I - Output directory */ const char *prodname, /* I - Product name */ const char *subpackage) /* I - Subpackage to write */ { int i; /* Looping var */ char filename[1024]; /* Temporary filename */ depend_t *d; /* Current dependency */ file_t *file; /* Current distribution file */ int linknum; /* Symlink number */ fputs(" fileset\n", fp); fprintf(fp, " tag fs_%s\n", subpackage ? subpackage : "base"); fprintf(fp, " revision %s\n", dist->version); for (i = 0; i < dist->num_descriptions; i++) if (dist->descriptions[i].subpackage == subpackage) { fprintf(fp, " title %s, %s\n", dist->descriptions[i].description, dist->version); break; } for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) if (d->type == DEPEND_REQUIRES && d->product[0] != '/' && d->subpackage == subpackage) break; if (i) { for (; i > 0; i--, d++) { if (d->type == DEPEND_REQUIRES && d->product[0] != '/' && d->subpackage == subpackage) { if (!strcmp(d->product, "_self")) fprintf(fp, " prerequisites %s", prodname); else fprintf(fp, " prerequisites %s", d->product); if (d->vernumber[0] == 0) { if (d->vernumber[1] < INT_MAX) fprintf(fp, ",r<=%s\n", d->version[1]); else putc('\n', fp); } else fprintf(fp, ",r>=%s,r<=%s\n", d->version[0], d->version[1]); } } } for (i = dist->num_depends, d = dist->depends; i > 0; i--, d++) if (d->type == DEPEND_REPLACES && d->product[0] != '/' && d->subpackage == subpackage) break; if (i) { for (; i > 0; i--, d++) { if (d->type == DEPEND_REPLACES && d->product[0] != '/' && d->subpackage == subpackage) { fprintf(fp, " ancestor %s", d->product); if (d->vernumber[0] == 0) { if (d->vernumber[1] < INT_MAX) fprintf(fp, ",r<=%s\n", d->version[1]); else putc('\n', fp); } else fprintf(fp, ",r>=%s,r<=%s\n", d->version[0], d->version[1]); } } } if (!subpackage) { /* * Write scripts... */ snprintf(filename, sizeof(filename), "%s/%s.preinst", directory, prodname); if (!access(filename, 0)) fprintf(fp, " preinstall %s\n", filename); snprintf(filename, sizeof(filename), "%s/%s.postinst", directory, prodname); if (!access(filename, 0)) fprintf(fp, " postinstall %s\n", filename); snprintf(filename, sizeof(filename), "%s/%s.prerm", directory, prodname); if (!access(filename, 0)) fprintf(fp, " preremove %s\n", filename); snprintf(filename, sizeof(filename), "%s/%s.postrm", directory, prodname); if (!access(filename, 0)) fprintf(fp, " postremove %s\n", filename); } for (i = dist->num_files, file = dist->files, linknum = 0; i > 0; i--, file++) { if (file->subpackage != subpackage) { if (tolower(file->type) == 'l') linknum++; continue; } switch (tolower(file->type)) { case 'd': qprintf(fp, " file -m %04o -o %s -g %s . %s\n", file->mode, file->user, file->group, file->dst); break; case 'c': qprintf(fp, " file -m %04o -o %s -g %s -v %s %s\n", file->mode, file->user, file->group, file->src, file->dst); break; case 'f': case 'i': qprintf(fp, " file -m %04o -o %s -g %s %s %s\n", file->mode, file->user, file->group, file->src, file->dst); break; case 'l': snprintf(filename, sizeof(filename), "%s/%s.link%04d", directory, prodname, linknum); linknum++; qprintf(fp, " file -o %s -g %s %s %s\n", file->user, file->group, filename, file->dst); break; } } fputs(" end\n", fp); } jimjag-epm-84910c6/tar.c000066400000000000000000000351601521151356300147530ustar00rootroot00000000000000/* * TAR file functions for the ESP Package Manager (EPM). * * Copyright 2020 by Jim Jagielski * Copyright 1999-2020 by Michael R Sweet * Copyright 1999-2010 by Easy Software Products. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Include necessary headers... */ #include "epm.h" /* * Local globals... */ static char last_pathname[1024] = ""; /* * 'tar_close()' - Close a tar file, padding as needed. */ int /* O - -1 on error, 0 on success */ tar_close(tarf_t *fp) /* I - File to write to */ { size_t blocks; /* Number of blocks to write */ int status; /* Return status */ char padding[TAR_BLOCKS * TAR_BLOCK]; /* Padding for tar blocks */ if (fp->blocks > 0) { /* * Zero the padding record... */ memset(padding, 0, sizeof(padding)); /* * Write a single 0 block to signal the end of the archive... */ if (fwrite(padding, TAR_BLOCK, 1, fp->file) < 1) return (-1); fp->blocks++; /* * Pad the tar files to TAR_BLOCKS blocks... This is bullshit of course, * but old versions of tar need it... */ status = 0; if ((blocks = fp->blocks % TAR_BLOCKS) > 0) { blocks = TAR_BLOCKS - blocks; if (fwrite(padding, TAR_BLOCK, blocks, fp->file) < blocks) status = -1; } else { /* * Sun tar needs at least 2 0 blocks... */ if (fwrite(padding, TAR_BLOCK, blocks, fp->file) < blocks) status = -1; } } else status = 0; /* * Close the file and free memory... */ if (fp->compressed) { if (pclose(fp->file)) status = -1; } else if (fclose(fp->file)) status = -1; free(fp); return (status); } /* * 'tar_directory()' - Archive a directory. */ int /* O - 0 on success, -1 on error */ tar_directory(tarf_t *tar, /* I - Tar file to write to */ const char *srcpath, /* I - Source directory */ const char *dstpath) /* I - Destination directory */ { DIR *dir; /* Directory */ DIRENT *dent; /* Directory entry */ char src[1024], /* Source file */ dst[1024], /* Destination file */ srclink[1024]; /* Symlink value */ struct stat srcinfo; /* Information on the source file */ /* * Range check input... */ if (tar == NULL || srcpath == NULL || dstpath == NULL) return (-1); /* * Try opening the source directory... */ if ((dir = opendir(srcpath)) == NULL) { fprintf(stderr, "epm: Unable to open directory \"%s\": %s\n", srcpath, strerror(errno)); return (-1); } /* * Read from the directory... */ while ((dent = readdir(dir)) != NULL) { /* * Skip "." and ".."... */ if (!strcmp(dent->d_name, ".") || !strcmp(dent->d_name, "..")) continue; /* * Get source file info... */ snprintf(src, sizeof(src), "%s/%s", srcpath, dent->d_name); if (dstpath[0]) snprintf(dst, sizeof(dst), "%s/%s", dstpath, dent->d_name); else strlcpy(dst, dent->d_name, sizeof(dst)); if (stat(src, &srcinfo)) { fprintf(stderr, "epm: Unable to stat \"%s\": %s\n", src, strerror(errno)); continue; } /* * Process accordingly... */ if (Verbosity) puts(dst); if (S_ISDIR(srcinfo.st_mode)) { /* * Directory... */ if (tar_header(tar, TAR_DIR, srcinfo.st_mode, 0, srcinfo.st_mtime, "root", "sys", dst, NULL)) goto fail; if (tar_directory(tar, src, dst)) goto fail; } else if (S_ISLNK(srcinfo.st_mode)) { /* * Symlink... */ if (readlink(src, srclink, sizeof(srclink)) < 0) goto fail; if (tar_header(tar, TAR_SYMLINK, srcinfo.st_mode, 0, srcinfo.st_mtime, "root", "sys", dst, srclink)) goto fail; } else { /* * Regular file... */ if (tar_header(tar, TAR_NORMAL, srcinfo.st_mode, srcinfo.st_size, srcinfo.st_mtime, "root", "sys", dst, NULL)) goto fail; if (tar_file(tar, src)) goto fail; } } closedir(dir); return (0); fail: closedir(dir); return (-1); } /* * 'tar_file()' - Write the contents of a file... */ int /* O - 0 on success, -1 on error */ tar_file(tarf_t *fp, /* I - Tar file to write to */ const char *filename) /* I - File to write */ { FILE *file; /* File to write */ size_t nbytes, /* Number of bytes read */ tbytes, /* Total bytes read/written */ fill; /* Number of fill bytes needed */ char buffer[8192]; /* Copy buffer */ /* * Try opening the file... */ if ((file = fopen(filename, "rb")) == NULL) { fprintf(stderr, "epm: Unable to open \"%s\": %s\n", filename, strerror(errno)); return (-1); } /* * Copy the file to the tar file... */ tbytes = 0; while ((nbytes = fread(buffer, 1, sizeof(buffer), file)) > 0) { /* * Zero fill the file to a 512 byte record as needed. */ if (nbytes < sizeof(buffer)) { fill = TAR_BLOCK - (nbytes & (TAR_BLOCK - 1)); if (fill < TAR_BLOCK) { memset(buffer + nbytes, 0, fill); nbytes += fill; } } /* * Write the buffer to the file... */ if (fwrite(buffer, 1, nbytes, fp->file) < nbytes) { fprintf(stderr, "epm: Unable to write file data for \"%s\": %s\n", last_pathname, strerror(errno)); fclose(file); return (-1); } tbytes += nbytes; fp->blocks += nbytes / TAR_BLOCK; } /* * Close the file and return... */ fclose(file); return (0); } /* * 'tar_header()' - Write a TAR header for the specified file... */ int /* O - 0 on success, -1 on error */ tar_header(tarf_t *fp, /* I - Tar file to write to */ int type, /* I - File type */ mode_t mode, /* I - File permissions */ off_t size, /* I - File size */ time_t mtime, /* I - File modification time */ const char *user, /* I - File owner */ const char *group, /* I - File group */ const char *pathname, /* I - File name */ const char *linkname) /* I - File link name (for links only) */ { tar_t record; /* TAR header record */ size_t pathlen; /* Length of pathname */ const char *pathsep; /* Path separator */ int i, /* Looping var... */ sum; /* Checksum */ unsigned char *sumptr; /* Pointer into header record */ struct passwd *pwd; /* Pointer to user record */ struct group *grp; /* Pointer to group record */ /* * Find the username and groupname IDs... */ pwd = getpwnam(user); grp = getgrnam(group); endpwent(); endgrent(); /* * Format the header... */ memset(&record, 0, sizeof(record)); pathlen = strlen(pathname); if ((pathlen < (sizeof(record.header.pathname) - 1) && type != TAR_DIR) || (pathlen < (sizeof(record.header.pathname) - 2) && type == TAR_DIR)) { /* * Pathname is short enough to fit in the initial pathname field... */ strlcpy(record.header.pathname, pathname, sizeof(record.header.pathname)); if (type == TAR_DIR && pathname[pathlen - 1] != '/') record.header.pathname[pathlen] = '/'; } else { /* * Copy directory information to prefix buffer and filename information * to pathname buffer. */ if ((pathsep = strrchr(pathname, '/')) == NULL) { /* * No directory info... */ fprintf(stderr, "epm: Pathname \"%s\" is too long for a tar file!\n", pathname); return (-1); } if ((pathsep - pathname) > (sizeof(record.header.prefix) - 1)) { /* * Directory name too long... */ fprintf(stderr, "epm: Pathname \"%s\" is too long for a tar file!\n", pathname); return (-1); } if ((pathlen - (pathsep - pathname)) > (sizeof(record.header.pathname) - 1)) { /* * Filename too long... */ fprintf(stderr, "epm: Pathname \"%s\" is too long for a tar file!\n", pathname); return (-1); } strlcpy(record.header.pathname, pathsep + 1, sizeof(record.header.pathname)); if (type == TAR_DIR && pathname[pathlen - 1] != '/') record.header.pathname[pathlen - (pathsep - pathname + 1)] = '/'; strlcpy(record.header.prefix, pathname, (size_t)(pathsep - pathname + 1)); } snprintf(record.header.mode, sizeof(record.header.mode), "%-6o ", (unsigned)mode); snprintf(record.header.uid, sizeof(record.header.uid), "%o ", pwd == NULL ? 0 : (unsigned)pwd->pw_uid); snprintf(record.header.gid, sizeof(record.header.gid), "%o ", grp == NULL ? 0 : (unsigned)grp->gr_gid); snprintf(record.header.size, sizeof(record.header.size), "%011o", (unsigned)size); snprintf(record.header.mtime, sizeof(record.header.mtime), "%011o", (unsigned)mtime); memset(&(record.header.chksum), ' ', sizeof(record.header.chksum)); record.header.linkflag = type; if (type == TAR_SYMLINK) strlcpy(record.header.linkname, linkname, sizeof(record.header.linkname)); strlcpy(record.header.magic, TAR_MAGIC, sizeof(record.header.magic)); memcpy(record.header.version, TAR_VERSION, 2); strlcpy(record.header.uname, user, sizeof(record.header.uname)); strlcpy(record.header.gname, group, sizeof(record.header.uname)); /* * Compute the checksum of the header... */ for (i = sizeof(record), sumptr = record.all, sum = 0; i > 0; i--) sum += *sumptr++; /* * Put the correct checksum in place and write the header... */ snprintf(record.header.chksum, sizeof(record.header.chksum), "%6o", sum); if (fwrite(&record, 1, sizeof(record), fp->file) < sizeof(record)) { static const char *const types[] = { "file", "link", "symbolic link", "character file", "block file", "directory", "named pipe", "contiguous file"}; fprintf(stderr, "epm: Error writing %s header for \"%s\": %s\n", types[type - '0'], pathname, strerror(errno)); return (-1); } strlcpy(last_pathname, pathname, sizeof(last_pathname)); fp->blocks++; return (0); } /* * 'tar_open()' - Open a TAR file for writing. */ tarf_t * /* O - New tar file */ tar_open(const char *filename, /* I - File to create */ int compress) /* I - Compress with gzip? */ { tarf_t *fp; /* New tar file */ char command[1024]; /* Compression command */ /* * Allocate memory for the tar file state... */ if ((fp = calloc(sizeof(tarf_t), 1)) == NULL) return (NULL); /* * Open the output file or pipe into gzip for compressed output... */ if (compress) { snprintf(command, sizeof(command), EPM_GZIP " > %s", filename); fp->file = popen(command, "w"); } else fp->file = fopen(filename, "wb"); /* * If we couldn't open the output file, abort... */ if (fp->file == NULL) { free(fp); return (NULL); } /* * Save the compression state and return... */ fp->compressed = compress; return (fp); } /* * 'tar_package()' - Archive a package file. */ int /* O - 0 on success, -1 on failure */ tar_package(tarf_t *tar, /* I - Tar file */ const char *ext, /* I - Package filename extension */ const char *prodname, /* I - Product short name */ const char *directory, /* I - Directory for distribution files */ const char *platname, /* I - Platform name */ dist_t *dist, /* I - Distribution information */ const char *subpackage) /* I - Subpackage */ { char prodfull[255], /* Full name of product */ name[1024], /* Full product name */ filename[1024]; /* File to archive */ struct stat filestat; /* File information */ /* * Figure out the full name of the distribution... */ if (subpackage) snprintf(prodfull, sizeof(prodfull), "%s-%s", prodname, subpackage); else strlcpy(prodfull, prodname, sizeof(prodfull)); /* * Then the subdirectory name... */ if (dist->release[0]) snprintf(name, sizeof(name), "%s-%s-%s", prodfull, dist->version, dist->release); else snprintf(name, sizeof(name), "%s-%s", prodfull, dist->version); if (platname[0]) { strlcat(name, "-", sizeof(name)); strlcat(name, platname, sizeof(name)); } strlcat(name, ".", sizeof(name)); strlcat(name, ext, sizeof(name)); /* * Find out more about the package file... */ snprintf(filename, sizeof(filename), "%s/%s", directory, name); if (stat(filename, &filestat)) { fprintf(stderr, "epm: Error reading package file \"%s\": %s\n", filename, strerror(errno)); return (-1); } /* * Write the header and the file... */ if (tar_header(tar, TAR_NORMAL, (mode_t)0644, filestat.st_size, filestat.st_mtime, "root", "root", name, NULL)) return (-1); return (tar_file(tar, filename)); } jimjag-epm-84910c6/uninst.cxx000066400000000000000000012431611521151356300160700ustar00rootroot00000000000000// generated by Fast Light User Interface Designer (fluid) version 1.0304 #include "uninst.h" Fl_Double_Window *UninstallWindow = (Fl_Double_Window *)0; static void cb_UninstallWindow(Fl_Double_Window *, void *) { if (CancelButton->active()) exit(0); } Fl_Box *Title[4] = {(Fl_Box *)0}; Fl_Wizard *Wizard = (Fl_Wizard *)0; Fl_Help_View *ReadmeFile = (Fl_Help_View *)0; Fl_Check_Browser *SoftwareList = (Fl_Check_Browser *)0; Fl_Box *SoftwareSize = (Fl_Box *)0; Fl_Button *RemoveAllButton = (Fl_Button *)0; static void cb_RemoveAllButton(Fl_Button *, void *) { SoftwareList->check_all(); list_cb(0, 0); } Fl_Button *RemoveNoneButton = (Fl_Button *)0; static void cb_RemoveNoneButton(Fl_Button *, void *) { SoftwareList->check_none(); list_cb(0, 0); } Fl_Browser *ConfirmList = (Fl_Browser *)0; Fl_Group *Pane[4] = {(Fl_Group *)0}; Fl_Progress *RemovePercent = (Fl_Progress *)0; Fl_Browser *RemoveLog = (Fl_Browser *)0; Fl_Box *WelcomeImage = (Fl_Box *)0; #include static const unsigned char idata_default[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 207, 28, 0, 255, 0, 0, 0, 255, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 28, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 208, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 39, 0, 0, 0, 29, 0, 0, 0, 17, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 29, 0, 255, 209, 28, 0, 255, 209, 28, 0, 255, 208, 28, 0, 255, 0, 0, 0, 255, 0, 0, 0, 69, 0, 0, 0, 51, 0, 0, 0, 29, 0, 0, 0, 12, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 210, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 30, 0, 255, 211, 29, 0, 255, 211, 30, 0, 255, 211, 30, 0, 255, 211, 29, 0, 255, 211, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 210, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 147, 0, 0, 0, 71, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 212, 30, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 212, 29, 0, 255, 211, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 30, 0, 255, 212, 29, 0, 255, 212, 30, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 212, 30, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 211, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 243, 0, 0, 0, 222, 0, 0, 0, 87, 0, 0, 0, 22, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 72, 0, 0, 0, 115, 0, 0, 0, 169, 0, 0, 0, 217, 0, 0, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 213, 30, 0, 255, 213, 30, 0, 255, 212, 29, 0, 255, 0, 0, 0, 255, 3, 3, 3, 255, 1, 1, 1, 255, 0, 0, 0, 245, 0, 0, 0, 163, 0, 0, 0, 27, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 66, 0, 0, 0, 110, 0, 0, 0, 163, 0, 0, 0, 212, 0, 0, 0, 246, 0, 0, 0, 245, 1, 1, 1, 239, 2, 2, 2, 248, 3, 3, 3, 255, 3, 3, 3, 255, 0, 0, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 214, 30, 0, 255, 0, 0, 0, 255, 4, 4, 4, 255, 4, 4, 4, 255, 3, 3, 3, 255, 1, 1, 1, 247, 0, 0, 0, 238, 0, 0, 0, 93, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 61, 0, 0, 0, 105, 0, 0, 0, 155, 0, 0, 0, 207, 0, 0, 0, 243, 0, 0, 0, 247, 1, 1, 1, 239, 2, 2, 2, 247, 3, 3, 3, 255, 4, 4, 4, 255, 5, 5, 5, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 0, 0, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 29, 0, 255, 215, 30, 0, 255, 215, 29, 0, 255, 215, 29, 0, 255, 215, 30, 0, 255, 215, 29, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 214, 29, 0, 255, 215, 30, 0, 255, 214, 29, 0, 255, 214, 29, 0, 255, 215, 30, 0, 255, 214, 29, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 0, 0, 0, 255, 5, 5, 5, 255, 5, 5, 5, 255, 6, 6, 6, 255, 5, 5, 5, 255, 4, 4, 4, 255, 0, 0, 0, 243, 0, 0, 0, 194, 0, 0, 0, 43, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 56, 0, 0, 0, 99, 0, 0, 0, 149, 0, 0, 0, 201, 0, 0, 0, 239, 0, 0, 0, 248, 2, 2, 2, 239, 3, 3, 3, 245, 6, 6, 6, 255, 8, 8, 8, 255, 9, 9, 9, 255, 11, 11, 11, 255, 10, 10, 10, 255, 10, 10, 10, 255, 11, 11, 11, 255, 10, 10, 10, 255, 11, 11, 11, 255, 11, 11, 11, 255, 10, 10, 10, 255, 11, 11, 11, 255, 10, 10, 10, 255, 10, 10, 10, 255, 0, 0, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 31, 0, 255, 216, 30, 0, 255, 216, 31, 0, 255, 216, 31, 0, 255, 215, 30, 0, 255, 216, 31, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 215, 30, 0, 255, 0, 0, 0, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 5, 5, 5, 255, 3, 3, 3, 251, 0, 0, 0, 245, 0, 0, 0, 126, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 50, 0, 0, 0, 94, 0, 0, 0, 141, 0, 0, 0, 195, 0, 0, 0, 236, 0, 0, 0, 249, 2, 2, 2, 240, 4, 4, 4, 243, 7, 7, 7, 255, 9, 9, 9, 255, 11, 11, 11, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 12, 12, 12, 255, 12, 12, 12, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 13, 13, 13, 255, 0, 0, 0, 255, 217, 31, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 31, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 31, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 217, 30, 0, 255, 216, 30, 0, 255, 216, 30, 0, 255, 217, 31, 0, 255, 0, 0, 0, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 8, 8, 8, 255, 6, 6, 6, 255, 2, 2, 2, 243, 0, 0, 0, 221, 0, 0, 0, 66, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 45, 0, 0, 0, 88, 0, 0, 0, 134, 1, 1, 1, 190, 0, 0, 0, 231, 0, 0, 0, 250, 2, 2, 2, 240, 5, 5, 5, 242, 8, 8, 8, 253, 11, 11, 11, 255, 14, 14, 14, 255, 16, 16, 16, 255, 17, 17, 17, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 18, 18, 18, 255, 0, 0, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 219, 31, 0, 255, 218, 30, 0, 255, 218, 30, 0, 255, 218, 31, 0, 255, 218, 30, 0, 255, 218, 31, 0, 255, 218, 31, 0, 255, 218, 30, 0, 255, 0, 0, 0, 255, 11, 11, 11, 255, 11, 11, 11, 255, 10, 10, 10, 255, 11, 11, 11, 255, 10, 10, 10, 255, 10, 10, 10, 255, 10, 10, 10, 255, 10, 10, 10, 255, 10, 10, 10, 255, 6, 6, 6, 255, 0, 0, 0, 245, 0, 0, 0, 161, 0, 0, 0, 25, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 244, 1, 1, 1, 243, 5, 5, 5, 241, 10, 10, 10, 252, 13, 13, 13, 255, 16, 16, 16, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 0, 0, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 30, 0, 255, 219, 31, 0, 255, 219, 31, 0, 255, 220, 31, 0, 255, 0, 0, 0, 255, 12, 12, 12, 255, 12, 12, 12, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 11, 11, 11, 255, 5, 5, 5, 247, 0, 0, 0, 238, 0, 0, 0, 93, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 10, 10, 10, 250, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 22, 22, 22, 255, 0, 0, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 30, 0, 255, 220, 31, 0, 255, 215, 29, 0, 255, 110, 15, 0, 255, 108, 15, 0, 255, 108, 14, 0, 255, 108, 15, 0, 255, 108, 15, 0, 255, 142, 19, 0, 255, 220, 31, 0, 255, 220, 30, 0, 255, 220, 30, 0, 255, 220, 31, 0, 255, 220, 30, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 221, 31, 0, 255, 220, 31, 0, 255, 221, 31, 0, 255, 221, 31, 0, 255, 220, 31, 0, 255, 221, 31, 0, 255, 220, 31, 0, 255, 220, 31, 0, 255, 220, 30, 0, 255, 0, 0, 0, 255, 16, 16, 16, 255, 16, 16, 16, 255, 15, 15, 15, 255, 16, 16, 16, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 15, 15, 15, 255, 11, 11, 11, 255, 2, 2, 2, 243, 0, 0, 0, 194, 0, 0, 0, 43, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 40, 1, 1, 1, 246, 24, 24, 24, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 0, 0, 0, 255, 222, 32, 0, 255, 222, 32, 0, 255, 221, 31, 0, 255, 222, 32, 0, 255, 221, 31, 0, 255, 221, 31, 0, 255, 222, 31, 0, 255, 221, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 156, 21, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 13, 2, 0, 255, 215, 30, 0, 255, 222, 32, 0, 255, 222, 32, 0, 255, 222, 31, 0, 255, 222, 32, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 0, 0, 0, 255, 17, 17, 17, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 18, 18, 18, 255, 17, 17, 17, 255, 9, 9, 9, 251, 0, 0, 0, 245, 0, 0, 0, 126, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 1, 1, 1, 185, 16, 16, 16, 253, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 0, 0, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 78, 10, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 151, 21, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 223, 32, 0, 255, 222, 31, 0, 255, 222, 31, 0, 255, 223, 31, 0, 255, 0, 0, 0, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 17, 17, 17, 255, 4, 4, 4, 243, 0, 0, 0, 221, 0, 0, 0, 65, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 71, 2, 2, 2, 244, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 33, 33, 33, 255, 32, 32, 32, 255, 33, 33, 33, 255, 33, 33, 33, 255, 32, 32, 32, 255, 33, 33, 33, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 0, 0, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 213, 29, 0, 255, 9, 1, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 73, 10, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 223, 31, 0, 255, 223, 31, 0, 255, 224, 32, 0, 255, 0, 0, 0, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 22, 22, 22, 255, 14, 14, 14, 255, 1, 1, 1, 245, 0, 0, 0, 161, 0, 0, 0, 24, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 23, 1, 1, 1, 207, 22, 22, 22, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 0, 0, 0, 255, 224, 31, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 225, 32, 0, 255, 224, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 224, 31, 0, 255, 146, 20, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 70, 9, 0, 255, 12, 1, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 7, 0, 0, 255, 211, 30, 0, 255, 224, 32, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 31, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 31, 0, 255, 224, 32, 0, 255, 224, 32, 0, 255, 225, 32, 0, 255, 224, 32, 0, 255, 225, 32, 0, 255, 225, 32, 0, 255, 224, 32, 0, 255, 0, 0, 0, 255, 23, 23, 23, 255, 23, 23, 23, 255, 24, 24, 24, 255, 23, 23, 23, 255, 24, 24, 24, 255, 24, 24, 24, 255, 23, 23, 23, 255, 24, 24, 24, 255, 23, 23, 23, 255, 23, 23, 23, 255, 24, 24, 24, 255, 23, 23, 23, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 22, 22, 22, 255, 9, 9, 9, 247, 1, 1, 1, 238, 0, 0, 0, 93, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 95, 5, 5, 5, 242, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 0, 0, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 31, 0, 255, 226, 32, 0, 255, 226, 31, 0, 255, 226, 31, 0, 255, 226, 32, 0, 255, 67, 9, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 139, 19, 0, 255, 71, 10, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 140, 19, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 0, 0, 0, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 20, 20, 20, 255, 3, 3, 3, 243, 1, 1, 1, 194, 0, 0, 0, 43, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 28, 1, 1, 1, 226, 29, 29, 29, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 0, 0, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 33, 0, 255, 227, 32, 0, 255, 227, 33, 0, 255, 227, 33, 0, 255, 227, 32, 0, 255, 227, 33, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 210, 29, 0, 255, 4, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 205, 28, 0, 255, 142, 20, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 61, 8, 0, 255, 227, 32, 0, 255, 226, 32, 0, 255, 227, 32, 0, 255, 226, 32, 0, 255, 226, 32, 0, 255, 227, 32, 0, 255, 226, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 226, 32, 0, 255, 0, 0, 0, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 28, 28, 28, 255, 27, 27, 27, 255, 14, 14, 14, 251, 1, 1, 1, 245, 0, 0, 0, 126, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 112, 11, 11, 11, 242, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 0, 0, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 228, 32, 0, 255, 227, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 33, 0, 255, 228, 32, 0, 255, 228, 33, 0, 255, 228, 33, 0, 255, 227, 32, 0, 255, 228, 33, 0, 255, 227, 32, 0, 255, 227, 32, 0, 255, 135, 19, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 46, 6, 0, 255, 228, 32, 0, 255, 210, 30, 0, 255, 2, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 2, 0, 0, 255, 206, 28, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 32, 0, 255, 228, 33, 0, 255, 228, 32, 0, 255, 228, 33, 0, 255, 228, 33, 0, 255, 228, 32, 0, 255, 0, 0, 0, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 26, 26, 26, 255, 7, 7, 7, 243, 1, 1, 1, 221, 0, 0, 0, 65, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 11, 0, 0, 0, 33, 1, 1, 1, 238, 37, 37, 37, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 0, 0, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 33, 0, 255, 229, 32, 0, 255, 229, 33, 0, 255, 229, 33, 0, 255, 230, 33, 0, 255, 229, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 55, 7, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 116, 16, 0, 255, 229, 32, 0, 255, 230, 33, 0, 255, 55, 8, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 129, 18, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 230, 33, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 229, 32, 0, 255, 0, 0, 0, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 21, 21, 21, 255, 2, 2, 2, 245, 2, 2, 2, 161, 0, 0, 0, 24, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 19, 0, 0, 0, 133, 16, 16, 16, 245, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 0, 0, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 231, 33, 0, 255, 230, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 230, 32, 0, 255, 231, 33, 0, 255, 230, 32, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 203, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 186, 26, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 127, 18, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 48, 6, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 230, 32, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 230, 32, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 230, 33, 0, 255, 0, 0, 0, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 32, 32, 32, 255, 13, 13, 13, 247, 1, 1, 1, 238, 0, 0, 0, 93, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 42, 1, 1, 1, 245, 45, 45, 45, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 0, 0, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 32, 0, 255, 231, 33, 0, 255, 231, 32, 0, 255, 231, 32, 0, 255, 231, 33, 0, 255, 231, 32, 0, 255, 231, 33, 0, 255, 125, 17, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 27, 3, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 199, 28, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 198, 28, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 231, 33, 0, 255, 0, 0, 0, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 28, 28, 28, 255, 4, 4, 4, 243, 1, 1, 1, 194, 0, 0, 0, 43, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 21, 2, 2, 2, 154, 23, 23, 23, 248, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 0, 0, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 43, 6, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 98, 13, 0, 255, 233, 33, 0, 255, 232, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 40, 5, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 117, 16, 0, 255, 233, 34, 0, 255, 232, 33, 0, 255, 232, 33, 0, 255, 233, 33, 0, 255, 232, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 233, 34, 0, 255, 233, 34, 0, 255, 233, 33, 0, 255, 0, 0, 0, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 16, 16, 16, 251, 0, 0, 0, 239, 0, 0, 0, 28, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13, 0, 0, 0, 54, 2, 2, 2, 246, 52, 52, 52, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 0, 0, 0, 255, 234, 33, 0, 255, 234, 33, 0, 255, 233, 33, 0, 255, 234, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 196, 28, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 170, 24, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 112, 15, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 35, 5, 0, 255, 234, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 234, 34, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 233, 33, 0, 255, 0, 0, 0, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 39, 39, 39, 255, 7, 7, 7, 243, 0, 0, 0, 130, 0, 0, 0, 39, 0, 0, 0, 23, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 23, 3, 3, 3, 175, 29, 29, 29, 252, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 0, 0, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 234, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 234, 33, 0, 255, 235, 34, 0, 255, 113, 16, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 19, 2, 0, 255, 21, 3, 0, 255, 21, 3, 0, 255, 21, 3, 0, 255, 21, 3, 0, 255, 13, 1, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 188, 26, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 235, 34, 0, 255, 234, 34, 0, 255, 234, 34, 0, 255, 234, 33, 0, 255, 234, 34, 0, 255, 234, 33, 0, 255, 234, 33, 0, 255, 235, 34, 0, 255, 0, 0, 0, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 44, 44, 44, 255, 24, 24, 24, 252, 1, 1, 1, 209, 0, 0, 0, 84, 0, 0, 0, 62, 0, 0, 0, 39, 0, 0, 0, 19, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 14, 0, 0, 0, 69, 3, 3, 3, 245, 59, 59, 59, 255, 60, 60, 60, 255, 60, 60, 60, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 0, 0, 0, 255, 235, 33, 0, 255, 235, 33, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 236, 34, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 235, 33, 0, 255, 235, 34, 0, 255, 235, 33, 0, 255, 32, 4, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 105, 15, 0, 255, 236, 34, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 236, 34, 0, 255, 235, 33, 0, 255, 235, 33, 0, 255, 235, 34, 0, 255, 235, 33, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 235, 34, 0, 255, 0, 0, 0, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 38, 38, 38, 255, 1, 1, 1, 244, 0, 0, 0, 120, 0, 0, 0, 101, 0, 0, 0, 78, 0, 0, 0, 50, 0, 0, 0, 25, 0, 0, 0, 9, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 25, 4, 4, 4, 198, 38, 38, 38, 254, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 0, 0, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 186, 26, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 25, 3, 0, 255, 235, 33, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 237, 34, 0, 255, 0, 0, 0, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 9, 9, 9, 243, 0, 0, 0, 151, 0, 0, 0, 119, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 50, 0, 0, 0, 24, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 87, 7, 7, 7, 243, 63, 63, 63, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 65, 65, 255, 64, 64, 64, 255, 64, 65, 65, 255, 64, 65, 65, 255, 0, 0, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 35, 0, 255, 237, 34, 0, 255, 103, 15, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 22, 3, 0, 255, 17, 2, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 177, 25, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 35, 0, 255, 238, 34, 0, 255, 238, 35, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 237, 34, 0, 255, 0, 0, 0, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 48, 48, 48, 255, 49, 49, 49, 255, 26, 26, 26, 252, 2, 2, 2, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 96, 0, 0, 0, 69, 0, 0, 0, 40, 0, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 26, 4, 4, 4, 217, 47, 47, 47, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 65, 65, 65, 255, 50, 50, 50, 255, 32, 32, 32, 253, 12, 12, 12, 252, 0, 0, 0, 255, 239, 35, 0, 255, 239, 35, 0, 255, 238, 34, 0, 255, 239, 35, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 236, 34, 0, 255, 22, 3, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 56, 8, 0, 255, 239, 34, 0, 255, 239, 34, 0, 255, 239, 35, 0, 255, 239, 34, 0, 255, 239, 35, 0, 255, 239, 35, 0, 255, 239, 35, 0, 255, 221, 32, 0, 255, 2, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 92, 13, 0, 255, 239, 34, 0, 255, 238, 34, 0, 255, 239, 34, 0, 255, 238, 34, 0, 255, 238, 34, 0, 255, 239, 35, 0, 255, 238, 34, 0, 255, 239, 35, 0, 255, 239, 35, 0, 255, 238, 34, 0, 255, 0, 0, 0, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 43, 43, 43, 255, 2, 2, 2, 244, 0, 0, 0, 127, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 17, 0, 0, 0, 104, 14, 14, 14, 242, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 67, 67, 67, 255, 50, 50, 50, 255, 33, 33, 33, 253, 12, 12, 12, 252, 1, 1, 1, 254, 4, 4, 4, 252, 2, 2, 2, 253, 3, 3, 3, 255, 0, 0, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 240, 34, 0, 255, 240, 34, 0, 255, 176, 25, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 130, 18, 0, 255, 240, 34, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 240, 35, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 57, 8, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 15, 2, 0, 255, 233, 33, 0, 255, 241, 35, 0, 255, 240, 34, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 240, 34, 0, 255, 241, 35, 0, 255, 240, 34, 0, 255, 240, 34, 0, 255, 240, 35, 0, 255, 0, 0, 0, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 51, 51, 51, 255, 10, 10, 10, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 31, 3, 3, 3, 233, 56, 56, 56, 255, 73, 73, 73, 255, 72, 72, 72, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 70, 70, 70, 255, 53, 53, 53, 255, 34, 34, 34, 253, 12, 12, 12, 252, 1, 1, 1, 254, 4, 4, 4, 252, 2, 2, 2, 253, 5, 5, 5, 255, 7, 7, 7, 255, 9, 9, 9, 255, 9, 9, 9, 255, 10, 10, 10, 255, 0, 0, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 34, 0, 255, 241, 35, 0, 255, 241, 34, 0, 255, 241, 34, 0, 255, 241, 35, 0, 255, 241, 34, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 91, 13, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 204, 29, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 131, 19, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 165, 24, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 0, 0, 0, 255, 54, 54, 54, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 30, 30, 30, 252, 2, 2, 2, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 241, 0, 0, 0, 223, 0, 0, 0, 173, 0, 0, 0, 115, 0, 0, 0, 67, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 19, 0, 0, 0, 123, 21, 21, 21, 243, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 71, 71, 71, 255, 54, 54, 54, 255, 35, 35, 35, 253, 13, 13, 13, 252, 1, 1, 1, 254, 4, 4, 4, 252, 3, 3, 3, 253, 5, 5, 5, 255, 9, 9, 9, 255, 11, 11, 11, 255, 11, 11, 11, 255, 11, 11, 11, 255, 11, 11, 11, 255, 12, 12, 12, 255, 11, 11, 11, 255, 11, 11, 11, 255, 0, 0, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 234, 33, 0, 255, 14, 2, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 36, 5, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 241, 35, 0, 255, 242, 35, 0, 255, 241, 35, 0, 255, 241, 35, 0, 255, 242, 35, 0, 255, 241, 35, 0, 255, 205, 29, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 79, 11, 0, 255, 242, 35, 0, 255, 241, 34, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 0, 0, 0, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 47, 47, 47, 255, 2, 2, 2, 244, 0, 0, 0, 127, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 62, 0, 0, 0, 247, 0, 0, 0, 255, 1, 1, 1, 248, 0, 0, 0, 239, 0, 0, 0, 248, 0, 0, 0, 236, 0, 0, 0, 192, 0, 0, 0, 133, 0, 0, 0, 83, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 38, 2, 2, 2, 242, 66, 66, 66, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 73, 73, 73, 255, 56, 56, 56, 255, 36, 36, 36, 253, 13, 13, 13, 252, 1, 1, 1, 254, 4, 4, 4, 252, 3, 3, 3, 253, 6, 6, 6, 255, 11, 11, 11, 255, 13, 13, 13, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 0, 0, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 242, 35, 0, 255, 243, 35, 0, 255, 242, 35, 0, 255, 164, 23, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 110, 15, 0, 255, 242, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 36, 0, 255, 243, 35, 0, 255, 243, 36, 0, 255, 37, 5, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 7, 1, 0, 255, 228, 33, 0, 255, 243, 35, 0, 255, 242, 35, 0, 255, 242, 35, 0, 255, 243, 35, 0, 255, 242, 35, 0, 255, 243, 35, 0, 255, 243, 35, 0, 255, 243, 36, 0, 255, 0, 0, 0, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 12, 12, 12, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 63, 0, 0, 0, 241, 2, 2, 2, 254, 5, 5, 5, 255, 3, 3, 3, 255, 3, 3, 3, 255, 2, 2, 2, 255, 1, 1, 1, 252, 1, 1, 1, 240, 0, 0, 0, 244, 0, 0, 0, 246, 0, 0, 0, 209, 0, 0, 0, 154, 0, 0, 0, 107, 0, 0, 0, 164, 28, 28, 28, 248, 57, 57, 57, 255, 37, 37, 37, 253, 14, 14, 14, 252, 1, 1, 1, 254, 5, 5, 5, 252, 4, 4, 4, 253, 8, 8, 8, 255, 15, 15, 15, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 0, 0, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 36, 0, 255, 244, 35, 0, 255, 244, 36, 0, 255, 244, 36, 0, 255, 244, 35, 0, 255, 244, 36, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 245, 36, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 244, 35, 0, 255, 0, 0, 0, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 60, 60, 60, 255, 59, 59, 59, 255, 60, 60, 60, 255, 60, 60, 60, 255, 59, 59, 59, 255, 60, 60, 60, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 32, 32, 32, 252, 2, 2, 2, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 21, 0, 0, 0, 70, 0, 0, 0, 239, 3, 3, 3, 253, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 6, 6, 6, 255, 5, 5, 5, 255, 4, 4, 4, 255, 3, 3, 3, 255, 2, 2, 2, 243, 0, 0, 0, 242, 0, 0, 0, 254, 2, 2, 2, 253, 4, 4, 4, 253, 9, 9, 9, 255, 16, 16, 16, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 18, 18, 18, 255, 0, 0, 0, 255, 245, 35, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 35, 0, 255, 245, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 245, 36, 0, 255, 0, 0, 0, 255, 38, 38, 38, 253, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 52, 52, 52, 255, 2, 2, 2, 244, 0, 0, 0, 128, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 20, 0, 0, 0, 37, 0, 0, 0, 80, 0, 0, 0, 236, 5, 5, 5, 252, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 7, 7, 7, 255, 0, 0, 0, 255, 3, 3, 3, 255, 18, 18, 18, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 0, 0, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 246, 35, 0, 255, 246, 35, 0, 255, 246, 36, 0, 255, 0, 0, 0, 255, 2, 2, 2, 253, 21, 21, 21, 251, 59, 59, 59, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 13, 13, 13, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 28, 0, 0, 0, 48, 0, 0, 0, 85, 0, 0, 0, 233, 6, 6, 6, 251, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 13, 13, 13, 255, 12, 12, 12, 255, 13, 13, 13, 255, 11, 11, 11, 255, 2, 2, 2, 255, 1, 1, 1, 255, 17, 17, 17, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 22, 22, 22, 255, 0, 0, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 247, 36, 0, 255, 0, 0, 0, 255, 15, 15, 15, 255, 3, 3, 3, 251, 7, 7, 7, 253, 54, 54, 54, 255, 64, 64, 64, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 35, 35, 35, 252, 2, 2, 2, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 16, 0, 0, 0, 31, 0, 0, 0, 52, 0, 0, 0, 87, 0, 0, 0, 228, 8, 8, 8, 250, 17, 17, 17, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 15, 15, 15, 255, 7, 7, 7, 255, 0, 0, 0, 255, 14, 14, 14, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 22, 22, 22, 255, 23, 23, 23, 255, 22, 22, 22, 255, 0, 0, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 249, 37, 0, 255, 248, 36, 0, 255, 248, 36, 0, 255, 249, 36, 0, 255, 0, 0, 0, 255, 18, 18, 18, 255, 18, 18, 18, 255, 6, 6, 6, 253, 2, 2, 2, 254, 41, 41, 41, 253, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 66, 66, 66, 255, 56, 56, 56, 255, 2, 2, 2, 244, 0, 0, 0, 128, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 16, 0, 0, 0, 32, 0, 0, 0, 53, 0, 0, 0, 87, 0, 0, 0, 223, 9, 9, 9, 249, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 13, 13, 13, 255, 0, 0, 0, 255, 11, 11, 11, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 0, 0, 0, 255, 249, 37, 0, 255, 249, 37, 0, 255, 250, 37, 0, 255, 249, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 37, 0, 255, 249, 36, 0, 255, 249, 37, 0, 255, 249, 37, 0, 255, 250, 37, 0, 255, 249, 37, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 249, 36, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 249, 36, 0, 255, 0, 0, 0, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 13, 13, 13, 255, 3, 3, 3, 253, 23, 23, 23, 251, 65, 65, 65, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 14, 14, 14, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 15, 0, 0, 0, 31, 0, 0, 0, 52, 0, 0, 0, 84, 1, 1, 1, 217, 9, 9, 9, 248, 22, 22, 22, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 23, 23, 23, 255, 18, 18, 18, 255, 2, 2, 2, 255, 6, 6, 6, 255, 25, 25, 25, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 28, 28, 28, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 0, 0, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 251, 37, 0, 255, 250, 37, 0, 255, 251, 37, 0, 255, 251, 37, 0, 255, 250, 36, 0, 255, 251, 37, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 37, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 250, 36, 0, 255, 0, 0, 0, 255, 21, 21, 21, 255, 21, 21, 21, 255, 20, 20, 20, 255, 21, 21, 21, 255, 18, 18, 18, 255, 4, 4, 4, 251, 8, 8, 8, 253, 58, 58, 58, 255, 69, 69, 69, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 70, 70, 70, 255, 70, 70, 70, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 38, 38, 38, 252, 4, 4, 4, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 14, 0, 0, 0, 30, 0, 0, 0, 51, 0, 0, 0, 81, 1, 1, 1, 210, 10, 10, 10, 247, 29, 29, 29, 255, 29, 29, 29, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 26, 26, 26, 255, 6, 6, 6, 255, 2, 2, 2, 255, 24, 24, 24, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 0, 0, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 0, 0, 0, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 8, 8, 8, 253, 2, 2, 2, 254, 44, 44, 44, 253, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 71, 71, 71, 255, 60, 60, 60, 255, 2, 2, 2, 244, 0, 0, 0, 128, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 29, 0, 0, 0, 50, 0, 0, 0, 78, 1, 1, 1, 204, 10, 10, 10, 246, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 33, 33, 33, 255, 32, 32, 32, 255, 33, 33, 33, 255, 33, 33, 33, 255, 31, 31, 31, 255, 14, 14, 14, 255, 1, 1, 1, 255, 19, 19, 19, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 0, 0, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 252, 37, 0, 255, 0, 0, 0, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 24, 24, 24, 255, 25, 25, 25, 255, 16, 16, 16, 255, 3, 3, 3, 253, 24, 24, 24, 251, 69, 69, 69, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 15, 15, 15, 243, 2, 2, 2, 151, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 14, 0, 0, 0, 28, 0, 0, 0, 49, 0, 0, 0, 76, 1, 1, 1, 198, 9, 9, 9, 245, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 22, 22, 22, 255, 1, 1, 1, 255, 13, 13, 13, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 0, 0, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 254, 38, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 253, 37, 0, 255, 254, 38, 0, 255, 254, 38, 0, 255, 254, 37, 0, 255, 254, 38, 0, 255, 254, 37, 0, 255, 254, 37, 0, 255, 253, 37, 0, 255, 254, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 253, 37, 0, 255, 254, 37, 0, 255, 253, 37, 0, 255, 254, 37, 0, 255, 254, 37, 0, 255, 254, 38, 0, 255, 0, 0, 0, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 23, 23, 23, 255, 5, 5, 5, 251, 9, 9, 9, 253, 61, 61, 61, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 74, 74, 74, 255, 41, 41, 41, 252, 4, 4, 4, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 28, 0, 0, 0, 48, 0, 0, 0, 74, 1, 1, 1, 189, 9, 9, 9, 244, 37, 37, 37, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 30, 30, 30, 255, 3, 3, 3, 255, 7, 7, 7, 255, 32, 32, 32, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 34, 34, 34, 255, 0, 0, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 254, 37, 0, 255, 255, 37, 0, 255, 254, 37, 0, 255, 254, 37, 0, 255, 255, 37, 0, 255, 254, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 0, 0, 0, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 10, 10, 10, 253, 3, 3, 3, 254, 47, 47, 47, 253, 75, 75, 75, 255, 76, 76, 76, 255, 75, 75, 75, 255, 65, 65, 65, 255, 2, 2, 2, 244, 0, 0, 0, 128, 0, 0, 0, 118, 0, 0, 0, 104, 0, 0, 0, 80, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 27, 0, 0, 0, 47, 0, 0, 0, 72, 1, 1, 1, 182, 9, 9, 9, 244, 39, 39, 39, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 38, 38, 38, 255, 9, 9, 9, 255, 3, 3, 3, 255, 30, 30, 30, 255, 36, 36, 36, 255, 37, 37, 37, 255, 36, 36, 36, 255, 37, 37, 37, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 0, 0, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 0, 0, 0, 255, 29, 29, 29, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 29, 29, 29, 255, 28, 28, 28, 255, 20, 20, 20, 255, 3, 3, 3, 253, 26, 26, 26, 251, 73, 73, 73, 255, 76, 76, 76, 255, 16, 16, 16, 243, 2, 2, 2, 152, 0, 0, 0, 121, 0, 0, 0, 110, 0, 0, 0, 89, 0, 0, 0, 62, 0, 0, 0, 35, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 26, 0, 0, 0, 46, 0, 0, 0, 70, 1, 1, 1, 174, 8, 8, 8, 244, 41, 41, 41, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 19, 19, 19, 255, 2, 2, 2, 255, 25, 25, 25, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 0, 0, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 255, 37, 0, 255, 255, 37, 0, 255, 255, 38, 0, 255, 0, 0, 0, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 26, 26, 26, 255, 6, 6, 6, 251, 9, 9, 9, 253, 34, 34, 34, 252, 4, 4, 4, 210, 0, 0, 0, 124, 0, 0, 0, 114, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 43, 0, 0, 0, 21, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 25, 0, 0, 0, 45, 0, 0, 0, 69, 2, 2, 2, 166, 7, 7, 7, 255, 42, 42, 42, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 30, 30, 30, 255, 2, 2, 2, 255, 16, 16, 16, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 31, 31, 31, 255, 31, 31, 31, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 27, 27, 27, 255, 14, 14, 14, 255, 6, 6, 6, 255, 0, 0, 0, 254, 0, 0, 0, 254, 0, 0, 0, 171, 0, 0, 0, 120, 0, 0, 0, 104, 0, 0, 0, 81, 0, 0, 0, 52, 0, 0, 0, 27, 0, 0, 0, 11, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 25, 0, 0, 0, 44, 0, 0, 0, 67, 1, 1, 1, 255, 7, 7, 7, 255, 45, 45, 45, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 49, 49, 49, 255, 40, 40, 40, 255, 4, 4, 4, 255, 9, 9, 9, 255, 38, 38, 38, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 41, 41, 41, 255, 0, 0, 0, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 34, 34, 34, 255, 33, 33, 33, 255, 34, 34, 34, 255, 34, 34, 34, 255, 33, 33, 33, 255, 34, 34, 34, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 26, 26, 26, 255, 14, 14, 14, 255, 5, 5, 5, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 255, 2, 2, 2, 255, 2, 2, 2, 255, 0, 0, 0, 245, 0, 0, 0, 238, 0, 0, 0, 134, 0, 0, 0, 66, 0, 0, 0, 38, 0, 0, 0, 16, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 24, 0, 0, 0, 43, 0, 0, 0, 255, 9, 9, 9, 255, 6, 6, 6, 255, 46, 46, 46, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 48, 48, 48, 255, 11, 11, 11, 255, 4, 4, 4, 255, 36, 36, 36, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 0, 0, 0, 255, 35, 35, 35, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 25, 25, 25, 255, 13, 13, 13, 255, 3, 3, 3, 255, 0, 0, 0, 255, 0, 0, 0, 255, 1, 1, 1, 255, 3, 3, 3, 255, 4, 4, 4, 255, 5, 5, 5, 255, 6, 7, 7, 255, 6, 6, 6, 255, 6, 7, 7, 255, 6, 7, 7, 255, 6, 6, 6, 255, 4, 5, 5, 255, 1, 1, 1, 243, 0, 0, 0, 220, 0, 0, 0, 84, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 10, 0, 0, 0, 24, 0, 0, 0, 255, 18, 18, 18, 255, 10, 10, 10, 255, 5, 5, 5, 255, 50, 50, 50, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 56, 56, 56, 255, 24, 24, 24, 255, 2, 2, 2, 255, 29, 29, 29, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 0, 0, 0, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 33, 33, 33, 255, 23, 23, 23, 255, 11, 11, 11, 255, 3, 3, 3, 255, 0, 0, 0, 255, 0, 0, 0, 255, 2, 2, 2, 255, 5, 5, 5, 255, 7, 7, 7, 255, 8, 8, 8, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 9, 9, 9, 255, 6, 6, 6, 255, 0, 0, 0, 244, 0, 0, 0, 191, 0, 0, 0, 47, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 12, 0, 0, 0, 255, 20, 20, 20, 255, 19, 19, 19, 255, 11, 11, 11, 255, 5, 5, 5, 255, 50, 50, 50, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 39, 39, 39, 255, 2, 2, 2, 255, 19, 19, 19, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 0, 0, 0, 255, 37, 37, 37, 255, 37, 37, 37, 255, 37, 37, 37, 255, 37, 37, 37, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 36, 36, 36, 255, 22, 22, 22, 255, 10, 10, 10, 255, 3, 3, 3, 255, 0, 0, 0, 255, 1, 1, 1, 255, 6, 6, 6, 255, 10, 10, 10, 255, 14, 14, 14, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 17, 17, 17, 255, 16, 16, 16, 255, 17, 17, 17, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 16, 16, 16, 255, 15, 15, 15, 255, 8, 8, 8, 252, 0, 0, 0, 245, 0, 0, 0, 156, 0, 0, 0, 27, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 255, 21, 21, 21, 255, 21, 21, 21, 255, 21, 21, 21, 255, 13, 13, 13, 255, 4, 4, 4, 255, 51, 51, 51, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 51, 51, 51, 255, 5, 5, 5, 255, 10, 10, 10, 255, 45, 45, 45, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 0, 0, 0, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 35, 35, 35, 255, 21, 21, 21, 255, 9, 9, 9, 255, 2, 2, 2, 255, 0, 0, 0, 255, 2, 2, 2, 255, 7, 8, 7, 255, 13, 13, 13, 255, 17, 18, 17, 255, 19, 20, 19, 255, 19, 19, 19, 255, 19, 20, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 19, 19, 19, 255, 20, 20, 20, 255, 19, 19, 19, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 20, 20, 20, 255, 18, 18, 18, 255, 8, 8, 8, 247, 0, 0, 0, 243, 0, 0, 0, 120, 0, 0, 0, 14, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 22, 22, 22, 255, 14, 14, 14, 255, 4, 4, 4, 255, 51, 51, 51, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 66, 66, 66, 255, 65, 65, 65, 255, 66, 66, 66, 255, 66, 66, 66, 255, 65, 65, 65, 255, 66, 66, 66, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 60, 60, 60, 255, 15, 15, 15, 255, 5, 5, 5, 255, 41, 41, 41, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 48, 48, 48, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 48, 48, 48, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 0, 0, 0, 255, 40, 40, 40, 255, 40, 40, 40, 255, 33, 33, 33, 255, 19, 19, 19, 255, 8, 8, 8, 255, 2, 2, 2, 255, 0, 0, 0, 255, 4, 4, 4, 255, 11, 11, 11, 255, 18, 18, 18, 255, 24, 24, 24, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 27, 27, 27, 255, 26, 26, 26, 255, 27, 27, 27, 255, 27, 27, 27, 255, 26, 26, 26, 255, 27, 27, 27, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 22, 22, 22, 255, 6, 6, 6, 243, 1, 1, 1, 230, 0, 0, 0, 88, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 25, 25, 25, 255, 25, 25, 25, 255, 25, 25, 25, 255, 25, 25, 25, 255, 24, 24, 24, 255, 16, 16, 16, 255, 4, 4, 4, 255, 52, 52, 52, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 29, 29, 29, 255, 3, 3, 3, 255, 32, 32, 32, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 39, 39, 39, 255, 0, 0, 0, 255, 6, 6, 6, 255, 2, 2, 2, 255, 0, 0, 0, 255, 6, 6, 6, 255, 14, 14, 14, 255, 21, 21, 21, 255, 27, 27, 27, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 30, 30, 30, 255, 29, 29, 29, 255, 30, 30, 30, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 21, 21, 21, 255, 4, 4, 4, 243, 1, 1, 1, 206, 0, 0, 0, 59, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 19, 19, 19, 255, 2, 2, 2, 255, 9, 9, 9, 255, 22, 22, 22, 255, 37, 37, 37, 255, 50, 50, 50, 255, 63, 63, 63, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 46, 46, 46, 255, 2, 2, 2, 255, 22, 22, 22, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 39, 39, 39, 255, 20, 20, 20, 255, 7, 7, 7, 255, 2, 2, 2, 255, 1, 1, 1, 255, 8, 8, 8, 255, 19, 19, 19, 255, 27, 27, 27, 255, 34, 34, 34, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 34, 34, 34, 255, 21, 21, 21, 254, 2, 2, 2, 245, 1, 1, 1, 173, 0, 0, 0, 36, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 21, 21, 21, 255, 16, 16, 16, 255, 12, 12, 12, 255, 9, 9, 9, 255, 3, 3, 3, 255, 4, 4, 4, 255, 16, 16, 16, 255, 31, 31, 31, 255, 46, 46, 46, 255, 59, 59, 59, 255, 71, 71, 71, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 59, 59, 59, 255, 6, 6, 6, 255, 12, 12, 12, 255, 51, 51, 51, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 51, 51, 51, 255, 36, 36, 36, 255, 18, 18, 18, 255, 6, 6, 6, 255, 1, 1, 1, 255, 2, 2, 2, 255, 11, 11, 11, 255, 22, 22, 22, 255, 32, 32, 32, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 31, 31, 31, 255, 23, 23, 23, 255, 13, 13, 13, 247, 0, 0, 0, 254, 0, 0, 0, 241, 0, 0, 0, 88, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 29, 29, 29, 255, 28, 28, 28, 255, 25, 25, 25, 255, 20, 20, 20, 255, 15, 15, 15, 255, 12, 12, 12, 255, 7, 7, 7, 255, 1, 1, 1, 255, 10, 10, 10, 255, 24, 24, 24, 255, 40, 40, 40, 255, 54, 54, 54, 255, 67, 67, 67, 255, 75, 75, 75, 255, 69, 69, 69, 255, 17, 17, 17, 255, 6, 6, 6, 255, 48, 48, 48, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 53, 53, 53, 255, 33, 33, 33, 255, 15, 15, 15, 255, 5, 5, 5, 255, 1, 1, 1, 255, 4, 4, 4, 255, 15, 15, 15, 255, 27, 27, 27, 255, 38, 38, 38, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 44, 43, 255, 44, 44, 44, 255, 38, 39, 38, 255, 29, 30, 29, 255, 20, 20, 20, 250, 9, 10, 9, 240, 1, 1, 1, 248, 2, 2, 2, 233, 3, 3, 3, 187, 0, 0, 0, 139, 0, 0, 0, 99, 0, 0, 0, 56, 0, 0, 0, 35, 0, 0, 0, 21, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 31, 31, 31, 255, 29, 29, 29, 255, 25, 25, 25, 255, 19, 19, 19, 255, 14, 14, 14, 255, 10, 10, 10, 255, 4, 4, 4, 255, 4, 4, 4, 255, 17, 17, 17, 255, 33, 33, 33, 255, 9, 9, 9, 255, 3, 3, 3, 255, 32, 32, 32, 255, 31, 31, 31, 255, 13, 13, 13, 255, 5, 5, 5, 255, 1, 1, 1, 255, 6, 6, 6, 255, 18, 18, 18, 255, 30, 30, 30, 255, 42, 42, 42, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 44, 44, 44, 255, 35, 35, 35, 255, 25, 25, 25, 253, 13, 13, 13, 241, 3, 3, 3, 244, 1, 1, 1, 242, 3, 3, 3, 202, 0, 0, 0, 160, 0, 0, 0, 137, 0, 0, 0, 124, 0, 0, 0, 119, 0, 0, 0, 112, 0, 0, 0, 102, 0, 0, 0, 88, 0, 0, 0, 71, 0, 0, 0, 52, 0, 0, 0, 33, 0, 0, 0, 17, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 31, 31, 31, 255, 28, 28, 28, 255, 22, 22, 22, 255, 17, 17, 17, 255, 13, 13, 13, 255, 4, 4, 4, 255, 0, 0, 0, 255, 0, 0, 0, 255, 21, 21, 21, 255, 36, 36, 36, 255, 48, 48, 48, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 50, 50, 50, 255, 41, 41, 41, 255, 30, 30, 30, 255, 17, 17, 17, 255, 5, 5, 5, 241, 1, 1, 1, 248, 4, 4, 4, 214, 2, 2, 2, 169, 0, 0, 0, 142, 0, 0, 0, 127, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 115, 0, 0, 0, 111, 0, 0, 0, 105, 0, 0, 0, 98, 0, 0, 0, 87, 0, 0, 0, 73, 0, 0, 0, 55, 0, 0, 0, 36, 0, 0, 0, 20, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 34, 34, 34, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 34, 34, 34, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 33, 33, 33, 255, 0, 0, 0, 255, 8, 8, 8, 255, 4, 4, 4, 255, 35, 35, 35, 255, 54, 54, 54, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 54, 54, 54, 255, 55, 55, 55, 255, 54, 54, 54, 255, 54, 54, 54, 255, 47, 47, 47, 255, 34, 34, 34, 255, 23, 23, 23, 255, 10, 10, 10, 255, 1, 1, 1, 255, 5, 5, 5, 255, 8, 8, 8, 255, 0, 0, 0, 255, 0, 0, 0, 132, 0, 0, 0, 126, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 119, 0, 0, 0, 116, 0, 0, 0, 113, 0, 0, 0, 109, 0, 0, 0, 105, 0, 0, 0, 100, 0, 0, 0, 94, 0, 0, 0, 88, 0, 0, 0, 82, 0, 0, 0, 75, 0, 0, 0, 66, 0, 0, 0, 55, 0, 0, 0, 42, 0, 0, 0, 28, 0, 0, 0, 15, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 0, 0, 0, 255, 22, 22, 22, 255, 17, 17, 17, 255, 6, 6, 6, 255, 11, 11, 11, 255, 46, 46, 46, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 54, 54, 54, 255, 42, 42, 42, 255, 28, 28, 28, 255, 14, 14, 14, 255, 3, 3, 3, 255, 4, 4, 4, 255, 8, 8, 8, 255, 11, 11, 11, 255, 16, 16, 16, 255, 20, 20, 20, 255, 22, 22, 22, 255, 21, 21, 21, 255, 0, 0, 0, 255, 0, 0, 0, 125, 0, 0, 0, 120, 0, 0, 0, 115, 0, 0, 0, 108, 0, 0, 0, 102, 0, 0, 0, 96, 0, 0, 0, 90, 0, 0, 0, 84, 0, 0, 0, 77, 0, 0, 0, 71, 0, 0, 0, 63, 0, 0, 0, 56, 0, 0, 0, 49, 0, 0, 0, 43, 0, 0, 0, 37, 0, 0, 0, 30, 0, 0, 0, 22, 0, 0, 0, 15, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 36, 36, 36, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 0, 0, 0, 255, 23, 23, 23, 255, 23, 23, 23, 255, 22, 22, 22, 255, 14, 14, 14, 255, 4, 4, 4, 255, 20, 20, 20, 255, 54, 54, 54, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 60, 60, 60, 255, 47, 47, 47, 255, 34, 34, 34, 255, 19, 19, 19, 255, 5, 5, 5, 255, 2, 2, 2, 255, 8, 8, 8, 255, 11, 11, 11, 255, 16, 16, 16, 255, 20, 20, 20, 255, 23, 23, 23, 255, 23, 23, 23, 255, 24, 23, 22, 255, 67, 25, 18, 255, 43, 24, 20, 255, 23, 23, 23, 255, 23, 23, 23, 255, 0, 0, 0, 255, 0, 0, 0, 121, 0, 0, 0, 111, 0, 0, 0, 97, 0, 0, 0, 84, 0, 0, 0, 74, 0, 0, 0, 65, 0, 0, 0, 58, 0, 0, 0, 51, 0, 0, 0, 45, 0, 0, 0, 39, 0, 0, 0, 33, 0, 0, 0, 27, 0, 0, 0, 22, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 0, 0, 0, 255, 26, 26, 26, 255, 26, 26, 26, 255, 25, 25, 25, 255, 26, 26, 26, 255, 24, 24, 24, 255, 13, 13, 13, 255, 3, 3, 3, 255, 32, 32, 32, 255, 65, 65, 65, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 55, 55, 55, 255, 41, 41, 41, 255, 25, 25, 25, 255, 9, 9, 9, 255, 1, 1, 1, 255, 7, 7, 7, 255, 12, 12, 12, 255, 16, 16, 16, 255, 22, 22, 22, 255, 25, 25, 25, 255, 26, 26, 26, 255, 26, 26, 26, 255, 26, 26, 26, 255, 45, 27, 23, 255, 127, 31, 14, 255, 184, 34, 7, 255, 240, 37, 1, 255, 255, 38, 0, 255, 86, 28, 18, 255, 26, 26, 26, 255, 25, 25, 25, 255, 0, 0, 0, 255, 0, 0, 0, 116, 0, 0, 0, 99, 0, 0, 0, 76, 0, 0, 0, 56, 0, 0, 0, 43, 0, 0, 0, 34, 0, 0, 0, 28, 0, 0, 0, 23, 0, 0, 0, 19, 0, 0, 0, 15, 0, 0, 0, 12, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 38, 38, 38, 255, 39, 39, 39, 255, 38, 38, 38, 255, 0, 0, 0, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 27, 27, 27, 255, 24, 24, 24, 255, 11, 11, 11, 255, 6, 6, 6, 255, 45, 45, 45, 255, 70, 70, 70, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 70, 70, 70, 255, 71, 71, 71, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 61, 61, 61, 255, 46, 46, 46, 255, 30, 30, 30, 255, 14, 14, 14, 255, 2, 2, 2, 255, 6, 6, 6, 255, 11, 11, 11, 255, 15, 15, 15, 255, 21, 21, 21, 255, 26, 26, 26, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 28, 28, 28, 255, 28, 28, 28, 255, 27, 27, 27, 255, 28, 28, 28, 255, 27, 27, 27, 255, 140, 32, 13, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 88, 30, 20, 255, 27, 27, 27, 255, 28, 28, 28, 255, 0, 0, 0, 255, 0, 0, 0, 112, 0, 0, 0, 89, 0, 0, 0, 59, 0, 0, 0, 34, 0, 0, 0, 19, 0, 0, 0, 13, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 39, 39, 39, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 40, 40, 40, 255, 0, 0, 0, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 22, 22, 22, 255, 8, 8, 8, 255, 14, 14, 14, 255, 58, 58, 58, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 69, 69, 69, 255, 54, 54, 54, 255, 37, 37, 37, 255, 19, 19, 19, 255, 4, 4, 4, 255, 4, 4, 4, 255, 11, 11, 11, 255, 15, 15, 15, 255, 21, 21, 21, 255, 27, 27, 27, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 30, 29, 28, 255, 74, 30, 23, 255, 33, 29, 28, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 29, 29, 29, 255, 209, 36, 5, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 89, 31, 21, 255, 29, 29, 29, 255, 29, 29, 29, 255, 0, 0, 0, 255, 0, 0, 0, 109, 0, 0, 0, 83, 0, 0, 0, 50, 0, 0, 0, 23, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 41, 41, 41, 255, 41, 41, 41, 255, 41, 41, 41, 255, 0, 0, 0, 255, 31, 31, 31, 255, 31, 31, 31, 255, 31, 31, 31, 255, 31, 31, 31, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 29, 29, 29, 255, 19, 19, 19, 255, 5, 5, 5, 255, 25, 25, 25, 255, 66, 66, 66, 255, 60, 60, 60, 255, 44, 44, 44, 255, 25, 25, 25, 255, 8, 8, 8, 255, 2, 2, 2, 255, 10, 10, 10, 255, 14, 14, 14, 255, 20, 20, 20, 255, 27, 27, 27, 255, 30, 30, 30, 255, 31, 31, 31, 255, 31, 31, 31, 255, 30, 30, 30, 255, 31, 31, 31, 255, 30, 30, 30, 255, 60, 31, 25, 255, 132, 34, 17, 255, 187, 35, 8, 255, 241, 37, 1, 255, 255, 38, 0, 255, 94, 32, 21, 255, 31, 31, 31, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 30, 30, 30, 255, 53, 30, 26, 255, 255, 38, 0, 255, 255, 38, 0, 255, 248, 37, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 90, 32, 22, 255, 31, 31, 31, 255, 30, 30, 30, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 47, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 44, 44, 44, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 43, 43, 43, 255, 0, 0, 0, 255, 31, 31, 31, 255, 31, 31, 31, 255, 32, 32, 32, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 30, 30, 30, 255, 16, 16, 16, 255, 3, 3, 3, 255, 9, 9, 9, 255, 14, 14, 14, 255, 19, 19, 19, 255, 26, 26, 26, 255, 31, 31, 31, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 148, 35, 15, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 171, 35, 12, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 32, 32, 32, 255, 122, 34, 19, 255, 255, 38, 0, 255, 247, 37, 1, 255, 199, 36, 8, 255, 255, 38, 0, 255, 255, 38, 0, 255, 91, 33, 23, 255, 32, 32, 32, 255, 32, 32, 32, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 0, 0, 0, 255, 35, 35, 35, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 35, 35, 35, 255, 37, 35, 34, 255, 79, 35, 28, 255, 130, 36, 19, 255, 161, 36, 14, 255, 190, 36, 10, 255, 176, 36, 12, 255, 117, 35, 21, 255, 34, 34, 33, 255, 35, 35, 35, 255, 34, 34, 34, 255, 35, 35, 35, 255, 149, 36, 16, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 241, 37, 2, 255, 40, 35, 34, 255, 34, 34, 34, 255, 34, 34, 34, 255, 35, 35, 35, 255, 34, 34, 34, 255, 191, 37, 10, 255, 255, 38, 0, 255, 189, 37, 10, 255, 199, 37, 8, 255, 255, 38, 0, 255, 255, 38, 0, 255, 92, 35, 24, 255, 35, 35, 35, 255, 34, 34, 34, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 46, 46, 46, 255, 45, 45, 45, 255, 45, 45, 45, 255, 46, 46, 46, 255, 45, 45, 45, 255, 46, 46, 46, 255, 0, 0, 0, 255, 36, 36, 36, 255, 36, 36, 36, 255, 37, 37, 37, 255, 36, 36, 36, 255, 37, 37, 37, 255, 37, 37, 37, 255, 36, 36, 36, 255, 37, 37, 37, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 66, 36, 31, 255, 134, 36, 19, 255, 189, 37, 10, 255, 242, 37, 2, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 157, 37, 16, 255, 36, 36, 36, 255, 36, 36, 36, 255, 36, 36, 36, 255, 150, 37, 17, 255, 255, 38, 0, 255, 255, 38, 0, 255, 235, 37, 3, 255, 255, 38, 0, 255, 255, 38, 0, 255, 100, 36, 25, 255, 37, 37, 37, 255, 37, 37, 37, 255, 36, 36, 36, 255, 46, 37, 35, 255, 248, 37, 1, 255, 255, 38, 0, 255, 123, 37, 22, 255, 208, 37, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 94, 36, 26, 255, 37, 37, 37, 255, 36, 36, 36, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 47, 47, 47, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 0, 0, 0, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 38, 38, 38, 255, 37, 37, 37, 255, 38, 38, 38, 255, 37, 37, 37, 255, 37, 37, 37, 255, 39, 38, 37, 255, 79, 37, 29, 255, 81, 38, 30, 255, 38, 38, 38, 255, 38, 38, 38, 255, 151, 38, 18, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 254, 38, 0, 255, 48, 37, 34, 255, 38, 38, 38, 255, 37, 37, 37, 255, 150, 37, 17, 255, 255, 38, 0, 255, 255, 38, 0, 255, 170, 38, 14, 255, 255, 38, 0, 255, 255, 38, 0, 255, 174, 38, 14, 255, 37, 37, 37, 255, 37, 37, 37, 255, 38, 38, 38, 255, 105, 37, 25, 255, 255, 38, 0, 255, 254, 38, 0, 255, 58, 37, 33, 255, 215, 38, 6, 255, 255, 38, 0, 255, 255, 38, 0, 255, 95, 37, 27, 255, 37, 37, 37, 255, 37, 37, 37, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 48, 48, 48, 255, 47, 47, 47, 255, 0, 0, 0, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 39, 39, 39, 255, 41, 38, 38, 255, 82, 38, 31, 255, 136, 38, 21, 255, 190, 38, 11, 255, 242, 38, 2, 255, 255, 38, 0, 255, 151, 38, 18, 255, 39, 39, 39, 255, 39, 39, 39, 255, 151, 38, 18, 255, 255, 38, 0, 255, 255, 38, 0, 255, 241, 38, 2, 255, 152, 38, 18, 255, 112, 38, 25, 255, 116, 38, 25, 255, 195, 38, 11, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 89, 38, 29, 255, 40, 40, 40, 255, 39, 39, 39, 255, 151, 38, 18, 255, 255, 38, 0, 255, 255, 38, 0, 255, 121, 38, 24, 255, 243, 38, 1, 255, 255, 38, 0, 255, 241, 38, 2, 255, 44, 38, 38, 255, 39, 39, 39, 255, 39, 39, 39, 255, 172, 38, 14, 255, 255, 38, 0, 255, 210, 38, 8, 255, 39, 39, 39, 255, 219, 38, 6, 255, 255, 38, 0, 255, 255, 38, 0, 255, 96, 38, 28, 255, 39, 39, 39, 255, 39, 39, 39, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 50, 50, 50, 255, 49, 49, 49, 255, 0, 0, 0, 255, 41, 41, 41, 255, 41, 41, 41, 255, 40, 40, 40, 255, 70, 40, 35, 255, 136, 39, 21, 255, 190, 38, 11, 255, 242, 38, 2, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 152, 39, 19, 255, 41, 41, 41, 255, 41, 41, 41, 255, 152, 39, 19, 255, 255, 38, 0, 255, 255, 38, 0, 255, 213, 38, 7, 255, 41, 41, 41, 255, 40, 40, 40, 255, 40, 40, 40, 255, 87, 40, 32, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 91, 39, 30, 255, 41, 41, 41, 255, 40, 40, 40, 255, 152, 38, 19, 255, 255, 38, 0, 255, 255, 38, 0, 255, 124, 39, 24, 255, 179, 39, 14, 255, 255, 38, 0, 255, 255, 38, 0, 255, 104, 39, 28, 255, 40, 40, 40, 255, 41, 39, 39, 255, 236, 38, 3, 255, 255, 38, 0, 255, 144, 39, 20, 255, 41, 41, 41, 255, 220, 38, 6, 255, 255, 38, 0, 255, 255, 38, 0, 255, 97, 39, 29, 255, 41, 41, 41, 255, 40, 40, 40, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 51, 51, 51, 255, 50, 50, 50, 255, 51, 51, 51, 255, 50, 50, 50, 255, 0, 0, 0, 255, 44, 44, 44, 255, 44, 44, 44, 255, 43, 43, 43, 255, 154, 40, 21, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 251, 38, 0, 255, 208, 39, 9, 255, 155, 40, 20, 255, 80, 42, 35, 255, 43, 43, 43, 255, 43, 43, 43, 255, 153, 40, 20, 255, 255, 38, 0, 255, 255, 38, 0, 255, 214, 39, 8, 255, 43, 43, 43, 255, 44, 44, 44, 255, 44, 44, 44, 255, 95, 41, 32, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 57, 42, 39, 255, 43, 43, 43, 255, 43, 43, 43, 255, 153, 40, 20, 255, 255, 38, 0, 255, 255, 38, 0, 255, 132, 40, 24, 255, 109, 41, 29, 255, 255, 38, 0, 255, 255, 38, 0, 255, 177, 39, 15, 255, 43, 43, 43, 255, 91, 42, 34, 255, 255, 38, 0, 255, 255, 38, 0, 255, 82, 42, 36, 255, 43, 43, 43, 255, 221, 38, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 99, 41, 31, 255, 43, 43, 43, 255, 43, 43, 43, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 51, 51, 51, 255, 52, 52, 52, 255, 52, 52, 52, 255, 51, 51, 51, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 52, 52, 52, 255, 51, 51, 51, 255, 51, 51, 51, 255, 0, 0, 0, 255, 44, 44, 44, 255, 44, 44, 44, 255, 45, 45, 45, 255, 154, 40, 21, 255, 255, 38, 0, 255, 255, 38, 0, 255, 241, 38, 2, 255, 155, 41, 21, 255, 102, 42, 31, 255, 53, 43, 41, 255, 45, 45, 45, 255, 44, 44, 44, 255, 45, 45, 45, 255, 45, 45, 45, 255, 44, 44, 44, 255, 154, 41, 21, 255, 255, 38, 0, 255, 255, 38, 0, 255, 214, 39, 8, 255, 44, 44, 44, 255, 44, 44, 44, 255, 44, 44, 44, 255, 180, 40, 15, 255, 255, 38, 0, 255, 255, 38, 0, 255, 213, 39, 8, 255, 45, 45, 45, 255, 45, 45, 45, 255, 45, 45, 45, 255, 154, 41, 21, 255, 255, 38, 0, 255, 255, 38, 0, 255, 138, 41, 24, 255, 50, 43, 42, 255, 245, 38, 2, 255, 255, 38, 0, 255, 242, 38, 2, 255, 50, 44, 43, 255, 155, 40, 20, 255, 255, 38, 0, 255, 229, 38, 5, 255, 44, 44, 44, 255, 44, 44, 44, 255, 221, 38, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 101, 43, 33, 255, 44, 44, 44, 255, 45, 45, 45, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 254, 34, 34, 34, 254, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 0, 0, 0, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 155, 41, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 214, 39, 8, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 155, 41, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 214, 39, 8, 255, 46, 46, 46, 255, 91, 44, 35, 255, 199, 40, 12, 255, 255, 38, 0, 255, 255, 38, 0, 255, 254, 38, 0, 255, 91, 44, 35, 255, 46, 46, 46, 255, 46, 46, 46, 255, 46, 46, 46, 255, 155, 41, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 140, 42, 25, 255, 46, 46, 46, 255, 182, 40, 16, 255, 255, 38, 0, 255, 255, 38, 0, 255, 109, 43, 31, 255, 220, 39, 7, 255, 255, 38, 0, 255, 165, 41, 19, 255, 46, 46, 46, 255, 46, 46, 46, 255, 221, 39, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 101, 43, 33, 255, 46, 46, 46, 255, 46, 46, 46, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 64, 2, 2, 2, 231, 24, 24, 24, 248, 52, 52, 52, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 0, 0, 0, 255, 48, 48, 48, 255, 48, 48, 48, 255, 47, 47, 47, 255, 155, 42, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 215, 39, 9, 255, 47, 47, 47, 255, 48, 48, 48, 255, 48, 48, 48, 255, 47, 47, 47, 255, 56, 47, 46, 255, 51, 46, 46, 255, 47, 47, 47, 255, 47, 47, 47, 255, 155, 42, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 241, 38, 2, 255, 215, 39, 8, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 251, 38, 0, 255, 137, 43, 26, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 47, 47, 47, 255, 155, 42, 22, 255, 255, 38, 0, 255, 255, 38, 0, 255, 141, 43, 26, 255, 48, 48, 48, 255, 113, 44, 32, 255, 255, 38, 0, 255, 255, 38, 0, 255, 207, 40, 10, 255, 255, 38, 0, 255, 255, 38, 0, 255, 102, 44, 34, 255, 47, 47, 47, 255, 47, 47, 47, 255, 221, 39, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 102, 44, 34, 255, 47, 47, 47, 255, 47, 47, 47, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 17, 0, 0, 0, 54, 3, 3, 3, 200, 14, 14, 14, 244, 51, 51, 51, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 56, 56, 56, 255, 55, 55, 55, 255, 0, 0, 0, 255, 49, 49, 49, 255, 49, 49, 49, 255, 48, 48, 48, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 215, 39, 9, 255, 56, 47, 45, 255, 104, 45, 35, 255, 155, 42, 22, 255, 208, 40, 11, 255, 250, 38, 0, 255, 74, 47, 43, 255, 49, 49, 49, 255, 49, 49, 49, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 227, 39, 6, 255, 99, 46, 37, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 49, 49, 49, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 141, 43, 26, 255, 48, 48, 48, 255, 56, 48, 47, 255, 245, 38, 2, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 243, 38, 2, 255, 52, 47, 47, 255, 48, 48, 48, 255, 49, 49, 49, 255, 221, 39, 7, 255, 255, 38, 0, 255, 255, 38, 0, 255, 103, 46, 35, 255, 49, 49, 49, 255, 49, 49, 49, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 13, 0, 0, 0, 35, 0, 0, 0, 65, 2, 2, 2, 162, 5, 5, 5, 244, 45, 45, 45, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 0, 0, 0, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 250, 38, 1, 255, 250, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 74, 48, 43, 255, 50, 50, 50, 255, 50, 50, 50, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 238, 38, 4, 255, 179, 42, 18, 255, 102, 46, 37, 255, 50, 49, 49, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 156, 43, 23, 255, 255, 38, 0, 255, 255, 38, 0, 255, 142, 44, 27, 255, 50, 50, 50, 255, 49, 49, 49, 255, 184, 42, 17, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 185, 41, 16, 255, 50, 50, 50, 255, 50, 50, 50, 255, 50, 50, 50, 255, 216, 40, 9, 255, 205, 40, 11, 255, 155, 43, 24, 255, 69, 48, 45, 255, 50, 50, 50, 255, 50, 50, 50, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9, 0, 0, 0, 24, 0, 0, 0, 47, 0, 0, 0, 72, 0, 0, 0, 128, 2, 2, 2, 244, 38, 38, 38, 254, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 0, 0, 0, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 158, 45, 25, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 243, 38, 2, 255, 195, 42, 15, 255, 65, 51, 48, 255, 52, 52, 52, 255, 53, 53, 53, 255, 157, 44, 24, 255, 255, 38, 0, 255, 255, 38, 0, 255, 218, 40, 9, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 157, 44, 24, 255, 255, 38, 0, 255, 255, 38, 0, 255, 144, 46, 29, 255, 53, 53, 53, 255, 52, 52, 52, 255, 117, 48, 35, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 124, 47, 33, 255, 53, 53, 53, 255, 53, 53, 53, 255, 53, 53, 53, 255, 56, 52, 52, 255, 53, 53, 53, 255, 53, 53, 53, 255, 52, 52, 52, 255, 53, 53, 53, 255, 52, 52, 52, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 13, 0, 0, 0, 28, 0, 0, 0, 48, 0, 0, 0, 70, 0, 0, 0, 107, 2, 2, 2, 232, 26, 26, 26, 248, 58, 58, 58, 255, 59, 59, 59, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 58, 58, 58, 255, 58, 58, 58, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 59, 59, 59, 255, 59, 59, 59, 255, 58, 58, 58, 255, 59, 59, 59, 255, 58, 58, 58, 255, 0, 0, 0, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 158, 45, 25, 255, 255, 38, 0, 255, 255, 38, 0, 255, 249, 38, 1, 255, 195, 42, 15, 255, 145, 46, 29, 255, 94, 50, 42, 255, 56, 53, 53, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 54, 54, 54, 255, 158, 45, 25, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 40, 10, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 158, 45, 25, 255, 255, 38, 0, 255, 255, 38, 0, 255, 144, 46, 29, 255, 54, 54, 54, 255, 54, 54, 54, 255, 61, 53, 52, 255, 200, 42, 14, 255, 155, 45, 26, 255, 105, 49, 40, 255, 57, 53, 52, 255, 54, 54, 54, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 53, 53, 53, 255, 54, 54, 54, 255, 53, 53, 53, 255, 54, 54, 54, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 3, 3, 3, 201, 15, 15, 15, 244, 55, 55, 55, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 60, 60, 60, 255, 60, 60, 60, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 0, 0, 0, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 159, 46, 26, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 41, 10, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 159, 46, 26, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 41, 10, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 159, 46, 26, 255, 255, 38, 0, 255, 249, 38, 1, 255, 129, 48, 34, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 55, 55, 55, 255, 56, 56, 56, 255, 55, 55, 55, 255, 56, 56, 56, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 2, 2, 2, 163, 5, 5, 5, 244, 49, 49, 49, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 0, 0, 0, 255, 57, 57, 57, 255, 57, 57, 57, 255, 57, 57, 57, 255, 160, 47, 27, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 41, 10, 255, 57, 57, 57, 255, 56, 56, 56, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 160, 47, 27, 255, 255, 38, 0, 255, 255, 38, 0, 255, 216, 41, 10, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 102, 51, 43, 255, 106, 52, 42, 255, 62, 55, 54, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 57, 57, 57, 255, 56, 56, 56, 255, 57, 57, 57, 255, 56, 56, 56, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 129, 2, 2, 2, 244, 41, 41, 41, 254, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 0, 0, 0, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 160, 47, 27, 255, 255, 38, 0, 255, 255, 38, 0, 255, 217, 41, 11, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 62, 56, 55, 255, 105, 53, 43, 255, 101, 52, 44, 255, 57, 57, 57, 255, 58, 58, 58, 255, 160, 47, 27, 255, 255, 38, 0, 255, 255, 38, 0, 255, 217, 41, 11, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 57, 57, 57, 255, 58, 58, 58, 255, 57, 57, 57, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 58, 58, 58, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 107, 2, 2, 2, 232, 28, 28, 28, 248, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 63, 63, 63, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 63, 63, 63, 255, 64, 64, 64, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 0, 0, 0, 255, 61, 61, 61, 255, 61, 61, 61, 255, 60, 60, 60, 255, 162, 49, 29, 255, 255, 38, 0, 255, 255, 38, 0, 255, 221, 41, 10, 255, 107, 54, 45, 255, 156, 49, 30, 255, 205, 43, 15, 255, 248, 38, 1, 255, 255, 38, 0, 255, 162, 49, 29, 255, 61, 61, 61, 255, 60, 60, 60, 255, 162, 49, 29, 255, 255, 38, 0, 255, 249, 38, 1, 255, 182, 46, 22, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 61, 61, 61, 255, 60, 60, 60, 255, 61, 61, 61, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 60, 60, 60, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 3, 3, 3, 201, 16, 16, 16, 244, 60, 60, 60, 255, 64, 64, 64, 255, 64, 64, 64, 255, 65, 65, 65, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 65, 65, 65, 255, 64, 64, 64, 255, 65, 65, 65, 255, 0, 0, 0, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 162, 49, 29, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 162, 49, 29, 255, 61, 61, 61, 255, 62, 62, 62, 255, 105, 55, 46, 255, 110, 55, 46, 255, 68, 61, 60, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 62, 62, 62, 255, 61, 61, 61, 255, 62, 62, 62, 255, 61, 61, 61, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 2, 2, 2, 163, 6, 6, 6, 244, 54, 54, 54, 255, 66, 66, 66, 255, 67, 67, 67, 255, 67, 67, 67, 255, 67, 67, 67, 255, 67, 67, 67, 255, 66, 66, 66, 255, 66, 66, 66, 255, 67, 67, 67, 255, 66, 66, 66, 255, 67, 67, 67, 255, 66, 66, 66, 255, 66, 66, 66, 255, 67, 67, 67, 255, 66, 66, 66, 255, 0, 0, 0, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 162, 49, 29, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 255, 38, 0, 255, 249, 38, 1, 255, 208, 44, 15, 255, 159, 49, 30, 255, 94, 58, 52, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 63, 63, 63, 255, 62, 62, 62, 255, 63, 63, 63, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 62, 62, 62, 255, 0, 0, 0, 255, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 129, 2, 2, 2, 244, 44, 44, 44, 254, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 0, 0, 0, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 163, 50, 30, 255, 255, 38, 0, 255, 249, 38, 1, 255, 207, 44, 15, 255, 159, 50, 31, 255, 112, 57, 47, 255, 69, 63, 61, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 63, 63, 63, 255, 64, 64, 64, 255, 63, 63, 63, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 64, 64, 64, 255, 59, 59, 59, 255, 45, 45, 45, 255, 29, 29, 29, 250, 10, 10, 10, 246, 0, 0, 0, 254, 0, 0, 0, 108, 0, 0, 0, 81, 0, 0, 0, 46, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 106, 2, 2, 2, 232, 31, 31, 31, 248, 67, 67, 67, 255, 69, 69, 69, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 0, 0, 0, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 108, 58, 49, 255, 112, 58, 48, 255, 70, 64, 62, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 66, 66, 66, 255, 65, 65, 65, 255, 66, 66, 66, 255, 66, 66, 66, 255, 65, 65, 65, 255, 66, 66, 66, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 65, 65, 65, 255, 58, 58, 58, 255, 43, 43, 43, 255, 27, 27, 27, 247, 9, 9, 9, 240, 1, 1, 1, 247, 4, 4, 4, 207, 2, 2, 2, 159, 0, 0, 0, 134, 0, 0, 0, 126, 0, 0, 0, 106, 0, 0, 0, 78, 0, 0, 0, 45, 0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 3, 3, 3, 201, 17, 17, 17, 244, 64, 64, 64, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 70, 70, 70, 255, 69, 69, 69, 255, 0, 0, 0, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 68, 68, 68, 255, 67, 67, 67, 255, 68, 68, 68, 255, 67, 67, 67, 255, 58, 58, 58, 255, 42, 42, 42, 255, 24, 24, 24, 245, 6, 6, 6, 242, 2, 2, 2, 244, 4, 4, 4, 199, 0, 0, 0, 153, 0, 0, 0, 131, 0, 0, 0, 124, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 112, 0, 0, 0, 97, 0, 0, 0, 71, 0, 0, 0, 40, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 2, 2, 2, 163, 6, 6, 6, 244, 58, 58, 58, 255, 72, 72, 72, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 72, 72, 72, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 0, 0, 0, 255, 68, 68, 68, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 68, 68, 68, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 69, 69, 69, 255, 68, 68, 68, 255, 69, 69, 69, 255, 67, 67, 67, 255, 56, 56, 56, 255, 40, 40, 40, 255, 21, 21, 21, 242, 4, 4, 4, 244, 2, 2, 2, 239, 4, 4, 4, 190, 0, 0, 0, 149, 0, 0, 0, 129, 0, 0, 0, 125, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 114, 0, 0, 0, 110, 0, 0, 0, 106, 0, 0, 0, 101, 0, 0, 0, 92, 0, 0, 0, 78, 0, 0, 0, 56, 0, 0, 0, 31, 0, 0, 0, 12, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 128, 3, 3, 3, 244, 47, 47, 47, 254, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 72, 72, 72, 255, 73, 73, 73, 255, 0, 0, 0, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 70, 70, 70, 255, 68, 68, 68, 255, 55, 55, 55, 255, 38, 38, 38, 254, 18, 18, 18, 241, 2, 2, 2, 247, 3, 3, 3, 231, 3, 3, 3, 181, 0, 0, 0, 145, 0, 0, 0, 128, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 120, 0, 0, 0, 117, 0, 0, 0, 114, 0, 0, 0, 110, 0, 0, 0, 105, 0, 0, 0, 99, 0, 0, 0, 93, 0, 0, 0, 86, 0, 0, 0, 79, 0, 0, 0, 72, 0, 0, 0, 63, 0, 0, 0, 51, 0, 0, 0, 35, 0, 0, 0, 19, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 106, 3, 3, 3, 232, 32, 32, 32, 248, 72, 72, 72, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 73, 73, 73, 255, 74, 74, 74, 255, 73, 73, 73, 255, 0, 0, 0, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 71, 71, 71, 255, 68, 68, 68, 255, 53, 53, 53, 255, 35, 35, 35, 252, 15, 15, 15, 240, 1, 1, 1, 249, 5, 5, 5, 224, 3, 3, 3, 174, 0, 0, 0, 141, 0, 0, 0, 126, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 120, 0, 0, 0, 117, 0, 0, 0, 113, 0, 0, 0, 109, 0, 0, 0, 104, 0, 0, 0, 98, 0, 0, 0, 92, 0, 0, 0, 85, 0, 0, 0, 78, 0, 0, 0, 70, 0, 0, 0, 62, 0, 0, 0, 54, 0, 0, 0, 46, 0, 0, 0, 40, 0, 0, 0, 33, 0, 0, 0, 25, 0, 0, 0, 17, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 4, 4, 4, 201, 18, 18, 18, 244, 68, 68, 68, 255, 74, 74, 74, 255, 74, 74, 74, 255, 75, 75, 75, 255, 74, 74, 74, 255, 74, 74, 74, 255, 0, 0, 0, 255, 73, 73, 73, 255, 73, 73, 73, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 72, 72, 72, 255, 73, 73, 73, 255, 72, 72, 72, 255, 68, 68, 68, 255, 51, 51, 51, 255, 34, 34, 34, 250, 13, 13, 13, 240, 1, 1, 1, 249, 5, 5, 5, 216, 2, 2, 2, 166, 0, 0, 0, 137, 0, 0, 0, 126, 0, 0, 0, 123, 0, 0, 0, 122, 0, 0, 0, 119, 0, 0, 0, 116, 0, 0, 0, 112, 0, 0, 0, 108, 0, 0, 0, 103, 0, 0, 0, 97, 0, 0, 0, 91, 0, 0, 0, 84, 0, 0, 0, 76, 0, 0, 0, 69, 0, 0, 0, 61, 0, 0, 0, 53, 0, 0, 0, 45, 0, 0, 0, 38, 0, 0, 0, 32, 0, 0, 0, 25, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 3, 3, 3, 163, 7, 7, 7, 244, 61, 61, 61, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 0, 0, 0, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 75, 75, 75, 255, 74, 74, 74, 255, 75, 75, 75, 255, 74, 74, 74, 255, 74, 74, 74, 255, 75, 75, 75, 255, 74, 74, 74, 255, 75, 75, 75, 255, 75, 75, 75, 255, 74, 74, 74, 255, 75, 75, 75, 255, 67, 67, 67, 255, 49, 49, 49, 255, 30, 30, 30, 247, 10, 10, 10, 240, 1, 1, 1, 247, 5, 5, 5, 207, 2, 2, 2, 159, 0, 0, 0, 134, 0, 0, 0, 125, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 119, 0, 0, 0, 115, 0, 0, 0, 112, 0, 0, 0, 107, 0, 0, 0, 102, 0, 0, 0, 96, 0, 0, 0, 89, 0, 0, 0, 82, 0, 0, 0, 75, 0, 0, 0, 67, 0, 0, 0, 59, 0, 0, 0, 51, 0, 0, 0, 44, 0, 0, 0, 37, 0, 0, 0, 30, 0, 0, 0, 24, 0, 0, 0, 19, 0, 0, 0, 15, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 128, 3, 3, 3, 244, 50, 50, 50, 254, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 0, 0, 0, 255, 76, 76, 76, 255, 76, 76, 76, 255, 75, 75, 75, 255, 76, 76, 76, 255, 75, 75, 75, 255, 75, 75, 75, 255, 76, 76, 76, 255, 75, 75, 75, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 65, 65, 65, 255, 47, 47, 47, 255, 27, 27, 27, 245, 7, 7, 7, 242, 2, 2, 2, 244, 5, 5, 5, 199, 0, 0, 0, 153, 0, 0, 0, 131, 0, 0, 0, 124, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 115, 0, 0, 0, 111, 0, 0, 0, 107, 0, 0, 0, 101, 0, 0, 0, 95, 0, 0, 0, 88, 0, 0, 0, 81, 0, 0, 0, 74, 0, 0, 0, 66, 0, 0, 0, 58, 0, 0, 0, 50, 0, 0, 0, 43, 0, 0, 0, 36, 0, 0, 0, 29, 0, 0, 0, 24, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 106, 3, 3, 3, 232, 34, 34, 34, 248, 77, 77, 77, 255, 78, 78, 78, 255, 0, 0, 0, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 78, 78, 78, 255, 76, 76, 76, 255, 64, 64, 64, 255, 45, 45, 45, 255, 24, 24, 24, 242, 5, 5, 5, 244, 3, 3, 3, 239, 4, 4, 4, 190, 0, 0, 0, 149, 0, 0, 0, 129, 0, 0, 0, 125, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 118, 0, 0, 0, 114, 0, 0, 0, 110, 0, 0, 0, 106, 0, 0, 0, 100, 0, 0, 0, 94, 0, 0, 0, 87, 0, 0, 0, 80, 0, 0, 0, 73, 0, 0, 0, 65, 0, 0, 0, 57, 0, 0, 0, 49, 0, 0, 0, 42, 0, 0, 0, 35, 0, 0, 0, 28, 0, 0, 0, 23, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 91, 4, 4, 4, 201, 19, 19, 19, 244, 73, 73, 73, 255, 0, 0, 0, 255, 79, 79, 79, 255, 79, 79, 79, 255, 78, 78, 78, 255, 77, 77, 77, 255, 61, 61, 61, 255, 42, 42, 42, 254, 20, 20, 20, 240, 3, 3, 3, 247, 3, 3, 3, 231, 4, 4, 4, 181, 0, 0, 0, 145, 0, 0, 0, 128, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 120, 0, 0, 0, 117, 0, 0, 0, 114, 0, 0, 0, 110, 0, 0, 0, 105, 0, 0, 0, 99, 0, 0, 0, 93, 0, 0, 0, 86, 0, 0, 0, 79, 0, 0, 0, 71, 0, 0, 0, 63, 0, 0, 0, 55, 0, 0, 0, 48, 0, 0, 0, 40, 0, 0, 0, 34, 0, 0, 0, 27, 0, 0, 0, 22, 0, 0, 0, 17, 0, 0, 0, 13, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 39, 0, 0, 0, 59, 0, 0, 0, 81, 3, 3, 3, 163, 7, 7, 7, 244, 0, 0, 0, 255, 59, 59, 59, 255, 39, 39, 39, 252, 17, 17, 17, 240, 2, 2, 2, 249, 5, 5, 5, 224, 3, 3, 3, 174, 0, 0, 0, 141, 0, 0, 0, 126, 0, 0, 0, 124, 0, 0, 0, 122, 0, 0, 0, 120, 0, 0, 0, 117, 0, 0, 0, 113, 0, 0, 0, 109, 0, 0, 0, 104, 0, 0, 0, 98, 0, 0, 0, 92, 0, 0, 0, 85, 0, 0, 0, 78, 0, 0, 0, 70, 0, 0, 0, 62, 0, 0, 0, 54, 0, 0, 0, 46, 0, 0, 0, 39, 0, 0, 0, 33, 0, 0, 0, 26, 0, 0, 0, 21, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 19, 0, 0, 0, 34, 0, 0, 0, 54, 0, 0, 0, 75, 0, 0, 0, 128, 0, 0, 0, 254, 5, 5, 5, 215, 2, 2, 2, 165, 0, 0, 0, 137, 0, 0, 0, 126, 0, 0, 0, 123, 0, 0, 0, 122, 0, 0, 0, 119, 0, 0, 0, 116, 0, 0, 0, 112, 0, 0, 0, 108, 0, 0, 0, 103, 0, 0, 0, 97, 0, 0, 0, 91, 0, 0, 0, 84, 0, 0, 0, 76, 0, 0, 0, 69, 0, 0, 0, 61, 0, 0, 0, 53, 0, 0, 0, 45, 0, 0, 0, 38, 0, 0, 0, 32, 0, 0, 0, 25, 0, 0, 0, 20, 0, 0, 0, 16, 0, 0, 0, 12, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 30, 0, 0, 0, 49, 0, 0, 0, 70, 0, 0, 0, 109, 0, 0, 0, 105, 0, 0, 0, 114, 0, 0, 0, 117, 0, 0, 0, 115, 0, 0, 0, 112, 0, 0, 0, 107, 0, 0, 0, 102, 0, 0, 0, 96, 0, 0, 0, 89, 0, 0, 0, 82, 0, 0, 0, 75, 0, 0, 0, 67, 0, 0, 0, 59, 0, 0, 0, 51, 0, 0, 0, 44, 0, 0, 0, 37, 0, 0, 0, 30, 0, 0, 0, 24, 0, 0, 0, 19, 0, 0, 0, 15, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 26, 0, 0, 0, 44, 0, 0, 0, 64, 0, 0, 0, 82, 0, 0, 0, 94, 0, 0, 0, 98, 0, 0, 0, 95, 0, 0, 0, 89, 0, 0, 0, 81, 0, 0, 0, 74, 0, 0, 0, 66, 0, 0, 0, 58, 0, 0, 0, 50, 0, 0, 0, 43, 0, 0, 0, 36, 0, 0, 0, 29, 0, 0, 0, 24, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 38, 0, 0, 0, 54, 0, 0, 0, 65, 0, 0, 0, 68, 0, 0, 0, 64, 0, 0, 0, 57, 0, 0, 0, 49, 0, 0, 0, 42, 0, 0, 0, 35, 0, 0, 0, 28, 0, 0, 0, 23, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 9, 0, 0, 0, 17, 0, 0, 0, 28, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 33, 0, 0, 0, 28, 0, 0, 0, 22, 0, 0, 0, 17, 0, 0, 0, 13, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static Fl_Image *image_default() { static Fl_Image *image = new Fl_RGB_Image(idata_default, 128, 128, 4, 0); return image; } Fl_Button *PrevButton = (Fl_Button *)0; static void cb_PrevButton(Fl_Button *, void *) { Wizard->prev(); int i; for (i = 0; i < 4; i++) { Title[i]->activate(); if (Pane[i]->visible()) break; } for (i++; i < 4; i++) Title[i]->deactivate(); } Fl_Button *NextButton = (Fl_Button *)0; Fl_Button *CancelButton = (Fl_Button *)0; static void cb_CancelButton(Fl_Button *, void *) { exit(0); } Fl_Double_Window *make_window() { { UninstallWindow = new Fl_Double_Window(640, 310, "Uninstall"); UninstallWindow->callback((Fl_Callback *)cb_UninstallWindow); { Title[0] = new Fl_Box(10, 10, 130, 25, "Welcome"); Title[0]->labelfont(1); Title[0]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); } // Fl_Box* Title[0] { Title[1] = new Fl_Box(10, 35, 130, 25, "Select Software"); Title[1]->labelfont(1); Title[1]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); Title[1]->deactivate(); } // Fl_Box* Title[1] { Title[2] = new Fl_Box(10, 60, 130, 25, "Confirm"); Title[2]->labelfont(1); Title[2]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); Title[2]->deactivate(); } // Fl_Box* Title[2] { Title[3] = new Fl_Box(10, 85, 130, 25, "Removing"); Title[3]->labelfont(1); Title[3]->align(Fl_Align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE)); Title[3]->deactivate(); } // Fl_Box* Title[3] { Wizard = new Fl_Wizard(150, 10, 480, 255); Wizard->box(FL_THIN_DOWN_BOX); Wizard->color((Fl_Color)48); { Pane[0] = new Fl_Group(150, 10, 480, 255); Pane[0]->labelfont(1); Pane[0]->labelsize(18); Pane[0]->labelcolor((Fl_Color)4); Pane[0]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); Pane[0]->hide(); { ReadmeFile = new Fl_Help_View(170, 30, 440, 215); } // Fl_Help_View* ReadmeFile Pane[0]->end(); } // Fl_Group* Pane[0] { Pane[1] = new Fl_Group(150, 10, 480, 255); Pane[1]->labelfont(1); Pane[1]->labelsize(18); Pane[1]->labelcolor((Fl_Color)4); Pane[1]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); Pane[1]->hide(); { Fl_Box *o = new Fl_Box(170, 30, 440, 25, "Select the software to remove:"); o->align(Fl_Align(132 | FL_ALIGN_INSIDE)); } // Fl_Box* o { SoftwareList = new Fl_Check_Browser(170, 83, 440, 127, " Installed Software:"); SoftwareList->type(3); SoftwareList->box(FL_DOWN_BOX); SoftwareList->selection_color(FL_BACKGROUND2_COLOR); SoftwareList->labelfont(1); SoftwareList->callback((Fl_Callback *)list_cb); SoftwareList->align(Fl_Align(FL_ALIGN_TOP_LEFT)); SoftwareList->when(3); } // Fl_Check_Browser* SoftwareList { SoftwareSize = new Fl_Box(170, 215, 220, 35, "0k marked for removal."); SoftwareSize->align(Fl_Align(196 | FL_ALIGN_INSIDE)); } // Fl_Box* SoftwareSize { RemoveAllButton = new Fl_Button(400, 220, 90, 25, "Remove All"); RemoveAllButton->callback((Fl_Callback *)cb_RemoveAllButton); } // Fl_Button* RemoveAllButton { RemoveNoneButton = new Fl_Button(500, 220, 110, 25, "Remove None"); RemoveNoneButton->callback((Fl_Callback *)cb_RemoveNoneButton); } // Fl_Button* RemoveNoneButton Pane[1]->end(); } // Fl_Group* Pane[1] { Pane[2] = new Fl_Group(150, 10, 480, 255); Pane[2]->labelfont(1); Pane[2]->labelsize(18); Pane[2]->labelcolor((Fl_Color)4); Pane[2]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); Pane[2]->hide(); { Fl_Box *o = new Fl_Box(170, 30, 440, 25, "Confirm software selected for removal:"); o->align(Fl_Align(132 | FL_ALIGN_INSIDE)); } // Fl_Box* o { ConfirmList = new Fl_Browser(170, 83, 440, 162, "Software to Remove:"); ConfirmList->labelfont(1); ConfirmList->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Browser* ConfirmList Pane[2]->end(); } // Fl_Group* Pane[2] { Pane[3] = new Fl_Group(150, 10, 480, 255); Pane[3]->labelfont(1); Pane[3]->labelsize(18); Pane[3]->labelcolor((Fl_Color)4); Pane[3]->align(Fl_Align(FL_ALIGN_TOP_LEFT | FL_ALIGN_INSIDE)); { RemovePercent = new Fl_Progress(170, 45, 440, 15, "Progress Label..."); RemovePercent->color((Fl_Color)48); RemovePercent->selection_color((Fl_Color)221); RemovePercent->align(Fl_Align(FL_ALIGN_TOP_LEFT)); } // Fl_Progress* RemovePercent { RemoveLog = new Fl_Browser(170, 70, 440, 175); } // Fl_Browser* RemoveLog Pane[3]->end(); } // Fl_Group* Pane[3] Wizard->end(); } // Fl_Wizard* Wizard { WelcomeImage = new Fl_Box(10, 170, 130, 130); WelcomeImage->image(image_default()); WelcomeImage->align(Fl_Align(FL_ALIGN_BOTTOM_LEFT | FL_ALIGN_INSIDE)); } // Fl_Box* WelcomeImage { PrevButton = new Fl_Button(396, 275, 72, 25, "@-2< Back"); PrevButton->callback((Fl_Callback *)cb_PrevButton); } // Fl_Button* PrevButton { NextButton = new Fl_Button(478, 275, 74, 25, "Next @-2>"); NextButton->callback((Fl_Callback *)next_cb); } // Fl_Button* NextButton { CancelButton = new Fl_Button(562, 275, 68, 25, "Cancel"); CancelButton->callback((Fl_Callback *)cb_CancelButton); } // Fl_Button* CancelButton UninstallWindow->end(); } // Fl_Double_Window* UninstallWindow return UninstallWindow; } jimjag-epm-84910c6/uninst.fl000066400000000000000000000064021521151356300156610ustar00rootroot00000000000000# data file for the Fltk User Interface Designer (fluid) version 1.0304 header_name {.h} code_name {.cxx} Function {make_window()} {open } { Fl_Window UninstallWindow { label Uninstall callback {if (CancelButton->active()) exit(0);} open selected xywh {264 45 640 310} type Double code0 {\#include "gui-common.h"} visible } { Fl_Box {Title[0]} { label Welcome xywh {10 10 130 25} labelfont 1 align 20 } Fl_Box {Title[1]} { label {Select Software} xywh {10 35 130 25} labelfont 1 align 20 deactivate } Fl_Box {Title[2]} { label Confirm xywh {10 60 130 25} labelfont 1 align 20 deactivate } Fl_Box {Title[3]} { label Removing xywh {10 85 130 25} labelfont 1 align 20 deactivate } Fl_Wizard Wizard {open xywh {150 10 480 255} box THIN_DOWN_BOX color 48 } { Fl_Group {Pane[0]} {open xywh {150 10 480 255} labelfont 1 labelsize 18 labelcolor 4 align 21 hide } { Fl_Help_View ReadmeFile { xywh {170 30 440 215} } } Fl_Group {Pane[1]} {open xywh {150 10 480 255} labelfont 1 labelsize 18 labelcolor 4 align 21 hide } { Fl_Box {} { label {Select the software to remove:} xywh {170 30 440 25} align 148 } Fl_Check_Browser SoftwareList { label { Installed Software:} callback list_cb xywh {170 83 440 127} type Multi box DOWN_BOX selection_color 7 labelfont 1 align 5 when 3 } Fl_Box SoftwareSize { label {0k marked for removal.} xywh {170 215 220 35} align 212 } Fl_Button RemoveAllButton { label {Remove All} callback {SoftwareList->check_all(); list_cb(0,0);} xywh {400 220 90 25} } Fl_Button RemoveNoneButton { label {Remove None} callback {SoftwareList->check_none(); list_cb(0,0);} xywh {500 220 110 25} } } Fl_Group {Pane[2]} {open xywh {150 10 480 255} labelfont 1 labelsize 18 labelcolor 4 align 21 hide } { Fl_Box {} { label {Confirm software selected for removal:} xywh {170 30 440 25} align 148 } Fl_Browser ConfirmList { label {Software to Remove:} xywh {170 83 440 162} labelfont 1 align 5 } } Fl_Group {Pane[3]} {open xywh {150 10 480 255} labelfont 1 labelsize 18 labelcolor 4 align 21 } { Fl_Progress RemovePercent { label {Progress Label...} xywh {170 45 440 15} color 48 selection_color 221 align 5 } Fl_Browser RemoveLog { xywh {170 70 440 175} } } } Fl_Box WelcomeImage { image {default.png} xywh {10 170 130 130} align 22 } Fl_Button PrevButton { label {@-2< Back} callback {Wizard->prev(); int i; for (i = 0; i < 4; i ++) { Title[i]->activate(); if (Pane[i]->visible()) break; } for (i ++; i < 4; i ++) Title[i]->deactivate();} xywh {396 275 72 25} } Fl_Button NextButton { label {Next @-2>} callback next_cb xywh {478 275 74 25} } Fl_Button CancelButton { label Cancel callback {exit(0);} xywh {562 275 68 25} } } } jimjag-epm-84910c6/uninst.h000066400000000000000000000020221521151356300155010ustar00rootroot00000000000000// generated by Fast Light User Interface Designer (fluid) version 1.0304 #ifndef uninst_h #define uninst_h #include "gui-common.h" #include #include extern Fl_Double_Window *UninstallWindow; #include extern Fl_Box *Title[4]; #include extern Fl_Wizard *Wizard; #include #include extern Fl_Help_View *ReadmeFile; #include extern void list_cb(Fl_Check_Browser *, void *); extern Fl_Check_Browser *SoftwareList; extern Fl_Box *SoftwareSize; #include extern Fl_Button *RemoveAllButton; extern Fl_Button *RemoveNoneButton; #include extern Fl_Browser *ConfirmList; extern Fl_Group *Pane[4]; #include extern Fl_Progress *RemovePercent; extern Fl_Browser *RemoveLog; extern Fl_Box *WelcomeImage; extern Fl_Button *PrevButton; extern void next_cb(Fl_Button *, void *); extern Fl_Button *NextButton; extern Fl_Button *CancelButton; Fl_Double_Window *make_window(); #endif jimjag-epm-84910c6/uninst2.cxx000066400000000000000000000466371521151356300161620ustar00rootroot00000000000000// // ESP Software Removal Wizard main entry for the ESP Package Manager (EPM). // // Copyright © 2020 by Jim Jagielski // Copyright 1999-2017 by Michael R Sweet // Copyright 1999-2010 by Easy Software Products. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #define _DEFINE_GLOBALS_ #include "uninst.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_PARAM_H #include #endif // HAVE_SYS_PARAM_H #ifdef HAVE_SYS_MOUNT_H #include #endif // HAVE_SYS_MOUNT_H #ifdef HAVE_SYS_STATFS_H #include #endif // HAVE_SYS_STATFS_H #ifdef HAVE_SYS_VFS_H #include #endif // HAVE_SYS_VFS_H #ifdef __osf__ // No prototype for statfs under Tru64... extern "C" { extern int statfs(const char *, struct statfs *); } #endif // __osf__ #ifdef __APPLE__ #include #include #include AuthorizationRef SetupAuthorizationRef; #endif // __APPLE__ // // Panes... // #define PANE_WELCOME 0 #define PANE_SELECT 1 #define PANE_CONFIRM 2 #define PANE_REMOVE 3 // // Local functions... // void load_image(void); void load_readme(void); void log_cb(int fd, int *fdptr); int remove_dist(const gui_dist_t *dist); void show_installed(void); void update_sizes(void); // // 'main()' - Main entry for software wizard... // int // O - Exit status main(int argc, // I - Number of command-line arguments char *argv[]) // I - Command-line arguments { Fl_Window *w; // Main window... // Use GTK+ scheme for all operating systems... Fl::background(230, 230, 230); Fl::scheme("gtk+"); #ifdef __APPLE__ // macOS uses the setup program in a bundle, so get the bundle's directory. CFBundleRef mainBundle = CFBundleGetMainBundle(); char mainPath[1024] = ""; if (mainBundle) { CFURLRef mainURL = CFBundleCopyBundleURL(mainBundle); CFStringRef mainCFPath = CFURLCopyFileSystemPath(mainURL, kCFURLPOSIXPathStyle); if (CFStringGetCString(mainCFPath, mainPath, sizeof(mainPath), kCFStringEncodingUTF8)) { strlcat(mainPath, "/Contents/Resources", sizeof(mainPath)); fprintf(stderr, "Using \"%s\" as the distribution directory.\n", mainPath); chdir(mainPath); } CFRelease(mainCFPath); CFRelease(mainURL); } #endif // __APPLE__ w = make_window(); Pane[PANE_WELCOME]->show(); PrevButton->deactivate(); NextButton->deactivate(); gui_get_installed(); show_installed(); load_image(); load_readme(); w->show(); while (!w->visible()) Fl::wait(); #ifdef __APPLE__ OSStatus status; status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &SetupAuthorizationRef); if (status != errAuthorizationSuccess) { fl_alert("You must have administrative priviledges to remove this software!"); return (1); } AuthorizationItem items = {kAuthorizationRightExecute, 0, NULL, 0}; AuthorizationRights rights = {1, &items}; status = AuthorizationCopyRights( SetupAuthorizationRef, &rights, NULL, kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights, NULL); if (status != errAuthorizationSuccess) { fl_alert("You must have administrative priviledges to remove this software!"); return (1); } #else if (getuid() != 0) { fl_alert("You must be logged in as root to run uninstall!"); return (1); } #endif // __APPLE__ NextButton->activate(); Fl::run(); #ifdef __APPLE__ AuthorizationFree(SetupAuthorizationRef, kAuthorizationFlagDefaults); #endif // __APPLE__ return (0); } // // 'list_cb()' - Handle selections in the software list. // void list_cb(Fl_Check_Browser *, void *) { int i, j, k; gui_dist_t *dist, *dist2; gui_depend_t *depend; if (SoftwareList->nchecked() == 0) { update_sizes(); NextButton->deactivate(); return; } for (i = 0, dist = Installed; i < NumInstalled; i++, dist++) if (SoftwareList->checked(i + 1)) { // Check for required/incompatible products... for (j = 0, depend = dist->depends; j < dist->num_depends; j++, depend++) switch (depend->type) { case DEPEND_REQUIRES: if ((dist2 = gui_find_dist(depend->product, NumInstalled, Installed)) != NULL) { // Software is in the list, is it selected? k = dist2 - Installed; if (SoftwareList->checked(k + 1)) continue; // Nope, select it unless we're unchecked another selection... if (SoftwareList->value() != (k + 1)) SoftwareList->checked(k + 1, 1); else { SoftwareList->checked(i + 1, 0); break; } } else if ((dist2 = gui_find_dist(depend->product, NumInstalled, Installed)) == NULL) { // Required but not installed or available! fl_alert( "%s requires %s to be installed, but it is not available " "for installation.", dist->name, depend->product); SoftwareList->checked(i + 1, 0); break; } break; case DEPEND_INCOMPAT: if ((dist2 = gui_find_dist(depend->product, NumInstalled, Installed)) != NULL) { // Already installed! fl_alert("%s is incompatible with %s. Please remove it before " "installing this software.", dist->name, dist2->name); SoftwareList->checked(i + 1, 0); break; } else if ((dist2 = gui_find_dist(depend->product, NumInstalled, Installed)) != NULL) { // Software is in the list, is it selected? k = dist2 - Installed; // Software is in the list, is it selected? if (!SoftwareList->checked(k + 1)) continue; // Yes, tell the user... fl_alert("%s is incompatible with %s. Please deselect it before " "installing this software.", dist->name, dist2->name); SoftwareList->checked(i + 1, 0); break; } default: break; } } update_sizes(); if (SoftwareList->nchecked()) NextButton->activate(); else NextButton->deactivate(); } // // 'load_image()' - Load the setup image file (setup.gif/xpm)... // void load_image(void) { Fl_Image *img; // New image if (!access("setup.xpm", 0)) img = new Fl_XPM_Image("setup.xpm"); else if (!access("setup.gif", 0)) img = new Fl_GIF_Image("setup.gif"); else if (!access("setup.jpg", 0)) img = new Fl_JPEG_Image("setup.jpg"); else if (!access("setup.png", 0)) img = new Fl_PNG_Image("setup.png"); else img = NULL; if (img) WelcomeImage->image(img); } // // 'load_readme()' - Load the readme file... // void load_readme(void) { ReadmeFile->textfont(FL_HELVETICA); ReadmeFile->textsize(14); if (access("uninst.readme", 0)) { int i; // Looping var gui_dist_t *dist; // Current distribution char *buffer, // Text buffer *ptr; // Pointer into buffer buffer = new char[1024 + NumInstalled * 400]; strcpy(buffer, "This program allows you to remove the following " "software:

        \n" "
          \n"); ptr = buffer + strlen(buffer); for (i = NumInstalled, dist = Installed; i > 0; i--, dist++) { sprintf(ptr, "
        • %s, %s\n", dist->name, dist->version); ptr += strlen(ptr); } strcpy(ptr, "
        "); ReadmeFile->value(buffer); delete[] buffer; } else gui_load_file(ReadmeFile, "uninst.readme"); } // // 'log_cb()' - Add one or more lines of text to the removal log. // void log_cb(int fd, // I - Pipe to read from int *fdptr) // O - Pipe to read from { int bytes; // Bytes read/to read char *bufptr; // Pointer into buffer static int bufused = 0; // Number of bytes used static char buffer[8193]; // Buffer bytes = 8192 - bufused; if ((bytes = read(fd, buffer + bufused, bytes)) <= 0) { // End of file; zero the FD to tell the remove_dist() function to // stop... Fl::remove_fd(fd); close(fd); *fdptr = 0; if (bufused > 0) { // Add remaining text... buffer[bufused] = '\0'; RemoveLog->add(buffer); bufused = 0; } } else { // Add bytes to the buffer, then add lines as needed... bufused += bytes; buffer[bufused] = '\0'; while ((bufptr = strchr(buffer, '\n')) != NULL) { *bufptr++ = '\0'; RemoveLog->add(buffer); strcpy(buffer, bufptr); bufused -= bufptr - buffer; } } RemoveLog->bottomline(RemoveLog->size()); } // // 'next_cb()' - Show software selections or remove software. // void next_cb(Fl_Button *, void *) { int i; // Looping var int progress; // Progress so far... int error; // Errors? static char message[1024]; // Progress message... static int removing = 0; // Removing software? Wizard->next(); PrevButton->deactivate(); if (Wizard->value() == Pane[PANE_CONFIRM]) { ConfirmList->clear(); PrevButton->activate(); for (i = 0; i < NumInstalled; i++) if (SoftwareList->checked(i + 1)) ConfirmList->add(SoftwareList->text(i + 1)); } if (Wizard->value() == Pane[PANE_REMOVE] && !removing) { removing = 1; NextButton->deactivate(); CancelButton->deactivate(); CancelButton->label("Close"); for (i = 0, progress = 0, error = 0; i < NumInstalled; i++) if (SoftwareList->checked(i + 1)) { sprintf(message, "Removing %s v%s...", Installed[i].name, Installed[i].version); RemovePercent->value(100.0 * progress / SoftwareList->nchecked()); RemovePercent->label(message); Pane[PANE_REMOVE]->redraw(); if ((error = remove_dist(Installed + i)) != 0) break; progress++; } RemovePercent->value(100.0); if (error) RemovePercent->label("Removal Failed!"); else RemovePercent->label("Removal Complete"); Pane[PANE_REMOVE]->redraw(); CancelButton->activate(); fl_beep(); removing = 0; } else if (Wizard->value() == Pane[PANE_SELECT] && SoftwareList->nchecked() == 0) NextButton->deactivate(); } // // 'remove_dist()' - Remove a distribution... // int // O - Remove status remove_dist(const gui_dist_t *dist) // I - Distribution to remove { char command[1024]; // Command string int fds[2]; // Pipe FDs int status = 0; // Exit status #ifndef __APPLE__ int pid; // Process ID #endif // !__APPLE__ snprintf(command, sizeof(command), "**** %s ****", dist->name); RemoveLog->add(command); if (dist->type == PACKAGE_PORTABLE) snprintf(command, sizeof(command), EPM_SOFTWARE "/%s.remove", dist->product); #ifdef __APPLE__ // Run the remove script using Apple's authorization API... FILE *fp = NULL; char *args[2] = {(char *)"now", NULL}; OSStatus astatus; astatus = AuthorizationExecuteWithPrivileges(SetupAuthorizationRef, command, kAuthorizationFlagDefaults, args, &fp); if (astatus != errAuthorizationSuccess) { RemoveLog->add("Failed to execute remove script!"); return (1); } fds[0] = fileno(fp); #else // Fork the command and redirect errors and info to stdout... pipe(fds); if ((pid = fork()) == 0) { // Child comes here; start by redirecting stdout and stderr... close(1); close(2); dup(fds[1]); dup(fds[1]); // Close the original pipes... close(fds[0]); close(fds[1]); // Execute the command; if an error occurs, return it... if (dist->type == PACKAGE_PORTABLE) execl(command, command, "now", (char *)0); else execlp("rpm", "rpm", "-e", "--nodeps", dist->product, (char *)0); exit(errno); } else if (pid < 0) { // Unable to fork! sprintf(command, "Unable to remove %s:", dist->name); RemoveLog->add(command); sprintf(command, "\t%s", strerror(errno)); RemoveLog->add(command); close(fds[0]); close(fds[1]); return (1); } // Close the output pipe (used by the child)... close(fds[1]); #endif // __APPLE__ // Listen for data on the input pipe... Fl::add_fd(fds[0], (void (*)(int, void *))log_cb, fds); // Show the user that we're busy... UninstallWindow->cursor(FL_CURSOR_WAIT); // Loop until the child is done... while (fds[0]) // log_cb() will close and zero fds[0]... { // Wait for events... Fl::wait(); #ifndef __APPLE__ // Check to see if the child went away... if (waitpid(0, &status, WNOHANG) == pid) break; #endif // !__APPLE__ } #ifdef __APPLE__ fclose(fp); #endif // __APPLE__ if (fds[0]) { // Close the pipe - have all the data from the child... Fl::remove_fd(fds[0]); close(fds[0]); } else { // Get the child's exit status... wait(&status); } // Show the user that we're ready... UninstallWindow->cursor(FL_CURSOR_DEFAULT); // Return... return (status); } // // 'show_installed()' - Show the installed software products. // void show_installed() { int i; // Looping var gui_dist_t *temp; // Pointer to current distribution char line[1024]; // Product name and version... if (NumInstalled == 0) { fl_alert("No software found to remove!"); exit(1); } for (i = 0, temp = Installed; i < NumInstalled; i++, temp++) { sprintf(line, "%s v%s", temp->name, temp->version); SoftwareList->add(line, 0); } update_sizes(); } // // 'update_size()' - Update the total +/- sizes of the installations. // void update_sizes(void) { int i; // Looping var gui_dist_t *dist, // Distribution *installed; // Installed distribution int rootsize, // Total root size difference in kbytes usrsize; // Total /usr size difference in kbytes struct statfs rootpart, // Available root partition usrpart; // Available /usr partition int rootfree, // Free space on root partition usrfree; // Free space on /usr partition static char sizelabel[1024]; // Label for selected sizes... // Get the sizes for the selected products... for (i = 0, dist = Installed, rootsize = 0, usrsize = 0; i < NumInstalled; i++, dist++) if (SoftwareList->checked(i + 1)) { rootsize += dist->rootsize; usrsize += dist->usrsize; if ((installed = gui_find_dist(dist->product, NumInstalled, Installed)) != NULL) { rootsize -= installed->rootsize; usrsize -= installed->usrsize; } } // Get the sizes of the root and /usr partition... #if defined(__sgi) || defined(__svr4__) || defined(__SVR4) || defined(M_XENIX) if (statfs("/", &rootpart, sizeof(rootpart), 0)) #else if (statfs("/", &rootpart)) #endif // __sgi || __svr4__ || __SVR4 || M_XENIX rootfree = 1024; else rootfree = (int)((double)rootpart.f_bfree * (double)rootpart.f_bsize / 1024.0 / 1024.0 + 0.5); #if defined(__sgi) || defined(__svr4__) || defined(__SVR4) || defined(M_XENIX) if (statfs("/usr", &usrpart, sizeof(usrpart), 0)) #else if (statfs("/usr", &usrpart)) #endif // __sgi || __svr4__ || __SVR4 || M_XENIX usrfree = 1024; else usrfree = (int)((double)usrpart.f_bfree * (double)usrpart.f_bsize / 1024.0 / 1024.0 + 0.5); // Display the results to the user... if (rootfree == usrfree) { rootsize += usrsize; if (rootsize >= 1024) snprintf(sizelabel, sizeof(sizelabel), "%+.1fm required, %dm available.", rootsize / 1024.0, rootfree); else snprintf(sizelabel, sizeof(sizelabel), "%+dk required, %dm available.", rootsize, rootfree); } else if (rootsize >= 1024 && usrsize >= 1024) snprintf(sizelabel, sizeof(sizelabel), "%+.1fm required on /, %dm available,\n" "%+.1fm required on /usr, %dm available.", rootsize / 1024.0, rootfree, usrsize / 1024.0, usrfree); else if (rootsize >= 1024) snprintf(sizelabel, sizeof(sizelabel), "%+.1fm required on /, %dm available,\n" "%+dk required on /usr, %dm available.", rootsize / 1024.0, rootfree, usrsize, usrfree); else if (usrsize >= 1024) snprintf(sizelabel, sizeof(sizelabel), "%+dk required on /, %dm available,\n" "%+.1fm required on /usr, %dm available.", rootsize, rootfree, usrsize / 1024.0, usrfree); else snprintf(sizelabel, sizeof(sizelabel), "%+dk required on /, %dm available,\n" "%+dk required on /usr, %dm available.", rootsize, rootfree, usrsize, usrfree); SoftwareSize->label(sizelabel); SoftwareSize->redraw(); }