diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 16:23:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 16:23:22 +0000 |
commit | e42129241681dde7adae7d20697e7b421682fbb4 (patch) | |
tree | af1fe815a5e639e68e59fabd8395ec69458b3e5e /app/dialogs | |
parent | Initial commit. (diff) | |
download | gimp-e42129241681dde7adae7d20697e7b421682fbb4.tar.xz gimp-e42129241681dde7adae7d20697e7b421682fbb4.zip |
Adding upstream version 2.10.22.upstream/2.10.22upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'app/dialogs')
89 files changed, 38121 insertions, 0 deletions
diff --git a/app/dialogs/Makefile.am b/app/dialogs/Makefile.am new file mode 100644 index 0000000..a8d0768 --- /dev/null +++ b/app/dialogs/Makefile.am @@ -0,0 +1,120 @@ +## Process this file with automake to produce Makefile.in + +AM_CPPFLAGS = \ + -DG_LOG_DOMAIN=\"Gimp-Dialogs\" \ + -I$(top_builddir) \ + -I$(top_srcdir) \ + -I$(top_builddir)/app \ + -I$(top_srcdir)/app \ + $(GEGL_CFLAGS) \ + $(GTK_CFLAGS) \ + -I$(includedir) + +noinst_LIBRARIES = libappdialogs.a + +libappdialogs_a_sources = \ + dialogs-types.h \ + dialogs.c \ + dialogs.h \ + dialogs-constructors.c \ + dialogs-constructors.h \ + \ + about-dialog.c \ + about-dialog.h \ + action-search-dialog.c \ + action-search-dialog.h \ + channel-options-dialog.c \ + channel-options-dialog.h \ + color-profile-dialog.c \ + color-profile-dialog.h \ + color-profile-import-dialog.c \ + color-profile-import-dialog.h \ + convert-indexed-dialog.c \ + convert-indexed-dialog.h \ + convert-precision-dialog.c \ + convert-precision-dialog.h \ + data-delete-dialog.c \ + data-delete-dialog.h \ + file-open-dialog.c \ + file-open-dialog.h \ + file-open-location-dialog.c \ + file-open-location-dialog.h \ + file-save-dialog.c \ + file-save-dialog.h \ + fill-dialog.c \ + fill-dialog.h \ + grid-dialog.h \ + grid-dialog.c \ + image-merge-layers-dialog.c \ + image-merge-layers-dialog.h \ + image-new-dialog.c \ + image-new-dialog.h \ + image-properties-dialog.c \ + image-properties-dialog.h \ + image-scale-dialog.c \ + image-scale-dialog.h \ + input-devices-dialog.c \ + input-devices-dialog.h \ + item-options-dialog.c \ + item-options-dialog.h \ + keyboard-shortcuts-dialog.c \ + keyboard-shortcuts-dialog.h \ + layer-add-mask-dialog.c \ + layer-add-mask-dialog.h \ + layer-options-dialog.c \ + layer-options-dialog.h \ + lebl-dialog.c \ + lebl-dialog.h \ + module-dialog.c \ + module-dialog.h \ + palette-import-dialog.c \ + palette-import-dialog.h \ + preferences-dialog.c \ + preferences-dialog.h \ + preferences-dialog-utils.c \ + preferences-dialog-utils.h \ + print-size-dialog.c \ + print-size-dialog.h \ + quit-dialog.c \ + quit-dialog.h \ + resize-dialog.c \ + resize-dialog.h \ + resolution-calibrate-dialog.c \ + resolution-calibrate-dialog.h \ + scale-dialog.c \ + scale-dialog.h \ + stroke-dialog.c \ + stroke-dialog.h \ + template-options-dialog.c \ + template-options-dialog.h \ + tips-dialog.c \ + tips-dialog.h \ + tips-parser.c \ + tips-parser.h \ + user-install-dialog.c \ + user-install-dialog.h \ + vectors-export-dialog.c \ + vectors-export-dialog.h \ + vectors-import-dialog.c \ + vectors-import-dialog.h \ + vectors-options-dialog.c \ + vectors-options-dialog.h + +libappdialogs_a_built_sources = \ + authors.h + +libappdialogs_a_SOURCES = \ + $(libappdialogs_a_built_sources) $(libappdialogs_a_sources) + +EXTRA_DIST = \ + authors.xsl + + +$(srcdir)/about-dialog.c: authors.h + +authors.h: $(top_srcdir)/authors.xml $(srcdir)/authors.xsl +if HAVE_XSLTPROC + $(XSLTPROC) $(srcdir)/authors.xsl $< > $(@) || rm -f $(@) +else + @echo "*** xsltproc is required to regenerate $(@) ***"; exit 1; +endif diff --git a/app/dialogs/Makefile.in b/app/dialogs/Makefile.in new file mode 100644 index 0000000..1c700fa --- /dev/null +++ b/app/dialogs/Makefile.in @@ -0,0 +1,1196 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = app/dialogs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/intltool.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4macros/alsa.m4 \ + $(top_srcdir)/m4macros/ax_compare_version.m4 \ + $(top_srcdir)/m4macros/ax_cxx_compile_stdcxx.m4 \ + $(top_srcdir)/m4macros/ax_gcc_func_attribute.m4 \ + $(top_srcdir)/m4macros/ax_prog_cc_for_build.m4 \ + $(top_srcdir)/m4macros/ax_prog_perl_version.m4 \ + $(top_srcdir)/m4macros/detectcflags.m4 \ + $(top_srcdir)/m4macros/pythondev.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libappdialogs_a_AR = $(AR) $(ARFLAGS) +libappdialogs_a_LIBADD = +am__objects_1 = +am__objects_2 = dialogs.$(OBJEXT) dialogs-constructors.$(OBJEXT) \ + about-dialog.$(OBJEXT) action-search-dialog.$(OBJEXT) \ + channel-options-dialog.$(OBJEXT) \ + color-profile-dialog.$(OBJEXT) \ + color-profile-import-dialog.$(OBJEXT) \ + convert-indexed-dialog.$(OBJEXT) \ + convert-precision-dialog.$(OBJEXT) \ + data-delete-dialog.$(OBJEXT) file-open-dialog.$(OBJEXT) \ + file-open-location-dialog.$(OBJEXT) file-save-dialog.$(OBJEXT) \ + fill-dialog.$(OBJEXT) grid-dialog.$(OBJEXT) \ + image-merge-layers-dialog.$(OBJEXT) image-new-dialog.$(OBJEXT) \ + image-properties-dialog.$(OBJEXT) image-scale-dialog.$(OBJEXT) \ + input-devices-dialog.$(OBJEXT) item-options-dialog.$(OBJEXT) \ + keyboard-shortcuts-dialog.$(OBJEXT) \ + layer-add-mask-dialog.$(OBJEXT) layer-options-dialog.$(OBJEXT) \ + lebl-dialog.$(OBJEXT) module-dialog.$(OBJEXT) \ + palette-import-dialog.$(OBJEXT) preferences-dialog.$(OBJEXT) \ + preferences-dialog-utils.$(OBJEXT) print-size-dialog.$(OBJEXT) \ + quit-dialog.$(OBJEXT) resize-dialog.$(OBJEXT) \ + resolution-calibrate-dialog.$(OBJEXT) scale-dialog.$(OBJEXT) \ + stroke-dialog.$(OBJEXT) template-options-dialog.$(OBJEXT) \ + tips-dialog.$(OBJEXT) tips-parser.$(OBJEXT) \ + user-install-dialog.$(OBJEXT) vectors-export-dialog.$(OBJEXT) \ + vectors-import-dialog.$(OBJEXT) \ + vectors-options-dialog.$(OBJEXT) +am_libappdialogs_a_OBJECTS = $(am__objects_1) $(am__objects_2) +libappdialogs_a_OBJECTS = $(am_libappdialogs_a_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/about-dialog.Po \ + ./$(DEPDIR)/action-search-dialog.Po \ + ./$(DEPDIR)/channel-options-dialog.Po \ + ./$(DEPDIR)/color-profile-dialog.Po \ + ./$(DEPDIR)/color-profile-import-dialog.Po \ + ./$(DEPDIR)/convert-indexed-dialog.Po \ + ./$(DEPDIR)/convert-precision-dialog.Po \ + ./$(DEPDIR)/data-delete-dialog.Po \ + ./$(DEPDIR)/dialogs-constructors.Po ./$(DEPDIR)/dialogs.Po \ + ./$(DEPDIR)/file-open-dialog.Po \ + ./$(DEPDIR)/file-open-location-dialog.Po \ + ./$(DEPDIR)/file-save-dialog.Po ./$(DEPDIR)/fill-dialog.Po \ + ./$(DEPDIR)/grid-dialog.Po \ + ./$(DEPDIR)/image-merge-layers-dialog.Po \ + ./$(DEPDIR)/image-new-dialog.Po \ + ./$(DEPDIR)/image-properties-dialog.Po \ + ./$(DEPDIR)/image-scale-dialog.Po \ + ./$(DEPDIR)/input-devices-dialog.Po \ + ./$(DEPDIR)/item-options-dialog.Po \ + ./$(DEPDIR)/keyboard-shortcuts-dialog.Po \ + ./$(DEPDIR)/layer-add-mask-dialog.Po \ + ./$(DEPDIR)/layer-options-dialog.Po ./$(DEPDIR)/lebl-dialog.Po \ + ./$(DEPDIR)/module-dialog.Po \ + ./$(DEPDIR)/palette-import-dialog.Po \ + ./$(DEPDIR)/preferences-dialog-utils.Po \ + ./$(DEPDIR)/preferences-dialog.Po \ + ./$(DEPDIR)/print-size-dialog.Po ./$(DEPDIR)/quit-dialog.Po \ + ./$(DEPDIR)/resize-dialog.Po \ + ./$(DEPDIR)/resolution-calibrate-dialog.Po \ + ./$(DEPDIR)/scale-dialog.Po ./$(DEPDIR)/stroke-dialog.Po \ + ./$(DEPDIR)/template-options-dialog.Po \ + ./$(DEPDIR)/tips-dialog.Po ./$(DEPDIR)/tips-parser.Po \ + ./$(DEPDIR)/user-install-dialog.Po \ + ./$(DEPDIR)/vectors-export-dialog.Po \ + ./$(DEPDIR)/vectors-import-dialog.Po \ + ./$(DEPDIR)/vectors-options-dialog.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libappdialogs_a_SOURCES) +DIST_SOURCES = $(libappdialogs_a_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +AA_LIBS = @AA_LIBS@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALL_LINGUAS = @ALL_LINGUAS@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +ALTIVEC_EXTRA_CFLAGS = @ALTIVEC_EXTRA_CFLAGS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +APPSTREAM_UTIL = @APPSTREAM_UTIL@ +AR = @AR@ +AS = @AS@ +ATK_CFLAGS = @ATK_CFLAGS@ +ATK_LIBS = @ATK_LIBS@ +ATK_REQUIRED_VERSION = @ATK_REQUIRED_VERSION@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BABL_CFLAGS = @BABL_CFLAGS@ +BABL_LIBS = @BABL_LIBS@ +BABL_REQUIRED_VERSION = @BABL_REQUIRED_VERSION@ +BUG_REPORT_URL = @BUG_REPORT_URL@ +BUILD_EXEEXT = @BUILD_EXEEXT@ +BUILD_OBJEXT = @BUILD_OBJEXT@ +BZIP2_LIBS = @BZIP2_LIBS@ +CAIRO_CFLAGS = @CAIRO_CFLAGS@ +CAIRO_LIBS = @CAIRO_LIBS@ +CAIRO_PDF_CFLAGS = @CAIRO_PDF_CFLAGS@ +CAIRO_PDF_LIBS = @CAIRO_PDF_LIBS@ +CAIRO_PDF_REQUIRED_VERSION = @CAIRO_PDF_REQUIRED_VERSION@ +CAIRO_REQUIRED_VERSION = @CAIRO_REQUIRED_VERSION@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CC_FOR_BUILD = @CC_FOR_BUILD@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ +CPP_FOR_BUILD = @CPP_FOR_BUILD@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DESKTOP_DATADIR = @DESKTOP_DATADIR@ +DESKTOP_FILE_VALIDATE = @DESKTOP_FILE_VALIDATE@ +DLLTOOL = @DLLTOOL@ +DOC_SHOOTER = @DOC_SHOOTER@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILE_AA = @FILE_AA@ +FILE_EXR = @FILE_EXR@ +FILE_HEIF = @FILE_HEIF@ +FILE_JP2_LOAD = @FILE_JP2_LOAD@ +FILE_MNG = @FILE_MNG@ +FILE_PDF_SAVE = @FILE_PDF_SAVE@ +FILE_PS = @FILE_PS@ +FILE_WMF = @FILE_WMF@ +FILE_XMC = @FILE_XMC@ +FILE_XPM = @FILE_XPM@ +FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ +FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ +FONTCONFIG_REQUIRED_VERSION = @FONTCONFIG_REQUIRED_VERSION@ +FREETYPE2_REQUIRED_VERSION = @FREETYPE2_REQUIRED_VERSION@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +GDBUS_CODEGEN = @GDBUS_CODEGEN@ +GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ +GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@ +GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ +GDK_PIXBUF_REQUIRED_VERSION = @GDK_PIXBUF_REQUIRED_VERSION@ +GEGL = @GEGL@ +GEGL_CFLAGS = @GEGL_CFLAGS@ +GEGL_LIBS = @GEGL_LIBS@ +GEGL_MAJOR_MINOR_VERSION = @GEGL_MAJOR_MINOR_VERSION@ +GEGL_REQUIRED_VERSION = @GEGL_REQUIRED_VERSION@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GEXIV2_CFLAGS = @GEXIV2_CFLAGS@ +GEXIV2_LIBS = @GEXIV2_LIBS@ +GEXIV2_REQUIRED_VERSION = @GEXIV2_REQUIRED_VERSION@ +GIMP_API_VERSION = @GIMP_API_VERSION@ +GIMP_APP_VERSION = @GIMP_APP_VERSION@ +GIMP_BINARY_AGE = @GIMP_BINARY_AGE@ +GIMP_COMMAND = @GIMP_COMMAND@ +GIMP_DATA_VERSION = @GIMP_DATA_VERSION@ +GIMP_FULL_NAME = @GIMP_FULL_NAME@ +GIMP_INTERFACE_AGE = @GIMP_INTERFACE_AGE@ +GIMP_MAJOR_VERSION = @GIMP_MAJOR_VERSION@ +GIMP_MICRO_VERSION = @GIMP_MICRO_VERSION@ +GIMP_MINOR_VERSION = @GIMP_MINOR_VERSION@ +GIMP_MKENUMS = @GIMP_MKENUMS@ +GIMP_MODULES = @GIMP_MODULES@ +GIMP_PACKAGE_REVISION = @GIMP_PACKAGE_REVISION@ +GIMP_PKGCONFIG_VERSION = @GIMP_PKGCONFIG_VERSION@ +GIMP_PLUGINS = @GIMP_PLUGINS@ +GIMP_PLUGIN_VERSION = @GIMP_PLUGIN_VERSION@ +GIMP_REAL_VERSION = @GIMP_REAL_VERSION@ +GIMP_SYSCONF_VERSION = @GIMP_SYSCONF_VERSION@ +GIMP_TOOL_VERSION = @GIMP_TOOL_VERSION@ +GIMP_UNSTABLE = @GIMP_UNSTABLE@ +GIMP_USER_VERSION = @GIMP_USER_VERSION@ +GIMP_VERSION = @GIMP_VERSION@ +GIO_CFLAGS = @GIO_CFLAGS@ +GIO_LIBS = @GIO_LIBS@ +GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@ +GIO_UNIX_LIBS = @GIO_UNIX_LIBS@ +GIO_WINDOWS_CFLAGS = @GIO_WINDOWS_CFLAGS@ +GIO_WINDOWS_LIBS = @GIO_WINDOWS_LIBS@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GLIB_REQUIRED_VERSION = @GLIB_REQUIRED_VERSION@ +GMODULE_NO_EXPORT_CFLAGS = @GMODULE_NO_EXPORT_CFLAGS@ +GMODULE_NO_EXPORT_LIBS = @GMODULE_NO_EXPORT_LIBS@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GOBJECT_QUERY = @GOBJECT_QUERY@ +GREP = @GREP@ +GS_LIBS = @GS_LIBS@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_LIBS = @GTK_LIBS@ +GTK_MAC_INTEGRATION_CFLAGS = @GTK_MAC_INTEGRATION_CFLAGS@ +GTK_MAC_INTEGRATION_LIBS = @GTK_MAC_INTEGRATION_LIBS@ +GTK_REQUIRED_VERSION = @GTK_REQUIRED_VERSION@ +GTK_UPDATE_ICON_CACHE = @GTK_UPDATE_ICON_CACHE@ +GUDEV_CFLAGS = @GUDEV_CFLAGS@ +GUDEV_LIBS = @GUDEV_LIBS@ +HARFBUZZ_CFLAGS = @HARFBUZZ_CFLAGS@ +HARFBUZZ_LIBS = @HARFBUZZ_LIBS@ +HARFBUZZ_REQUIRED_VERSION = @HARFBUZZ_REQUIRED_VERSION@ +HAVE_CXX14 = @HAVE_CXX14@ +HAVE_FINITE = @HAVE_FINITE@ +HAVE_ISFINITE = @HAVE_ISFINITE@ +HAVE_VFORK = @HAVE_VFORK@ +HOST_GLIB_COMPILE_RESOURCES = @HOST_GLIB_COMPILE_RESOURCES@ +HTML_DIR = @HTML_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_REQUIRED_VERSION = @INTLTOOL_REQUIRED_VERSION@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ +INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ +INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ +INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +ISO_CODES_LOCALEDIR = @ISO_CODES_LOCALEDIR@ +ISO_CODES_LOCATION = @ISO_CODES_LOCATION@ +JPEG_LIBS = @JPEG_LIBS@ +JSON_GLIB_CFLAGS = @JSON_GLIB_CFLAGS@ +JSON_GLIB_LIBS = @JSON_GLIB_LIBS@ +LCMS_CFLAGS = @LCMS_CFLAGS@ +LCMS_LIBS = @LCMS_LIBS@ +LCMS_REQUIRED_VERSION = @LCMS_REQUIRED_VERSION@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ +LIBBACKTRACE_LIBS = @LIBBACKTRACE_LIBS@ +LIBHEIF_CFLAGS = @LIBHEIF_CFLAGS@ +LIBHEIF_LIBS = @LIBHEIF_LIBS@ +LIBHEIF_REQUIRED_VERSION = @LIBHEIF_REQUIRED_VERSION@ +LIBLZMA_REQUIRED_VERSION = @LIBLZMA_REQUIRED_VERSION@ +LIBMYPAINT_CFLAGS = @LIBMYPAINT_CFLAGS@ +LIBMYPAINT_LIBS = @LIBMYPAINT_LIBS@ +LIBMYPAINT_REQUIRED_VERSION = @LIBMYPAINT_REQUIRED_VERSION@ +LIBOBJS = @LIBOBJS@ +LIBPNG_REQUIRED_VERSION = @LIBPNG_REQUIRED_VERSION@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBUNWIND_CFLAGS = @LIBUNWIND_CFLAGS@ +LIBUNWIND_LIBS = @LIBUNWIND_LIBS@ +LIBUNWIND_REQUIRED_VERSION = @LIBUNWIND_REQUIRED_VERSION@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +LT_VERSION_INFO = @LT_VERSION_INFO@ +LZMA_CFLAGS = @LZMA_CFLAGS@ +LZMA_LIBS = @LZMA_LIBS@ +MAIL = @MAIL@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MIME_INFO_CFLAGS = @MIME_INFO_CFLAGS@ +MIME_INFO_LIBS = @MIME_INFO_LIBS@ +MIME_TYPES = @MIME_TYPES@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MMX_EXTRA_CFLAGS = @MMX_EXTRA_CFLAGS@ +MNG_CFLAGS = @MNG_CFLAGS@ +MNG_LIBS = @MNG_LIBS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +MYPAINT_BRUSHES_CFLAGS = @MYPAINT_BRUSHES_CFLAGS@ +MYPAINT_BRUSHES_LIBS = @MYPAINT_BRUSHES_LIBS@ +NATIVE_GLIB_CFLAGS = @NATIVE_GLIB_CFLAGS@ +NATIVE_GLIB_LIBS = @NATIVE_GLIB_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ +OPENEXR_LIBS = @OPENEXR_LIBS@ +OPENEXR_REQUIRED_VERSION = @OPENEXR_REQUIRED_VERSION@ +OPENJPEG_CFLAGS = @OPENJPEG_CFLAGS@ +OPENJPEG_LIBS = @OPENJPEG_LIBS@ +OPENJPEG_REQUIRED_VERSION = @OPENJPEG_REQUIRED_VERSION@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PANGOCAIRO_CFLAGS = @PANGOCAIRO_CFLAGS@ +PANGOCAIRO_LIBS = @PANGOCAIRO_LIBS@ +PANGOCAIRO_REQUIRED_VERSION = @PANGOCAIRO_REQUIRED_VERSION@ +PATHSEP = @PATHSEP@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PERL_REQUIRED_VERSION = @PERL_REQUIRED_VERSION@ +PERL_VERSION = @PERL_VERSION@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PNG_CFLAGS = @PNG_CFLAGS@ +PNG_LIBS = @PNG_LIBS@ +POFILES = @POFILES@ +POPPLER_CFLAGS = @POPPLER_CFLAGS@ +POPPLER_DATA_CFLAGS = @POPPLER_DATA_CFLAGS@ +POPPLER_DATA_LIBS = @POPPLER_DATA_LIBS@ +POPPLER_DATA_REQUIRED_VERSION = @POPPLER_DATA_REQUIRED_VERSION@ +POPPLER_LIBS = @POPPLER_LIBS@ +POPPLER_REQUIRED_VERSION = @POPPLER_REQUIRED_VERSION@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYBIN_PATH = @PYBIN_PATH@ +PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@ +PYCAIRO_LIBS = @PYCAIRO_LIBS@ +PYGIMP_EXTRA_CFLAGS = @PYGIMP_EXTRA_CFLAGS@ +PYGTK_CFLAGS = @PYGTK_CFLAGS@ +PYGTK_CODEGEN = @PYGTK_CODEGEN@ +PYGTK_DEFSDIR = @PYGTK_DEFSDIR@ +PYGTK_LIBS = @PYGTK_LIBS@ +PYLINK_LIBS = @PYLINK_LIBS@ +PYTHON = @PYTHON@ +PYTHON2_REQUIRED_VERSION = @PYTHON2_REQUIRED_VERSION@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RSVG_REQUIRED_VERSION = @RSVG_REQUIRED_VERSION@ +RT_LIBS = @RT_LIBS@ +SCREENSHOT_LIBS = @SCREENSHOT_LIBS@ +SED = @SED@ +SENDMAIL = @SENDMAIL@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOCKET_LIBS = @SOCKET_LIBS@ +SSE2_EXTRA_CFLAGS = @SSE2_EXTRA_CFLAGS@ +SSE4_1_EXTRA_CFLAGS = @SSE4_1_EXTRA_CFLAGS@ +SSE_EXTRA_CFLAGS = @SSE_EXTRA_CFLAGS@ +STRIP = @STRIP@ +SVG_CFLAGS = @SVG_CFLAGS@ +SVG_LIBS = @SVG_LIBS@ +SYMPREFIX = @SYMPREFIX@ +TIFF_LIBS = @TIFF_LIBS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WEBKIT_CFLAGS = @WEBKIT_CFLAGS@ +WEBKIT_LIBS = @WEBKIT_LIBS@ +WEBKIT_REQUIRED_VERSION = @WEBKIT_REQUIRED_VERSION@ +WEBPDEMUX_CFLAGS = @WEBPDEMUX_CFLAGS@ +WEBPDEMUX_LIBS = @WEBPDEMUX_LIBS@ +WEBPMUX_CFLAGS = @WEBPMUX_CFLAGS@ +WEBPMUX_LIBS = @WEBPMUX_LIBS@ +WEBP_CFLAGS = @WEBP_CFLAGS@ +WEBP_LIBS = @WEBP_LIBS@ +WEBP_REQUIRED_VERSION = @WEBP_REQUIRED_VERSION@ +WEB_PAGE = @WEB_PAGE@ +WIN32_LARGE_ADDRESS_AWARE = @WIN32_LARGE_ADDRESS_AWARE@ +WINDRES = @WINDRES@ +WMF_CFLAGS = @WMF_CFLAGS@ +WMF_CONFIG = @WMF_CONFIG@ +WMF_LIBS = @WMF_LIBS@ +WMF_REQUIRED_VERSION = @WMF_REQUIRED_VERSION@ +XDG_EMAIL = @XDG_EMAIL@ +XFIXES_CFLAGS = @XFIXES_CFLAGS@ +XFIXES_LIBS = @XFIXES_LIBS@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_REQUIRED_VERSION = @XGETTEXT_REQUIRED_VERSION@ +XMC_CFLAGS = @XMC_CFLAGS@ +XMC_LIBS = @XMC_LIBS@ +XMKMF = @XMKMF@ +XMLLINT = @XMLLINT@ +XMU_LIBS = @XMU_LIBS@ +XPM_LIBS = @XPM_LIBS@ +XSLTPROC = @XSLTPROC@ +XVFB_RUN = @XVFB_RUN@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +Z_LIBS = @Z_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gimpdatadir = @gimpdatadir@ +gimpdir = @gimpdir@ +gimplocaledir = @gimplocaledir@ +gimpplugindir = @gimpplugindir@ +gimpsysconfdir = @gimpsysconfdir@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +intltool__v_merge_options_ = @intltool__v_merge_options_@ +intltool__v_merge_options_0 = @intltool__v_merge_options_0@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +manpage_gimpdir = @manpage_gimpdir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +mypaint_brushes_dir = @mypaint_brushes_dir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = \ + -DG_LOG_DOMAIN=\"Gimp-Dialogs\" \ + -I$(top_builddir) \ + -I$(top_srcdir) \ + -I$(top_builddir)/app \ + -I$(top_srcdir)/app \ + $(GEGL_CFLAGS) \ + $(GTK_CFLAGS) \ + -I$(includedir) + +noinst_LIBRARIES = libappdialogs.a +libappdialogs_a_sources = \ + dialogs-types.h \ + dialogs.c \ + dialogs.h \ + dialogs-constructors.c \ + dialogs-constructors.h \ + \ + about-dialog.c \ + about-dialog.h \ + action-search-dialog.c \ + action-search-dialog.h \ + channel-options-dialog.c \ + channel-options-dialog.h \ + color-profile-dialog.c \ + color-profile-dialog.h \ + color-profile-import-dialog.c \ + color-profile-import-dialog.h \ + convert-indexed-dialog.c \ + convert-indexed-dialog.h \ + convert-precision-dialog.c \ + convert-precision-dialog.h \ + data-delete-dialog.c \ + data-delete-dialog.h \ + file-open-dialog.c \ + file-open-dialog.h \ + file-open-location-dialog.c \ + file-open-location-dialog.h \ + file-save-dialog.c \ + file-save-dialog.h \ + fill-dialog.c \ + fill-dialog.h \ + grid-dialog.h \ + grid-dialog.c \ + image-merge-layers-dialog.c \ + image-merge-layers-dialog.h \ + image-new-dialog.c \ + image-new-dialog.h \ + image-properties-dialog.c \ + image-properties-dialog.h \ + image-scale-dialog.c \ + image-scale-dialog.h \ + input-devices-dialog.c \ + input-devices-dialog.h \ + item-options-dialog.c \ + item-options-dialog.h \ + keyboard-shortcuts-dialog.c \ + keyboard-shortcuts-dialog.h \ + layer-add-mask-dialog.c \ + layer-add-mask-dialog.h \ + layer-options-dialog.c \ + layer-options-dialog.h \ + lebl-dialog.c \ + lebl-dialog.h \ + module-dialog.c \ + module-dialog.h \ + palette-import-dialog.c \ + palette-import-dialog.h \ + preferences-dialog.c \ + preferences-dialog.h \ + preferences-dialog-utils.c \ + preferences-dialog-utils.h \ + print-size-dialog.c \ + print-size-dialog.h \ + quit-dialog.c \ + quit-dialog.h \ + resize-dialog.c \ + resize-dialog.h \ + resolution-calibrate-dialog.c \ + resolution-calibrate-dialog.h \ + scale-dialog.c \ + scale-dialog.h \ + stroke-dialog.c \ + stroke-dialog.h \ + template-options-dialog.c \ + template-options-dialog.h \ + tips-dialog.c \ + tips-dialog.h \ + tips-parser.c \ + tips-parser.h \ + user-install-dialog.c \ + user-install-dialog.h \ + vectors-export-dialog.c \ + vectors-export-dialog.h \ + vectors-import-dialog.c \ + vectors-import-dialog.h \ + vectors-options-dialog.c \ + vectors-options-dialog.h + +libappdialogs_a_built_sources = \ + authors.h + +libappdialogs_a_SOURCES = \ + $(libappdialogs_a_built_sources) $(libappdialogs_a_sources) + +EXTRA_DIST = \ + authors.xsl + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu app/dialogs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu app/dialogs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libappdialogs.a: $(libappdialogs_a_OBJECTS) $(libappdialogs_a_DEPENDENCIES) $(EXTRA_libappdialogs_a_DEPENDENCIES) + $(AM_V_at)-rm -f libappdialogs.a + $(AM_V_AR)$(libappdialogs_a_AR) libappdialogs.a $(libappdialogs_a_OBJECTS) $(libappdialogs_a_LIBADD) + $(AM_V_at)$(RANLIB) libappdialogs.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/about-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/action-search-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel-options-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color-profile-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color-profile-import-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert-indexed-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert-precision-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data-delete-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dialogs-constructors.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dialogs.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-open-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-open-location-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-save-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fill-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grid-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image-merge-layers-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image-new-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image-properties-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image-scale-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input-devices-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/item-options-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyboard-shortcuts-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer-add-mask-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer-options-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lebl-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/palette-import-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preferences-dialog-utils.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/preferences-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-size-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quit-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resize-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolution-calibrate-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scale-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stroke-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/template-options-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tips-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tips-parser.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/user-install-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vectors-export-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vectors-import-dialog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vectors-options-dialog.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/about-dialog.Po + -rm -f ./$(DEPDIR)/action-search-dialog.Po + -rm -f ./$(DEPDIR)/channel-options-dialog.Po + -rm -f ./$(DEPDIR)/color-profile-dialog.Po + -rm -f ./$(DEPDIR)/color-profile-import-dialog.Po + -rm -f ./$(DEPDIR)/convert-indexed-dialog.Po + -rm -f ./$(DEPDIR)/convert-precision-dialog.Po + -rm -f ./$(DEPDIR)/data-delete-dialog.Po + -rm -f ./$(DEPDIR)/dialogs-constructors.Po + -rm -f ./$(DEPDIR)/dialogs.Po + -rm -f ./$(DEPDIR)/file-open-dialog.Po + -rm -f ./$(DEPDIR)/file-open-location-dialog.Po + -rm -f ./$(DEPDIR)/file-save-dialog.Po + -rm -f ./$(DEPDIR)/fill-dialog.Po + -rm -f ./$(DEPDIR)/grid-dialog.Po + -rm -f ./$(DEPDIR)/image-merge-layers-dialog.Po + -rm -f ./$(DEPDIR)/image-new-dialog.Po + -rm -f ./$(DEPDIR)/image-properties-dialog.Po + -rm -f ./$(DEPDIR)/image-scale-dialog.Po + -rm -f ./$(DEPDIR)/input-devices-dialog.Po + -rm -f ./$(DEPDIR)/item-options-dialog.Po + -rm -f ./$(DEPDIR)/keyboard-shortcuts-dialog.Po + -rm -f ./$(DEPDIR)/layer-add-mask-dialog.Po + -rm -f ./$(DEPDIR)/layer-options-dialog.Po + -rm -f ./$(DEPDIR)/lebl-dialog.Po + -rm -f ./$(DEPDIR)/module-dialog.Po + -rm -f ./$(DEPDIR)/palette-import-dialog.Po + -rm -f ./$(DEPDIR)/preferences-dialog-utils.Po + -rm -f ./$(DEPDIR)/preferences-dialog.Po + -rm -f ./$(DEPDIR)/print-size-dialog.Po + -rm -f ./$(DEPDIR)/quit-dialog.Po + -rm -f ./$(DEPDIR)/resize-dialog.Po + -rm -f ./$(DEPDIR)/resolution-calibrate-dialog.Po + -rm -f ./$(DEPDIR)/scale-dialog.Po + -rm -f ./$(DEPDIR)/stroke-dialog.Po + -rm -f ./$(DEPDIR)/template-options-dialog.Po + -rm -f ./$(DEPDIR)/tips-dialog.Po + -rm -f ./$(DEPDIR)/tips-parser.Po + -rm -f ./$(DEPDIR)/user-install-dialog.Po + -rm -f ./$(DEPDIR)/vectors-export-dialog.Po + -rm -f ./$(DEPDIR)/vectors-import-dialog.Po + -rm -f ./$(DEPDIR)/vectors-options-dialog.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/about-dialog.Po + -rm -f ./$(DEPDIR)/action-search-dialog.Po + -rm -f ./$(DEPDIR)/channel-options-dialog.Po + -rm -f ./$(DEPDIR)/color-profile-dialog.Po + -rm -f ./$(DEPDIR)/color-profile-import-dialog.Po + -rm -f ./$(DEPDIR)/convert-indexed-dialog.Po + -rm -f ./$(DEPDIR)/convert-precision-dialog.Po + -rm -f ./$(DEPDIR)/data-delete-dialog.Po + -rm -f ./$(DEPDIR)/dialogs-constructors.Po + -rm -f ./$(DEPDIR)/dialogs.Po + -rm -f ./$(DEPDIR)/file-open-dialog.Po + -rm -f ./$(DEPDIR)/file-open-location-dialog.Po + -rm -f ./$(DEPDIR)/file-save-dialog.Po + -rm -f ./$(DEPDIR)/fill-dialog.Po + -rm -f ./$(DEPDIR)/grid-dialog.Po + -rm -f ./$(DEPDIR)/image-merge-layers-dialog.Po + -rm -f ./$(DEPDIR)/image-new-dialog.Po + -rm -f ./$(DEPDIR)/image-properties-dialog.Po + -rm -f ./$(DEPDIR)/image-scale-dialog.Po + -rm -f ./$(DEPDIR)/input-devices-dialog.Po + -rm -f ./$(DEPDIR)/item-options-dialog.Po + -rm -f ./$(DEPDIR)/keyboard-shortcuts-dialog.Po + -rm -f ./$(DEPDIR)/layer-add-mask-dialog.Po + -rm -f ./$(DEPDIR)/layer-options-dialog.Po + -rm -f ./$(DEPDIR)/lebl-dialog.Po + -rm -f ./$(DEPDIR)/module-dialog.Po + -rm -f ./$(DEPDIR)/palette-import-dialog.Po + -rm -f ./$(DEPDIR)/preferences-dialog-utils.Po + -rm -f ./$(DEPDIR)/preferences-dialog.Po + -rm -f ./$(DEPDIR)/print-size-dialog.Po + -rm -f ./$(DEPDIR)/quit-dialog.Po + -rm -f ./$(DEPDIR)/resize-dialog.Po + -rm -f ./$(DEPDIR)/resolution-calibrate-dialog.Po + -rm -f ./$(DEPDIR)/scale-dialog.Po + -rm -f ./$(DEPDIR)/stroke-dialog.Po + -rm -f ./$(DEPDIR)/template-options-dialog.Po + -rm -f ./$(DEPDIR)/tips-dialog.Po + -rm -f ./$(DEPDIR)/tips-parser.Po + -rm -f ./$(DEPDIR)/user-install-dialog.Po + -rm -f ./$(DEPDIR)/vectors-export-dialog.Po + -rm -f ./$(DEPDIR)/vectors-import-dialog.Po + -rm -f ./$(DEPDIR)/vectors-options-dialog.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libtool clean-noinstLIBRARIES \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +$(srcdir)/about-dialog.c: authors.h + +authors.h: $(top_srcdir)/authors.xml $(srcdir)/authors.xsl +@HAVE_XSLTPROC_TRUE@ $(XSLTPROC) $(srcdir)/authors.xsl $< > $(@) || rm -f $(@) +@HAVE_XSLTPROC_FALSE@ @echo "*** xsltproc is required to regenerate $(@) ***"; exit 1; + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/app/dialogs/about-dialog.c b/app/dialogs/about-dialog.c new file mode 100644 index 0000000..bc1a4d3 --- /dev/null +++ b/app/dialogs/about-dialog.c @@ -0,0 +1,874 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpmath/gimpmath.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpcoreconfig.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" + +#include "pdb/gimppdb.h" + +#include "about.h" +#include "git-version.h" + +#include "about-dialog.h" +#include "authors.h" +#include "gimp-update.h" +#include "gimp-version.h" + +#include "gimp-intl.h" + + +/* The first authors are the creators and maintainers, don't shuffle + * them + */ +#define START_INDEX (G_N_ELEMENTS (creators) - 1 /*NULL*/ + \ + G_N_ELEMENTS (maintainers) - 1 /*NULL*/) + + +typedef struct +{ + GtkWidget *dialog; + + GtkWidget *update_frame; + + GtkWidget *anim_area; + PangoLayout *layout; + + gint n_authors; + gint shuffle[G_N_ELEMENTS (authors) - 1]; /* NULL terminated */ + + guint timer; + + gint index; + gint animstep; + gint textrange[2]; + gint state; + gboolean visible; +} GimpAboutDialog; + + +static void about_dialog_map (GtkWidget *widget, + GimpAboutDialog *dialog); +static void about_dialog_unmap (GtkWidget *widget, + GimpAboutDialog *dialog); +static GdkPixbuf * about_dialog_load_logo (void); +static void about_dialog_add_animation (GtkWidget *vbox, + GimpAboutDialog *dialog); +static gboolean about_dialog_anim_expose (GtkWidget *widget, + GdkEventExpose *event, + GimpAboutDialog *dialog); +static void about_dialog_add_update (GimpAboutDialog *dialog, + GimpCoreConfig *config); +static void about_dialog_reshuffle (GimpAboutDialog *dialog); +static gboolean about_dialog_timer (gpointer data); + +#ifdef GIMP_UNSTABLE +static void about_dialog_add_unstable_message + (GtkWidget *vbox); +#endif /* GIMP_UNSTABLE */ + +static void about_dialog_last_release_changed + (GimpCoreConfig *config, + const GParamSpec *pspec, + GimpAboutDialog *dialog); +static void about_dialog_download_clicked + (GtkButton *button, + const gchar *link); + +GtkWidget * +about_dialog_create (GimpCoreConfig *config) +{ + static GimpAboutDialog dialog; + + g_return_val_if_fail (GIMP_IS_CORE_CONFIG (config), NULL); + + if (! dialog.dialog) + { + GtkWidget *widget; + GtkWidget *container; + GdkPixbuf *pixbuf; + GList *children; + gchar *copyright; + gchar *version; + + dialog.n_authors = G_N_ELEMENTS (authors) - 1; + + pixbuf = about_dialog_load_logo (); + + copyright = g_strdup_printf (GIMP_COPYRIGHT, GIMP_GIT_LAST_COMMIT_YEAR); + if (gimp_version_get_revision () > 0) + /* Translators: the %s is GIMP version, the %d is the + * installer/package revision. + * For instance: "2.10.18 (revision 2)" + */ + version = g_strdup_printf (_("%s (revision %d)"), GIMP_VERSION, + gimp_version_get_revision ()); + else + version = g_strdup (GIMP_VERSION); + + widget = g_object_new (GTK_TYPE_ABOUT_DIALOG, + "role", "gimp-about", + "window-position", GTK_WIN_POS_CENTER, + "title", _("About GIMP"), + "program-name", GIMP_ACRONYM, + "version", version, + "copyright", copyright, + "comments", GIMP_NAME, + "license", GIMP_LICENSE, + "wrap-license", TRUE, + "logo", pixbuf, + "website", "https://www.gimp.org/", + "website-label", _("Visit the GIMP website"), + "authors", authors, + "artists", artists, + "documenters", documenters, + /* Translators: insert your names here, + separated by newline */ + "translator-credits", _("translator-credits"), + NULL); + + if (pixbuf) + g_object_unref (pixbuf); + + g_free (copyright); + g_free (version); + + dialog.dialog = widget; + + g_object_add_weak_pointer (G_OBJECT (widget), (gpointer) &dialog.dialog); + + g_signal_connect (widget, "response", + G_CALLBACK (gtk_widget_destroy), + NULL); + + g_signal_connect (widget, "map", + G_CALLBACK (about_dialog_map), + &dialog); + g_signal_connect (widget, "unmap", + G_CALLBACK (about_dialog_unmap), + &dialog); + + /* kids, don't try this at home! */ + container = gtk_dialog_get_content_area (GTK_DIALOG (widget)); + children = gtk_container_get_children (GTK_CONTAINER (container)); + + if (GTK_IS_BOX (children->data)) + { + about_dialog_add_animation (children->data, &dialog); +#ifdef GIMP_UNSTABLE + about_dialog_add_unstable_message (children->data); +#endif /* GIMP_UNSTABLE */ + about_dialog_add_update (&dialog, config); + } + else + g_warning ("%s: ooops, no box in this container?", G_STRLOC); + + g_list_free (children); + } + + gtk_window_present (GTK_WINDOW (dialog.dialog)); + + return dialog.dialog; +} + +static void +about_dialog_map (GtkWidget *widget, + GimpAboutDialog *dialog) +{ + if (dialog->layout && dialog->timer == 0) + { + dialog->state = 0; + dialog->index = 0; + dialog->animstep = 0; + dialog->visible = FALSE; + + about_dialog_reshuffle (dialog); + + dialog->timer = g_timeout_add (800, about_dialog_timer, dialog); + } +} + +static void +about_dialog_unmap (GtkWidget *widget, + GimpAboutDialog *dialog) +{ + if (dialog->timer) + { + g_source_remove (dialog->timer); + dialog->timer = 0; + } +} + +static GdkPixbuf * +about_dialog_load_logo (void) +{ + GdkPixbuf *pixbuf = NULL; + GFile *file; + GInputStream *input; + + file = gimp_data_directory_file ("images", +#ifdef GIMP_UNSTABLE + "gimp-devel-logo.png", +#else + "gimp-logo.png", +#endif + NULL); + + input = G_INPUT_STREAM (g_file_read (file, NULL, NULL)); + g_object_unref (file); + + if (input) + { + pixbuf = gdk_pixbuf_new_from_stream (input, NULL, NULL); + g_object_unref (input); + } + + return pixbuf; +} + +static void +about_dialog_add_animation (GtkWidget *vbox, + GimpAboutDialog *dialog) +{ + gint height; + + dialog->anim_area = gtk_drawing_area_new (); + gtk_box_pack_start (GTK_BOX (vbox), dialog->anim_area, FALSE, FALSE, 0); + gtk_box_reorder_child (GTK_BOX (vbox), dialog->anim_area, 5); + gtk_widget_show (dialog->anim_area); + + dialog->layout = gtk_widget_create_pango_layout (dialog->anim_area, NULL); + g_object_weak_ref (G_OBJECT (dialog->anim_area), + (GWeakNotify) g_object_unref, dialog->layout); + + pango_layout_get_pixel_size (dialog->layout, NULL, &height); + + gtk_widget_set_size_request (dialog->anim_area, -1, 2 * height); + + g_signal_connect (dialog->anim_area, "expose-event", + G_CALLBACK (about_dialog_anim_expose), + dialog); +} + +static void +about_dialog_add_update (GimpAboutDialog *dialog, + GimpCoreConfig *config) +{ + GtkWidget *container; + GList *children; + GtkWidget *vbox; + + GtkWidget *frame; + GtkWidget *box; + GtkWidget *box2; + GtkWidget *label; + GtkWidget *button; + GtkWidget *button_image; + GtkWidget *button_label; + GDateTime *datetime; + gchar *date; + gchar *text; + + /* Get the dialog vbox. */ + container = gtk_dialog_get_content_area (GTK_DIALOG (dialog->dialog)); + children = gtk_container_get_children (GTK_CONTAINER (container)); + g_return_if_fail (GTK_IS_BOX (children->data)); + vbox = children->data; + g_list_free (children); + + /* The preferred localized date representation without the time. */ + datetime = g_date_time_new_from_unix_local (config->last_release_timestamp); + date = g_date_time_format (datetime, "%x"); + g_date_time_unref (datetime); + + /* The update frame. */ + frame = gtk_frame_new (NULL); + gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 2); + + box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_container_add (GTK_CONTAINER (frame), box); + + /* Button in the frame. */ + button = gtk_button_new (); + gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_container_add (GTK_CONTAINER (button), box2); + gtk_widget_show (box2); + + button_image = gtk_image_new_from_icon_name (NULL, GTK_ICON_SIZE_DIALOG); + gtk_box_pack_start (GTK_BOX (box2), button_image, FALSE, FALSE, 0); + gtk_widget_show (button_image); + + button_label = gtk_label_new (NULL); + gtk_box_pack_start (GTK_BOX (box2), button_label, FALSE, FALSE, 0); + gtk_container_child_set (GTK_CONTAINER (box2), button_label, "expand", TRUE, NULL); + gtk_widget_show (button_label); + + if (config->last_known_release != NULL) + { + /* There is a newer version. */ + gchar *comment = NULL; + + /* We want the frame to stand out. */ + label = gtk_label_new (NULL); + text = g_strdup_printf ("<tt><b><big>%s</big></b></tt>", + _("Update available!")); + gtk_label_set_markup (GTK_LABEL (label), text); + g_free (text); + gtk_widget_show (label); + gtk_frame_set_label_widget (GTK_FRAME (frame), label); + gtk_frame_set_label_align (GTK_FRAME (frame), 0.5, 0.5); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT); + gtk_box_reorder_child (GTK_BOX (vbox), frame, 3); + + /* Button is an update link. */ + gtk_image_set_from_icon_name (GTK_IMAGE (button_image), + "software-update-available", + GTK_ICON_SIZE_DIALOG); + g_signal_connect (button, "clicked", + (GCallback) about_dialog_download_clicked, + "https://www.gimp.org/downloads/"); + + if (config->last_revision > 0) + { + /* This is actually a new revision of current version. */ + text = g_strdup_printf (_("Download GIMP %s revision %d (released on %s)\n"), + config->last_known_release, + config->last_revision, + date); + + /* Finally an optional release comment. */ + if (config->last_release_comment) + { + /* Translators: <> tags are Pango markup. Please keep these + * markups in your translation. */ + comment = g_strdup_printf (_("<u>Release comment</u>: <i>%s</i>"), config->last_release_comment); + } + } + else + { + text = g_strdup_printf (_("Download GIMP %s (released on %s)\n"), + config->last_known_release, date); + } + gtk_label_set_text (GTK_LABEL (button_label), text); + g_free (text); + g_free (date); + + if (comment) + { + label = gtk_label_new (NULL); + gtk_label_set_max_width_chars (GTK_LABEL (label), 80); + gtk_label_set_markup (GTK_LABEL (label), comment); + gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); + g_free (comment); + + gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0); + gtk_widget_show (label); + } + } + else + { + /* Button is a "Check for updates" action. */ + gtk_image_set_from_icon_name (GTK_IMAGE (button_image), + "view-refresh", + GTK_ICON_SIZE_MENU); + gtk_label_set_text (GTK_LABEL (button_label), _("Check for updates")); + g_signal_connect_swapped (button, "clicked", + (GCallback) gimp_update_check, config); + + } + + gtk_box_reorder_child (GTK_BOX (vbox), frame, 4); + + /* Last check date box. */ + box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_container_add (GTK_CONTAINER (box), box2); + gtk_widget_show (box2); + + /* Show a small "Check for updates" button only if the big one has + * been replaced by a download button. + */ + if (config->last_known_release != NULL) + { + button = gtk_button_new (); + button_image = gtk_image_new_from_icon_name ("view-refresh", GTK_ICON_SIZE_MENU); + gtk_container_add (GTK_CONTAINER (button), button_image); + gtk_widget_set_tooltip_text (button, _("Check for updates")); + gtk_box_pack_start (GTK_BOX (box2), button, FALSE, FALSE, 0); + g_signal_connect_swapped (button, "clicked", + (GCallback) gimp_update_check, config); + gtk_widget_show (button); + gtk_widget_show (button_image); + } + + if (config->check_update_timestamp > 0) + { + gchar *subtext; + gchar *time; + + datetime = g_date_time_new_from_unix_local (config->check_update_timestamp); + date = g_date_time_format (datetime, "%x"); + time = g_date_time_format (datetime, "%X"); + /* Translators: first string is the date in the locale's date + * representation (e.g., 12/31/99), second is the time in the + * locale's time representation (e.g., 23:13:48). + */ + subtext = g_strdup_printf (_("Last checked on %s at %s"), date, time); + g_date_time_unref (datetime); + g_free (date); + g_free (time); + + text = g_strdup_printf ("<i>%s</i>", subtext); + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), text); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0); + gtk_container_child_set (GTK_CONTAINER (box2), label, "expand", TRUE, NULL); + gtk_widget_show (label); + g_free (text); + g_free (subtext); + } + + gtk_widget_show (box); + gtk_widget_show (frame); + + dialog->update_frame = frame; + + /* Reconstruct the dialog when release info changes. */ + g_signal_connect (config, "notify::last-known-release", + (GCallback) about_dialog_last_release_changed, + dialog); +} + +static void +about_dialog_reshuffle (GimpAboutDialog *dialog) +{ + GRand *gr = g_rand_new (); + gint i; + + for (i = 0; i < dialog->n_authors; i++) + dialog->shuffle[i] = i; + + for (i = START_INDEX; i < dialog->n_authors; i++) + { + gint j = g_rand_int_range (gr, START_INDEX, dialog->n_authors); + + if (i != j) + { + gint t; + + t = dialog->shuffle[j]; + dialog->shuffle[j] = dialog->shuffle[i]; + dialog->shuffle[i] = t; + } + } + + g_rand_free (gr); +} + +static gboolean +about_dialog_anim_expose (GtkWidget *widget, + GdkEventExpose *event, + GimpAboutDialog *dialog) +{ + GtkStyle *style = gtk_widget_get_style (widget); + cairo_t *cr; + GtkAllocation allocation; + gint x, y; + gint width, height; + + if (! dialog->visible) + return FALSE; + + cr = gdk_cairo_create (event->window); + + gdk_cairo_set_source_color (cr, &style->text[GTK_STATE_NORMAL]); + + gtk_widget_get_allocation (widget, &allocation); + pango_layout_get_pixel_size (dialog->layout, &width, &height); + + x = (allocation.width - width) / 2; + y = (allocation.height - height) / 2; + + if (dialog->textrange[1] > 0) + { + GdkRegion *covered_region; + + covered_region = gdk_pango_layout_get_clip_region (dialog->layout, + x, y, + dialog->textrange, 1); + + gdk_region_intersect (covered_region, event->region); + + gdk_cairo_region (cr, covered_region); + cairo_clip (cr); + + gdk_region_destroy (covered_region); + } + + cairo_move_to (cr, x, y); + + pango_cairo_show_layout (cr, dialog->layout); + + cairo_destroy (cr); + + return FALSE; +} + +static gchar * +insert_spacers (const gchar *string) +{ + GString *str = g_string_new (NULL); + gchar *normalized; + gchar *ptr; + gunichar unichr; + + normalized = g_utf8_normalize (string, -1, G_NORMALIZE_DEFAULT_COMPOSE); + ptr = normalized; + + while ((unichr = g_utf8_get_char (ptr))) + { + g_string_append_unichar (str, unichr); + g_string_append_unichar (str, 0x200b); /* ZERO WIDTH SPACE */ + ptr = g_utf8_next_char (ptr); + } + + g_free (normalized); + + return g_string_free (str, FALSE); +} + +static inline void +mix_colors (const GdkColor *start, + const GdkColor *end, + GdkColor *target, + gdouble pos) +{ + target->red = start->red * (1.0 - pos) + end->red * pos; + target->green = start->green * (1.0 - pos) + end->green * pos; + target->blue = start->blue * (1.0 - pos) + end->blue * pos; +} + +static void +decorate_text (GimpAboutDialog *dialog, + gint anim_type, + gdouble time) +{ + GtkStyle *style = gtk_widget_get_style (dialog->anim_area); + const gchar *text; + const gchar *ptr; + gint letter_count = 0; + gint text_length = 0; + gint text_bytelen = 0; + gint cluster_start, cluster_end; + gunichar unichr; + PangoAttrList *attrlist = NULL; + PangoAttribute *attr; + PangoRectangle irect = {0, 0, 0, 0}; + PangoRectangle lrect = {0, 0, 0, 0}; + GdkColor mix; + + mix_colors (style->bg + GTK_STATE_NORMAL, + style->fg + GTK_STATE_NORMAL, &mix, time); + + text = pango_layout_get_text (dialog->layout); + g_return_if_fail (text != NULL); + + text_length = g_utf8_strlen (text, -1); + text_bytelen = strlen (text); + + attrlist = pango_attr_list_new (); + + dialog->textrange[0] = 0; + dialog->textrange[1] = text_bytelen; + + switch (anim_type) + { + case 0: /* Fade in */ + attr = pango_attr_foreground_new (mix.red, mix.green, mix.blue); + attr->start_index = 0; + attr->end_index = text_bytelen; + pango_attr_list_insert (attrlist, attr); + break; + + case 1: /* Fade in, spread */ + attr = pango_attr_foreground_new (mix.red, mix.green, mix.blue); + attr->start_index = 0; + attr->end_index = text_bytelen; + pango_attr_list_change (attrlist, attr); + + ptr = text; + + cluster_start = 0; + while ((unichr = g_utf8_get_char (ptr))) + { + ptr = g_utf8_next_char (ptr); + cluster_end = (ptr - text); + + if (unichr == 0x200b) + { + lrect.width = (1.0 - time) * 15.0 * PANGO_SCALE + 0.5; + attr = pango_attr_shape_new (&irect, &lrect); + attr->start_index = cluster_start; + attr->end_index = cluster_end; + pango_attr_list_change (attrlist, attr); + } + cluster_start = cluster_end; + } + break; + + case 2: /* Fade in, sinewave */ + attr = pango_attr_foreground_new (mix.red, mix.green, mix.blue); + attr->start_index = 0; + attr->end_index = text_bytelen; + pango_attr_list_change (attrlist, attr); + + ptr = text; + + cluster_start = 0; + + while ((unichr = g_utf8_get_char (ptr))) + { + if (unichr == 0x200b) + { + cluster_end = ptr - text; + attr = pango_attr_rise_new ((1.0 -time) * 18000 * + sin (4.0 * time + + (float) letter_count * 0.7)); + attr->start_index = cluster_start; + attr->end_index = cluster_end; + pango_attr_list_change (attrlist, attr); + + letter_count++; + cluster_start = cluster_end; + } + + ptr = g_utf8_next_char (ptr); + } + break; + + case 3: /* letterwise Fade in */ + ptr = text; + + letter_count = 0; + cluster_start = 0; + + while ((unichr = g_utf8_get_char (ptr))) + { + gint border = (text_length + 15) * time - 15; + gdouble pos; + + if (letter_count < border) + pos = 0; + else if (letter_count > border + 15) + pos = 1; + else + pos = ((gdouble) (letter_count - border)) / 15; + + mix_colors (style->fg + GTK_STATE_NORMAL, + style->bg + GTK_STATE_NORMAL, + &mix, pos); + + ptr = g_utf8_next_char (ptr); + + cluster_end = ptr - text; + + attr = pango_attr_foreground_new (mix.red, mix.green, mix.blue); + attr->start_index = cluster_start; + attr->end_index = cluster_end; + pango_attr_list_change (attrlist, attr); + + if (pos < 1.0) + dialog->textrange[1] = cluster_end; + + letter_count++; + cluster_start = cluster_end; + } + + break; + + default: + g_printerr ("Unknown animation type %d\n", anim_type); + } + + pango_layout_set_attributes (dialog->layout, attrlist); + pango_attr_list_unref (attrlist); +} + +static gboolean +about_dialog_timer (gpointer data) +{ + GimpAboutDialog *dialog = data; + gint timeout = 0; + + if (dialog->animstep == 0) + { + gchar *text = NULL; + + dialog->visible = TRUE; + + switch (dialog->state) + { + case 0: + dialog->timer = g_timeout_add (30, about_dialog_timer, dialog); + dialog->state += 1; + return FALSE; + + case 1: + text = insert_spacers (_("GIMP is brought to you by")); + dialog->state += 1; + break; + + case 2: + if (! (dialog->index < dialog->n_authors)) + dialog->index = 0; + + text = insert_spacers (authors[dialog->shuffle[dialog->index]]); + dialog->index += 1; + break; + + default: + g_return_val_if_reached (TRUE); + break; + } + + g_return_val_if_fail (text != NULL, TRUE); + + pango_layout_set_text (dialog->layout, text, -1); + pango_layout_set_attributes (dialog->layout, NULL); + + g_free (text); + } + + if (dialog->animstep < 16) + { + decorate_text (dialog, 2, ((gfloat) dialog->animstep) / 15.0); + } + else if (dialog->animstep == 16) + { + timeout = 800; + } + else if (dialog->animstep == 17) + { + timeout = 30; + } + else if (dialog->animstep < 33) + { + decorate_text (dialog, 1, + 1.0 - ((gfloat) (dialog->animstep - 17)) / 15.0); + } + else if (dialog->animstep == 33) + { + dialog->visible = FALSE; + timeout = 300; + } + else + { + dialog->visible = FALSE; + dialog->animstep = -1; + timeout = 30; + } + + dialog->animstep++; + + gtk_widget_queue_draw (dialog->anim_area); + + if (timeout > 0) + { + dialog->timer = g_timeout_add (timeout, about_dialog_timer, dialog); + return FALSE; + } + + /* else keep the current timeout */ + return TRUE; +} + +#ifdef GIMP_UNSTABLE + +static void +about_dialog_add_unstable_message (GtkWidget *vbox) +{ + GtkWidget *label; + gchar *text; + + text = g_strdup_printf (_("This is an unstable development release\n" + "commit %s"), GIMP_GIT_VERSION_ABBREV); + label = gtk_label_new (text); + g_free (text); + + gtk_label_set_selectable (GTK_LABEL (label), TRUE); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); + gimp_label_set_attributes (GTK_LABEL (label), + PANGO_ATTR_STYLE, PANGO_STYLE_ITALIC, + -1); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); + gtk_box_reorder_child (GTK_BOX (vbox), label, 2); + gtk_widget_show (label); +} + +#endif /* GIMP_UNSTABLE */ + +static void +about_dialog_last_release_changed (GimpCoreConfig *config, + const GParamSpec *pspec, + GimpAboutDialog *dialog) +{ + g_signal_handlers_disconnect_by_func (config, + (GCallback) about_dialog_last_release_changed, + dialog); + if (! dialog->dialog) + return; + + if (dialog->update_frame) + { + gtk_widget_destroy (dialog->update_frame); + dialog->update_frame = NULL; + } + + about_dialog_add_update (dialog, config); +} + +static void +about_dialog_download_clicked (GtkButton *button, + const gchar *link) +{ + GtkWidget *window; + + window = gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_WINDOW); + + if (window) + gtk_show_uri (gdk_screen_get_default (), + link, + gtk_get_current_event_time(), + NULL); +} diff --git a/app/dialogs/about-dialog.h b/app/dialogs/about-dialog.h new file mode 100644 index 0000000..516d7da --- /dev/null +++ b/app/dialogs/about-dialog.h @@ -0,0 +1,25 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __ABOUT_DIALOG_H__ +#define __ABOUT_DIALOG_H__ + + +GtkWidget * about_dialog_create (GimpCoreConfig *config); + + +#endif /* __ABOUT_DIALOG_H__ */ diff --git a/app/dialogs/action-search-dialog.c b/app/dialogs/action-search-dialog.c new file mode 100644 index 0000000..7b1d434 --- /dev/null +++ b/app/dialogs/action-search-dialog.c @@ -0,0 +1,358 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * action-search-dialog.c + * Copyright (C) 2012-2013 Srihari Sriraman + * Suhas V + * Vidyashree K + * Zeeshan Ali Ansari + * Copyright (C) 2013-2015 Jehan <jehan at girinstud.io> + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" + +#include "dialogs-types.h" + +#include "config/gimpguiconfig.h" + +#include "core/gimp.h" + +#include "widgets/gimpaction.h" +#include "widgets/gimpactiongroup.h" +#include "widgets/gimpaction-history.h" +#include "widgets/gimpdialogfactory.h" +#include "widgets/gimpsearchpopup.h" +#include "widgets/gimpuimanager.h" + +#include "action-search-dialog.h" + +#include "gimp-intl.h" + + +static void action_search_history_and_actions (GimpSearchPopup *popup, + const gchar *keyword, + gpointer data); +static gboolean action_search_match_keyword (GimpAction *action, + const gchar* keyword, + gint *section, + Gimp *gimp); + + +/* Public Functions */ + +GtkWidget * +action_search_dialog_create (Gimp *gimp) +{ + GtkWidget *dialog; + + dialog = gimp_search_popup_new (gimp, + "gimp-action-search-dialog", + _("Search Actions"), + action_search_history_and_actions, + gimp); + return dialog; +} + +/* Private Functions */ + +static void +action_search_history_and_actions (GimpSearchPopup *popup, + const gchar *keyword, + gpointer data) +{ + GimpUIManager *manager; + GList *list; + GList *history_actions = NULL; + Gimp *gimp; + + g_return_if_fail (GIMP_IS_GIMP (data)); + + gimp = GIMP (data); + manager = gimp_ui_managers_from_name ("<Image>")->data; + + if (g_strcmp0 (keyword, "") == 0) + return; + + history_actions = gimp_action_history_search (gimp, + action_search_match_keyword, + keyword); + + /* First put on top of the list any matching action of user history. */ + for (list = history_actions; list; list = g_list_next (list)) + { + gimp_search_popup_add_result (popup, list->data, 0); + } + + /* Now check other actions. */ + for (list = gimp_ui_manager_get_action_groups (manager); + list; + list = g_list_next (list)) + { + GList *list2; + GimpActionGroup *group = list->data; + GList *actions = NULL; + + actions = gimp_action_group_list_actions (group); + actions = g_list_sort (actions, (GCompareFunc) gimp_action_name_compare); + + for (list2 = actions; list2; list2 = g_list_next (list2)) + { + const gchar *name; + GimpAction *action = list2->data; + gboolean is_redundant = FALSE; + gint section; + + name = gimp_action_get_name (action); + + /* The action search dialog doesn't show any non-historized + * actions, with a few exceptions. See the difference between + * gimp_action_history_is_blacklisted_action() and + * gimp_action_history_is_excluded_action(). + */ + if (gimp_action_history_is_blacklisted_action (name)) + continue; + + if (! gimp_action_is_visible (action) || + (! gimp_action_is_sensitive (action) && + ! GIMP_GUI_CONFIG (gimp->config)->search_show_unavailable)) + continue; + + if (action_search_match_keyword (action, keyword, §ion, gimp)) + { + GList *list3; + + /* A matching action. Check if we have not already added + * it as an history action. + */ + for (list3 = history_actions; list3; list3 = g_list_next (list3)) + { + if (strcmp (gimp_action_get_name (list3->data), + name) == 0) + { + is_redundant = TRUE; + break; + } + } + + if (! is_redundant) + { + gimp_search_popup_add_result (popup, action, section); + } + } + } + + g_list_free (actions); + } + + g_list_free_full (history_actions, (GDestroyNotify) g_object_unref); +} + +static gboolean +action_search_match_keyword (GimpAction *action, + const gchar *keyword, + gint *section, + Gimp *gimp) +{ + gboolean matched = FALSE; + gchar **key_tokens; + gchar **label_tokens; + gchar **label_alternates = NULL; + gchar *tmp; + + if (keyword == NULL) + { + /* As a special exception, a NULL keyword means any action + * matches. + */ + if (section) + { + *section = 0; + } + return TRUE; + } + + key_tokens = g_str_tokenize_and_fold (keyword, gimp->config->language, NULL); + tmp = gimp_strip_uline (gimp_action_get_label (action)); + label_tokens = g_str_tokenize_and_fold (tmp, gimp->config->language, &label_alternates); + g_free (tmp); + + /* Try to match the keyword as an initialism of the action's label. + * For instance 'gb' will match 'Gaussian Blur...' + */ + if (g_strv_length (key_tokens) == 1) + { + gchar **search_tokens[] = {label_tokens, label_alternates}; + gint i; + + for (i = 0; i < G_N_ELEMENTS (search_tokens); i++) + { + const gchar *key_token; + gchar **label_tokens; + + for (key_token = key_tokens[0], label_tokens = search_tokens[i]; + *key_token && *label_tokens; + key_token = g_utf8_find_next_char (key_token, NULL), label_tokens++) + { + gunichar key_char = g_utf8_get_char (key_token); + gunichar label_char = g_utf8_get_char (*label_tokens); + + if (key_char != label_char) + break; + } + + if (! *key_token) + { + matched = TRUE; + + if (section) + { + /* full match is better than a partial match */ + *section = ! *label_tokens ? 1 : 4; + } + else + { + break; + } + } + } + } + + if (! matched && g_strv_length (label_tokens) > 0) + { + gint previous_matched = -1; + gboolean match_start; + gboolean match_ordered; + gint i; + + matched = TRUE; + match_start = TRUE; + match_ordered = TRUE; + for (i = 0; key_tokens[i] != NULL; i++) + { + gint j; + for (j = 0; label_tokens[j] != NULL; j++) + { + if (g_str_has_prefix (label_tokens[j], key_tokens[i])) + { + goto one_matched; + } + } + for (j = 0; label_alternates[j] != NULL; j++) + { + if (g_str_has_prefix (label_alternates[j], key_tokens[i])) + { + goto one_matched; + } + } + matched = FALSE; +one_matched: + if (previous_matched > j) + match_ordered = FALSE; + previous_matched = j; + + if (i != j) + match_start = FALSE; + + continue; + } + + if (matched && section) + { + /* If the key is the label start, this is a nicer match. + * Then if key tokens are found in the same order in the label. + * Finally we show at the end if the key tokens are found with a different order. */ + *section = match_ordered ? (match_start ? 1 : 2) : 3; + } + } + + if (! matched && key_tokens[0] && g_utf8_strlen (key_tokens[0], -1) > 2 && + gimp_action_get_tooltip (action) != NULL) + { + gchar **tooltip_tokens; + gchar **tooltip_alternates = NULL; + gboolean mixed_match; + gint i; + + tooltip_tokens = g_str_tokenize_and_fold (gimp_action_get_tooltip (action), + gimp->config->language, &tooltip_alternates); + + if (g_strv_length (tooltip_tokens) > 0) + { + matched = TRUE; + mixed_match = FALSE; + + for (i = 0; key_tokens[i] != NULL; i++) + { + gint j; + for (j = 0; tooltip_tokens[j] != NULL; j++) + { + if (g_str_has_prefix (tooltip_tokens[j], key_tokens[i])) + { + goto one_tooltip_matched; + } + } + for (j = 0; tooltip_alternates[j] != NULL; j++) + { + if (g_str_has_prefix (tooltip_alternates[j], key_tokens[i])) + { + goto one_tooltip_matched; + } + } + for (j = 0; label_tokens[j] != NULL; j++) + { + if (g_str_has_prefix (label_tokens[j], key_tokens[i])) + { + mixed_match = TRUE; + goto one_tooltip_matched; + } + } + for (j = 0; label_alternates[j] != NULL; j++) + { + if (g_str_has_prefix (label_alternates[j], key_tokens[i])) + { + mixed_match = TRUE; + goto one_tooltip_matched; + } + } + matched = FALSE; +one_tooltip_matched: + continue; + } + if (matched && section) + { + /* Matching the tooltip is section 4. We don't go looking + * for start of string or token order for tooltip match. + * But if the match is mixed on tooltip and label (there are + * no match for *only* label or *only* tooltip), this is + * section 5. */ + *section = mixed_match ? 6 : 5; + } + } + g_strfreev (tooltip_tokens); + g_strfreev (tooltip_alternates); + } + + g_strfreev (key_tokens); + g_strfreev (label_tokens); + g_strfreev (label_alternates); + + return matched; +} diff --git a/app/dialogs/action-search-dialog.h b/app/dialogs/action-search-dialog.h new file mode 100644 index 0000000..7fa3e06 --- /dev/null +++ b/app/dialogs/action-search-dialog.h @@ -0,0 +1,29 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * action-search-dialog.c + * Copyright (C) 2012-2013 Srihari Sriraman + * Suhas V + * Vidyashree K + * Zeeshan Ali Ansari + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __ACTION_SEARCH_DIALOG_H__ +#define __ACTION_SEARCH_DIALOG_H__ + +GtkWidget * action_search_dialog_create (Gimp *gimp); + +#endif /* __ACTION_SEARCH_DIALOG_H__ */ diff --git a/app/dialogs/authors.h b/app/dialogs/authors.h new file mode 100644 index 0000000..d1db44d --- /dev/null +++ b/app/dialogs/authors.h @@ -0,0 +1,179 @@ + +/* NOTE: This file is auto-generated from authors.xml, do not edit it. */ + +static const gchar * const creators[] = +{ + "Spencer Kimball", + "Peter Mattis", + NULL +}; + +static const gchar * const maintainers[] = +{ + "Michael Natterer", + NULL +}; + +static const gchar * const authors[] = +{ + "Spencer Kimball", + "Peter Mattis", + "Michael Natterer", + "Fredrik Alströmer", + "Rob Antonishen", + "Timm Bäder", + "Jerry Baker", + "Daniel P. Berrange", + "Hendrik Boom", + "Richard Bowers", + "Hans Breuer", + "Simon Budig", + "João S. O. Bueno", + "Seth Burgess", + "Marco Ciampa", + "Winston Chang", + "Lars-Peter Clausen", + "Sven Claussner", + "Kevin Cozens", + "Jeremiah Darais", + "Alexia Death", + "Nicholas Doyle", + "Marek Dvoroznak", + "Daniel Eddeland", + "Ulf-D. Ehlert", + "Gil Eliyahu", + "Tobias Ellinghaus", + "Ell", + "Dirk Farin", + "Richard Gitschlag", + "Saul Goode", + "David Gowers", + "Cameron Gregory", + "Eric Grivel", + "Stephen Griffiths", + "Julien Hardelin", + "Tim Harder", + "Michael Henning", + "Lukasz Hladowski", + "Éric Hoffman", + "Patrick Horgan", + "Daniel Hornung", + "Christopher Howard", + "Alexander Hämmerle", + "HJ Imbens", + "Barak Itkin", + "Javier Jardón", + "Tim Jedlicka", + "Jehan", + "Róman Joost", + "Alexander Jones", + "Aurimas Juška", + "Malay Keshav", + "Øyvind Kolås", + "Lloyd Konneker", + "Kretynofil", + "Christian Krippendorf", + "Hartmut Kuhse", + "Eric Lamarque", + "Simone Karin Lehmann", + "Dave Lichterman", + "Adrian Likins", + "Tor Lillqvist", + "Nikc M.", + "Mikael Magnusson", + "Luidnel Maignan", + "Thomas Manni", + "Pascal Massimino", + "Johannes Matschke", + "Takeshi Matsuyama", + "Téo Mazars", + "Robert McHardy", + "Richard McLean", + "Jörn Meier", + "Mike Melancon", + "Christopher Montgomery", + "Simon Müller", + "Tobias Mueller", + "Michael Muré", + "Lionel N.", + "Sven Neumann", + "Andreas Neustifter", + "Jon Nordby", + "Martin Nordholts", + "David Odin", + "Nelson A. de Oliveira", + "Victor Oliveira", + "Yoshio Ono", + "Nathan Osman", + "Benjamin Otte", + "Petr Ovtchenkov", + "Juan Palacios", + "Ville Pätsi", + "Akkana Peck", + "Nils Philippsen", + "Mircea Purdea", + "John Ralls", + "Dennis Ranke", + "Debarshi Ray", + "Martin Renold", + "Kristian Rietveld", + "Gilles Rochefort", + "Marco Rossini", + "Karthikeyan S", + "Daniel Sabo", + "Oleksii Samorukov", + "Enrico Schröder", + "Michael Schumacher", + "shark0r", + "Peter Sikking", + "RyōTa SimaMoto", + "SHIRAKAWA Akira", + "Jernej Simončič", + "Manish Singh", + "Mukund Sivaraman", + "Ville Sokk", + "Jakub Steiner", + "Omari Stephens", + "Tobias Stoeckmann", + "Elle Stone", + "Bogdan Szczurek", + "Tal Trachtman", + "Mason Thomas", + "Benoit Touchette", + "Andreas Turtschan", + "Massimo Valentini", + "Thorsten Vollmer", + "Clayton Walker", + "Rupert Weber", + "Alexis Wilhelm", + "woob", + "Andrew Wyatt", + "Yoshinori Yamakawa", + "Mihail Zenkov", + "Zhenfeng Zhao", + "Simon Zilliken", + "Przemyslaw Zych", + NULL +}; + +static const gchar * const artists[] = +{ + "Alexia Death", + "Philipp Haegi", + "Aryeom Han", + "Ville Pätsi", + "Klaus Staedtler", + "Jakub Steiner", + NULL +}; + +static const gchar * const documenters[] = +{ + "Marco Ciampa", + "Sven Claussner", + "Ulf-D. Ehlert", + "Julien Hardelin", + "Róman Joost", + "Alexandre Prokoudine", + NULL +}; diff --git a/app/dialogs/authors.xsl b/app/dialogs/authors.xsl new file mode 100644 index 0000000..02db5c8 --- /dev/null +++ b/app/dialogs/authors.xsl @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- XSL transformation to create a header file from authors.xml --> + +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + + <xsl:output method="text" /> + + <xsl:template name="recent-contributor"> + <xsl:param name="role" /> + <xsl:apply-templates select="dc:contributor[contains(@role, $role) and + number(@last-active) >= 2 and + number(substring-after(@last-active, ".")) >= 8]" /> + </xsl:template> + + <xsl:template match="/dc:gimp-authors"> +<xsl:text> +/* NOTE: This file is auto-generated from authors.xml, do not edit it. */ + +static const gchar * const creators[] = +{ +</xsl:text> + <xsl:apply-templates select="dc:creator" /> +<xsl:text> NULL +}; +</xsl:text> + +<xsl:text> +static const gchar * const maintainers[] = +{ +</xsl:text> + <xsl:apply-templates select="dc:maintainer" /> +<xsl:text> NULL +}; +</xsl:text> + +<xsl:text> +static const gchar * const authors[] = +{ +</xsl:text> + <xsl:apply-templates select="dc:creator" /> + <xsl:apply-templates select="dc:maintainer" /> + <xsl:call-template name="recent-contributor"> + <xsl:with-param name="role" select="'author'"/> + </xsl:call-template> +<xsl:text> NULL +}; +</xsl:text> + +<xsl:text> +static const gchar * const artists[] = +{ +</xsl:text> + <xsl:call-template name="recent-contributor"> + <xsl:with-param name="role" select="'artist'"/> + </xsl:call-template> +<xsl:text> NULL +}; +</xsl:text> + +<xsl:text> +static const gchar * const documenters[] = +{ +</xsl:text> + <xsl:call-template name="recent-contributor"> + <xsl:with-param name="role" select="'documenter'"/> + </xsl:call-template> +<xsl:text> NULL +}; +</xsl:text> + </xsl:template> + + <xsl:template match="dc:creator"> "<xsl:apply-templates />", +</xsl:template> + <xsl:template match="dc:maintainer"> "<xsl:apply-templates />", +</xsl:template> + <xsl:template match="dc:contributor"> "<xsl:apply-templates />", +</xsl:template> + +</xsl:stylesheet> diff --git a/app/dialogs/channel-options-dialog.c b/app/dialogs/channel-options-dialog.c new file mode 100644 index 0000000..733bf3a --- /dev/null +++ b/app/dialogs/channel-options-dialog.c @@ -0,0 +1,247 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpcolor/gimpcolor.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpchannel.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" + +#include "widgets/gimpcolorpanel.h" +#include "widgets/gimpspinscale.h" +#include "widgets/gimpviewabledialog.h" + +#include "channel-options-dialog.h" +#include "item-options-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _ChannelOptionsDialog ChannelOptionsDialog; + +struct _ChannelOptionsDialog +{ + GimpChannelOptionsCallback callback; + gpointer user_data; + + GtkWidget *color_panel; + GtkWidget *save_sel_toggle; +}; + + +/* local function prototypes */ + +static void channel_options_dialog_free (ChannelOptionsDialog *private); +static void channel_options_dialog_callback (GtkWidget *dialog, + GimpImage *image, + GimpItem *item, + GimpContext *context, + const gchar *item_name, + gboolean item_visible, + gboolean item_linked, + GimpColorTag item_color_tag, + gboolean item_lock_content, + gboolean item_lock_position, + gpointer user_data); +static void channel_options_opacity_changed (GtkAdjustment *adjustment, + GimpColorButton *color_button); +static void channel_options_color_changed (GimpColorButton *color_button, + GtkAdjustment *adjustment); + + +/* public functions */ + +GtkWidget * +channel_options_dialog_new (GimpImage *image, + GimpChannel *channel, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + const gchar *color_label, + const gchar *opacity_label, + gboolean show_from_sel, + const gchar *channel_name, + const GimpRGB *channel_color, + gboolean channel_visible, + gboolean channel_linked, + GimpColorTag channel_color_tag, + gboolean channel_lock_content, + gboolean channel_lock_position, + GimpChannelOptionsCallback callback, + gpointer user_data) +{ + ChannelOptionsDialog *private; + GtkWidget *dialog; + GtkAdjustment *opacity_adj; + GtkWidget *scale; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (channel == NULL || GIMP_IS_CHANNEL (channel), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (title != NULL, NULL); + g_return_val_if_fail (role != NULL, NULL); + g_return_val_if_fail (icon_name != NULL, NULL); + g_return_val_if_fail (desc != NULL, NULL); + g_return_val_if_fail (help_id != NULL, NULL); + g_return_val_if_fail (channel_color != NULL, NULL); + g_return_val_if_fail (color_label != NULL, NULL); + g_return_val_if_fail (opacity_label != NULL, NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (ChannelOptionsDialog); + + private->callback = callback; + private->user_data = user_data; + + dialog = item_options_dialog_new (image, GIMP_ITEM (channel), context, + parent, title, role, + icon_name, desc, help_id, + channel_name ? _("Channel _name:") : NULL, + GIMP_ICON_TOOL_PAINTBRUSH, + _("Lock _pixels"), + _("Lock position and _size"), + channel_name, + channel_visible, + channel_linked, + channel_color_tag, + channel_lock_content, + channel_lock_position, + channel_options_dialog_callback, + private); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) channel_options_dialog_free, private); + + opacity_adj = (GtkAdjustment *) + gtk_adjustment_new (channel_color->a * 100.0, + 0.0, 100.0, 1.0, 10.0, 0); + scale = gimp_spin_scale_new (opacity_adj, NULL, 1); + gtk_widget_set_size_request (scale, 200, -1); + item_options_dialog_add_widget (dialog, + opacity_label, scale); + + private->color_panel = gimp_color_panel_new (color_label, + channel_color, + GIMP_COLOR_AREA_LARGE_CHECKS, + 24, 24); + gimp_color_panel_set_context (GIMP_COLOR_PANEL (private->color_panel), + context); + + g_signal_connect (opacity_adj, "value-changed", + G_CALLBACK (channel_options_opacity_changed), + private->color_panel); + + g_signal_connect (private->color_panel, "color-changed", + G_CALLBACK (channel_options_color_changed), + opacity_adj); + + item_options_dialog_add_widget (dialog, + NULL, private->color_panel); + + if (show_from_sel) + { + private->save_sel_toggle = + gtk_check_button_new_with_mnemonic (_("Initialize from _selection")); + + item_options_dialog_add_widget (dialog, + NULL, private->save_sel_toggle); + } + + return dialog; +} + + +/* private functions */ + +static void +channel_options_dialog_free (ChannelOptionsDialog *private) +{ + g_slice_free (ChannelOptionsDialog, private); +} + +static void +channel_options_dialog_callback (GtkWidget *dialog, + GimpImage *image, + GimpItem *item, + GimpContext *context, + const gchar *item_name, + gboolean item_visible, + gboolean item_linked, + GimpColorTag item_color_tag, + gboolean item_lock_content, + gboolean item_lock_position, + gpointer user_data) +{ + ChannelOptionsDialog *private = user_data; + GimpRGB color; + gboolean save_selection = FALSE; + + gimp_color_button_get_color (GIMP_COLOR_BUTTON (private->color_panel), + &color); + + if (private->save_sel_toggle) + save_selection = + gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (private->save_sel_toggle)); + + private->callback (dialog, + image, + GIMP_CHANNEL (item), + context, + item_name, + &color, + save_selection, + item_visible, + item_linked, + item_color_tag, + item_lock_content, + item_lock_position, + private->user_data); +} + +static void +channel_options_opacity_changed (GtkAdjustment *adjustment, + GimpColorButton *color_button) +{ + GimpRGB color; + + gimp_color_button_get_color (color_button, &color); + gimp_rgb_set_alpha (&color, gtk_adjustment_get_value (adjustment) / 100.0); + gimp_color_button_set_color (color_button, &color); +} + +static void +channel_options_color_changed (GimpColorButton *button, + GtkAdjustment *adjustment) +{ + GimpRGB color; + + gimp_color_button_get_color (button, &color); + gtk_adjustment_set_value (adjustment, color.a * 100.0); +} diff --git a/app/dialogs/channel-options-dialog.h b/app/dialogs/channel-options-dialog.h new file mode 100644 index 0000000..a1de490 --- /dev/null +++ b/app/dialogs/channel-options-dialog.h @@ -0,0 +1,60 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __CHANNEL_OPTIONS_DIALOG_H__ +#define __CHANNEL_OPTIONS_DIALOG_H__ + + +typedef void (* GimpChannelOptionsCallback) (GtkWidget *dialog, + GimpImage *image, + GimpChannel *channel, + GimpContext *context, + const gchar *channel_name, + const GimpRGB *channel_color, + gboolean save_selection, + gboolean channel_visible, + gboolean channel_linked, + GimpColorTag channel_color_tag, + gboolean channel_lock_content, + gboolean channel_lock_position, + gpointer user_data); + + +GtkWidget * channel_options_dialog_new (GimpImage *image, + GimpChannel *channel, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + const gchar *color_label, + const gchar *opacity_label, + gboolean show_from_sel, + const gchar *channel_name, + const GimpRGB *channel_color, + gboolean channel_visible, + gboolean channel_linked, + GimpColorTag channel_color_tag, + gboolean channel_lock_content, + gboolean channel_lock_position, + GimpChannelOptionsCallback callback, + gpointer user_data); + + +#endif /* __CHANNEL_OPTIONS_DIALOG_H__ */ diff --git a/app/dialogs/color-profile-dialog.c b/app/dialogs/color-profile-dialog.c new file mode 100644 index 0000000..225b811 --- /dev/null +++ b/app/dialogs/color-profile-dialog.c @@ -0,0 +1,494 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * color-profile-dialog.h + * Copyright (C) 2015 Michael Natterer <mitch@gimp.org> + * + * Partly based on the lcms plug-in + * Copyright (C) 2006, 2007 Sven Neumann <sven@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpcolor/gimpcolor.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpcoreconfig.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpviewabledialog.h" +#include "widgets/gimpwidgets-constructors.h" +#include "widgets/gimpwidgets-utils.h" + +#include "color-profile-dialog.h" + +#include "gimp-intl.h" + + +typedef struct +{ + ColorProfileDialogType dialog_type; + GimpImage *image; + GimpColorProfile *current_profile; + GimpColorProfile *default_profile; + GimpColorRenderingIntent intent; + gboolean bpc; + GimpColorProfileCallback callback; + gpointer user_data; + + GimpColorConfig *config; + GtkWidget *dialog; + GtkWidget *main_vbox; + GtkWidget *combo; + GtkWidget *dest_view; + +} ProfileDialog; + + +static void color_profile_dialog_free (ProfileDialog *private); +static GtkWidget * color_profile_combo_box_new (ProfileDialog *private); +static void color_profile_dialog_response (GtkWidget *dialog, + gint response_id, + ProfileDialog *private); +static void color_profile_dest_changed (GtkWidget *combo, + ProfileDialog *private); + + +/* public functions */ + +GtkWidget * +color_profile_dialog_new (ColorProfileDialogType dialog_type, + GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpColorProfile *current_profile, + GimpColorProfile *default_profile, + GimpColorRenderingIntent intent, + gboolean bpc, + GimpColorProfileCallback callback, + gpointer user_data) +{ + ProfileDialog *private; + GtkWidget *dialog; + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *expander; + GtkWidget *label; + const gchar *dest_label; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (current_profile == NULL || + GIMP_IS_COLOR_PROFILE (current_profile), NULL); + g_return_val_if_fail (default_profile == NULL || + GIMP_IS_COLOR_PROFILE (default_profile), NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (ProfileDialog); + + private->dialog_type = dialog_type; + private->image = image; + private->current_profile = current_profile; + private->default_profile = default_profile; + private->intent = intent; + private->bpc = bpc; + private->callback = callback; + private->user_data = user_data; + private->config = image->gimp->config->color_management; + + switch (dialog_type) + { + case COLOR_PROFILE_DIALOG_ASSIGN_PROFILE: + dialog = + gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("Assign ICC Color Profile"), + "gimp-image-color-profile-assign", + NULL, + _("Assign a color profile to the image"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_COLOR_PROFILE_ASSIGN, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Assign"), GTK_RESPONSE_OK, + + NULL); + dest_label = _("Assign"); + break; + + case COLOR_PROFILE_DIALOG_CONVERT_TO_PROFILE: + dialog = + gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("Convert to ICC Color Profile"), + "gimp-image-color-profile-convert", + NULL, + _("Convert the image to a color profile"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_COLOR_PROFILE_CONVERT, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("C_onvert"), GTK_RESPONSE_OK, + + NULL); + dest_label = _("Convert to"); + break; + + case COLOR_PROFILE_DIALOG_CONVERT_TO_RGB: + dialog = + gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("RGB Conversion"), + "gimp-image-convert-rgb", + GIMP_ICON_CONVERT_RGB, + _("Convert Image to RGB"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_CONVERT_RGB, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("C_onvert"), GTK_RESPONSE_OK, + + NULL); + dest_label = _("Convert to"); + break; + + case COLOR_PROFILE_DIALOG_CONVERT_TO_GRAY: + dialog = + gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("Grayscale Conversion"), + "gimp-image-convert-gray", + GIMP_ICON_CONVERT_GRAYSCALE, + _("Convert Image to Grayscale"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_CONVERT_GRAYSCALE, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("C_onvert"), GTK_RESPONSE_OK, + + NULL); + dest_label = _("Convert to"); + break; + + case COLOR_PROFILE_DIALOG_SELECT_SOFTPROOF_PROFILE: + dialog = + gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("Soft-Proof Profile"), + "gimp-select-softproof-profile", + GIMP_ICON_DOCUMENT_PRINT, + _("Select Soft-Proof Profile"), + parent, + gimp_standard_help_func, + GIMP_HELP_VIEW_COLOR_MANAGEMENT, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Select"), GTK_RESPONSE_OK, + + NULL); + dest_label = _("New Color Profile"); + break; + + default: + g_return_val_if_reached (NULL); + } + + private->dialog = dialog; + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) color_profile_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (color_profile_dialog_response), + private); + + private->main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (private->main_vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + private->main_vbox, TRUE, TRUE, 0); + gtk_widget_show (private->main_vbox); + + frame = gimp_frame_new (_("Current Color Profile")); + gtk_box_pack_start (GTK_BOX (private->main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + label = gimp_color_profile_label_new (private->current_profile); + gtk_container_add (GTK_CONTAINER (frame), label); + gtk_widget_show (label); + + frame = gimp_frame_new (dest_label); + gtk_box_pack_start (GTK_BOX (private->main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + private->combo = color_profile_combo_box_new (private); + gtk_box_pack_start (GTK_BOX (vbox), private->combo, FALSE, FALSE, 0); + gtk_widget_show (private->combo); + + expander = gtk_expander_new_with_mnemonic (_("Profile _details")); + gtk_box_pack_start (GTK_BOX (vbox), expander, FALSE, FALSE, 0); + gtk_widget_show (expander); + + private->dest_view = gimp_color_profile_view_new (); + gtk_container_add (GTK_CONTAINER (expander), private->dest_view); + gtk_widget_show (private->dest_view); + + g_signal_connect (private->combo, "changed", + G_CALLBACK (color_profile_dest_changed), + private); + + color_profile_dest_changed (private->combo, private); + + if (dialog_type == COLOR_PROFILE_DIALOG_CONVERT_TO_PROFILE) + { + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *combo; + GtkWidget *toggle; + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_box_pack_start (GTK_BOX (private->main_vbox), vbox, FALSE, FALSE, 0); + gtk_widget_show (vbox); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("_Rendering Intent:")); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + combo = gimp_enum_combo_box_new (GIMP_TYPE_COLOR_RENDERING_INTENT); + gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0); + gtk_widget_show (combo); + + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->intent, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->intent); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); + + toggle = + gtk_check_button_new_with_mnemonic (_("_Black Point Compensation")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), private->bpc); + gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0); + gtk_widget_show (toggle); + + g_signal_connect (toggle, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->bpc); + } + + return dialog; +} + + +/* private functions */ + +static void +color_profile_dialog_free (ProfileDialog *private) +{ + g_slice_free (ProfileDialog, private); +} + +static GtkWidget * +color_profile_combo_box_new (ProfileDialog *private) +{ + GtkListStore *store; + GtkWidget *combo; + GtkWidget *chooser; + gchar *history; + + history = gimp_personal_rc_file ("profilerc"); + store = gimp_color_profile_store_new (history); + g_free (history); + + if (private->default_profile) + { + GimpImageBaseType base_type; + GimpPrecision precision; + GError *error = NULL; + + switch (private->dialog_type) + { + case COLOR_PROFILE_DIALOG_ASSIGN_PROFILE: + case COLOR_PROFILE_DIALOG_CONVERT_TO_PROFILE: + base_type = gimp_image_get_base_type (private->image); + break; + + case COLOR_PROFILE_DIALOG_CONVERT_TO_RGB: + base_type = GIMP_RGB; + break; + + case COLOR_PROFILE_DIALOG_CONVERT_TO_GRAY: + base_type = GIMP_GRAY; + break; + + default: + g_return_val_if_reached (NULL); + } + + precision = gimp_image_get_precision (private->image); + + if (! gimp_color_profile_store_add_defaults (GIMP_COLOR_PROFILE_STORE (store), + private->config, + base_type, + precision, + &error)) + { + gimp_message (private->image->gimp, G_OBJECT (private->dialog), + GIMP_MESSAGE_ERROR, + "%s", error->message); + g_clear_error (&error); + } + } + else + { + gimp_color_profile_store_add_file (GIMP_COLOR_PROFILE_STORE (store), + NULL, NULL); + } + + chooser = + gimp_color_profile_chooser_dialog_new (_("Select Destination Profile"), + NULL, + GTK_FILE_CHOOSER_ACTION_OPEN); + + gimp_color_profile_chooser_dialog_connect_path (chooser, + G_OBJECT (private->image->gimp->config), + "color-profile-path"); + + combo = gimp_color_profile_combo_box_new_with_model (chooser, + GTK_TREE_MODEL (store)); + g_object_unref (store); + + gimp_color_profile_combo_box_set_active_file (GIMP_COLOR_PROFILE_COMBO_BOX (combo), + NULL, NULL); + + return combo; +} + +static void +color_profile_dialog_response (GtkWidget *dialog, + gint response_id, + ProfileDialog *private) +{ + if (response_id == GTK_RESPONSE_OK) + { + GimpColorProfile *profile = NULL; + GFile *file; + + file = gimp_color_profile_combo_box_get_active_file (GIMP_COLOR_PROFILE_COMBO_BOX (private->combo)); + + if (file) + { + GError *error = NULL; + + profile = gimp_color_profile_new_from_file (file, &error); + g_object_unref (file); + + if (! profile) + { + gimp_message (private->image->gimp, G_OBJECT (dialog), + GIMP_MESSAGE_ERROR, + "%s", error->message); + g_clear_error (&error); + + return; + } + } + else if (private->default_profile) + { + profile = g_object_ref (private->default_profile); + } + + private->callback (dialog, + private->image, + profile, + file, + private->intent, + private->bpc, + private->user_data); + + if (profile) + g_object_unref (profile); + } + else + { + gtk_widget_destroy (dialog); + } +} + +static void +color_profile_dest_changed (GtkWidget *combo, + ProfileDialog *private) +{ + GimpColorProfile *dest_profile = NULL; + GFile *file; + + file = gimp_color_profile_combo_box_get_active_file (GIMP_COLOR_PROFILE_COMBO_BOX (combo)); + + if (file) + { + GError *error = NULL; + + dest_profile = gimp_color_profile_new_from_file (file, &error); + g_object_unref (file); + + if (! dest_profile) + { + gimp_color_profile_view_set_error (GIMP_COLOR_PROFILE_VIEW (private->dest_view), + error->message); + g_clear_error (&error); + } + } + else if (private->default_profile) + { + dest_profile = g_object_ref (private->default_profile); + } + else + { + gimp_color_profile_view_set_error (GIMP_COLOR_PROFILE_VIEW (private->dest_view), + C_("profile", "None")); + } + + if (dest_profile) + { + gimp_color_profile_view_set_profile (GIMP_COLOR_PROFILE_VIEW (private->dest_view), + dest_profile); + g_object_unref (dest_profile); + } +} diff --git a/app/dialogs/color-profile-dialog.h b/app/dialogs/color-profile-dialog.h new file mode 100644 index 0000000..5f3921d --- /dev/null +++ b/app/dialogs/color-profile-dialog.h @@ -0,0 +1,56 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * color-profile-dialog.h + * Copyright (C) 2015 Michael Natterer <mitch@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __COLOR_PROFILE_DIALOG_H__ +#define __COLOR_PROFILE_DIALOG_H__ + + +typedef enum +{ + COLOR_PROFILE_DIALOG_ASSIGN_PROFILE, + COLOR_PROFILE_DIALOG_CONVERT_TO_PROFILE, + COLOR_PROFILE_DIALOG_CONVERT_TO_RGB, + COLOR_PROFILE_DIALOG_CONVERT_TO_GRAY, + COLOR_PROFILE_DIALOG_SELECT_SOFTPROOF_PROFILE +} ColorProfileDialogType; + + +typedef void (* GimpColorProfileCallback) (GtkWidget *dialog, + GimpImage *image, + GimpColorProfile *new_profile, + GFile *new_file, + GimpColorRenderingIntent intent, + gboolean bpc, + gpointer user_data); + + +GtkWidget * color_profile_dialog_new (ColorProfileDialogType dialog_type, + GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpColorProfile *current_profile, + GimpColorProfile *default_profile, + GimpColorRenderingIntent intent, + gboolean bpc, + GimpColorProfileCallback callback, + gpointer user_data); + + +#endif /* __COLOR_PROFILE_DIALOG_H__ */ diff --git a/app/dialogs/color-profile-import-dialog.c b/app/dialogs/color-profile-import-dialog.c new file mode 100644 index 0000000..86f2be3 --- /dev/null +++ b/app/dialogs/color-profile-import-dialog.c @@ -0,0 +1,216 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * color-profile-import-dialog.h + * Copyright (C) 2015 Michael Natterer <mitch@gimp.org> + * + * Partly based on the lcms plug-in + * Copyright (C) 2006, 2007 Sven Neumann <sven@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpcolor/gimpcolor.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimpimage-color-profile.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpviewabledialog.h" +#include "widgets/gimpwidgets-constructors.h" + +#include "color-profile-import-dialog.h" + +#include "gimp-intl.h" + + +/* public functions */ + +GimpColorProfilePolicy +color_profile_import_dialog_run (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpColorProfile **dest_profile, + GimpColorRenderingIntent *intent, + gboolean *bpc, + gboolean *dont_ask) +{ + GtkWidget *dialog; + GtkWidget *main_vbox; + GtkWidget *vbox; + GtkWidget *frame; + GtkWidget *label; + GtkWidget *intent_combo; + GtkWidget *bpc_toggle; + GtkWidget *dont_ask_toggle; + GimpColorProfile *src_profile; + GimpColorProfilePolicy policy; + const gchar *title; + const gchar *frame_title; + gchar *text; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), GIMP_COLOR_PROFILE_POLICY_KEEP); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), GIMP_COLOR_PROFILE_POLICY_KEEP); + g_return_val_if_fail (parent == NULL || GTK_IS_WIDGET (parent), + GIMP_COLOR_PROFILE_POLICY_KEEP); + g_return_val_if_fail (dest_profile != NULL, GIMP_COLOR_PROFILE_POLICY_KEEP); + + src_profile = gimp_image_get_color_profile (image); + *dest_profile = gimp_image_get_builtin_color_profile (image); + + if (gimp_image_get_base_type (image) == GIMP_GRAY) + { + title = _("Convert to Grayscale Working Space?"); + frame_title = _("Convert the image to the built-in grayscale color profile?"); + } + else + { + title = _("Convert to RGB Working Space?"); + frame_title = _("Convert the image to the built-in sRGB color profile?"); + } + + dialog = + gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + title, + "gimp-image-color-profile-import", + NULL, + _("Import the image from a color profile"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_COLOR_PROFILE_IMPORT, + + _("_Keep"), GTK_RESPONSE_CANCEL, + _("C_onvert"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_vbox, TRUE, TRUE, 0); + gtk_widget_show (main_vbox); + + text = g_strdup_printf (_("The image '%s' has an embedded color profile"), + gimp_image_get_display_name (image)); + frame = gimp_frame_new (text); + g_free (text); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + label = gimp_color_profile_label_new (src_profile); + gtk_container_add (GTK_CONTAINER (frame), label); + gtk_widget_show (label); + + frame = gimp_frame_new (frame_title); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + label = gimp_color_profile_label_new (*dest_profile); + gtk_container_add (GTK_CONTAINER (frame), label); + gtk_widget_show (label); + + if (intent && bpc) + { + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_box_pack_start (GTK_BOX (main_vbox), vbox, FALSE, FALSE, 0); + gtk_widget_show (vbox); + } + else + { + vbox = main_vbox; + } + + if (intent) + { + GtkWidget *hbox; + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("_Rendering Intent:")); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + intent_combo = gimp_enum_combo_box_new (GIMP_TYPE_COLOR_RENDERING_INTENT); + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (intent_combo), + *intent); + gtk_box_pack_start (GTK_BOX (hbox), intent_combo, TRUE, TRUE, 0); + gtk_widget_show (intent_combo); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label), intent_combo); + } + + if (bpc) + { + bpc_toggle = + gtk_check_button_new_with_mnemonic (_("_Black Point Compensation")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bpc_toggle), *bpc); + gtk_box_pack_start (GTK_BOX (vbox), bpc_toggle, FALSE, FALSE, 0); + gtk_widget_show (bpc_toggle); + } + + if (dont_ask) + { + dont_ask_toggle = + gtk_check_button_new_with_mnemonic (_("_Don't ask me again")); + gtk_box_pack_end (GTK_BOX (main_vbox), dont_ask_toggle, FALSE, FALSE, 0); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dont_ask_toggle), FALSE); + gtk_widget_show (dont_ask_toggle); + } + + switch (gtk_dialog_run (GTK_DIALOG (dialog))) + { + case GTK_RESPONSE_OK: + policy = GIMP_COLOR_PROFILE_POLICY_CONVERT; + g_object_ref (*dest_profile); + break; + + default: + policy = GIMP_COLOR_PROFILE_POLICY_KEEP; + break; + } + + if (intent) + gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (intent_combo), + (gint *) intent); + + if (bpc) + *bpc = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (bpc_toggle)); + + if (dont_ask) + *dont_ask = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dont_ask_toggle)); + + gtk_widget_destroy (dialog); + + return policy; +} diff --git a/app/dialogs/color-profile-import-dialog.h b/app/dialogs/color-profile-import-dialog.h new file mode 100644 index 0000000..2b91d4c --- /dev/null +++ b/app/dialogs/color-profile-import-dialog.h @@ -0,0 +1,35 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * color-profile-import-dialog.h + * Copyright (C) 2015 Michael Natterer <mitch@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __COLOR_PROFILE_IMPORT_DIALOG_H__ +#define __COLOR_PROFILE_IMPORT_DIALOG_H__ + + +GimpColorProfilePolicy + color_profile_import_dialog_run (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpColorProfile **dest_profile, + GimpColorRenderingIntent *intent, + gboolean *bpc, + gboolean *dont_ask); + + +#endif /* __COLOR_PROFILE_IMPORT_DIALOG_H__ */ diff --git a/app/dialogs/convert-indexed-dialog.c b/app/dialogs/convert-indexed-dialog.c new file mode 100644 index 0000000..95b705d --- /dev/null +++ b/app/dialogs/convert-indexed-dialog.c @@ -0,0 +1,436 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpcontainer-filter.h" +#include "core/gimpcontext.h" +#include "core/gimpdatafactory.h" +#include "core/gimpimage.h" +#include "core/gimplist.h" +#include "core/gimppalette.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpviewablebox.h" +#include "widgets/gimpviewabledialog.h" +#include "widgets/gimpwidgets-utils.h" + +#include "convert-indexed-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _IndexedDialog IndexedDialog; + +struct _IndexedDialog +{ + GimpImage *image; + GimpConvertPaletteType palette_type; + gint max_colors; + gboolean remove_duplicates; + GimpConvertDitherType dither_type; + gboolean dither_alpha; + gboolean dither_text_layers; + GimpPalette *custom_palette; + GimpConvertIndexedCallback callback; + gpointer user_data; + + GtkWidget *dialog; + GimpContext *context; + GimpContainer *container; + GtkWidget *duplicates_toggle; +}; + + +static void convert_dialog_free (IndexedDialog *private); +static void convert_dialog_response (GtkWidget *widget, + gint response_id, + IndexedDialog *private); +static GtkWidget * convert_dialog_palette_box (IndexedDialog *private); +static gboolean convert_dialog_palette_filter (GimpObject *object, + gpointer user_data); +static void convert_dialog_palette_changed (GimpContext *context, + GimpPalette *palette, + IndexedDialog *private); +static void convert_dialog_type_update (GtkWidget *widget, + IndexedDialog *private); + + + +/* public functions */ + +GtkWidget * +convert_indexed_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpConvertPaletteType palette_type, + gint max_colors, + gboolean remove_duplicates, + GimpConvertDitherType dither_type, + gboolean dither_alpha, + gboolean dither_text_layers, + GimpPalette *custom_palette, + GimpConvertIndexedCallback callback, + gpointer user_data) +{ + IndexedDialog *private; + GtkWidget *dialog; + GtkWidget *button; + GtkWidget *main_vbox; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *label; + GtkAdjustment *adjustment; + GtkWidget *spinbutton; + GtkWidget *frame; + GtkWidget *toggle; + GtkWidget *palette_box; + GtkWidget *combo; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (custom_palette == NULL || + GIMP_IS_PALETTE (custom_palette), NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (IndexedDialog); + + private->image = image; + private->palette_type = palette_type; + private->max_colors = max_colors; + private->remove_duplicates = remove_duplicates; + private->dither_type = dither_type; + private->dither_alpha = dither_alpha; + private->dither_text_layers = dither_text_layers; + private->custom_palette = custom_palette; + private->callback = callback; + private->user_data = user_data; + + private->dialog = dialog = + gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("Indexed Color Conversion"), + "gimp-image-convert-indexed", + GIMP_ICON_CONVERT_INDEXED, + _("Convert Image to Indexed Colors"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_CONVERT_INDEXED, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("C_onvert"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) convert_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (convert_dialog_response), + private); + + palette_box = convert_dialog_palette_box (private); + + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_vbox, TRUE, TRUE, 0); + gtk_widget_show (main_vbox); + + + /* palette */ + + frame = + gimp_enum_radio_frame_new_with_range (GIMP_TYPE_CONVERT_PALETTE_TYPE, + GIMP_CONVERT_PALETTE_GENERATE, + (palette_box ? + GIMP_CONVERT_PALETTE_CUSTOM : + GIMP_CONVERT_PALETTE_MONO), + gtk_label_new (_("Colormap")), + G_CALLBACK (convert_dialog_type_update), + private, + &button); + + gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (button), + private->palette_type); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + /* max n_colors */ + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gimp_enum_radio_frame_add (GTK_FRAME (frame), hbox, + GIMP_CONVERT_PALETTE_GENERATE, TRUE); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("_Maximum number of colors:")); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + if (private->max_colors == 256 && gimp_image_has_alpha (image)) + private->max_colors = 255; + + adjustment = (GtkAdjustment *) + gtk_adjustment_new (private->max_colors, 2, 256, 1, 8, 0); + spinbutton = gimp_spin_button_new (adjustment, 1.0, 0); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), spinbutton); + gtk_box_pack_start (GTK_BOX (hbox), spinbutton, FALSE, FALSE, 0); + gtk_widget_show (spinbutton); + + g_signal_connect (adjustment, "value-changed", + G_CALLBACK (gimp_int_adjustment_update), + &private->max_colors); + + /* custom palette */ + if (palette_box) + { + gimp_enum_radio_frame_add (GTK_FRAME (frame), palette_box, + GIMP_CONVERT_PALETTE_CUSTOM, TRUE); + gtk_widget_show (palette_box); + } + + vbox = gtk_bin_get_child (GTK_BIN (frame)); + + private->duplicates_toggle = toggle = + gtk_check_button_new_with_mnemonic (_("_Remove unused and duplicate " + "colors from colormap")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), + private->remove_duplicates); + gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 3); + gtk_widget_show (toggle); + + if (private->palette_type == GIMP_CONVERT_PALETTE_GENERATE || + private->palette_type == GIMP_CONVERT_PALETTE_MONO) + gtk_widget_set_sensitive (toggle, FALSE); + + g_signal_connect (toggle, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->remove_duplicates); + + /* dithering */ + + frame = gimp_frame_new (_("Dithering")); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("Color _dithering:")); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + combo = gimp_enum_combo_box_new (GIMP_TYPE_CONVERT_DITHER_TYPE); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); + gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0); + gtk_widget_show (combo); + + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->dither_type, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->dither_type); + + toggle = + gtk_check_button_new_with_mnemonic (_("Enable dithering of _transparency")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), + private->dither_alpha); + gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0); + gtk_widget_show (toggle); + + g_signal_connect (toggle, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->dither_alpha); + + + toggle = + gtk_check_button_new_with_mnemonic (_("Enable dithering of text _layers")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), + private->dither_text_layers); + gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0); + gtk_widget_show (toggle); + + g_signal_connect (toggle, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->dither_text_layers); + + gimp_help_set_help_data (toggle, + _("Dithering text layers will make them uneditable"), + NULL); + + return dialog; +} + + +/* private functions */ + +static void +convert_dialog_free (IndexedDialog *private) +{ + if (private->container) + g_object_unref (private->container); + + if (private->context) + g_object_unref (private->context); + + g_slice_free (IndexedDialog, private); +} + +static void +convert_dialog_response (GtkWidget *dialog, + gint response_id, + IndexedDialog *private) +{ + if (response_id == GTK_RESPONSE_OK) + { + private->callback (dialog, + private->image, + private->palette_type, + private->max_colors, + private->remove_duplicates, + private->dither_type, + private->dither_alpha, + private->dither_text_layers, + private->custom_palette, + private->user_data); + } + else + { + gtk_widget_destroy (dialog); + } +} + +static GtkWidget * +convert_dialog_palette_box (IndexedDialog *private) +{ + Gimp *gimp = private->image->gimp; + GList *list; + GimpPalette *web_palette = NULL; + gboolean custom_found = FALSE; + + /* We can't dither to > 256 colors */ + private->container = + gimp_container_filter (gimp_data_factory_get_container (gimp->palette_factory), + convert_dialog_palette_filter, + NULL); + + if (gimp_container_is_empty (private->container)) + { + g_object_unref (private->container); + private->container = NULL; + return NULL; + } + + private->context = gimp_context_new (gimp, "convert-dialog", NULL); + + for (list = GIMP_LIST (private->container)->queue->head; + list; + list = g_list_next (list)) + { + GimpPalette *palette = list->data; + + /* Preferentially, the initial default is 'Web' if available */ + if (web_palette == NULL && + g_ascii_strcasecmp (gimp_object_get_name (palette), "Web") == 0) + { + web_palette = palette; + } + + if (private->custom_palette == palette) + custom_found = TRUE; + } + + if (! custom_found) + { + if (web_palette) + private->custom_palette = web_palette; + else + private->custom_palette = GIMP_LIST (private->container)->queue->head->data; + } + + gimp_context_set_palette (private->context, private->custom_palette); + + g_signal_connect (private->context, "palette-changed", + G_CALLBACK (convert_dialog_palette_changed), + private); + + return gimp_palette_box_new (private->container, private->context, NULL, 4); +} + +static gboolean +convert_dialog_palette_filter (GimpObject *object, + gpointer user_data) +{ + GimpPalette *palette = GIMP_PALETTE (object); + + return (gimp_palette_get_n_colors (palette) > 0 && + gimp_palette_get_n_colors (palette) <= 256); +} + +static void +convert_dialog_palette_changed (GimpContext *context, + GimpPalette *palette, + IndexedDialog *private) +{ + if (! palette) + return; + + if (gimp_palette_get_n_colors (palette) > 256) + { + gimp_message (private->image->gimp, G_OBJECT (private->dialog), + GIMP_MESSAGE_WARNING, + _("Cannot convert to a palette " + "with more than 256 colors.")); + } + else + { + private->custom_palette = palette; + } +} + +static void +convert_dialog_type_update (GtkWidget *widget, + IndexedDialog *private) +{ + gimp_radio_button_update (widget, &private->palette_type); + + if (private->duplicates_toggle) + gtk_widget_set_sensitive (private->duplicates_toggle, + private->palette_type != + GIMP_CONVERT_PALETTE_GENERATE && + private->palette_type != + GIMP_CONVERT_PALETTE_MONO); +} diff --git a/app/dialogs/convert-indexed-dialog.h b/app/dialogs/convert-indexed-dialog.h new file mode 100644 index 0000000..df0ca50 --- /dev/null +++ b/app/dialogs/convert-indexed-dialog.h @@ -0,0 +1,48 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __CONVERT_INDEXED_DIALOG_H__ +#define __CONVERT_INDEXED_DIALOG_H__ + + +typedef void (* GimpConvertIndexedCallback) (GtkWidget *dialog, + GimpImage *image, + GimpConvertPaletteType palette_type, + gint max_colors, + gboolean remove_duplicates, + GimpConvertDitherType dither_type, + gboolean dither_alpha, + gboolean dither_text_layers, + GimpPalette *custom_palette, + gpointer user_data); + + +GtkWidget * convert_indexed_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpConvertPaletteType palette_type, + gint max_colors, + gboolean remove_duplicates, + GimpConvertDitherType dither_type, + gboolean dither_alpha, + gboolean dither_text_layers, + GimpPalette *custom_palette, + GimpConvertIndexedCallback callback, + gpointer user_data); + + +#endif /* __CONVERT_INDEXED_DIALOG_H__ */ diff --git a/app/dialogs/convert-precision-dialog.c b/app/dialogs/convert-precision-dialog.c new file mode 100644 index 0000000..180106b --- /dev/null +++ b/app/dialogs/convert-precision-dialog.c @@ -0,0 +1,342 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "gegl/gimp-babl.h" + +#include "core/gimpcontext.h" +#include "core/gimpimage.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpviewabledialog.h" +#include "widgets/gimpwidgets-utils.h" + +#include "convert-precision-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _ConvertDialog ConvertDialog; + +struct _ConvertDialog +{ + GimpImage *image; + GimpComponentType component_type; + gboolean linear; + GeglDitherMethod layer_dither_method; + GeglDitherMethod text_layer_dither_method; + GeglDitherMethod channel_dither_method; + GimpConvertPrecisionCallback callback; + gpointer user_data; +}; + + +/* local function prototypes */ + +static void convert_precision_dialog_free (ConvertDialog *private); +static void convert_precision_dialog_response (GtkWidget *widget, + gint response_id, + ConvertDialog *private); + + +/* public functions */ + +GtkWidget * +convert_precision_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpComponentType component_type, + GeglDitherMethod layer_dither_method, + GeglDitherMethod text_layer_dither_method, + GeglDitherMethod channel_dither_method, + GimpConvertPrecisionCallback callback, + gpointer user_data) + +{ + ConvertDialog *private; + GtkWidget *dialog; + GtkWidget *main_vbox; + GtkWidget *vbox; + GtkWidget *frame; + const gchar *enum_desc; + gchar *blurb; + const Babl *old_format; + const Babl *new_format; + gint old_bits; + gint new_bits; + gboolean dither; + gboolean linear; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (callback != NULL, NULL); + + /* random formats with the right precision */ + old_format = gimp_image_get_layer_format (image, FALSE); + new_format = gimp_babl_format (GIMP_RGB, + gimp_babl_precision (component_type, FALSE), + FALSE); + + old_bits = (babl_format_get_bytes_per_pixel (old_format) * 8 / + babl_format_get_n_components (old_format)); + new_bits = (babl_format_get_bytes_per_pixel (new_format) * 8 / + babl_format_get_n_components (new_format)); + + /* don't dither if we are converting to a higher bit depth, + * or to more than MAX_DITHER_BITS. + */ + dither = (new_bits < old_bits && + new_bits <= CONVERT_PRECISION_DIALOG_MAX_DITHER_BITS); + + /* when changing this logic, also change the same switch() + * in gimptemplateeditor.h + */ + switch (component_type) + { + case GIMP_COMPONENT_TYPE_U8: + /* default to gamma when converting 8 bit */ + linear = FALSE; + break; + + case GIMP_COMPONENT_TYPE_U16: + case GIMP_COMPONENT_TYPE_U32: + default: + /* leave gamma alone by default when converting to 16/32 bit int */ + linear = gimp_babl_format_get_linear (old_format); + break; + + case GIMP_COMPONENT_TYPE_HALF: + case GIMP_COMPONENT_TYPE_FLOAT: + case GIMP_COMPONENT_TYPE_DOUBLE: + /* default to linear when converting to floating point */ + linear = TRUE; + break; + } + + private = g_slice_new0 (ConvertDialog); + + private->image = image; + private->component_type = component_type; + private->linear = linear; + private->layer_dither_method = layer_dither_method; + private->text_layer_dither_method = text_layer_dither_method; + private->channel_dither_method = channel_dither_method; + private->callback = callback; + private->user_data = user_data; + + gimp_enum_get_value (GIMP_TYPE_COMPONENT_TYPE, component_type, + NULL, NULL, &enum_desc, NULL); + + blurb = g_strdup_printf (_("Convert Image to %s"), enum_desc); + + dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, +#if PENDING_TRANSLATION + _("Encoding Conversion"), +#endif + _("Precision Conversion"), + "gimp-image-convert-precision", + GIMP_ICON_CONVERT_PRECISION, + blurb, + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_CONVERT_PRECISION, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("C_onvert"), GTK_RESPONSE_OK, + + NULL); + + g_free (blurb); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) convert_precision_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (convert_precision_dialog_response), + private); + + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_vbox, TRUE, TRUE, 0); + gtk_widget_show (main_vbox); + + + /* gamma */ + + frame = gimp_frame_new (_("Gamma")); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + vbox = gimp_int_radio_group_new (FALSE, NULL, + G_CALLBACK (gimp_radio_button_update), + &private->linear, + linear, + + _("Perceptual gamma (sRGB)"), FALSE, NULL, + _("Linear light"), TRUE, NULL, + + NULL); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + + /* dithering */ + + if (dither) + { + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *combo; + GtkSizeGroup *size_group; + + frame = gimp_frame_new (_("Dithering")); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + /* layers */ + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("_Layers:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_size_group_add_widget (size_group, label); + gtk_widget_show (label); + + combo = gimp_enum_combo_box_new (GEGL_TYPE_DITHER_METHOD); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); + gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0); + gtk_widget_show (combo); + + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->layer_dither_method, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->layer_dither_method); + + /* text layers */ + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("_Text Layers:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_size_group_add_widget (size_group, label); + gtk_widget_show (label); + + combo = gimp_enum_combo_box_new (GEGL_TYPE_DITHER_METHOD); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); + gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0); + gtk_widget_show (combo); + + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->text_layer_dither_method, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->text_layer_dither_method); + + gimp_help_set_help_data (combo, + _("Dithering text layers will make them " + "uneditable"), + NULL); + + /* channels */ + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("_Channels and Masks:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_size_group_add_widget (size_group, label); + gtk_widget_show (label); + + combo = gimp_enum_combo_box_new (GEGL_TYPE_DITHER_METHOD); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); + gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0); + gtk_widget_show (combo); + + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->channel_dither_method, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->channel_dither_method); + + g_object_unref (size_group); + } + + return dialog; +} + + +/* private functions */ + +static void +convert_precision_dialog_free (ConvertDialog *private) +{ + g_slice_free (ConvertDialog, private); +} + +static void +convert_precision_dialog_response (GtkWidget *dialog, + gint response_id, + ConvertDialog *private) +{ + if (response_id == GTK_RESPONSE_OK) + { + GimpPrecision precision = gimp_babl_precision (private->component_type, + private->linear); + + private->callback (dialog, + private->image, + precision, + private->layer_dither_method, + private->text_layer_dither_method, + private->channel_dither_method, + private->user_data); + } + else + { + gtk_widget_destroy (dialog); + } +} diff --git a/app/dialogs/convert-precision-dialog.h b/app/dialogs/convert-precision-dialog.h new file mode 100644 index 0000000..7d4ebcd --- /dev/null +++ b/app/dialogs/convert-precision-dialog.h @@ -0,0 +1,50 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __CONVERT_PRECISION_DIALOG_H__ +#define __CONVERT_PRECISION_DIALOG_H__ + + +/* Don't offer dithering when converting down to more than this + * number of bits per component. Note that gegl:dither would + * do 16 bit, so this is a limitation of the GUI to values that make + * sense. See bug #735895. + */ +#define CONVERT_PRECISION_DIALOG_MAX_DITHER_BITS 8 + + +typedef void (* GimpConvertPrecisionCallback) (GtkWidget *dialog, + GimpImage *image, + GimpPrecision precision, + GeglDitherMethod layer_dither_method, + GeglDitherMethod text_layer_dither_method, + GeglDitherMethod channel_dither_method, + gpointer user_data); + + +GtkWidget * convert_precision_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpComponentType component_type, + GeglDitherMethod layer_dither_method, + GeglDitherMethod text_layer_dither_method, + GeglDitherMethod channel_dither_method, + GimpConvertPrecisionCallback callback, + gpointer user_data); + + +#endif /* __CONVERT_PRECISION_DIALOG_H__ */ diff --git a/app/dialogs/data-delete-dialog.c b/app/dialogs/data-delete-dialog.c new file mode 100644 index 0000000..77b73a8 --- /dev/null +++ b/app/dialogs/data-delete-dialog.c @@ -0,0 +1,159 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpcontainer.h" +#include "core/gimpcontext.h" +#include "core/gimpdata.h" +#include "core/gimpdatafactory.h" + +#include "widgets/gimpmessagebox.h" +#include "widgets/gimpmessagedialog.h" + +#include "data-delete-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _DataDeleteDialog DataDeleteDialog; + +struct _DataDeleteDialog +{ + GimpDataFactory *factory; + GimpData *data; + GimpContext *context; + GtkWidget *parent; +}; + + +/* local function prototypes */ + +static void data_delete_dialog_response (GtkWidget *dialog, + gint response_id, + DataDeleteDialog *private); + + +/* public functions */ + +GtkWidget * +data_delete_dialog_new (GimpDataFactory *factory, + GimpData *data, + GimpContext *context, + GtkWidget *parent) +{ + DataDeleteDialog *private; + GtkWidget *dialog; + + g_return_val_if_fail (GIMP_IS_DATA_FACTORY (factory), NULL); + g_return_val_if_fail (GIMP_IS_DATA (data), NULL); + g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + + private = g_slice_new0 (DataDeleteDialog); + + private->factory = factory; + private->data = data; + private->context = context; + private->parent = parent; + + dialog = gimp_message_dialog_new (_("Delete Object"), "edit-delete", + gtk_widget_get_toplevel (parent), 0, + gimp_standard_help_func, NULL, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Delete"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + g_signal_connect_object (data, "disconnect", + G_CALLBACK (gtk_widget_destroy), + dialog, G_CONNECT_SWAPPED); + + g_signal_connect (dialog, "response", + G_CALLBACK (data_delete_dialog_response), + private); + + gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box, + _("Delete '%s'?"), + gimp_object_get_name (data)); + gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box, + _("Are you sure you want to remove '%s' " + "from the list and delete it on disk?"), + gimp_object_get_name (data)); + + return dialog; +} + + +/* private functions */ + +static void +data_delete_dialog_response (GtkWidget *dialog, + gint response_id, + DataDeleteDialog *private) +{ + gtk_widget_destroy (dialog); + + if (response_id == GTK_RESPONSE_OK) + { + GimpDataFactory *factory = private->factory; + GimpData *data = private->data; + GimpContainer *container; + GimpObject *new_active = NULL; + GError *error = NULL; + + container = gimp_data_factory_get_container (factory); + + if (private->context && + GIMP_OBJECT (data) == + gimp_context_get_by_type (private->context, + gimp_container_get_children_type (container))) + { + new_active = gimp_container_get_neighbor_of (container, + GIMP_OBJECT (data)); + } + + if (! gimp_data_factory_data_delete (factory, data, TRUE, &error)) + { + gimp_message (gimp_data_factory_get_gimp (factory), + G_OBJECT (private->parent), GIMP_MESSAGE_ERROR, + "%s", error->message); + g_clear_error (&error); + } + + if (new_active) + gimp_context_set_by_type (private->context, + gimp_container_get_children_type (container), + new_active); + } + + g_slice_free (DataDeleteDialog, private); +} diff --git a/app/dialogs/data-delete-dialog.h b/app/dialogs/data-delete-dialog.h new file mode 100644 index 0000000..1b41a96 --- /dev/null +++ b/app/dialogs/data-delete-dialog.h @@ -0,0 +1,28 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __DATA_DELETE_DIALOG_H__ +#define __DATA_DELETE_DIALOG_H__ + + +GtkWidget * data_delete_dialog_new (GimpDataFactory *factory, + GimpData *data, + GimpContext *context, + GtkWidget *parent); + + +#endif /* __DATA_DELETE_DIALOG_H__ */ diff --git a/app/dialogs/dialogs-constructors.c b/app/dialogs/dialogs-constructors.c new file mode 100644 index 0000000..f80a3e8 --- /dev/null +++ b/app/dialogs/dialogs-constructors.c @@ -0,0 +1,894 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" + +#include "config/gimpguiconfig.h" + +#include "widgets/gimpbrusheditor.h" +#include "widgets/gimpbrushfactoryview.h" +#include "widgets/gimpbufferview.h" +#include "widgets/gimpchanneltreeview.h" +#include "widgets/gimpcoloreditor.h" +#include "widgets/gimpcolormapeditor.h" +#include "widgets/gimpcriticaldialog.h" +#include "widgets/gimpdashboard.h" +#include "widgets/gimpdevicestatus.h" +#include "widgets/gimpdialogfactory.h" +#include "widgets/gimpdockwindow.h" +#include "widgets/gimpdocumentview.h" +#include "widgets/gimpdynamicseditor.h" +#include "widgets/gimpdynamicsfactoryview.h" +#include "widgets/gimperrorconsole.h" +#include "widgets/gimperrordialog.h" +#include "widgets/gimpfontfactoryview.h" +#include "widgets/gimpgradienteditor.h" +#include "widgets/gimphistogrameditor.h" +#include "widgets/gimpimageview.h" +#include "widgets/gimplayertreeview.h" +#include "widgets/gimpmenudock.h" +#include "widgets/gimppaletteeditor.h" +#include "widgets/gimppatternfactoryview.h" +#include "widgets/gimpsamplepointeditor.h" +#include "widgets/gimpselectioneditor.h" +#include "widgets/gimpsymmetryeditor.h" +#include "widgets/gimptemplateview.h" +#include "widgets/gimptoolbox.h" +#include "widgets/gimptooloptionseditor.h" +#include "widgets/gimptoolpresetfactoryview.h" +#include "widgets/gimptoolpreseteditor.h" +#include "widgets/gimpundoeditor.h" +#include "widgets/gimpvectorstreeview.h" + +#include "display/gimpcursorview.h" +#include "display/gimpnavigationeditor.h" + +#include "about-dialog.h" +#include "action-search-dialog.h" +#include "dialogs.h" +#include "dialogs-constructors.h" +#include "file-open-dialog.h" +#include "file-open-location-dialog.h" +#include "file-save-dialog.h" +#include "image-new-dialog.h" +#include "input-devices-dialog.h" +#include "keyboard-shortcuts-dialog.h" +#include "module-dialog.h" +#include "palette-import-dialog.h" +#include "preferences-dialog.h" +#include "quit-dialog.h" +#include "tips-dialog.h" + +#include "gimp-intl.h" + + +/**********************/ +/* toplevel dialogs */ +/**********************/ + +GtkWidget * +dialogs_image_new_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return image_new_dialog_new (context); +} + +GtkWidget * +dialogs_file_open_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return file_open_dialog_new (context->gimp); +} + +GtkWidget * +dialogs_file_open_location_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return file_open_location_dialog_new (context->gimp); +} + +GtkWidget * +dialogs_file_save_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return file_save_dialog_new (context->gimp, FALSE); +} + +GtkWidget * +dialogs_file_export_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return file_save_dialog_new (context->gimp, TRUE); +} + +GtkWidget * +dialogs_preferences_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return preferences_dialog_create (context->gimp); +} + +GtkWidget * +dialogs_keyboard_shortcuts_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return keyboard_shortcuts_dialog_new (context->gimp); +} + +GtkWidget * +dialogs_input_devices_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return input_devices_dialog_new (context->gimp); +} + +GtkWidget * +dialogs_module_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return module_dialog_new (context->gimp); +} + +GtkWidget * +dialogs_palette_import_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return palette_import_dialog_new (context); +} + +GtkWidget * +dialogs_tips_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return tips_dialog_create (context->gimp); +} + +GtkWidget * +dialogs_about_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return about_dialog_create (context->gimp->edit_config); +} + +GtkWidget * +dialogs_action_search_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return action_search_dialog_create (context->gimp); +} + +GtkWidget * +dialogs_error_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_error_dialog_new (_("GIMP Message")); +} + +GtkWidget * +dialogs_critical_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_critical_dialog_new (_("GIMP Debug"), + context->gimp->config->last_known_release, + context->gimp->config->last_release_timestamp); +} + +GtkWidget * +dialogs_close_all_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return close_all_dialog_new (context->gimp); +} + +GtkWidget * +dialogs_quit_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return quit_dialog_new (context->gimp); +} + + +/***********/ +/* docks */ +/***********/ + +GtkWidget * +dialogs_toolbox_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_toolbox_new (factory, + context, + ui_manager); +} + +GtkWidget * +dialogs_toolbox_dock_window_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + static gint role_serial = 1; + GtkWidget *dock; + gchar *role; + + role = g_strdup_printf ("gimp-toolbox-%d", role_serial++); + dock = gimp_dock_window_new (role, + "<Toolbox>", + TRUE, + factory, + context); + g_free (role); + + return dock; +} + +GtkWidget * +dialogs_dock_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_menu_dock_new (); +} + +GtkWidget * +dialogs_dock_window_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + static gint role_serial = 1; + GtkWidget *dock; + gchar *role; + + role = g_strdup_printf ("gimp-dock-%d", role_serial++); + dock = gimp_dock_window_new (role, + "<Dock>", + FALSE, + factory, + context); + g_free (role); + + return dock; +} + + +/***************/ +/* dockables */ +/***************/ + +/***** singleton dialogs *****/ + +GtkWidget * +dialogs_tool_options_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_tool_options_editor_new (context->gimp, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_device_status_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_device_status_new (context->gimp); +} + +GtkWidget * +dialogs_error_console_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_error_console_new (context->gimp, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_cursor_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_cursor_view_new (gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_dashboard_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_dashboard_new (context->gimp, + gimp_dialog_factory_get_menu_factory (factory)); +} + + +/***** list views *****/ + +GtkWidget * +dialogs_image_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_image_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->images, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_brush_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_brush_factory_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->brush_factory, + context, + TRUE, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_dynamics_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_dynamics_factory_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->dynamics_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_mypaint_brush_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_data_factory_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->mybrush_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory), + "<MyPaintBrushes>", + "/mypaint-brushes-popup", + "mypaint-brushes"); +} + +GtkWidget * +dialogs_pattern_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_pattern_factory_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->pattern_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_gradient_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_data_factory_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->gradient_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory), + "<Gradients>", + "/gradients-popup", + "gradients"); +} + +GtkWidget * +dialogs_palette_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_data_factory_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->palette_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory), + "<Palettes>", + "/palettes-popup", + "palettes"); +} + +GtkWidget * +dialogs_font_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_font_factory_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->font_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_buffer_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_buffer_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->named_buffers, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_tool_preset_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_tool_preset_factory_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->tool_preset_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_document_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_document_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->documents, + context, + view_size, 0, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_template_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_template_view_new (GIMP_VIEW_TYPE_LIST, + context->gimp->templates, + context, + view_size, 0, + gimp_dialog_factory_get_menu_factory (factory)); +} + + +/***** grid views *****/ + +GtkWidget * +dialogs_image_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_image_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->images, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_brush_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_brush_factory_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->brush_factory, + context, + TRUE, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_dynamics_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_dynamics_factory_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->dynamics_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_mypaint_brush_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_data_factory_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->mybrush_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory), + "<MyPaintBrushes>", + "/mypaint-brushes-popup", + "mypaint-brushes"); +} + +GtkWidget * +dialogs_pattern_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_pattern_factory_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->pattern_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_gradient_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_data_factory_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->gradient_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory), + "<Gradients>", + "/gradients-popup", + "gradients"); +} + +GtkWidget * +dialogs_palette_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_data_factory_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->palette_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory), + "<Palettes>", + "/palettes-popup", + "palettes"); +} + +GtkWidget * +dialogs_font_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_font_factory_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->font_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_buffer_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_buffer_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->named_buffers, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_tool_preset_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_tool_preset_factory_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->tool_preset_factory, + context, + view_size, 1, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_document_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_document_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->documents, + context, + view_size, 0, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_template_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_template_view_new (GIMP_VIEW_TYPE_GRID, + context->gimp->templates, + context, + view_size, 0, + gimp_dialog_factory_get_menu_factory (factory)); +} + + +/***** image related dialogs *****/ + +GtkWidget * +dialogs_layer_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + if (view_size < 1) + view_size = context->gimp->config->layer_preview_size; + + return gimp_item_tree_view_new (GIMP_TYPE_LAYER_TREE_VIEW, + view_size, 2, + gimp_context_get_image (context), + gimp_dialog_factory_get_menu_factory (factory), + "<Layers>", + "/layers-popup"); +} + +GtkWidget * +dialogs_channel_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + if (view_size < 1) + view_size = context->gimp->config->layer_preview_size; + + return gimp_item_tree_view_new (GIMP_TYPE_CHANNEL_TREE_VIEW, + view_size, 1, + gimp_context_get_image (context), + gimp_dialog_factory_get_menu_factory (factory), + "<Channels>", + "/channels-popup"); +} + +GtkWidget * +dialogs_vectors_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + if (view_size < 1) + view_size = context->gimp->config->layer_preview_size; + + return gimp_item_tree_view_new (GIMP_TYPE_VECTORS_TREE_VIEW, + view_size, 1, + gimp_context_get_image (context), + gimp_dialog_factory_get_menu_factory (factory), + "<Vectors>", + "/vectors-popup"); +} + +GtkWidget * +dialogs_colormap_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_colormap_editor_new (gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_histogram_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_histogram_editor_new (); +} + +GtkWidget * +dialogs_selection_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_selection_editor_new (gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_symmetry_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_symmetry_editor_new (gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_undo_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_undo_editor_new (context->gimp->config, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_sample_point_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_sample_point_editor_new (gimp_dialog_factory_get_menu_factory (factory)); +} + + +/***** display related dialogs *****/ + +GtkWidget * +dialogs_navigation_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_navigation_editor_new (gimp_dialog_factory_get_menu_factory (factory)); +} + + +/***** misc dockables *****/ + +GtkWidget * +dialogs_color_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_color_editor_new (context); +} + + +/*************/ +/* editors */ +/*************/ + +GtkWidget * +dialogs_brush_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_brush_editor_new (context, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_dynamics_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_dynamics_editor_new (context, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_gradient_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_gradient_editor_new (context, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_palette_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_palette_editor_new (context, + gimp_dialog_factory_get_menu_factory (factory)); +} + +GtkWidget * +dialogs_tool_preset_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size) +{ + return gimp_tool_preset_editor_new (context, + gimp_dialog_factory_get_menu_factory (factory)); +} diff --git a/app/dialogs/dialogs-constructors.h b/app/dialogs/dialogs-constructors.h new file mode 100644 index 0000000..bbe4159 --- /dev/null +++ b/app/dialogs/dialogs-constructors.h @@ -0,0 +1,308 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __DIALOGS_CONSTRUCTORS_H__ +#define __DIALOGS_CONSTRUCTORS_H__ + + +/* toplevel dialogs */ + +GtkWidget * dialogs_image_new_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_file_open_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_file_open_location_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_file_save_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_file_export_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_preferences_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_input_devices_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_keyboard_shortcuts_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_module_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_palette_import_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_tips_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_about_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_action_search_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_error_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_critical_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_close_all_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_quit_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); + + +/* docks */ + +GtkWidget * dialogs_toolbox_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_toolbox_dock_window_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_dock_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_dock_window_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); + + +/* dockables */ + +GtkWidget * dialogs_tool_options_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_device_status_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_error_console_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_cursor_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_dashboard_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); + +GtkWidget * dialogs_image_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_brush_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_dynamics_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_mypaint_brush_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_pattern_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_gradient_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_palette_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_font_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_buffer_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_tool_preset_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_document_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_template_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); + +GtkWidget * dialogs_image_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_brush_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_dynamics_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_mypaint_brush_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_pattern_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_gradient_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_palette_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_font_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_buffer_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_tool_preset_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_document_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_template_grid_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); + +GtkWidget * dialogs_layer_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_channel_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_vectors_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_path_list_view_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_colormap_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_histogram_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_selection_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_symmetry_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_undo_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_sample_point_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); + +GtkWidget * dialogs_navigation_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); + +GtkWidget * dialogs_color_editor_new (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); + +GtkWidget * dialogs_brush_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_dynamics_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_gradient_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_palette_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); +GtkWidget * dialogs_tool_preset_editor_get (GimpDialogFactory *factory, + GimpContext *context, + GimpUIManager *ui_manager, + gint view_size); + + +#endif /* __DIALOGS_CONSTRUCTORS_H__ */ diff --git a/app/dialogs/dialogs-types.h b/app/dialogs/dialogs-types.h new file mode 100644 index 0000000..afdd025 --- /dev/null +++ b/app/dialogs/dialogs-types.h @@ -0,0 +1,37 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __DIALOGS_TYPES_H__ +#define __DIALOGS_TYPES_H__ + + +#include "display/display-types.h" + + +typedef void (* GimpScaleCallback) (GtkWidget *dialog, + GimpViewable *viewable, + gint width, + gint height, + GimpUnit unit, + GimpInterpolationType interpolation, + gdouble xresolution, + gdouble yresolution, + GimpUnit resolution_unit, + gpointer user_data); + + +#endif /* __DIALOGS_TYPES_H__ */ diff --git a/app/dialogs/dialogs.c b/app/dialogs/dialogs.c new file mode 100644 index 0000000..064f2c4 --- /dev/null +++ b/app/dialogs/dialogs.c @@ -0,0 +1,749 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * dialogs.c + * Copyright (C) 2010 Martin Nordholts <martinn@src.gnome.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpconfig/gimpconfig.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpguiconfig.h" + +#include "display/gimpdisplay.h" +#include "display/gimpdisplayshell.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimplist.h" + +#include "widgets/gimpdialogfactory.h" +#include "widgets/gimpdockwindow.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpmenufactory.h" +#include "widgets/gimpsessioninfo.h" +#include "widgets/gimpsessioninfo-aux.h" +#include "widgets/gimpsessionmanaged.h" +#include "widgets/gimptoolbox.h" + +#include "dialogs.h" +#include "dialogs-constructors.h" + +#include "gimp-log.h" + +#include "gimp-intl.h" + + +GimpContainer *global_recent_docks = NULL; + + +#define FOREIGN(id, singleton, remember_size) \ + { id /* identifier */, \ + NULL /* name */, \ + NULL /* blurb */, \ + NULL /* icon_name */, \ + NULL /* help_id */, \ + NULL /* new_func */, \ + dialogs_restore_dialog /* restore_func */, \ + 0 /* view_size */, \ + singleton /* singleton */, \ + TRUE /* session_managed */, \ + remember_size /* remember_size */, \ + FALSE /* remember_if_open */, \ + TRUE /* hideable */, \ + FALSE /* image_window */, \ + FALSE /* dockable */} + +#define IMAGE_WINDOW(id, singleton, remember_size) \ + { id /* identifier */, \ + NULL /* name */, \ + NULL /* blurb */, \ + NULL /* icon_name */, \ + NULL /* help_id */, \ + NULL /* new_func */, \ + dialogs_restore_window /* restore_func */, \ + 0 /* view_size */, \ + singleton /* singleton */, \ + TRUE /* session_managed */, \ + remember_size /* remember_size */, \ + TRUE /* remember_if_open */, \ + FALSE /* hideable */, \ + TRUE /* image_window */, \ + FALSE /* dockable */} + +#define TOPLEVEL(id, new_func, singleton, session_managed, remember_size) \ + { id /* identifier */, \ + NULL /* name */, \ + NULL /* blurb */, \ + NULL /* icon_name */, \ + NULL /* help_id */, \ + new_func /* new_func */, \ + dialogs_restore_dialog /* restore_func */, \ + 0 /* view_size */, \ + singleton /* singleton */, \ + session_managed /* session_managed */, \ + remember_size /* remember_size */, \ + FALSE /* remember_if_open */, \ + TRUE /* hideable */, \ + FALSE /* image_window */, \ + FALSE /* dockable */} + +#define DOCKABLE(id, name, blurb, icon_name, help_id, new_func, view_size, singleton) \ + { id /* identifier */, \ + name /* name */, \ + blurb /* blurb */, \ + icon_name /* icon_name */, \ + help_id /* help_id */, \ + new_func /* new_func */, \ + NULL /* restore_func */, \ + view_size /* view_size */, \ + singleton /* singleton */, \ + FALSE /* session_managed */, \ + FALSE /* remember_size */, \ + TRUE /* remember_if_open */, \ + TRUE /* hideable */, \ + FALSE /* image_window */, \ + TRUE /* dockable */} + +#define DOCK(id, new_func) \ + { id /* identifier */, \ + NULL /* name */, \ + NULL /* blurb */, \ + NULL /* icon_name */, \ + NULL /* help_id */, \ + new_func /* new_func */, \ + dialogs_restore_dialog /* restore_func */, \ + 0 /* view_size */, \ + FALSE /* singleton */, \ + FALSE /* session_managed */, \ + FALSE /* remember_size */, \ + FALSE /* remember_if_open */, \ + TRUE /* hideable */, \ + FALSE /* image_window */, \ + FALSE /* dockable */} + +#define DOCK_WINDOW(id, new_func) \ + { id /* identifier */, \ + NULL /* name */, \ + NULL /* blurb */, \ + NULL /* icon_name */, \ + NULL /* help_id */, \ + new_func /* new_func */, \ + dialogs_restore_dialog /* restore_func */, \ + 0 /* view_size */, \ + FALSE /* singleton */, \ + TRUE /* session_managed */, \ + TRUE /* remember_size */, \ + TRUE /* remember_if_open */, \ + TRUE /* hideable */, \ + FALSE /* image_window */, \ + FALSE /* dockable */} + +#define LISTGRID(id, new_func, name, blurb, icon_name, help_id, view_size) \ + { "gimp-"#id"-list" /* identifier */, \ + name /* name */, \ + blurb /* blurb */, \ + icon_name /* icon_name */, \ + help_id /* help_id */, \ + dialogs_##new_func##_list_view_new /* new_func */, \ + NULL /* restore_func */, \ + view_size /* view_size */, \ + FALSE /* singleton */, \ + FALSE /* session_managed */, \ + FALSE /* remember_size */, \ + TRUE /* remember_if_open */, \ + TRUE /* hideable */, \ + FALSE /* image_window */, \ + TRUE /* dockable */}, \ + { "gimp-"#id"-grid" /* identifier */, \ + name /* name */, \ + blurb /* blurb */, \ + icon_name /* icon_name */, \ + help_id /* help_id */, \ + dialogs_##new_func##_grid_view_new /* new_func */, \ + NULL /* restore_func */, \ + view_size /* view_size */, \ + FALSE /* singleton */, \ + FALSE /* session_managed */, \ + FALSE /* remember_size */, \ + TRUE /* remember_if_open */, \ + TRUE /* hideable */, \ + FALSE /* image_window */, \ + TRUE /* dockable */} + +#define LIST(id, new_func, name, blurb, icon_name, help_id, view_size) \ + { "gimp-"#id"-list" /* identifier */, \ + name /* name */, \ + blurb /* blurb */, \ + icon_name /* icon_name */, \ + help_id /* help_id */, \ + dialogs_##new_func##_list_view_new /* new_func */, \ + NULL /* restore_func */, \ + view_size /* view_size */, \ + FALSE /* singleton */, \ + FALSE /* session_managed */, \ + FALSE /* remember_size */, \ + TRUE /* remember_if_open */, \ + TRUE /* hideable */, \ + FALSE /* image_window */, \ + TRUE /* dockable */} + + +static GtkWidget * dialogs_restore_dialog (GimpDialogFactory *factory, + GdkScreen *screen, + gint monitor, + GimpSessionInfo *info); +static GtkWidget * dialogs_restore_window (GimpDialogFactory *factory, + GdkScreen *screen, + gint monitor, + GimpSessionInfo *info); + + +static const GimpDialogFactoryEntry entries[] = +{ + /* foreign toplevels without constructor */ + FOREIGN ("gimp-brightness-contrast-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-color-balance-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-color-picker-tool-dialog", TRUE, TRUE), + FOREIGN ("gimp-colorize-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-crop-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-curves-tool-dialog", TRUE, TRUE), + FOREIGN ("gimp-desaturate-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-foreground-select-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-gegl-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-gradient-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-hue-saturation-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-levels-tool-dialog", TRUE, TRUE), + FOREIGN ("gimp-measure-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-offset-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-operation-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-posterize-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-rotate-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-scale-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-shear-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-text-tool-dialog", TRUE, TRUE), + FOREIGN ("gimp-threshold-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-transform-3d-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-perspective-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-unified-transform-tool-dialog", TRUE, FALSE), + FOREIGN ("gimp-handle-transform-tool-dialog", TRUE, FALSE), + + FOREIGN ("gimp-toolbox-color-dialog", TRUE, FALSE), + FOREIGN ("gimp-gradient-editor-color-dialog", TRUE, FALSE), + FOREIGN ("gimp-palette-editor-color-dialog", TRUE, FALSE), + FOREIGN ("gimp-colormap-editor-color-dialog", TRUE, FALSE), + + FOREIGN ("gimp-controller-editor-dialog", FALSE, TRUE), + FOREIGN ("gimp-controller-action-dialog", FALSE, TRUE), + + /* ordinary toplevels */ + TOPLEVEL ("gimp-image-new-dialog", + dialogs_image_new_new, FALSE, TRUE, FALSE), + TOPLEVEL ("gimp-file-open-dialog", + dialogs_file_open_new, TRUE, TRUE, TRUE), + TOPLEVEL ("gimp-file-open-location-dialog", + dialogs_file_open_location_new, FALSE, TRUE, FALSE), + TOPLEVEL ("gimp-file-save-dialog", + dialogs_file_save_new, FALSE, TRUE, TRUE), + TOPLEVEL ("gimp-file-export-dialog", + dialogs_file_export_new, FALSE, TRUE, TRUE), + + /* singleton toplevels */ + TOPLEVEL ("gimp-preferences-dialog", + dialogs_preferences_get, TRUE, TRUE, TRUE), + TOPLEVEL ("gimp-input-devices-dialog", + dialogs_input_devices_get, TRUE, TRUE, FALSE), + TOPLEVEL ("gimp-keyboard-shortcuts-dialog", + dialogs_keyboard_shortcuts_get, TRUE, TRUE, TRUE), + TOPLEVEL ("gimp-module-dialog", + dialogs_module_get, TRUE, TRUE, TRUE), + TOPLEVEL ("gimp-palette-import-dialog", + dialogs_palette_import_get, TRUE, TRUE, TRUE), + TOPLEVEL ("gimp-tips-dialog", + dialogs_tips_get, TRUE, FALSE, FALSE), + TOPLEVEL ("gimp-about-dialog", + dialogs_about_get, TRUE, FALSE, FALSE), + TOPLEVEL ("gimp-action-search-dialog", + dialogs_action_search_get, TRUE, TRUE, TRUE), + TOPLEVEL ("gimp-error-dialog", + dialogs_error_get, TRUE, FALSE, FALSE), + TOPLEVEL ("gimp-critical-dialog", + dialogs_critical_get, TRUE, FALSE, FALSE), + TOPLEVEL ("gimp-close-all-dialog", + dialogs_close_all_get, TRUE, FALSE, FALSE), + TOPLEVEL ("gimp-quit-dialog", + dialogs_quit_get, TRUE, FALSE, FALSE), + + /* docks */ + DOCK ("gimp-dock", + dialogs_dock_new), + DOCK ("gimp-toolbox", + dialogs_toolbox_new), + + /* dock windows */ + DOCK_WINDOW ("gimp-dock-window", + dialogs_dock_window_new), + DOCK_WINDOW ("gimp-toolbox-window", + dialogs_toolbox_dock_window_new), + + /* singleton dockables */ + DOCKABLE ("gimp-tool-options", + N_("Tool Options"), NULL, GIMP_ICON_DIALOG_TOOL_OPTIONS, + GIMP_HELP_TOOL_OPTIONS_DIALOG, + dialogs_tool_options_new, 0, TRUE), + DOCKABLE ("gimp-device-status", + N_("Devices"), N_("Device Status"), GIMP_ICON_DIALOG_DEVICE_STATUS, + GIMP_HELP_DEVICE_STATUS_DIALOG, + dialogs_device_status_new, 0, TRUE), + DOCKABLE ("gimp-error-console", + N_("Errors"), N_("Error Console"), GIMP_ICON_DIALOG_WARNING, + GIMP_HELP_ERRORS_DIALOG, + dialogs_error_console_new, 0, TRUE), + DOCKABLE ("gimp-cursor-view", + N_("Pointer"), N_("Pointer Information"), GIMP_ICON_CURSOR, + GIMP_HELP_POINTER_INFO_DIALOG, + dialogs_cursor_view_new, 0, TRUE), + DOCKABLE ("gimp-dashboard", + N_("Dashboard"), N_("Dashboard"), GIMP_ICON_DIALOG_DASHBOARD, + GIMP_HELP_DASHBOARD_DIALOG, + dialogs_dashboard_new, 0, TRUE), + + /* list & grid views */ + LISTGRID (image, image, + N_("Images"), NULL, GIMP_ICON_DIALOG_IMAGES, + GIMP_HELP_IMAGE_DIALOG, GIMP_VIEW_SIZE_MEDIUM), + LISTGRID (brush, brush, + N_("Brushes"), NULL, GIMP_ICON_BRUSH, + GIMP_HELP_BRUSH_DIALOG, GIMP_VIEW_SIZE_MEDIUM), + LISTGRID (dynamics, dynamics, + N_("Paint Dynamics"), NULL, GIMP_ICON_DYNAMICS, + GIMP_HELP_DYNAMICS_DIALOG, GIMP_VIEW_SIZE_MEDIUM), + LISTGRID (mypaint-brush, mypaint_brush, + N_("MyPaint Brushes"), NULL, GIMP_ICON_MYPAINT_BRUSH, + GIMP_HELP_MYPAINT_BRUSH_DIALOG, GIMP_VIEW_SIZE_LARGE), + LISTGRID (pattern, pattern, + N_("Patterns"), NULL, GIMP_ICON_PATTERN, + GIMP_HELP_PATTERN_DIALOG, GIMP_VIEW_SIZE_MEDIUM), + LISTGRID (gradient, gradient, + N_("Gradients"), NULL, GIMP_ICON_GRADIENT, + GIMP_HELP_GRADIENT_DIALOG, GIMP_VIEW_SIZE_MEDIUM), + LISTGRID (palette, palette, + N_("Palettes"), NULL, GIMP_ICON_PALETTE, + GIMP_HELP_PALETTE_DIALOG, GIMP_VIEW_SIZE_MEDIUM), + LISTGRID (font, font, + N_("Fonts"), NULL, GIMP_ICON_FONT, + GIMP_HELP_FONT_DIALOG, GIMP_VIEW_SIZE_MEDIUM), + LISTGRID (buffer, buffer, + N_("Buffers"), NULL, GIMP_ICON_BUFFER, + GIMP_HELP_BUFFER_DIALOG, GIMP_VIEW_SIZE_MEDIUM), + LISTGRID (tool-preset, tool_preset, + N_("Tool Presets"), NULL, GIMP_ICON_TOOL_PRESET, + GIMP_HELP_TOOL_PRESET_DIALOG, GIMP_VIEW_SIZE_MEDIUM), + LISTGRID (document, document, + N_("History"), N_("Document History"), GIMP_ICON_DOCUMENT_OPEN_RECENT, + GIMP_HELP_DOCUMENT_DIALOG, GIMP_VIEW_SIZE_LARGE), + LISTGRID (template, template, + N_("Templates"), N_("Image Templates"), GIMP_ICON_TEMPLATE, + GIMP_HELP_TEMPLATE_DIALOG, GIMP_VIEW_SIZE_SMALL), + + /* image related */ + DOCKABLE ("gimp-layer-list", + N_("Layers"), NULL, GIMP_ICON_DIALOG_LAYERS, + GIMP_HELP_LAYER_DIALOG, + dialogs_layer_list_view_new, 0, FALSE), + DOCKABLE ("gimp-channel-list", + N_("Channels"), NULL, GIMP_ICON_DIALOG_CHANNELS, + GIMP_HELP_CHANNEL_DIALOG, + dialogs_channel_list_view_new, 0, FALSE), + DOCKABLE ("gimp-vectors-list", + N_("Paths"), NULL, GIMP_ICON_DIALOG_PATHS, + GIMP_HELP_PATH_DIALOG, + dialogs_vectors_list_view_new, 0, FALSE), + DOCKABLE ("gimp-indexed-palette", + N_("Colormap"), NULL, GIMP_ICON_COLORMAP, + GIMP_HELP_INDEXED_PALETTE_DIALOG, + dialogs_colormap_editor_new, 0, FALSE), + DOCKABLE ("gimp-histogram-editor", + N_("Histogram"), NULL, GIMP_ICON_HISTOGRAM, + GIMP_HELP_HISTOGRAM_DIALOG, + dialogs_histogram_editor_new, 0, FALSE), + DOCKABLE ("gimp-selection-editor", + N_("Selection"), N_("Selection Editor"), GIMP_ICON_SELECTION, + GIMP_HELP_SELECTION_DIALOG, + dialogs_selection_editor_new, 0, FALSE), + DOCKABLE ("gimp-symmetry-editor", + N_("Symmetry Painting"), NULL, GIMP_ICON_SYMMETRY, + GIMP_HELP_SYMMETRY_DIALOG, + dialogs_symmetry_editor_new, 0, FALSE), + DOCKABLE ("gimp-undo-history", + N_("Undo"), N_("Undo History"), GIMP_ICON_DIALOG_UNDO_HISTORY, + GIMP_HELP_UNDO_DIALOG, + dialogs_undo_editor_new, 0, FALSE), + DOCKABLE ("gimp-sample-point-editor", + N_("Sample Points"), N_("Sample Points"), GIMP_ICON_SAMPLE_POINT, + GIMP_HELP_SAMPLE_POINT_DIALOG, + dialogs_sample_point_editor_new, 0, FALSE), + + /* display related */ + DOCKABLE ("gimp-navigation-view", + N_("Navigation"), N_("Display Navigation"), GIMP_ICON_DIALOG_NAVIGATION, + GIMP_HELP_NAVIGATION_DIALOG, + dialogs_navigation_editor_new, 0, FALSE), + + /* editors */ + DOCKABLE ("gimp-color-editor", + N_("FG/BG"), N_("FG/BG Color"), GIMP_ICON_COLORS_DEFAULT, + GIMP_HELP_COLOR_DIALOG, + dialogs_color_editor_new, 0, FALSE), + + /* singleton editors */ + DOCKABLE ("gimp-brush-editor", + N_("Brush Editor"), NULL, GIMP_ICON_BRUSH, + GIMP_HELP_BRUSH_EDITOR_DIALOG, + dialogs_brush_editor_get, 0, TRUE), + DOCKABLE ("gimp-dynamics-editor", + N_("Paint Dynamics Editor"), NULL, GIMP_ICON_DYNAMICS, + GIMP_HELP_DYNAMICS_EDITOR_DIALOG, + dialogs_dynamics_editor_get, 0, TRUE), + DOCKABLE ("gimp-gradient-editor", + N_("Gradient Editor"), NULL, GIMP_ICON_GRADIENT, + GIMP_HELP_GRADIENT_EDITOR_DIALOG, + dialogs_gradient_editor_get, 0, TRUE), + DOCKABLE ("gimp-palette-editor", + N_("Palette Editor"), NULL, GIMP_ICON_PALETTE, + GIMP_HELP_PALETTE_EDITOR_DIALOG, + dialogs_palette_editor_get, 0, TRUE), + DOCKABLE ("gimp-tool-preset-editor", + N_("Tool Preset Editor"), NULL, GIMP_ICON_TOOL_PRESET, + GIMP_HELP_TOOL_PRESET_EDITOR_DIALOG, + dialogs_tool_preset_editor_get, 0, TRUE), + + /* image windows */ + IMAGE_WINDOW ("gimp-empty-image-window", + TRUE, TRUE), + IMAGE_WINDOW ("gimp-single-image-window", + TRUE, TRUE) +}; + +/** + * dialogs_restore_dialog: + * @factory: + * @screen: + * @monitor: + * @info: + * + * Creates a top level widget based on the given session info object + * in which other widgets later can be be put, typically also restored + * from the same session info object. + * + * Returns: + **/ +static GtkWidget * +dialogs_restore_dialog (GimpDialogFactory *factory, + GdkScreen *screen, + gint monitor, + GimpSessionInfo *info) +{ + GtkWidget *dialog; + GimpCoreConfig *config = gimp_dialog_factory_get_context (factory)->gimp->config; + + GIMP_LOG (DIALOG_FACTORY, "restoring toplevel \"%s\" (info %p)", + gimp_session_info_get_factory_entry (info)->identifier, + info); + + dialog = + gimp_dialog_factory_dialog_new (factory, screen, monitor, + NULL /*ui_manager*/, + gimp_session_info_get_factory_entry (info)->identifier, + gimp_session_info_get_factory_entry (info)->view_size, + ! GIMP_GUI_CONFIG (config)->hide_docks); + + g_object_set_data (G_OBJECT (dialog), GIMP_DIALOG_VISIBILITY_KEY, + GINT_TO_POINTER (GIMP_GUI_CONFIG (config)->hide_docks ? + GIMP_DIALOG_VISIBILITY_HIDDEN : + GIMP_DIALOG_VISIBILITY_VISIBLE)); + + return dialog; +} + +/** + * dialogs_restore_window: + * @factory: + * @screen: + * @monitor: + * @info: + * + * "restores" the image window. We don't really restore anything since + * the image window is created earlier, so we just look for and return + * the already-created image window. + * + * Returns: + **/ +static GtkWidget * +dialogs_restore_window (GimpDialogFactory *factory, + GdkScreen *screen, + gint monitor, + GimpSessionInfo *info) +{ + Gimp *gimp = gimp_dialog_factory_get_context (factory)->gimp; + GimpDisplay *display = GIMP_DISPLAY (gimp_get_empty_display (gimp)); + GimpDisplayShell *shell = gimp_display_get_shell (display); + GtkWidget *dialog; + + dialog = GTK_WIDGET (gimp_display_shell_get_window (shell)); + + return dialog; +} + + +/* public functions */ + +void +dialogs_init (Gimp *gimp, + GimpMenuFactory *menu_factory) +{ + GimpDialogFactory *factory = NULL; + gint i = 0; + + g_return_if_fail (GIMP_IS_GIMP (gimp)); + g_return_if_fail (GIMP_IS_MENU_FACTORY (menu_factory)); + + factory = gimp_dialog_factory_new ("toplevel", + gimp_get_user_context (gimp), + menu_factory); + gimp_dialog_factory_set_singleton (factory); + + for (i = 0; i < G_N_ELEMENTS (entries); i++) + gimp_dialog_factory_register_entry (factory, + entries[i].identifier, + gettext (entries[i].name), + gettext (entries[i].blurb), + entries[i].icon_name, + entries[i].help_id, + entries[i].new_func, + entries[i].restore_func, + entries[i].view_size, + entries[i].singleton, + entries[i].session_managed, + entries[i].remember_size, + entries[i].remember_if_open, + entries[i].hideable, + entries[i].image_window, + entries[i].dockable); + + global_recent_docks = gimp_list_new (GIMP_TYPE_SESSION_INFO, FALSE); +} + +void +dialogs_exit (Gimp *gimp) +{ + g_return_if_fail (GIMP_IS_GIMP (gimp)); + + if (gimp_dialog_factory_get_singleton ()) + { + /* run dispose manually so the factory destroys its dialogs, which + * might in turn directly or indirectly ref the factory + */ + g_object_run_dispose (G_OBJECT (gimp_dialog_factory_get_singleton ())); + + g_object_unref (gimp_dialog_factory_get_singleton ()); + gimp_dialog_factory_set_singleton (NULL); + } + + g_clear_object (&global_recent_docks); +} + +static void +dialogs_ensure_factory_entry_on_recent_dock (GimpSessionInfo *info) +{ + if (! gimp_session_info_get_factory_entry (info)) + { + GimpDialogFactoryEntry *entry = NULL; + + /* The recent docks container only contains session infos for + * dock windows + */ + entry = gimp_dialog_factory_find_entry (gimp_dialog_factory_get_singleton (), + "gimp-dock-window"); + + gimp_session_info_set_factory_entry (info, entry); + } +} + +static GFile * +dialogs_get_dockrc_file (void) +{ + const gchar *basename; + + basename = g_getenv ("GIMP_TESTING_DOCKRC_NAME"); + if (! basename) + basename = "dockrc"; + + return gimp_directory_file (basename, NULL); +} + +void +dialogs_load_recent_docks (Gimp *gimp) +{ + GFile *file; + GError *error = NULL; + + g_return_if_fail (GIMP_IS_GIMP (gimp)); + + file = dialogs_get_dockrc_file (); + + if (gimp->be_verbose) + g_print ("Parsing '%s'\n", gimp_file_get_utf8_name (file)); + + if (! gimp_config_deserialize_gfile (GIMP_CONFIG (global_recent_docks), + file, + NULL, &error)) + { + if (error->code != GIMP_CONFIG_ERROR_OPEN_ENOENT) + gimp_message_literal (gimp, NULL, GIMP_MESSAGE_ERROR, error->message); + + g_clear_error (&error); + } + + g_object_unref (file); + + /* In GIMP 2.6 dockrc did not contain the factory entries for the + * session infos, so set that up manually if needed + */ + gimp_container_foreach (global_recent_docks, + (GFunc) dialogs_ensure_factory_entry_on_recent_dock, + NULL); + + gimp_list_reverse (GIMP_LIST (global_recent_docks)); +} + +void +dialogs_save_recent_docks (Gimp *gimp) +{ + GFile *file; + GError *error = NULL; + + g_return_if_fail (GIMP_IS_GIMP (gimp)); + + file = dialogs_get_dockrc_file (); + + if (gimp->be_verbose) + g_print ("Writing '%s'\n", gimp_file_get_utf8_name (file)); + + if (! gimp_config_serialize_to_gfile (GIMP_CONFIG (global_recent_docks), + file, + "recently closed docks", + "end of recently closed docks", + NULL, &error)) + { + gimp_message_literal (gimp, NULL, GIMP_MESSAGE_ERROR, error->message); + g_clear_error (&error); + } + + g_object_unref (file); +} + +GtkWidget * +dialogs_get_toolbox (void) +{ + GList *list; + + g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (gimp_dialog_factory_get_singleton ()), NULL); + + for (list = gimp_dialog_factory_get_open_dialogs (gimp_dialog_factory_get_singleton ()); + list; + list = g_list_next (list)) + { + if (GIMP_IS_DOCK_WINDOW (list->data) && + gimp_dock_window_has_toolbox (list->data)) + return list->data; + } + + return NULL; +} + +GtkWidget * +dialogs_get_dialog (GObject *attach_object, + const gchar *attach_key) +{ + g_return_val_if_fail (G_IS_OBJECT (attach_object), NULL); + g_return_val_if_fail (attach_key != NULL, NULL); + + return g_object_get_data (attach_object, attach_key); +} + +void +dialogs_attach_dialog (GObject *attach_object, + const gchar *attach_key, + GtkWidget *dialog) +{ + g_return_if_fail (G_IS_OBJECT (attach_object)); + g_return_if_fail (attach_key != NULL); + g_return_if_fail (GTK_IS_WIDGET (dialog)); + + g_object_set_data (attach_object, attach_key, dialog); + g_object_set_data (G_OBJECT (dialog), "gimp-dialogs-attach-key", + (gpointer) attach_key); + + g_signal_connect_object (dialog, "destroy", + G_CALLBACK (dialogs_detach_dialog), + attach_object, + G_CONNECT_SWAPPED); +} + +void +dialogs_detach_dialog (GObject *attach_object, + GtkWidget *dialog) +{ + const gchar *attach_key; + + g_return_if_fail (G_IS_OBJECT (attach_object)); + g_return_if_fail (GTK_IS_WIDGET (dialog)); + + attach_key = g_object_get_data (G_OBJECT (dialog), + "gimp-dialogs-attach-key"); + + g_return_if_fail (attach_key != NULL); + + g_object_set_data (attach_object, attach_key, NULL); + + g_signal_handlers_disconnect_by_func (dialog, + dialogs_detach_dialog, + attach_object); +} + +void +dialogs_destroy_dialog (GObject *attach_object, + const gchar *attach_key) +{ + GtkWidget *dialog; + + g_return_if_fail (G_IS_OBJECT (attach_object)); + g_return_if_fail (attach_key != NULL); + + dialog = g_object_get_data (attach_object, attach_key); + + if (dialog) + gtk_widget_destroy (dialog); +} diff --git a/app/dialogs/dialogs.h b/app/dialogs/dialogs.h new file mode 100644 index 0000000..387dfa2 --- /dev/null +++ b/app/dialogs/dialogs.h @@ -0,0 +1,50 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __DIALOGS_H__ +#define __DIALOGS_H__ + + +extern GimpDialogFactory *global_dialog_factory; +extern GimpContainer *global_recent_docks; + + +void dialogs_init (Gimp *gimp, + GimpMenuFactory *menu_factory); +void dialogs_exit (Gimp *gimp); + +void dialogs_load_recent_docks (Gimp *gimp); +void dialogs_save_recent_docks (Gimp *gimp); + +GtkWidget * dialogs_get_toolbox (void); + + +/* attaching dialogs to arbitrary objects, and detaching them + * automatically upon destruction + */ +GtkWidget * dialogs_get_dialog (GObject *attach_object, + const gchar *attach_key); +void dialogs_attach_dialog (GObject *attach_object, + const gchar *attach_key, + GtkWidget *dialog); +void dialogs_detach_dialog (GObject *attach_object, + GtkWidget *dialog); +void dialogs_destroy_dialog (GObject *attach_object, + const gchar *attach_key); + + +#endif /* __DIALOGS_H__ */ diff --git a/app/dialogs/file-open-dialog.c b/app/dialogs/file-open-dialog.c new file mode 100644 index 0000000..9b4c5e9 --- /dev/null +++ b/app/dialogs/file-open-dialog.c @@ -0,0 +1,276 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995, 1996, 1997 Spencer Kimball and Peter Mattis + * Copyright (C) 1997 Josh MacDonald + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpimage.h" +#include "core/gimpimage-undo.h" +#include "core/gimplayer.h" +#include "core/gimpprogress.h" + +#include "file/file-open.h" +#include "file/gimp-file.h" + +#include "widgets/gimpfiledialog.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpopendialog.h" +#include "widgets/gimpwidgets-utils.h" + +#include "file-open-dialog.h" + +#include "gimp-intl.h" + + +/* local function prototypes */ + +static void file_open_dialog_response (GtkWidget *dialog, + gint response_id, + Gimp *gimp); +static GimpImage *file_open_dialog_open_image (GtkWidget *dialog, + Gimp *gimp, + GFile *file, + GimpPlugInProcedure *load_proc); +static gboolean file_open_dialog_open_layers (GtkWidget *dialog, + GimpImage *image, + GFile *file, + GimpPlugInProcedure *load_proc); + + +/* public functions */ + +GtkWidget * +file_open_dialog_new (Gimp *gimp) +{ + GtkWidget *dialog; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + dialog = gimp_open_dialog_new (gimp); + + gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), TRUE); + + gimp_file_dialog_load_state (GIMP_FILE_DIALOG (dialog), + "gimp-file-open-dialog-state"); + + g_signal_connect (dialog, "response", + G_CALLBACK (file_open_dialog_response), + gimp); + + return dialog; +} + + +/* private functions */ + +static void +file_open_dialog_response (GtkWidget *dialog, + gint response_id, + Gimp *gimp) +{ + GimpFileDialog *file_dialog = GIMP_FILE_DIALOG (dialog); + GimpOpenDialog *open_dialog = GIMP_OPEN_DIALOG (dialog); + GSList *files; + GSList *list; + gboolean success = FALSE; + + gimp_file_dialog_save_state (GIMP_FILE_DIALOG (dialog), + "gimp-file-open-dialog-state"); + + if (response_id != GTK_RESPONSE_OK) + { + if (! file_dialog->busy) + gtk_widget_destroy (dialog); + + return; + } + + files = gtk_file_chooser_get_files (GTK_FILE_CHOOSER (dialog)); + + if (files) + g_object_set_data_full (G_OBJECT (gimp), GIMP_FILE_OPEN_LAST_FILE_KEY, + g_object_ref (files->data), + (GDestroyNotify) g_object_unref); + + gimp_file_dialog_set_sensitive (file_dialog, FALSE); + + /* When we are going to open new image windows, unset the transient + * window. We don't need it since we will use gdk_window_raise() to + * keep the dialog on top. And if we don't do it, then the dialog + * will pull the image window it was invoked from on top of all the + * new opened image windows, and we don't want that to happen. + */ + if (! open_dialog->open_as_layers) + gtk_window_set_transient_for (GTK_WINDOW (dialog), NULL); + + if (file_dialog->image) + g_object_ref (file_dialog->image); + + for (list = files; list; list = g_slist_next (list)) + { + GFile *file = list->data; + + if (open_dialog->open_as_layers) + { + if (! file_dialog->image) + { + gimp_open_dialog_set_image ( + open_dialog, + file_open_dialog_open_image (dialog, + gimp, + file, + file_dialog->file_proc), + TRUE); + + if (file_dialog->image) + { + g_object_ref (file_dialog->image); + success = TRUE; + } + } + else if (file_open_dialog_open_layers (dialog, + file_dialog->image, + file, + file_dialog->file_proc)) + { + success = TRUE; + } + } + else + { + if (file_open_dialog_open_image (dialog, + gimp, + file, + file_dialog->file_proc)) + { + success = TRUE; + + /* Make the dialog stay on top of all images we open if + * we open say 10 at once + */ + gdk_window_raise (gtk_widget_get_window (dialog)); + } + } + + if (file_dialog->canceled) + break; + } + + if (success) + { + if (file_dialog->image) + { + if (open_dialog->open_as_layers) + gimp_image_flush (file_dialog->image); + + g_object_unref (file_dialog->image); + } + + gtk_widget_destroy (dialog); + } + else + { + if (file_dialog->image) + g_object_unref (file_dialog->image); + + gimp_file_dialog_set_sensitive (file_dialog, TRUE); + } + + g_slist_free_full (files, (GDestroyNotify) g_object_unref); +} + +static GimpImage * +file_open_dialog_open_image (GtkWidget *dialog, + Gimp *gimp, + GFile *file, + GimpPlugInProcedure *load_proc) +{ + GimpImage *image; + GimpPDBStatusType status; + GError *error = NULL; + + image = file_open_with_proc_and_display (gimp, + gimp_get_user_context (gimp), + GIMP_PROGRESS (dialog), + file, file, FALSE, + load_proc, + G_OBJECT (gtk_widget_get_screen (dialog)), + gimp_widget_get_monitor (dialog), + &status, &error); + + if (! image && status != GIMP_PDB_CANCEL) + { + gimp_message (gimp, G_OBJECT (dialog), GIMP_MESSAGE_ERROR, + _("Opening '%s' failed:\n\n%s"), + gimp_file_get_utf8_name (file), error->message); + g_clear_error (&error); + } + + return image; +} + +static gboolean +file_open_dialog_open_layers (GtkWidget *dialog, + GimpImage *image, + GFile *file, + GimpPlugInProcedure *load_proc) +{ + GList *new_layers; + GimpPDBStatusType status; + GError *error = NULL; + + new_layers = file_open_layers (image->gimp, + gimp_get_user_context (image->gimp), + GIMP_PROGRESS (dialog), + image, FALSE, + file, GIMP_RUN_INTERACTIVE, load_proc, + &status, &error); + + if (new_layers) + { + gimp_image_add_layers (image, new_layers, + GIMP_IMAGE_ACTIVE_PARENT, -1, + 0, 0, + gimp_image_get_width (image), + gimp_image_get_height (image), + _("Open layers")); + + g_list_free (new_layers); + + return TRUE; + } + else if (status != GIMP_PDB_CANCEL) + { + gimp_message (image->gimp, G_OBJECT (dialog), GIMP_MESSAGE_ERROR, + _("Opening '%s' failed:\n\n%s"), + gimp_file_get_utf8_name (file), error->message); + g_clear_error (&error); + } + + return FALSE; +} diff --git a/app/dialogs/file-open-dialog.h b/app/dialogs/file-open-dialog.h new file mode 100644 index 0000000..fba4896 --- /dev/null +++ b/app/dialogs/file-open-dialog.h @@ -0,0 +1,25 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __FILE_OPEN_DIALOG_H__ +#define __FILE_OPEN_DIALOG_H__ + + +GtkWidget * file_open_dialog_new (Gimp *gimp); + + +#endif /* __FILE_OPEN_DIALOG_H__ */ diff --git a/app/dialogs/file-open-location-dialog.c b/app/dialogs/file-open-location-dialog.c new file mode 100644 index 0000000..dcdffc9 --- /dev/null +++ b/app/dialogs/file-open-location-dialog.c @@ -0,0 +1,289 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995, 1996, 1997 Spencer Kimball and Peter Mattis + * Copyright (C) 1997 Josh MacDonald + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimpprogress.h" + +#include "file/file-open.h" +#include "file/file-utils.h" + +#include "widgets/gimpcontainerentry.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpprogressbox.h" +#include "widgets/gimpwidgets-utils.h" + +#include "file-open-location-dialog.h" + +#include "gimp-intl.h" + + +static void file_open_location_response (GtkDialog *dialog, + gint response_id, + Gimp *gimp); + +static gboolean file_open_location_completion (GtkEntryCompletion *completion, + const gchar *key, + GtkTreeIter *iter, + gpointer data); + + +/* public functions */ + +GtkWidget * +file_open_location_dialog_new (Gimp *gimp) +{ + GimpContext *context; + GtkWidget *dialog; + GtkWidget *hbox; + GtkWidget *vbox; + GtkWidget *image; + GtkWidget *label; + GtkWidget *entry; + GtkEntryCompletion *completion; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + dialog = gimp_dialog_new (_("Open Location"), + "gimp-file-open-location", + NULL, 0, + gimp_standard_help_func, + GIMP_HELP_FILE_OPEN_LOCATION, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Open"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG(dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + g_signal_connect (dialog, "response", + G_CALLBACK (file_open_location_response), + gimp); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (hbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0); + gtk_widget_show (vbox); + + image = gtk_image_new_from_icon_name (GIMP_ICON_WEB, GTK_ICON_SIZE_BUTTON); + gtk_box_pack_start (GTK_BOX (vbox), image, FALSE, FALSE, 0); + gtk_widget_show (image); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + label = gtk_label_new (_("Enter location (URI):")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + /* we don't want the context to affect the entry, so create + * a scratch one instead of using e.g. the user context + */ + context = gimp_context_new (gimp, "file-open-location-dialog", NULL); + entry = gimp_container_entry_new (gimp->documents, context, + GIMP_VIEW_SIZE_SMALL, 0); + g_object_unref (context); + + completion = gtk_entry_get_completion (GTK_ENTRY (entry)); + gtk_entry_completion_set_match_func (completion, + file_open_location_completion, + NULL, NULL); + + gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE); + gtk_widget_set_size_request (entry, 400, -1); + gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); + gtk_widget_show (entry); + + g_object_set_data (G_OBJECT (dialog), "location-entry", entry); + + return dialog; +} + + +/* private functions */ + +static void +file_open_location_response (GtkDialog *dialog, + gint response_id, + Gimp *gimp) +{ + GtkWidget *entry; + GtkWidget *box; + const gchar *text = NULL; + + box = g_object_get_data (G_OBJECT (dialog), "progress-box"); + + if (response_id != GTK_RESPONSE_OK) + { + if (box && GIMP_PROGRESS_BOX (box)->active) + gimp_progress_cancel (GIMP_PROGRESS (box)); + else + gtk_widget_destroy (GTK_WIDGET (dialog)); + + return; + } + + entry = g_object_get_data (G_OBJECT (dialog), "location-entry"); + text = gtk_entry_get_text (GTK_ENTRY (entry)); + + if (text && strlen (text)) + { + GimpImage *image; + gchar *filename; + GFile *file; + GimpPDBStatusType status; + GError *error = NULL; + + filename = g_filename_from_uri (text, NULL, NULL); + + if (filename) + { + file = g_file_new_for_uri (text); + g_free (filename); + } + else + { + file = file_utils_filename_to_file (gimp, text, &error); + } + + if (!box) + { + box = gimp_progress_box_new (); + gtk_container_set_border_width (GTK_CONTAINER (box), 12); + gtk_box_pack_end (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + box, FALSE, FALSE, 0); + + g_object_set_data (G_OBJECT (dialog), "progress-box", box); + } + + if (file) + { + GFile *entered_file = g_file_new_for_uri (text); + + /* should not fail but does, see issue #3093 */ + if (! entered_file) + entered_file = g_object_ref (file); + + gtk_widget_show (box); + + gtk_editable_set_editable (GTK_EDITABLE (entry), FALSE); + gtk_dialog_set_response_sensitive (dialog, GTK_RESPONSE_OK, FALSE); + + image = file_open_with_proc_and_display (gimp, + gimp_get_user_context (gimp), + GIMP_PROGRESS (box), + file, entered_file, + FALSE, NULL, + G_OBJECT (gtk_widget_get_screen (entry)), + gimp_widget_get_monitor (entry), + &status, &error); + + gtk_dialog_set_response_sensitive (dialog, GTK_RESPONSE_OK, TRUE); + gtk_editable_set_editable (GTK_EDITABLE (entry), TRUE); + + g_object_unref (entered_file); + + if (image == NULL && status != GIMP_PDB_CANCEL) + { + gimp_message (gimp, G_OBJECT (box), GIMP_MESSAGE_ERROR, + _("Opening '%s' failed:\n\n%s"), + gimp_file_get_utf8_name (file), error->message); + g_clear_error (&error); + } + + g_object_unref (file); + + if (image != NULL) + { + gtk_widget_destroy (GTK_WIDGET (dialog)); + return; + } + } + else + { + gimp_message (gimp, G_OBJECT (box), GIMP_MESSAGE_ERROR, + _("Opening '%s' failed:\n\n%s"), + text, + /* error should never be NULL, also issue #3093 */ + error ? error->message : _("Invalid URI")); + g_clear_error (&error); + } + } +} + +static gboolean +file_open_location_completion (GtkEntryCompletion *completion, + const gchar *key, + GtkTreeIter *iter, + gpointer data) +{ + GtkTreeModel *model = gtk_entry_completion_get_model (completion); + gchar *name; + gchar *normalized; + gchar *case_normalized; + gboolean match; + + gtk_tree_model_get (model, iter, + 1, &name, + -1); + + if (! name) + return FALSE; + + normalized = g_utf8_normalize (name, -1, G_NORMALIZE_ALL); + case_normalized = g_utf8_casefold (normalized, -1); + + match = (strncmp (key, case_normalized, strlen (key)) == 0); + + if (! match) + { + const gchar *colon = strchr (case_normalized, ':'); + + if (colon && strlen (colon) > 2 && colon[1] == '/' && colon[2] == '/') + match = (strncmp (key, colon + 3, strlen (key)) == 0); + } + + g_free (normalized); + g_free (case_normalized); + g_free (name); + + return match; +} diff --git a/app/dialogs/file-open-location-dialog.h b/app/dialogs/file-open-location-dialog.h new file mode 100644 index 0000000..b2926cd --- /dev/null +++ b/app/dialogs/file-open-location-dialog.h @@ -0,0 +1,25 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __FILE_OPEN_LOCATION_DIALOG_H__ +#define __FILE_OPEN_LOCATION_DIALOG_H__ + + +GtkWidget * file_open_location_dialog_new (Gimp *gimp); + + +#endif /* __FILE_OPEN_LOCATION_DIALOG_H__ */ diff --git a/app/dialogs/file-save-dialog.c b/app/dialogs/file-save-dialog.c new file mode 100644 index 0000000..a7aa857 --- /dev/null +++ b/app/dialogs/file-save-dialog.c @@ -0,0 +1,816 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995, 1996, 1997 Spencer Kimball and Peter Mattis + * Copyright (C) 1997 Josh MacDonald + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpimage.h" +#include "core/gimpprogress.h" + +#include "plug-in/gimppluginmanager-file.h" +#include "plug-in/gimppluginprocedure.h" + +#include "file/file-save.h" +#include "file/gimp-file.h" + +#include "widgets/gimpactiongroup.h" +#include "widgets/gimpexportdialog.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpmessagebox.h" +#include "widgets/gimpmessagedialog.h" +#include "widgets/gimpsavedialog.h" + +#include "display/gimpdisplay.h" +#include "display/gimpdisplayshell.h" + +#include "file-save-dialog.h" + +#include "gimp-log.h" +#include "gimp-intl.h" + + +typedef enum +{ + CHECK_URI_FAIL, + CHECK_URI_OK, + CHECK_URI_SWITCH_DIALOGS +} CheckUriResult; + + +/* local function prototypes */ + +static GtkFileChooserConfirmation + file_save_dialog_confirm_overwrite (GtkWidget *dialog, + Gimp *gimp); +static void file_save_dialog_response (GtkWidget *dialog, + gint response_id, + Gimp *gimp); +static CheckUriResult file_save_dialog_check_file (GtkWidget *save_dialog, + Gimp *gimp, + GFile **ret_file, + gchar **ret_basename, + GimpPlugInProcedure **ret_save_proc); +static gboolean file_save_dialog_no_overwrite_confirmation (GimpFileDialog *dialog, + Gimp *gimp); +static GimpPlugInProcedure * + file_save_dialog_find_procedure (GimpFileDialog *dialog, + GFile *file); +static gboolean file_save_dialog_switch_dialogs (GimpFileDialog *file_dialog, + Gimp *gimp, + const gchar *basename); +static gboolean file_save_dialog_use_extension (GtkWidget *save_dialog, + GFile *file); + + +/* public functions */ + +GtkWidget * +file_save_dialog_new (Gimp *gimp, + gboolean export) +{ + GtkWidget *dialog; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + if (! export) + { + dialog = gimp_save_dialog_new (gimp); + + gimp_file_dialog_load_state (GIMP_FILE_DIALOG (dialog), + "gimp-file-save-dialog-state"); + } + else + { + dialog = gimp_export_dialog_new (gimp); + + gimp_file_dialog_load_state (GIMP_FILE_DIALOG (dialog), + "gimp-file-export-dialog-state"); + } + + g_signal_connect (dialog, "confirm-overwrite", + G_CALLBACK (file_save_dialog_confirm_overwrite), + gimp); + + g_signal_connect (dialog, "response", + G_CALLBACK (file_save_dialog_response), + gimp); + + return dialog; +} + + +/* private functions */ + +static GtkFileChooserConfirmation +file_save_dialog_confirm_overwrite (GtkWidget *dialog, + Gimp *gimp) +{ + GimpFileDialog *file_dialog = GIMP_FILE_DIALOG (dialog); + + if (file_save_dialog_no_overwrite_confirmation (file_dialog, gimp)) + /* The URI will not be accepted whatever happens, so don't + * bother asking the user about overwriting files + */ + return GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME; + else + return GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM; +} + +static void +file_save_dialog_response (GtkWidget *dialog, + gint response_id, + Gimp *gimp) +{ + GimpFileDialog *file_dialog = GIMP_FILE_DIALOG (dialog); + GFile *file; + gchar *basename; + GimpPlugInProcedure *save_proc; + + if (GIMP_IS_SAVE_DIALOG (dialog)) + { + gimp_file_dialog_save_state (file_dialog, "gimp-file-save-dialog-state"); + } + else /* GIMP_IS_EXPORT_DIALOG (dialog) */ + { + gimp_file_dialog_save_state (file_dialog, "gimp-file-export-dialog-state"); + } + + if (response_id != GTK_RESPONSE_OK) + { + if (! file_dialog->busy) + gtk_widget_destroy (dialog); + + return; + } + + g_object_ref (file_dialog); + g_object_ref (file_dialog->image); + + switch (file_save_dialog_check_file (dialog, gimp, + &file, &basename, &save_proc)) + { + case CHECK_URI_FAIL: + break; + + case CHECK_URI_OK: + { + gboolean xcf_compression = FALSE; + + gimp_file_dialog_set_sensitive (file_dialog, FALSE); + + if (GIMP_IS_SAVE_DIALOG (dialog)) + { + xcf_compression = GIMP_SAVE_DIALOG (dialog)->compression; + } + + if (file_save_dialog_save_image (GIMP_PROGRESS (dialog), + gimp, + file_dialog->image, + file, + save_proc, + GIMP_RUN_INTERACTIVE, + GIMP_IS_SAVE_DIALOG (dialog) && + ! GIMP_SAVE_DIALOG (dialog)->save_a_copy, + FALSE, + GIMP_IS_EXPORT_DIALOG (dialog), + xcf_compression, + FALSE)) + { + /* Save was successful, now store the URI in a couple of + * places that depend on it being the user that made a + * save. Lower-level URI management is handled in + * file_save() + */ + if (GIMP_IS_SAVE_DIALOG (dialog)) + { + if (GIMP_SAVE_DIALOG (dialog)->save_a_copy) + gimp_image_set_save_a_copy_file (file_dialog->image, file); + + g_object_set_data_full (G_OBJECT (file_dialog->image->gimp), + GIMP_FILE_SAVE_LAST_FILE_KEY, + g_object_ref (file), + (GDestroyNotify) g_object_unref); + } + else + { + g_object_set_data_full (G_OBJECT (file_dialog->image->gimp), + GIMP_FILE_EXPORT_LAST_FILE_KEY, + g_object_ref (file), + (GDestroyNotify) g_object_unref); + } + + /* make sure the menus are updated with the keys we've just set */ + gimp_image_flush (file_dialog->image); + + /* Handle close-after-saving */ + if (GIMP_IS_SAVE_DIALOG (dialog) && + GIMP_SAVE_DIALOG (dialog)->close_after_saving && + GIMP_SAVE_DIALOG (dialog)->display_to_close) + { + GimpDisplay *display = GIMP_DISPLAY (GIMP_SAVE_DIALOG (dialog)->display_to_close); + + if (! gimp_image_is_dirty (gimp_display_get_image (display))) + { + gimp_display_close (display); + } + } + + gtk_widget_destroy (dialog); + } + + g_object_unref (file); + g_free (basename); + + gimp_file_dialog_set_sensitive (file_dialog, TRUE); + } + break; + + case CHECK_URI_SWITCH_DIALOGS: + file_dialog->busy = TRUE; /* prevent destruction */ + gtk_dialog_response (GTK_DIALOG (dialog), FILE_SAVE_RESPONSE_OTHER_DIALOG); + file_dialog->busy = FALSE; + + gtk_widget_destroy (dialog); + break; + } + + g_object_unref (file_dialog->image); + g_object_unref (file_dialog); +} + +/* IMPORTANT: When changing this function, keep + * file_save_dialog_no_overwrite_confirmation() up to date. It is + * difficult to move logic to a common place due to how the dialog is + * implemented in GTK+ in combination with how we use it. + */ +static CheckUriResult +file_save_dialog_check_file (GtkWidget *dialog, + Gimp *gimp, + GFile **ret_file, + gchar **ret_basename, + GimpPlugInProcedure **ret_save_proc) +{ + GimpFileDialog *file_dialog = GIMP_FILE_DIALOG (dialog); + GFile *file; + gchar *uri; + gchar *basename; + GFile *basename_file; + GimpPlugInProcedure *save_proc; + GimpPlugInProcedure *uri_proc; + GimpPlugInProcedure *basename_proc; + + file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog)); + + if (! file) + return CHECK_URI_FAIL; + + basename = g_path_get_basename (gimp_file_get_utf8_name (file)); + basename_file = g_file_new_for_uri (basename); + + save_proc = file_dialog->file_proc; + uri_proc = file_save_dialog_find_procedure (file_dialog, file); + basename_proc = file_save_dialog_find_procedure (file_dialog, basename_file); + + g_object_unref (basename_file); + + uri = g_file_get_uri (file); + + GIMP_LOG (SAVE_DIALOG, "URI = %s", uri); + GIMP_LOG (SAVE_DIALOG, "basename = %s", basename); + GIMP_LOG (SAVE_DIALOG, "selected save_proc: %s", + save_proc ? + gimp_procedure_get_label (GIMP_PROCEDURE (save_proc)) : "NULL"); + GIMP_LOG (SAVE_DIALOG, "URI save_proc: %s", + uri_proc ? + gimp_procedure_get_label (GIMP_PROCEDURE (uri_proc)) : "NULL"); + GIMP_LOG (SAVE_DIALOG, "basename save_proc: %s", + basename_proc ? + gimp_procedure_get_label (GIMP_PROCEDURE (basename_proc)) : "NULL"); + + g_free (uri); + + /* first check if the user entered an extension at all */ + if (! basename_proc) + { + GIMP_LOG (SAVE_DIALOG, "basename has no valid extension"); + + if (! strchr (basename, '.')) + { + const gchar *ext = NULL; + + GIMP_LOG (SAVE_DIALOG, "basename has no '.', trying to add extension"); + + if (! save_proc && GIMP_IS_SAVE_DIALOG (dialog)) + { + ext = "xcf"; + } + else if (save_proc && save_proc->extensions_list) + { + ext = save_proc->extensions_list->data; + } + + if (ext) + { + gchar *ext_basename; + gchar *dirname; + gchar *filename; + gchar *utf8; + + GIMP_LOG (SAVE_DIALOG, "appending .%s to basename", ext); + + ext_basename = g_strconcat (basename, ".", ext, NULL); + + g_free (basename); + basename = ext_basename; + + dirname = g_path_get_dirname (gimp_file_get_utf8_name (file)); + filename = g_build_filename (dirname, basename, NULL); + g_free (dirname); + + utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL); + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), + utf8); + g_free (utf8); + + g_free (filename); + + GIMP_LOG (SAVE_DIALOG, + "set basename to %s, rerunning response and bailing out", + basename); + + /* call the response callback again, so the + * overwrite-confirm logic can check the changed uri + */ + gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); + + goto fail; + } + else + { + GIMP_LOG (SAVE_DIALOG, + "save_proc has no extensions, continuing without"); + + /* there may be file formats with no extension at all, use + * the selected proc in this case. + */ + basename_proc = save_proc; + + if (! uri_proc) + uri_proc = basename_proc; + } + + if (! basename_proc) + { + GIMP_LOG (SAVE_DIALOG, + "unable to figure save_proc, bailing out"); + + if (file_save_dialog_switch_dialogs (file_dialog, gimp, basename)) + { + goto switch_dialogs; + } + + goto fail; + } + } + else if (save_proc && ! save_proc->extensions_list) + { + GIMP_LOG (SAVE_DIALOG, + "basename has '.', but save_proc has no extensions, " + "accepting random extension"); + + /* accept any random extension if the file format has + * no extensions at all + */ + basename_proc = save_proc; + + if (! uri_proc) + uri_proc = basename_proc; + } + } + + /* then check if the selected format matches the entered extension */ + if (! save_proc) + { + GIMP_LOG (SAVE_DIALOG, "no save_proc was selected from the list"); + + if (! basename_proc) + { + GIMP_LOG (SAVE_DIALOG, + "basename has no useful extension, bailing out"); + + if (file_save_dialog_switch_dialogs (file_dialog, gimp, basename)) + { + goto switch_dialogs; + } + + goto fail; + } + + GIMP_LOG (SAVE_DIALOG, "use URI's proc '%s' so indirect saving works", + gimp_procedure_get_label (GIMP_PROCEDURE (uri_proc))); + + /* use the URI's proc if no save proc was selected */ + save_proc = uri_proc; + } + else + { + GIMP_LOG (SAVE_DIALOG, "save_proc '%s' was selected from the list", + gimp_procedure_get_label (GIMP_PROCEDURE (save_proc))); + + if (save_proc != basename_proc) + { + GIMP_LOG (SAVE_DIALOG, "however the basename's proc is '%s'", + gimp_procedure_get_label (GIMP_PROCEDURE (basename_proc))); + + if (uri_proc != basename_proc) + { + GIMP_LOG (SAVE_DIALOG, + "that's impossible for remote URIs, bailing out"); + + /* remote URI */ + + gimp_message (gimp, G_OBJECT (dialog), GIMP_MESSAGE_WARNING, + _("Saving remote files needs to determine the " + "file format from the file extension. " + "Please enter a file extension that matches " + "the selected file format or enter no file " + "extension at all.")); + + goto fail; + } + else + { + GIMP_LOG (SAVE_DIALOG, + "ask the user if she really wants that filename"); + + /* local URI */ + + if (! file_save_dialog_use_extension (dialog, file)) + { + goto fail; + } + } + } + else if (save_proc != uri_proc) + { + GIMP_LOG (SAVE_DIALOG, + "use URI's proc '%s' so indirect saving works", + gimp_procedure_get_label (GIMP_PROCEDURE (uri_proc))); + + /* need to use the URI's proc for saving because e.g. + * the GIF plug-in can't save a GIF to sftp:// + */ + save_proc = uri_proc; + } + } + + if (! save_proc) + { + g_warning ("%s: EEEEEEK", G_STRFUNC); + + return CHECK_URI_FAIL; + } + + *ret_file = file; + *ret_basename = basename; + *ret_save_proc = save_proc; + + return CHECK_URI_OK; + + fail: + + g_object_unref (file); + g_free (basename); + + return CHECK_URI_FAIL; + + switch_dialogs: + + g_object_unref (file); + g_free (basename); + + return CHECK_URI_SWITCH_DIALOGS; +} + +/* + * IMPORTANT: Keep this up to date with file_save_dialog_check_uri(). + */ +static gboolean +file_save_dialog_no_overwrite_confirmation (GimpFileDialog *file_dialog, + Gimp *gimp) +{ + GFile *file; + gchar *basename; + GFile *basename_file; + GimpPlugInProcedure *basename_proc; + GimpPlugInProcedure *save_proc; + gboolean uri_will_change; + gboolean unknown_ext; + + file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (file_dialog)); + + if (! file) + return FALSE; + + basename = g_path_get_basename (gimp_file_get_utf8_name (file)); + basename_file = g_file_new_for_uri (basename); + + save_proc = file_dialog->file_proc; + basename_proc = file_save_dialog_find_procedure (file_dialog, basename_file); + + g_object_unref (basename_file); + + uri_will_change = (! basename_proc && + ! strchr (basename, '.') && + (! save_proc || save_proc->extensions_list)); + + unknown_ext = (! save_proc && + ! basename_proc); + + g_free (basename); + g_object_unref (file); + + return uri_will_change || unknown_ext; +} + +static GimpPlugInProcedure * +file_save_dialog_find_procedure (GimpFileDialog *file_dialog, + GFile *file) +{ + GimpPlugInManager *manager = file_dialog->gimp->plug_in_manager; + GimpFileProcedureGroup group; + + if (GIMP_IS_SAVE_DIALOG (file_dialog)) + group = GIMP_FILE_PROCEDURE_GROUP_SAVE; + else + group = GIMP_FILE_PROCEDURE_GROUP_EXPORT; + + return gimp_plug_in_manager_file_procedure_find (manager, group, file, NULL); +} + +static gboolean +file_save_other_dialog_activated (GtkWidget *label, + const gchar *uri, + GtkDialog *dialog) +{ + gtk_dialog_response (dialog, FILE_SAVE_RESPONSE_OTHER_DIALOG); + + return TRUE; +} + +static gboolean +file_save_dialog_switch_dialogs (GimpFileDialog *file_dialog, + Gimp *gimp, + const gchar *basename) +{ + GimpPlugInProcedure *proc_in_other_group; + GimpFileProcedureGroup other_group; + GFile *file; + gboolean switch_dialogs = FALSE; + + file = g_file_new_for_uri (basename); + + if (GIMP_IS_EXPORT_DIALOG (file_dialog)) + other_group = GIMP_FILE_PROCEDURE_GROUP_SAVE; + else + other_group = GIMP_FILE_PROCEDURE_GROUP_EXPORT; + + proc_in_other_group = + gimp_plug_in_manager_file_procedure_find (gimp->plug_in_manager, + other_group, file, NULL); + + g_object_unref (file); + + if (proc_in_other_group) + { + GtkWidget *dialog; + const gchar *primary; + const gchar *message; + const gchar *link; + + if (GIMP_IS_EXPORT_DIALOG (file_dialog)) + { + primary = _("The given filename cannot be used for exporting"); + message = _("You can use this dialog to export to various file formats. " + "If you want to save the image to the GIMP XCF format, use " + "File→Save instead."); + link = _("Take me to the Save dialog"); + } + else + { + primary = _("The given filename cannot be used for saving"); + message = _("You can use this dialog to save to the GIMP XCF " + "format. Use File→Export to export to other file formats."); + link = _("Take me to the Export dialog"); + } + + dialog = gimp_message_dialog_new (_("Extension Mismatch"), + GIMP_ICON_DIALOG_WARNING, + GTK_WIDGET (file_dialog), + GTK_DIALOG_DESTROY_WITH_PARENT, + gimp_standard_help_func, NULL, + + _("_OK"), GTK_RESPONSE_OK, + + NULL); + + gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box, + "%s", primary); + + gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box, + "%s", message); + + if (GIMP_IS_EXPORT_DIALOG (file_dialog) || + (! GIMP_SAVE_DIALOG (file_dialog)->save_a_copy && + ! GIMP_SAVE_DIALOG (file_dialog)->close_after_saving)) + { + GtkWidget *label; + gchar *markup; + + markup = g_strdup_printf ("<a href=\"other-dialog\">%s</a>", link); + label = gtk_label_new (markup); + g_free (markup); + + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_box_pack_start (GTK_BOX (GIMP_MESSAGE_DIALOG (dialog)->box), label, + FALSE, FALSE, 0); + gtk_widget_show (label); + + g_signal_connect (label, "activate-link", + G_CALLBACK (file_save_other_dialog_activated), + dialog); + } + + gtk_dialog_set_response_sensitive (GTK_DIALOG (file_dialog), + GTK_RESPONSE_CANCEL, FALSE); + gtk_dialog_set_response_sensitive (GTK_DIALOG (file_dialog), + GTK_RESPONSE_OK, FALSE); + + g_object_ref (dialog); + + if (gimp_dialog_run (GIMP_DIALOG (dialog)) == FILE_SAVE_RESPONSE_OTHER_DIALOG) + { + switch_dialogs = TRUE; + } + + gtk_widget_destroy (dialog); + g_object_unref (dialog); + + gtk_dialog_set_response_sensitive (GTK_DIALOG (file_dialog), + GTK_RESPONSE_CANCEL, TRUE); + gtk_dialog_set_response_sensitive (GTK_DIALOG (file_dialog), + GTK_RESPONSE_OK, TRUE); + } + else + { + gimp_message (gimp, G_OBJECT (file_dialog), GIMP_MESSAGE_WARNING, + _("The given filename does not have any known " + "file extension. Please enter a known file " + "extension or select a file format from the " + "file format list.")); + } + + return switch_dialogs; +} + +static gboolean +file_save_dialog_use_extension (GtkWidget *save_dialog, + GFile *file) +{ + GtkWidget *dialog; + gboolean use_name = FALSE; + + dialog = gimp_message_dialog_new (_("Extension Mismatch"), + GIMP_ICON_DIALOG_QUESTION, + save_dialog, GTK_DIALOG_DESTROY_WITH_PARENT, + gimp_standard_help_func, NULL, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Save"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box, + _("The given file extension does " + "not match the chosen file type.")); + + gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box, + _("Do you want to save the image using this " + "name anyway?")); + + gtk_dialog_set_response_sensitive (GTK_DIALOG (save_dialog), + GTK_RESPONSE_CANCEL, FALSE); + gtk_dialog_set_response_sensitive (GTK_DIALOG (save_dialog), + GTK_RESPONSE_OK, FALSE); + + g_object_ref (dialog); + + use_name = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK); + + gtk_widget_destroy (dialog); + g_object_unref (dialog); + + gtk_dialog_set_response_sensitive (GTK_DIALOG (save_dialog), + GTK_RESPONSE_CANCEL, TRUE); + gtk_dialog_set_response_sensitive (GTK_DIALOG (save_dialog), + GTK_RESPONSE_OK, TRUE); + + return use_name; +} + +gboolean +file_save_dialog_save_image (GimpProgress *progress, + Gimp *gimp, + GimpImage *image, + GFile *file, + GimpPlugInProcedure *save_proc, + GimpRunMode run_mode, + gboolean change_saved_state, + gboolean export_backward, + gboolean export_forward, + gboolean xcf_compression, + gboolean verbose_cancel) +{ + GimpPDBStatusType status; + GError *error = NULL; + GList *list; + gboolean success = FALSE; + + for (list = gimp_action_groups_from_name ("file"); + list; + list = g_list_next (list)) + { + gimp_action_group_set_action_sensitive (list->data, "file-quit", FALSE); + } + + gimp_image_set_xcf_compression (image, xcf_compression); + + status = file_save (gimp, image, progress, file, + save_proc, run_mode, + change_saved_state, export_backward, export_forward, + &error); + + switch (status) + { + case GIMP_PDB_SUCCESS: + success = TRUE; + break; + + case GIMP_PDB_CANCEL: + if (verbose_cancel) + gimp_message_literal (gimp, + G_OBJECT (progress), GIMP_MESSAGE_INFO, + _("Saving canceled")); + break; + + default: + { + gimp_message (gimp, G_OBJECT (progress), GIMP_MESSAGE_ERROR, + _("Saving '%s' failed:\n\n%s"), + gimp_file_get_utf8_name (file), + error ? error->message : _("Unknown error")); + g_clear_error (&error); + } + break; + } + + for (list = gimp_action_groups_from_name ("file"); + list; + list = g_list_next (list)) + { + gimp_action_group_set_action_sensitive (list->data, "file-quit", TRUE); + } + + return success; +} diff --git a/app/dialogs/file-save-dialog.h b/app/dialogs/file-save-dialog.h new file mode 100644 index 0000000..92f69cb --- /dev/null +++ b/app/dialogs/file-save-dialog.h @@ -0,0 +1,42 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __FILE_SAVE_DIALOG_H__ +#define __FILE_SAVE_DIALOG_H__ + + +#define FILE_SAVE_RESPONSE_OTHER_DIALOG -23 + + +GtkWidget * file_save_dialog_new (Gimp *gimp, + gboolean export); + +gboolean file_save_dialog_save_image (GimpProgress *progress_and_handler, + Gimp *gimp, + GimpImage *image, + GFile *file, + GimpPlugInProcedure *write_proc, + GimpRunMode run_mode, + gboolean save_a_copy, + gboolean export_backward, + gboolean export_forward, + gboolean xcf_compression, + gboolean verbose_cancel); + + + +#endif /* __FILE_SAVE_DIALOG_H__ */ diff --git a/app/dialogs/fill-dialog.c b/app/dialogs/fill-dialog.c new file mode 100644 index 0000000..a74bfd1 --- /dev/null +++ b/app/dialogs/fill-dialog.c @@ -0,0 +1,183 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * fill-dialog.c + * Copyright (C) 2016 Michael Natterer <mitch@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpconfig/gimpconfig.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpdrawable.h" +#include "core/gimpfilloptions.h" + +#include "widgets/gimpfilleditor.h" +#include "widgets/gimpviewabledialog.h" + +#include "fill-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_RESET 1 + + +typedef struct _FillDialog FillDialog; + +struct _FillDialog +{ + GimpItem *item; + GimpDrawable *drawable; + GimpContext *context; + GimpFillOptions *options; + GimpFillCallback callback; + gpointer user_data; +}; + + +/* local function prototypes */ + +static void fill_dialog_free (FillDialog *private); +static void fill_dialog_response (GtkWidget *dialog, + gint response_id, + FillDialog *private); + + +/* public function */ + +GtkWidget * +fill_dialog_new (GimpItem *item, + GimpDrawable *drawable, + GimpContext *context, + const gchar *title, + const gchar *icon_name, + const gchar *help_id, + GtkWidget *parent, + GimpFillOptions *options, + GimpFillCallback callback, + gpointer user_data) +{ + FillDialog *private; + GtkWidget *dialog; + GtkWidget *main_vbox; + GtkWidget *fill_editor; + + g_return_val_if_fail (GIMP_IS_ITEM (item), NULL); + g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GIMP_IS_FILL_OPTIONS (options), NULL); + g_return_val_if_fail (icon_name != NULL, NULL); + g_return_val_if_fail (help_id != NULL, NULL); + g_return_val_if_fail (parent == NULL || GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (FillDialog); + + private->item = item; + private->drawable = drawable; + private->context = context; + private->options = gimp_fill_options_new (context->gimp, context, TRUE); + private->callback = callback; + private->user_data = user_data; + + gimp_config_sync (G_OBJECT (options), + G_OBJECT (private->options), 0); + + dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (item), context, + title, "gimp-fill-options", + icon_name, + _("Choose Fill Style"), + parent, + gimp_standard_help_func, + help_id, + + _("_Reset"), RESPONSE_RESET, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Fill"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + RESPONSE_RESET, + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) fill_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (fill_dialog_response), + private); + + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_vbox, TRUE, TRUE, 0); + gtk_widget_show (main_vbox); + + fill_editor = gimp_fill_editor_new (private->options, FALSE); + gtk_box_pack_start (GTK_BOX (main_vbox), fill_editor, FALSE, FALSE, 0); + gtk_widget_show (fill_editor); + + return dialog; +} + + +/* private functions */ + +static void +fill_dialog_free (FillDialog *private) +{ + g_object_unref (private->options); + + g_slice_free (FillDialog, private); +} + +static void +fill_dialog_response (GtkWidget *dialog, + gint response_id, + FillDialog *private) +{ + switch (response_id) + { + case RESPONSE_RESET: + gimp_config_reset (GIMP_CONFIG (private->options)); + break; + + case GTK_RESPONSE_OK: + private->callback (dialog, + private->item, + private->drawable, + private->context, + private->options, + private->user_data); + break; + + default: + gtk_widget_destroy (dialog); + break; + } +} diff --git a/app/dialogs/fill-dialog.h b/app/dialogs/fill-dialog.h new file mode 100644 index 0000000..35570cb --- /dev/null +++ b/app/dialogs/fill-dialog.h @@ -0,0 +1,45 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * fill-dialog.h + * Copyright (C) 2016 Michael Natterer <mitch@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __FILL_DIALOG_H__ +#define __FILL_DIALOG_H__ + + +typedef void (* GimpFillCallback) (GtkWidget *dialog, + GimpItem *item, + GimpDrawable *drawable, + GimpContext *context, + GimpFillOptions *options, + gpointer user_data); + + +GtkWidget * fill_dialog_new (GimpItem *item, + GimpDrawable *drawable, + GimpContext *context, + const gchar *title, + const gchar *icon_name, + const gchar *help_id, + GtkWidget *parent, + GimpFillOptions *options, + GimpFillCallback callback, + gpointer user_data); + + +#endif /* __FILL_DIALOG_H__ */ diff --git a/app/dialogs/grid-dialog.c b/app/dialogs/grid-dialog.c new file mode 100644 index 0000000..622ff97 --- /dev/null +++ b/app/dialogs/grid-dialog.c @@ -0,0 +1,173 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Copyright (C) 2003 Henrik Brix Andersen <brix@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpconfig/gimpconfig.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpcoreconfig.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimpimage-grid.h" +#include "core/gimpimage-undo.h" +#include "core/gimpimage-undo-push.h" +#include "core/gimpgrid.h" + +#include "widgets/gimpgrideditor.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpviewabledialog.h" + +#include "grid-dialog.h" + +#include "gimp-intl.h" + + +#define GRID_RESPONSE_RESET 1 + + +typedef struct _GridDialog GridDialog; + +struct _GridDialog +{ + GimpImage *image; + GimpGrid *grid; + GimpGrid *grid_backup; +}; + + +/* local functions */ + +static void grid_dialog_free (GridDialog *private); +static void grid_dialog_response (GtkWidget *dialog, + gint response_id, + GridDialog *private); + + +/* public function */ + +GtkWidget * +grid_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent) +{ + GridDialog *private; + GtkWidget *dialog; + GtkWidget *editor; + gdouble xres; + gdouble yres; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (parent == NULL || GTK_IS_WIDGET (parent), NULL); + + private = g_slice_new0 (GridDialog); + + private->image = image; + private->grid = gimp_image_get_grid (image); + private->grid_backup = gimp_config_duplicate (GIMP_CONFIG (private->grid)); + + dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("Configure Grid"), "gimp-grid-configure", + GIMP_ICON_GRID, _("Configure Image Grid"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_GRID, + + _("_Reset"), GRID_RESPONSE_RESET, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_OK"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GRID_RESPONSE_RESET, + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) grid_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (grid_dialog_response), + private); + + gimp_image_get_resolution (image, &xres, &yres); + + editor = gimp_grid_editor_new (private->grid, context, xres, yres); + gtk_container_set_border_width (GTK_CONTAINER (editor), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + editor, TRUE, TRUE, 0); + + gtk_widget_show (editor); + + return dialog; +} + + +/* local functions */ + +static void +grid_dialog_free (GridDialog *private) +{ + g_object_unref (private->grid_backup); + + g_slice_free (GridDialog, private); +} + +static void +grid_dialog_response (GtkWidget *dialog, + gint response_id, + GridDialog *private) +{ + switch (response_id) + { + case GRID_RESPONSE_RESET: + gimp_config_sync (G_OBJECT (private->image->gimp->config->default_grid), + G_OBJECT (private->grid), 0); + break; + + case GTK_RESPONSE_OK: + if (! gimp_config_is_equal_to (GIMP_CONFIG (private->grid_backup), + GIMP_CONFIG (private->grid))) + { + gimp_image_undo_push_image_grid (private->image, _("Grid"), + private->grid_backup); + gimp_image_flush (private->image); + } + + gtk_widget_destroy (dialog); + break; + + default: + gimp_image_set_grid (private->image, private->grid_backup, FALSE); + gtk_widget_destroy (dialog); + } +} diff --git a/app/dialogs/grid-dialog.h b/app/dialogs/grid-dialog.h new file mode 100644 index 0000000..19670f9 --- /dev/null +++ b/app/dialogs/grid-dialog.h @@ -0,0 +1,29 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Copyright (C) 2003 Henrik Brix Andersen <brix@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __GRID_DIALOG_H__ +#define __GRID_DIALOG_H__ + + +GtkWidget * grid_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent); + + +#endif /* __GRID_DIALOG_H__ */ diff --git a/app/dialogs/image-merge-layers-dialog.c b/app/dialogs/image-merge-layers-dialog.c new file mode 100644 index 0000000..ce6ceac --- /dev/null +++ b/app/dialogs/image-merge-layers-dialog.c @@ -0,0 +1,192 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimpitemstack.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpviewabledialog.h" + +#include "image-merge-layers-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _ImageMergeLayersDialog ImageMergeLayersDialog; + +struct _ImageMergeLayersDialog +{ + GimpImage *image; + GimpContext *context; + GimpMergeType merge_type; + gboolean merge_active_group; + gboolean discard_invisible; + GimpMergeLayersCallback callback; + gpointer user_data; +}; + + +/* local function prototypes */ + +static void image_merge_layers_dialog_free (ImageMergeLayersDialog *private); +static void image_merge_layers_dialog_response (GtkWidget *dialog, + gint response_id, + ImageMergeLayersDialog *private); + + +/* public functions */ + +GtkWidget * +image_merge_layers_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpMergeType merge_type, + gboolean merge_active_group, + gboolean discard_invisible, + GimpMergeLayersCallback callback, + gpointer user_data) +{ + ImageMergeLayersDialog *private; + GtkWidget *dialog; + GtkWidget *vbox; + GtkWidget *frame; + GtkWidget *button; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + + private = g_slice_new0 (ImageMergeLayersDialog); + + private->image = image; + private->context = context; + private->merge_type = merge_type; + private->merge_active_group = merge_active_group; + private->discard_invisible = discard_invisible; + private->callback = callback; + private->user_data = user_data; + + dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("Merge Layers"), "gimp-image-merge-layers", + GIMP_ICON_LAYER_MERGE_DOWN, + _("Layers Merge Options"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_MERGE_LAYERS, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Merge"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) image_merge_layers_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (image_merge_layers_dialog_response), + private); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + frame = + gimp_enum_radio_frame_new_with_range (GIMP_TYPE_MERGE_TYPE, + GIMP_EXPAND_AS_NECESSARY, + GIMP_CLIP_TO_BOTTOM_LAYER, + gtk_label_new (_("Final, Merged Layer should be:")), + G_CALLBACK (gimp_radio_button_update), + &private->merge_type, + &button); + gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (button), + private->merge_type); + gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + button = gtk_check_button_new_with_mnemonic (_("Merge within active _group only")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->merge_active_group); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->merge_active_group); + + if (gimp_item_stack_is_flat (GIMP_ITEM_STACK (gimp_image_get_layers (image)))) + gtk_widget_set_sensitive (button, FALSE); + + button = gtk_check_button_new_with_mnemonic (_("_Discard invisible layers")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->discard_invisible); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->discard_invisible); + + return dialog; +} + + +/* private functions */ + +static void +image_merge_layers_dialog_free (ImageMergeLayersDialog *private) +{ + g_slice_free (ImageMergeLayersDialog, private); +} + +static void +image_merge_layers_dialog_response (GtkWidget *dialog, + gint response_id, + ImageMergeLayersDialog *private) +{ + if (response_id == GTK_RESPONSE_OK) + { + private->callback (dialog, + private->image, + private->context, + private->merge_type, + private->merge_active_group, + private->discard_invisible, + private->user_data); + } + else + { + gtk_widget_destroy (dialog); + } +} diff --git a/app/dialogs/image-merge-layers-dialog.h b/app/dialogs/image-merge-layers-dialog.h new file mode 100644 index 0000000..ee96515 --- /dev/null +++ b/app/dialogs/image-merge-layers-dialog.h @@ -0,0 +1,42 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __IMAGE_MERGE_LAYERS_DIALOG_H__ +#define __IMAGE_MERGE_LAYERS_DIALOG_H__ + + +typedef void (* GimpMergeLayersCallback) (GtkWidget *dialog, + GimpImage *image, + GimpContext *context, + GimpMergeType merge_type, + gboolean merge_active_group, + gboolean discard_invisible, + gpointer user_data); + + +GtkWidget * + image_merge_layers_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpMergeType merge_type, + gboolean merge_active_group, + gboolean discard_invisible, + GimpMergeLayersCallback callback, + gpointer user_data); + + +#endif /* __IMAGE_MERGE_LAYERS_DIALOG_H__ */ diff --git a/app/dialogs/image-new-dialog.c b/app/dialogs/image-new-dialog.c new file mode 100644 index 0000000..3650329 --- /dev/null +++ b/app/dialogs/image-new-dialog.c @@ -0,0 +1,380 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995-1999 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpconfig/gimpconfig.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpguiconfig.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimpimage-new.h" +#include "core/gimptemplate.h" + +#include "widgets/gimpcontainercombobox.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpmessagebox.h" +#include "widgets/gimpmessagedialog.h" +#include "widgets/gimptemplateeditor.h" +#include "widgets/gimpwidgets-utils.h" + +#include "image-new-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_RESET 1 + +typedef struct +{ + GtkWidget *dialog; + GtkWidget *confirm_dialog; + + GtkWidget *combo; + GtkWidget *editor; + + GimpContext *context; + GimpTemplate *template; +} ImageNewDialog; + + +/* local function prototypes */ + +static void image_new_dialog_free (ImageNewDialog *private); +static void image_new_dialog_response (GtkWidget *widget, + gint response_id, + ImageNewDialog *private); +static void image_new_template_changed (GimpContext *context, + GimpTemplate *template, + ImageNewDialog *private); +static void image_new_confirm_dialog (ImageNewDialog *private); +static void image_new_create_image (ImageNewDialog *private); + + +/* public functions */ + +GtkWidget * +image_new_dialog_new (GimpContext *context) +{ + ImageNewDialog *private; + GtkWidget *dialog; + GtkWidget *main_vbox; + GtkWidget *hbox; + GtkWidget *label; + GimpSizeEntry *entry; + + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + + private = g_slice_new0 (ImageNewDialog); + + private->context = gimp_context_new (context->gimp, "image-new-dialog", + context); + private->template = g_object_new (GIMP_TYPE_TEMPLATE, NULL); + + private->dialog = dialog = + gimp_dialog_new (_("Create a New Image"), + "gimp-image-new", + NULL, 0, + gimp_standard_help_func, GIMP_HELP_FILE_NEW, + + _("_Reset"), RESPONSE_RESET, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_OK"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + RESPONSE_RESET, + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_set_data_full (G_OBJECT (dialog), + "gimp-image-new-dialog", private, + (GDestroyNotify) image_new_dialog_free); + + g_signal_connect (dialog, "response", + G_CALLBACK (image_new_dialog_response), + private); + + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_vbox, TRUE, TRUE, 0); + gtk_widget_show (main_vbox); + + /* The template combo */ + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("_Template:")); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + private->combo = g_object_new (GIMP_TYPE_CONTAINER_COMBO_BOX, + "container", context->gimp->templates, + "context", private->context, + "view-size", 16, + "view-border-width", 0, + "ellipsize", PANGO_ELLIPSIZE_NONE, + "focus-on-click", FALSE, + NULL); + gtk_box_pack_start (GTK_BOX (hbox), private->combo, TRUE, TRUE, 0); + gtk_widget_show (private->combo); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label), private->combo); + + g_signal_connect (private->context, "template-changed", + G_CALLBACK (image_new_template_changed), + private); + + /* Template editor */ + private->editor = gimp_template_editor_new (private->template, context->gimp, + FALSE); + gtk_box_pack_start (GTK_BOX (main_vbox), private->editor, FALSE, FALSE, 0); + gtk_widget_show (private->editor); + + entry = GIMP_SIZE_ENTRY (gimp_template_editor_get_size_se (GIMP_TEMPLATE_EDITOR (private->editor))); + gimp_size_entry_set_activates_default (entry, TRUE); + gimp_size_entry_grab_focus (entry); + + image_new_template_changed (private->context, + gimp_context_get_template (private->context), + private); + + return dialog; +} + +void +image_new_dialog_set (GtkWidget *dialog, + GimpImage *image, + GimpTemplate *template) +{ + ImageNewDialog *private; + + g_return_if_fail (GIMP_IS_DIALOG (dialog)); + g_return_if_fail (image == NULL || GIMP_IS_IMAGE (image)); + g_return_if_fail (template == NULL || GIMP_IS_TEMPLATE (template)); + + private = g_object_get_data (G_OBJECT (dialog), "gimp-image-new-dialog"); + + g_return_if_fail (private != NULL); + + gimp_context_set_template (private->context, template); + + if (! template) + { + template = gimp_image_new_get_last_template (private->context->gimp, + image); + + image_new_template_changed (private->context, template, private); + + g_object_unref (template); + } +} + + +/* private functions */ + +static void +image_new_dialog_free (ImageNewDialog *private) +{ + g_object_unref (private->context); + g_object_unref (private->template); + + g_slice_free (ImageNewDialog, private); +} + +static void +image_new_dialog_response (GtkWidget *dialog, + gint response_id, + ImageNewDialog *private) +{ + switch (response_id) + { + case RESPONSE_RESET: + gimp_config_sync (G_OBJECT (private->context->gimp->config->default_image), + G_OBJECT (private->template), 0); + gimp_context_set_template (private->context, NULL); + break; + + case GTK_RESPONSE_OK: + if (gimp_template_get_initial_size (private->template) > + GIMP_GUI_CONFIG (private->context->gimp->config)->max_new_image_size) + image_new_confirm_dialog (private); + else + image_new_create_image (private); + break; + + default: + gtk_widget_destroy (dialog); + break; + } +} + +static void +image_new_template_changed (GimpContext *context, + GimpTemplate *template, + ImageNewDialog *private) +{ + GimpTemplateEditor *editor; + GtkWidget *chain; + gdouble xres, yres; + gchar *comment; + + if (! template) + return; + + editor = GIMP_TEMPLATE_EDITOR (private->editor); + chain = gimp_template_editor_get_resolution_chain (editor); + + xres = gimp_template_get_resolution_x (template); + yres = gimp_template_get_resolution_y (template); + + gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (chain), + ABS (xres - yres) < GIMP_MIN_RESOLUTION); + + comment = (gchar *) gimp_template_get_comment (template); + + if (! comment || ! strlen (comment)) + comment = g_strdup (gimp_template_get_comment (private->template)); + else + comment = NULL; + + /* make sure the resolution values are copied first (see bug #546924) */ + gimp_config_sync (G_OBJECT (template), G_OBJECT (private->template), + GIMP_TEMPLATE_PARAM_COPY_FIRST); + gimp_config_sync (G_OBJECT (template), G_OBJECT (private->template), 0); + + if (comment) + { + g_object_set (private->template, + "comment", comment, + NULL); + + g_free (comment); + } +} + + +/* the confirm dialog */ + +static void +image_new_confirm_response (GtkWidget *dialog, + gint response_id, + ImageNewDialog *private) +{ + gtk_widget_destroy (dialog); + + private->confirm_dialog = NULL; + + if (response_id == GTK_RESPONSE_OK) + image_new_create_image (private); + else + gtk_widget_set_sensitive (private->dialog, TRUE); +} + +static void +image_new_confirm_dialog (ImageNewDialog *private) +{ + GimpGuiConfig *config; + GtkWidget *dialog; + gchar *size; + + if (private->confirm_dialog) + { + gtk_window_present (GTK_WINDOW (private->confirm_dialog)); + return; + } + + private->confirm_dialog = + dialog = gimp_message_dialog_new (_("Confirm Image Size"), + GIMP_ICON_DIALOG_WARNING, + private->dialog, + GTK_DIALOG_DESTROY_WITH_PARENT, + gimp_standard_help_func, NULL, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_OK"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (private->confirm_dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + g_signal_connect (dialog, "response", + G_CALLBACK (image_new_confirm_response), + private); + + size = g_format_size (gimp_template_get_initial_size (private->template)); + gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box, + _("You are trying to create an image " + "with a size of %s."), size); + g_free (size); + + config = GIMP_GUI_CONFIG (private->context->gimp->config); + size = g_format_size (config->max_new_image_size); + gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box, + _("An image of the chosen size will use more " + "memory than what is configured as " + "\"Maximum new image size\" in the Preferences " + "dialog (currently %s)."), size); + g_free (size); + + gtk_widget_set_sensitive (private->dialog, FALSE); + + gtk_widget_show (dialog); +} + +static void +image_new_create_image (ImageNewDialog *private) +{ + GimpTemplate *template = g_object_ref (private->template); + Gimp *gimp = private->context->gimp; + GimpImage *image; + + gtk_widget_hide (private->dialog); + + image = gimp_image_new_from_template (gimp, template, + gimp_get_user_context (gimp)); + gimp_create_display (gimp, image, gimp_template_get_unit (template), 1.0, + G_OBJECT (gtk_widget_get_screen (private->dialog)), + gimp_widget_get_monitor (private->dialog)); + g_object_unref (image); + + gtk_widget_destroy (private->dialog); + + gimp_image_new_set_last_template (gimp, template); + + g_object_unref (template); +} diff --git a/app/dialogs/image-new-dialog.h b/app/dialogs/image-new-dialog.h new file mode 100644 index 0000000..e619cb7 --- /dev/null +++ b/app/dialogs/image-new-dialog.h @@ -0,0 +1,29 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995-1999 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __IMAGE_NEW_DIALOG_H__ +#define __IMAGE_NEW_DIALOG_H__ + + +GtkWidget * image_new_dialog_new (GimpContext *context); + +void image_new_dialog_set (GtkWidget *dialog, + GimpImage *image, + GimpTemplate *template); + + +#endif /* __IMAGE_NEW_DIALOG_H__ */ diff --git a/app/dialogs/image-properties-dialog.c b/app/dialogs/image-properties-dialog.c new file mode 100644 index 0000000..bbfcdaf --- /dev/null +++ b/app/dialogs/image-properties-dialog.c @@ -0,0 +1,100 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * image-properties-dialog.c + * Copyright (C) 2005 Michael Natterer <mitch@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpcontext.h" +#include "core/gimpimage.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpimagecommenteditor.h" +#include "widgets/gimpimagepropview.h" +#include "widgets/gimpimageprofileview.h" +#include "widgets/gimpviewabledialog.h" + +#include "image-properties-dialog.h" + +#include "gimp-intl.h" + + +GtkWidget * +image_properties_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent) +{ + GtkWidget *dialog; + GtkWidget *notebook; + GtkWidget *view; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (parent == NULL || GTK_IS_WIDGET (parent), NULL); + + dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("Image Properties"), + "gimp-image-properties", + "dialog-information", + _("Image Properties"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_PROPERTIES, + + _("_Close"), GTK_RESPONSE_OK, + + NULL); + + g_signal_connect (dialog, "response", + G_CALLBACK (gtk_widget_destroy), + NULL); + + notebook = gtk_notebook_new (); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + notebook, FALSE, FALSE, 0); + gtk_widget_show (notebook); + + view = gimp_image_prop_view_new (image); + gtk_container_set_border_width (GTK_CONTAINER (view), 12); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), + view, gtk_label_new_with_mnemonic (_("_Properties"))); + gtk_widget_show (view); + + view = gimp_image_profile_view_new (image); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), + view, gtk_label_new_with_mnemonic (_("C_olor Profile"))); + gtk_widget_show (view); + + view = gimp_image_comment_editor_new (image); + gtk_notebook_append_page (GTK_NOTEBOOK (notebook), + view, gtk_label_new_with_mnemonic (_("Co_mment"))); + gtk_widget_show (view); + + gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); + + return dialog; +} diff --git a/app/dialogs/image-properties-dialog.h b/app/dialogs/image-properties-dialog.h new file mode 100644 index 0000000..57a14ff --- /dev/null +++ b/app/dialogs/image-properties-dialog.h @@ -0,0 +1,30 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * image-properties-dialog.h + * Copyright (C) 2005 Michael Natterer <mitch@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __IMAGE_PROPERTIES_DIALOG_H__ +#define __IMAGE_PROPERTIES_DIALOG_H__ + + +GtkWidget * image_properties_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent); + + +#endif /* __IMAGE_PROPERTIES_DIALOG_H__ */ diff --git a/app/dialogs/image-scale-dialog.c b/app/dialogs/image-scale-dialog.c new file mode 100644 index 0000000..36b6a3f --- /dev/null +++ b/app/dialogs/image-scale-dialog.c @@ -0,0 +1,291 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpguiconfig.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimpimage-scale.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpmessagebox.h" +#include "widgets/gimpmessagedialog.h" + +#include "scale-dialog.h" + +#include "image-scale-dialog.h" + +#include "gimp-intl.h" + + +typedef struct +{ + GtkWidget *dialog; + + GimpImage *image; + + gint width; + gint height; + GimpUnit unit; + GimpInterpolationType interpolation; + gdouble xresolution; + gdouble yresolution; + GimpUnit resolution_unit; + + GimpScaleCallback callback; + gpointer user_data; +} ImageScaleDialog; + + +/* local function prototypes */ + +static void image_scale_dialog_free (ImageScaleDialog *private); +static void image_scale_callback (GtkWidget *widget, + GimpViewable *viewable, + gint width, + gint height, + GimpUnit unit, + GimpInterpolationType interpolation, + gdouble xresolution, + gdouble yresolution, + GimpUnit resolution_unit, + gpointer data); + +static GtkWidget * image_scale_confirm_dialog (ImageScaleDialog *private); +static void image_scale_confirm_large (ImageScaleDialog *private, + gint64 new_memsize, + gint64 max_memsize); +static void image_scale_confirm_small (ImageScaleDialog *private); +static void image_scale_confirm_response (GtkWidget *widget, + gint response_id, + ImageScaleDialog *private); + + +/* public functions */ + +GtkWidget * +image_scale_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpUnit unit, + GimpInterpolationType interpolation, + GimpScaleCallback callback, + gpointer user_data) +{ + ImageScaleDialog *private; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (ImageScaleDialog); + + private->image = image; + private->callback = callback; + private->user_data = user_data; + + private->dialog = scale_dialog_new (GIMP_VIEWABLE (image), context, + C_("dialog-title", "Scale Image"), + "gimp-image-scale", + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_SCALE, + unit, + interpolation, + image_scale_callback, + private); + + g_object_weak_ref (G_OBJECT (private->dialog), + (GWeakNotify) image_scale_dialog_free, private); + + return private->dialog; +} + + +/* private functions */ + +static void +image_scale_dialog_free (ImageScaleDialog *private) +{ + g_slice_free (ImageScaleDialog, private); +} + +static void +image_scale_callback (GtkWidget *widget, + GimpViewable *viewable, + gint width, + gint height, + GimpUnit unit, + GimpInterpolationType interpolation, + gdouble xresolution, + gdouble yresolution, + GimpUnit resolution_unit, + gpointer data) +{ + ImageScaleDialog *private = data; + GimpImage *image = GIMP_IMAGE (viewable); + GimpImageScaleCheckType scale_check; + gint64 max_memsize; + gint64 new_memsize; + + private->width = width; + private->height = height; + private->unit = unit; + private->interpolation = interpolation; + private->xresolution = xresolution; + private->yresolution = yresolution; + private->resolution_unit = resolution_unit; + + gtk_widget_set_sensitive (widget, FALSE); + + max_memsize = GIMP_GUI_CONFIG (image->gimp->config)->max_new_image_size; + + scale_check = gimp_image_scale_check (image, + width, height, max_memsize, + &new_memsize); + switch (scale_check) + { + case GIMP_IMAGE_SCALE_TOO_BIG: + image_scale_confirm_large (private, new_memsize, max_memsize); + break; + + case GIMP_IMAGE_SCALE_TOO_SMALL: + image_scale_confirm_small (private); + break; + + case GIMP_IMAGE_SCALE_OK: + private->callback (private->dialog, + GIMP_VIEWABLE (private->image), + private->width, + private->height, + private->unit, + private->interpolation, + private->xresolution, + private->yresolution, + private->resolution_unit, + private->user_data); + break; + } +} + +static GtkWidget * +image_scale_confirm_dialog (ImageScaleDialog *private) +{ + GtkWidget *widget; + + widget = gimp_message_dialog_new (_("Confirm Scaling"), + GIMP_ICON_DIALOG_WARNING, + private->dialog, + GTK_DIALOG_DESTROY_WITH_PARENT, + gimp_standard_help_func, + GIMP_HELP_IMAGE_SCALE_WARNING, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Scale"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (widget), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + g_signal_connect (widget, "response", + G_CALLBACK (image_scale_confirm_response), + private); + + return widget; +} + +static void +image_scale_confirm_large (ImageScaleDialog *private, + gint64 new_memsize, + gint64 max_memsize) +{ + GtkWidget *widget = image_scale_confirm_dialog (private); + gchar *size; + + size = g_format_size (new_memsize); + gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (widget)->box, + _("You are trying to create an image " + "with a size of %s."), size); + g_free (size); + + size = g_format_size (max_memsize); + gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (widget)->box, + _("Scaling the image to the chosen size will " + "make it use more memory than what is " + "configured as \"Maximum Image Size\" in the " + "Preferences dialog (currently %s)."), size); + g_free (size); + + gtk_widget_show (widget); +} + +static void +image_scale_confirm_small (ImageScaleDialog *private) +{ + GtkWidget *widget = image_scale_confirm_dialog (private); + + gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (widget)->box, + _("Scaling the image to the chosen size " + "will shrink some layers completely " + "away.")); + gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (widget)->box, + _("Is this what you want to do?")); + + gtk_widget_show (widget); +} + +static void +image_scale_confirm_response (GtkWidget *widget, + gint response_id, + ImageScaleDialog *private) +{ + gtk_widget_destroy (widget); + + if (response_id == GTK_RESPONSE_OK) + { + private->callback (private->dialog, + GIMP_VIEWABLE (private->image), + private->width, + private->height, + private->unit, + private->interpolation, + private->xresolution, + private->yresolution, + private->resolution_unit, + private->user_data); + } + else + { + gtk_widget_set_sensitive (private->dialog, TRUE); + } +} diff --git a/app/dialogs/image-scale-dialog.h b/app/dialogs/image-scale-dialog.h new file mode 100644 index 0000000..fe3d257 --- /dev/null +++ b/app/dialogs/image-scale-dialog.h @@ -0,0 +1,31 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __IMAGE_SCALE_DIALOG_H__ +#define __IMAGE_SCALE_DIALOG_H__ + + +GtkWidget * image_scale_dialog_new (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpUnit unit, + GimpInterpolationType interpolation, + GimpScaleCallback callback, + gpointer user_data); + + +#endif /* __IMAGE_SCALE_DIALOG_H__ */ diff --git a/app/dialogs/input-devices-dialog.c b/app/dialogs/input-devices-dialog.c new file mode 100644 index 0000000..ace9431 --- /dev/null +++ b/app/dialogs/input-devices-dialog.c @@ -0,0 +1,102 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" + +#include "widgets/gimpdeviceeditor.h" +#include "widgets/gimpdevices.h" +#include "widgets/gimphelp-ids.h" + +#include "input-devices-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_SAVE 1 + + +/* local function prototypes */ + +static void input_devices_dialog_response (GtkWidget *dialog, + guint response_id, + Gimp *gimp); + + +/* public functions */ + +GtkWidget * +input_devices_dialog_new (Gimp *gimp) +{ + GtkWidget *dialog; + GtkWidget *content_area; + GtkWidget *editor; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + dialog = gimp_dialog_new (_("Configure Input Devices"), + "gimp-input-devices-dialog", + NULL, 0, + gimp_standard_help_func, + GIMP_HELP_INPUT_DEVICES, + + _("_Save"), RESPONSE_SAVE, + _("_Close"), GTK_RESPONSE_CLOSE, + + NULL); + + g_signal_connect (dialog, "response", + G_CALLBACK (input_devices_dialog_response), + gimp); + + content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); + + editor = gimp_device_editor_new (gimp); + gtk_container_set_border_width (GTK_CONTAINER (editor), 12); + gtk_box_pack_start (GTK_BOX (content_area), editor, TRUE, TRUE, 0); + gtk_widget_show (editor); + + return dialog; +} + + +/* private functions */ + +static void +input_devices_dialog_response (GtkWidget *dialog, + guint response_id, + Gimp *gimp) +{ + switch (response_id) + { + case RESPONSE_SAVE: + gimp_devices_save (gimp, TRUE); + break; + + default: + gtk_widget_destroy (dialog); + break; + } +} diff --git a/app/dialogs/input-devices-dialog.h b/app/dialogs/input-devices-dialog.h new file mode 100644 index 0000000..54d50d2 --- /dev/null +++ b/app/dialogs/input-devices-dialog.h @@ -0,0 +1,25 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __INPUT_DEVICES_DIALOG_H__ +#define __INPUT_DEVICES_DIALOG_H__ + + +GtkWidget * input_devices_dialog_new (Gimp *gimp); + + +#endif /* __INPUT_DEVICES_DIALOG_H__ */ diff --git a/app/dialogs/item-options-dialog.c b/app/dialogs/item-options-dialog.c new file mode 100644 index 0000000..84493d9 --- /dev/null +++ b/app/dialogs/item-options-dialog.c @@ -0,0 +1,491 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpcoreconfig.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimpitem.h" + +#include "widgets/gimpviewabledialog.h" +#include "widgets/gimpwidgets-utils.h" + +#include "item-options-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _ItemOptionsDialog ItemOptionsDialog; + +struct _ItemOptionsDialog +{ + GimpImage *image; + GimpItem *item; + GimpContext *context; + gboolean visible; + gboolean linked; + GimpColorTag color_tag; + gboolean lock_content; + gboolean lock_position; + GimpItemOptionsCallback callback; + gpointer user_data; + + GtkWidget *left_vbox; + GtkWidget *left_table; + gint table_row; + GtkWidget *name_entry; + GtkWidget *right_frame; + GtkWidget *right_vbox; + GtkWidget *lock_position_toggle; +}; + + +/* local function prototypes */ + +static void item_options_dialog_free (ItemOptionsDialog *private); +static void item_options_dialog_response (GtkWidget *dialog, + gint response_id, + ItemOptionsDialog *private); +static GtkWidget * check_button_with_icon_new (const gchar *label, + const gchar *icon_name, + GtkBox *vbox); + + +/* public functions */ + +GtkWidget * +item_options_dialog_new (GimpImage *image, + GimpItem *item, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + const gchar *name_label, + const gchar *lock_content_icon_name, + const gchar *lock_content_label, + const gchar *lock_position_label, + const gchar *item_name, + gboolean item_visible, + gboolean item_linked, + GimpColorTag item_color_tag, + gboolean item_lock_content, + gboolean item_lock_position, + GimpItemOptionsCallback callback, + gpointer user_data) +{ + ItemOptionsDialog *private; + GtkWidget *dialog; + GimpViewable *viewable; + GtkWidget *main_hbox; + GtkWidget *table; + GtkWidget *button; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (item == NULL || GIMP_IS_ITEM (item), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (title != NULL, NULL); + g_return_val_if_fail (role != NULL, NULL); + g_return_val_if_fail (icon_name != NULL, NULL); + g_return_val_if_fail (desc != NULL, NULL); + g_return_val_if_fail (help_id != NULL, NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (ItemOptionsDialog); + + private->image = image; + private->item = item; + private->context = context; + private->visible = item_visible; + private->linked = item_linked; + private->color_tag = item_color_tag; + private->lock_content = item_lock_content; + private->lock_position = item_lock_position; + private->callback = callback; + private->user_data = user_data; + + if (item) + viewable = GIMP_VIEWABLE (item); + else + viewable = GIMP_VIEWABLE (image); + + dialog = gimp_viewable_dialog_new (viewable, context, + title, role, icon_name, desc, + parent, + gimp_standard_help_func, help_id, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_OK"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + g_signal_connect (dialog, "response", + G_CALLBACK (item_options_dialog_response), + private); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) item_options_dialog_free, private); + + g_object_set_data (G_OBJECT (dialog), "item-options-dialog-private", private); + + main_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_hbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_hbox, TRUE, TRUE, 0); + gtk_widget_show (main_hbox); + + private->left_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_box_pack_start (GTK_BOX (main_hbox), private->left_vbox, TRUE, TRUE, 0); + gtk_widget_show (private->left_vbox); + + private->left_table = table = gtk_table_new (1, 2, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 6); + gtk_table_set_row_spacings (GTK_TABLE (table), 6); + gtk_box_pack_start (GTK_BOX (private->left_vbox), table, FALSE, FALSE, 0); + gtk_widget_show (table); + + /* The name label and entry */ + if (name_label) + { + GtkWidget *hbox; + GtkWidget *radio; + GtkWidget *radio_box; + GList *children; + GList *list; + + private->name_entry = gtk_entry_new (); + gtk_entry_set_activates_default (GTK_ENTRY (private->name_entry), TRUE); + gtk_entry_set_text (GTK_ENTRY (private->name_entry), item_name); + gimp_table_attach_aligned (GTK_TABLE (table), 0, private->table_row++, + name_label, 0.0, 0.5, + private->name_entry, 1, FALSE); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gimp_table_attach_aligned (GTK_TABLE (table), 0, private->table_row++, + _("Color tag:"), 0.0, 0.5, + hbox, 1, TRUE); + + radio_box = gimp_enum_radio_box_new (GIMP_TYPE_COLOR_TAG, + G_CALLBACK (gimp_radio_button_update), + &private->color_tag, + &radio); + gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (radio), + private->color_tag); + + children = gtk_container_get_children (GTK_CONTAINER (radio_box)); + + for (list = children; + list; + list = g_list_next (list)) + { + GimpColorTag color_tag; + GimpRGB color; + GtkWidget *image; + + radio = list->data; + + g_object_ref (radio); + gtk_container_remove (GTK_CONTAINER (radio_box), radio); + g_object_set (radio, "draw-indicator", FALSE, NULL); + gtk_box_pack_start (GTK_BOX (hbox), radio, FALSE, FALSE, 0); + g_object_unref (radio); + + gtk_widget_destroy (gtk_bin_get_child (GTK_BIN (radio))); + + color_tag = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (radio), + "gimp-item-data")); + + if (gimp_get_color_tag_color (color_tag, &color, FALSE)) + { + GtkSettings *settings = gtk_widget_get_settings (dialog); + gint w, h; + + image = gimp_color_area_new (&color, GIMP_COLOR_AREA_FLAT, 0); + gimp_color_area_set_color_config (GIMP_COLOR_AREA (image), + context->gimp->config->color_management); + gtk_icon_size_lookup_for_settings (settings, + GTK_ICON_SIZE_MENU, &w, &h); + gtk_widget_set_size_request (image, w, h); + } + else + { + image = gtk_image_new_from_icon_name (GIMP_ICON_CLOSE, + GTK_ICON_SIZE_MENU); + } + + gtk_container_add (GTK_CONTAINER (radio), image); + gtk_widget_show (image); + } + + g_list_free (children); + gtk_widget_destroy (radio_box); + } + + /* The switches frame & vbox */ + + private->right_frame = gimp_frame_new (_("Switches")); + gtk_box_pack_start (GTK_BOX (main_hbox), private->right_frame, + FALSE, FALSE, 0); + gtk_widget_show (private->right_frame); + + private->right_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_container_add (GTK_CONTAINER (private->right_frame), private->right_vbox); + gtk_widget_show (private->right_vbox); + + button = check_button_with_icon_new (_("_Visible"), + GIMP_ICON_VISIBLE, + GTK_BOX (private->right_vbox)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->visible); + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->visible); + + button = check_button_with_icon_new (_("_Linked"), + GIMP_ICON_LINKED, + GTK_BOX (private->right_vbox)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->linked); + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->linked); + + button = check_button_with_icon_new (lock_content_label, + lock_content_icon_name, + GTK_BOX (private->right_vbox)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->lock_content); + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->lock_content); + + button = check_button_with_icon_new (lock_position_label, + GIMP_ICON_TOOL_MOVE, + GTK_BOX (private->right_vbox)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->lock_position); + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->lock_position); + + private->lock_position_toggle = button; + + return dialog; +} + +GtkWidget * +item_options_dialog_get_vbox (GtkWidget *dialog) +{ + ItemOptionsDialog *private; + + g_return_val_if_fail (GIMP_IS_VIEWABLE_DIALOG (dialog), NULL); + + private = g_object_get_data (G_OBJECT (dialog), + "item-options-dialog-private"); + + g_return_val_if_fail (private != NULL, NULL); + + return private->left_vbox; +} + +GtkWidget * +item_options_dialog_get_table (GtkWidget *dialog, + gint *next_row) +{ + ItemOptionsDialog *private; + + g_return_val_if_fail (GIMP_IS_VIEWABLE_DIALOG (dialog), NULL); + g_return_val_if_fail (next_row != NULL, NULL); + + private = g_object_get_data (G_OBJECT (dialog), + "item-options-dialog-private"); + + g_return_val_if_fail (private != NULL, NULL); + + *next_row = private->table_row; + + return private->left_table; +} + +GtkWidget * +item_options_dialog_get_name_entry (GtkWidget *dialog) +{ + ItemOptionsDialog *private; + + g_return_val_if_fail (GIMP_IS_VIEWABLE_DIALOG (dialog), NULL); + + private = g_object_get_data (G_OBJECT (dialog), + "item-options-dialog-private"); + + g_return_val_if_fail (private != NULL, NULL); + + return private->name_entry; +} + +GtkWidget * +item_options_dialog_get_lock_position (GtkWidget *dialog) +{ + ItemOptionsDialog *private; + + g_return_val_if_fail (GIMP_IS_VIEWABLE_DIALOG (dialog), NULL); + + private = g_object_get_data (G_OBJECT (dialog), + "item-options-dialog-private"); + + g_return_val_if_fail (private != NULL, NULL); + + return private->lock_position_toggle; +} + +void +item_options_dialog_add_widget (GtkWidget *dialog, + const gchar *label, + GtkWidget *widget) +{ + ItemOptionsDialog *private; + + g_return_if_fail (GIMP_IS_VIEWABLE_DIALOG (dialog)); + g_return_if_fail (GTK_IS_WIDGET (widget)); + + private = g_object_get_data (G_OBJECT (dialog), + "item-options-dialog-private"); + + g_return_if_fail (private != NULL); + + gimp_table_attach_aligned (GTK_TABLE (private->left_table), + 0, private->table_row++, + label, 0.0, 0.5, + widget, 1, FALSE); +} + +GtkWidget * +item_options_dialog_add_switch (GtkWidget *dialog, + const gchar *icon_name, + const gchar *label) +{ + ItemOptionsDialog *private; + + g_return_val_if_fail (GIMP_IS_VIEWABLE_DIALOG (dialog), NULL); + g_return_val_if_fail (icon_name != NULL, NULL); + g_return_val_if_fail (label != NULL, NULL); + + private = g_object_get_data (G_OBJECT (dialog), + "item-options-dialog-private"); + + g_return_val_if_fail (private != NULL, NULL); + + return check_button_with_icon_new (label, icon_name, + GTK_BOX (private->right_vbox)); +} + +void +item_options_dialog_set_switches_visible (GtkWidget *dialog, + gboolean visible) +{ + ItemOptionsDialog *private; + + g_return_if_fail (GIMP_IS_VIEWABLE_DIALOG (dialog)); + + private = g_object_get_data (G_OBJECT (dialog), + "item-options-dialog-private"); + + g_return_if_fail (private != NULL); + + gtk_widget_set_visible (private->right_frame, visible); +} + + +/* private functions */ + +static void +item_options_dialog_free (ItemOptionsDialog *private) +{ + g_slice_free (ItemOptionsDialog, private); +} + +static void +item_options_dialog_response (GtkWidget *dialog, + gint response_id, + ItemOptionsDialog *private) +{ + if (response_id == GTK_RESPONSE_OK) + { + const gchar *name = NULL; + + if (private->name_entry) + name = gtk_entry_get_text (GTK_ENTRY (private->name_entry)); + + private->callback (dialog, + private->image, + private->item, + private->context, + name, + private->visible, + private->linked, + private->color_tag, + private->lock_content, + private->lock_position, + private->user_data); + } + else + { + gtk_widget_destroy (dialog); + } +} + +static GtkWidget * +check_button_with_icon_new (const gchar *label, + const gchar *icon_name, + GtkBox *vbox) +{ + GtkWidget *hbox; + GtkWidget *button; + GtkWidget *image; + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (vbox, hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON); + gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0); + gtk_widget_show (image); + + button = gtk_check_button_new_with_mnemonic (label); + gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + return button; +} diff --git a/app/dialogs/item-options-dialog.h b/app/dialogs/item-options-dialog.h new file mode 100644 index 0000000..f7aa75f --- /dev/null +++ b/app/dialogs/item-options-dialog.h @@ -0,0 +1,74 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __ITEM_OPTIONS_DIALOG_H__ +#define __ITEM_OPTIONS_DIALOG_H__ + + +typedef void (* GimpItemOptionsCallback) (GtkWidget *dialog, + GimpImage *image, + GimpItem *item, + GimpContext *context, + const gchar *item_name, + gboolean item_visible, + gboolean item_linked, + GimpColorTag item_color_tag, + gboolean item_lock_content, + gboolean item_lock_position, + gpointer user_data); + + +GtkWidget * item_options_dialog_new (GimpImage *image, + GimpItem *item, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + const gchar *name_label, + const gchar *lock_content_icon_name, + const gchar *lock_content_label, + const gchar *lock_position_label, + const gchar *item_name, + gboolean item_visible, + gboolean item_linked, + GimpColorTag item_color_tag, + gboolean item_lock_content, + gboolean item_lock_position, + GimpItemOptionsCallback callback, + gpointer user_data); + +GtkWidget * item_options_dialog_get_vbox (GtkWidget *dialog); +GtkWidget * item_options_dialog_get_table (GtkWidget *dialog, + gint *next_row); +GtkWidget * item_options_dialog_get_name_entry (GtkWidget *dialog); +GtkWidget * item_options_dialog_get_lock_position (GtkWidget *dialog); + +void item_options_dialog_add_widget (GtkWidget *dialog, + const gchar *label, + GtkWidget *widget); +GtkWidget * item_options_dialog_add_switch (GtkWidget *dialog, + const gchar *icon_name, + const gchar *label); + +void item_options_dialog_set_switches_visible (GtkWidget *dialog, + gboolean visible); + + +#endif /* __ITEM_OPTIONS_DIALOG_H__ */ diff --git a/app/dialogs/keyboard-shortcuts-dialog.c b/app/dialogs/keyboard-shortcuts-dialog.c new file mode 100644 index 0000000..9fd354b --- /dev/null +++ b/app/dialogs/keyboard-shortcuts-dialog.c @@ -0,0 +1,122 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" + +#include "widgets/gimpactioneditor.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpuimanager.h" + +#include "menus/menus.h" + +#include "keyboard-shortcuts-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_SAVE 1 + + +/* local function prototypes */ + +static void keyboard_shortcuts_dialog_response (GtkWidget *dialog, + gint response, + Gimp *gimp); + + +/* public functions */ + +GtkWidget * +keyboard_shortcuts_dialog_new (Gimp *gimp) +{ + GtkWidget *dialog; + GtkWidget *vbox; + GtkWidget *editor; + GtkWidget *box; + GtkWidget *button; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + dialog = gimp_dialog_new (_("Configure Keyboard Shortcuts"), + "gimp-keyboard-shortcuts-dialog", + NULL, 0, + gimp_standard_help_func, + GIMP_HELP_KEYBOARD_SHORTCUTS, + + _("_Save"), RESPONSE_SAVE, + _("_Close"), GTK_RESPONSE_CLOSE, + + NULL); + + g_signal_connect (dialog, "response", + G_CALLBACK (keyboard_shortcuts_dialog_response), + gimp); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + editor = gimp_action_editor_new (gimp_ui_managers_from_name ("<Image>")->data, + NULL, TRUE); + gtk_box_pack_start (GTK_BOX (vbox), editor, TRUE, TRUE, 0); + gtk_widget_show (editor); + + box = gimp_hint_box_new (_("To edit a shortcut key, click on the " + "corresponding row and type a new " + "accelerator, or press backspace to " + "clear.")); + gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 0); + gtk_widget_show (box); + + button = gimp_prop_check_button_new (G_OBJECT (gimp->config), "save-accels", + _("S_ave keyboard shortcuts on exit")); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + return dialog; +} + + +/* private functions */ + +static void +keyboard_shortcuts_dialog_response (GtkWidget *dialog, + gint response, + Gimp *gimp) +{ + switch (response) + { + case RESPONSE_SAVE: + menus_save (gimp, TRUE); + break; + + default: + gtk_widget_destroy (dialog); + break; + } +} diff --git a/app/dialogs/keyboard-shortcuts-dialog.h b/app/dialogs/keyboard-shortcuts-dialog.h new file mode 100644 index 0000000..3c79912 --- /dev/null +++ b/app/dialogs/keyboard-shortcuts-dialog.h @@ -0,0 +1,25 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __KEYBOARD_SHORTCUTS_DIALOG_H__ +#define __KEYBOARD_SHORTCUTS_DIALOG_H__ + + +GtkWidget * keyboard_shortcuts_dialog_new (Gimp *gimp); + + +#endif /* __KEYBOARD_SHORTCUTS_DIALOG_H__ */ diff --git a/app/dialogs/layer-add-mask-dialog.c b/app/dialogs/layer-add-mask-dialog.c new file mode 100644 index 0000000..475d8ab --- /dev/null +++ b/app/dialogs/layer-add-mask-dialog.c @@ -0,0 +1,229 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpchannel.h" +#include "core/gimpcontainer.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimplayer.h" + +#include "widgets/gimpcontainercombobox.h" +#include "widgets/gimpcontainerview.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpviewabledialog.h" +#include "widgets/gimpwidgets-utils.h" + +#include "layer-add-mask-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _LayerAddMaskDialog LayerAddMaskDialog; + +struct _LayerAddMaskDialog +{ + GimpLayer *layer; + GimpAddMaskType add_mask_type; + GimpChannel *channel; + gboolean invert; + GimpAddMaskCallback callback; + gpointer user_data; +}; + + +/* local function prototypes */ + +static void layer_add_mask_dialog_free (LayerAddMaskDialog *private); +static void layer_add_mask_dialog_response (GtkWidget *dialog, + gint response_id, + LayerAddMaskDialog *private); +static gboolean layer_add_mask_dialog_channel_selected (GimpContainerView *view, + GimpViewable *viewable, + gpointer insert_data, + LayerAddMaskDialog *dialog); + + +/* public functions */ + +GtkWidget * +layer_add_mask_dialog_new (GimpLayer *layer, + GimpContext *context, + GtkWidget *parent, + GimpAddMaskType add_mask_type, + gboolean invert, + GimpAddMaskCallback callback, + gpointer user_data) +{ + LayerAddMaskDialog *private; + GtkWidget *dialog; + GtkWidget *vbox; + GtkWidget *frame; + GtkWidget *combo; + GtkWidget *button; + GimpImage *image; + GimpChannel *channel; + + g_return_val_if_fail (GIMP_IS_LAYER (layer), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + + private = g_slice_new0 (LayerAddMaskDialog); + + private->layer = layer; + private->add_mask_type = add_mask_type; + private->invert = invert; + private->callback = callback; + private->user_data = user_data; + + dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (layer), context, + _("Add Layer Mask"), "gimp-layer-add-mask", + GIMP_ICON_LAYER_MASK, + _("Add a Mask to the Layer"), + parent, + gimp_standard_help_func, + GIMP_HELP_LAYER_MASK_ADD, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Add"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) layer_add_mask_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (layer_add_mask_dialog_response), + private); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + frame = + gimp_enum_radio_frame_new (GIMP_TYPE_ADD_MASK_TYPE, + gtk_label_new (_("Initialize Layer Mask to:")), + G_CALLBACK (gimp_radio_button_update), + &private->add_mask_type, + &button); + gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (button), + private->add_mask_type); + + gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + image = gimp_item_get_image (GIMP_ITEM (layer)); + + combo = gimp_container_combo_box_new (gimp_image_get_channels (image), + context, + GIMP_VIEW_SIZE_SMALL, 1); + gimp_enum_radio_frame_add (GTK_FRAME (frame), combo, + GIMP_ADD_MASK_CHANNEL, TRUE); + gtk_widget_show (combo); + + g_signal_connect (combo, "select-item", + G_CALLBACK (layer_add_mask_dialog_channel_selected), + private); + + channel = gimp_image_get_active_channel (image); + + if (! channel) + channel = GIMP_CHANNEL (gimp_container_get_first_child (gimp_image_get_channels (image))); + + gimp_container_view_select_item (GIMP_CONTAINER_VIEW (combo), + GIMP_VIEWABLE (channel)); + + button = gtk_check_button_new_with_mnemonic (_("In_vert mask")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), private->invert); + gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->invert); + + return dialog; +} + + +/* private functions */ + +static void +layer_add_mask_dialog_free (LayerAddMaskDialog *private) +{ + g_slice_free (LayerAddMaskDialog, private); +} + +static void +layer_add_mask_dialog_response (GtkWidget *dialog, + gint response_id, + LayerAddMaskDialog *private) +{ + if (response_id == GTK_RESPONSE_OK) + { + GimpImage *image = gimp_item_get_image (GIMP_ITEM (private->layer)); + + if (private->add_mask_type == GIMP_ADD_MASK_CHANNEL && + ! private->channel) + { + gimp_message_literal (image->gimp, + G_OBJECT (dialog), GIMP_MESSAGE_WARNING, + _("Please select a channel first")); + return; + } + + private->callback (dialog, + private->layer, + private->add_mask_type, + private->channel, + private->invert, + private->user_data); + } + else + { + gtk_widget_destroy (dialog); + } +} + +static gboolean +layer_add_mask_dialog_channel_selected (GimpContainerView *view, + GimpViewable *viewable, + gpointer insert_data, + LayerAddMaskDialog *private) +{ + private->channel = GIMP_CHANNEL (viewable); + + return TRUE; +} diff --git a/app/dialogs/layer-add-mask-dialog.h b/app/dialogs/layer-add-mask-dialog.h new file mode 100644 index 0000000..ecdd9d3 --- /dev/null +++ b/app/dialogs/layer-add-mask-dialog.h @@ -0,0 +1,39 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __LAYER_ADD_MASK_DIALOG_H__ +#define __LAYER_ADD_MASK_DIALOG_H__ + + +typedef void (* GimpAddMaskCallback) (GtkWidget *dialog, + GimpLayer *layer, + GimpAddMaskType add_mask_type, + GimpChannel *channel, + gboolean invert, + gpointer user_data); + + +GtkWidget * layer_add_mask_dialog_new (GimpLayer *layer, + GimpContext *context, + GtkWidget *parent, + GimpAddMaskType add_mask_type, + gboolean invert, + GimpAddMaskCallback callback, + gpointer user_data); + + +#endif /* __LAYER_ADD_MASK_DIALOG_H__ */ diff --git a/app/dialogs/layer-options-dialog.c b/app/dialogs/layer-options-dialog.c new file mode 100644 index 0000000..f392ed1 --- /dev/null +++ b/app/dialogs/layer-options-dialog.c @@ -0,0 +1,592 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpmath/gimpmath.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "operations/layer-modes/gimp-layer-modes.h" + +#include "core/gimpcontext.h" +#include "core/gimpdrawable-filters.h" +#include "core/gimpimage.h" +#include "core/gimplayer.h" + +#include "text/gimptext.h" +#include "text/gimptextlayer.h" + +#include "widgets/gimpcontainertreeview.h" +#include "widgets/gimplayermodebox.h" +#include "widgets/gimpspinscale.h" +#include "widgets/gimpviewabledialog.h" + +#include "item-options-dialog.h" +#include "layer-options-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _LayerOptionsDialog LayerOptionsDialog; + +struct _LayerOptionsDialog +{ + GimpLayer *layer; + GimpLayerMode mode; + GimpLayerColorSpace blend_space; + GimpLayerColorSpace composite_space; + GimpLayerCompositeMode composite_mode; + gdouble opacity; + GimpFillType fill_type; + gboolean lock_alpha; + gboolean rename_text_layers; + GimpLayerOptionsCallback callback; + gpointer user_data; + + GtkWidget *mode_box; + GtkWidget *blend_space_combo; + GtkWidget *composite_space_combo; + GtkWidget *composite_mode_combo; + GtkWidget *size_se; + GtkWidget *offset_se; +}; + + +/* local function prototypes */ + +static void layer_options_dialog_free (LayerOptionsDialog *private); +static void layer_options_dialog_callback (GtkWidget *dialog, + GimpImage *image, + GimpItem *item, + GimpContext *context, + const gchar *item_name, + gboolean item_visible, + gboolean item_linked, + GimpColorTag item_color_tag, + gboolean item_lock_content, + gboolean item_lock_position, + gpointer user_data); +static void + layer_options_dialog_update_mode_sensitivity (LayerOptionsDialog *private); +static void layer_options_dialog_mode_notify (GtkWidget *widget, + const GParamSpec *pspec, + LayerOptionsDialog *private); +static void layer_options_dialog_rename_toggled (GtkWidget *widget, + LayerOptionsDialog *private); + + +/* public functions */ + +GtkWidget * +layer_options_dialog_new (GimpImage *image, + GimpLayer *layer, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + const gchar *layer_name, + GimpLayerMode layer_mode, + GimpLayerColorSpace layer_blend_space, + GimpLayerColorSpace layer_composite_space, + GimpLayerCompositeMode layer_composite_mode, + gdouble layer_opacity, + GimpFillType layer_fill_type, + gboolean layer_visible, + gboolean layer_linked, + GimpColorTag layer_color_tag, + gboolean layer_lock_content, + gboolean layer_lock_position, + gboolean layer_lock_alpha, + GimpLayerOptionsCallback callback, + gpointer user_data) +{ + LayerOptionsDialog *private; + GtkWidget *dialog; + GtkWidget *table; + GtkListStore *space_model; + GtkWidget *combo; + GtkWidget *scale; + GtkWidget *label; + GtkAdjustment *adjustment; + GtkWidget *spinbutton; + GtkWidget *button; + GimpLayerModeContext mode_context; + gdouble xres; + gdouble yres; + gint row = 0; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (layer == NULL || GIMP_IS_LAYER (layer), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + + private = g_slice_new0 (LayerOptionsDialog); + + private->layer = layer; + private->mode = layer_mode; + private->blend_space = layer_blend_space; + private->composite_space = layer_composite_space; + private->composite_mode = layer_composite_mode; + private->opacity = layer_opacity * 100.0; + private->fill_type = layer_fill_type; + private->lock_alpha = layer_lock_alpha; + private->rename_text_layers = FALSE; + private->callback = callback; + private->user_data = user_data; + + if (layer && gimp_item_is_text_layer (GIMP_ITEM (layer))) + private->rename_text_layers = GIMP_TEXT_LAYER (layer)->auto_rename; + + dialog = item_options_dialog_new (image, GIMP_ITEM (layer), context, + parent, title, role, + icon_name, desc, help_id, + _("Layer _name:"), + GIMP_ICON_TOOL_PAINTBRUSH, + _("Lock _pixels"), + _("Lock position and _size"), + layer_name, + layer_visible, + layer_linked, + layer_color_tag, + layer_lock_content, + layer_lock_position, + layer_options_dialog_callback, + private); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) layer_options_dialog_free, private); + + if (! layer || gimp_viewable_get_children (GIMP_VIEWABLE (layer)) == NULL) + mode_context = GIMP_LAYER_MODE_CONTEXT_LAYER; + else + mode_context = GIMP_LAYER_MODE_CONTEXT_GROUP; + + private->mode_box = gimp_layer_mode_box_new (mode_context); + item_options_dialog_add_widget (dialog, _("_Mode:"), private->mode_box); + gimp_layer_mode_box_set_mode (GIMP_LAYER_MODE_BOX (private->mode_box), + private->mode); + + g_signal_connect (private->mode_box, "notify::layer-mode", + G_CALLBACK (layer_options_dialog_mode_notify), + private); + + space_model = + gimp_enum_store_new_with_range (GIMP_TYPE_LAYER_COLOR_SPACE, + GIMP_LAYER_COLOR_SPACE_AUTO, + GIMP_LAYER_COLOR_SPACE_RGB_PERCEPTUAL); + + private->blend_space_combo = combo = + gimp_enum_combo_box_new_with_model (GIMP_ENUM_STORE (space_model)); + item_options_dialog_add_widget (dialog, _("_Blend space:"), combo); + gimp_enum_combo_box_set_icon_prefix (GIMP_ENUM_COMBO_BOX (combo), + "gimp-layer-color-space"); + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->blend_space, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->blend_space); + + private->composite_space_combo = combo = + gimp_enum_combo_box_new_with_model (GIMP_ENUM_STORE (space_model)); + item_options_dialog_add_widget (dialog, _("Compos_ite space:"), combo); + gimp_enum_combo_box_set_icon_prefix (GIMP_ENUM_COMBO_BOX (combo), + "gimp-layer-color-space"); + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->composite_space, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->composite_space); + + g_object_unref (space_model); + + private->composite_mode_combo = combo = + gimp_enum_combo_box_new (GIMP_TYPE_LAYER_COMPOSITE_MODE); + item_options_dialog_add_widget (dialog, _("Composite mo_de:"), combo); + gimp_enum_combo_box_set_icon_prefix (GIMP_ENUM_COMBO_BOX (combo), + "gimp-layer-composite"); + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->composite_mode, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->composite_mode); + + /* set the sensitivity of above 3 menus */ + layer_options_dialog_update_mode_sensitivity (private); + + adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (private->opacity, 0.0, 100.0, + 1.0, 10.0, 0.0)); + scale = gimp_spin_scale_new (adjustment, NULL, 1); + item_options_dialog_add_widget (dialog, _("_Opacity:"), scale); + + g_signal_connect (adjustment, "value-changed", + G_CALLBACK (gimp_double_adjustment_update), + &private->opacity); + + table = item_options_dialog_get_table (dialog, &row); + + gimp_image_get_resolution (image, &xres, &yres); + + if (! layer) + { + /* The size labels */ + label = gtk_label_new (_("Width:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK, 0, 0); + gtk_widget_show (label); + + label = gtk_label_new (_("Height:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, row + 1, row + 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK, 0, 0); + gtk_widget_show (label); + + /* The size sizeentry */ + adjustment = (GtkAdjustment *) + gtk_adjustment_new (1, 1, 1, 1, 10, 0); + spinbutton = gimp_spin_button_new (adjustment, 1.0, 2); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); + gtk_entry_set_width_chars (GTK_ENTRY (spinbutton), 10); + + private->size_se = gimp_size_entry_new (1, GIMP_UNIT_PIXEL, "%a", + TRUE, TRUE, FALSE, 10, + GIMP_SIZE_ENTRY_UPDATE_SIZE); + gtk_table_set_col_spacing (GTK_TABLE (private->size_se), 1, 4); + gtk_table_set_row_spacing (GTK_TABLE (private->size_se), 0, 2); + + gimp_size_entry_add_field (GIMP_SIZE_ENTRY (private->size_se), + GTK_SPIN_BUTTON (spinbutton), NULL); + gtk_table_attach_defaults (GTK_TABLE (private->size_se), spinbutton, + 1, 2, 0, 1); + gtk_widget_show (spinbutton); + + gtk_table_attach (GTK_TABLE (table), private->size_se, 1, 2, row, row + 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (private->size_se); + + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (private->size_se), + GIMP_UNIT_PIXEL); + + gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (private->size_se), 0, + xres, FALSE); + gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (private->size_se), 1, + yres, FALSE); + + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (private->size_se), 0, + GIMP_MIN_IMAGE_SIZE, + GIMP_MAX_IMAGE_SIZE); + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (private->size_se), 1, + GIMP_MIN_IMAGE_SIZE, + GIMP_MAX_IMAGE_SIZE); + + gimp_size_entry_set_size (GIMP_SIZE_ENTRY (private->size_se), 0, + 0, gimp_image_get_width (image)); + gimp_size_entry_set_size (GIMP_SIZE_ENTRY (private->size_se), 1, + 0, gimp_image_get_height (image)); + + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->size_se), 0, + gimp_image_get_width (image)); + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->size_se), 1, + gimp_image_get_height (image)); + + row += 2; + } + + /* The offset labels */ + label = gtk_label_new (_("Offset X:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK, 0, 0); + gtk_widget_show (label); + + label = gtk_label_new (_("Offset Y:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, row + 1, row + 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK, 0, 0); + gtk_widget_show (label); + + /* The offset sizeentry */ + adjustment = (GtkAdjustment *) + gtk_adjustment_new (0, 1, 1, 1, 10, 0); + spinbutton = gimp_spin_button_new (adjustment, 1.0, 2); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); + gtk_entry_set_width_chars (GTK_ENTRY (spinbutton), 10); + + private->offset_se = gimp_size_entry_new (1, GIMP_UNIT_PIXEL, "%a", + TRUE, TRUE, FALSE, 10, + GIMP_SIZE_ENTRY_UPDATE_SIZE); + gtk_table_set_col_spacing (GTK_TABLE (private->offset_se), 1, 4); + gtk_table_set_row_spacing (GTK_TABLE (private->offset_se), 0, 2); + + gimp_size_entry_add_field (GIMP_SIZE_ENTRY (private->offset_se), + GTK_SPIN_BUTTON (spinbutton), NULL); + gtk_table_attach_defaults (GTK_TABLE (private->offset_se), spinbutton, + 1, 2, 0, 1); + gtk_widget_show (spinbutton); + + gtk_table_attach (GTK_TABLE (table), private->offset_se, 1, 2, row, row + 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (private->offset_se); + + gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (private->offset_se), + GIMP_UNIT_PIXEL); + + gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (private->offset_se), 0, + xres, FALSE); + gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (private->offset_se), 1, + yres, FALSE); + + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (private->offset_se), 0, + -GIMP_MAX_IMAGE_SIZE, + GIMP_MAX_IMAGE_SIZE); + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (private->offset_se), 1, + -GIMP_MAX_IMAGE_SIZE, + GIMP_MAX_IMAGE_SIZE); + + gimp_size_entry_set_size (GIMP_SIZE_ENTRY (private->offset_se), 0, + 0, gimp_image_get_width (image)); + gimp_size_entry_set_size (GIMP_SIZE_ENTRY (private->offset_se), 1, + 0, gimp_image_get_height (image)); + + if (layer) + { + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 0, + gimp_item_get_offset_x (GIMP_ITEM (layer))); + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 1, + gimp_item_get_offset_y (GIMP_ITEM (layer))); + } + else + { + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 0, 0); + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset_se), 1, 0); + } + + row += 2; + + /* set the spacings after adding widgets or GtkTable will warn */ + gtk_table_set_row_spacing (GTK_TABLE (table), 3, 4); + if (! layer) + gtk_table_set_row_spacing (GTK_TABLE (table), 5, 4); + + if (! layer) + { + /* The fill type */ + combo = gimp_enum_combo_box_new (GIMP_TYPE_FILL_TYPE); + gimp_table_attach_aligned (GTK_TABLE (table), 0, row++, + _("_Fill with:"), 0.0, 0.5, + combo, 1, FALSE); + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->fill_type, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->fill_type); + } + + if (layer) + { + GtkWidget *left_vbox = item_options_dialog_get_vbox (dialog); + GtkWidget *frame; + GimpContainer *filters; + GtkWidget *view; + + frame = gimp_frame_new (_("Active Filters")); + gtk_box_pack_start (GTK_BOX (left_vbox), frame, TRUE, TRUE, 0); + gtk_widget_show (frame); + + filters = gimp_drawable_get_filters (GIMP_DRAWABLE (layer)); + + view = gimp_container_tree_view_new (filters, context, + GIMP_VIEW_SIZE_SMALL, 0); + gtk_container_add (GTK_CONTAINER (frame), view); + gtk_widget_show (view); + } + + button = item_options_dialog_get_lock_position (dialog); + + if (private->size_se) + g_object_bind_property (G_OBJECT (button), "active", + G_OBJECT (private->size_se), "sensitive", + G_BINDING_SYNC_CREATE | + G_BINDING_INVERT_BOOLEAN); + + g_object_bind_property (G_OBJECT (button), "active", + G_OBJECT (private->offset_se), "sensitive", + G_BINDING_SYNC_CREATE | + G_BINDING_INVERT_BOOLEAN); + + button = item_options_dialog_add_switch (dialog, + GIMP_ICON_TRANSPARENCY, + _("Lock _alpha")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->lock_alpha); + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->lock_alpha); + + /* For text layers add a toggle to control "auto-rename" */ + if (layer && gimp_item_is_text_layer (GIMP_ITEM (layer))) + { + button = item_options_dialog_add_switch (dialog, + GIMP_ICON_TOOL_TEXT, + _("Set name from _text")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->rename_text_layers); + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->rename_text_layers); + + g_signal_connect (button, "toggled", + G_CALLBACK (layer_options_dialog_rename_toggled), + private); + } + + return dialog; +} + + +/* private functions */ + +static void +layer_options_dialog_free (LayerOptionsDialog *private) +{ + g_slice_free (LayerOptionsDialog, private); +} + +static void +layer_options_dialog_callback (GtkWidget *dialog, + GimpImage *image, + GimpItem *item, + GimpContext *context, + const gchar *item_name, + gboolean item_visible, + gboolean item_linked, + GimpColorTag item_color_tag, + gboolean item_lock_content, + gboolean item_lock_position, + gpointer user_data) +{ + LayerOptionsDialog *private = user_data; + gint width = 0; + gint height = 0; + gint offset_x; + gint offset_y; + + if (private->size_se) + { + width = + RINT (gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (private->size_se), + 0)); + height = + RINT (gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (private->size_se), + 1)); + } + + offset_x = + RINT (gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (private->offset_se), + 0)); + offset_y = + RINT (gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (private->offset_se), + 1)); + + private->callback (dialog, + image, + GIMP_LAYER (item), + context, + item_name, + private->mode, + private->blend_space, + private->composite_space, + private->composite_mode, + private->opacity / 100.0, + private->fill_type, + width, + height, + offset_x, + offset_y, + item_visible, + item_linked, + item_color_tag, + item_lock_content, + item_lock_position, + private->lock_alpha, + private->rename_text_layers, + private->user_data); +} + +static void +layer_options_dialog_update_mode_sensitivity (LayerOptionsDialog *private) +{ + gboolean mutable; + + mutable = gimp_layer_mode_is_blend_space_mutable (private->mode); + gtk_widget_set_sensitive (private->blend_space_combo, mutable); + + mutable = gimp_layer_mode_is_composite_space_mutable (private->mode); + gtk_widget_set_sensitive (private->composite_space_combo, mutable); + + mutable = gimp_layer_mode_is_composite_mode_mutable (private->mode); + gtk_widget_set_sensitive (private->composite_mode_combo, mutable); +} + +static void +layer_options_dialog_mode_notify (GtkWidget *widget, + const GParamSpec *pspec, + LayerOptionsDialog *private) +{ + private->mode = gimp_layer_mode_box_get_mode (GIMP_LAYER_MODE_BOX (widget)); + + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (private->blend_space_combo), + GIMP_LAYER_COLOR_SPACE_AUTO); + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (private->composite_space_combo), + GIMP_LAYER_COLOR_SPACE_AUTO); + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (private->composite_mode_combo), + GIMP_LAYER_COMPOSITE_AUTO); + + layer_options_dialog_update_mode_sensitivity (private); +} + +static void +layer_options_dialog_rename_toggled (GtkWidget *widget, + LayerOptionsDialog *private) +{ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)) && + gimp_item_is_text_layer (GIMP_ITEM (private->layer))) + { + GimpTextLayer *text_layer = GIMP_TEXT_LAYER (private->layer); + GimpText *text = gimp_text_layer_get_text (text_layer); + + if (text && text->text) + { + GtkWidget *dialog; + GtkWidget *name_entry; + gchar *name = gimp_utf8_strtrim (text->text, 30); + + dialog = gtk_widget_get_toplevel (widget); + + name_entry = item_options_dialog_get_name_entry (dialog); + + gtk_entry_set_text (GTK_ENTRY (name_entry), name); + + g_free (name); + } + } +} diff --git a/app/dialogs/layer-options-dialog.h b/app/dialogs/layer-options-dialog.h new file mode 100644 index 0000000..ceb0502 --- /dev/null +++ b/app/dialogs/layer-options-dialog.h @@ -0,0 +1,73 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __LAYER_OPTIONS_DIALOG_H__ +#define __LAYER_OPTIONS_DIALOG_H__ + + +typedef void (* GimpLayerOptionsCallback) (GtkWidget *dialog, + GimpImage *image, + GimpLayer *layer, + GimpContext *context, + const gchar *layer_name, + GimpLayerMode layer_mode, + GimpLayerColorSpace layer_blend_space, + GimpLayerColorSpace layer_composite_space, + GimpLayerCompositeMode layer_composite_mode, + gdouble layer_opacity, + GimpFillType layer_fill_type, + gint layer_width, + gint layer_height, + gint layer_offset_x, + gint layer_offset_y, + gboolean layer_visible, + gboolean layer_linked, + GimpColorTag layer_color_tag, + gboolean layer_lock_content, + gboolean layer_lock_position, + gboolean layer_lock_alpha, + gboolean rename_text_layer, + gpointer user_data); + + +GtkWidget * layer_options_dialog_new (GimpImage *image, + GimpLayer *layer, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + const gchar *layer_name, + GimpLayerMode layer_mode, + GimpLayerColorSpace layer_blend_space, + GimpLayerColorSpace layer_composite_space, + GimpLayerCompositeMode layer_composite_mode, + gdouble layer_opacity, + GimpFillType layer_fill_type, + gboolean layer_visible, + gboolean layer_linked, + GimpColorTag layer_color_tag, + gboolean layer_lock_content, + gboolean layer_lock_position, + gboolean layer_lock_alpha, + GimpLayerOptionsCallback callback, + gpointer user_data); + + +#endif /* __LAYER_OPTIONS_DIALOG_H__ */ diff --git a/app/dialogs/lebl-dialog.c b/app/dialogs/lebl-dialog.c new file mode 100644 index 0000000..53bd492 --- /dev/null +++ b/app/dialogs/lebl-dialog.c @@ -0,0 +1,869 @@ +#include "config.h" + +#include <string.h> +#include <math.h> + +#include <gegl.h> +#include <gtk/gtk.h> +#include <gdk/gdkkeysyms.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "lebl-dialog.h" + +#include "gimp-intl.h" + +/* phish code */ +#define PHSHFRAMES 8 +#define PHSHORIGWIDTH 288 +#define PHSHORIGHEIGHT 22 +#define PHSHWIDTH (PHSHORIGWIDTH/PHSHFRAMES) +#define PHSHHEIGHT PHSHORIGHEIGHT +#define PHSHCHECKTIMEOUT (g_random_int()%120*1000) +#define PHSHTIMEOUT 120 +#define PHSHHIDETIMEOUT 80 +#define PHSHXS 5 +#define PHSHYS ((g_random_int() % 2) + 1) +#define PHSHXSHIDEFACTOR 2.5 +#define PHSHYSHIDEFACTOR 2.5 +#define PHSHPIXELSTOREMOVE(p) (p[3] < 55 || p[2] > 200) + +static void +phsh_unsea(GdkPixbuf *gp) +{ + guchar *pixels = gdk_pixbuf_get_pixels (gp); + int rs = gdk_pixbuf_get_rowstride (gp); + int w = gdk_pixbuf_get_width (gp); + int h = gdk_pixbuf_get_height (gp); + int x, y; + + for (y = 0; y < h; y++, pixels += rs) { + guchar *p = pixels; + for (x = 0; x < w; x++, p+=4) { + if (PHSHPIXELSTOREMOVE(p)) + p[3] = 0; + } + } +} + +static GdkPixbuf * +get_phsh_frame (GdkPixbuf *pb, int frame) +{ + GdkPixbuf *newpb; + + newpb = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, + PHSHWIDTH, PHSHHEIGHT); + gdk_pixbuf_copy_area (pb, frame * PHSHWIDTH, 0, + PHSHWIDTH, PHSHHEIGHT, newpb, 0, 0); + + return newpb; +} + +typedef struct { + gboolean live; + int x, y; +} InvGoat; + +typedef struct { + gboolean good; + int y; + int x; +} InvShot; + + +static GtkWidget *geginv = NULL; +static GtkWidget *geginv_canvas = NULL; +static GtkWidget *geginv_label = NULL; +static GdkPixbuf *inv_goat1 = NULL; +static GdkPixbuf *inv_goat2 = NULL; +static GdkPixbuf *inv_phsh1 = NULL; +static GdkPixbuf *inv_phsh2 = NULL; +static int inv_phsh_state = 0; +static int inv_goat_state = 0; +static int inv_width = 0; +static int inv_height = 0; +static int inv_goat_width = 0; +static int inv_goat_height = 0; +static int inv_phsh_width = 0; +static int inv_phsh_height = 0; +#define INV_ROWS 3 +#define INV_COLS 5 +static InvGoat invs[INV_COLS][INV_ROWS] = { { { FALSE, 0, 0 } } }; +static int inv_num = INV_ROWS * INV_COLS; +static double inv_factor = 1.0; +static int inv_our_x = 0; +static int inv_x = 0; +static int inv_y = 0; +static int inv_first_col = 0; +static int inv_last_col = INV_COLS-1; +static int inv_level = 0; +static int inv_lives = 0; +static gboolean inv_do_pause = FALSE; +static gboolean inv_reverse = FALSE; +static gboolean inv_game_over = FALSE; +static gboolean inv_left_pressed = FALSE; +static gboolean inv_right_pressed = FALSE; +static gboolean inv_fire_pressed = FALSE; +static gboolean inv_left_released = FALSE; +static gboolean inv_right_released = FALSE; +static gboolean inv_fire_released = FALSE; +static gboolean inv_paused = FALSE; +static GSList *inv_shots = NULL; +static guint inv_draw_idle = 0; + +static void +inv_show_status (void) +{ + gchar *s, *t, *u, *v, *w; + if (geginv == NULL) + return; + + if (inv_game_over) { + t = g_strdup_printf (_("<b>GAME OVER</b> at level %d!"), + inv_level+1); + u = g_strdup_printf ("<big>%s</big>", t); + /* Translators: the first and third strings are similar to a + * title, and the second string is a small information text. + * The spaces are there only to separate all the strings, so + try to keep them as is. */ + s = g_strdup_printf (_("%1$s %2$s %3$s"), + u, _("Press 'q' to quit"), u); + g_free (t); + g_free (u); + + } else if (inv_paused) { + t = g_strdup_printf("<big><b>%s</b></big>", _("Paused")); + /* Translators: the first string is a title and the second + * string is a small information text. */ + s = g_strdup_printf (_("%1$s\t%2$s"), + t, _("Press 'p' to unpause")); + g_free (t); + + } else { + t = g_strdup_printf ("<b>%d</b>", inv_level+1); + u = g_strdup_printf ("<b>%d</b>", inv_lives); + v = g_strdup_printf (_("Level: %s, Lives: %s"), t, u); + w = g_strdup_printf ("<big>%s</big>", v); + /* Translators: the first string is a title and the second + * string is a small information text. */ + s = g_strdup_printf (_("%1$s\t%2$s"), w, + _("Left/Right to move, Space to fire, 'p' to pause, 'q' to quit")); + g_free (t); + g_free (u); + g_free (v); + g_free (w); + + } + gtk_label_set_markup (GTK_LABEL (geginv_label), s); + + g_free (s); +} + +static gboolean +inv_draw (gpointer data) +{ + inv_draw_idle = 0; + + if (geginv) + gtk_widget_queue_draw (data); + + return FALSE; +} + +static void +inv_queue_draw (GtkWidget *window) +{ + if (inv_draw_idle == 0) + inv_draw_idle = g_idle_add (inv_draw, window); +} + +static void +inv_draw_explosion (int x, int y) +{ + cairo_t *cr; + int i; + + if ( ! gtk_widget_is_drawable (geginv_canvas)) + return; + + cr = gdk_cairo_create ( gtk_widget_get_window (geginv_canvas)); + + cairo_set_source_rgb (cr, 1.0, 0.0, 0.0); + + for (i = 5; i < 100; i += 5) { + cairo_arc (cr, x, y, i, 0, 2 * G_PI); + cairo_fill (cr); + gdk_flush (); + g_usleep (50000); + } + + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); + + for (i = 5; i < 100; i += 5) { + cairo_arc (cr, x, y, i, 0, 2 * G_PI); + cairo_fill (cr); + gdk_flush (); + g_usleep (50000); + } + + cairo_destroy (cr); + + inv_queue_draw (geginv); +} + + +static void +inv_do_game_over (void) +{ + GSList *li; + + inv_game_over = TRUE; + + for (li = inv_shots; li != NULL; li = li->next) { + InvShot *shot = li->data; + shot->good = FALSE; + } + + inv_queue_draw (geginv); + + inv_show_status (); +} + + +static GdkPixbuf * +pb_scale (GdkPixbuf *pb, double scale) +{ + int w, h; + + if (scale == 1.0) + return (GdkPixbuf *)g_object_ref ((GObject *)pb); + + w = gdk_pixbuf_get_width (pb) * scale; + h = gdk_pixbuf_get_height (pb) * scale; + + return gdk_pixbuf_scale_simple (pb, w, h, + GDK_INTERP_BILINEAR); +} + +static void +refind_first_and_last (void) +{ + int i, j; + + for (i = 0; i < INV_COLS; i++) { + gboolean all_null = TRUE; + for (j = 0; j < INV_ROWS; j++) { + if (invs[i][j].live) { + all_null = FALSE; + break; + } + } + if ( ! all_null) { + inv_first_col = i; + break; + } + } + + for (i = INV_COLS-1; i >= 0; i--) { + gboolean all_null = TRUE; + for (j = 0; j < INV_ROWS; j++) { + if (invs[i][j].live) { + all_null = FALSE; + break; + } + } + if ( ! all_null) { + inv_last_col = i; + break; + } + } +} + +static void +whack_gegl (int i, int j) +{ + if ( ! invs[i][j].live) + return; + + invs[i][j].live = FALSE; + inv_num --; + + if (inv_num > 0) { + refind_first_and_last (); + } else { + inv_x = 70; + inv_y = 70; + inv_first_col = 0; + inv_last_col = INV_COLS-1; + inv_reverse = FALSE; + + g_slist_foreach (inv_shots, (GFunc)g_free, NULL); + g_slist_free (inv_shots); + inv_shots = NULL; + + for (i = 0; i < INV_COLS; i++) { + for (j = 0; j < INV_ROWS; j++) { + invs[i][j].live = TRUE; + invs[i][j].x = 70 + i * 100; + invs[i][j].y = 70 + j * 80; + } + } + inv_num = INV_ROWS * INV_COLS; + + inv_level ++; + + inv_show_status (); + } + + inv_queue_draw (geginv); +} + +static gboolean +geginv_timeout (gpointer data) +{ + int i, j; + int limitx1; + int limitx2; + int speed; + int shots; + int max_shots; + + if (inv_paused) + return TRUE; + + if (geginv != data || + inv_num <= 0 || + inv_y > 700) + return FALSE; + + limitx1 = 70 - (inv_first_col * 100); + limitx2 = 800 - 70 - (inv_last_col * 100); + + if (inv_game_over) { + inv_y += 30; + } else { + if (inv_num < (INV_COLS*INV_ROWS)/3) + speed = 45+2*inv_level; + else if (inv_num < (2*INV_COLS*INV_ROWS)/3) + speed = 30+2*inv_level; + else + speed = 15+2*inv_level; + + if (inv_reverse) { + inv_x -= speed; + if (inv_x < limitx1) { + inv_reverse = FALSE; + inv_x = (limitx1 + (limitx1 - inv_x)); + inv_y += 30+inv_level; + } + } else { + inv_x += speed; + if (inv_x > limitx2) { + inv_reverse = TRUE; + inv_x = (limitx2 - (inv_x - limitx2)); + inv_y += 30+inv_level; + } + } + } + + for (i = 0; i < INV_COLS; i++) { + for (j = 0; j < INV_ROWS; j++) { + if (invs[i][j].live) { + invs[i][j].x = inv_x + i * 100; + invs[i][j].y = inv_y + j * 80; + + if ( ! inv_game_over && + invs[i][j].y >= 570) { + inv_do_game_over (); + } else if ( ! inv_game_over && + invs[i][j].y >= 530 && + invs[i][j].x + 40 > inv_our_x - 25 && + invs[i][j].x - 40 < inv_our_x + 25) { + whack_gegl (i,j); + inv_lives --; + inv_draw_explosion (inv_our_x, 550); + if (inv_lives <= 0) { + inv_do_game_over (); + } else { + g_slist_foreach (inv_shots, (GFunc)g_free, NULL); + g_slist_free (inv_shots); + inv_shots = NULL; + inv_our_x = 400; + inv_do_pause = TRUE; + inv_show_status (); + } + } + } + } + } + + shots = 0; + max_shots = (g_random_int () >> 3) % (2+inv_level); + while ( ! inv_game_over && shots < MIN (max_shots, inv_num)) { + int i = (g_random_int () >> 3) % INV_COLS; + for (j = INV_ROWS-1; j >= 0; j--) { + if (invs[i][j].live) { + InvShot *shot = g_new0 (InvShot, 1); + + shot->good = FALSE; + shot->x = invs[i][j].x + (g_random_int () % 6) - 3; + shot->y = invs[i][j].y + inv_goat_height/2 + (g_random_int () % 3); + + inv_shots = g_slist_prepend (inv_shots, shot); + shots++; + break; + } + } + } + + inv_goat_state = (inv_goat_state+1) % 2; + + inv_queue_draw (geginv); + + g_timeout_add (((inv_num/4)+1) * 100, geginv_timeout, geginv); + + return FALSE; +} + +static gboolean +find_gegls (int x, int y) +{ + int i, j; + + /* FIXME: this is stupid, we can do better */ + for (i = 0; i < INV_COLS; i++) { + for (j = 0; j < INV_ROWS; j++) { + int ix = invs[i][j].x; + int iy = invs[i][j].y; + + if ( ! invs[i][j].live) + continue; + + if (y >= iy - 30 && + y <= iy + 30 && + x >= ix - 40 && + x <= ix + 40) { + whack_gegl (i, j); + return TRUE; + } + } + } + + return FALSE; +} + + +static gboolean +geginv_move_timeout (gpointer data) +{ + GSList *li; + static int shot_inhibit = 0; + + if (inv_paused) + return TRUE; + + if (geginv != data || + inv_num <= 0 || + inv_y > 700) + return FALSE; + + inv_phsh_state = (inv_phsh_state+1)%10; + + /* we will be drawing something */ + if (inv_shots != NULL) + inv_queue_draw (geginv); + + li = inv_shots; + while (li != NULL) { + InvShot *shot = li->data; + + if (shot->good) { + shot->y -= 30; + if (find_gegls (shot->x, shot->y) || + shot->y <= 0) { + GSList *list = li; + /* we were restarted */ + if (inv_shots == NULL) + return TRUE; + li = li->next; + g_free (shot); + inv_shots = g_slist_delete_link (inv_shots, list); + continue; + } + } else /* bad */ { + shot->y += 30; + if ( ! inv_game_over && + shot->y >= 535 && + shot->y <= 565 && + shot->x >= inv_our_x - 25 && + shot->x <= inv_our_x + 25) { + inv_lives --; + inv_draw_explosion (inv_our_x, 550); + if (inv_lives <= 0) { + inv_do_game_over (); + } else { + g_slist_foreach (inv_shots, (GFunc)g_free, NULL); + g_slist_free (inv_shots); + inv_shots = NULL; + inv_our_x = 400; + inv_do_pause = TRUE; + inv_show_status (); + return TRUE; + } + } + + if (shot->y >= 600) { + GSList *list = li; + li = li->next; + g_free (shot); + inv_shots = g_slist_delete_link (inv_shots, list); + continue; + } + } + + li = li->next; + } + + if ( ! inv_game_over) { + if (inv_left_pressed && inv_our_x > 100) { + inv_our_x -= 20; + inv_queue_draw (geginv); + } else if (inv_right_pressed && inv_our_x < 700) { + inv_our_x += 20; + inv_queue_draw (geginv); + } + } + + if (shot_inhibit > 0) + shot_inhibit--; + + if ( ! inv_game_over && inv_fire_pressed && shot_inhibit == 0) { + InvShot *shot = g_new0 (InvShot, 1); + + shot->good = TRUE; + shot->x = inv_our_x; + shot->y = 540; + + inv_shots = g_slist_prepend (inv_shots, shot); + + shot_inhibit = 5; + + inv_queue_draw (geginv); + } + + if (inv_left_released) + inv_left_pressed = FALSE; + if (inv_right_released) + inv_right_pressed = FALSE; + if (inv_fire_released) + inv_fire_pressed = FALSE; + + return TRUE; +} + +static gboolean +inv_key_press (GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + switch (event->keyval) { + case GDK_KEY_Left: + case GDK_KEY_KP_Left: + case GDK_KEY_Pointer_Left: + inv_left_pressed = TRUE; + inv_left_released = FALSE; + return TRUE; + case GDK_KEY_Right: + case GDK_KEY_KP_Right: + case GDK_KEY_Pointer_Right: + inv_right_pressed = TRUE; + inv_right_released = FALSE; + return TRUE; + case GDK_KEY_space: + case GDK_KEY_KP_Space: + inv_fire_pressed = TRUE; + inv_fire_released = FALSE; + return TRUE; + default: + break; + } + return FALSE; +} + +static gboolean +inv_key_release (GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + switch (event->keyval) { + case GDK_KEY_Left: + case GDK_KEY_KP_Left: + case GDK_KEY_Pointer_Left: + inv_left_released = TRUE; + return TRUE; + case GDK_KEY_Right: + case GDK_KEY_KP_Right: + case GDK_KEY_Pointer_Right: + inv_right_released = TRUE; + return TRUE; + case GDK_KEY_space: + case GDK_KEY_KP_Space: + inv_fire_released = TRUE; + return TRUE; + case GDK_KEY_q: + case GDK_KEY_Q: + gtk_widget_destroy (widget); + return TRUE; + case GDK_KEY_p: + case GDK_KEY_P: + inv_paused = ! inv_paused; + inv_show_status (); + return TRUE; + default: + break; + } + return FALSE; +} + +static gboolean +ensure_creatures (void) +{ + GdkPixbuf *pb, *pb1; + + if (inv_goat1 != NULL) + return TRUE; + + pb = gdk_pixbuf_new_from_resource ("/org/gimp/lebl-dialog/wanda.png", + NULL); + if (pb == NULL) + return FALSE; + + pb1 = get_phsh_frame (pb, 1); + inv_phsh1 = pb_scale (pb1, inv_factor); + g_object_unref (G_OBJECT (pb1)); + phsh_unsea (inv_phsh1); + + pb1 = get_phsh_frame (pb, 2); + inv_phsh2 = pb_scale (pb1, inv_factor); + g_object_unref (G_OBJECT (pb1)); + phsh_unsea (inv_phsh2); + + g_object_unref (G_OBJECT (pb)); + + pb = gdk_pixbuf_new_from_resource ("/org/gimp/lebl-dialog/gegl-1.png", + NULL); + if (pb == NULL) { + g_object_unref (G_OBJECT (inv_phsh1)); + g_object_unref (G_OBJECT (inv_phsh2)); + return FALSE; + } + + inv_goat1 = pb_scale (pb, inv_factor * 0.66); + g_object_unref (pb); + + pb = gdk_pixbuf_new_from_resource ("/org/gimp/lebl-dialog/gegl-2.png", + NULL); + if (pb == NULL) { + g_object_unref (G_OBJECT (inv_goat1)); + g_object_unref (G_OBJECT (inv_phsh1)); + g_object_unref (G_OBJECT (inv_phsh2)); + return FALSE; + } + + inv_goat2 = pb_scale (pb, inv_factor * 0.66); + g_object_unref (pb); + + inv_goat_width = gdk_pixbuf_get_width (inv_goat1); + inv_goat_height = gdk_pixbuf_get_height (inv_goat1); + inv_phsh_width = gdk_pixbuf_get_width (inv_phsh1); + inv_phsh_height = gdk_pixbuf_get_height (inv_phsh1); + + return TRUE; +} + +static void +geginv_destroyed (GtkWidget *w, gpointer data) +{ + geginv = NULL; +} + +static gboolean +inv_expose (GtkWidget *widget, GdkEventExpose *event) +{ + cairo_t *cr; + GdkPixbuf *goat; + GSList *li; + int i, j; + + if (geginv == NULL) { + inv_draw_idle = 0; + return TRUE; + } + + if ( ! gtk_widget_is_drawable (geginv_canvas)) + return TRUE; + + cr = gdk_cairo_create (gtk_widget_get_window (geginv_canvas)); + + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); + cairo_paint (cr); + + if (inv_goat_state == 0) + goat = inv_goat1; + else + goat = inv_goat2; + + for (i = 0; i < INV_COLS; i++) { + for (j = 0; j < INV_ROWS; j++) { + int x, y; + if ( ! invs[i][j].live) + continue; + + x = invs[i][j].x*inv_factor - inv_goat_width/2, + y = invs[i][j].y*inv_factor - inv_goat_height/2, + + gdk_cairo_set_source_pixbuf (cr, goat, x, y); + cairo_rectangle (cr, + x, y, + inv_goat_width, + inv_goat_height); + cairo_fill (cr); + } + } + + for (li = inv_shots; li != NULL; li = li->next) { + InvShot *shot = li->data; + + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); + cairo_rectangle (cr, + (shot->x-1)*inv_factor, + (shot->y-4)*inv_factor, + 3, 8); + cairo_fill (cr); + } + + if ( ! inv_game_over) { + GdkPixbuf *phsh; + + if (inv_phsh_state < 5) { + phsh = inv_phsh1; + } else { + phsh = inv_phsh2; + } + + gdk_cairo_set_source_pixbuf (cr, phsh, + inv_our_x*inv_factor - inv_phsh_width/2, + 550*inv_factor - inv_phsh_height/2); + cairo_rectangle (cr, + inv_our_x*inv_factor - inv_phsh_width/2, + 550*inv_factor - inv_phsh_height/2, + inv_phsh_width, + inv_phsh_height); + cairo_fill (cr); + } + + cairo_destroy (cr); + + gdk_flush (); + + if (inv_do_pause) { + g_usleep (G_USEC_PER_SEC); + inv_do_pause = FALSE; + } + + inv_draw_idle = 0; + return TRUE; +} + +gboolean gimp_lebl_dialog (void); + +gboolean +gimp_lebl_dialog (void) +{ + GtkWidget *vbox; + int i, j; + + if (geginv != NULL) { + gtk_window_present (GTK_WINDOW (geginv)); + return FALSE; + } + + inv_width = 800; + inv_height = 600; + + if (inv_width > gdk_screen_get_width (gdk_screen_get_default ()) * 0.9) { + inv_width = gdk_screen_get_width (gdk_screen_get_default ()) * 0.9; + inv_height = inv_width * (600.0/800.0); + } + + if (inv_height > gdk_screen_get_height (gdk_screen_get_default ()) * 0.9) { + inv_height = gdk_screen_get_height (gdk_screen_get_default ()) * 0.9; + inv_width = inv_height * (800.0/600.0); + } + + inv_factor = (double)inv_width / 800.0; + + if ( ! ensure_creatures ()) + return FALSE; + + geginv = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_position (GTK_WINDOW (geginv), GTK_WIN_POS_CENTER); + gtk_window_set_title (GTK_WINDOW (geginv), _("Killer GEGLs from Outer Space")); + g_object_set (G_OBJECT (geginv), "resizable", FALSE, NULL); + g_signal_connect (G_OBJECT (geginv), "destroy", + G_CALLBACK (geginv_destroyed), + NULL); + + geginv_canvas = gtk_drawing_area_new (); + gtk_widget_set_size_request (geginv_canvas, inv_width, inv_height); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_container_add (GTK_CONTAINER (geginv), vbox); + gtk_box_pack_start (GTK_BOX (vbox), geginv_canvas, TRUE, TRUE, 0); + + geginv_label = gtk_label_new (""); + gtk_box_pack_start (GTK_BOX (vbox), geginv_label, FALSE, FALSE, 0); + + inv_our_x = 400; + inv_x = 70; + inv_y = 70; + inv_first_col = 0; + inv_level = 0; + inv_lives = 3; + inv_last_col = INV_COLS-1; + inv_reverse = FALSE; + inv_game_over = FALSE; + inv_left_pressed = FALSE; + inv_right_pressed = FALSE; + inv_fire_pressed = FALSE; + inv_left_released = FALSE; + inv_right_released = FALSE; + inv_fire_released = FALSE; + inv_paused = FALSE; + + gtk_widget_add_events (geginv, GDK_KEY_RELEASE_MASK); + + g_signal_connect (G_OBJECT (geginv), "key_press_event", + G_CALLBACK (inv_key_press), NULL); + g_signal_connect (G_OBJECT (geginv), "key_release_event", + G_CALLBACK (inv_key_release), NULL); + g_signal_connect (G_OBJECT (geginv_canvas), "expose_event", + G_CALLBACK (inv_expose), NULL); + + g_slist_foreach (inv_shots, (GFunc)g_free, NULL); + g_slist_free (inv_shots); + inv_shots = NULL; + + for (i = 0; i < INV_COLS; i++) { + for (j = 0; j < INV_ROWS; j++) { + invs[i][j].live = TRUE; + invs[i][j].x = 70 + i * 100; + invs[i][j].y = 70 + j * 80; + } + } + inv_num = INV_ROWS * INV_COLS; + + g_timeout_add (((inv_num/4)+1) * 100, geginv_timeout, geginv); + g_timeout_add (90, geginv_move_timeout, geginv); + + inv_show_status (); + + gtk_widget_show_all (geginv); + return FALSE; +} diff --git a/app/dialogs/lebl-dialog.h b/app/dialogs/lebl-dialog.h new file mode 100644 index 0000000..e1d5797 --- /dev/null +++ b/app/dialogs/lebl-dialog.h @@ -0,0 +1,15397 @@ +#include <gio/gio.h> + +#if defined (__ELF__) && ( __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6)) +# define SECTION __attribute__ ((section (".gresource.lebl_dialog"), aligned (8))) +#else +# define SECTION +#endif + +static const SECTION union { const guint8 data[121880]; const double alignment; void * const ptr;} lebl_dialog_resource_data = { { + 0x47, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4b, 0x50, 0x90, 0x0b, + 0x01, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x4c, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xd4, 0xb5, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xec, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x4c, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0x42, 0x94, 0x5a, 0xe4, + 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x76, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x08, 0xa2, 0x00, 0x00, 0xc3, 0xac, 0x6c, 0xe4, + 0x06, 0x00, 0x00, 0x00, 0x08, 0xa2, 0x00, 0x00, + 0x0a, 0x00, 0x76, 0x00, 0x18, 0xa2, 0x00, 0x00, + 0xc0, 0x78, 0x01, 0x00, 0x27, 0x85, 0xb8, 0x18, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x78, 0x01, 0x00, + 0x05, 0x00, 0x4c, 0x00, 0xc8, 0x78, 0x01, 0x00, + 0xcc, 0x78, 0x01, 0x00, 0xd0, 0x92, 0xb4, 0x63, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x78, 0x01, 0x00, + 0x09, 0x00, 0x76, 0x00, 0xd8, 0x78, 0x01, 0x00, + 0x00, 0xdc, 0x01, 0x00, 0xb2, 0xd2, 0x44, 0xee, + 0x04, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, + 0x0c, 0x00, 0x4c, 0x00, 0x0c, 0xdc, 0x01, 0x00, + 0x18, 0xdc, 0x01, 0x00, 0x6f, 0x72, 0x67, 0x2f, + 0x04, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x67, 0x65, 0x67, 0x6c, + 0x2d, 0x31, 0x2e, 0x70, 0x6e, 0x67, 0x00, 0x00, + 0xf8, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x64, 0x6b, 0x50, 0x00, 0x00, 0xa0, 0xf8, + 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x8c, + 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x68, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xc5, 0xc9, 0xc5, 0xd2, 0xd6, 0xd2, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf9, 0xfa, 0xf9, 0x74, 0x77, + 0x74, 0x56, 0x58, 0x56, 0xc3, 0xc6, 0xc3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x97, 0x9a, 0x97, 0x21, 0x21, 0x21, + 0x3c, 0x3d, 0x3c, 0xaa, 0xad, 0xaa, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xd1, 0xd4, 0xd1, 0x8e, 0x91, 0x8e, + 0xdd, 0xe1, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xec, + 0xe9, 0x66, 0x68, 0x66, 0x27, 0x27, 0x27, 0x43, + 0x44, 0x43, 0x9e, 0xa2, 0x9e, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0x99, + 0x96, 0x1c, 0x1d, 0x1c, 0x8c, 0x8e, 0x8c, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xba, 0xbe, 0xba, + 0x49, 0x4b, 0x49, 0x5b, 0x5d, 0x5b, 0x49, 0x4a, + 0x49, 0xb0, 0xb3, 0xb0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x8a, 0x8c, 0x8a, 0x2d, 0x2e, 0x2d, + 0x5b, 0x5d, 0x5b, 0xdf, 0xe3, 0xdf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x6c, 0x6f, 0x6c, 0x6e, + 0x71, 0x6e, 0x87, 0x8a, 0x87, 0x59, 0x5b, 0x59, + 0xbf, 0xc2, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0x78, 0x7a, + 0x78, 0x5c, 0x5d, 0x5c, 0x4b, 0x4d, 0x4b, 0xc8, + 0xcb, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xac, 0xaf, 0xac, 0x5a, 0x5c, 0x5a, 0xc1, 0xc5, + 0xc1, 0x8a, 0x8d, 0x8a, 0x60, 0x62, 0x60, 0xcd, + 0xd0, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, + 0xe2, 0xdf, 0x60, 0x62, 0x60, 0x82, 0x85, 0x82, + 0x56, 0x58, 0x56, 0xa9, 0xac, 0xa9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd9, 0xdd, 0xd9, 0x5f, + 0x61, 0x5f, 0x97, 0x9a, 0x97, 0xd5, 0xd8, 0xd5, + 0x66, 0x68, 0x66, 0x86, 0x89, 0x86, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, 0x68, 0x6a, + 0x68, 0x9d, 0xa0, 0x9d, 0x6a, 0x6c, 0x6a, 0x90, + 0x93, 0x90, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x8e, 0x90, 0x8e, 0x6e, 0x71, + 0x6e, 0xec, 0xf0, 0xec, 0xa8, 0xab, 0xa8, 0x56, + 0x59, 0x56, 0xde, 0xe2, 0xde, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, + 0xe2, 0xde, 0x6f, 0x71, 0x6f, 0xaf, 0xb2, 0xaf, + 0x75, 0x78, 0x75, 0x73, 0x76, 0x73, 0xfc, 0xfc, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, + 0xc9, 0xc5, 0x51, 0x54, 0x51, 0xc8, 0xcc, 0xc8, + 0xde, 0xe2, 0xde, 0x64, 0x66, 0x64, 0xa9, 0xac, + 0xa9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xce, 0xd2, 0xce, 0x6a, 0x6c, + 0x6a, 0xc3, 0xc7, 0xc3, 0x79, 0x7b, 0x79, 0x74, + 0x76, 0x74, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xed, 0xf0, 0xed, 0x65, 0x67, + 0x65, 0x8d, 0x8f, 0x8d, 0xeb, 0xef, 0xeb, 0x98, + 0x9b, 0x98, 0x69, 0x6b, 0x69, 0xe4, 0xe8, 0xe4, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb9, + 0xbc, 0xb9, 0x65, 0x67, 0x65, 0xd0, 0xd3, 0xd0, + 0x7c, 0x7e, 0x7c, 0x8c, 0x8e, 0x8c, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x9a, 0x9d, 0x9a, 0x60, 0x61, 0x60, + 0xe3, 0xe6, 0xe3, 0xd4, 0xd8, 0xd4, 0x57, 0x59, + 0x57, 0xc4, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x92, 0x94, 0x92, 0x71, 0x73, + 0x71, 0xd5, 0xd9, 0xd5, 0x61, 0x64, 0x61, 0xa3, + 0xa6, 0xa3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0xd3, + 0xd0, 0x54, 0x55, 0x54, 0xc8, 0xcb, 0xc8, 0xff, + 0xff, 0xff, 0x70, 0x72, 0x70, 0x91, 0x94, 0x91, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0x60, + 0x62, 0x60, 0x92, 0x94, 0x92, 0xd8, 0xdb, 0xd8, + 0x51, 0x52, 0x51, 0xb1, 0xb4, 0xb1, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xd0, 0xd3, 0xd0, 0xe1, 0xe5, + 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0x59, 0x5b, 0x59, + 0xb4, 0xb7, 0xb4, 0xff, 0xff, 0xff, 0x9b, 0x9e, + 0x9b, 0x5f, 0x61, 0x5f, 0xd6, 0xda, 0xd6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9e, 0xa0, 0x9e, 0x59, 0x5b, 0x59, 0xcd, 0xd1, + 0xcd, 0xca, 0xce, 0xca, 0x57, 0x59, 0x57, 0xc7, + 0xca, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xba, 0xbd, 0xba, 0x9c, 0x9e, 0x9c, 0xd2, 0xd5, + 0xd2, 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, 0x5e, + 0x60, 0x5e, 0xa5, 0xa8, 0xa5, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x66, 0x68, 0x66, 0xb4, 0xb7, 0xb4, 0xff, + 0xff, 0xff, 0xc7, 0xcb, 0xc7, 0x5f, 0x60, 0x5f, + 0xbb, 0xbd, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xbb, 0xbf, 0xbb, 0x63, 0x65, 0x63, 0xac, + 0xaf, 0xac, 0xeb, 0xef, 0xeb, 0x9b, 0x9d, 0x9b, + 0x70, 0x72, 0x70, 0xe9, 0xec, 0xe9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd9, 0xdd, 0xd9, 0x6a, 0x6c, 0x6a, 0x3a, + 0x3b, 0x3a, 0x88, 0x8a, 0x88, 0xdc, 0xe0, 0xdc, + 0x8a, 0x8d, 0x8a, 0x2b, 0x2b, 0x2b, 0x9a, 0x9c, + 0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xdd, 0xe1, 0xdd, 0x57, 0x59, 0x57, + 0xbc, 0xc0, 0xbc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xc0, 0xc3, 0xc0, 0xdf, 0xe3, 0xdf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xa4, 0xa7, 0xa4, 0x66, 0x68, 0x66, + 0xa8, 0xab, 0xa8, 0xf2, 0xf6, 0xf2, 0xe0, 0xe4, + 0xe0, 0x69, 0x6b, 0x69, 0xa7, 0xa9, 0xa7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xc2, 0xbf, + 0x5a, 0x5c, 0x5a, 0x66, 0x68, 0x66, 0x66, 0x68, + 0x66, 0x8c, 0x8e, 0x8c, 0x50, 0x52, 0x50, 0x4d, + 0x4f, 0x4d, 0x9e, 0xa1, 0x9e, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb6, 0xb9, + 0xb6, 0x61, 0x64, 0x61, 0xdc, 0xe0, 0xdc, 0xff, + 0xff, 0xff, 0xed, 0xf0, 0xed, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xee, 0xf0, 0xee, 0x98, 0x9b, 0x98, 0x57, 0x59, + 0x57, 0xa8, 0xab, 0xa8, 0xed, 0xf1, 0xed, 0xf4, + 0xf8, 0xf4, 0xb1, 0xb4, 0xb1, 0x57, 0x59, 0x57, + 0xd7, 0xdb, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xa7, 0xaa, 0xa7, 0x71, 0x74, 0x71, 0xa2, + 0xa4, 0xa2, 0x2a, 0x2b, 0x2a, 0x47, 0x49, 0x47, + 0xa2, 0xa5, 0xa2, 0x72, 0x74, 0x72, 0x9e, 0xa1, + 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xba, 0xbe, 0xba, 0xa3, 0xa6, 0xa3, + 0xee, 0xf2, 0xee, 0xe1, 0xe4, 0xe1, 0x82, 0x85, + 0x82, 0x80, 0x83, 0x80, 0xba, 0xbd, 0xba, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xe3, 0xdf, + 0x95, 0x97, 0x95, 0xc5, 0xc8, 0xc5, 0xff, 0xff, + 0xff, 0xdd, 0xe0, 0xdd, 0x85, 0x88, 0x85, 0x5b, + 0x5d, 0x5b, 0xa9, 0xab, 0xa9, 0xec, 0xf0, 0xec, + 0xf8, 0xfc, 0xf8, 0xe3, 0xe7, 0xe3, 0x76, 0x78, + 0x76, 0x7d, 0x80, 0x7d, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x82, 0x7f, + 0x7a, 0x7d, 0x7a, 0xc7, 0xcb, 0xc7, 0x64, 0x66, + 0x64, 0x8d, 0x90, 0x8d, 0xdf, 0xe3, 0xdf, 0x7b, + 0x7d, 0x7b, 0x9a, 0x9d, 0x9a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xe0, + 0xdc, 0xe4, 0xe8, 0xe4, 0xac, 0xae, 0xac, 0x9f, + 0xa2, 0x9f, 0xae, 0xb1, 0xae, 0x7b, 0x7d, 0x7b, + 0x54, 0x56, 0x54, 0xb6, 0xb9, 0xb6, 0xff, 0xff, + 0xff, 0xe0, 0xe4, 0xe0, 0x7a, 0x7c, 0x7a, 0x5d, + 0x5f, 0x5d, 0x9d, 0xa0, 0x9d, 0xcc, 0xd0, 0xcc, + 0x8b, 0x8d, 0x8b, 0xc5, 0xc9, 0xc5, 0xf3, 0xf6, + 0xf3, 0xf8, 0xfc, 0xf8, 0xee, 0xf2, 0xee, 0x92, + 0x95, 0x92, 0x59, 0x5b, 0x59, 0xc2, 0xc6, 0xc2, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, + 0xf5, 0x5b, 0x5d, 0x5b, 0xa2, 0xa5, 0xa2, 0xf0, + 0xf4, 0xf0, 0xe8, 0xec, 0xe8, 0xee, 0xf2, 0xee, + 0xf2, 0xf6, 0xf2, 0x7c, 0x7e, 0x7c, 0x8f, 0x92, + 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, + 0xc1, 0xbe, 0x84, 0x87, 0x84, 0xc5, 0xc9, 0xc5, + 0x63, 0x65, 0x63, 0x98, 0x9b, 0x98, 0xf5, 0xf9, + 0xf5, 0xe3, 0xe7, 0xe3, 0x60, 0x61, 0x60, 0x4d, + 0x4f, 0x4d, 0xaa, 0xad, 0xaa, 0xef, 0xf3, 0xef, + 0xe9, 0xed, 0xe9, 0xa0, 0xa3, 0xa0, 0x4f, 0x51, + 0x4f, 0xd6, 0xd9, 0xd6, 0xed, 0xf1, 0xed, 0xf6, + 0xfa, 0xf6, 0xf4, 0xf8, 0xf4, 0xdd, 0xe1, 0xdd, + 0x99, 0x9c, 0x99, 0x4e, 0x50, 0x4e, 0xa2, 0xa5, + 0xa2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xc6, 0xc9, 0xc6, 0x57, 0x59, 0x57, + 0xc1, 0xc4, 0xc1, 0xeb, 0xee, 0xeb, 0xeb, 0xef, + 0xeb, 0xeb, 0xef, 0xeb, 0xe9, 0xed, 0xe9, 0x7f, + 0x81, 0x7f, 0x9f, 0xa1, 0x9f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc6, 0xc9, 0xc6, 0x6a, 0x6c, 0x6a, 0x8c, 0x8f, + 0x8c, 0xc6, 0xca, 0xc6, 0x63, 0x65, 0x63, 0xbb, + 0xbe, 0xbb, 0xf8, 0xfc, 0xf8, 0xeb, 0xef, 0xeb, + 0x70, 0x72, 0x70, 0x1f, 0x1f, 0x1f, 0x99, 0x9c, + 0x99, 0xf1, 0xf5, 0xf1, 0xf8, 0xfc, 0xf8, 0xce, + 0xd1, 0xce, 0x55, 0x57, 0x55, 0xcc, 0xd0, 0xcc, + 0xf7, 0xfb, 0xf7, 0xe7, 0xeb, 0xe7, 0xaa, 0xac, + 0xaa, 0x6c, 0x6e, 0x6c, 0x56, 0x58, 0x56, 0xa5, + 0xa8, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0x97, + 0x95, 0x31, 0x32, 0x31, 0x69, 0x6b, 0x69, 0x7a, + 0x7c, 0x7a, 0x79, 0x7a, 0x79, 0x79, 0x7b, 0x79, + 0x89, 0x8b, 0x89, 0x69, 0x6b, 0x69, 0x94, 0x97, + 0x94, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xdc, 0xdf, 0xdc, 0x72, 0x74, 0x72, 0x8f, + 0x92, 0x8f, 0xe5, 0xe8, 0xe5, 0xdb, 0xde, 0xdb, + 0x61, 0x63, 0x61, 0xa7, 0xab, 0xa7, 0xf0, 0xf4, + 0xf0, 0xc5, 0xc8, 0xc5, 0x4a, 0x4c, 0x4a, 0x2b, + 0x2b, 0x2b, 0xaa, 0xad, 0xaa, 0xf0, 0xf4, 0xf0, + 0xf6, 0xfa, 0xf6, 0xcc, 0xd0, 0xcc, 0x55, 0x57, + 0x55, 0xbd, 0xc1, 0xbd, 0xb1, 0xb4, 0xb1, 0x6e, + 0x6f, 0x6e, 0x59, 0x5a, 0x59, 0x8d, 0x8f, 0x8d, + 0xcb, 0xcf, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, + 0xfa, 0xf9, 0x72, 0x75, 0x72, 0x57, 0x59, 0x57, + 0x77, 0x79, 0x77, 0x87, 0x89, 0x87, 0x83, 0x85, + 0x83, 0x85, 0x88, 0x85, 0x90, 0x92, 0x90, 0x6b, + 0x6d, 0x6b, 0x95, 0x98, 0x95, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xd2, 0xd6, 0xd2, 0x76, 0x79, 0x76, + 0x7f, 0x82, 0x7f, 0xe0, 0xe3, 0xe0, 0xff, 0xff, + 0xff, 0xed, 0xf0, 0xed, 0x6d, 0x70, 0x6d, 0x76, + 0x79, 0x76, 0x94, 0x97, 0x94, 0x5d, 0x5f, 0x5d, + 0x65, 0x67, 0x65, 0x68, 0x6b, 0x68, 0x5b, 0x5d, + 0x5b, 0xa3, 0xa6, 0xa3, 0xbc, 0xbf, 0xbc, 0x88, + 0x8b, 0x88, 0x47, 0x49, 0x47, 0xad, 0xb0, 0xad, + 0x76, 0x79, 0x76, 0x87, 0x8a, 0x87, 0xd1, 0xd4, + 0xd1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xca, 0xcd, 0xca, 0x5c, 0x5e, + 0x5c, 0xc7, 0xca, 0xc7, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x71, 0x73, 0x71, 0x9e, 0xa1, + 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xd4, 0xd8, 0xd4, 0x74, 0x76, + 0x74, 0x73, 0x75, 0x73, 0xd9, 0xdd, 0xd9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa5, 0xa8, 0xa5, 0x58, 0x5a, 0x58, 0x6b, 0x6d, + 0x6b, 0x9a, 0x9d, 0x9a, 0xd6, 0xd9, 0xd6, 0xd7, + 0xda, 0xd7, 0x8d, 0x90, 0x8d, 0x66, 0x68, 0x66, + 0x62, 0x64, 0x62, 0x54, 0x56, 0x54, 0x3f, 0x40, + 0x3f, 0xab, 0xae, 0xab, 0xd7, 0xdb, 0xd7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa2, + 0xa4, 0xa2, 0x5b, 0x5d, 0x5b, 0xf2, 0xf3, 0xf2, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, + 0x6c, 0x6a, 0x9c, 0xa0, 0x9c, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdd, 0xe1, 0xdd, 0x68, + 0x6a, 0x68, 0x63, 0x65, 0x63, 0xcc, 0xd0, 0xcc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, + 0xd6, 0xd2, 0xe4, 0xe8, 0xe4, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xdb, 0xdf, 0xdb, 0xc6, 0xca, 0xc6, 0x8c, + 0x8f, 0x8c, 0x36, 0x36, 0x36, 0x60, 0x62, 0x60, + 0xda, 0xde, 0xda, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf9, 0xfa, 0xf9, 0x79, 0x7b, 0x79, 0x80, 0x83, + 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x5d, 0x5f, 0x5d, 0xa1, 0xa4, + 0xa1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xd6, 0xd2, + 0x6f, 0x71, 0x6f, 0x63, 0x65, 0x63, 0xcb, 0xcf, + 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa3, 0xa7, 0xa3, 0x56, 0x59, 0x56, 0x8d, 0x90, + 0x8d, 0x59, 0x5c, 0x59, 0xac, 0xaf, 0xac, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd6, 0xd9, 0xd6, 0x68, + 0x6a, 0x68, 0xab, 0xae, 0xab, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x64, + 0x66, 0x64, 0xb1, 0xb5, 0xb1, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xec, + 0xe9, 0x79, 0x7b, 0x79, 0x5b, 0x5d, 0x5b, 0xcd, + 0xd1, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xc4, 0xc7, 0xc4, 0x4f, 0x51, 0x4f, 0x8d, + 0x8f, 0x8d, 0xe1, 0xe5, 0xe1, 0x81, 0x84, 0x81, + 0x7a, 0x7d, 0x7a, 0xf1, 0xf3, 0xf1, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb4, 0xb7, 0xb4, 0x67, 0x69, 0x67, 0xcd, 0xd1, + 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe1, 0xe5, 0xe1, 0x63, 0x64, 0x63, 0xbc, 0xbf, + 0xbc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x96, 0x99, 0x96, 0x65, 0x68, 0x65, + 0xc3, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xd1, 0xd5, 0xd1, 0x6b, 0x6d, 0x6b, + 0x8f, 0x92, 0x8f, 0xf1, 0xf3, 0xf1, 0xff, 0xff, + 0xff, 0xbb, 0xbe, 0xbb, 0x63, 0x66, 0x63, 0xc8, + 0xcb, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x86, 0x89, 0x86, 0x81, + 0x84, 0x81, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcd, 0xd1, 0xcd, 0x59, + 0x5a, 0x59, 0xcb, 0xcf, 0xcb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xb0, 0xb4, 0xb0, 0x4d, 0x4f, + 0x4d, 0xad, 0xb0, 0xad, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xcd, 0xd1, 0xcd, 0x68, 0x6a, + 0x68, 0x66, 0x68, 0x66, 0xe9, 0xec, 0xe9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0xe8, 0xe4, + 0x72, 0x74, 0x72, 0x8d, 0x8f, 0x8d, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xec, 0xe9, + 0x5b, 0x5c, 0x5b, 0xa4, 0xa6, 0xa4, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbd, 0xc0, 0xbd, 0x4f, 0x50, 0x4f, 0xd0, 0xd4, + 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd2, 0xd5, 0xd2, 0x62, + 0x64, 0x62, 0x9f, 0xa2, 0x9f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, + 0x7e, 0x7b, 0x67, 0x69, 0x67, 0xc7, 0xcb, 0xc7, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa0, 0xa3, 0xa0, 0x57, + 0x59, 0x57, 0xdf, 0xe3, 0xdf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xc4, 0xc7, 0xc4, 0x4f, 0x51, 0x4f, 0xc4, + 0xc8, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbb, 0xbe, 0xbb, 0x65, + 0x67, 0x65, 0xdc, 0xe0, 0xdc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x96, 0x98, 0x96, 0x5b, 0x5d, 0x5b, 0xfc, 0xfc, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x99, 0x9c, 0x99, 0x5c, 0x5e, 0x5c, 0xc5, 0xc9, + 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xcf, 0xd2, 0xcf, 0x52, 0x54, 0x52, 0xb2, 0xb5, + 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xa0, 0x9d, + 0x6f, 0x71, 0x6f, 0xed, 0xf0, 0xed, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa9, 0xac, 0xa9, 0x7a, 0x7c, 0x7a, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x85, 0x87, 0x85, 0x7e, + 0x81, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, + 0xfc, 0x92, 0x95, 0x92, 0x42, 0x43, 0x42, 0xac, + 0xaf, 0xac, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, + 0x95, 0x92, 0x6a, 0x6c, 0x6a, 0xdd, 0xe0, 0xdd, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0xec, + 0xe9, 0x6e, 0x70, 0x6e, 0xa2, 0xa5, 0xa2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x8b, 0x8e, 0x8b, 0x7b, + 0x7e, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x88, 0x8a, 0x88, 0x89, 0x8c, 0x89, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xa7, 0xaa, 0xa7, 0x58, 0x5a, 0x58, + 0x50, 0x51, 0x50, 0xb3, 0xb7, 0xb3, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xd9, 0xdd, 0xd9, 0x63, 0x65, + 0x63, 0x9c, 0x9f, 0x9c, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xc4, 0xc8, 0xc4, 0x5c, 0x5e, 0x5c, + 0xd0, 0xd4, 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7e, 0x81, 0x7e, 0x89, 0x8c, 0x89, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xd4, 0xd8, 0xd4, + 0xba, 0xbd, 0xba, 0xa5, 0xa8, 0xa5, 0xb7, 0xba, + 0xb7, 0xc0, 0xc4, 0xc0, 0xcf, 0xd3, 0xcf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x84, 0x86, 0x84, 0x78, + 0x7a, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xc7, 0xcb, 0xc7, 0x53, 0x55, + 0x53, 0x94, 0x97, 0x94, 0x8b, 0x8d, 0x8b, 0x69, + 0x6b, 0x69, 0xdf, 0xe3, 0xdf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xa1, 0xa4, 0xa1, 0x61, 0x63, 0x61, + 0xba, 0xbd, 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9b, 0x9e, + 0x9b, 0x6e, 0x70, 0x6e, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7b, 0x7e, 0x7b, 0xa6, + 0xa9, 0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xd6, 0xda, 0xd6, 0x8e, 0x91, + 0x8e, 0x58, 0x5a, 0x58, 0x5a, 0x5c, 0x5a, 0x72, + 0x74, 0x72, 0x6f, 0x71, 0x6f, 0x5c, 0x5e, 0x5c, + 0x53, 0x54, 0x53, 0x90, 0x93, 0x90, 0xed, 0xf0, + 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x90, 0x93, 0x90, 0x64, 0x67, 0x64, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbb, 0xbe, 0xbb, 0x56, + 0x58, 0x56, 0x82, 0x85, 0x82, 0xe4, 0xe8, 0xe4, + 0xda, 0xde, 0xda, 0x55, 0x58, 0x55, 0xa5, 0xa9, + 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, + 0xf5, 0x91, 0x94, 0x91, 0x5e, 0x60, 0x5e, 0xb1, + 0xb4, 0xb1, 0xf5, 0xf7, 0xf5, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, + 0xe4, 0xe0, 0x73, 0x76, 0x73, 0x9b, 0x9e, 0x9b, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xe1, 0xdd, + 0x64, 0x67, 0x64, 0xb8, 0xbc, 0xb8, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd7, 0xdb, 0xd7, 0x95, 0x98, 0x95, 0x5d, + 0x5f, 0x5d, 0x6a, 0x6d, 0x6a, 0xa7, 0xaa, 0xa7, + 0xd5, 0xd9, 0xd5, 0xff, 0xff, 0xff, 0xf9, 0xfa, + 0xf9, 0xd6, 0xda, 0xd6, 0xa5, 0xa8, 0xa5, 0x55, + 0x57, 0x55, 0xa1, 0xa4, 0xa1, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbc, 0xbf, 0xbc, 0x53, + 0x55, 0x53, 0xd2, 0xd6, 0xd2, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xca, 0xcd, 0xca, + 0x66, 0x69, 0x66, 0x75, 0x78, 0x75, 0xe1, 0xe4, + 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, + 0x93, 0x90, 0x6e, 0x70, 0x6e, 0xd4, 0xd8, 0xd4, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe4, 0xe1, + 0xa1, 0xa4, 0xa1, 0x57, 0x59, 0x57, 0x94, 0x96, + 0x94, 0xe4, 0xe8, 0xe4, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xc5, 0xc8, 0xc5, 0x67, 0x69, + 0x67, 0xc3, 0xc6, 0xc3, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd2, 0xd6, 0xd2, 0x55, 0x57, 0x55, 0xbf, + 0xc3, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe9, 0xec, 0xe9, 0xc5, + 0xc9, 0xc5, 0x9b, 0x9e, 0x9b, 0x6e, 0x70, 0x6e, + 0x6d, 0x6f, 0x6d, 0xa1, 0xa4, 0xa1, 0xdd, 0xe1, + 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x8e, 0x90, 0x8e, 0x6e, 0x70, + 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xe4, 0xe0, 0x5b, 0x5d, 0x5b, 0x9a, 0x9c, + 0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, + 0xf5, 0x72, 0x74, 0x72, 0x7d, 0x7f, 0x7d, 0xd8, + 0xdb, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xd4, 0xd8, 0xd4, 0x61, 0x63, + 0x61, 0x9d, 0xa0, 0x9d, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa3, + 0xa7, 0xa3, 0x61, 0x63, 0x61, 0x79, 0x7b, 0x79, + 0xd5, 0xd8, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9a, + 0x9d, 0x9a, 0x73, 0x76, 0x73, 0xe0, 0xe4, 0xe0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xc6, 0xc3, + 0x59, 0x5b, 0x59, 0xd0, 0xd4, 0xd0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0xe9, 0xec, + 0xe9, 0xdc, 0xe0, 0xdc, 0xdb, 0xdf, 0xdb, 0xdb, + 0xdf, 0xdb, 0xdb, 0xdf, 0xdb, 0xdb, 0xdf, 0xdb, + 0xd8, 0xdc, 0xd8, 0xcd, 0xd0, 0xcd, 0xca, 0xcd, + 0xca, 0xca, 0xcd, 0xca, 0xca, 0xcd, 0xca, 0xca, + 0xcd, 0xca, 0xd0, 0xd4, 0xd0, 0xdb, 0xdf, 0xdb, + 0xdb, 0xdf, 0xdb, 0xdb, 0xdf, 0xdb, 0xdb, 0xdf, + 0xdb, 0xdb, 0xdf, 0xdb, 0xdb, 0xdf, 0xdb, 0xdb, + 0xdf, 0xdb, 0xdb, 0xdf, 0xdb, 0xce, 0xd2, 0xce, + 0xc9, 0xcc, 0xc9, 0xbc, 0xbf, 0xbc, 0xb5, 0xb9, + 0xb5, 0xaa, 0xad, 0xaa, 0xa7, 0xaa, 0xa7, 0xa4, + 0xa7, 0xa4, 0x90, 0x93, 0x90, 0x75, 0x77, 0x75, + 0x68, 0x6a, 0x68, 0x5b, 0x5d, 0x5b, 0x6d, 0x70, + 0x6d, 0xa0, 0xa3, 0xa0, 0xd3, 0xd6, 0xd3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, + 0xb6, 0xb3, 0x4b, 0x4c, 0x4b, 0xe0, 0xe3, 0xe0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa3, + 0xa6, 0xa3, 0x5f, 0x61, 0x5f, 0xd1, 0xd4, 0xd1, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd4, + 0xd8, 0xd4, 0x85, 0x88, 0x85, 0x77, 0x79, 0x77, + 0xd9, 0xdd, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xa1, 0xa4, 0xa1, 0x60, 0x62, 0x60, + 0xdd, 0xe1, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xcf, + 0xcc, 0x71, 0x73, 0x71, 0x5c, 0x5d, 0x5c, 0x8b, + 0x8e, 0x8b, 0xbb, 0xbe, 0xbb, 0xdb, 0xdf, 0xdb, + 0xe2, 0xe5, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xe0, 0xe3, 0xe0, 0xdc, 0xe0, 0xdc, 0xdc, + 0xe0, 0xdc, 0xcd, 0xd1, 0xcd, 0xbc, 0xbf, 0xbc, + 0xaf, 0xb3, 0xaf, 0x5f, 0x60, 0x5f, 0x9c, 0x9e, + 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xab, 0xae, 0xab, 0x4b, 0x4d, 0x4b, 0x95, + 0x98, 0x95, 0x95, 0x98, 0x95, 0x84, 0x86, 0x84, + 0x7a, 0x7d, 0x7a, 0x7f, 0x81, 0x7f, 0x81, 0x83, + 0x81, 0x80, 0x83, 0x80, 0x73, 0x75, 0x73, 0x6d, + 0x6f, 0x6d, 0x65, 0x67, 0x65, 0x5a, 0x5c, 0x5a, + 0x5c, 0x5f, 0x5c, 0x63, 0x66, 0x63, 0x63, 0x66, + 0x63, 0x63, 0x66, 0x63, 0x67, 0x6a, 0x67, 0x6c, + 0x6e, 0x6c, 0x6c, 0x6e, 0x6c, 0x6c, 0x6e, 0x6c, + 0x6c, 0x6e, 0x6c, 0x6a, 0x6c, 0x6a, 0x64, 0x66, + 0x64, 0x6d, 0x70, 0x6d, 0x65, 0x67, 0x65, 0x63, + 0x66, 0x63, 0x63, 0x66, 0x63, 0x63, 0x66, 0x63, + 0x63, 0x66, 0x63, 0x63, 0x66, 0x63, 0x65, 0x67, + 0x65, 0x62, 0x64, 0x62, 0x65, 0x67, 0x65, 0x62, + 0x63, 0x62, 0x5d, 0x5e, 0x5d, 0x5a, 0x5c, 0x5a, + 0x64, 0x66, 0x64, 0x6d, 0x70, 0x6d, 0x84, 0x86, + 0x84, 0x8a, 0x8d, 0x8a, 0xa2, 0xa5, 0xa2, 0xc7, + 0xcb, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xcb, 0xcf, 0xcb, 0x57, 0x59, + 0x57, 0xd6, 0xda, 0xd6, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0x6b, 0x6e, + 0x6b, 0x73, 0x75, 0x73, 0xbf, 0xc2, 0xbf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbc, 0xbf, 0xbc, 0x5e, 0x5f, 0x5e, 0x65, 0x67, + 0x65, 0xd8, 0xdc, 0xd8, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0xde, + 0xda, 0x61, 0x62, 0x61, 0xaf, 0xb2, 0xaf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, + 0xa1, 0xa4, 0xa1, 0x6b, 0x6e, 0x6b, 0x60, 0x61, + 0x60, 0x64, 0x66, 0x64, 0x6e, 0x70, 0x6e, 0x86, + 0x89, 0x86, 0x94, 0x97, 0x94, 0x94, 0x96, 0x94, + 0x94, 0x96, 0x94, 0x91, 0x94, 0x91, 0x91, 0x94, + 0x91, 0x91, 0x94, 0x91, 0x93, 0x96, 0x93, 0x92, + 0x95, 0x92, 0x84, 0x86, 0x84, 0x68, 0x6b, 0x68, + 0x66, 0x68, 0x66, 0x6e, 0x70, 0x6e, 0x6a, 0x6d, + 0x6a, 0x60, 0x62, 0x60, 0x50, 0x52, 0x50, 0x4b, + 0x4c, 0x4b, 0xc7, 0xcb, 0xc7, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0x99, 0x96, + 0x43, 0x44, 0x43, 0x6f, 0x72, 0x6f, 0x76, 0x79, + 0x76, 0x76, 0x78, 0x76, 0x75, 0x78, 0x75, 0x83, + 0x86, 0x83, 0x8a, 0x8c, 0x8a, 0x94, 0x97, 0x94, + 0xa5, 0xa8, 0xa5, 0xac, 0xaf, 0xac, 0xab, 0xae, + 0xab, 0xb2, 0xb5, 0xb2, 0xb8, 0xbb, 0xb8, 0xbf, + 0xc3, 0xbf, 0xbf, 0xc3, 0xbf, 0xbf, 0xc3, 0xbf, + 0xc6, 0xca, 0xc6, 0xd4, 0xd8, 0xd4, 0xd7, 0xda, + 0xd7, 0xd7, 0xda, 0xd7, 0xd7, 0xda, 0xd7, 0xd5, + 0xd8, 0xd5, 0xc9, 0xcc, 0xc9, 0xca, 0xcd, 0xca, + 0xc1, 0xc4, 0xc1, 0xbf, 0xc3, 0xbf, 0xbf, 0xc3, + 0xbf, 0xbf, 0xc3, 0xbf, 0xbf, 0xc3, 0xbf, 0xbf, + 0xc3, 0xbf, 0xc1, 0xc4, 0xc1, 0xc7, 0xcb, 0xc7, + 0xd0, 0xd3, 0xd0, 0xd7, 0xda, 0xd7, 0xd7, 0xda, + 0xd7, 0xd9, 0xdd, 0xd9, 0xde, 0xe2, 0xde, 0xe4, + 0xe8, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, + 0xd6, 0xd2, 0x5a, 0x5c, 0x5a, 0xcb, 0xcf, 0xcb, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xc1, 0xc5, 0xc1, 0x70, 0x72, 0x70, + 0x58, 0x5a, 0x58, 0x7a, 0x7c, 0x7a, 0xa5, 0xa8, + 0xa5, 0x93, 0x97, 0x93, 0x4f, 0x51, 0x4f, 0x38, + 0x39, 0x38, 0x63, 0x65, 0x63, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x92, 0x90, + 0x6b, 0x6d, 0x6b, 0xe1, 0xe4, 0xe1, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, + 0xe1, 0xdd, 0xc9, 0xcc, 0xc9, 0xa1, 0xa4, 0xa1, + 0x99, 0x9b, 0x99, 0x97, 0x9a, 0x97, 0x81, 0x84, + 0x81, 0x7f, 0x81, 0x7f, 0x7f, 0x81, 0x7f, 0x73, + 0x76, 0x73, 0x73, 0x76, 0x73, 0x73, 0x76, 0x73, + 0x7c, 0x7e, 0x7c, 0x87, 0x8a, 0x87, 0x99, 0x9c, + 0x99, 0x99, 0x9c, 0x99, 0xa4, 0xa7, 0xa4, 0xb1, + 0xb4, 0xb1, 0xc3, 0xc7, 0xc3, 0xc3, 0xc6, 0xc3, + 0x70, 0x73, 0x70, 0x7b, 0x7d, 0x7b, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x82, 0x85, 0x82, 0x7d, 0x80, 0x7d, 0xdf, + 0xe3, 0xdf, 0xf1, 0xf3, 0xf1, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xba, 0xbe, 0xba, 0x52, 0x54, + 0x52, 0xdb, 0xdf, 0xdb, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc9, 0xcc, 0xc9, 0x87, + 0x8a, 0x87, 0x63, 0x65, 0x63, 0x52, 0x54, 0x52, + 0x72, 0x74, 0x72, 0xa5, 0xa8, 0xa5, 0x4e, 0x50, + 0x4e, 0xd9, 0xdd, 0xd9, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd9, 0xdc, 0xd9, 0x53, 0x55, 0x53, 0xa8, + 0xab, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xc4, 0xc8, 0xc4, 0x55, 0x58, 0x55, 0xbc, + 0xbf, 0xbc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xdd, 0xe1, 0xdd, 0x70, 0x73, 0x70, + 0xa5, 0xa8, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xb8, 0xbb, 0xb8, 0x6b, + 0x6d, 0x6b, 0x7e, 0x81, 0x7e, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd6, 0xda, + 0xd6, 0x7b, 0x7e, 0x7b, 0x7d, 0x7f, 0x7d, 0xc3, + 0xc7, 0xc3, 0x52, 0x54, 0x52, 0xc5, 0xc9, 0xc5, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x77, 0x7a, 0x77, 0x75, 0x78, 0x75, 0xf5, 0xf7, + 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0x99, 0x96, + 0x6c, 0x6e, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0xd1, + 0xce, 0x68, 0x6a, 0x68, 0xc0, 0xc3, 0xc0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xd4, 0xd7, 0xd4, 0x90, 0x92, 0x90, + 0x5b, 0x5d, 0x5b, 0x81, 0x84, 0x81, 0xd6, 0xd9, + 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xda, 0xde, 0xda, 0x5e, 0x60, 0x5e, + 0xb4, 0xb7, 0xb4, 0xde, 0xe1, 0xde, 0x58, 0x5a, + 0x58, 0x9e, 0xa1, 0x9e, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa7, 0xaa, 0xa7, 0x59, + 0x5b, 0x59, 0xcf, 0xd3, 0xcf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0xdc, + 0xd9, 0x6a, 0x6c, 0x6a, 0x9a, 0x9c, 0x9a, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xb2, 0xb5, 0xb2, 0x69, 0x6b, 0x69, + 0xd3, 0xd7, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0xf7, 0xf5, 0x9b, 0x9e, 0x9b, 0x60, 0x62, + 0x60, 0x6b, 0x6e, 0x6b, 0xb8, 0xbb, 0xb8, 0xed, + 0xf0, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, 0xa3, + 0xa0, 0x5b, 0x5d, 0x5b, 0xe5, 0xe8, 0xe5, 0xec, + 0xf0, 0xec, 0x73, 0x75, 0x73, 0x92, 0x95, 0x92, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd4, 0xd7, 0xd4, 0x5d, 0x5e, 0x5d, 0x9f, 0xa2, + 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x9a, 0x9d, 0x9a, 0x64, 0x66, 0x64, + 0xd3, 0xd6, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8b, 0x8d, + 0x8b, 0x73, 0x75, 0x73, 0xf5, 0xf7, 0xf5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xcc, 0xd0, 0xcc, 0x74, 0x76, 0x74, 0x62, + 0x64, 0x62, 0xa1, 0xa4, 0xa1, 0xe0, 0xe4, 0xe0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, + 0xfa, 0xf9, 0x76, 0x78, 0x76, 0x8c, 0x8e, 0x8c, + 0xf6, 0xfa, 0xf6, 0xf4, 0xf8, 0xf4, 0x91, 0x94, + 0x91, 0x82, 0x85, 0x82, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x82, + 0x85, 0x82, 0x75, 0x78, 0x75, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xe9, 0xec, 0xe9, 0x61, 0x63, + 0x61, 0x95, 0x98, 0x95, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x75, 0x77, 0x75, 0x87, 0x8a, 0x87, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf1, 0xf3, 0xf1, 0x7c, 0x7f, 0x7c, + 0x68, 0x6a, 0x68, 0xd8, 0xdb, 0xd8, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xd8, 0xdc, 0xd8, 0x61, 0x63, + 0x61, 0xae, 0xb0, 0xae, 0xf8, 0xfc, 0xf8, 0xf4, + 0xf8, 0xf4, 0x91, 0x95, 0x91, 0x79, 0x7b, 0x79, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xb5, 0xb8, 0xb5, 0x56, 0x59, + 0x56, 0xdd, 0xe1, 0xdd, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, + 0xaf, 0xac, 0x59, 0x5c, 0x59, 0xce, 0xd2, 0xce, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0x5d, 0x5f, + 0x5d, 0xa5, 0xa8, 0xa5, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0xc9, + 0xc6, 0x60, 0x62, 0x60, 0xb6, 0xba, 0xb6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb4, + 0xb7, 0xb4, 0x5f, 0x61, 0x5f, 0xd4, 0xd7, 0xd4, + 0xf8, 0xfc, 0xf8, 0xe1, 0xe5, 0xe1, 0x6c, 0x6e, + 0x6c, 0x9f, 0xa2, 0x9f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd4, + 0xd8, 0xd4, 0x57, 0x59, 0x57, 0xbc, 0xc0, 0xbc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd7, 0xdb, 0xd7, 0x61, 0x62, 0x61, 0x9e, 0xa1, + 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, + 0xc7, 0xc3, 0x56, 0x58, 0x56, 0xce, 0xd1, 0xce, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xa0, 0xa3, 0xa0, 0x5a, 0x5b, 0x5a, + 0xdc, 0xdf, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x93, 0x97, 0x93, 0x70, 0x72, + 0x70, 0xe4, 0xe7, 0xe4, 0xef, 0xf3, 0xef, 0xa2, + 0xa6, 0xa2, 0x55, 0x57, 0x55, 0xd5, 0xd8, 0xd5, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6e, 0x71, + 0x6e, 0x97, 0x9a, 0x97, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa1, 0xa4, 0xa1, 0x5b, + 0x5d, 0x5b, 0xdb, 0xdf, 0xdb, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xa0, 0xa3, 0xa0, 0x69, 0x6b, + 0x69, 0xe4, 0xe8, 0xe4, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa4, 0xa7, + 0xa4, 0x5c, 0x5e, 0x5c, 0xdc, 0xdf, 0xdc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x74, + 0x77, 0x74, 0x85, 0x87, 0x85, 0xec, 0xf0, 0xec, + 0xbe, 0xc2, 0xbe, 0x55, 0x58, 0x55, 0x8a, 0x8d, + 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x97, 0x9a, 0x97, 0x84, 0x86, 0x84, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xde, 0xdb, + 0x6b, 0x6d, 0x6b, 0x8d, 0x90, 0x8d, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7e, + 0x81, 0x7e, 0x83, 0x86, 0x83, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xb8, 0xbc, 0xb8, 0x68, 0x6a, 0x68, + 0xd8, 0xdc, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x5b, 0x5d, 0x5b, 0x9b, 0x9e, + 0x9b, 0xbf, 0xc3, 0xbf, 0x60, 0x62, 0x60, 0x93, + 0x96, 0x93, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0xaa, + 0xa7, 0x69, 0x6b, 0x69, 0xed, 0xf0, 0xed, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x9c, 0x9f, 0x9c, 0x64, 0x65, 0x64, 0xd2, + 0xd5, 0xd2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xe2, 0xdf, 0x64, 0x66, 0x64, 0xa4, 0xa7, + 0xa4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0xd3, + 0xd0, 0x66, 0x68, 0x66, 0xc3, 0xc7, 0xc3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xda, 0xdd, 0xda, 0x4a, + 0x4c, 0x4a, 0x82, 0x85, 0x82, 0x66, 0x69, 0x66, + 0x93, 0x95, 0x93, 0xed, 0xf0, 0xed, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xa7, 0xaa, 0xa7, 0x65, 0x66, 0x65, + 0xe4, 0xe8, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xed, 0xf0, 0xed, 0x63, 0x65, 0x63, + 0x93, 0x96, 0x93, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc7, 0xcb, 0xc7, 0x55, + 0x57, 0x55, 0xc8, 0xcb, 0xc8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xd3, 0xd7, 0xd3, 0x5a, 0x5c, 0x5a, + 0xb1, 0xb5, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc1, 0xc5, 0xc1, 0x39, 0x3a, 0x39, 0x43, 0x45, + 0x43, 0x83, 0x85, 0x83, 0xf9, 0xfa, 0xf9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0xaa, + 0xa7, 0x68, 0x6b, 0x68, 0xed, 0xf0, 0xed, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc2, 0xc5, + 0xc2, 0x5e, 0x60, 0x5e, 0xcd, 0xd1, 0xcd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0xaa, 0xa7, 0x5b, 0x5d, 0x5b, 0xf1, 0xf3, + 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xe2, + 0xdf, 0x6f, 0x71, 0x6f, 0xac, 0xaf, 0xac, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe3, 0xe0, 0xb0, + 0xb3, 0xb0, 0xb0, 0xb3, 0xb0, 0xf9, 0xfa, 0xf9, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x91, 0x93, 0x91, 0x82, 0x85, 0x82, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xe0, 0xe4, 0xe0, 0xc3, 0xc6, 0xc3, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x9d, 0xa0, 0x9d, 0x8f, + 0x92, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0x83, 0x81, + 0x82, 0x84, 0x82, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x74, 0x76, + 0x74, 0x8f, 0x92, 0x8f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd5, 0xd9, 0xd5, 0xdc, 0xe0, 0xdc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x9c, 0xa0, 0x9c, 0x65, 0x67, 0x65, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, + 0xf7, 0xf5, 0x6b, 0x6e, 0x6b, 0xab, 0xae, 0xab, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc6, 0xca, 0xc6, + 0x58, 0x59, 0x58, 0xd1, 0xd5, 0xd1, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xcd, 0xd0, 0xcd, 0x54, 0x56, + 0x54, 0xcd, 0xd1, 0xcd, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0xfc, 0xfc, 0x70, 0x72, 0x70, 0x99, + 0x9c, 0x99, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, + 0xc3, 0xc0, 0x57, 0x58, 0x57, 0xdb, 0xdf, 0xdb, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x98, 0x9b, 0x98, 0x64, 0x66, 0x64, 0xe9, 0xec, + 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xa6, 0xa9, 0xa6, 0x62, 0x64, + 0x62, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc8, 0xcb, 0xc8, 0x52, + 0x54, 0x52, 0xc5, 0xc9, 0xc5, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8a, + 0x8c, 0x8a, 0x72, 0x75, 0x72, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x67, 0x6a, 0x67, 0x93, 0x95, + 0x93, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xf3, 0xf1, 0x71, 0x73, 0x71, 0x8c, 0x8e, + 0x8c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8c, + 0x8e, 0x8c, 0x6d, 0x6f, 0x6d, 0xe4, 0xe8, 0xe4, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdd, 0xe1, 0xdd, 0x66, + 0x69, 0x66, 0xa7, 0xaa, 0xa7, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xc3, 0xc6, 0xc3, 0x60, 0x62, + 0x60, 0xc5, 0xc9, 0xc5, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd2, 0xd6, 0xd2, 0x6a, 0x6c, 0x6a, 0xc0, 0xc4, + 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xe1, 0xe4, + 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, + 0xe1, 0xdd, 0x65, 0x67, 0x65, 0x93, 0x96, 0x93, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc6, 0xca, 0xc6, 0x62, + 0x64, 0x62, 0xc2, 0xc6, 0xc2, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe4, 0xe0, 0x8d, + 0x90, 0x8d, 0x71, 0x74, 0x71, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xcc, 0xd0, 0xcc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x98, 0x9b, + 0x98, 0x68, 0x6a, 0x68, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x97, 0x9b, 0x97, 0x65, 0x68, 0x65, 0xd6, 0xda, + 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xe9, 0xec, 0xe9, 0xbf, 0xc3, 0xbf, + 0x77, 0x79, 0x77, 0x36, 0x37, 0x36, 0x37, 0x38, + 0x37, 0xe1, 0xe5, 0xe1, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xaf, 0xb2, 0xaf, 0x58, + 0x5a, 0x58, 0xb0, 0xb2, 0xb0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xc5, 0xc8, 0xc5, 0x4f, 0x51, 0x4f, + 0xc5, 0xc8, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xdf, 0xe3, 0xdf, 0x59, 0x5b, 0x59, 0x9f, + 0xa2, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xe3, 0xdf, 0xa3, 0xa6, 0xa3, 0x67, 0x6a, + 0x67, 0x5d, 0x5e, 0x5d, 0x7f, 0x82, 0x7f, 0x78, + 0x7a, 0x78, 0x4a, 0x4b, 0x4a, 0xe9, 0xec, 0xe9, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x60, 0x62, 0x60, 0x41, 0x42, 0x41, 0x53, 0x55, + 0x53, 0xce, 0xd1, 0xce, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, + 0xf5, 0x69, 0x6c, 0x69, 0x87, 0x89, 0x87, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xad, 0xaa, + 0x60, 0x61, 0x60, 0xd8, 0xdc, 0xd8, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xca, 0xcd, + 0xca, 0xa1, 0xa3, 0xa1, 0x6e, 0x70, 0x6e, 0x5f, + 0x62, 0x5f, 0x90, 0x92, 0x90, 0xcd, 0xd0, 0xcd, + 0xff, 0xff, 0xff, 0x9f, 0xa2, 0x9f, 0x66, 0x69, + 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xc3, 0xc7, 0xc3, 0x52, 0x53, 0x52, 0xa7, + 0xaa, 0xa7, 0x6f, 0x72, 0x6f, 0x76, 0x78, 0x76, + 0xe4, 0xe8, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xa2, 0xa6, 0xa2, + 0x57, 0x59, 0x57, 0xda, 0xde, 0xda, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf3, + 0xf1, 0x70, 0x72, 0x70, 0x92, 0x95, 0x92, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc9, 0xcc, 0xc9, 0x92, + 0x95, 0x92, 0x5b, 0x5d, 0x5b, 0x6a, 0x6c, 0x6a, + 0x8e, 0x91, 0x8e, 0xce, 0xd2, 0xce, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x89, + 0x8c, 0x89, 0x7a, 0x7c, 0x7a, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x8b, 0x8e, 0x8b, + 0x79, 0x7b, 0x79, 0xf9, 0xfa, 0xf9, 0xc8, 0xcc, + 0xc8, 0x5a, 0x5c, 0x5a, 0xa4, 0xa7, 0xa4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd9, 0xdd, 0xd9, 0x57, 0x59, 0x57, 0xb7, + 0xba, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xbf, 0xc2, 0xbf, 0x56, 0x58, 0x56, + 0xd1, 0xd5, 0xd1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, + 0xe1, 0xe5, 0xe1, 0xe1, 0xe5, 0xe1, 0xe1, 0xe5, + 0xe1, 0xe4, 0xe8, 0xe4, 0xf5, 0xf7, 0xf5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdc, 0xe0, 0xdc, 0xc5, + 0xc9, 0xc5, 0x9a, 0x9d, 0x9a, 0x69, 0x6b, 0x69, + 0x5d, 0x5f, 0x5d, 0x6d, 0x6f, 0x6d, 0xb0, 0xb4, + 0xb0, 0xe0, 0xe4, 0xe0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xf3, 0xf1, 0x77, 0x79, 0x77, 0x91, 0x95, + 0x91, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd3, + 0xcf, 0x58, 0x5a, 0x58, 0xb8, 0xbb, 0xb8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa8, 0xa5, + 0x5f, 0x60, 0x5f, 0xc5, 0xc8, 0xc5, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7c, 0x7f, 0x7c, 0x88, 0x8a, 0x88, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x92, + 0x8f, 0x68, 0x6a, 0x68, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, + 0xe2, 0xdf, 0xb0, 0xb4, 0xb0, 0xd9, 0xdc, 0xd9, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc0, 0xc3, 0xc0, 0xb7, 0xbb, 0xb7, 0x99, 0x9b, + 0x99, 0x82, 0x84, 0x82, 0x73, 0x76, 0x73, 0x73, + 0x76, 0x73, 0x73, 0x76, 0x73, 0x76, 0x78, 0x76, + 0x7b, 0x7d, 0x7b, 0x80, 0x82, 0x80, 0x84, 0x87, + 0x84, 0x82, 0x85, 0x82, 0x7d, 0x80, 0x7d, 0x8f, + 0x92, 0x8f, 0x9d, 0xa0, 0x9d, 0xae, 0xb1, 0xae, + 0xb6, 0xb9, 0xb6, 0xb5, 0xb8, 0xb5, 0xb5, 0xb8, + 0xb5, 0xb6, 0xb9, 0xb6, 0xbf, 0xc3, 0xbf, 0xc4, + 0xc7, 0xc4, 0xc8, 0xcb, 0xc8, 0xc8, 0xcb, 0xc8, + 0xc8, 0xcb, 0xc8, 0xc8, 0xcb, 0xc8, 0xc8, 0xcb, + 0xc8, 0xc8, 0xcb, 0xc8, 0xc8, 0xcb, 0xc8, 0xc8, + 0xcb, 0xc8, 0xc8, 0xcb, 0xc8, 0xc4, 0xc7, 0xc4, + 0xc1, 0xc4, 0xc1, 0xc1, 0xc4, 0xc1, 0xb7, 0xba, + 0xb7, 0xb5, 0xb8, 0xb5, 0xb6, 0xb9, 0xb6, 0xa3, + 0xa7, 0xa3, 0x8c, 0x8f, 0x8c, 0x81, 0x84, 0x81, + 0x64, 0x66, 0x64, 0x5e, 0x60, 0x5e, 0x45, 0x46, + 0x45, 0x63, 0x64, 0x63, 0xc1, 0xc4, 0xc1, 0xf5, + 0xf7, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd9, 0xdd, 0xd9, 0x69, + 0x6b, 0x69, 0xab, 0xae, 0xab, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xa1, 0xa4, 0xa1, 0x63, 0x65, 0x63, + 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xde, 0xe2, 0xde, 0x70, 0x72, 0x70, 0x70, + 0x72, 0x70, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xac, 0xaf, 0xac, 0x62, + 0x64, 0x62, 0xd2, 0xd5, 0xd2, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, + 0xe8, 0xe5, 0x69, 0x6b, 0x69, 0x88, 0x8b, 0x88, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x9d, 0xa0, 0x9d, 0x3b, 0x3d, + 0x3b, 0x9f, 0xa2, 0x9f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd5, 0xd8, 0xd5, 0x67, 0x69, 0x67, 0x8b, + 0x8e, 0x8b, 0x7c, 0x7f, 0x7c, 0x9e, 0xa1, 0x9e, + 0xab, 0xae, 0xab, 0xab, 0xae, 0xab, 0xab, 0xae, + 0xab, 0xab, 0xae, 0xab, 0xa4, 0xa7, 0xa4, 0x92, + 0x94, 0x92, 0x88, 0x8a, 0x88, 0x82, 0x84, 0x82, + 0x73, 0x75, 0x73, 0x77, 0x79, 0x77, 0x7c, 0x7e, + 0x7c, 0x78, 0x7b, 0x78, 0x69, 0x6b, 0x69, 0x63, + 0x65, 0x63, 0x5c, 0x5e, 0x5c, 0x50, 0x52, 0x50, + 0x5b, 0x5d, 0x5b, 0x60, 0x62, 0x60, 0x65, 0x67, + 0x65, 0x65, 0x67, 0x65, 0x65, 0x67, 0x65, 0x65, + 0x67, 0x65, 0x65, 0x67, 0x65, 0x64, 0x66, 0x64, + 0x50, 0x51, 0x50, 0x4d, 0x4e, 0x4d, 0x61, 0x63, + 0x61, 0x60, 0x62, 0x60, 0x5d, 0x5f, 0x5d, 0x5d, + 0x5f, 0x5d, 0x58, 0x5a, 0x58, 0x60, 0x62, 0x60, + 0x68, 0x6a, 0x68, 0x6b, 0x6e, 0x6b, 0x75, 0x77, + 0x75, 0x83, 0x86, 0x83, 0x9e, 0xa2, 0x9e, 0xc0, + 0xc4, 0xc0, 0x9e, 0xa1, 0x9e, 0x73, 0x76, 0x73, + 0xed, 0xf0, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xce, 0xd2, 0xce, 0x59, 0x5b, 0x59, 0xb5, 0xb8, + 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, 0x6e, 0x71, + 0x6e, 0x8c, 0x8f, 0x8c, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbd, 0xc0, 0xbd, 0x50, 0x52, 0x50, 0xad, 0xb1, + 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd1, 0xd5, 0xd1, 0x59, 0x5b, 0x59, 0xa5, 0xa8, + 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xce, 0xd1, 0xce, 0x63, 0x66, + 0x63, 0xbb, 0xbe, 0xbb, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe5, 0xe1, 0x59, + 0x5a, 0x59, 0x3a, 0x3b, 0x3a, 0x83, 0x86, 0x83, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0xcb, 0xc8, + 0x5b, 0x5e, 0x5b, 0xcf, 0xd2, 0xcf, 0xfc, 0xfc, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, + 0xde, 0xe2, 0xde, 0xdb, 0xde, 0xdb, 0xd8, 0xdb, + 0xd8, 0xd0, 0xd3, 0xd0, 0xd0, 0xd4, 0xd0, 0xd1, + 0xd4, 0xd1, 0xd1, 0xd4, 0xd1, 0xd1, 0xd4, 0xd1, + 0xd1, 0xd4, 0xd1, 0xd1, 0xd4, 0xd1, 0xd1, 0xd4, + 0xd1, 0xcb, 0xcf, 0xcb, 0x62, 0x64, 0x62, 0x76, + 0x78, 0x76, 0xc8, 0xcb, 0xc8, 0xd1, 0xd4, 0xd1, + 0xd1, 0xd4, 0xd1, 0xd1, 0xd4, 0xd1, 0xd4, 0xd7, + 0xd4, 0xd9, 0xdd, 0xd9, 0xdd, 0xe1, 0xdd, 0xe9, + 0xec, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0xcb, + 0xc8, 0x54, 0x56, 0x54, 0xcd, 0xd0, 0xcd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xca, 0xce, 0xca, 0x63, + 0x66, 0x63, 0xc4, 0xc7, 0xc4, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xae, + 0xb1, 0xae, 0x5f, 0x61, 0x5f, 0xca, 0xce, 0xca, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9b, + 0x9d, 0x9b, 0x60, 0x62, 0x60, 0xda, 0xde, 0xda, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x86, + 0x89, 0x86, 0x74, 0x77, 0x74, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, + 0xb0, 0xad, 0x67, 0x69, 0x67, 0xd9, 0xdd, 0xd9, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x96, 0x99, 0x96, 0x6b, 0x6d, 0x6b, 0x7f, 0x81, + 0x7f, 0x62, 0x64, 0x62, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xc8, 0xcb, 0xc8, 0x4d, 0x4f, 0x4d, 0xcb, + 0xce, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x61, 0x62, 0x61, 0x9a, 0x9d, 0x9a, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xe9, 0xec, 0xe9, 0x63, 0x65, 0x63, + 0xb9, 0xbc, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb9, 0xbd, 0xb9, 0x6c, 0x6f, 0x6c, 0xd6, 0xda, + 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7c, 0x7e, 0x7c, 0x87, 0x89, + 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, 0x5a, 0x5c, + 0x5a, 0xa4, 0xa7, 0xa4, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xbc, 0xbf, 0xbc, 0x58, 0x5a, + 0x58, 0xdc, 0xe0, 0xdc, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x88, 0x8b, 0x88, 0x79, 0x7b, + 0x79, 0xf2, 0xf3, 0xf2, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd1, 0xd5, 0xd1, 0x5d, 0x5f, 0x5d, 0xb0, + 0xb3, 0xb0, 0xbb, 0xbe, 0xbb, 0x53, 0x54, 0x53, + 0xd5, 0xd9, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0xcb, 0xc8, + 0x44, 0x46, 0x44, 0xc4, 0xc7, 0xc4, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfc, 0xfc, 0xfc, 0x5b, 0x5d, 0x5b, 0xa5, + 0xa8, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x67, 0x69, 0x67, 0x9a, 0x9d, 0x9a, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa2, 0xa5, 0xa2, 0x66, + 0x68, 0x66, 0xde, 0xe2, 0xde, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd8, 0xdb, 0xd8, 0x57, + 0x59, 0x57, 0xb5, 0xb8, 0xb5, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x8b, 0x8e, 0x8b, 0x79, 0x7c, 0x79, + 0xf5, 0xf7, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, + 0xe1, 0xdd, 0x60, 0x62, 0x60, 0xb1, 0xb4, 0xb1, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0x5e, + 0x5f, 0x5e, 0xa7, 0xaa, 0xa7, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0x96, 0x93, + 0x62, 0x63, 0x62, 0xe1, 0xe5, 0xe1, 0xda, 0xdd, + 0xda, 0x5e, 0x60, 0x5e, 0xb4, 0xb8, 0xb4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xca, 0xce, 0xca, 0x49, 0x4a, 0x49, 0xc4, + 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd3, 0xcf, + 0x51, 0x52, 0x51, 0xbd, 0xc0, 0xbd, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x7d, 0x7b, + 0x85, 0x87, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x98, 0x9b, 0x98, 0x6c, 0x6e, 0x6c, 0xe4, 0xe8, + 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa1, 0xa3, 0xa1, 0x6a, 0x6b, 0x6a, 0xe2, 0xe5, + 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0xc1, + 0xbe, 0x5b, 0x5d, 0x5b, 0xba, 0xbd, 0xba, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x91, 0x94, + 0x91, 0x73, 0x76, 0x73, 0xfc, 0xfc, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd0, 0xd3, 0xd0, 0x52, 0x54, 0x52, 0xc5, 0xc9, + 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xd0, + 0xcc, 0x62, 0x64, 0x62, 0xa3, 0xa6, 0xa3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x7b, 0x78, + 0x87, 0x8a, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, 0xd6, 0xd3, + 0x58, 0x5a, 0x58, 0xc4, 0xc7, 0xc4, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xbd, 0xc0, 0xbd, 0x4c, 0x4d, 0x4c, 0xcf, + 0xd2, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x95, 0x99, 0x95, 0x68, 0x6b, 0x68, 0xe0, + 0xe4, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x96, 0x99, 0x96, 0x80, + 0x83, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xdd, 0xe0, 0xdd, 0x5d, 0x5f, 0x5d, 0x9a, + 0x9d, 0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf9, 0xfa, 0xf9, 0x7b, 0x7e, 0x7b, + 0x73, 0x75, 0x73, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xc7, 0xcb, 0xc7, 0x4a, 0x4c, 0x4a, + 0xc6, 0xc9, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xab, 0xaf, 0xab, 0x5d, + 0x5f, 0x5d, 0xde, 0xe2, 0xde, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x95, 0x98, 0x95, 0x6a, 0x6c, 0x6a, + 0xd6, 0xd9, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xa0, 0xa4, 0xa0, 0x63, 0x65, 0x63, 0xe1, + 0xe5, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd7, 0xdb, 0xd7, 0x60, 0x61, 0x60, 0xc4, + 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xbb, 0xbe, 0xbb, + 0x5e, 0x60, 0x5e, 0xd9, 0xdc, 0xd9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0xb4, 0xb2, + 0x68, 0x6a, 0x68, 0xd5, 0xd9, 0xd5, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x82, 0x84, 0x82, 0x82, 0x84, 0x82, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0xbf, 0xbc, + 0x52, 0x54, 0x52, 0xce, 0xd2, 0xce, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xaf, 0xb3, 0xaf, 0x4b, 0x4d, 0x4b, 0xd8, + 0xdb, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x5f, 0x60, 0x5f, 0xa6, 0xa9, 0xa6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7e, 0x80, 0x7e, 0x8a, 0x8d, 0x8a, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xdf, 0xe3, 0xdf, 0x58, 0x5a, + 0x58, 0x9e, 0xa1, 0x9e, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xba, 0xbe, 0xba, + 0x55, 0x56, 0x55, 0xd4, 0xd7, 0xd4, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, + 0x67, 0x69, 0x67, 0xb7, 0xba, 0xb7, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xa9, 0xac, 0xa9, 0x65, 0x67, 0x65, 0xde, + 0xe2, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xc7, 0xca, 0xc7, 0x61, 0x62, 0x61, 0xc3, + 0xc6, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x79, 0x7b, 0x79, 0x90, + 0x93, 0x90, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x8f, 0x91, 0x8f, 0x76, 0x78, 0x76, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xe0, 0xdc, + 0x62, 0x64, 0x62, 0x99, 0x9c, 0x99, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x8a, 0x8c, 0x8a, + 0x7c, 0x7e, 0x7c, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd4, 0xd8, 0xd4, 0x57, 0x59, 0x57, 0xbe, + 0xc1, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, + 0xaa, 0xa7, 0x63, 0x65, 0x63, 0xdc, 0xdf, 0xdc, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xdf, 0xe3, 0xdf, 0x57, 0x58, 0x57, 0xb5, + 0xb8, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xe9, 0xec, 0xe9, 0x6d, 0x6f, 0x6d, 0xac, + 0xb0, 0xac, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0xaa, 0xa7, + 0x70, 0x72, 0x70, 0xf1, 0xf3, 0xf1, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0xd5, 0xd1, + 0x63, 0x65, 0x63, 0xb8, 0xbc, 0xb8, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x63, 0x66, 0x63, 0x91, 0x94, 0x91, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xdc, 0xdf, 0xdc, 0x6d, 0x6f, 0x6d, + 0xa5, 0xa9, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xab, 0xae, 0xab, 0x61, + 0x63, 0x61, 0xdd, 0xe1, 0xdd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xae, 0xb1, 0xae, 0x5f, 0x61, 0x5f, 0xd7, + 0xdb, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xb9, 0xbd, 0xb9, + 0x54, 0x56, 0x54, 0xdc, 0xdf, 0xdc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdc, 0xdf, 0xdc, 0x63, 0x65, 0x63, 0x98, 0x9b, + 0x98, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x6b, 0x6d, 0x6b, 0x95, 0x98, 0x95, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x76, 0x78, 0x76, 0xa6, 0xa9, 0xa6, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xb6, 0xb9, 0xb6, 0x5f, 0x61, 0x5f, 0xd9, + 0xdd, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd7, 0xdb, 0xd7, 0x6e, 0x70, 0x6e, 0xba, + 0xbd, 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x64, 0x66, 0x64, 0x9c, + 0x9f, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0xbf, + 0xbc, 0x64, 0x66, 0x64, 0xcd, 0xd0, 0xcd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0xdb, 0x55, 0x57, 0x55, 0xaf, 0xb2, + 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc2, 0xc6, 0xc2, + 0x55, 0x57, 0x55, 0xbb, 0xbe, 0xbb, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x91, 0x94, 0x91, 0x67, 0x6a, 0x67, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa2, 0xa5, 0xa2, 0x58, + 0x5a, 0x58, 0xdc, 0xdf, 0xdc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x89, 0x8c, 0x89, 0x76, + 0x78, 0x76, 0xf5, 0xf7, 0xf5, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x71, 0x73, 0x71, 0x95, + 0x98, 0x95, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0xd8, 0xd5, + 0x52, 0x54, 0x52, 0xb0, 0xb3, 0xb0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd3, 0xcf, + 0x63, 0x65, 0x63, 0xb9, 0xbc, 0xb9, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x67, 0x69, 0x67, 0xa2, 0xa5, 0xa2, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x98, 0x9b, 0x98, 0x6b, 0x6e, 0x6b, + 0xe1, 0xe5, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x84, + 0x87, 0x84, 0x7f, 0x81, 0x7f, 0xfc, 0xfc, 0xfc, + 0xff, 0xff, 0xff, 0xe5, 0xe8, 0xe5, 0xbc, 0xc0, + 0xbc, 0x67, 0x69, 0x67, 0x2e, 0x2e, 0x2e, 0x97, + 0x9a, 0x97, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0x76, 0x78, 0x76, + 0x8e, 0x91, 0x8e, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xd8, 0xdc, 0xd8, + 0x66, 0x69, 0x66, 0x93, 0x96, 0x93, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb3, 0xb6, 0xb3, 0x63, 0x65, 0x63, 0xd2, 0xd5, + 0xd2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x6b, 0x6d, 0x6b, 0x82, 0x84, 0x82, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x7b, 0x78, 0x7a, + 0x7d, 0x7a, 0xdd, 0xe0, 0xdd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xaa, 0xad, 0xaa, 0x5c, 0x5e, 0x5c, 0xca, + 0xcd, 0xca, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x6b, 0x6d, 0x6b, 0xb9, + 0xbd, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x72, 0x75, + 0x72, 0x8d, 0x90, 0x8d, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xb9, 0xbd, 0xb9, 0x5c, 0x5e, + 0x5c, 0xab, 0xae, 0xab, 0x97, 0x9a, 0x97, 0x69, + 0x6b, 0x69, 0x5c, 0x5e, 0x5c, 0x7e, 0x80, 0x7e, + 0x68, 0x69, 0x68, 0x6e, 0x71, 0x6e, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc, 0xe0, + 0xdc, 0x68, 0x6a, 0x68, 0xaf, 0xb2, 0xaf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xa2, 0xa5, 0xa2, 0x60, 0x62, 0x60, 0xce, + 0xd1, 0xce, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xce, 0xd1, 0xce, 0x62, + 0x64, 0x62, 0xb8, 0xbb, 0xb8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7a, 0x7d, 0x7a, 0x84, + 0x87, 0x84, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc3, 0xc6, 0xc3, 0x5e, 0x60, 0x5e, 0x8a, 0x8c, + 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x70, 0x72, 0x70, + 0x85, 0x87, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, + 0x61, 0x63, 0x61, 0xc4, 0xc8, 0xc4, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x67, 0x69, 0x67, 0xac, 0xaf, 0xac, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, + 0xe3, 0xdf, 0x69, 0x6a, 0x69, 0x42, 0x44, 0x42, + 0x62, 0x64, 0x62, 0x99, 0x9b, 0x99, 0xca, 0xcd, + 0xca, 0xe8, 0xec, 0xe8, 0xa6, 0xa9, 0xa6, 0x53, + 0x55, 0x53, 0xf5, 0xf7, 0xf5, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xc3, 0xc7, 0xc3, 0x66, 0x68, 0x66, + 0xcf, 0xd2, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xf9, 0xfa, 0xf9, 0x61, 0x63, 0x61, + 0x91, 0x94, 0x91, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe4, 0xe8, 0xe4, 0x6e, 0x70, 0x6e, 0x95, 0x98, + 0x95, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8c, 0x8e, 0x8c, 0x87, 0x89, 0x87, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, + 0xb2, 0xaf, 0x59, 0x5b, 0x59, 0xac, 0xaf, 0xac, + 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x99, 0x9c, + 0x99, 0x61, 0x63, 0x61, 0xcc, 0xd0, 0xcc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd6, 0xda, 0xd6, 0x56, 0x58, 0x56, 0xc3, + 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xd1, 0xd5, 0xd1, 0x50, 0x52, + 0x50, 0xc4, 0xc7, 0xc4, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x98, 0x9b, + 0x98, 0x44, 0x46, 0x44, 0xcb, 0xce, 0xcb, 0xf1, + 0xf5, 0xf1, 0xf7, 0xfb, 0xf7, 0xf7, 0xfb, 0xf7, + 0xcb, 0xcf, 0xcb, 0x57, 0x5a, 0x57, 0xd7, 0xda, + 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0xaa, + 0xa6, 0x68, 0x6b, 0x68, 0xdc, 0xe0, 0xdc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0xb5, + 0xb2, 0x59, 0x5b, 0x59, 0xd2, 0xd5, 0xd2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8c, + 0x8f, 0x8c, 0x6e, 0x71, 0x6e, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x91, 0x94, 0x91, 0x7e, + 0x81, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xdb, 0xdf, 0xdb, 0x5e, 0x60, + 0x5e, 0x3a, 0x3b, 0x3a, 0x86, 0x89, 0x86, 0xc1, + 0xc4, 0xc1, 0xde, 0xe2, 0xde, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd4, 0xd8, 0xd4, 0x8b, + 0x8e, 0x8b, 0x36, 0x38, 0x36, 0x7d, 0x80, 0x7d, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xd6, 0xd2, + 0x48, 0x4a, 0x48, 0x93, 0x96, 0x93, 0xb4, 0xb7, + 0xb4, 0xba, 0xbe, 0xba, 0xc6, 0xc9, 0xc6, 0x93, + 0x96, 0x93, 0x52, 0x54, 0x52, 0xd4, 0xd8, 0xd4, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xd4, 0xd7, 0xd4, 0x5a, 0x5c, 0x5a, + 0xc1, 0xc4, 0xc1, 0xef, 0xf3, 0xef, 0xd6, 0xda, + 0xd6, 0xed, 0xf1, 0xed, 0xe2, 0xe6, 0xe2, 0x60, + 0x62, 0x60, 0xaf, 0xb2, 0xaf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x8e, 0x91, 0x8e, 0x7c, 0x7f, 0x7c, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x7a, 0x7c, 0x7a, 0x8a, 0x8c, 0x8a, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xa0, 0xa3, 0xa0, 0x5e, 0x60, + 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0xaa, 0xa7, 0x67, 0x69, 0x67, 0xe1, 0xe5, + 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb5, + 0xb8, 0xb5, 0x4f, 0x50, 0x4f, 0x8d, 0x8f, 0x8d, + 0x6b, 0x6d, 0x6b, 0x57, 0x59, 0x57, 0x6d, 0x6f, + 0x6d, 0x92, 0x95, 0x92, 0xa5, 0xa8, 0xa5, 0xa7, + 0xaa, 0xa7, 0xa0, 0xa3, 0xa0, 0x8a, 0x8d, 0x8a, + 0x5d, 0x5f, 0x5d, 0x51, 0x53, 0x51, 0x6f, 0x72, + 0x6f, 0x69, 0x6b, 0x69, 0xdd, 0xe1, 0xdd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xca, 0xcd, 0xca, 0x30, 0x32, 0x30, 0x57, + 0x58, 0x57, 0x65, 0x67, 0x65, 0x68, 0x6a, 0x68, + 0x6d, 0x6f, 0x6d, 0x3c, 0x3d, 0x3c, 0x5e, 0x60, + 0x5e, 0xe9, 0xec, 0xe9, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7c, 0x7e, 0x7c, 0x89, 0x8c, 0x89, 0xb7, + 0xbb, 0xb7, 0x5d, 0x60, 0x5d, 0x93, 0x96, 0x93, + 0xca, 0xcd, 0xca, 0x75, 0x78, 0x75, 0x8d, 0x90, + 0x8d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x79, + 0x77, 0x82, 0x85, 0x82, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xc8, 0xcb, 0xc8, 0x56, 0x57, + 0x56, 0xc5, 0xc9, 0xc5, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, + 0xc7, 0xc3, 0x51, 0x53, 0x51, 0xcf, 0xd3, 0xcf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xb1, 0xb3, 0xb1, 0x4f, + 0x51, 0x4f, 0xd6, 0xda, 0xd6, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x96, 0x99, 0x96, 0x6c, 0x6f, + 0x6c, 0xb1, 0xb4, 0xb1, 0x82, 0x84, 0x82, 0xb2, + 0xb5, 0xb2, 0xa0, 0xa3, 0xa0, 0x81, 0x84, 0x81, + 0x65, 0x67, 0x65, 0x66, 0x69, 0x66, 0x71, 0x74, + 0x71, 0x82, 0x84, 0x82, 0x70, 0x73, 0x70, 0x73, + 0x76, 0x73, 0xb3, 0xb6, 0xb3, 0x59, 0x5b, 0x59, + 0xcb, 0xce, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0xcb, 0xc8, + 0x50, 0x53, 0x50, 0xb8, 0xbc, 0xb8, 0xd7, 0xda, + 0xd7, 0xd7, 0xda, 0xd7, 0xd2, 0xd5, 0xd2, 0x74, + 0x76, 0x74, 0x79, 0x7c, 0x79, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0xb5, 0xb2, + 0x58, 0x5a, 0x58, 0x73, 0x75, 0x73, 0x53, 0x55, + 0x53, 0x64, 0x67, 0x64, 0x57, 0x5a, 0x57, 0x46, + 0x48, 0x46, 0x6e, 0x70, 0x6e, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x73, 0x76, 0x73, 0x9c, 0x9f, 0x9c, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x98, + 0x9b, 0x98, 0x6e, 0x70, 0x6e, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, 0x63, 0x65, + 0x63, 0xab, 0xae, 0xab, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb8, 0xbb, 0xb8, 0x57, 0x59, 0x57, 0xd5, 0xd8, + 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, + 0x7d, 0x7b, 0x80, 0x81, 0x80, 0x95, 0x98, 0x95, + 0x76, 0x79, 0x76, 0xee, 0xf0, 0xee, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa8, 0xab, 0xa8, 0x6f, 0x71, 0x6f, 0xd1, 0xd5, + 0xd1, 0x5d, 0x5f, 0x5d, 0xa1, 0xa4, 0xa1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xc8, 0xcb, 0xc8, 0x5f, 0x62, 0x5f, 0xd4, + 0xd8, 0xd4, 0xf0, 0xf4, 0xf0, 0xf4, 0xf8, 0xf4, + 0xe8, 0xec, 0xe8, 0x73, 0x75, 0x73, 0x9a, 0x9d, + 0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xe1, 0xe5, 0xe1, 0x48, 0x4a, 0x48, 0x31, + 0x33, 0x31, 0x85, 0x87, 0x85, 0xe1, 0xe5, 0xe1, + 0xa1, 0xa4, 0xa1, 0x49, 0x4a, 0x49, 0x74, 0x76, + 0x74, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x66, 0x68, + 0x66, 0xaf, 0xb2, 0xaf, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xed, 0xf0, 0xed, 0x71, 0x73, 0x71, 0x91, 0x93, + 0x91, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x7f, 0x81, 0x7f, 0x83, 0x86, 0x83, + 0xf9, 0xfa, 0xf9, 0xdb, 0xdf, 0xdb, 0xae, 0xb1, + 0xae, 0x8d, 0x8f, 0x8d, 0x9f, 0xa2, 0x9f, 0x5c, + 0x5d, 0x5c, 0xc6, 0xc9, 0xc6, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xa6, 0xa9, 0xa6, 0x58, 0x5a, + 0x58, 0x5b, 0x5d, 0x5b, 0x92, 0x95, 0x92, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa8, 0xac, 0xa8, 0x68, + 0x6b, 0x68, 0xc8, 0xcb, 0xc8, 0x56, 0x58, 0x56, + 0x90, 0x93, 0x90, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xba, 0xbd, 0xba, + 0x5e, 0x61, 0x5e, 0xb4, 0xb7, 0xb4, 0x96, 0x98, + 0x96, 0xc9, 0xcc, 0xc9, 0xd9, 0xdd, 0xd9, 0x56, + 0x58, 0x56, 0xaf, 0xb2, 0xaf, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x6b, 0x6d, 0x6b, 0x20, 0x21, 0x20, 0xa5, 0xa8, + 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, + 0xd7, 0xd3, 0xd8, 0xdb, 0xd8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x5e, 0x5f, 0x5e, 0x91, 0x93, 0x91, + 0xdc, 0xe0, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd2, 0xcf, 0x5f, + 0x61, 0x5f, 0xb3, 0xb5, 0xb3, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa9, 0xac, + 0xa9, 0x40, 0x41, 0x40, 0x71, 0x74, 0x71, 0x60, + 0x61, 0x60, 0x5f, 0x61, 0x5f, 0x87, 0x89, 0x87, + 0xbd, 0xc0, 0xbd, 0x50, 0x52, 0x50, 0xa8, 0xab, + 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, + 0xe3, 0xdf, 0x85, 0x88, 0x85, 0x57, 0x59, 0x57, + 0xb9, 0xbc, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc3, 0xc6, 0xc3, 0x57, 0x59, 0x57, 0x61, 0x62, + 0x61, 0x41, 0x43, 0x41, 0x9e, 0xa1, 0x9e, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xa9, 0xac, 0xa9, 0x5a, 0x5c, 0x5a, 0x69, + 0x6b, 0x69, 0x35, 0x36, 0x35, 0x72, 0x75, 0x72, + 0xbc, 0xc0, 0xbc, 0x61, 0x62, 0x61, 0xd1, 0xd5, + 0xd1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x9d, 0xa0, 0x9d, 0x39, + 0x3a, 0x39, 0xb4, 0xb7, 0xb4, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x51, + 0x4f, 0x34, 0x35, 0x34, 0x54, 0x56, 0x54, 0x80, + 0x83, 0x80, 0xae, 0xb1, 0xae, 0xcc, 0xd0, 0xcc, + 0xab, 0xae, 0xab, 0x64, 0x67, 0x64, 0xd4, 0xd8, + 0xd4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xd1, 0xd4, 0xd1, 0x3a, 0x3b, 0x3a, + 0x6a, 0x6c, 0x6a, 0xb3, 0xb6, 0xb3, 0xe3, 0xe7, + 0xe3, 0xf5, 0xf9, 0xf5, 0xed, 0xf1, 0xed, 0x66, + 0x68, 0x66, 0x9c, 0x9f, 0x9c, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xf5, 0xf7, 0xf5, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, + 0xc6, 0xc3, 0xa9, 0xac, 0xa9, 0xb4, 0xb7, 0xb4, + 0xe5, 0xe8, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xa3, 0xa6, 0xa3, + 0x23, 0x24, 0x23, 0x4b, 0x4c, 0x4b, 0x9b, 0x9e, + 0x9b, 0x52, 0x54, 0x52, 0x66, 0x68, 0x66, 0x4b, + 0x4d, 0x4b, 0xe1, 0xe5, 0xe1, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdb, 0xdf, 0xdb, 0xbf, 0xc2, 0xbf, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x5d, 0x5f, 0x5d, 0x89, 0x8b, 0x89, + 0x9f, 0xa1, 0x9f, 0x70, 0x72, 0x70, 0x61, 0x63, + 0x61, 0x57, 0x59, 0x57, 0x4f, 0x51, 0x4f, 0x70, + 0x72, 0x70, 0xed, 0xf0, 0xed, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xf0, + 0xed, 0x56, 0x57, 0x56, 0xa9, 0xac, 0xa9, 0xf4, + 0xf8, 0xf4, 0xf7, 0xfb, 0xf7, 0xf7, 0xfb, 0xf7, + 0xf5, 0xf9, 0xf5, 0x77, 0x79, 0x77, 0x79, 0x7c, + 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x91, 0x93, 0x91, 0x19, 0x1a, 0x19, 0x8d, + 0x90, 0x8d, 0xf1, 0xf3, 0xf1, 0x89, 0x8d, 0x89, + 0x35, 0x36, 0x35, 0x4d, 0x4f, 0x4d, 0xfc, 0xfc, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x65, + 0x63, 0xb2, 0xb5, 0xb2, 0xf2, 0xf6, 0xf2, 0xe7, + 0xeb, 0xe7, 0xd7, 0xda, 0xd7, 0xb3, 0xb6, 0xb3, + 0x49, 0x4b, 0x49, 0x7e, 0x80, 0x7e, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x72, 0x74, 0x72, + 0x90, 0x92, 0x90, 0xe5, 0xe9, 0xe5, 0xb3, 0xb6, + 0xb3, 0xb3, 0xb7, 0xb3, 0xe7, 0xeb, 0xe7, 0x97, + 0x9b, 0x97, 0x6f, 0x72, 0x6f, 0xe0, 0xe4, 0xe0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0xaf, 0xac, + 0x64, 0x66, 0x64, 0xd2, 0xd6, 0xd2, 0xff, 0xff, + 0xff, 0xd2, 0xd5, 0xd2, 0x50, 0x52, 0x50, 0x65, + 0x67, 0x65, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x66, 0x68, 0x66, 0xaf, 0xb2, 0xaf, + 0xef, 0xf3, 0xef, 0xe5, 0xe9, 0xe5, 0xf4, 0xf8, + 0xf4, 0xed, 0xf1, 0xed, 0x67, 0x69, 0x67, 0xa9, + 0xad, 0xa9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x92, 0x94, 0x92, 0x70, 0x72, 0x70, 0xb9, + 0xbc, 0xb9, 0x3f, 0x40, 0x3f, 0x44, 0x45, 0x44, + 0x7e, 0x80, 0x7e, 0x98, 0x9a, 0x98, 0x58, 0x5a, + 0x58, 0xca, 0xcd, 0xca, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa5, 0xa8, 0xa5, 0xa7, 0xaa, 0xa7, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x69, 0x6b, + 0x69, 0xa1, 0xa4, 0xa1, 0xb9, 0xbc, 0xb9, 0x72, + 0x73, 0x72, 0xca, 0xcd, 0xca, 0xe0, 0xe4, 0xe0, + 0x57, 0x59, 0x57, 0xb7, 0xbb, 0xb7, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xb6, 0xb9, 0xb6, + 0x5d, 0x5f, 0x5d, 0x76, 0x78, 0x76, 0x56, 0x58, + 0x56, 0xa7, 0xaa, 0xa7, 0x6c, 0x6e, 0x6c, 0x42, + 0x44, 0x42, 0x47, 0x48, 0x47, 0xc1, 0xc5, 0xc1, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x77, 0x7a, 0x77, 0x8b, 0x8e, 0x8b, + 0x6a, 0x6c, 0x6a, 0x2a, 0x2a, 0x2a, 0x81, 0x83, + 0x81, 0xbf, 0xc3, 0xbf, 0x57, 0x59, 0x57, 0xca, + 0xcd, 0xca, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd3, 0xd6, 0xd3, 0x59, 0x5a, 0x59, 0x34, + 0x35, 0x34, 0x99, 0x9c, 0x99, 0xff, 0xff, 0xff, + 0xd4, 0xd7, 0xd4, 0x6a, 0x6d, 0x6a, 0x3a, 0x3c, + 0x3a, 0xa8, 0xab, 0xa8, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x75, 0x77, + 0x75, 0x4a, 0x4b, 0x4a, 0x4b, 0x4d, 0x4b, 0x95, + 0x98, 0x95, 0x5b, 0x5c, 0x5b, 0x78, 0x7a, 0x78, + 0x5a, 0x5c, 0x5a, 0xdd, 0xe0, 0xdd, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0xf3, 0xf2, + 0x67, 0x6a, 0x67, 0x31, 0x32, 0x31, 0xd4, 0xd7, + 0xd4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xc6, 0xc9, 0xc6, 0xe1, 0xe5, 0xe1, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x6a, 0x6d, 0x6a, 0x1e, 0x1f, 0x1e, + 0x7d, 0x7f, 0x7d, 0xde, 0xe2, 0xde, 0x76, 0x78, + 0x76, 0x30, 0x31, 0x30, 0x64, 0x65, 0x64, 0xed, + 0xf0, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa6, 0xaa, 0xa6, 0x7f, + 0x82, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x6b, + 0x6a, 0x37, 0x39, 0x37, 0xc1, 0xc4, 0xc1, 0xff, + 0xff, 0xff, 0xb2, 0xb6, 0xb2, 0x2c, 0x2d, 0x2c, + 0x7f, 0x81, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xbf, 0xc3, 0xbf, 0xaf, 0xb2, 0xaf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xba, 0xbd, 0xba, 0xd1, 0xd4, 0xd1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x28, 0x75, 0x75, 0x61, 0x79, 0x29, + 0x67, 0x65, 0x67, 0x6c, 0x2d, 0x32, 0x2e, 0x70, + 0x6e, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x98, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x64, 0x6b, 0x50, 0x00, 0x00, 0xd6, 0x98, + 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x10, + 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x68, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc5, 0xc9, 0xc5, 0xff, 0xd2, 0xd6, 0xd2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf9, 0xfa, 0xf9, 0xff, + 0x74, 0x77, 0x74, 0xff, 0x56, 0x58, 0x56, 0xff, + 0xc3, 0xc6, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x97, 0x9a, 0x97, 0xff, 0x21, 0x21, 0x21, 0xff, + 0x3c, 0x3d, 0x3c, 0xff, 0xaa, 0xad, 0xaa, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd1, 0xd4, 0xd1, 0xff, 0x8e, 0x91, 0x8e, 0xff, + 0xdd, 0xe1, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe9, 0xec, 0xe9, 0xff, 0x66, 0x68, 0x66, 0xff, + 0x27, 0x27, 0x27, 0xff, 0x43, 0x44, 0x43, 0xff, + 0x9e, 0xa2, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x96, 0x99, 0x96, 0xff, 0x1c, 0x1d, 0x1c, 0xff, + 0x8c, 0x8e, 0x8c, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xba, 0xbe, 0xba, 0xff, + 0x49, 0x4b, 0x49, 0xff, 0x5b, 0x5d, 0x5b, 0xff, + 0x49, 0x4a, 0x49, 0xff, 0xb0, 0xb3, 0xb0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8a, 0x8c, 0x8a, 0xff, 0x2d, 0x2e, 0x2d, 0xff, + 0x5b, 0x5d, 0x5b, 0xff, 0xdf, 0xe3, 0xdf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x6c, 0x6f, 0x6c, 0xff, 0x6e, 0x71, 0x6e, 0xff, + 0x87, 0x8a, 0x87, 0xff, 0x59, 0x5b, 0x59, 0xff, + 0xbf, 0xc2, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0xff, + 0x78, 0x7a, 0x78, 0xff, 0x5c, 0x5d, 0x5c, 0xff, + 0x4b, 0x4d, 0x4b, 0xff, 0xc8, 0xcb, 0xc8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xac, 0xaf, 0xac, 0xff, 0x5a, 0x5c, 0x5a, 0xff, + 0xc1, 0xc5, 0xc1, 0xff, 0x8a, 0x8d, 0x8a, 0xff, + 0x60, 0x62, 0x60, 0xff, 0xcd, 0xd0, 0xcd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xe2, 0xdf, 0xff, + 0x60, 0x62, 0x60, 0xff, 0x82, 0x85, 0x82, 0xff, + 0x56, 0x58, 0x56, 0xff, 0xa9, 0xac, 0xa9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd9, 0xdd, 0xd9, 0xff, 0x5f, 0x61, 0x5f, 0xff, + 0x97, 0x9a, 0x97, 0xff, 0xd5, 0xd8, 0xd5, 0xff, + 0x66, 0x68, 0x66, 0xff, 0x86, 0x89, 0x86, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, 0xff, + 0x68, 0x6a, 0x68, 0xff, 0x9d, 0xa0, 0x9d, 0xff, + 0x6a, 0x6c, 0x6a, 0xff, 0x90, 0x93, 0x90, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x8e, 0x90, 0x8e, 0xff, + 0x6e, 0x71, 0x6e, 0xff, 0xec, 0xf0, 0xec, 0xff, + 0xa8, 0xab, 0xa8, 0xff, 0x56, 0x59, 0x56, 0xff, + 0xde, 0xe2, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, 0xff, + 0x6f, 0x71, 0x6f, 0xff, 0xaf, 0xb2, 0xaf, 0xff, + 0x75, 0x78, 0x75, 0xff, 0x73, 0x76, 0x73, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc5, 0xc9, 0xc5, 0xff, + 0x51, 0x54, 0x51, 0xff, 0xc8, 0xcc, 0xc8, 0xff, + 0xde, 0xe2, 0xde, 0xff, 0x64, 0x66, 0x64, 0xff, + 0xa9, 0xac, 0xa9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xce, 0xd2, 0xce, 0xff, + 0x6a, 0x6c, 0x6a, 0xff, 0xc3, 0xc7, 0xc3, 0xff, + 0x79, 0x7b, 0x79, 0xff, 0x74, 0x76, 0x74, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xed, 0xf0, 0xed, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x8d, 0x8f, 0x8d, 0xff, + 0xeb, 0xef, 0xeb, 0xff, 0x98, 0x9b, 0x98, 0xff, + 0x69, 0x6b, 0x69, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xb9, 0xbc, 0xb9, 0xff, + 0x65, 0x67, 0x65, 0xff, 0xd0, 0xd3, 0xd0, 0xff, + 0x7c, 0x7e, 0x7c, 0xff, 0x8c, 0x8e, 0x8c, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9a, 0x9d, 0x9a, 0xff, 0x60, 0x61, 0x60, 0xff, + 0xe3, 0xe6, 0xe3, 0xff, 0xd4, 0xd8, 0xd4, 0xff, + 0x57, 0x59, 0x57, 0xff, 0xc4, 0xc7, 0xc4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x92, 0x94, 0x92, 0xff, + 0x71, 0x73, 0x71, 0xff, 0xd5, 0xd9, 0xd5, 0xff, + 0x61, 0x64, 0x61, 0xff, 0xa3, 0xa6, 0xa3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd0, 0xd3, 0xd0, 0xff, 0x54, 0x55, 0x54, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x70, 0x72, 0x70, 0xff, 0x91, 0x94, 0x91, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0xf7, 0xf5, 0xff, 0x60, 0x62, 0x60, 0xff, + 0x92, 0x94, 0x92, 0xff, 0xd8, 0xdb, 0xd8, 0xff, + 0x51, 0x52, 0x51, 0xff, 0xb1, 0xb4, 0xb1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0xf7, 0xf5, 0xff, 0x59, 0x5b, 0x59, 0xff, + 0xb4, 0xb7, 0xb4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9b, 0x9e, 0x9b, 0xff, 0x5f, 0x61, 0x5f, 0xff, + 0xd6, 0xda, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9e, 0xa0, 0x9e, 0xff, 0x59, 0x5b, 0x59, 0xff, + 0xcd, 0xd1, 0xcd, 0xff, 0xca, 0xce, 0xca, 0xff, + 0x57, 0x59, 0x57, 0xff, 0xc7, 0xca, 0xc7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x66, 0x68, 0x66, 0xff, + 0xb4, 0xb7, 0xb4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc7, 0xcb, 0xc7, 0xff, 0x5f, 0x60, 0x5f, 0xff, + 0xbb, 0xbd, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbb, 0xbf, 0xbb, 0xff, + 0x63, 0x65, 0x63, 0xff, 0xac, 0xaf, 0xac, 0xff, + 0xeb, 0xef, 0xeb, 0xff, 0x9b, 0x9d, 0x9b, 0xff, + 0x70, 0x72, 0x70, 0xff, 0xe9, 0xec, 0xe9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdd, 0xe1, 0xdd, 0xff, 0x57, 0x59, 0x57, 0xff, + 0xbc, 0xc0, 0xbc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc3, 0xc0, 0xff, + 0xdf, 0xe3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa4, 0xa7, 0xa4, 0xff, 0x66, 0x68, 0x66, 0xff, + 0xa8, 0xab, 0xa8, 0xff, 0xf2, 0xf6, 0xf2, 0xff, + 0xe0, 0xe4, 0xe0, 0xff, 0x69, 0x6b, 0x69, 0xff, + 0xa7, 0xa9, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf9, 0xfa, 0xf9, 0xff, 0xed, 0xef, 0xed, 0xff, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb6, 0xb9, 0xb6, 0xff, 0x61, 0x64, 0x61, 0xff, + 0xdc, 0xe0, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xed, 0xf0, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xee, 0xf0, 0xee, 0xff, 0x98, 0x9b, 0x98, 0xff, + 0x57, 0x59, 0x57, 0xff, 0xa8, 0xab, 0xa8, 0xff, + 0xed, 0xf1, 0xed, 0xff, 0xf4, 0xf8, 0xf4, 0xff, + 0xb1, 0xb4, 0xb1, 0xff, 0x57, 0x59, 0x57, 0xff, + 0xd7, 0xdb, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdd, 0xdf, 0xdd, 0xff, 0xae, 0xb1, 0xae, 0xff, + 0xc7, 0xc9, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xba, 0xbe, 0xba, 0xff, 0xa3, 0xa6, 0xa3, 0xff, + 0xee, 0xf2, 0xee, 0xff, 0xe1, 0xe4, 0xe1, 0xff, + 0x82, 0x85, 0x82, 0xff, 0x80, 0x83, 0x80, 0xff, + 0xba, 0xbd, 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xe3, 0xdf, 0xff, + 0x95, 0x97, 0x95, 0xff, 0xc5, 0xc8, 0xc5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdd, 0xe0, 0xdd, 0xff, + 0x85, 0x88, 0x85, 0xff, 0x5b, 0x5d, 0x5b, 0xff, + 0xa9, 0xab, 0xa9, 0xff, 0xec, 0xf0, 0xec, 0xff, + 0xf8, 0xfc, 0xf8, 0xff, 0xe3, 0xe7, 0xe3, 0xff, + 0x76, 0x78, 0x76, 0xff, 0x7d, 0x80, 0x7d, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xd2, 0xd5, 0xd2, 0xff, 0x4d, 0x4f, 0x4d, 0xff, + 0x85, 0x87, 0x85, 0xff, 0xd8, 0xd9, 0xd8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdc, 0xe0, 0xdc, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0xac, 0xae, 0xac, 0xff, 0x9f, 0xa2, 0x9f, 0xff, + 0xae, 0xb1, 0xae, 0xff, 0x7b, 0x7d, 0x7b, 0xff, + 0x54, 0x56, 0x54, 0xff, 0xb6, 0xb9, 0xb6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe4, 0xe0, 0xff, + 0x7a, 0x7c, 0x7a, 0xff, 0x5d, 0x5f, 0x5d, 0xff, + 0x9d, 0xa0, 0x9d, 0xff, 0xcc, 0xd0, 0xcc, 0xff, + 0x8b, 0x8d, 0x8b, 0xff, 0xc5, 0xc9, 0xc5, 0xff, + 0xf3, 0xf6, 0xf3, 0xff, 0xf8, 0xfc, 0xf8, 0xff, + 0xee, 0xf2, 0xee, 0xff, 0x92, 0x95, 0x92, 0xff, + 0x59, 0x5b, 0x59, 0xff, 0xc2, 0xc6, 0xc2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xee, 0xef, 0xee, 0xff, 0xf6, 0xf6, 0xf6, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0x61, 0x63, 0x61, 0xff, + 0x57, 0x58, 0x57, 0xff, 0x9f, 0xa2, 0x9f, 0xff, + 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbe, 0xc1, 0xbe, 0xff, + 0x84, 0x87, 0x84, 0xff, 0xc5, 0xc9, 0xc5, 0xff, + 0x63, 0x65, 0x63, 0xff, 0x98, 0x9b, 0x98, 0xff, + 0xf5, 0xf9, 0xf5, 0xff, 0xe3, 0xe7, 0xe3, 0xff, + 0x60, 0x61, 0x60, 0xff, 0x4d, 0x4f, 0x4d, 0xff, + 0xaa, 0xad, 0xaa, 0xff, 0xef, 0xf3, 0xef, 0xff, + 0xe9, 0xed, 0xe9, 0xff, 0xa0, 0xa3, 0xa0, 0xff, + 0x4f, 0x51, 0x4f, 0xff, 0xd6, 0xd9, 0xd6, 0xff, + 0xed, 0xf1, 0xed, 0xff, 0xf6, 0xfa, 0xf6, 0xff, + 0xf4, 0xf8, 0xf4, 0xff, 0xdd, 0xe1, 0xdd, 0xff, + 0x99, 0x9c, 0x99, 0xff, 0x4e, 0x50, 0x4e, 0xff, + 0xa2, 0xa5, 0xa2, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcc, 0xcd, 0xcc, 0xff, + 0xa1, 0xa3, 0xa1, 0xff, 0xa7, 0xaa, 0xa7, 0xff, + 0xbf, 0xc2, 0xbf, 0xff, 0x5e, 0x60, 0x5e, 0xff, + 0x6c, 0x6e, 0x6c, 0xff, 0x85, 0x88, 0x85, 0xff, + 0xb2, 0xb4, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc6, 0xc9, 0xc6, 0xff, 0x6a, 0x6c, 0x6a, 0xff, + 0x8c, 0x8f, 0x8c, 0xff, 0xc6, 0xca, 0xc6, 0xff, + 0x63, 0x65, 0x63, 0xff, 0xbb, 0xbe, 0xbb, 0xff, + 0xf8, 0xfc, 0xf8, 0xff, 0xeb, 0xef, 0xeb, 0xff, + 0x70, 0x72, 0x70, 0xff, 0x1f, 0x1f, 0x1f, 0xff, + 0x99, 0x9c, 0x99, 0xff, 0xf1, 0xf5, 0xf1, 0xff, + 0xf8, 0xfc, 0xf8, 0xff, 0xce, 0xd1, 0xce, 0xff, + 0x55, 0x57, 0x55, 0xff, 0xcc, 0xd0, 0xcc, 0xff, + 0xf7, 0xfb, 0xf7, 0xff, 0xe7, 0xeb, 0xe7, 0xff, + 0xaa, 0xac, 0xaa, 0xff, 0x6c, 0x6e, 0x6c, 0xff, + 0x56, 0x58, 0x56, 0xff, 0xa5, 0xa8, 0xa5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0xf5, 0xf5, 0xff, 0x9b, 0x9d, 0x9b, 0xff, + 0x45, 0x46, 0x45, 0xff, 0x67, 0x69, 0x67, 0xff, + 0x6b, 0x6d, 0x6b, 0xff, 0x63, 0x66, 0x63, 0xff, + 0xb6, 0xb9, 0xb6, 0xff, 0x8b, 0x8d, 0x8b, 0xff, + 0x8b, 0x8e, 0x8b, 0xff, 0xc2, 0xc4, 0xc2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdc, 0xdf, 0xdc, 0xff, + 0x72, 0x74, 0x72, 0xff, 0x8f, 0x92, 0x8f, 0xff, + 0xe5, 0xe8, 0xe5, 0xff, 0xdb, 0xde, 0xdb, 0xff, + 0x61, 0x63, 0x61, 0xff, 0xa7, 0xab, 0xa7, 0xff, + 0xf0, 0xf4, 0xf0, 0xff, 0xc5, 0xc8, 0xc5, 0xff, + 0x4a, 0x4c, 0x4a, 0xff, 0x2b, 0x2b, 0x2b, 0xff, + 0xaa, 0xad, 0xaa, 0xff, 0xf0, 0xf4, 0xf0, 0xff, + 0xf6, 0xfa, 0xf6, 0xff, 0xcc, 0xd0, 0xcc, 0xff, + 0x55, 0x57, 0x55, 0xff, 0xbd, 0xc1, 0xbd, 0xff, + 0xb1, 0xb4, 0xb1, 0xff, 0x6e, 0x6f, 0x6e, 0xff, + 0x59, 0x5a, 0x59, 0xff, 0x8d, 0x8f, 0x8d, 0xff, + 0xcb, 0xcf, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xf3, 0xf1, 0xff, 0xa8, 0xab, 0xa8, 0xff, + 0x5d, 0x5f, 0x5d, 0xff, 0x7d, 0x7f, 0x7d, 0xff, + 0x40, 0x42, 0x40, 0xff, 0x62, 0x64, 0x62, 0xff, + 0xbb, 0xbe, 0xbb, 0xff, 0xd2, 0xd5, 0xd2, 0xff, + 0x7e, 0x80, 0x7e, 0xff, 0x99, 0x9b, 0x99, 0xff, + 0xdc, 0xdd, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd2, 0xd6, 0xd2, 0xff, 0x76, 0x79, 0x76, 0xff, + 0x7f, 0x82, 0x7f, 0xff, 0xe0, 0xe3, 0xe0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xed, 0xf0, 0xed, 0xff, + 0x6d, 0x70, 0x6d, 0xff, 0x76, 0x79, 0x76, 0xff, + 0x94, 0x97, 0x94, 0xff, 0x5d, 0x5f, 0x5d, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x68, 0x6b, 0x68, 0xff, + 0x5b, 0x5d, 0x5b, 0xff, 0xa3, 0xa6, 0xa3, 0xff, + 0xbc, 0xbf, 0xbc, 0xff, 0x88, 0x8b, 0x88, 0xff, + 0x47, 0x49, 0x47, 0xff, 0xad, 0xb0, 0xad, 0xff, + 0x76, 0x79, 0x76, 0xff, 0x87, 0x8a, 0x87, 0xff, + 0xd1, 0xd4, 0xd1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcb, 0xcd, 0xcb, 0xff, + 0x84, 0x86, 0x84, 0xff, 0x8a, 0x8d, 0x8a, 0xff, + 0xa7, 0xaa, 0xa7, 0xff, 0x97, 0x99, 0x97, 0xff, + 0xea, 0xee, 0xea, 0xff, 0xed, 0xf1, 0xed, 0xff, + 0xaf, 0xb2, 0xaf, 0xff, 0x79, 0x7b, 0x79, 0xff, + 0x9c, 0x9f, 0x9c, 0xff, 0xf2, 0xf2, 0xf2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd4, 0xd8, 0xd4, 0xff, + 0x74, 0x76, 0x74, 0xff, 0x73, 0x75, 0x73, 0xff, + 0xd9, 0xdd, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa5, 0xa8, 0xa5, 0xff, 0x58, 0x5a, 0x58, 0xff, + 0x6b, 0x6d, 0x6b, 0xff, 0x9a, 0x9d, 0x9a, 0xff, + 0xd6, 0xd9, 0xd6, 0xff, 0xd7, 0xda, 0xd7, 0xff, + 0x8d, 0x90, 0x8d, 0xff, 0x66, 0x68, 0x66, 0xff, + 0x62, 0x64, 0x62, 0xff, 0x54, 0x56, 0x54, 0xff, + 0x3f, 0x40, 0x3f, 0xff, 0xab, 0xae, 0xab, 0xff, + 0xd7, 0xdb, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xed, 0xed, 0xed, 0xff, + 0x96, 0x99, 0x96, 0xff, 0x7b, 0x7e, 0x7b, 0xff, + 0xc3, 0xc7, 0xc3, 0xff, 0xec, 0xf0, 0xec, 0xff, + 0xeb, 0xef, 0xeb, 0xff, 0xc2, 0xc5, 0xc2, 0xff, + 0x8b, 0x8d, 0x8b, 0xff, 0x75, 0x77, 0x75, 0xff, + 0x80, 0x83, 0x80, 0xff, 0xb8, 0xba, 0xb8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdd, 0xe1, 0xdd, 0xff, 0x68, 0x6a, 0x68, 0xff, + 0x63, 0x65, 0x63, 0xff, 0xcc, 0xd0, 0xcc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd2, 0xd6, 0xd2, 0xff, + 0xe4, 0xe8, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xc6, 0xca, 0xc6, 0xff, 0x8c, 0x8f, 0x8c, 0xff, + 0x36, 0x36, 0x36, 0xff, 0x60, 0x62, 0x60, 0xff, + 0xda, 0xde, 0xda, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc3, 0xc4, 0xc3, 0xff, 0x70, 0x72, 0x70, 0xff, + 0xb1, 0xb4, 0xb1, 0xff, 0xe5, 0xe8, 0xe5, 0xff, + 0xa9, 0xab, 0xa9, 0xff, 0x7b, 0x7d, 0x7b, 0xff, + 0x85, 0x88, 0x85, 0xff, 0xb1, 0xb3, 0xb1, 0xff, + 0x80, 0x82, 0x80, 0xff, 0x8e, 0x91, 0x8e, 0xff, + 0xce, 0xd0, 0xce, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd2, 0xd6, 0xd2, 0xff, + 0x6f, 0x71, 0x6f, 0xff, 0x63, 0x65, 0x63, 0xff, + 0xcb, 0xcf, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa3, 0xa7, 0xa3, 0xff, 0x56, 0x59, 0x56, 0xff, + 0x8d, 0x90, 0x8d, 0xff, 0x59, 0x5c, 0x59, 0xff, + 0xac, 0xaf, 0xac, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf6, 0xf7, 0xf6, 0xff, 0x85, 0x87, 0x85, 0xff, + 0x7b, 0x7d, 0x7b, 0xff, 0x81, 0x83, 0x81, 0xff, + 0x7f, 0x81, 0x7f, 0xff, 0x83, 0x85, 0x83, 0xff, + 0xca, 0xcb, 0xca, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0xd4, 0xd3, 0xff, 0x6b, 0x6e, 0x6b, 0xff, + 0x9b, 0x9e, 0x9b, 0xff, 0xe7, 0xe8, 0xe7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe9, 0xec, 0xe9, 0xff, 0x79, 0x7b, 0x79, 0xff, + 0x5b, 0x5d, 0x5b, 0xff, 0xcd, 0xd1, 0xcd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc4, 0xc7, 0xc4, 0xff, + 0x4f, 0x51, 0x4f, 0xff, 0x8d, 0x8f, 0x8d, 0xff, + 0xe1, 0xe5, 0xe1, 0xff, 0x81, 0x84, 0x81, 0xff, + 0x7a, 0x7d, 0x7a, 0xff, 0xf1, 0xf3, 0xf1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf3, 0xf3, 0xf3, 0xff, 0xab, 0xae, 0xab, 0xff, + 0x3f, 0x40, 0x3f, 0xff, 0x64, 0x66, 0x64, 0xff, + 0x98, 0x99, 0x98, 0xff, 0xe5, 0xe5, 0xe5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xad, 0xae, 0xad, 0xff, + 0x7a, 0x7d, 0x7a, 0xff, 0xbe, 0xc1, 0xbe, 0xff, + 0xfa, 0xfb, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x96, 0x99, 0x96, 0xff, 0x65, 0x68, 0x65, 0xff, + 0xc3, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd1, 0xd5, 0xd1, 0xff, 0x6b, 0x6d, 0x6b, 0xff, + 0x8f, 0x92, 0x8f, 0xff, 0xf1, 0xf3, 0xf1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbb, 0xbe, 0xbb, 0xff, + 0x63, 0x66, 0x63, 0xff, 0xc8, 0xcb, 0xc8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc9, 0xca, 0xc9, 0xff, + 0x6d, 0x70, 0x6d, 0xff, 0x88, 0x8b, 0x88, 0xff, + 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x89, 0x8b, 0x89, 0xff, 0x93, 0x95, 0x93, 0xff, + 0xda, 0xdd, 0xda, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xb0, 0xb4, 0xb0, 0xff, + 0x4d, 0x4f, 0x4d, 0xff, 0xad, 0xb0, 0xad, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcd, 0xd1, 0xcd, 0xff, + 0x68, 0x6a, 0x68, 0xff, 0x66, 0x68, 0x66, 0xff, + 0xe9, 0xec, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0x72, 0x74, 0x72, 0xff, 0x8d, 0x8f, 0x8d, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf9, 0xf8, 0xff, + 0x8a, 0x8c, 0x8a, 0xff, 0x95, 0x97, 0x95, 0xff, + 0xf0, 0xf1, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf8, 0xf7, 0xff, + 0xc9, 0xcd, 0xc9, 0xff, 0x60, 0x61, 0x60, 0xff, + 0xaf, 0xb2, 0xaf, 0xff, 0xeb, 0xed, 0xeb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd2, 0xd5, 0xd2, 0xff, 0x62, 0x64, 0x62, 0xff, + 0x9f, 0xa2, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7b, 0x7e, 0x7b, 0xff, + 0x67, 0x69, 0x67, 0xff, 0xc7, 0xcb, 0xc7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa0, 0xa3, 0xa0, 0xff, 0x57, 0x59, 0x57, 0xff, + 0xdf, 0xe3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf2, 0xf3, 0xf2, 0xff, + 0xb0, 0xb3, 0xb0, 0xff, 0x63, 0x65, 0x63, 0xff, + 0xd2, 0xd3, 0xd2, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0xe4, 0xe2, 0xff, 0x9a, 0x9c, 0x9a, 0xff, + 0x6b, 0x6c, 0x6b, 0xff, 0xd7, 0xdb, 0xd7, 0xff, + 0xfb, 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x96, 0x98, 0x96, 0xff, 0x5b, 0x5d, 0x5b, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x99, 0x9c, 0x99, 0xff, 0x5c, 0x5e, 0x5c, 0xff, + 0xc5, 0xc9, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xcf, 0xd2, 0xcf, 0xff, 0x52, 0x54, 0x52, 0xff, + 0xb2, 0xb5, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xcb, 0xcc, 0xcb, 0xff, 0x7e, 0x80, 0x7e, 0xff, + 0x9f, 0xa1, 0x9f, 0xff, 0xf8, 0xf9, 0xf8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcc, 0xce, 0xcc, 0xff, + 0x8b, 0x8d, 0x8b, 0xff, 0xa5, 0xa7, 0xa5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x85, 0x87, 0x85, 0xff, 0x7e, 0x81, 0x7e, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0x92, 0x95, 0x92, 0xff, + 0x42, 0x43, 0x42, 0xff, 0xac, 0xaf, 0xac, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x92, 0x95, 0x92, 0xff, + 0x6a, 0x6c, 0x6a, 0xff, 0xdd, 0xe0, 0xdd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0xf9, 0xf8, 0xff, 0x8f, 0x91, 0x8f, 0xff, + 0x8f, 0x92, 0x8f, 0xff, 0xd9, 0xdc, 0xd9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf2, 0xf3, 0xf2, 0xff, + 0xac, 0xaf, 0xac, 0xff, 0x81, 0x84, 0x81, 0xff, + 0xca, 0xcb, 0xca, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x88, 0x8a, 0x88, 0xff, 0x89, 0x8c, 0x89, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0xaa, 0xa7, 0xff, 0x58, 0x5a, 0x58, 0xff, + 0x50, 0x51, 0x50, 0xff, 0xb3, 0xb7, 0xb3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd9, 0xdd, 0xd9, 0xff, + 0x63, 0x65, 0x63, 0xff, 0x9c, 0x9f, 0x9c, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf4, 0xf4, 0xf4, 0xff, 0xbb, 0xbe, 0xbb, 0xff, + 0x6d, 0x6f, 0x6d, 0xff, 0xcc, 0xce, 0xcc, 0xff, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd5, 0xd6, 0xd5, 0xff, 0x85, 0x88, 0x85, 0xff, + 0x88, 0x8b, 0x88, 0xff, 0xf4, 0xf4, 0xf4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd4, 0xd8, 0xd4, 0xff, + 0xba, 0xbd, 0xba, 0xff, 0xa5, 0xa8, 0xa5, 0xff, + 0xb7, 0xba, 0xb7, 0xff, 0xc0, 0xc4, 0xc0, 0xff, + 0xcf, 0xd3, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x84, 0x86, 0x84, 0xff, 0x78, 0x7a, 0x78, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc7, 0xcb, 0xc7, 0xff, + 0x53, 0x55, 0x53, 0xff, 0x94, 0x97, 0x94, 0xff, + 0x8b, 0x8d, 0x8b, 0xff, 0x69, 0x6b, 0x69, 0xff, + 0xdf, 0xe3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa1, 0xa4, 0xa1, 0xff, 0x61, 0x63, 0x61, 0xff, + 0xba, 0xbd, 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd1, 0xd2, 0xd1, 0xff, + 0x88, 0x8b, 0x88, 0xff, 0xa0, 0xa3, 0xa0, 0xff, + 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbd, 0xbf, 0xbd, 0xff, + 0x7c, 0x7f, 0x7c, 0xff, 0xa6, 0xa9, 0xa6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd6, 0xda, 0xd6, 0xff, + 0x8e, 0x91, 0x8e, 0xff, 0x58, 0x5a, 0x58, 0xff, + 0x5a, 0x5c, 0x5a, 0xff, 0x72, 0x74, 0x72, 0xff, + 0x6f, 0x71, 0x6f, 0xff, 0x5c, 0x5e, 0x5c, 0xff, + 0x53, 0x54, 0x53, 0xff, 0x90, 0x93, 0x90, 0xff, + 0xed, 0xf0, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x90, 0x93, 0x90, 0xff, 0x64, 0x67, 0x64, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbb, 0xbe, 0xbb, 0xff, 0x56, 0x58, 0x56, 0xff, + 0x82, 0x85, 0x82, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0xda, 0xde, 0xda, 0xff, 0x55, 0x58, 0x55, 0xff, + 0xa5, 0xa9, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0xf7, 0xf5, 0xff, 0x91, 0x94, 0x91, 0xff, + 0x5e, 0x60, 0x5e, 0xff, 0xb1, 0xb4, 0xb1, 0xff, + 0xf5, 0xf7, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe4, 0xe0, 0xff, + 0x73, 0x76, 0x73, 0xff, 0x9b, 0x9e, 0x9b, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, 0xff, + 0x64, 0x67, 0x64, 0xff, 0xb8, 0xbc, 0xb8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd7, 0xdb, 0xd7, 0xff, + 0x95, 0x98, 0x95, 0xff, 0x5d, 0x5f, 0x5d, 0xff, + 0x6a, 0x6d, 0x6a, 0xff, 0xa7, 0xaa, 0xa7, 0xff, + 0xd5, 0xd9, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf9, 0xfa, 0xf9, 0xff, 0xd6, 0xda, 0xd6, 0xff, + 0xa5, 0xa8, 0xa5, 0xff, 0x55, 0x57, 0x55, 0xff, + 0xa1, 0xa4, 0xa1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbc, 0xbf, 0xbc, 0xff, 0x53, 0x55, 0x53, 0xff, + 0xd2, 0xd6, 0xd2, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xca, 0xcd, 0xca, 0xff, + 0x66, 0x69, 0x66, 0xff, 0x75, 0x78, 0x75, 0xff, + 0xe1, 0xe4, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x90, 0x93, 0x90, 0xff, + 0x6e, 0x70, 0x6e, 0xff, 0xd4, 0xd8, 0xd4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe1, 0xe4, 0xe1, 0xff, + 0xa1, 0xa4, 0xa1, 0xff, 0x57, 0x59, 0x57, 0xff, + 0x94, 0x96, 0x94, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc5, 0xc8, 0xc5, 0xff, + 0x67, 0x69, 0x67, 0xff, 0xc3, 0xc6, 0xc3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd2, 0xd6, 0xd2, 0xff, + 0x55, 0x57, 0x55, 0xff, 0xbf, 0xc3, 0xbf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe9, 0xec, 0xe9, 0xff, 0xc5, 0xc9, 0xc5, 0xff, + 0x9b, 0x9e, 0x9b, 0xff, 0x6e, 0x70, 0x6e, 0xff, + 0x6d, 0x6f, 0x6d, 0xff, 0xa1, 0xa4, 0xa1, 0xff, + 0xdd, 0xe1, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x8e, 0x90, 0x8e, 0xff, + 0x6e, 0x70, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xe4, 0xe0, 0xff, 0x5b, 0x5d, 0x5b, 0xff, + 0x9a, 0x9c, 0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0xf7, 0xf5, 0xff, 0x72, 0x74, 0x72, 0xff, + 0x7d, 0x7f, 0x7d, 0xff, 0xd8, 0xdb, 0xd8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd4, 0xd8, 0xd4, 0xff, + 0x61, 0x63, 0x61, 0xff, 0x9d, 0xa0, 0x9d, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa3, 0xa7, 0xa3, 0xff, + 0x61, 0x63, 0x61, 0xff, 0x79, 0x7b, 0x79, 0xff, + 0xd5, 0xd8, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x9a, 0x9d, 0x9a, 0xff, + 0x73, 0x76, 0x73, 0xff, 0xe0, 0xe4, 0xe0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc3, 0xc6, 0xc3, 0xff, + 0x59, 0x5b, 0x59, 0xff, 0xd0, 0xd4, 0xd0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0xff, + 0xe9, 0xec, 0xe9, 0xff, 0xdc, 0xe0, 0xdc, 0xff, + 0xdb, 0xdf, 0xdb, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xdb, 0xdf, 0xdb, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xd8, 0xdc, 0xd8, 0xff, 0xcd, 0xd0, 0xcd, 0xff, + 0xca, 0xcd, 0xca, 0xff, 0xca, 0xcd, 0xca, 0xff, + 0xca, 0xcd, 0xca, 0xff, 0xca, 0xcd, 0xca, 0xff, + 0xd0, 0xd4, 0xd0, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xdb, 0xdf, 0xdb, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xdb, 0xdf, 0xdb, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xdb, 0xdf, 0xdb, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xdb, 0xdf, 0xdb, 0xff, 0xce, 0xd2, 0xce, 0xff, + 0xc9, 0xcc, 0xc9, 0xff, 0xbc, 0xbf, 0xbc, 0xff, + 0xb5, 0xb9, 0xb5, 0xff, 0xaa, 0xad, 0xaa, 0xff, + 0xa7, 0xaa, 0xa7, 0xff, 0xa4, 0xa7, 0xa4, 0xff, + 0x90, 0x93, 0x90, 0xff, 0x75, 0x77, 0x75, 0xff, + 0x68, 0x6a, 0x68, 0xff, 0x5b, 0x5d, 0x5b, 0xff, + 0x6d, 0x70, 0x6d, 0xff, 0xa0, 0xa3, 0xa0, 0xff, + 0xd3, 0xd6, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xb3, 0xb6, 0xb3, 0xff, + 0x4b, 0x4c, 0x4b, 0xff, 0xe0, 0xe3, 0xe0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa3, 0xa6, 0xa3, 0xff, + 0x5f, 0x61, 0x5f, 0xff, 0xd1, 0xd4, 0xd1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd4, 0xd8, 0xd4, 0xff, + 0x85, 0x88, 0x85, 0xff, 0x77, 0x79, 0x77, 0xff, + 0xd9, 0xdd, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa1, 0xa4, 0xa1, 0xff, 0x60, 0x62, 0x60, 0xff, + 0xdd, 0xe1, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xcc, 0xcf, 0xcc, 0xff, 0x71, 0x73, 0x71, 0xff, + 0x5c, 0x5d, 0x5c, 0xff, 0x8b, 0x8e, 0x8b, 0xff, + 0xbb, 0xbe, 0xbb, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xe2, 0xe5, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe3, 0xe0, 0xff, + 0xdc, 0xe0, 0xdc, 0xff, 0xdc, 0xe0, 0xdc, 0xff, + 0xcd, 0xd1, 0xcd, 0xff, 0xbc, 0xbf, 0xbc, 0xff, + 0xaf, 0xb3, 0xaf, 0xff, 0x5f, 0x60, 0x5f, 0xff, + 0x9c, 0x9e, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xab, 0xae, 0xab, 0xff, + 0x4b, 0x4d, 0x4b, 0xff, 0x95, 0x98, 0x95, 0xff, + 0x95, 0x98, 0x95, 0xff, 0x84, 0x86, 0x84, 0xff, + 0x7a, 0x7d, 0x7a, 0xff, 0x7f, 0x81, 0x7f, 0xff, + 0x81, 0x83, 0x81, 0xff, 0x80, 0x83, 0x80, 0xff, + 0x73, 0x75, 0x73, 0xff, 0x6d, 0x6f, 0x6d, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x5a, 0x5c, 0x5a, 0xff, + 0x5c, 0x5f, 0x5c, 0xff, 0x63, 0x66, 0x63, 0xff, + 0x63, 0x66, 0x63, 0xff, 0x63, 0x66, 0x63, 0xff, + 0x67, 0x6a, 0x67, 0xff, 0x6c, 0x6e, 0x6c, 0xff, + 0x6c, 0x6e, 0x6c, 0xff, 0x6c, 0x6e, 0x6c, 0xff, + 0x6c, 0x6e, 0x6c, 0xff, 0x6a, 0x6c, 0x6a, 0xff, + 0x64, 0x66, 0x64, 0xff, 0x6d, 0x70, 0x6d, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x63, 0x66, 0x63, 0xff, + 0x63, 0x66, 0x63, 0xff, 0x63, 0x66, 0x63, 0xff, + 0x63, 0x66, 0x63, 0xff, 0x63, 0x66, 0x63, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x62, 0x64, 0x62, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x62, 0x63, 0x62, 0xff, + 0x5d, 0x5e, 0x5d, 0xff, 0x5a, 0x5c, 0x5a, 0xff, + 0x64, 0x66, 0x64, 0xff, 0x6d, 0x70, 0x6d, 0xff, + 0x84, 0x86, 0x84, 0xff, 0x8a, 0x8d, 0x8a, 0xff, + 0xa2, 0xa5, 0xa2, 0xff, 0xc7, 0xcb, 0xc7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcb, 0xcf, 0xcb, 0xff, + 0x57, 0x59, 0x57, 0xff, 0xd6, 0xda, 0xd6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0xff, + 0x6b, 0x6e, 0x6b, 0xff, 0x73, 0x75, 0x73, 0xff, + 0xbf, 0xc2, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbc, 0xbf, 0xbc, 0xff, 0x5e, 0x5f, 0x5e, 0xff, + 0x97, 0x99, 0x97, 0xff, 0xe1, 0xe4, 0xe1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xda, 0xde, 0xda, 0xff, 0x61, 0x62, 0x61, 0xff, + 0xaf, 0xb2, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xde, 0xe2, 0xde, 0xff, + 0xa1, 0xa4, 0xa1, 0xff, 0x6b, 0x6e, 0x6b, 0xff, + 0x60, 0x61, 0x60, 0xff, 0x64, 0x66, 0x64, 0xff, + 0x6e, 0x70, 0x6e, 0xff, 0x86, 0x89, 0x86, 0xff, + 0x94, 0x97, 0x94, 0xff, 0x94, 0x96, 0x94, 0xff, + 0x94, 0x96, 0x94, 0xff, 0x91, 0x94, 0x91, 0xff, + 0x91, 0x94, 0x91, 0xff, 0x91, 0x94, 0x91, 0xff, + 0x93, 0x96, 0x93, 0xff, 0x92, 0x95, 0x92, 0xff, + 0x84, 0x86, 0x84, 0xff, 0x68, 0x6b, 0x68, 0xff, + 0x66, 0x68, 0x66, 0xff, 0x6e, 0x70, 0x6e, 0xff, + 0x6a, 0x6d, 0x6a, 0xff, 0x60, 0x62, 0x60, 0xff, + 0x50, 0x52, 0x50, 0xff, 0x4b, 0x4c, 0x4b, 0xff, + 0xc7, 0xcb, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x96, 0x99, 0x96, 0xff, + 0x43, 0x44, 0x43, 0xff, 0x6f, 0x72, 0x6f, 0xff, + 0x76, 0x79, 0x76, 0xff, 0x76, 0x78, 0x76, 0xff, + 0x75, 0x78, 0x75, 0xff, 0x83, 0x86, 0x83, 0xff, + 0x8a, 0x8c, 0x8a, 0xff, 0x94, 0x97, 0x94, 0xff, + 0xa5, 0xa8, 0xa5, 0xff, 0xac, 0xaf, 0xac, 0xff, + 0xab, 0xae, 0xab, 0xff, 0xb2, 0xb5, 0xb2, 0xff, + 0xb8, 0xbb, 0xb8, 0xff, 0xbf, 0xc3, 0xbf, 0xff, + 0xbf, 0xc3, 0xbf, 0xff, 0xbf, 0xc3, 0xbf, 0xff, + 0xc6, 0xca, 0xc6, 0xff, 0xd4, 0xd8, 0xd4, 0xff, + 0xd7, 0xda, 0xd7, 0xff, 0xd7, 0xda, 0xd7, 0xff, + 0xd7, 0xda, 0xd7, 0xff, 0xd5, 0xd8, 0xd5, 0xff, + 0xc9, 0xcc, 0xc9, 0xff, 0xca, 0xcd, 0xca, 0xff, + 0xc1, 0xc4, 0xc1, 0xff, 0xbf, 0xc3, 0xbf, 0xff, + 0xbf, 0xc3, 0xbf, 0xff, 0xbf, 0xc3, 0xbf, 0xff, + 0xbf, 0xc3, 0xbf, 0xff, 0xbf, 0xc3, 0xbf, 0xff, + 0xc1, 0xc4, 0xc1, 0xff, 0xc7, 0xcb, 0xc7, 0xff, + 0xd0, 0xd3, 0xd0, 0xff, 0xd7, 0xda, 0xd7, 0xff, + 0xd7, 0xda, 0xd7, 0xff, 0xd9, 0xdd, 0xd9, 0xff, + 0xde, 0xe2, 0xde, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd2, 0xd6, 0xd2, 0xff, + 0x5a, 0x5c, 0x5a, 0xff, 0xcb, 0xcf, 0xcb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc1, 0xc5, 0xc1, 0xff, 0x70, 0x72, 0x70, 0xff, + 0x58, 0x5a, 0x58, 0xff, 0x7a, 0x7c, 0x7a, 0xff, + 0xa5, 0xa8, 0xa5, 0xff, 0x93, 0x97, 0x93, 0xff, + 0x49, 0x4b, 0x49, 0xff, 0x71, 0x73, 0x71, 0xff, + 0x91, 0x93, 0x91, 0xff, 0xe2, 0xe5, 0xe2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x90, 0x92, 0x90, 0xff, + 0x6b, 0x6d, 0x6b, 0xff, 0xe1, 0xe4, 0xe1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdd, 0xe1, 0xdd, 0xff, + 0xc9, 0xcc, 0xc9, 0xff, 0xa1, 0xa4, 0xa1, 0xff, + 0x99, 0x9b, 0x99, 0xff, 0x97, 0x9a, 0x97, 0xff, + 0x81, 0x84, 0x81, 0xff, 0x7f, 0x81, 0x7f, 0xff, + 0x7f, 0x81, 0x7f, 0xff, 0x73, 0x76, 0x73, 0xff, + 0x73, 0x76, 0x73, 0xff, 0x73, 0x76, 0x73, 0xff, + 0x7c, 0x7e, 0x7c, 0xff, 0x87, 0x8a, 0x87, 0xff, + 0x99, 0x9c, 0x99, 0xff, 0x99, 0x9c, 0x99, 0xff, + 0xa4, 0xa7, 0xa4, 0xff, 0xb1, 0xb4, 0xb1, 0xff, + 0xc3, 0xc7, 0xc3, 0xff, 0xc3, 0xc6, 0xc3, 0xff, + 0x70, 0x73, 0x70, 0xff, 0x7b, 0x7d, 0x7b, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x82, 0x85, 0x82, 0xff, + 0x7d, 0x80, 0x7d, 0xff, 0xdf, 0xe3, 0xdf, 0xff, + 0xf1, 0xf3, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xba, 0xbe, 0xba, 0xff, + 0x52, 0x54, 0x52, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc9, 0xcc, 0xc9, 0xff, 0x87, 0x8a, 0x87, 0xff, + 0x63, 0x65, 0x63, 0xff, 0xbc, 0xbd, 0xbc, 0xff, + 0xa9, 0xaa, 0xa9, 0xff, 0xa5, 0xa8, 0xa5, 0xff, + 0x5a, 0x5c, 0x5a, 0xff, 0xaf, 0xb3, 0xaf, 0xff, + 0xe9, 0xeb, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd9, 0xdc, 0xd9, 0xff, + 0x53, 0x55, 0x53, 0xff, 0xa8, 0xab, 0xa8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc4, 0xc8, 0xc4, 0xff, + 0x55, 0x58, 0x55, 0xff, 0xbc, 0xbf, 0xbc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdd, 0xe1, 0xdd, 0xff, 0x70, 0x73, 0x70, 0xff, + 0xa5, 0xa8, 0xa5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb8, 0xbb, 0xb8, 0xff, 0x6b, 0x6d, 0x6b, 0xff, + 0x7e, 0x81, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xf3, 0xf1, 0xff, 0xa6, 0xa7, 0xa6, 0xff, + 0x8c, 0x8d, 0x8c, 0xff, 0xa4, 0xa7, 0xa4, 0xff, + 0x95, 0x98, 0x95, 0xff, 0x73, 0x76, 0x73, 0xff, + 0xb5, 0xb7, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x77, 0x7a, 0x77, 0xff, 0x75, 0x78, 0x75, 0xff, + 0xf5, 0xf7, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x96, 0x99, 0x96, 0xff, + 0x6c, 0x6e, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xce, 0xd1, 0xce, 0xff, 0x68, 0x6a, 0x68, 0xff, + 0xc0, 0xc3, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd4, 0xd7, 0xd4, 0xff, 0x90, 0x92, 0x90, 0xff, + 0x5b, 0x5d, 0x5b, 0xff, 0x81, 0x84, 0x81, 0xff, + 0xd6, 0xd9, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf9, 0xf9, 0xf9, 0xff, 0xc3, 0xc6, 0xc3, 0xff, + 0x78, 0x7a, 0x78, 0xff, 0xaf, 0xb1, 0xaf, 0xff, + 0xdf, 0xe2, 0xdf, 0xff, 0x75, 0x77, 0x75, 0xff, + 0x8b, 0x8e, 0x8b, 0xff, 0xdd, 0xde, 0xdd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0xaa, 0xa7, 0xff, 0x59, 0x5b, 0x59, 0xff, + 0xcf, 0xd3, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd9, 0xdc, 0xd9, 0xff, 0x6a, 0x6c, 0x6a, 0xff, + 0x9a, 0x9c, 0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb2, 0xb5, 0xb2, 0xff, 0x69, 0x6b, 0x69, 0xff, + 0xd3, 0xd7, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0xf7, 0xf5, 0xff, 0x9b, 0x9e, 0x9b, 0xff, + 0x60, 0x62, 0x60, 0xff, 0x6b, 0x6e, 0x6b, 0xff, + 0xb8, 0xbb, 0xb8, 0xff, 0xed, 0xf0, 0xed, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe2, 0xe0, 0xff, + 0x75, 0x78, 0x75, 0xff, 0xaf, 0xb2, 0xaf, 0xff, + 0xeb, 0xee, 0xeb, 0xff, 0xbd, 0xc0, 0xbd, 0xff, + 0x8b, 0x8e, 0x8b, 0xff, 0xa1, 0xa3, 0xa1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd4, 0xd7, 0xd4, 0xff, 0x5d, 0x5e, 0x5d, 0xff, + 0x9f, 0xa2, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9a, 0x9d, 0x9a, 0xff, 0x64, 0x66, 0x64, 0xff, + 0xd3, 0xd6, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8b, 0x8d, 0x8b, 0xff, 0x73, 0x75, 0x73, 0xff, + 0xf5, 0xf7, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcc, 0xd0, 0xcc, 0xff, + 0x74, 0x76, 0x74, 0xff, 0x62, 0x64, 0x62, 0xff, + 0xa1, 0xa4, 0xa1, 0xff, 0xe0, 0xe4, 0xe0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdc, 0xde, 0xdc, 0xff, + 0x87, 0x89, 0x87, 0xff, 0x95, 0x97, 0x95, 0xff, + 0xf6, 0xfa, 0xf6, 0xff, 0xf0, 0xf4, 0xf0, 0xff, + 0x97, 0x9b, 0x97, 0xff, 0x86, 0x88, 0x86, 0xff, + 0xe2, 0xe3, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x82, 0x85, 0x82, 0xff, + 0x75, 0x78, 0x75, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe9, 0xec, 0xe9, 0xff, + 0x61, 0x63, 0x61, 0xff, 0x95, 0x98, 0x95, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x75, 0x77, 0x75, 0xff, 0x87, 0x8a, 0x87, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xf3, 0xf1, 0xff, 0x7c, 0x7f, 0x7c, 0xff, + 0x68, 0x6a, 0x68, 0xff, 0xd8, 0xdb, 0xd8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfb, 0xfb, 0xff, + 0x82, 0x84, 0x82, 0xff, 0x93, 0x95, 0x93, 0xff, + 0xe1, 0xe4, 0xe1, 0xff, 0xf1, 0xf5, 0xf1, 0xff, + 0xac, 0xb0, 0xac, 0xff, 0x82, 0x84, 0x82, 0xff, + 0xd5, 0xd7, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xb5, 0xb8, 0xb5, 0xff, + 0x56, 0x59, 0x56, 0xff, 0xdd, 0xe1, 0xdd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xac, 0xaf, 0xac, 0xff, + 0x59, 0x5c, 0x59, 0xff, 0xce, 0xd2, 0xce, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0xff, + 0x5d, 0x5f, 0x5d, 0xff, 0xa5, 0xa8, 0xa5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc6, 0xc9, 0xc6, 0xff, 0x60, 0x62, 0x60, 0xff, + 0xb6, 0xba, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf2, 0xf4, 0xf2, 0xff, + 0xa2, 0xa5, 0xa2, 0xff, 0x82, 0x84, 0x82, 0xff, + 0xd8, 0xdc, 0xd8, 0xff, 0xf0, 0xf4, 0xf0, 0xff, + 0xb0, 0xb3, 0xb0, 0xff, 0x60, 0x62, 0x60, 0xff, + 0xdc, 0xdd, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd4, 0xd8, 0xd4, 0xff, + 0x57, 0x59, 0x57, 0xff, 0xbc, 0xc0, 0xbc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd7, 0xdb, 0xd7, 0xff, 0x61, 0x62, 0x61, 0xff, + 0x9e, 0xa1, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc3, 0xc7, 0xc3, 0xff, + 0x56, 0x58, 0x56, 0xff, 0xce, 0xd1, 0xce, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa0, 0xa3, 0xa0, 0xff, 0x5a, 0x5b, 0x5a, 0xff, + 0xdc, 0xdf, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf9, 0xf8, 0xff, + 0xb7, 0xbb, 0xb7, 0xff, 0x69, 0x6c, 0x69, 0xff, + 0xcb, 0xcd, 0xcb, 0xff, 0xe6, 0xea, 0xe6, 0xff, + 0x98, 0x9b, 0x98, 0xff, 0x74, 0x77, 0x74, 0xff, + 0xdb, 0xdc, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x6e, 0x71, 0x6e, 0xff, 0x97, 0x9a, 0x97, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa1, 0xa4, 0xa1, 0xff, 0x5b, 0x5d, 0x5b, 0xff, + 0xdb, 0xdf, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa0, 0xa3, 0xa0, 0xff, + 0x69, 0x6b, 0x69, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa4, 0xa7, 0xa4, 0xff, 0x5c, 0x5e, 0x5c, 0xff, + 0xdc, 0xdf, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc5, 0xc7, 0xc5, 0xff, 0x81, 0x84, 0x81, 0xff, + 0xa6, 0xa9, 0xa6, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0x8a, 0x8d, 0x8a, 0xff, 0x97, 0x9a, 0x97, 0xff, + 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x97, 0x9a, 0x97, 0xff, 0x84, 0x86, 0x84, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xde, 0xdb, 0xff, + 0x6b, 0x6d, 0x6b, 0xff, 0x8d, 0x90, 0x8d, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7e, 0x81, 0x7e, 0xff, + 0x83, 0x86, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb8, 0xbc, 0xb8, 0xff, 0x68, 0x6a, 0x68, 0xff, + 0xd8, 0xdc, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xed, 0xed, 0xed, 0xff, 0x73, 0x76, 0x73, 0xff, + 0x8e, 0x90, 0x8e, 0xff, 0xba, 0xbe, 0xba, 0xff, + 0x7f, 0x81, 0x7f, 0xff, 0xc0, 0xc3, 0xc0, 0xff, + 0xf9, 0xfa, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0xaa, 0xa7, 0xff, 0x69, 0x6b, 0x69, 0xff, + 0xed, 0xf0, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x9c, 0x9f, 0x9c, 0xff, + 0x64, 0x65, 0x64, 0xff, 0xd2, 0xd5, 0xd2, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xe2, 0xdf, 0xff, 0x64, 0x66, 0x64, 0xff, + 0xa4, 0xa7, 0xa4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd0, 0xd3, 0xd0, 0xff, 0x66, 0x68, 0x66, 0xff, + 0xc3, 0xc7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x9d, 0x9e, 0x9d, 0xff, + 0x72, 0x75, 0x72, 0xff, 0x7e, 0x81, 0x7e, 0xff, + 0x82, 0x85, 0x82, 0xff, 0xe4, 0xe5, 0xe4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0xaa, 0xa7, 0xff, 0x65, 0x66, 0x65, 0xff, + 0xe4, 0xe8, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xed, 0xf0, 0xed, 0xff, 0x63, 0x65, 0x63, 0xff, + 0x93, 0x96, 0x93, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc7, 0xcb, 0xc7, 0xff, 0x55, 0x57, 0x55, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0xd7, 0xd3, 0xff, 0x5a, 0x5c, 0x5a, 0xff, + 0xb1, 0xb5, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xfb, 0xfb, 0xff, 0xc7, 0xc9, 0xc7, 0xff, + 0x47, 0x49, 0x47, 0xff, 0x51, 0x54, 0x51, 0xff, + 0x91, 0x93, 0x91, 0xff, 0xf1, 0xf2, 0xf1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0xaa, 0xa7, 0xff, 0x68, 0x6b, 0x68, 0xff, + 0xed, 0xf0, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc2, 0xc5, 0xc2, 0xff, 0x5e, 0x60, 0x5e, 0xff, + 0xcd, 0xd1, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa7, 0xaa, 0xa7, 0xff, 0x5b, 0x5d, 0x5b, 0xff, + 0xf1, 0xf3, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xe2, 0xdf, 0xff, 0x6f, 0x71, 0x6f, 0xff, + 0xac, 0xaf, 0xac, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd6, 0xd9, 0xd6, 0xff, + 0x7f, 0x82, 0x7f, 0xff, 0x89, 0x8b, 0x89, 0xff, + 0xd3, 0xd5, 0xd3, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x91, 0x93, 0x91, 0xff, 0x82, 0x85, 0x82, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xe4, 0xe0, 0xff, 0xc3, 0xc6, 0xc3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9d, 0xa0, 0x9d, 0xff, 0x8f, 0x92, 0x8f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x81, 0x83, 0x81, 0xff, + 0x82, 0x84, 0x82, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf4, 0xf3, 0xff, + 0xdc, 0xdf, 0xdc, 0xff, 0xdc, 0xdd, 0xdc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x74, 0x76, 0x74, 0xff, 0x8f, 0x92, 0x8f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd5, 0xd9, 0xd5, 0xff, 0xdc, 0xe0, 0xdc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x9c, 0xa0, 0x9c, 0xff, + 0x65, 0x67, 0x65, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0xff, + 0x6b, 0x6e, 0x6b, 0xff, 0xab, 0xae, 0xab, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc6, 0xca, 0xc6, 0xff, + 0x58, 0x59, 0x58, 0xff, 0xd1, 0xd5, 0xd1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcd, 0xd0, 0xcd, 0xff, + 0x54, 0x56, 0x54, 0xff, 0xcd, 0xd1, 0xcd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0x70, 0x72, 0x70, 0xff, 0x99, 0x9c, 0x99, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc3, 0xc0, 0xff, + 0x57, 0x58, 0x57, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x98, 0x9b, 0x98, 0xff, 0x64, 0x66, 0x64, 0xff, + 0xe9, 0xec, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa6, 0xa9, 0xa6, 0xff, + 0x62, 0x64, 0x62, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0x52, 0x54, 0x52, 0xff, + 0xc5, 0xc9, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x8a, 0x8c, 0x8a, 0xff, + 0x72, 0x75, 0x72, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xe0, 0xe0, 0xff, 0x6b, 0x6d, 0x6b, 0xff, + 0x8f, 0x91, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xf3, 0xf1, 0xff, 0x71, 0x73, 0x71, 0xff, + 0x8c, 0x8e, 0x8c, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xce, 0xcf, 0xce, 0xff, 0x88, 0x8a, 0x88, 0xff, + 0xa9, 0xab, 0xa9, 0xff, 0xe8, 0xea, 0xe8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdd, 0xe1, 0xdd, 0xff, 0x66, 0x69, 0x66, 0xff, + 0xa7, 0xaa, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xf8, 0xf8, 0xf8, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe6, 0xe7, 0xe6, 0xff, 0x9b, 0x9e, 0x9b, 0xff, + 0x81, 0x84, 0x81, 0xff, 0xc6, 0xc7, 0xc6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xef, 0xf1, 0xef, 0xff, 0x7a, 0x7c, 0x7a, 0xff, + 0xc0, 0xc4, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0xf9, 0xf8, 0xff, 0xc4, 0xc6, 0xc4, 0xff, + 0xb1, 0xb3, 0xb1, 0xff, 0xf0, 0xf0, 0xf0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0xf9, 0xf8, 0xff, 0xce, 0xd0, 0xce, 0xff, + 0x84, 0x87, 0x84, 0xff, 0x94, 0x96, 0x94, 0xff, + 0xf9, 0xfa, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdc, 0xdb, 0xff, + 0xa9, 0xac, 0xa9, 0xff, 0x74, 0x76, 0x74, 0xff, + 0xa5, 0xa8, 0xa5, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9c, 0x9e, 0x9c, 0xff, 0x5e, 0x60, 0x5e, 0xff, + 0x56, 0x58, 0x56, 0xff, 0xe5, 0xe6, 0xe5, 0xff, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfc, 0xfb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xff, + 0xae, 0xb1, 0xae, 0xff, 0x5d, 0x5f, 0x5d, 0xff, + 0xc3, 0xc6, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf6, 0xf5, 0xff, + 0xda, 0xdc, 0xda, 0xff, 0x8b, 0x8e, 0x8b, 0xff, + 0x69, 0x6b, 0x69, 0xff, 0xad, 0xb1, 0xad, 0xff, + 0xdb, 0xdd, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe9, 0xec, 0xe9, 0xff, 0x87, 0x89, 0x87, 0xff, + 0x7c, 0x7e, 0x7c, 0xff, 0x5d, 0x5e, 0x5d, 0xff, + 0x45, 0x46, 0x45, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe7, 0xe8, 0xe7, 0xff, 0xc7, 0xca, 0xc7, 0xff, + 0xeb, 0xec, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xea, 0xec, 0xea, 0xff, 0x73, 0x75, 0x73, 0xff, + 0x80, 0x82, 0x80, 0xff, 0xe6, 0xe7, 0xe6, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xd4, 0xd7, 0xd4, 0xff, + 0x87, 0x8a, 0x87, 0xff, 0x7a, 0x7d, 0x7a, 0xff, + 0xac, 0xae, 0xac, 0xff, 0xfa, 0xfa, 0xfa, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xe3, 0xdf, 0xff, 0xa3, 0xa6, 0xa3, 0xff, + 0x67, 0x6a, 0x67, 0xff, 0xc8, 0xc9, 0xc8, 0xff, + 0xcf, 0xd0, 0xcf, 0xff, 0x87, 0x89, 0x87, 0xff, + 0x6f, 0x71, 0x6f, 0xff, 0xf3, 0xf4, 0xf3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf6, 0xf6, 0xf6, 0xff, + 0xa1, 0xa3, 0xa1, 0xff, 0x66, 0x68, 0x66, 0xff, + 0x91, 0x93, 0x91, 0xff, 0xdd, 0xde, 0xdd, 0xff, + 0xfa, 0xfb, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xb6, 0xb9, 0xb6, 0xff, + 0x6e, 0x70, 0x6e, 0xff, 0xac, 0xaf, 0xac, 0xff, + 0xee, 0xef, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0xca, 0xc8, 0xff, 0x93, 0x96, 0x93, 0xff, + 0x7d, 0x7f, 0x7d, 0xff, 0xb7, 0xb9, 0xb7, 0xff, + 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xca, 0xcd, 0xca, 0xff, 0xa1, 0xa3, 0xa1, 0xff, + 0x6e, 0x70, 0x6e, 0xff, 0x5f, 0x62, 0x5f, 0xff, + 0xb5, 0xb6, 0xb5, 0xff, 0xf9, 0xf9, 0xf9, 0xff, + 0xdf, 0xe0, 0xdf, 0xff, 0x89, 0x8c, 0x89, 0xff, + 0x96, 0x98, 0x96, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf9, 0xf9, 0xf9, 0xff, 0xcb, 0xcd, 0xcb, 0xff, + 0x7b, 0x7d, 0x7b, 0xff, 0x7a, 0x7a, 0x7a, 0xff, + 0x59, 0x5b, 0x59, 0xff, 0x92, 0x94, 0x92, 0xff, + 0xd2, 0xd5, 0xd2, 0xff, 0xf8, 0xf9, 0xf8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe7, 0xe9, 0xe7, 0xff, + 0x96, 0x99, 0x96, 0xff, 0x87, 0x89, 0x87, 0xff, + 0xd1, 0xd2, 0xd1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0xf9, 0xf8, 0xff, 0xd6, 0xd6, 0xd6, 0xff, + 0x7f, 0x82, 0x7f, 0xff, 0x75, 0x77, 0x75, 0xff, + 0xc5, 0xc8, 0xc5, 0xff, 0xed, 0xee, 0xed, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xef, 0xef, 0xef, 0xff, 0xcf, 0xd1, 0xcf, 0xff, + 0xdc, 0xdd, 0xdc, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc9, 0xcc, 0xc9, 0xff, 0x92, 0x95, 0x92, 0xff, + 0x5b, 0x5d, 0x5b, 0xff, 0x6a, 0x6c, 0x6a, 0xff, + 0x8e, 0x91, 0x8e, 0xff, 0xce, 0xd2, 0xce, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfa, 0xfb, 0xfa, 0xff, + 0xc4, 0xc6, 0xc4, 0xff, 0x82, 0x85, 0x82, 0xff, + 0xb4, 0xb6, 0xb4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0xe3, 0xe2, 0xff, 0x95, 0x98, 0x95, 0xff, + 0x8f, 0x90, 0x8f, 0xff, 0xd1, 0xd3, 0xd1, 0xff, + 0x9c, 0x9f, 0x9c, 0xff, 0x7f, 0x81, 0x7f, 0xff, + 0x91, 0x93, 0x91, 0xff, 0xd6, 0xd8, 0xd6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xd2, 0xd3, 0xd2, 0xff, 0x85, 0x87, 0x85, 0xff, + 0x9d, 0x9e, 0x9d, 0xff, 0xec, 0xed, 0xec, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf7, 0xf7, 0xff, + 0xcd, 0xd0, 0xcd, 0xff, 0x72, 0x74, 0x72, 0xff, + 0x8e, 0x90, 0x8e, 0xff, 0xc4, 0xc5, 0xc4, 0xff, + 0xf6, 0xf7, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xdb, 0xdd, 0xdb, 0xff, 0x68, 0x6b, 0x68, 0xff, + 0xb6, 0xb9, 0xb6, 0xff, 0xf3, 0xf3, 0xf3, 0xff, + 0xfe, 0xfe, 0xfe, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0xe1, 0xe5, 0xe1, 0xff, 0xe1, 0xe5, 0xe1, 0xff, + 0xe1, 0xe5, 0xe1, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0xf5, 0xf7, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdc, 0xe0, 0xdc, 0xff, 0xc5, 0xc9, 0xc5, 0xff, + 0x9a, 0x9d, 0x9a, 0xff, 0x69, 0x6b, 0x69, 0xff, + 0x5d, 0x5f, 0x5d, 0xff, 0x6d, 0x6f, 0x6d, 0xff, + 0xb0, 0xb4, 0xb0, 0xff, 0xe0, 0xe4, 0xe0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xed, 0xef, 0xed, 0xff, + 0xa4, 0xa7, 0xa4, 0xff, 0x88, 0x8b, 0x88, 0xff, + 0xcf, 0xd1, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf2, 0xf3, 0xf2, 0xff, + 0xb2, 0xb5, 0xb2, 0xff, 0x83, 0x85, 0x83, 0xff, + 0xbc, 0xbd, 0xbc, 0xff, 0xfc, 0xfd, 0xfc, 0xff, + 0xed, 0xef, 0xed, 0xff, 0xbd, 0xbf, 0xbd, 0xff, + 0x82, 0x85, 0x82, 0xff, 0x8c, 0x8e, 0x8c, 0xff, + 0xd7, 0xd9, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf2, 0xf2, 0xf2, 0xff, 0xa8, 0xab, 0xa8, 0xff, + 0x6b, 0x6d, 0x6b, 0xff, 0xc0, 0xc3, 0xc0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xb9, 0xbb, 0xb9, 0xff, + 0x85, 0x88, 0x85, 0xff, 0x80, 0x83, 0x80, 0xff, + 0xcd, 0xd0, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xde, 0xe0, 0xde, 0xff, 0x8a, 0x8d, 0x8a, 0xff, + 0x8e, 0x91, 0x8e, 0xff, 0xde, 0xe0, 0xde, 0xff, + 0xe0, 0xe0, 0xe0, 0xff, 0x82, 0x84, 0x82, 0xff, + 0x73, 0x76, 0x73, 0xff, 0x73, 0x76, 0x73, 0xff, + 0x73, 0x76, 0x73, 0xff, 0x76, 0x78, 0x76, 0xff, + 0x7b, 0x7d, 0x7b, 0xff, 0x80, 0x82, 0x80, 0xff, + 0x84, 0x87, 0x84, 0xff, 0x82, 0x85, 0x82, 0xff, + 0x7d, 0x80, 0x7d, 0xff, 0x8f, 0x92, 0x8f, 0xff, + 0x9d, 0xa0, 0x9d, 0xff, 0xae, 0xb1, 0xae, 0xff, + 0xb6, 0xb9, 0xb6, 0xff, 0xb5, 0xb8, 0xb5, 0xff, + 0xb5, 0xb8, 0xb5, 0xff, 0xb6, 0xb9, 0xb6, 0xff, + 0xbf, 0xc3, 0xbf, 0xff, 0xc4, 0xc7, 0xc4, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0xc8, 0xcb, 0xc8, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0xc8, 0xcb, 0xc8, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0xc8, 0xcb, 0xc8, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0xc8, 0xcb, 0xc8, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0xc4, 0xc7, 0xc4, 0xff, + 0xc1, 0xc4, 0xc1, 0xff, 0xc1, 0xc4, 0xc1, 0xff, + 0xb7, 0xba, 0xb7, 0xff, 0xb5, 0xb8, 0xb5, 0xff, + 0xb6, 0xb9, 0xb6, 0xff, 0xa3, 0xa7, 0xa3, 0xff, + 0x8c, 0x8f, 0x8c, 0xff, 0x81, 0x84, 0x81, 0xff, + 0x64, 0x66, 0x64, 0xff, 0x5e, 0x60, 0x5e, 0xff, + 0x45, 0x46, 0x45, 0xff, 0x63, 0x64, 0x63, 0xff, + 0xc1, 0xc4, 0xc1, 0xff, 0xf5, 0xf7, 0xf5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe3, 0xe0, 0xff, + 0x87, 0x8a, 0x87, 0xff, 0x93, 0x96, 0x93, 0xff, + 0xe2, 0xe3, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd3, 0xd5, 0xd3, 0xff, + 0x84, 0x87, 0x84, 0xff, 0x9e, 0xa0, 0x9e, 0xff, + 0xe6, 0xe7, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf6, 0xf6, 0xf6, 0xff, + 0xb9, 0xbd, 0xb9, 0xff, 0x6e, 0x70, 0x6e, 0xff, + 0x83, 0x84, 0x83, 0xff, 0xf7, 0xf8, 0xf7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0x71, 0x73, 0x71, 0xff, 0x88, 0x8b, 0x88, 0xff, + 0xf4, 0xf4, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe3, 0xe5, 0xe3, 0xff, + 0xad, 0xb0, 0xad, 0xff, 0x78, 0x7b, 0x78, 0xff, + 0x86, 0x89, 0x86, 0xff, 0xd8, 0xdb, 0xd8, 0xff, + 0xf4, 0xf5, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfe, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd8, 0xda, 0xd8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf4, 0xf5, 0xf4, 0xff, 0xfb, 0xfb, 0xfb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf2, 0xf2, 0xf2, 0xff, 0xb5, 0xb8, 0xb5, 0xff, + 0x52, 0x55, 0x52, 0xff, 0xc3, 0xc6, 0xc3, 0xff, + 0xf9, 0xf9, 0xf9, 0xff, 0xcf, 0xd0, 0xcf, 0xff, + 0xba, 0xbc, 0xba, 0xff, 0xab, 0xae, 0xab, 0xff, + 0xab, 0xae, 0xab, 0xff, 0xab, 0xae, 0xab, 0xff, + 0xa4, 0xa7, 0xa4, 0xff, 0x92, 0x94, 0x92, 0xff, + 0x88, 0x8a, 0x88, 0xff, 0x82, 0x84, 0x82, 0xff, + 0x73, 0x75, 0x73, 0xff, 0x77, 0x79, 0x77, 0xff, + 0x7c, 0x7e, 0x7c, 0xff, 0x78, 0x7b, 0x78, 0xff, + 0x69, 0x6b, 0x69, 0xff, 0x63, 0x65, 0x63, 0xff, + 0x5c, 0x5e, 0x5c, 0xff, 0x50, 0x52, 0x50, 0xff, + 0x5b, 0x5d, 0x5b, 0xff, 0x60, 0x62, 0x60, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x65, 0x67, 0x65, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x65, 0x67, 0x65, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x64, 0x66, 0x64, 0xff, + 0x50, 0x51, 0x50, 0xff, 0x4d, 0x4e, 0x4d, 0xff, + 0x61, 0x63, 0x61, 0xff, 0x60, 0x62, 0x60, 0xff, + 0x5d, 0x5f, 0x5d, 0xff, 0x5d, 0x5f, 0x5d, 0xff, + 0x58, 0x5a, 0x58, 0xff, 0x60, 0x62, 0x60, 0xff, + 0x68, 0x6a, 0x68, 0xff, 0x6b, 0x6e, 0x6b, 0xff, + 0x75, 0x77, 0x75, 0xff, 0x83, 0x86, 0x83, 0xff, + 0x9e, 0xa2, 0x9e, 0xff, 0xc0, 0xc4, 0xc0, 0xff, + 0x9e, 0xa1, 0x9e, 0xff, 0x73, 0x76, 0x73, 0xff, + 0xed, 0xf0, 0xed, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd7, 0xda, 0xd7, 0xff, + 0x79, 0x7c, 0x79, 0xff, 0xa6, 0xa9, 0xa6, 0xff, + 0xee, 0xef, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xee, 0xf0, 0xee, 0xff, 0xa2, 0xa5, 0xa2, 0xff, + 0x7c, 0x7f, 0x7c, 0xff, 0xd1, 0xd2, 0xd1, 0xff, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xf2, 0xf1, 0xff, 0xae, 0xb0, 0xae, 0xff, + 0x5d, 0x5f, 0x5d, 0xff, 0x9d, 0xa1, 0x9d, 0xff, + 0xe9, 0xea, 0xe9, 0xff, 0xfc, 0xfd, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb2, 0xb4, 0xb2, 0xff, 0x75, 0x77, 0x75, 0xff, + 0xc1, 0xc4, 0xc1, 0xff, 0xf6, 0xf7, 0xf6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xeb, 0xeb, 0xeb, 0xff, 0xaa, 0xae, 0xaa, 0xff, + 0x61, 0x63, 0x61, 0xff, 0xa6, 0xa9, 0xa6, 0xff, + 0xdc, 0xdd, 0xdc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xe2, 0xdf, 0xff, 0xa9, 0xab, 0xa9, 0xff, + 0xbb, 0xbd, 0xbb, 0xff, 0xd8, 0xda, 0xd8, 0xff, + 0xb5, 0xb9, 0xb5, 0xff, 0xd7, 0xd8, 0xd7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd6, 0xd8, 0xd6, 0xff, + 0x72, 0x74, 0x72, 0xff, 0x8f, 0x91, 0x8f, 0xff, + 0xe1, 0xe2, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0xde, 0xe2, 0xde, 0xff, 0xdb, 0xde, 0xdb, 0xff, + 0xd8, 0xdb, 0xd8, 0xff, 0xd0, 0xd3, 0xd0, 0xff, + 0xd0, 0xd4, 0xd0, 0xff, 0xd1, 0xd4, 0xd1, 0xff, + 0xd1, 0xd4, 0xd1, 0xff, 0xd1, 0xd4, 0xd1, 0xff, + 0xd1, 0xd4, 0xd1, 0xff, 0xd1, 0xd4, 0xd1, 0xff, + 0xd1, 0xd4, 0xd1, 0xff, 0xcb, 0xcf, 0xcb, 0xff, + 0x62, 0x64, 0x62, 0xff, 0x76, 0x78, 0x76, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0xd1, 0xd4, 0xd1, 0xff, + 0xd1, 0xd4, 0xd1, 0xff, 0xd1, 0xd4, 0xd1, 0xff, + 0xd4, 0xd7, 0xd4, 0xff, 0xd9, 0xdd, 0xd9, 0xff, + 0xdd, 0xe1, 0xdd, 0xff, 0xe9, 0xec, 0xe9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0x54, 0x56, 0x54, 0xff, + 0xcd, 0xd0, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc4, 0xc7, 0xc4, 0xff, + 0x73, 0x76, 0x73, 0xff, 0xc2, 0xc5, 0xc2, 0xff, + 0xf8, 0xf9, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc8, 0xca, 0xc8, 0xff, 0x76, 0x78, 0x76, 0xff, + 0x9d, 0xa0, 0x9d, 0xff, 0xed, 0xee, 0xed, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf1, 0xf0, 0xff, + 0xaf, 0xb0, 0xaf, 0xff, 0x73, 0x75, 0x73, 0xff, + 0xaa, 0xad, 0xaa, 0xff, 0xeb, 0xec, 0xeb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xe1, 0xdf, 0xff, 0x8e, 0x90, 0x8e, 0xff, + 0x92, 0x95, 0x92, 0xff, 0xdc, 0xde, 0xdc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xfe, 0xfe, 0xff, 0xf2, 0xf4, 0xf2, 0xff, + 0x9f, 0xa1, 0x9f, 0xff, 0x7a, 0x7d, 0x7a, 0xff, + 0x9c, 0x9e, 0x9c, 0xff, 0xe7, 0xe9, 0xe7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0xe4, 0xe2, 0xff, 0xb9, 0xbb, 0xb9, 0xff, + 0x8b, 0x8d, 0x8b, 0xff, 0x6d, 0x6e, 0x6d, 0xff, + 0xf0, 0xf0, 0xf0, 0xff, 0xdc, 0xdd, 0xdc, 0xff, + 0x47, 0x49, 0x47, 0xff, 0x95, 0x98, 0x95, 0xff, + 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xed, 0xee, 0xed, 0xff, + 0xab, 0xaf, 0xab, 0xff, 0x65, 0x67, 0x65, 0xff, + 0xc9, 0xcb, 0xc9, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x61, 0x62, 0x61, 0xff, 0x9a, 0x9d, 0x9a, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe9, 0xec, 0xe9, 0xff, 0x63, 0x65, 0x63, 0xff, + 0xb9, 0xbc, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xa6, 0xa9, 0xa6, 0xff, + 0x69, 0x6b, 0x69, 0xff, 0xda, 0xde, 0xda, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x91, 0x93, 0x91, 0xff, 0x78, 0x7a, 0x78, 0xff, + 0xdb, 0xdd, 0xdb, 0xff, 0xfc, 0xfd, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe9, 0xeb, 0xe9, 0xff, 0x9c, 0x9f, 0x9c, 0xff, + 0x80, 0x82, 0x80, 0xff, 0xc5, 0xc7, 0xc5, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf6, 0xf7, 0xf6, 0xff, 0xc2, 0xc4, 0xc2, 0xff, + 0x83, 0x86, 0x83, 0xff, 0xa7, 0xa9, 0xa7, 0xff, + 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe2, 0xe4, 0xe2, 0xff, 0xa9, 0xad, 0xa9, 0xff, + 0x7c, 0x7e, 0x7c, 0xff, 0x9a, 0x9d, 0x9a, 0xff, + 0xfa, 0xfa, 0xfa, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xea, 0xeb, 0xea, 0xff, 0xcc, 0xce, 0xcc, 0xff, + 0x90, 0x93, 0x90, 0xff, 0x66, 0x68, 0x66, 0xff, + 0x99, 0x9b, 0x99, 0xff, 0xce, 0xcf, 0xce, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x73, 0x73, 0x73, 0xff, 0x6a, 0x6c, 0x6a, 0xff, + 0xb9, 0xba, 0xb9, 0xff, 0xf9, 0xfa, 0xf9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xda, 0xdd, 0xda, 0xff, 0x79, 0x7b, 0x79, 0xff, + 0xa3, 0xa5, 0xa3, 0xff, 0xe5, 0xe6, 0xe5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0x5b, 0x5d, 0x5b, 0xff, 0xa5, 0xa8, 0xa5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x67, 0x69, 0x67, 0xff, + 0x9a, 0x9d, 0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xf1, 0xf1, 0xff, 0x94, 0x97, 0x94, 0xff, + 0x79, 0x7b, 0x79, 0xff, 0xe5, 0xe8, 0xe5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xd5, 0xd8, 0xd5, 0xff, + 0x67, 0x69, 0x67, 0xff, 0xa7, 0xaa, 0xa7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xd9, 0xda, 0xd9, 0xff, + 0x8b, 0x8e, 0x8b, 0xff, 0x8f, 0x91, 0x8f, 0xff, + 0xdf, 0xe1, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xef, 0xff, + 0xa5, 0xa8, 0xa5, 0xff, 0x64, 0x66, 0x64, 0xff, + 0xcd, 0xd0, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe6, 0xe7, 0xe6, 0xff, + 0xad, 0xb1, 0xad, 0xff, 0x69, 0x6b, 0x69, 0xff, + 0xaa, 0xad, 0xaa, 0xff, 0xe1, 0xe2, 0xe1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf7, 0xf8, 0xf7, 0xff, 0xe7, 0xe9, 0xe7, 0xff, + 0xa2, 0xa5, 0xa2, 0xff, 0x78, 0x7a, 0x78, 0xff, + 0x86, 0x89, 0x86, 0xff, 0xaa, 0xac, 0xaa, 0xff, + 0xe1, 0xe3, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd6, 0xd6, 0xd6, 0xff, 0x87, 0x8a, 0x87, 0xff, + 0x69, 0x6a, 0x69, 0xff, 0xd2, 0xd6, 0xd2, 0xff, + 0xfc, 0xfd, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xee, 0xef, 0xee, 0xff, 0xb0, 0xb4, 0xb0, 0xff, + 0x7c, 0x7e, 0x7c, 0xff, 0xc1, 0xc4, 0xc1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd3, 0xcf, 0xff, + 0x51, 0x52, 0x51, 0xff, 0xbd, 0xc0, 0xbd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7b, 0x7d, 0x7b, 0xff, + 0x85, 0x87, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe4, 0xe4, 0xe4, 0xff, 0x90, 0x93, 0x90, 0xff, + 0x98, 0x9a, 0x98, 0xff, 0xf5, 0xf7, 0xf5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xed, 0xed, 0xed, 0xff, 0x9e, 0xa0, 0x9e, 0xff, + 0x79, 0x7b, 0x79, 0xff, 0xd7, 0xda, 0xd7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf6, 0xf5, 0xff, + 0xbc, 0xbe, 0xbc, 0xff, 0x6e, 0x70, 0x6e, 0xff, + 0x9d, 0x9f, 0x9d, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xec, 0xee, 0xec, 0xff, 0x5f, 0x60, 0x5f, 0xff, + 0xa2, 0xa5, 0xa2, 0xff, 0xfa, 0xfa, 0xfa, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa6, 0xa9, 0xa6, 0xff, + 0x7e, 0x82, 0x7e, 0xff, 0xa1, 0xa4, 0xa1, 0xff, + 0xe1, 0xe3, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xf3, 0xf4, 0xf3, 0xff, + 0xc2, 0xc5, 0xc2, 0xff, 0x87, 0x8a, 0x87, 0xff, + 0x7b, 0x7d, 0x7b, 0xff, 0x95, 0x97, 0x95, 0xff, + 0xce, 0xd0, 0xce, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xce, 0xd0, 0xce, 0xff, + 0x7b, 0x7d, 0x7b, 0xff, 0x93, 0x97, 0x93, 0xff, + 0xd4, 0xd5, 0xd4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xfe, 0xfe, 0xff, 0xe3, 0xe7, 0xe3, 0xff, + 0x7d, 0x80, 0x7d, 0xff, 0x9d, 0xa0, 0x9d, 0xff, + 0xe3, 0xe4, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbd, 0xc0, 0xbd, 0xff, + 0x4c, 0x4d, 0x4c, 0xff, 0xcf, 0xd2, 0xcf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x95, 0x99, 0x95, 0xff, + 0x68, 0x6b, 0x68, 0xff, 0xe0, 0xe4, 0xe0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd0, 0xd1, 0xd0, 0xff, 0x85, 0x87, 0x85, 0xff, + 0xb0, 0xb1, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf4, 0xf3, 0xff, + 0xb7, 0xba, 0xb7, 0xff, 0x77, 0x79, 0x77, 0xff, + 0xac, 0xae, 0xac, 0xff, 0xf6, 0xf7, 0xf6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfa, 0xfb, 0xfa, 0xff, 0x95, 0x99, 0x95, 0xff, + 0x62, 0x64, 0x62, 0xff, 0xd4, 0xd6, 0xd4, 0xff, + 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x9c, 0x9d, 0x9c, 0xff, + 0x7f, 0x81, 0x7f, 0xff, 0xd9, 0xda, 0xd9, 0xff, + 0xfb, 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb9, 0xba, 0xb9, 0xff, 0x7f, 0x82, 0x7f, 0xff, + 0x97, 0x99, 0x97, 0xff, 0xf1, 0xf2, 0xf1, 0xff, + 0xfb, 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf8, 0xf7, 0xff, + 0xce, 0xd0, 0xce, 0xff, 0x9c, 0x9e, 0x9c, 0xff, + 0x7e, 0x80, 0x7e, 0xff, 0x7c, 0x7f, 0x7c, 0xff, + 0xc2, 0xc5, 0xc2, 0xff, 0xf1, 0xf1, 0xf1, 0xff, + 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf2, 0xf3, 0xf2, 0xff, + 0xc6, 0xc8, 0xc6, 0xff, 0x7b, 0x7e, 0x7b, 0xff, + 0x8a, 0x8d, 0x8a, 0xff, 0xe8, 0xeb, 0xe8, 0xff, + 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf6, 0xf7, 0xf6, 0xff, + 0xbc, 0xbe, 0xbc, 0xff, 0x87, 0x89, 0x87, 0xff, + 0xb8, 0xba, 0xb8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xbb, 0xbe, 0xbb, 0xff, + 0x5e, 0x60, 0x5e, 0xff, 0xd9, 0xdc, 0xd9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xb2, 0xb4, 0xb2, 0xff, + 0x68, 0x6a, 0x68, 0xff, 0xd5, 0xd9, 0xd5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbc, 0xbd, 0xbc, 0xff, 0x84, 0x86, 0x84, 0xff, + 0xc4, 0xc5, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe1, 0xe0, 0xff, + 0x8f, 0x91, 0x8f, 0xff, 0x85, 0x88, 0x85, 0xff, + 0xd9, 0xdb, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd2, 0xcf, 0xff, + 0x75, 0x78, 0x75, 0xff, 0x94, 0x97, 0x94, 0xff, + 0xe2, 0xe3, 0xe2, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc9, 0xcb, 0xc9, 0xff, + 0x7f, 0x81, 0x7f, 0xff, 0xa1, 0xa4, 0xa1, 0xff, + 0xe9, 0xeb, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe1, 0xe0, 0xff, + 0x75, 0x78, 0x75, 0xff, 0x8c, 0x8f, 0x8c, 0xff, + 0xde, 0xdf, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xdb, 0xdd, 0xdb, 0xff, 0xae, 0xb2, 0xae, 0xff, + 0x7f, 0x81, 0x7f, 0xff, 0x5c, 0x5e, 0x5c, 0xff, + 0xad, 0xb0, 0xad, 0xff, 0xde, 0xdf, 0xde, 0xff, + 0xf6, 0xf7, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xae, 0xb1, 0xae, 0xff, + 0x72, 0x75, 0x72, 0xff, 0xab, 0xae, 0xab, 0xff, + 0xea, 0xec, 0xea, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfa, 0xfa, 0xfa, 0xff, 0x78, 0x7a, 0x78, 0xff, + 0x89, 0x8c, 0x89, 0xff, 0xe4, 0xe4, 0xe4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa9, 0xac, 0xa9, 0xff, + 0x65, 0x67, 0x65, 0xff, 0xde, 0xe2, 0xde, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc7, 0xca, 0xc7, 0xff, + 0x61, 0x62, 0x61, 0xff, 0xc3, 0xc6, 0xc3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa0, 0xa1, 0xa0, 0xff, 0x81, 0x84, 0x81, 0xff, + 0xd4, 0xd5, 0xd4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xbe, 0xbf, 0xbe, 0xff, + 0x81, 0x83, 0x81, 0xff, 0xb9, 0xba, 0xb9, 0xff, + 0xf8, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf2, 0xf3, 0xf2, 0xff, + 0xb6, 0xb8, 0xb6, 0xff, 0x82, 0x85, 0x82, 0xff, + 0xa6, 0xa9, 0xa6, 0xff, 0xec, 0xee, 0xec, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe3, 0xe5, 0xe3, 0xff, + 0x95, 0x98, 0x95, 0xff, 0x77, 0x79, 0x77, 0xff, + 0xcd, 0xcf, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x8a, 0x8c, 0x8a, 0xff, + 0x90, 0x93, 0x90, 0xff, 0xca, 0xcc, 0xca, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xef, 0xf0, 0xef, 0xff, 0xdc, 0xdd, 0xdc, 0xff, + 0x82, 0x84, 0x82, 0xff, 0x6a, 0x6c, 0x6a, 0xff, + 0x97, 0x99, 0x97, 0xff, 0xc9, 0xca, 0xc9, 0xff, + 0xf1, 0xf2, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe2, 0xe0, 0xff, + 0x9f, 0xa2, 0x9f, 0xff, 0x70, 0x71, 0x70, 0xff, + 0xbf, 0xc2, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xaf, 0xb0, 0xaf, 0xff, + 0x78, 0x7a, 0x78, 0xff, 0xb1, 0xb2, 0xb1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa7, 0xaa, 0xa7, 0xff, + 0x70, 0x72, 0x70, 0xff, 0xf1, 0xf3, 0xf1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd1, 0xd5, 0xd1, 0xff, + 0x63, 0x65, 0x63, 0xff, 0xb8, 0xbc, 0xb8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x8c, 0x8d, 0x8c, 0xff, 0x8b, 0x8e, 0x8b, 0xff, + 0xe3, 0xe4, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe3, 0xe5, 0xe3, 0xff, 0x8f, 0x91, 0x8f, 0xff, + 0x91, 0x94, 0x91, 0xff, 0xdf, 0xe0, 0xdf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe9, 0xea, 0xe9, 0xff, 0xa4, 0xa7, 0xa4, 0xff, + 0x76, 0x78, 0x76, 0xff, 0xc7, 0xc9, 0xc7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0xe9, 0xeb, 0xe9, 0xff, 0xb7, 0xba, 0xb7, 0xff, + 0x5d, 0x5e, 0x5d, 0xff, 0x4a, 0x4a, 0x4a, 0xff, + 0xa0, 0xa3, 0xa0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb3, 0xb4, 0xb3, 0xff, 0x63, 0x64, 0x63, 0xff, + 0xa3, 0xa6, 0xa3, 0xff, 0xf6, 0xf7, 0xf6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfa, 0xfa, 0xfa, 0xff, 0xfb, 0xfb, 0xfb, 0xff, + 0xa8, 0xaa, 0xa8, 0xff, 0x76, 0x78, 0x76, 0xff, + 0x87, 0x89, 0x87, 0xff, 0xb3, 0xb5, 0xb3, 0xff, + 0xe4, 0xe5, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe5, 0xe9, 0xe5, 0xff, 0x7a, 0x7c, 0x7a, 0xff, + 0x8b, 0x8e, 0x8b, 0xff, 0xd4, 0xd6, 0xd4, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xed, 0xed, 0xed, 0xff, + 0x7e, 0x81, 0x7e, 0xff, 0x86, 0x88, 0x86, 0xff, + 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xb6, 0xb9, 0xb6, 0xff, + 0x5f, 0x61, 0x5f, 0xff, 0xd9, 0xdd, 0xd9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd7, 0xdb, 0xd7, 0xff, + 0x6e, 0x70, 0x6e, 0xff, 0xba, 0xbd, 0xba, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x7b, 0x7d, 0x7b, 0xff, 0x98, 0x9b, 0x98, 0xff, + 0xf1, 0xf1, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc4, 0xc7, 0xc4, 0xff, 0x74, 0x77, 0x74, 0xff, + 0xb5, 0xb8, 0xb5, 0xff, 0xf3, 0xf4, 0xf3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xde, 0xe0, 0xde, 0xff, + 0x7e, 0x81, 0x7e, 0xff, 0x8e, 0x90, 0x8e, 0xff, + 0xeb, 0xeb, 0xeb, 0xff, 0xd3, 0xd4, 0xd3, 0xff, + 0x9b, 0x9e, 0x9b, 0xff, 0x73, 0x76, 0x73, 0xff, + 0x7c, 0x7e, 0x7c, 0xff, 0x70, 0x71, 0x70, 0xff, + 0x67, 0x6a, 0x67, 0xff, 0xf9, 0xfa, 0xf9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe9, 0xea, 0xe9, 0xff, + 0x5c, 0x5e, 0x5c, 0xff, 0x40, 0x41, 0x40, 0xff, + 0x7f, 0x81, 0x7f, 0xff, 0xeb, 0xed, 0xeb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xcc, 0xce, 0xcc, 0xff, 0x91, 0x92, 0x91, 0xff, + 0x81, 0x83, 0x81, 0xff, 0x9a, 0x9c, 0x9a, 0xff, + 0xde, 0xe0, 0xde, 0xff, 0xfb, 0xfb, 0xfb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc6, 0xc7, 0xc6, 0xff, + 0x81, 0x84, 0x81, 0xff, 0x8f, 0x91, 0x8f, 0xff, + 0xe3, 0xe5, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb6, 0xb7, 0xb6, 0xff, 0x88, 0x8a, 0x88, 0xff, + 0xba, 0xbc, 0xba, 0xff, 0xf8, 0xf9, 0xf8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xd5, 0xd8, 0xd5, 0xff, + 0x52, 0x54, 0x52, 0xff, 0xb0, 0xb3, 0xb0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0xd3, 0xcf, 0xff, + 0x63, 0x65, 0x63, 0xff, 0xba, 0xbd, 0xba, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x6d, 0x6f, 0x6d, 0xff, 0xb1, 0xb5, 0xb1, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x9a, 0x9c, 0x9a, 0xff, 0x6e, 0x71, 0x6e, 0xff, + 0xd6, 0xda, 0xd6, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb3, 0xb6, 0xb3, 0xff, 0x61, 0x63, 0x61, 0xff, + 0x93, 0x95, 0x93, 0xff, 0x83, 0x86, 0x83, 0xff, + 0x83, 0x85, 0x83, 0xff, 0xaa, 0xad, 0xaa, 0xff, + 0xdc, 0xe0, 0xdc, 0xff, 0xb4, 0xb7, 0xb4, 0xff, + 0x64, 0x67, 0x64, 0xff, 0xcb, 0xce, 0xcb, 0xff, + 0xf9, 0xf9, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x96, 0x97, 0x96, 0xff, + 0x7f, 0x81, 0x7f, 0xff, 0x8c, 0x8e, 0x8c, 0xff, + 0x74, 0x76, 0x74, 0xff, 0x93, 0x96, 0x93, 0xff, + 0xe3, 0xe4, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0xf2, 0xf0, 0xff, 0xc1, 0xc3, 0xc1, 0xff, + 0x8a, 0x8c, 0x8a, 0xff, 0x73, 0x75, 0x73, 0xff, + 0xc5, 0xc8, 0xc5, 0xff, 0xed, 0xee, 0xed, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xb0, 0xb2, 0xb0, 0xff, 0x70, 0x73, 0x70, 0xff, + 0xab, 0xae, 0xab, 0xff, 0xe7, 0xe8, 0xe7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe6, 0xe7, 0xe6, 0xff, 0x95, 0x98, 0x95, 0xff, + 0x71, 0x73, 0x71, 0xff, 0xda, 0xde, 0xda, 0xff, + 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x78, 0x7b, 0x78, 0xff, 0x7a, 0x7d, 0x7a, 0xff, + 0xdd, 0xe0, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xaa, 0xad, 0xaa, 0xff, + 0x5c, 0x5e, 0x5c, 0xff, 0xd1, 0xd4, 0xd1, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xfb, 0xfb, 0xff, 0xd1, 0xd5, 0xd1, 0xff, + 0x6d, 0x6f, 0x6d, 0xff, 0xc7, 0xcb, 0xc7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf5, 0xf5, 0xff, + 0x73, 0x76, 0x73, 0xff, 0x93, 0x96, 0x93, 0xff, + 0xfb, 0xfc, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xe4, 0xe0, 0xff, 0x85, 0x86, 0x85, 0xff, + 0x4e, 0x50, 0x4e, 0xff, 0x75, 0x78, 0x75, 0xff, + 0xbc, 0xbf, 0xbc, 0xff, 0xe5, 0xe9, 0xe5, 0xff, + 0xf5, 0xf9, 0xf5, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0x84, 0x87, 0x84, 0xff, 0x9d, 0xa0, 0x9d, 0xff, + 0xe5, 0xe7, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc7, 0xc8, 0xc7, 0xff, 0x75, 0x77, 0x75, 0xff, + 0xb4, 0xb7, 0xb4, 0xff, 0xda, 0xde, 0xda, 0xff, + 0x97, 0x99, 0x97, 0xff, 0x76, 0x79, 0x76, 0xff, + 0xab, 0xae, 0xab, 0xff, 0xd4, 0xd7, 0xd4, 0xff, + 0xc0, 0xc2, 0xc0, 0xff, 0x6c, 0x6e, 0x6c, 0xff, + 0x8b, 0x8d, 0x8b, 0xff, 0xd1, 0xd2, 0xd1, 0xff, + 0xfd, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe1, 0xe3, 0xe1, 0xff, 0xa1, 0xa4, 0xa1, 0xff, + 0x7d, 0x80, 0x7d, 0xff, 0xb3, 0xb5, 0xb3, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc1, 0xc3, 0xc1, 0xff, + 0x74, 0x77, 0x74, 0xff, 0x9b, 0x9e, 0x9b, 0xff, + 0xe9, 0xeb, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc3, 0xc6, 0xc3, 0xff, 0x5e, 0x60, 0x5e, 0xff, + 0x8a, 0x8c, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x70, 0x72, 0x70, 0xff, + 0x85, 0x87, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0xf6, 0xf5, 0xff, 0xb9, 0xbc, 0xb9, 0xff, + 0x70, 0x72, 0x70, 0xff, 0xd0, 0xd3, 0xd0, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xd9, 0xda, 0xd9, 0xff, + 0x72, 0x74, 0x72, 0xff, 0xba, 0xbd, 0xba, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xfc, 0xfb, 0xff, 0xc2, 0xc4, 0xc2, 0xff, + 0x6f, 0x71, 0x6f, 0xff, 0x8f, 0x92, 0x8f, 0xff, + 0xdc, 0xe0, 0xdc, 0xff, 0xe7, 0xeb, 0xe7, 0xff, + 0xe4, 0xe8, 0xe4, 0xff, 0xe3, 0xe7, 0xe3, 0xff, + 0xa5, 0xa8, 0xa5, 0xff, 0x82, 0x84, 0x82, 0xff, + 0xc5, 0xc7, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf6, 0xf7, 0xf6, 0xff, + 0x7a, 0x7c, 0x7a, 0xff, 0x96, 0x99, 0x96, 0xff, + 0xcf, 0xd2, 0xcf, 0xff, 0xec, 0xf0, 0xec, 0xff, + 0xe3, 0xe7, 0xe3, 0xff, 0x9f, 0xa1, 0x9f, 0xff, + 0x58, 0x5a, 0x58, 0xff, 0x83, 0x86, 0x83, 0xff, + 0x7d, 0x80, 0x7d, 0xff, 0x90, 0x92, 0x90, 0xff, + 0xc9, 0xcb, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xfb, 0xfb, 0xff, 0xe1, 0xe5, 0xe1, 0xff, + 0x82, 0x84, 0x82, 0xff, 0x78, 0x7b, 0x78, 0xff, + 0xdb, 0xdc, 0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe6, 0xe7, 0xe6, 0xff, + 0x9f, 0xa1, 0x9f, 0xff, 0x6a, 0x6c, 0x6a, 0xff, + 0xd1, 0xd4, 0xd1, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xaf, 0xb2, 0xaf, 0xff, + 0x59, 0x5b, 0x59, 0xff, 0xac, 0xaf, 0xac, 0xff, + 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x99, 0x9c, 0x99, 0xff, 0x61, 0x63, 0x61, 0xff, + 0xcc, 0xd0, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xef, 0xf0, 0xef, 0xff, 0xa2, 0xa5, 0xa2, 0xff, + 0x66, 0x69, 0x66, 0xff, 0xaf, 0xb2, 0xaf, 0xff, + 0xd4, 0xd6, 0xd4, 0xff, 0xe1, 0xe3, 0xe1, 0xff, + 0xdc, 0xde, 0xdc, 0xff, 0xa0, 0xa3, 0xa0, 0xff, + 0x74, 0x76, 0x74, 0xff, 0xd5, 0xd7, 0xd5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xed, 0xee, 0xed, 0xff, + 0xab, 0xae, 0xab, 0xff, 0x80, 0x82, 0x80, 0xff, + 0xb4, 0xb8, 0xb4, 0xff, 0xb1, 0xb5, 0xb1, 0xff, + 0x7b, 0x7f, 0x7b, 0xff, 0x9f, 0xa2, 0x9f, 0xff, + 0x9b, 0x9e, 0x9b, 0xff, 0x69, 0x6c, 0x69, 0xff, + 0x9b, 0x9c, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xad, 0xae, 0xad, 0xff, + 0x7d, 0x80, 0x7d, 0xff, 0x93, 0x96, 0x93, 0xff, + 0xaf, 0xb2, 0xaf, 0xff, 0xb0, 0xb3, 0xb0, 0xff, + 0xf0, 0xf4, 0xf0, 0xff, 0xd2, 0xd6, 0xd2, 0xff, + 0x78, 0x7a, 0x78, 0xff, 0x5b, 0x5d, 0x5b, 0xff, + 0x84, 0x87, 0x84, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xf8, 0xf9, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xc6, 0xc7, 0xc6, 0xff, 0x82, 0x85, 0x82, 0xff, + 0x93, 0x95, 0x93, 0xff, 0xec, 0xed, 0xec, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xeb, 0xeb, 0xeb, 0xff, + 0xac, 0xaf, 0xac, 0xff, 0x6d, 0x6f, 0x6d, 0xff, + 0x98, 0x9a, 0x98, 0xff, 0xdc, 0xdd, 0xdc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0x5e, 0x60, 0x5e, 0xff, 0x3a, 0x3b, 0x3a, 0xff, + 0x86, 0x89, 0x86, 0xff, 0xc1, 0xc4, 0xc1, 0xff, + 0xde, 0xe2, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd4, 0xd8, 0xd4, 0xff, 0x8b, 0x8e, 0x8b, 0xff, + 0x36, 0x38, 0x36, 0xff, 0x7d, 0x80, 0x7d, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe5, 0xe7, 0xe5, 0xff, 0x82, 0x85, 0x82, 0xff, + 0x4a, 0x4b, 0x4a, 0xff, 0x72, 0x74, 0x72, 0xff, + 0x88, 0x8b, 0x88, 0xff, 0x98, 0x9b, 0x98, 0xff, + 0x92, 0x95, 0x92, 0xff, 0x6d, 0x70, 0x6d, 0xff, + 0x8a, 0x8d, 0x8a, 0xff, 0xe6, 0xe8, 0xe6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xe7, 0xe7, 0xe7, 0xff, 0x89, 0x8c, 0x89, 0xff, + 0x77, 0x79, 0x77, 0xff, 0x81, 0x84, 0x81, 0xff, + 0x57, 0x59, 0x57, 0xff, 0x68, 0x6b, 0x68, 0xff, + 0x65, 0x68, 0x65, 0xff, 0x4a, 0x4c, 0x4a, 0xff, + 0x7a, 0x7c, 0x7a, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd3, 0xd4, 0xd3, 0xff, 0x68, 0x6a, 0x68, 0xff, + 0x50, 0x51, 0x50, 0xff, 0x62, 0x64, 0x62, 0xff, + 0x4b, 0x4b, 0x4b, 0xff, 0x88, 0x8a, 0x88, 0xff, + 0xd9, 0xdc, 0xd9, 0xff, 0xd0, 0xd3, 0xd0, 0xff, + 0x60, 0x62, 0x60, 0xff, 0x7e, 0x81, 0x7e, 0xff, + 0xd5, 0xd7, 0xd5, 0xff, 0xf8, 0xf9, 0xf8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf5, 0xf5, 0xf5, 0xff, 0xb4, 0xb7, 0xb4, 0xff, + 0x58, 0x5a, 0x58, 0xff, 0xb0, 0xb3, 0xb0, 0xff, + 0xed, 0xed, 0xed, 0xff, 0xf8, 0xf8, 0xf8, 0xff, + 0xd4, 0xd6, 0xd4, 0xff, 0x99, 0x9c, 0x99, 0xff, + 0x99, 0x9c, 0x99, 0xff, 0x97, 0x9a, 0x97, 0xff, + 0x6a, 0x6c, 0x6a, 0xff, 0xaf, 0xb1, 0xaf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xb5, 0xb8, 0xb5, 0xff, + 0x4f, 0x50, 0x4f, 0xff, 0x8d, 0x8f, 0x8d, 0xff, + 0x6b, 0x6d, 0x6b, 0xff, 0x57, 0x59, 0x57, 0xff, + 0x6d, 0x6f, 0x6d, 0xff, 0x92, 0x95, 0x92, 0xff, + 0xa5, 0xa8, 0xa5, 0xff, 0xa7, 0xaa, 0xa7, 0xff, + 0xa0, 0xa3, 0xa0, 0xff, 0x8a, 0x8d, 0x8a, 0xff, + 0x5d, 0x5f, 0x5d, 0xff, 0x51, 0x53, 0x51, 0xff, + 0x6f, 0x72, 0x6f, 0xff, 0x69, 0x6b, 0x69, 0xff, + 0xdd, 0xe1, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xde, 0xe0, 0xde, 0xff, 0x80, 0x82, 0x80, 0xff, + 0x80, 0x83, 0x80, 0xff, 0xa9, 0xac, 0xa9, 0xff, + 0xa7, 0xa9, 0xa7, 0xff, 0x9a, 0x9d, 0x9a, 0xff, + 0x6b, 0x6c, 0x6b, 0xff, 0x57, 0x59, 0x57, 0xff, + 0xac, 0xae, 0xac, 0xff, 0xf4, 0xf6, 0xf4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xfe, 0xfe, 0xff, 0xc0, 0xc3, 0xc0, 0xff, + 0x53, 0x55, 0x53, 0xff, 0x48, 0x4a, 0x48, 0xff, + 0x7a, 0x7c, 0x7a, 0xff, 0xdb, 0xdf, 0xdb, 0xff, + 0xb9, 0xbc, 0xb9, 0xff, 0x87, 0x89, 0x87, 0xff, + 0xab, 0xae, 0xab, 0xff, 0xf6, 0xf6, 0xf6, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x83, 0x84, 0x83, 0xff, 0x3c, 0x3e, 0x3c, 0xff, + 0x4e, 0x50, 0x4e, 0xff, 0x73, 0x76, 0x73, 0xff, + 0x71, 0x73, 0x71, 0xff, 0x7e, 0x80, 0x7e, 0xff, + 0xc7, 0xca, 0xc7, 0xff, 0x7b, 0x7d, 0x7b, 0xff, + 0x8e, 0x91, 0x8e, 0xff, 0xcd, 0xcf, 0xcd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe3, 0xe6, 0xe3, 0xff, + 0x9b, 0x9e, 0x9b, 0xff, 0x82, 0x85, 0x82, 0xff, + 0xb4, 0xb6, 0xb4, 0xff, 0xd7, 0xd9, 0xd7, 0xff, + 0x8e, 0x90, 0x8e, 0xff, 0x64, 0x66, 0x64, 0xff, + 0xb5, 0xb8, 0xb5, 0xff, 0xe4, 0xe8, 0xe4, 0xff, + 0x7f, 0x82, 0x7f, 0xff, 0x80, 0x83, 0x80, 0xff, + 0xd1, 0xd2, 0xd1, 0xff, 0xf9, 0xfa, 0xf9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x96, 0x99, 0x96, 0xff, + 0x6c, 0x6f, 0x6c, 0xff, 0xb1, 0xb4, 0xb1, 0xff, + 0x82, 0x84, 0x82, 0xff, 0xb2, 0xb5, 0xb2, 0xff, + 0xa0, 0xa3, 0xa0, 0xff, 0x81, 0x84, 0x81, 0xff, + 0x65, 0x67, 0x65, 0xff, 0x66, 0x69, 0x66, 0xff, + 0x71, 0x74, 0x71, 0xff, 0x82, 0x84, 0x82, 0xff, + 0x70, 0x73, 0x70, 0xff, 0x73, 0x76, 0x73, 0xff, + 0xb3, 0xb6, 0xb3, 0xff, 0x59, 0x5b, 0x59, 0xff, + 0xcb, 0xce, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xd7, 0xd9, 0xd7, 0xff, 0x7c, 0x7f, 0x7c, 0xff, + 0xad, 0xb1, 0xad, 0xff, 0xdf, 0xe3, 0xdf, 0xff, + 0xe7, 0xea, 0xe7, 0xff, 0xde, 0xe2, 0xde, 0xff, + 0x94, 0x97, 0x94, 0xff, 0x7c, 0x7e, 0x7c, 0xff, + 0xd3, 0xd4, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xed, 0xf0, 0xed, 0xff, + 0x77, 0x79, 0x77, 0xff, 0x33, 0x34, 0x33, 0xff, + 0x82, 0x84, 0x82, 0xff, 0xe8, 0xe9, 0xe8, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xec, 0xed, 0xec, 0xff, + 0xed, 0xef, 0xed, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe5, 0xe7, 0xe5, 0xff, + 0x9a, 0x9d, 0x9a, 0xff, 0x64, 0x66, 0x64, 0xff, + 0xab, 0xad, 0xab, 0xff, 0xd7, 0xda, 0xd7, 0xff, + 0x7f, 0x81, 0x7f, 0xff, 0x6c, 0x6e, 0x6c, 0xff, + 0x80, 0x83, 0x80, 0xff, 0x76, 0x78, 0x76, 0xff, + 0xc6, 0xc9, 0xc6, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfc, 0xfb, 0xff, + 0xeb, 0xeb, 0xeb, 0xff, 0x8a, 0x8c, 0x8a, 0xff, + 0x58, 0x59, 0x58, 0xff, 0x6a, 0x6c, 0x6a, 0xff, + 0x84, 0x86, 0x84, 0xff, 0xcb, 0xcf, 0xcb, 0xff, + 0xf1, 0xf5, 0xf1, 0xff, 0xf5, 0xf9, 0xf5, 0xff, + 0xc0, 0xc3, 0xc0, 0xff, 0x81, 0x85, 0x81, 0xff, + 0x8d, 0x90, 0x8d, 0xff, 0xde, 0xe1, 0xde, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7b, 0x7d, 0x7b, 0xff, + 0x80, 0x81, 0x80, 0xff, 0x95, 0x98, 0x95, 0xff, + 0x76, 0x79, 0x76, 0xff, 0xee, 0xf0, 0xee, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa8, 0xab, 0xa8, 0xff, 0x6f, 0x71, 0x6f, 0xff, + 0xd1, 0xd5, 0xd1, 0xff, 0x5d, 0x5f, 0x5d, 0xff, + 0xa1, 0xa4, 0xa1, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc4, 0xc7, 0xc4, 0xff, 0x6e, 0x71, 0x6e, 0xff, + 0xab, 0xae, 0xab, 0xff, 0xb5, 0xb8, 0xb5, 0xff, + 0xd6, 0xda, 0xd6, 0xff, 0xe1, 0xe5, 0xe1, 0xff, + 0x82, 0x85, 0x82, 0xff, 0x94, 0x97, 0x94, 0xff, + 0xe9, 0xea, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xb2, 0xb3, 0xb2, 0xff, 0x54, 0x56, 0x54, 0xff, + 0x7d, 0x7f, 0x7d, 0xff, 0xde, 0xdf, 0xde, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xda, 0xdb, 0xda, 0xff, 0xea, 0xeb, 0xea, 0xff, + 0xf1, 0xf2, 0xf1, 0xff, 0xda, 0xdc, 0xda, 0xff, + 0x72, 0x75, 0x72, 0xff, 0x40, 0x41, 0x40, 0xff, + 0x5d, 0x5f, 0x5d, 0xff, 0xc0, 0xc3, 0xc0, 0xff, + 0xee, 0xef, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xce, 0xd0, 0xce, 0xff, + 0x79, 0x7b, 0x79, 0xff, 0x51, 0x52, 0x51, 0xff, + 0xa0, 0xa3, 0xa0, 0xff, 0xec, 0xf0, 0xec, 0xff, + 0xe6, 0xea, 0xe6, 0xff, 0xce, 0xd2, 0xce, 0xff, + 0xdf, 0xe3, 0xdf, 0xff, 0x99, 0x9c, 0x99, 0xff, + 0x64, 0x66, 0x64, 0xff, 0xac, 0xaf, 0xac, 0xff, + 0xec, 0xed, 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xa6, 0xa9, 0xa6, 0xff, + 0x58, 0x5a, 0x58, 0xff, 0x5b, 0x5d, 0x5b, 0xff, + 0x92, 0x95, 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xa8, 0xac, 0xa8, 0xff, 0x68, 0x6b, 0x68, 0xff, + 0xc8, 0xcb, 0xc8, 0xff, 0x56, 0x58, 0x56, 0xff, + 0x90, 0x93, 0x90, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xac, 0xaf, 0xac, 0xff, 0x5e, 0x60, 0x5e, 0xff, + 0x77, 0x79, 0x77, 0xff, 0x58, 0x59, 0x58, 0xff, + 0x96, 0x98, 0x96, 0xff, 0xca, 0xcd, 0xca, 0xff, + 0x63, 0x65, 0x63, 0xff, 0xad, 0xb0, 0xad, 0xff, + 0xf8, 0xf8, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe0, 0xe2, 0xe0, 0xff, 0xac, 0xaf, 0xac, 0xff, + 0xc1, 0xc3, 0xc1, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xed, 0xee, 0xed, 0xff, + 0x61, 0x63, 0x61, 0xff, 0x5e, 0x5f, 0x5e, 0xff, + 0xac, 0xae, 0xac, 0xff, 0xef, 0xf1, 0xef, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf6, 0xf5, 0xff, + 0xcb, 0xce, 0xcb, 0xff, 0x58, 0x59, 0x58, 0xff, + 0x9e, 0xa1, 0x9e, 0xff, 0xdf, 0xe2, 0xdf, 0xff, + 0xae, 0xb1, 0xae, 0xff, 0x73, 0x76, 0x73, 0xff, + 0x6b, 0x6c, 0x6b, 0xff, 0x77, 0x79, 0x77, 0xff, + 0x50, 0x52, 0x50, 0xff, 0x6f, 0x71, 0x6f, 0xff, + 0xc6, 0xc9, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xdf, 0xe3, 0xdf, 0xff, + 0x85, 0x88, 0x85, 0xff, 0x57, 0x59, 0x57, 0xff, + 0xb9, 0xbc, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xc3, 0xc6, 0xc3, 0xff, 0x57, 0x59, 0x57, 0xff, + 0x61, 0x62, 0x61, 0xff, 0x41, 0x43, 0x41, 0xff, + 0xa8, 0xab, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf7, 0xf7, 0xff, + 0x98, 0x9b, 0x98, 0xff, 0x2b, 0x2c, 0x2b, 0xff, + 0x55, 0x56, 0x55, 0xff, 0x77, 0x79, 0x77, 0xff, + 0x63, 0x66, 0x63, 0xff, 0x95, 0x98, 0x95, 0xff, + 0x5f, 0x61, 0x5f, 0xff, 0xd5, 0xd9, 0xd5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfa, 0xfa, 0xfa, 0xff, 0xee, 0xef, 0xee, 0xff, + 0xf4, 0xf4, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf2, 0xf1, 0xff, + 0xc6, 0xc9, 0xc6, 0xff, 0xbb, 0xbd, 0xbb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf8, 0xf9, 0xf8, 0xff, 0xa1, 0xa2, 0xa1, 0xff, + 0x82, 0x84, 0x82, 0xff, 0x9f, 0xa2, 0x9f, 0xff, + 0x88, 0x8b, 0x88, 0xff, 0x56, 0x58, 0x56, 0xff, + 0x92, 0x95, 0x92, 0xff, 0x83, 0x86, 0x83, 0xff, + 0x5d, 0x60, 0x5d, 0xff, 0x4c, 0x4e, 0x4c, 0xff, + 0xbc, 0xbf, 0xbc, 0xff, 0xf7, 0xf8, 0xf7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf7, 0xf5, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xc3, 0xc6, 0xc3, 0xff, + 0xa9, 0xac, 0xa9, 0xff, 0xb4, 0xb7, 0xb4, 0xff, + 0xeb, 0xed, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe9, 0xe9, 0xe9, 0xff, + 0x79, 0x7b, 0x79, 0xff, 0x2f, 0x30, 0x2f, 0xff, + 0x90, 0x93, 0x90, 0xff, 0xc2, 0xc5, 0xc2, 0xff, + 0x69, 0x6c, 0x69, 0xff, 0x51, 0x52, 0x51, 0xff, + 0x65, 0x67, 0x65, 0xff, 0xe9, 0xec, 0xe9, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0xfb, 0xfb, 0xff, 0xf7, 0xf8, 0xf7, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe4, 0xe4, 0xe4, 0xff, + 0x92, 0x94, 0x92, 0xff, 0x68, 0x6a, 0x68, 0xff, + 0x76, 0x78, 0x76, 0xff, 0x6e, 0x70, 0x6e, 0xff, + 0xda, 0xdb, 0xda, 0xff, 0xe7, 0xe8, 0xe7, 0xff, + 0xd5, 0xd6, 0xd5, 0xff, 0xe1, 0xe3, 0xe1, 0xff, + 0xe5, 0xe7, 0xe5, 0xff, 0xfc, 0xfc, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xe7, 0xe8, 0xe7, 0xff, + 0x96, 0x98, 0x96, 0xff, 0x7e, 0x81, 0x7e, 0xff, + 0xd4, 0xd6, 0xd4, 0xff, 0xe6, 0xe8, 0xe6, 0xff, + 0x90, 0x93, 0x90, 0xff, 0x46, 0x48, 0x46, 0xff, + 0x83, 0x84, 0x83, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xcb, 0xcd, 0xcb, 0xff, 0x80, 0x82, 0x80, 0xff, + 0x48, 0x49, 0x48, 0xff, 0x6c, 0x6e, 0x6c, 0xff, + 0xda, 0xdc, 0xda, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf2, 0xf2, 0xf2, 0xff, + 0xf9, 0xf9, 0xf9, 0xff, 0xf8, 0xf9, 0xf8, 0xff, + 0xbc, 0xbe, 0xbc, 0xff, 0x77, 0x7a, 0x77, 0xff, + 0xae, 0xaf, 0xae, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0xf1, 0xf0, 0xff, 0xc0, 0xc2, 0xc0, 0xff, + 0x5c, 0x5f, 0x5c, 0xff, 0x4c, 0x4e, 0x4c, 0xff, + 0xec, 0xed, 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xe7, 0xe8, 0xe7, 0xff, 0xc9, 0xcb, 0xc9, 0xff, + 0xe0, 0xe1, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf8, 0xf8, 0xff, + 0xae, 0xb1, 0xae, 0xff, 0x9a, 0x9d, 0x9a, 0xff, + 0xe3, 0xe4, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf4, 0xf4, 0xf4, 0xff, 0xfd, 0xfd, 0xfd, 0xff, + 0xfa, 0xfb, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x28, 0x75, 0x75, 0x61, 0x79, 0x29, + 0x67, 0x69, 0x6d, 0x70, 0x2f, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x61, 0x6e, 0x64, + 0x61, 0x2e, 0x70, 0x6e, 0x67, 0x00, 0x00, 0x00, + 0x18, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x64, 0x6b, 0x50, 0x00, 0x00, 0x63, 0x18, + 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x04, 0x80, + 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x16, + 0x41, 0x7c, 0xd2, 0xb8, 0x41, 0x7c, 0xd2, 0xb8, + 0x41, 0x7c, 0xd2, 0xb8, 0x41, 0x7c, 0xd2, 0xb8, + 0x39, 0x6d, 0xb8, 0xbf, 0x40, 0x7a, 0xcf, 0xb9, + 0x41, 0x7c, 0xd2, 0xb8, 0x38, 0x6c, 0xb7, 0xbf, + 0x39, 0x6d, 0xb9, 0xbe, 0x41, 0x7c, 0xd2, 0xb8, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x40, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x40, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x40, 0x7c, 0xd2, 0xb9, 0x38, 0x6e, 0xba, 0xbf, + 0x40, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x33, 0x63, 0xa9, 0xc3, 0x3c, 0x74, 0xc5, 0xbc, + 0x40, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x40, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x40, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x40, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x40, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x40, 0x7c, 0xd2, 0xb9, 0x40, 0x7c, 0xd2, 0xb9, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xba, 0x40, 0x7c, 0xd2, 0xba, + 0x39, 0x6f, 0xbc, 0xbf, 0x40, 0x7c, 0xd2, 0xba, + 0x40, 0x7c, 0xd2, 0xbb, 0x30, 0x5d, 0x9d, 0xc8, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x40, 0x7c, 0xd2, 0xbb, + 0x40, 0x7c, 0xd2, 0xbb, 0x3f, 0x7c, 0xd2, 0xbc, + 0x3f, 0x7c, 0xd2, 0xbc, 0x3f, 0x7c, 0xd2, 0xbc, + 0x3f, 0x7c, 0xd2, 0xbc, 0x3f, 0x7c, 0xd2, 0xbc, + 0x3f, 0x7c, 0xd2, 0xbc, 0x3f, 0x7c, 0xd2, 0xbc, + 0x3f, 0x7c, 0xd2, 0xbc, 0x3f, 0x7c, 0xd2, 0xbc, + 0x3f, 0x7c, 0xd2, 0xbc, 0x3f, 0x7c, 0xd2, 0xbc, + 0x3f, 0x7c, 0xd2, 0xbc, 0x3a, 0x72, 0xc2, 0xc0, + 0x3e, 0x7b, 0xd0, 0xbc, 0x3f, 0x7c, 0xd2, 0xbc, + 0x31, 0x61, 0xa5, 0xc7, 0x3f, 0x7c, 0xd2, 0xbc, + 0x3f, 0x7c, 0xd2, 0xbc, 0x3f, 0x7c, 0xd2, 0xbc, + 0x40, 0x7b, 0xce, 0xbd, 0x3f, 0x7c, 0xd2, 0xbc, + 0x3f, 0x7c, 0xd2, 0xbc, 0x40, 0x7c, 0xd2, 0xbc, + 0x40, 0x7c, 0xd2, 0xbc, 0x40, 0x7c, 0xd2, 0xbc, + 0x49, 0x78, 0xc0, 0xc0, 0x9b, 0x62, 0x30, 0xed, + 0xac, 0x5d, 0x11, 0xf9, 0xa3, 0x61, 0x23, 0xf2, + 0x66, 0x6f, 0x89, 0xcf, 0x45, 0x7a, 0xc6, 0xbf, + 0x40, 0x7c, 0xd2, 0xbc, 0x40, 0x7c, 0xd2, 0xbc, + 0x40, 0x7c, 0xd2, 0xbc, 0x40, 0x7c, 0xd2, 0xbc, + 0x40, 0x7c, 0xd2, 0xbc, 0x40, 0x7c, 0xd2, 0xbc, + 0x40, 0x7c, 0xd2, 0xbc, 0x40, 0x7c, 0xd2, 0xbc, + 0x40, 0x7c, 0xd2, 0xbc, 0x40, 0x7c, 0xd2, 0xbc, + 0x40, 0x7c, 0xd2, 0xbc, 0x40, 0x7c, 0xd2, 0xbc, + 0x40, 0x7c, 0xd2, 0xbc, 0x40, 0x7c, 0xd2, 0xbc, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x38, 0x6d, 0xb9, 0xc3, 0x3f, 0x7a, 0xd0, 0xbe, + 0x40, 0x7c, 0xd3, 0xbd, 0x38, 0x6c, 0xb9, 0xc3, + 0x38, 0x6d, 0xbb, 0xc3, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x39, 0x6e, 0xbc, 0xc2, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x33, 0x64, 0xaa, 0xc7, 0x3c, 0x74, 0xc6, 0xc0, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x39, 0x6f, 0xbd, 0xc2, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x30, 0x5d, 0x9e, 0xca, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x3a, 0x71, 0xc1, 0xc1, 0x40, 0x7c, 0xd3, 0xbd, + 0x3f, 0x7b, 0xd1, 0xbd, 0x32, 0x62, 0xa7, 0xc8, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x41, 0x7b, 0xcf, 0xbe, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x49, 0x78, 0xc1, 0xc1, 0x9b, 0x62, 0x31, 0xed, + 0xac, 0x5d, 0x11, 0xf9, 0xa3, 0x61, 0x24, 0xf2, + 0x66, 0x6f, 0x8a, 0xcf, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x44, 0x7a, 0xca, 0xbf, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x40, 0x7c, 0xd3, 0xbd, 0x40, 0x7c, 0xd3, 0xbd, + 0x43, 0x7e, 0xd2, 0xaf, 0x43, 0x7e, 0xd2, 0xaf, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0x43, 0x7d, 0xd0, 0xb1, 0x49, 0x73, 0xad, 0xc2, + 0x43, 0x7e, 0xd2, 0xb0, 0x42, 0x67, 0x9d, 0xc6, + 0x3d, 0x64, 0x9c, 0xc5, 0x43, 0x7e, 0xd2, 0xb0, + 0x42, 0x67, 0xa0, 0xbf, 0x68, 0x71, 0x8b, 0xc4, + 0x5f, 0x73, 0x9a, 0xc0, 0x45, 0x7d, 0xcc, 0xb2, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0x4a, 0x7b, 0xc5, 0xb3, 0x45, 0x7d, 0xd0, 0xb0, + 0x44, 0x7e, 0xd2, 0xb0, 0x44, 0x7e, 0xd2, 0xb0, + 0x44, 0x7e, 0xd2, 0xb0, 0x44, 0x7e, 0xd2, 0xb0, + 0x44, 0x7e, 0xd2, 0xb0, 0x44, 0x7e, 0xd2, 0xb0, + 0x44, 0x7e, 0xd2, 0xb0, 0x44, 0x7e, 0xd2, 0xb0, + 0x44, 0x7e, 0xd2, 0xb0, 0x44, 0x7e, 0xd2, 0xb0, + 0x44, 0x7e, 0xd2, 0xb0, 0x44, 0x7e, 0xd2, 0xb0, + 0x44, 0x7e, 0xd2, 0xb0, 0x48, 0x79, 0xc1, 0xb8, + 0x46, 0x78, 0xc0, 0xb8, 0x44, 0x7e, 0xd2, 0xb0, + 0x3f, 0x59, 0x7f, 0xd4, 0x40, 0x6f, 0xb4, 0xba, + 0x44, 0x7e, 0xd2, 0xb0, 0x3a, 0x68, 0xaa, 0xbc, + 0x45, 0x7d, 0xd0, 0xb0, 0x44, 0x7d, 0xce, 0xb2, + 0x43, 0x7e, 0xd2, 0xb1, 0x43, 0x7e, 0xd2, 0xb1, + 0x43, 0x7e, 0xd2, 0xb1, 0x43, 0x7e, 0xd2, 0xb1, + 0x43, 0x7e, 0xd2, 0xb1, 0x43, 0x7e, 0xd2, 0xb1, + 0x43, 0x7e, 0xd2, 0xb1, 0x43, 0x7e, 0xd2, 0xb1, + 0x43, 0x7e, 0xd2, 0xb1, 0x43, 0x7e, 0xd2, 0xb1, + 0x43, 0x7e, 0xd2, 0xb1, 0x43, 0x7e, 0xd2, 0xb1, + 0x43, 0x7e, 0xd2, 0xb1, 0x43, 0x7e, 0xd2, 0xb1, + 0x43, 0x7e, 0xd2, 0xb1, 0x43, 0x7e, 0xd2, 0xb1, + 0x42, 0x7e, 0xd2, 0xb1, 0x42, 0x7e, 0xd2, 0xb1, + 0x42, 0x7e, 0xd2, 0xb1, 0x42, 0x7e, 0xd2, 0xb1, + 0x42, 0x7e, 0xd2, 0xb1, 0x42, 0x7e, 0xd2, 0xb1, + 0x42, 0x7e, 0xd2, 0xb2, 0x42, 0x7e, 0xd2, 0xb2, + 0x42, 0x7e, 0xd2, 0xb2, 0x42, 0x7e, 0xd2, 0xb2, + 0x42, 0x7e, 0xd2, 0xb2, 0x42, 0x7e, 0xd2, 0xb2, + 0x48, 0x74, 0xb3, 0xc1, 0x42, 0x7e, 0xd2, 0xb2, + 0x41, 0x7c, 0xce, 0xb3, 0x38, 0x4d, 0x6a, 0xde, + 0x42, 0x7e, 0xd2, 0xb2, 0x39, 0x68, 0xac, 0xbe, + 0x43, 0x7c, 0xd0, 0xb2, 0x43, 0x7c, 0xce, 0xb3, + 0x42, 0x7d, 0xd2, 0xb2, 0x42, 0x7d, 0xd2, 0xb2, + 0x42, 0x7d, 0xd2, 0xb2, 0x42, 0x7d, 0xd2, 0xb2, + 0x42, 0x7d, 0xd2, 0xb2, 0x42, 0x7d, 0xd2, 0xb2, + 0x42, 0x7d, 0xd2, 0xb2, 0x42, 0x7d, 0xd2, 0xb2, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xcf, 0xb4, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7c, 0xd1, 0xb3, + 0x48, 0x74, 0xb4, 0xc2, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x5c, 0x83, 0xd6, 0x59, 0x6d, 0x94, 0xc5, + 0x89, 0x67, 0x4e, 0xdc, 0x94, 0x56, 0x1a, 0xf6, + 0xb1, 0x5a, 0x05, 0xfe, 0xb0, 0x59, 0x05, 0xfd, + 0xab, 0x5f, 0x16, 0xf6, 0x98, 0x64, 0x37, 0xe6, + 0x64, 0x71, 0x90, 0xc5, 0x50, 0x77, 0xb5, 0xba, + 0xa8, 0x5e, 0x18, 0xf4, 0xd9, 0x9d, 0x58, 0xfe, + 0xf7, 0xc7, 0x85, 0xff, 0xeb, 0xb3, 0x6d, 0xff, + 0xb5, 0x62, 0x0f, 0xfd, 0x88, 0x64, 0x4a, 0xdd, + 0x91, 0x61, 0x3a, 0xe4, 0x48, 0x7a, 0xc5, 0xb6, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb3, + 0x42, 0x7d, 0xd2, 0xb3, 0x42, 0x7d, 0xd2, 0xb4, + 0x42, 0x7d, 0xd2, 0xb4, 0x42, 0x7d, 0xd2, 0xb4, + 0x42, 0x7d, 0xd2, 0xb4, 0x42, 0x7d, 0xd2, 0xb4, + 0x42, 0x7d, 0xd2, 0xb4, 0x42, 0x7d, 0xd2, 0xb4, + 0x42, 0x7d, 0xd2, 0xb4, 0x42, 0x7d, 0xd2, 0xb4, + 0x42, 0x7d, 0xd2, 0xb4, 0x42, 0x7d, 0xd2, 0xb4, + 0x42, 0x7c, 0xd0, 0xb5, 0x49, 0x72, 0xae, 0xc5, + 0x42, 0x7d, 0xd2, 0xb4, 0x41, 0x67, 0x9e, 0xc9, + 0x3d, 0x64, 0x9c, 0xc8, 0x42, 0x7d, 0xd2, 0xb4, + 0x42, 0x67, 0xa1, 0xc3, 0x66, 0x71, 0x8c, 0xc7, + 0x5e, 0x72, 0x9b, 0xc3, 0x44, 0x7c, 0xcc, 0xb5, + 0x42, 0x7d, 0xd2, 0xb4, 0x42, 0x7d, 0xd2, 0xb4, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x49, 0x7b, 0xc5, 0xb8, 0x43, 0x7c, 0xd0, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x42, 0x7d, 0xd2, 0xb5, + 0x42, 0x7d, 0xd2, 0xb5, 0x45, 0x79, 0xc2, 0xbe, + 0x43, 0x77, 0xc1, 0xbd, 0x41, 0x7d, 0xd2, 0xb6, + 0x3d, 0x59, 0x80, 0xd7, 0x3d, 0x6f, 0xb5, 0xbf, + 0x41, 0x7d, 0xd2, 0xb6, 0x38, 0x68, 0xab, 0xc1, + 0x42, 0x7c, 0xd0, 0xb6, 0x42, 0x7c, 0xce, 0xb7, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x41, 0x7d, 0xd2, 0xb6, + 0x47, 0x74, 0xb4, 0xc4, 0x41, 0x7d, 0xd2, 0xb6, + 0x41, 0x7d, 0xd2, 0xb6, 0x39, 0x4d, 0x69, 0xe1, + 0x41, 0x7d, 0xd2, 0xb6, 0x3a, 0x6c, 0xb2, 0xbf, + 0x3f, 0x79, 0xcc, 0xb7, 0x42, 0x7c, 0xce, 0xb7, + 0x41, 0x7d, 0xd2, 0xb7, 0x41, 0x7d, 0xd2, 0xb7, + 0x41, 0x7d, 0xd2, 0xb7, 0x41, 0x7d, 0xd2, 0xb7, + 0x41, 0x7d, 0xd2, 0xb7, 0x41, 0x7d, 0xd2, 0xb7, + 0x41, 0x7d, 0xd2, 0xb7, 0x41, 0x7d, 0xd2, 0xb7, + 0x41, 0x7d, 0xd2, 0xb7, 0x41, 0x7d, 0xcf, 0xb8, + 0x41, 0x7d, 0xd2, 0xb7, 0x41, 0x7d, 0xd2, 0xb7, + 0x41, 0x7d, 0xd2, 0xb7, 0x41, 0x7d, 0xd2, 0xb7, + 0x41, 0x7d, 0xd2, 0xb7, 0x41, 0x7d, 0xd2, 0xb7, + 0x41, 0x7c, 0xd2, 0xb7, 0x41, 0x7c, 0xd2, 0xb7, + 0x41, 0x7c, 0xd2, 0xb7, 0x41, 0x7c, 0xd2, 0xb7, + 0x41, 0x7c, 0xd2, 0xb7, 0x41, 0x7c, 0xd2, 0xb7, + 0x41, 0x7c, 0xd2, 0xb8, 0x41, 0x7c, 0xd2, 0xb8, + 0x41, 0x7c, 0xd2, 0xb8, 0x41, 0x7c, 0xd2, 0xb8, + 0x41, 0x7c, 0xd2, 0xb8, 0x41, 0x7c, 0xd2, 0xb8, + 0x41, 0x7c, 0xd2, 0xb8, 0x41, 0x7c, 0xd2, 0xb8, + 0x49, 0x75, 0xb5, 0xc6, 0x41, 0x7c, 0xd2, 0xb8, + 0x41, 0x75, 0xc1, 0xbe, 0x4b, 0x56, 0x6c, 0xde, + 0x88, 0x66, 0x50, 0xdf, 0x94, 0x56, 0x1b, 0xf6, + 0xb0, 0x58, 0x02, 0xfe, 0xb0, 0x59, 0x05, 0xfd, + 0xab, 0x5f, 0x16, 0xf6, 0x97, 0x64, 0x38, 0xe8, + 0x63, 0x70, 0x91, 0xc9, 0x4f, 0x77, 0xb6, 0xbf, + 0xa8, 0x5e, 0x18, 0xf5, 0xd8, 0x99, 0x52, 0xfd, + 0xf7, 0xc6, 0x83, 0xff, 0xea, 0xb1, 0x68, 0xff, + 0xb4, 0x61, 0x0d, 0xfd, 0x7f, 0x67, 0x5d, 0xda, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x81, 0x66, 0x59, 0xdc, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x41, 0x7c, 0xd2, 0xb9, 0x41, 0x7c, 0xd2, 0xb9, + 0x45, 0x80, 0xd2, 0xa7, 0x45, 0x80, 0xd2, 0xa7, + 0x45, 0x80, 0xd2, 0xa7, 0x45, 0x80, 0xd2, 0xa7, + 0x45, 0x80, 0xd2, 0xa7, 0x69, 0x83, 0xa7, 0xcf, + 0x4f, 0x82, 0xc8, 0xb0, 0x6a, 0x8b, 0xb9, 0xc4, + 0x8b, 0x7f, 0x7a, 0xe4, 0xad, 0x66, 0x20, 0xf3, + 0xa7, 0x7e, 0x54, 0xfe, 0xd7, 0xa3, 0x66, 0xfc, + 0xd6, 0xa0, 0x64, 0xfd, 0xbb, 0x6d, 0x23, 0xfd, + 0xa6, 0x62, 0x1f, 0xee, 0x7a, 0x6c, 0x6a, 0xc9, + 0x49, 0x7d, 0xc9, 0xa9, 0x45, 0x80, 0xd2, 0xa8, + 0x77, 0x6d, 0x70, 0xc8, 0x9e, 0x65, 0x2f, 0xe6, + 0xa6, 0x62, 0x21, 0xee, 0xac, 0x60, 0x18, 0xf4, + 0xb3, 0x62, 0x16, 0xf9, 0xb0, 0x59, 0x05, 0xfd, + 0x93, 0x62, 0x3a, 0xdf, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x7f, 0xd2, 0xa8, + 0x70, 0x87, 0xa6, 0xd5, 0x45, 0x7f, 0xd2, 0xa8, + 0x83, 0x93, 0xab, 0xdf, 0x69, 0x7d, 0xa0, 0xc5, + 0x87, 0x69, 0x56, 0xd9, 0x92, 0x69, 0x44, 0xf3, + 0xb0, 0x5b, 0x09, 0xfc, 0xb2, 0x5b, 0x08, 0xfe, + 0xac, 0x5f, 0x15, 0xf4, 0x8e, 0x67, 0x48, 0xd9, + 0x66, 0x72, 0x91, 0xbc, 0x45, 0x7f, 0xd2, 0xa8, + 0x45, 0x7f, 0xd2, 0xa8, 0x45, 0x7f, 0xd2, 0xa8, + 0x45, 0x7f, 0xd2, 0xa8, 0x4b, 0x7c, 0xc5, 0xab, + 0x5e, 0x76, 0xa0, 0xb7, 0x59, 0x77, 0xab, 0xb3, + 0x52, 0x7a, 0xb7, 0xb0, 0x4c, 0x7c, 0xc4, 0xac, + 0x46, 0x7e, 0xd0, 0xa8, 0x45, 0x7f, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa9, 0x45, 0x80, 0xd2, 0xa9, + 0x45, 0x80, 0xd2, 0xa9, 0x45, 0x80, 0xd2, 0xa9, + 0x45, 0x80, 0xd2, 0xa9, 0x45, 0x80, 0xd2, 0xa9, + 0x45, 0x80, 0xd2, 0xa9, 0x45, 0x80, 0xd2, 0xa9, + 0x45, 0x80, 0xd2, 0xa9, 0x45, 0x80, 0xd2, 0xa9, + 0x45, 0x80, 0xd2, 0xa9, 0x45, 0x80, 0xd2, 0xa9, + 0x45, 0x80, 0xd2, 0xa9, 0x45, 0x80, 0xd2, 0xa9, + 0x5f, 0x82, 0xb4, 0xc3, 0x59, 0x84, 0xc0, 0xba, + 0x55, 0x85, 0xc8, 0xb4, 0x87, 0x8f, 0x9a, 0xea, + 0x86, 0x68, 0x55, 0xd4, 0x90, 0x6e, 0x4f, 0xf4, + 0xb0, 0x5a, 0x07, 0xfc, 0xb0, 0x58, 0x02, 0xfe, + 0xae, 0x5d, 0x0d, 0xf9, 0xa3, 0x63, 0x26, 0xeb, + 0x88, 0x68, 0x52, 0xd6, 0x58, 0x77, 0xab, 0xb5, + 0x45, 0x7f, 0xd2, 0xaa, 0x45, 0x7f, 0xd2, 0xaa, + 0x6d, 0x70, 0x84, 0xc2, 0xa5, 0x62, 0x23, 0xed, + 0xb0, 0x5b, 0x08, 0xfb, 0xb1, 0x5a, 0x07, 0xfe, + 0xaf, 0x5e, 0x10, 0xf9, 0xa2, 0x5f, 0x1f, 0xee, + 0x65, 0x72, 0x90, 0xbe, 0x44, 0x7f, 0xd2, 0xaa, + 0x44, 0x7f, 0xd2, 0xaa, 0x44, 0x7f, 0xd2, 0xaa, + 0x44, 0x7f, 0xd2, 0xaa, 0x44, 0x7f, 0xd2, 0xaa, + 0x44, 0x7f, 0xd2, 0xaa, 0x44, 0x7f, 0xd2, 0xaa, + 0x44, 0x7f, 0xd2, 0xaa, 0x44, 0x7f, 0xd2, 0xaa, + 0x44, 0x7f, 0xd2, 0xaa, 0x44, 0x80, 0xd2, 0xaa, + 0x44, 0x80, 0xd2, 0xaa, 0x44, 0x80, 0xd2, 0xaa, + 0x44, 0x80, 0xd2, 0xaa, 0x44, 0x80, 0xd2, 0xaa, + 0x44, 0x80, 0xd2, 0xaa, 0x44, 0x80, 0xd2, 0xaa, + 0x67, 0x83, 0xa9, 0xcf, 0x50, 0x81, 0xc4, 0xb4, + 0x90, 0x7f, 0x72, 0xe7, 0xac, 0x76, 0x41, 0xfc, + 0xee, 0xc1, 0x88, 0xff, 0xc6, 0xb4, 0x9c, 0xff, + 0xfd, 0xe5, 0xc1, 0xff, 0xfd, 0xe6, 0xc3, 0xff, + 0xfa, 0xdc, 0xb1, 0xff, 0xf1, 0xc7, 0x8e, 0xff, + 0xca, 0x86, 0x40, 0xfc, 0xb1, 0x5b, 0x06, 0xfe, + 0xde, 0xa4, 0x5f, 0xfe, 0xfd, 0xd7, 0xa0, 0xff, + 0xfc, 0xc7, 0x7a, 0xff, 0xf5, 0xc5, 0x84, 0xff, + 0xb0, 0x5b, 0x08, 0xfb, 0x4f, 0x7a, 0xbb, 0xb1, + 0xad, 0x5b, 0x0b, 0xf9, 0xaa, 0x5e, 0x14, 0xf5, + 0x5b, 0x76, 0xa5, 0xb8, 0x44, 0x7f, 0xd2, 0xab, + 0x44, 0x7f, 0xd2, 0xab, 0x44, 0x7f, 0xd2, 0xab, + 0x44, 0x7f, 0xd2, 0xab, 0x44, 0x7f, 0xd2, 0xab, + 0x44, 0x7f, 0xd2, 0xab, 0x44, 0x7f, 0xd2, 0xab, + 0x44, 0x7f, 0xd2, 0xab, 0x44, 0x7f, 0xd2, 0xab, + 0x44, 0x7f, 0xd2, 0xab, 0x44, 0x7f, 0xd2, 0xab, + 0x44, 0x7f, 0xd2, 0xab, 0x44, 0x7f, 0xd2, 0xab, + 0x44, 0x7f, 0xd2, 0xab, 0x69, 0x83, 0xa8, 0xd1, + 0x4e, 0x81, 0xc9, 0xb3, 0x69, 0x8b, 0xba, 0xc7, + 0x8a, 0x7f, 0x7a, 0xe6, 0xad, 0x66, 0x20, 0xf4, + 0xa5, 0x7a, 0x50, 0xfe, 0xd5, 0x9d, 0x5d, 0xfc, + 0xd1, 0x95, 0x53, 0xfc, 0xb4, 0x5e, 0x0b, 0xfd, + 0xa5, 0x61, 0x1f, 0xef, 0x79, 0x6c, 0x6c, 0xcc, + 0x48, 0x7d, 0xc9, 0xae, 0x44, 0x80, 0xd2, 0xac, + 0x76, 0x6d, 0x71, 0xca, 0x9d, 0x65, 0x30, 0xe7, + 0xa5, 0x62, 0x22, 0xee, 0xaa, 0x5f, 0x16, 0xf5, + 0xaf, 0x5b, 0x0c, 0xf9, 0xb0, 0x58, 0x04, 0xfd, + 0x92, 0x62, 0x3b, 0xe0, 0x44, 0x80, 0xd2, 0xac, + 0x44, 0x80, 0xd2, 0xac, 0x44, 0x80, 0xd2, 0xac, + 0x44, 0x80, 0xd2, 0xac, 0x44, 0x80, 0xd2, 0xac, + 0x44, 0x7f, 0xd2, 0xad, 0x44, 0x7f, 0xd2, 0xad, + 0x44, 0x7f, 0xd2, 0xad, 0x44, 0x7f, 0xd2, 0xad, + 0x44, 0x7f, 0xd2, 0xad, 0x44, 0x7f, 0xd2, 0xad, + 0x44, 0x7e, 0xd2, 0xad, 0x44, 0x7e, 0xd2, 0xad, + 0x44, 0x7e, 0xd2, 0xad, 0x44, 0x7e, 0xd2, 0xad, + 0x6f, 0x86, 0xa7, 0xd7, 0x44, 0x7e, 0xd2, 0xad, + 0x83, 0x93, 0xab, 0xe1, 0x68, 0x7d, 0xa1, 0xc9, + 0x86, 0x69, 0x58, 0xdb, 0x92, 0x69, 0x44, 0xf4, + 0xb0, 0x5b, 0x09, 0xfc, 0xb2, 0x5b, 0x08, 0xfe, + 0xab, 0x5f, 0x15, 0xf5, 0x8d, 0x67, 0x4a, 0xdb, + 0x64, 0x72, 0x92, 0xc0, 0x44, 0x7e, 0xd2, 0xad, + 0x44, 0x7e, 0xd2, 0xad, 0x44, 0x7e, 0xd2, 0xad, + 0x44, 0x7e, 0xd2, 0xad, 0x4a, 0x7b, 0xc6, 0xb0, + 0x5d, 0x75, 0xa1, 0xbb, 0x57, 0x76, 0xac, 0xb8, + 0x50, 0x79, 0xb8, 0xb4, 0x4b, 0x7b, 0xc4, 0xb1, + 0x45, 0x7d, 0xd0, 0xad, 0x44, 0x7e, 0xd2, 0xad, + 0x44, 0x7e, 0xd2, 0xad, 0x44, 0x7e, 0xd2, 0xad, + 0x44, 0x7e, 0xd2, 0xad, 0x44, 0x7e, 0xd2, 0xad, + 0x44, 0x7e, 0xd2, 0xad, 0x44, 0x7e, 0xd2, 0xad, + 0x44, 0x7e, 0xd2, 0xad, 0x44, 0x7e, 0xd2, 0xad, + 0x42, 0x7e, 0xd2, 0xad, 0x42, 0x7e, 0xd2, 0xad, + 0x42, 0x7e, 0xd2, 0xad, 0x42, 0x7e, 0xd2, 0xad, + 0x42, 0x7e, 0xd2, 0xad, 0x43, 0x7e, 0xd3, 0xae, + 0x59, 0x81, 0xb9, 0xc3, 0x5c, 0x84, 0xbd, 0xc2, + 0x4c, 0x81, 0xcd, 0xb4, 0x8a, 0x91, 0x9b, 0xef, + 0x82, 0x68, 0x5b, 0xd5, 0x8f, 0x6f, 0x51, 0xf4, + 0xaf, 0x5b, 0x08, 0xfb, 0xb1, 0x58, 0x02, 0xfe, + 0xae, 0x5c, 0x0c, 0xfa, 0xa3, 0x62, 0x26, 0xed, + 0x89, 0x66, 0x4f, 0xda, 0x58, 0x76, 0xa7, 0xba, + 0x43, 0x7e, 0xd3, 0xae, 0x43, 0x7e, 0xd3, 0xae, + 0x66, 0x71, 0x8d, 0xc2, 0xa2, 0x63, 0x27, 0xec, + 0xaf, 0x5b, 0x08, 0xfb, 0xb1, 0x5a, 0x07, 0xfe, + 0xaf, 0x5f, 0x0f, 0xfa, 0xa4, 0x5e, 0x20, 0xef, + 0x6a, 0x70, 0x87, 0xc4, 0x43, 0x7e, 0xd3, 0xae, + 0x43, 0x7e, 0xd2, 0xaf, 0x43, 0x7e, 0xd2, 0xaf, + 0x43, 0x7e, 0xd2, 0xaf, 0x43, 0x7e, 0xd2, 0xaf, + 0x43, 0x7e, 0xd2, 0xaf, 0x43, 0x7e, 0xd2, 0xaf, + 0x43, 0x7e, 0xd2, 0xaf, 0x43, 0x7e, 0xd2, 0xaf, + 0x43, 0x7e, 0xd2, 0xaf, 0x43, 0x7e, 0xd2, 0xaf, + 0x43, 0x7e, 0xd2, 0xaf, 0x43, 0x7e, 0xd2, 0xaf, + 0x43, 0x7e, 0xd2, 0xaf, 0x43, 0x7e, 0xd2, 0xaf, + 0x43, 0x7e, 0xd2, 0xaf, 0x43, 0x7e, 0xd2, 0xaf, + 0x51, 0x7e, 0xbf, 0xbd, 0x65, 0x84, 0xb0, 0xcd, + 0x88, 0x6a, 0x57, 0xda, 0xa4, 0x88, 0x6e, 0xfe, + 0xec, 0xbe, 0x83, 0xff, 0xc9, 0xb6, 0x9d, 0xff, + 0xfa, 0xe3, 0xc0, 0xff, 0xfd, 0xe5, 0xc2, 0xff, + 0xfa, 0xdb, 0xae, 0xff, 0xf0, 0xc5, 0x8b, 0xff, + 0xc9, 0x84, 0x3c, 0xfc, 0xb0, 0x59, 0x03, 0xfe, + 0xdd, 0xa1, 0x59, 0xfe, 0xfd, 0xd8, 0xa2, 0xff, + 0xfc, 0xc9, 0x7e, 0xff, 0xf5, 0xc4, 0x83, 0xff, + 0xb0, 0x5b, 0x09, 0xfb, 0x4e, 0x79, 0xbc, 0xb6, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0xae, 0x58, 0x04, 0xfc, 0x54, 0x77, 0xb1, 0xb9, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0x43, 0x7e, 0xd2, 0xb0, 0x43, 0x7e, 0xd2, 0xb0, + 0x43, 0x7e, 0xd2, 0xb0, 0x44, 0x7e, 0xd2, 0xb0, + 0x48, 0x81, 0xd2, 0x9e, 0x48, 0x81, 0xd2, 0x9e, + 0x48, 0x81, 0xd2, 0x9e, 0x48, 0x81, 0xd2, 0x9e, + 0x48, 0x81, 0xd2, 0x9e, 0x46, 0x7a, 0xc4, 0xa3, + 0x45, 0x4c, 0x56, 0xe6, 0x90, 0x5a, 0x28, 0xf0, + 0x6c, 0x62, 0x57, 0xfe, 0xe5, 0xd1, 0xb2, 0xff, + 0xa8, 0x9e, 0x8f, 0xff, 0xfb, 0xde, 0xb4, 0xff, + 0xfd, 0xe1, 0xb7, 0xff, 0xfe, 0xe5, 0xbf, 0xff, + 0xf9, 0xdb, 0xb2, 0xff, 0xdd, 0xac, 0x72, 0xfd, + 0xb5, 0x67, 0x1c, 0xf9, 0xa7, 0x60, 0x1b, 0xee, + 0xc4, 0x7e, 0x37, 0xfb, 0xec, 0xba, 0x7c, 0xff, + 0xf2, 0xc6, 0x8c, 0xff, 0xf5, 0xcd, 0x96, 0xff, + 0xdc, 0xa3, 0x60, 0xfe, 0xa8, 0x60, 0x1c, 0xee, + 0x4b, 0x7e, 0xc8, 0xa2, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x49, 0x80, 0xcb, 0xa1, + 0x4f, 0x7d, 0xc1, 0xa3, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x47, 0x81, 0xd2, 0x9f, + 0x41, 0x61, 0x8d, 0xbf, 0x4a, 0x59, 0x70, 0xd4, + 0x73, 0x5a, 0x46, 0xea, 0x7a, 0x61, 0x46, 0xfe, + 0xb8, 0x9d, 0x79, 0xff, 0xcb, 0xb8, 0x9c, 0xff, + 0xfd, 0xe6, 0xc3, 0xff, 0xfd, 0xe7, 0xc5, 0xff, + 0xfb, 0xdf, 0xb6, 0xff, 0xee, 0xc1, 0x87, 0xfe, + 0xc7, 0x82, 0x3a, 0xfb, 0xa7, 0x61, 0x1d, 0xed, + 0x6f, 0x71, 0x82, 0xb9, 0x68, 0x73, 0x8f, 0xb5, + 0x99, 0x65, 0x38, 0xdd, 0xb1, 0x5b, 0x07, 0xfb, + 0xb6, 0x62, 0x0e, 0xfa, 0xb6, 0x63, 0x11, 0xfb, + 0xb2, 0x5b, 0x05, 0xfc, 0xb1, 0x57, 0x00, 0xff, + 0xae, 0x58, 0x04, 0xfc, 0x80, 0x6a, 0x5f, 0xc9, + 0x47, 0x80, 0xcf, 0xa1, 0x47, 0x81, 0xd2, 0xa0, + 0x47, 0x81, 0xd2, 0xa0, 0x47, 0x81, 0xd2, 0xa0, + 0x47, 0x81, 0xd2, 0xa0, 0x47, 0x81, 0xd2, 0xa0, + 0x47, 0x81, 0xd2, 0xa0, 0x47, 0x81, 0xd2, 0xa0, + 0x47, 0x81, 0xd2, 0xa0, 0x47, 0x81, 0xd2, 0xa0, + 0x47, 0x81, 0xd2, 0xa0, 0x47, 0x81, 0xd2, 0xa0, + 0x47, 0x81, 0xd2, 0xa0, 0x47, 0x81, 0xd2, 0xa0, + 0x46, 0x80, 0xd1, 0xa1, 0x42, 0x4e, 0x5e, 0xe2, + 0x79, 0x60, 0x4e, 0xdb, 0x60, 0x57, 0x4e, 0xff, + 0xd1, 0xab, 0x7a, 0xfe, 0x93, 0x8b, 0x7f, 0xff, + 0xfb, 0xe3, 0xc0, 0xff, 0xfd, 0xe8, 0xc7, 0xff, + 0xfd, 0xe4, 0xbe, 0xff, 0xf8, 0xd6, 0xa7, 0xff, + 0xec, 0xbe, 0x83, 0xfe, 0xc7, 0x82, 0x38, 0xfd, + 0xa6, 0x64, 0x25, 0xec, 0xa9, 0x60, 0x1a, 0xf0, + 0xbd, 0x70, 0x23, 0xfb, 0xeb, 0xb3, 0x6b, 0xff, + 0xf9, 0xcd, 0x8d, 0xff, 0xf8, 0xca, 0x89, 0xff, + 0xb6, 0x62, 0x0e, 0xfc, 0x8c, 0x68, 0x4e, 0xd2, + 0x47, 0x81, 0xd2, 0xa1, 0x47, 0x81, 0xd2, 0xa1, + 0x47, 0x81, 0xd2, 0xa1, 0x47, 0x81, 0xd3, 0xa2, + 0x47, 0x81, 0xd3, 0xa2, 0x47, 0x81, 0xd3, 0xa2, + 0x47, 0x81, 0xd3, 0xa2, 0x47, 0x81, 0xd3, 0xa2, + 0x47, 0x81, 0xd3, 0xa2, 0x47, 0x81, 0xd3, 0xa2, + 0x47, 0x81, 0xd3, 0xa2, 0x47, 0x81, 0xd3, 0xa2, + 0x47, 0x81, 0xd3, 0xa2, 0x47, 0x81, 0xd3, 0xa2, + 0x47, 0x80, 0xd3, 0xa2, 0x47, 0x80, 0xd3, 0xa2, + 0x47, 0x80, 0xd3, 0xa2, 0x47, 0x80, 0xd3, 0xa2, + 0x4e, 0x75, 0xb1, 0xad, 0x59, 0x46, 0x35, 0xfa, + 0xb6, 0x87, 0x54, 0xfd, 0x7d, 0x77, 0x6d, 0xff, + 0xf1, 0xd6, 0xaf, 0xff, 0xa0, 0x93, 0x80, 0xff, + 0xfb, 0xd4, 0x9a, 0xff, 0xfd, 0xd6, 0x9d, 0xff, + 0xfd, 0xd8, 0xa2, 0xff, 0xfd, 0xde, 0xb0, 0xff, + 0xfd, 0xe6, 0xc3, 0xff, 0xfc, 0xe1, 0xbc, 0xff, + 0xfd, 0xd5, 0x99, 0xff, 0xfc, 0xc7, 0x7b, 0xff, + 0xfc, 0xc7, 0x79, 0xff, 0xcf, 0x8c, 0x44, 0xfc, + 0x82, 0x69, 0x5c, 0xcb, 0x46, 0x80, 0xd2, 0xa2, + 0x9c, 0x64, 0x31, 0xe2, 0xc0, 0x69, 0x0d, 0xff, + 0xac, 0x5d, 0x10, 0xf6, 0x4d, 0x7d, 0xc4, 0xa6, + 0x46, 0x80, 0xd2, 0xa2, 0x46, 0x80, 0xd2, 0xa2, + 0x46, 0x80, 0xd2, 0xa2, 0x46, 0x80, 0xd2, 0xa2, + 0x46, 0x80, 0xd2, 0xa2, 0x46, 0x80, 0xd2, 0xa2, + 0x46, 0x80, 0xd2, 0xa2, 0x46, 0x80, 0xd2, 0xa2, + 0x46, 0x80, 0xd2, 0xa3, 0x46, 0x80, 0xd2, 0xa3, + 0x46, 0x80, 0xd2, 0xa3, 0x46, 0x80, 0xd2, 0xa3, + 0x46, 0x80, 0xd2, 0xa3, 0x44, 0x79, 0xc4, 0xa8, + 0x45, 0x4c, 0x57, 0xe8, 0x8f, 0x5a, 0x29, 0xf1, + 0x6c, 0x62, 0x56, 0xfe, 0xe5, 0xcf, 0xaf, 0xff, + 0xa8, 0x9f, 0x90, 0xff, 0xfb, 0xe0, 0xb8, 0xff, + 0xfd, 0xe4, 0xbf, 0xff, 0xfe, 0xe6, 0xc2, 0xff, + 0xf7, 0xd1, 0x9a, 0xff, 0xd6, 0x9a, 0x54, 0xfc, + 0xb1, 0x5f, 0x0f, 0xf9, 0xa6, 0x60, 0x1c, 0xee, + 0xc4, 0x7e, 0x36, 0xfc, 0xeb, 0xb6, 0x73, 0xff, + 0xf0, 0xc0, 0x82, 0xff, 0xf5, 0xc9, 0x8e, 0xff, + 0xda, 0x9f, 0x59, 0xfe, 0xa7, 0x60, 0x1d, 0xef, + 0x4a, 0x7d, 0xc9, 0xa6, 0x46, 0x80, 0xd2, 0xa4, + 0x46, 0x80, 0xd2, 0xa4, 0x46, 0x80, 0xd2, 0xa4, + 0x46, 0x80, 0xd2, 0xa4, 0x46, 0x80, 0xd2, 0xa4, + 0x46, 0x80, 0xd2, 0xa4, 0x46, 0x80, 0xd2, 0xa4, + 0x46, 0x80, 0xd2, 0xa4, 0x46, 0x80, 0xd2, 0xa4, + 0x46, 0x80, 0xd2, 0xa4, 0x46, 0x80, 0xd2, 0xa4, + 0x46, 0x80, 0xd2, 0xa4, 0x46, 0x80, 0xd2, 0xa4, + 0x46, 0x80, 0xd2, 0xa4, 0x46, 0x80, 0xd2, 0xa4, + 0x40, 0x61, 0x8e, 0xc3, 0x4a, 0x59, 0x71, 0xd6, + 0x73, 0x5a, 0x47, 0xeb, 0x7a, 0x61, 0x46, 0xfe, + 0xb8, 0x9d, 0x79, 0xff, 0xcb, 0xb8, 0x9c, 0xff, + 0xfd, 0xe6, 0xc3, 0xff, 0xfd, 0xe7, 0xc5, 0xff, + 0xfb, 0xdf, 0xb6, 0xff, 0xee, 0xc1, 0x87, 0xfe, + 0xc7, 0x82, 0x3a, 0xfb, 0xa7, 0x61, 0x1d, 0xee, + 0x6e, 0x71, 0x84, 0xbe, 0x67, 0x72, 0x91, 0xb9, + 0x98, 0x65, 0x39, 0xdf, 0xb1, 0x5b, 0x07, 0xfb, + 0xb6, 0x62, 0x0e, 0xfa, 0xb6, 0x63, 0x11, 0xfb, + 0xb1, 0x5b, 0x05, 0xfd, 0xb1, 0x57, 0x00, 0xff, + 0xae, 0x58, 0x04, 0xfc, 0x7f, 0x6a, 0x60, 0xcc, + 0x46, 0x7f, 0xcf, 0xa6, 0x46, 0x80, 0xd2, 0xa5, + 0x46, 0x80, 0xd2, 0xa5, 0x46, 0x80, 0xd2, 0xa5, + 0x46, 0x80, 0xd2, 0xa5, 0x46, 0x80, 0xd2, 0xa5, + 0x46, 0x80, 0xd2, 0xa5, 0x46, 0x80, 0xd2, 0xa5, + 0x46, 0x80, 0xd2, 0xa5, 0x46, 0x80, 0xd2, 0xa5, + 0x46, 0x80, 0xd2, 0xa5, 0x46, 0x80, 0xd2, 0xa5, + 0x46, 0x80, 0xd2, 0xa5, 0x46, 0x80, 0xd2, 0xa5, + 0x46, 0x80, 0xd2, 0xa5, 0x41, 0x4e, 0x62, 0xe1, + 0x75, 0x61, 0x55, 0xda, 0x63, 0x57, 0x4c, 0xfe, + 0xc8, 0xa3, 0x74, 0xfe, 0x93, 0x8b, 0x7e, 0xff, + 0xfb, 0xe3, 0xbf, 0xff, 0xfd, 0xe8, 0xc7, 0xff, + 0xfd, 0xe4, 0xbf, 0xff, 0xf9, 0xd8, 0xa9, 0xff, + 0xec, 0xc0, 0x86, 0xfe, 0xc9, 0x86, 0x3c, 0xfd, + 0xaa, 0x65, 0x24, 0xef, 0xa5, 0x61, 0x1f, 0xee, + 0xbb, 0x6d, 0x1e, 0xfb, 0xe9, 0xb0, 0x67, 0xff, + 0xf9, 0xcc, 0x8c, 0xff, 0xf9, 0xcd, 0x8d, 0xff, + 0xba, 0x67, 0x13, 0xfc, 0x91, 0x67, 0x42, 0xda, + 0x45, 0x80, 0xd1, 0xa6, 0x45, 0x80, 0xd1, 0xa6, + 0x45, 0x80, 0xd1, 0xa6, 0x45, 0x80, 0xd1, 0xa6, + 0x45, 0x80, 0xd1, 0xa6, 0x45, 0x80, 0xd1, 0xa6, + 0x45, 0x80, 0xd1, 0xa6, 0x45, 0x80, 0xd1, 0xa6, + 0x45, 0x80, 0xd1, 0xa6, 0x45, 0x80, 0xd1, 0xa6, + 0x45, 0x80, 0xd1, 0xa6, 0x45, 0x80, 0xd1, 0xa6, + 0x45, 0x80, 0xd1, 0xa6, 0x45, 0x80, 0xd1, 0xa6, + 0x45, 0x80, 0xd1, 0xa6, 0x45, 0x80, 0xd1, 0xa6, + 0x45, 0x80, 0xd2, 0xa7, 0x45, 0x80, 0xd2, 0xa7, + 0x4f, 0x7b, 0xbd, 0xad, 0x69, 0x4a, 0x2d, 0xf8, + 0x9d, 0x76, 0x4c, 0xfd, 0x97, 0x8c, 0x7c, 0xff, + 0xca, 0xb7, 0x9b, 0xff, 0xa5, 0x97, 0x81, 0xff, + 0xf0, 0xcc, 0x97, 0xff, 0xfd, 0xd7, 0x9e, 0xff, + 0xfd, 0xd9, 0xa4, 0xff, 0xfd, 0xdf, 0xb2, 0xff, + 0xfd, 0xe7, 0xc5, 0xff, 0xfc, 0xe1, 0xbc, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfc, 0xc8, 0x7c, 0xff, + 0xfc, 0xc8, 0x7c, 0xff, 0xcf, 0x8c, 0x43, 0xfc, + 0x81, 0x6a, 0x5e, 0xce, 0x45, 0x80, 0xd2, 0xa7, + 0x45, 0x80, 0xd2, 0xa7, 0x47, 0x7f, 0xcd, 0xa8, + 0xb1, 0x57, 0x00, 0xff, 0x99, 0x62, 0x33, 0xe3, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x45, 0x80, 0xd2, 0xa8, 0x45, 0x80, 0xd2, 0xa8, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x68, 0x75, 0x93, 0xab, + 0x83, 0x46, 0x0b, 0xfb, 0x18, 0x15, 0x10, 0xff, + 0x39, 0x33, 0x2a, 0xff, 0x42, 0x32, 0x1e, 0xff, + 0x38, 0x2c, 0x1c, 0xff, 0xd1, 0xa4, 0x66, 0xff, + 0xfd, 0xd5, 0x9b, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfd, 0xd8, 0xa1, 0xff, 0xfd, 0xe0, 0xb5, 0xff, + 0xfd, 0xe5, 0xc3, 0xff, 0xf5, 0xd5, 0xaa, 0xff, + 0xfc, 0xce, 0x8f, 0xff, 0xfd, 0xd4, 0x9a, 0xff, + 0xfc, 0xc6, 0x75, 0xff, 0xf5, 0xc7, 0x88, 0xff, + 0xb1, 0x5e, 0x0f, 0xf9, 0x57, 0x7d, 0xb4, 0x9f, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0xa9, 0x5a, 0x0f, 0xf2, 0x73, 0x70, 0x7c, 0xb4, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x6d, 0x70, 0x82, 0xb2, 0x42, 0x24, 0x06, 0xfd, + 0x2b, 0x23, 0x19, 0xff, 0x16, 0x14, 0x10, 0xff, + 0x49, 0x38, 0x20, 0xff, 0x79, 0x5c, 0x36, 0xff, + 0xec, 0xc2, 0x89, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfd, 0xd9, 0xa4, 0xff, 0xfd, 0xdf, 0xb1, 0xff, + 0xfd, 0xe6, 0xc3, 0xff, 0xfa, 0xdb, 0xaf, 0xff, + 0xdb, 0xa5, 0x63, 0xfc, 0xbd, 0x72, 0x25, 0xfa, + 0xec, 0xc5, 0x96, 0xfe, 0xfa, 0xd5, 0xa0, 0xff, + 0xfd, 0xd5, 0x9c, 0xff, 0xf4, 0xbc, 0x6f, 0xff, + 0xb8, 0x62, 0x0c, 0xfb, 0xa3, 0x61, 0x24, 0xe5, + 0x5e, 0x78, 0xa7, 0xa4, 0x49, 0x82, 0xd2, 0x97, + 0x49, 0x82, 0xd2, 0x97, 0x49, 0x82, 0xd2, 0x97, + 0x49, 0x82, 0xd2, 0x97, 0x49, 0x82, 0xd2, 0x97, + 0x49, 0x82, 0xd2, 0x97, 0x49, 0x82, 0xd2, 0x97, + 0x49, 0x83, 0xd2, 0x98, 0x49, 0x83, 0xd2, 0x98, + 0x49, 0x83, 0xd2, 0x98, 0x49, 0x83, 0xd2, 0x98, + 0x49, 0x83, 0xd2, 0x98, 0x49, 0x83, 0xd2, 0x98, + 0x49, 0x83, 0xd2, 0x98, 0x49, 0x83, 0xd2, 0x98, + 0x5c, 0x7a, 0xa9, 0xa5, 0x88, 0x4b, 0x11, 0xf7, + 0x19, 0x14, 0x0e, 0xff, 0x39, 0x33, 0x2b, 0xff, + 0x3a, 0x2d, 0x1d, 0xff, 0x36, 0x2b, 0x1c, 0xff, + 0xd1, 0xa4, 0x68, 0xff, 0xfd, 0xd5, 0x9b, 0xff, + 0xfd, 0xd8, 0xa2, 0xff, 0xfd, 0xdb, 0xaa, 0xff, + 0xfd, 0xe1, 0xb8, 0xff, 0xfd, 0xe7, 0xc6, 0xff, + 0xfa, 0xdc, 0xb2, 0xff, 0xf1, 0xc1, 0x83, 0xff, + 0xfd, 0xe2, 0xba, 0xff, 0xfc, 0xd1, 0x92, 0xff, + 0xfd, 0xd2, 0x96, 0xff, 0xc5, 0x7f, 0x35, 0xfc, + 0x8e, 0x68, 0x4b, 0xce, 0x49, 0x82, 0xd2, 0x99, + 0x49, 0x82, 0xd2, 0x99, 0x49, 0x82, 0xd2, 0x99, + 0x49, 0x82, 0xd2, 0x99, 0x49, 0x82, 0xd2, 0x99, + 0x49, 0x82, 0xd2, 0x99, 0x49, 0x82, 0xd2, 0x99, + 0x49, 0x82, 0xd2, 0x99, 0x49, 0x82, 0xd2, 0x99, + 0x4b, 0x81, 0xcb, 0x9b, 0x49, 0x82, 0xd2, 0x99, + 0x49, 0x82, 0xd2, 0x99, 0x49, 0x82, 0xd2, 0x99, + 0x49, 0x82, 0xd2, 0x99, 0x49, 0x82, 0xd2, 0x99, + 0x49, 0x82, 0xd2, 0x99, 0x49, 0x82, 0xd2, 0x99, + 0x49, 0x82, 0xd2, 0x99, 0x4c, 0x81, 0xca, 0x9b, + 0xa5, 0x61, 0x1f, 0xe9, 0xa8, 0x7e, 0x4c, 0xfe, + 0x18, 0x16, 0x13, 0xff, 0x3b, 0x33, 0x26, 0xff, + 0x3f, 0x31, 0x1d, 0xff, 0x38, 0x2c, 0x1c, 0xff, + 0xc3, 0x98, 0x5b, 0xff, 0xfd, 0xd5, 0x9a, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfc, 0xd4, 0x99, 0xff, + 0xfc, 0xcf, 0x8d, 0xff, 0xfc, 0xb6, 0x51, 0xff, + 0xfd, 0xcf, 0x8c, 0xff, 0xb8, 0x69, 0x1a, 0xfa, + 0x61, 0x78, 0xa0, 0xa9, 0x49, 0x83, 0xd1, 0x99, + 0x7e, 0x6c, 0x64, 0xc1, 0xc5, 0x73, 0x18, 0xfb, + 0xc6, 0x73, 0x18, 0xfb, 0x94, 0x66, 0x3f, 0xd6, + 0x4a, 0x82, 0xd2, 0x9a, 0x4a, 0x82, 0xd2, 0x9a, + 0x4a, 0x82, 0xd2, 0x9a, 0x4a, 0x82, 0xd2, 0x9a, + 0x4a, 0x82, 0xd2, 0x9a, 0x4a, 0x82, 0xd2, 0x9a, + 0x4a, 0x82, 0xd2, 0x9a, 0x4a, 0x82, 0xd2, 0x9a, + 0x4a, 0x82, 0xd2, 0x9a, 0x4a, 0x82, 0xd2, 0x9a, + 0x4a, 0x82, 0xd2, 0x9a, 0x4a, 0x82, 0xd2, 0x9a, + 0x4a, 0x82, 0xd2, 0x9a, 0x67, 0x74, 0x94, 0xae, + 0x84, 0x47, 0x0c, 0xfb, 0x18, 0x15, 0x10, 0xff, + 0x39, 0x33, 0x2a, 0xff, 0x42, 0x32, 0x1e, 0xff, + 0x38, 0x2c, 0x1c, 0xff, 0xd1, 0xa4, 0x66, 0xff, + 0xfd, 0xd5, 0x9b, 0xff, 0xfd, 0xd8, 0xa1, 0xff, + 0xfd, 0xdf, 0xb1, 0xff, 0xfd, 0xe5, 0xc1, 0xff, + 0xfd, 0xe4, 0xc1, 0xff, 0xf5, 0xd4, 0xa7, 0xff, + 0xfc, 0xcf, 0x8f, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfc, 0xcb, 0x84, 0xff, 0xf5, 0xc5, 0x83, 0xff, + 0xb0, 0x5c, 0x0c, 0xf9, 0x55, 0x7d, 0xb5, 0xa4, + 0x48, 0x83, 0xd2, 0x9b, 0x48, 0x83, 0xd2, 0x9b, + 0x48, 0x83, 0xd2, 0x9b, 0x48, 0x83, 0xd2, 0x9b, + 0x48, 0x83, 0xd2, 0x9b, 0x48, 0x83, 0xd2, 0x9b, + 0x48, 0x83, 0xd2, 0x9b, 0x48, 0x83, 0xd2, 0x9b, + 0x48, 0x83, 0xd2, 0x9b, 0x48, 0x83, 0xd2, 0x9b, + 0x48, 0x83, 0xd2, 0x9b, 0x48, 0x83, 0xd2, 0x9b, + 0x48, 0x82, 0xd2, 0x9c, 0x48, 0x82, 0xd2, 0x9c, + 0x48, 0x82, 0xd2, 0x9c, 0x48, 0x82, 0xd2, 0x9c, + 0x6b, 0x70, 0x84, 0xb6, 0x42, 0x24, 0x06, 0xfd, + 0x2b, 0x23, 0x19, 0xff, 0x16, 0x14, 0x10, 0xff, + 0x49, 0x38, 0x20, 0xff, 0x79, 0x5c, 0x36, 0xff, + 0xec, 0xc2, 0x89, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfd, 0xd9, 0xa4, 0xff, 0xfd, 0xdf, 0xb1, 0xff, + 0xfd, 0xe6, 0xc3, 0xff, 0xfa, 0xdb, 0xaf, 0xff, + 0xdb, 0xa5, 0x63, 0xfc, 0xbd, 0x72, 0x25, 0xfa, + 0xec, 0xc5, 0x96, 0xfe, 0xfa, 0xd5, 0xa0, 0xff, + 0xfd, 0xd5, 0x9c, 0xff, 0xf4, 0xbc, 0x6f, 0xff, + 0xb7, 0x62, 0x0c, 0xfb, 0xa3, 0x61, 0x25, 0xe6, + 0x5d, 0x7a, 0xa8, 0xa9, 0x49, 0x83, 0xd2, 0x9c, + 0x49, 0x83, 0xd2, 0x9c, 0x49, 0x83, 0xd2, 0x9c, + 0x49, 0x83, 0xd2, 0x9c, 0x49, 0x81, 0xd2, 0x9c, + 0x49, 0x81, 0xd2, 0x9c, 0x49, 0x81, 0xd2, 0x9c, + 0x49, 0x81, 0xd2, 0x9c, 0x49, 0x81, 0xd2, 0x9c, + 0x49, 0x81, 0xd2, 0x9c, 0x49, 0x81, 0xd2, 0x9c, + 0x49, 0x81, 0xd2, 0x9c, 0x49, 0x81, 0xd2, 0x9c, + 0x49, 0x81, 0xd2, 0x9c, 0x49, 0x81, 0xd2, 0x9c, + 0x58, 0x7a, 0xb3, 0xa5, 0x8b, 0x4f, 0x14, 0xf4, + 0x1c, 0x16, 0x0f, 0xff, 0x3c, 0x35, 0x2c, 0xff, + 0x2f, 0x26, 0x1a, 0xff, 0x35, 0x2a, 0x1c, 0xff, + 0xc9, 0x9e, 0x62, 0xff, 0xfd, 0xd5, 0x9b, 0xff, + 0xfd, 0xd8, 0xa2, 0xff, 0xfd, 0xdb, 0xa9, 0xff, + 0xfd, 0xe1, 0xb7, 0xff, 0xfd, 0xe7, 0xc6, 0xff, + 0xfb, 0xde, 0xb5, 0xff, 0xf1, 0xc1, 0x82, 0xff, + 0xfd, 0xe1, 0xb9, 0xff, 0xfc, 0xd3, 0x95, 0xff, + 0xfd, 0xd2, 0x95, 0xff, 0xca, 0x86, 0x3e, 0xfc, + 0x94, 0x65, 0x3f, 0xd7, 0x48, 0x81, 0xd2, 0x9d, + 0x48, 0x81, 0xd2, 0x9d, 0x48, 0x81, 0xd2, 0x9d, + 0x48, 0x81, 0xd2, 0x9d, 0x48, 0x81, 0xd2, 0x9d, + 0x48, 0x81, 0xd2, 0x9d, 0x48, 0x81, 0xd2, 0x9d, + 0x48, 0x81, 0xd2, 0x9d, 0x48, 0x81, 0xd2, 0x9d, + 0x4a, 0x80, 0xcb, 0xa0, 0x48, 0x81, 0xd2, 0x9e, + 0x48, 0x81, 0xd2, 0x9e, 0x48, 0x81, 0xd2, 0x9e, + 0x48, 0x81, 0xd2, 0x9e, 0x48, 0x81, 0xd2, 0x9e, + 0x48, 0x81, 0xd2, 0x9e, 0x48, 0x81, 0xd2, 0x9e, + 0x48, 0x81, 0xd2, 0x9e, 0x4b, 0x7f, 0xcb, 0xa0, + 0xa5, 0x61, 0x20, 0xea, 0xd6, 0x9f, 0x5c, 0xfe, + 0x44, 0x3e, 0x35, 0xff, 0x34, 0x2d, 0x23, 0xff, + 0x1c, 0x17, 0x11, 0xff, 0x52, 0x3c, 0x21, 0xff, + 0x81, 0x61, 0x38, 0xff, 0xee, 0xc5, 0x89, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfd, 0xd6, 0x9d, 0xff, 0xfc, 0xd4, 0x9a, 0xff, + 0xfc, 0xcf, 0x8d, 0xff, 0xfc, 0xb6, 0x51, 0xff, + 0xfd, 0xd1, 0x90, 0xff, 0xb6, 0x64, 0x12, 0xfa, + 0x5e, 0x77, 0xa2, 0xae, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x4c, 0x7e, 0xc6, 0xa2, + 0xb1, 0x58, 0x01, 0xfe, 0xb4, 0x60, 0x0e, 0xfb, + 0x65, 0x74, 0x94, 0xb3, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x47, 0x81, 0xd2, 0x9f, + 0x47, 0x81, 0xd2, 0x9f, 0x47, 0x81, 0xd2, 0x9f, + 0x4d, 0x84, 0xd1, 0x8d, 0x4d, 0x84, 0xd1, 0x8d, + 0x4d, 0x84, 0xd1, 0x8d, 0x4d, 0x84, 0xd1, 0x8d, + 0x60, 0x7a, 0xa8, 0x9a, 0xb0, 0x5c, 0x0a, 0xf7, + 0xf6, 0xd1, 0x9e, 0xff, 0xca, 0xa2, 0x73, 0xff, + 0x2f, 0x1c, 0x09, 0xff, 0x06, 0x05, 0x03, 0xff, + 0x02, 0x01, 0x00, 0xff, 0x9c, 0x7e, 0x53, 0xff, + 0xd3, 0xa1, 0x5f, 0xff, 0xfd, 0xd6, 0x9b, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfc, 0xd6, 0x9c, 0xff, 0xfc, 0xd5, 0x99, 0xff, + 0xfc, 0xcd, 0x88, 0xff, 0xfb, 0xb8, 0x53, 0xff, + 0xfc, 0xc0, 0x69, 0xff, 0xdd, 0x9f, 0x57, 0xfe, + 0x94, 0x67, 0x42, 0xcc, 0x4c, 0x84, 0xd2, 0x8e, + 0x4c, 0x84, 0xd2, 0x8e, 0x4c, 0x84, 0xd2, 0x8e, + 0x4c, 0x84, 0xd2, 0x8e, 0x4c, 0x84, 0xd2, 0x8e, + 0x4c, 0x84, 0xd2, 0x8e, 0x4e, 0x82, 0xca, 0x90, + 0xb1, 0x56, 0x00, 0xff, 0xb1, 0x57, 0x00, 0xff, + 0x9a, 0x63, 0x34, 0xd5, 0x4c, 0x84, 0xd2, 0x8e, + 0x4c, 0x84, 0xd2, 0x8e, 0x4c, 0x84, 0xd2, 0x8e, + 0x4c, 0x84, 0xd2, 0x8e, 0x4c, 0x83, 0xd2, 0x8e, + 0x4c, 0x83, 0xd2, 0x8e, 0x78, 0x70, 0x75, 0xb1, + 0xba, 0x6b, 0x1c, 0xfb, 0xfb, 0xdc, 0xb1, 0xff, + 0x70, 0x48, 0x1e, 0xff, 0x15, 0x0f, 0x0a, 0xff, + 0x01, 0x01, 0x01, 0xff, 0x2a, 0x21, 0x15, 0xff, + 0xde, 0xb5, 0x79, 0xff, 0xea, 0xb7, 0x71, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfc, 0xdc, 0xab, 0xff, + 0xfd, 0xe3, 0xbb, 0xff, 0xfd, 0xde, 0xb0, 0xff, + 0xfc, 0xc9, 0x7d, 0xff, 0xfc, 0xc6, 0x76, 0xff, + 0xf7, 0xc6, 0x80, 0xff, 0xb6, 0x64, 0x10, 0xfb, + 0x83, 0x6c, 0x61, 0xba, 0x4c, 0x83, 0xd2, 0x8e, + 0x4d, 0x84, 0xd2, 0x8f, 0x4d, 0x84, 0xd2, 0x8f, + 0x4d, 0x84, 0xd2, 0x8f, 0x4d, 0x84, 0xd2, 0x8f, + 0x4d, 0x84, 0xd2, 0x8f, 0x4d, 0x84, 0xd2, 0x8f, + 0x4d, 0x84, 0xd2, 0x8f, 0x4d, 0x84, 0xd2, 0x8f, + 0x6c, 0x76, 0x90, 0xa6, 0x93, 0x64, 0x3b, 0xd0, + 0x4d, 0x84, 0xd2, 0x8f, 0x4d, 0x84, 0xd2, 0x8f, + 0x4d, 0x84, 0xd2, 0x8f, 0x4d, 0x84, 0xd2, 0x8f, + 0x4d, 0x84, 0xd2, 0x8f, 0x61, 0x7a, 0xa7, 0x9d, + 0xb6, 0x67, 0x19, 0xf6, 0xf7, 0xd2, 0xa1, 0xff, + 0xcc, 0xa7, 0x7b, 0xff, 0x30, 0x1d, 0x0a, 0xff, + 0x06, 0x05, 0x03, 0xff, 0x06, 0x05, 0x03, 0xff, + 0xa1, 0x83, 0x56, 0xff, 0xd3, 0xa1, 0x5f, 0xff, + 0xfd, 0xd6, 0x9b, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfc, 0xd5, 0x9c, 0xff, + 0xfc, 0xd9, 0xa5, 0xff, 0xfc, 0xd7, 0xa2, 0xff, + 0xfc, 0xc1, 0x6b, 0xff, 0xfc, 0xbf, 0x66, 0xff, + 0xeb, 0xb5, 0x70, 0xff, 0xa9, 0x60, 0x19, 0xeb, + 0x4b, 0x83, 0xd2, 0x90, 0x4b, 0x83, 0xd2, 0x90, + 0x4b, 0x83, 0xd2, 0x90, 0x4b, 0x83, 0xd2, 0x90, + 0x4b, 0x83, 0xd2, 0x90, 0x4b, 0x83, 0xd2, 0x90, + 0x4b, 0x83, 0xd2, 0x90, 0x4b, 0x83, 0xd2, 0x90, + 0x6f, 0x72, 0x87, 0xaa, 0x9d, 0x62, 0x30, 0xd9, + 0xac, 0x59, 0x0b, 0xf5, 0x4b, 0x84, 0xd3, 0x91, + 0x4b, 0x84, 0xd3, 0x91, 0x4b, 0x84, 0xd3, 0x91, + 0x4b, 0x84, 0xd3, 0x91, 0x4b, 0x84, 0xd3, 0x91, + 0x4b, 0x84, 0xd3, 0x91, 0x4b, 0x84, 0xd3, 0x91, + 0x4b, 0x84, 0xd3, 0x91, 0x9a, 0x64, 0x35, 0xd7, + 0xd3, 0x93, 0x4a, 0xfc, 0xfd, 0xe6, 0xc1, 0xff, + 0xd4, 0xaa, 0x74, 0xff, 0x37, 0x20, 0x0a, 0xff, + 0x09, 0x07, 0x05, 0xff, 0x00, 0x00, 0x00, 0xff, + 0x77, 0x60, 0x3f, 0xff, 0xd1, 0xa2, 0x62, 0xff, + 0xfa, 0xd0, 0x94, 0xff, 0xfc, 0xd3, 0x96, 0xff, + 0xfc, 0xd1, 0x92, 0xff, 0xfc, 0xcf, 0x8d, 0xff, + 0xfc, 0xce, 0x88, 0xff, 0xfc, 0xcc, 0x83, 0xff, + 0xfb, 0xd6, 0xa1, 0xff, 0xb1, 0x58, 0x03, 0xfe, + 0x52, 0x7f, 0xc1, 0x96, 0x4b, 0x83, 0xd1, 0x91, + 0x60, 0x79, 0xa4, 0xa0, 0xb3, 0x5d, 0x08, 0xfb, + 0xf5, 0xa7, 0x38, 0xff, 0xb1, 0x5a, 0x05, 0xfb, + 0x54, 0x7e, 0xbd, 0x97, 0x4b, 0x83, 0xd1, 0x91, + 0x4b, 0x83, 0xd1, 0x91, 0x4b, 0x83, 0xd1, 0x91, + 0x4b, 0x83, 0xd1, 0x91, 0x4b, 0x83, 0xd1, 0x91, + 0x4b, 0x83, 0xd1, 0x91, 0x4b, 0x83, 0xd1, 0x91, + 0x4b, 0x83, 0xd1, 0x91, 0x4b, 0x83, 0xd1, 0x91, + 0x4b, 0x83, 0xd1, 0x91, 0x4b, 0x83, 0xd1, 0x91, + 0x5e, 0x7a, 0xa9, 0x9e, 0xb0, 0x5e, 0x0d, 0xf8, + 0xf7, 0xd3, 0xa2, 0xff, 0xca, 0xa1, 0x72, 0xff, + 0x2f, 0x1c, 0x09, 0xff, 0x06, 0x05, 0x03, 0xff, + 0x02, 0x01, 0x00, 0xff, 0x9c, 0x7e, 0x53, 0xff, + 0xd3, 0xa1, 0x5f, 0xff, 0xfd, 0xd6, 0x9b, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfc, 0xd8, 0xa1, 0xff, 0xfc, 0xd6, 0x9c, 0xff, + 0xfc, 0xcd, 0x88, 0xff, 0xfb, 0xb8, 0x53, 0xff, + 0xfc, 0xc5, 0x75, 0xff, 0xda, 0x98, 0x4b, 0xfd, + 0x93, 0x67, 0x43, 0xce, 0x4b, 0x83, 0xd2, 0x92, + 0x4b, 0x83, 0xd2, 0x92, 0x4b, 0x83, 0xd2, 0x92, + 0x4b, 0x83, 0xd2, 0x92, 0x4c, 0x82, 0xcd, 0x93, + 0x67, 0x75, 0x95, 0xa7, 0x81, 0x6b, 0x60, 0xbf, + 0x94, 0x65, 0x3f, 0xd1, 0x91, 0x66, 0x42, 0xcf, + 0x8d, 0x66, 0x49, 0xcb, 0x78, 0x6f, 0x75, 0xb5, + 0x4b, 0x83, 0xd2, 0x93, 0x4b, 0x83, 0xd2, 0x93, + 0x4b, 0x83, 0xd2, 0x93, 0x4b, 0x83, 0xd2, 0x93, + 0x4b, 0x83, 0xd2, 0x93, 0x76, 0x70, 0x77, 0xb4, + 0xba, 0x6b, 0x1c, 0xfb, 0xfb, 0xdc, 0xb1, 0xff, + 0x70, 0x48, 0x1e, 0xff, 0x15, 0x0f, 0x0a, 0xff, + 0x01, 0x01, 0x01, 0xff, 0x2a, 0x21, 0x15, 0xff, + 0xde, 0xb5, 0x79, 0xff, 0xea, 0xb7, 0x71, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfc, 0xdc, 0xab, 0xff, + 0xfd, 0xe3, 0xbb, 0xff, 0xfd, 0xde, 0xb0, 0xff, + 0xfc, 0xc9, 0x7d, 0xff, 0xfc, 0xc6, 0x76, 0xff, + 0xf7, 0xc6, 0x80, 0xff, 0xb6, 0x64, 0x10, 0xfb, + 0x81, 0x6c, 0x63, 0xbd, 0x4a, 0x83, 0xd2, 0x93, + 0x4a, 0x83, 0xd2, 0x93, 0x4a, 0x83, 0xd2, 0x93, + 0x4a, 0x83, 0xd2, 0x93, 0x4a, 0x83, 0xd2, 0x93, + 0x4a, 0x83, 0xd2, 0x93, 0x4a, 0x83, 0xd2, 0x93, + 0x4a, 0x83, 0xd2, 0x93, 0x4a, 0x83, 0xd2, 0x93, + 0x69, 0x75, 0x91, 0xa9, 0x92, 0x63, 0x3d, 0xd2, + 0x4a, 0x83, 0xd2, 0x93, 0x4a, 0x83, 0xd2, 0x93, + 0x4a, 0x83, 0xd2, 0x93, 0x4a, 0x83, 0xd2, 0x94, + 0x4a, 0x83, 0xd2, 0x94, 0x5a, 0x7c, 0xb2, 0x9e, + 0xb1, 0x64, 0x1b, 0xf3, 0xf4, 0xce, 0x99, 0xfe, + 0xd6, 0xb3, 0x88, 0xff, 0x35, 0x20, 0x0a, 0xff, + 0x07, 0x06, 0x04, 0xff, 0x02, 0x02, 0x01, 0xff, + 0x8e, 0x73, 0x4b, 0xff, 0xd2, 0xa3, 0x61, 0xff, + 0xfc, 0xd4, 0x98, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xfd, 0xd6, 0x9c, 0xff, 0xfc, 0xd5, 0x9b, 0xff, + 0xfc, 0xd9, 0xa6, 0xff, 0xfc, 0xd8, 0xa3, 0xff, + 0xfc, 0xc3, 0x6f, 0xff, 0xfc, 0xbd, 0x61, 0xff, + 0xef, 0xbc, 0x78, 0xff, 0xac, 0x5e, 0x13, 0xf2, + 0x4a, 0x82, 0xcf, 0x95, 0x4a, 0x83, 0xd2, 0x94, + 0x4a, 0x83, 0xd3, 0x95, 0x4a, 0x83, 0xd3, 0x95, + 0x4a, 0x83, 0xd3, 0x95, 0x4a, 0x83, 0xd3, 0x95, + 0x4a, 0x83, 0xd3, 0x95, 0x4a, 0x83, 0xd3, 0x95, + 0x69, 0x74, 0x90, 0xab, 0x99, 0x64, 0x36, 0xd8, + 0xae, 0x58, 0x07, 0xf9, 0x4a, 0x82, 0xd0, 0x96, + 0x4a, 0x83, 0xd3, 0x95, 0x4a, 0x83, 0xd3, 0x95, + 0x4a, 0x83, 0xd3, 0x95, 0x4a, 0x83, 0xd3, 0x95, + 0x4a, 0x83, 0xd3, 0x95, 0x4a, 0x83, 0xd3, 0x95, + 0x4a, 0x83, 0xd3, 0x95, 0x99, 0x64, 0x36, 0xd8, + 0xd1, 0x8f, 0x44, 0xfb, 0xfd, 0xe6, 0xc2, 0xff, + 0xfb, 0xd6, 0xa0, 0xff, 0x66, 0x40, 0x17, 0xff, + 0x13, 0x0e, 0x09, 0xff, 0x01, 0x01, 0x01, 0xff, + 0x25, 0x1e, 0x13, 0xff, 0xde, 0xb5, 0x78, 0xff, + 0xe9, 0xb6, 0x70, 0xff, 0xfc, 0xd3, 0x96, 0xff, + 0xfc, 0xd1, 0x92, 0xff, 0xfc, 0xcf, 0x8d, 0xff, + 0xfc, 0xce, 0x88, 0xff, 0xfc, 0xce, 0x86, 0xff, + 0xfb, 0xd5, 0x9d, 0xff, 0xb1, 0x57, 0x01, 0xfe, + 0x51, 0x7f, 0xc3, 0x9b, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x53, 0x7e, 0xbd, 0x9c, + 0xb1, 0x59, 0x03, 0xfd, 0xe5, 0x9e, 0x53, 0xfe, + 0xa7, 0x5e, 0x1b, 0xea, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4a, 0x83, 0xd2, 0x96, 0x4a, 0x83, 0xd2, 0x96, + 0x4d, 0x87, 0xd1, 0x84, 0x4d, 0x87, 0xd1, 0x84, + 0x4d, 0x87, 0xd1, 0x84, 0x56, 0x81, 0xbd, 0x8a, + 0xac, 0x5d, 0x12, 0xef, 0xee, 0xc0, 0x85, 0xfe, + 0xfd, 0xe3, 0xbb, 0xff, 0xc8, 0x7e, 0x31, 0xff, + 0xcf, 0xd9, 0xe5, 0xff, 0xf1, 0xf3, 0xf6, 0xff, + 0x94, 0x9d, 0xa7, 0xff, 0x2e, 0x29, 0x22, 0xff, + 0xee, 0xc0, 0x7c, 0xff, 0xec, 0xb6, 0x6b, 0xff, + 0xfc, 0xd3, 0x95, 0xff, 0xfc, 0xd1, 0x92, 0xff, + 0xfc, 0xcf, 0x8d, 0xff, 0xfc, 0xce, 0x88, 0xff, + 0xfc, 0xcc, 0x84, 0xff, 0xfc, 0xca, 0x80, 0xff, + 0xfc, 0xcf, 0x8e, 0xff, 0xc8, 0x86, 0x43, 0xfc, + 0x87, 0x6a, 0x56, 0xb9, 0x4e, 0x86, 0xd1, 0x85, + 0x4e, 0x86, 0xd1, 0x85, 0x4e, 0x86, 0xd1, 0x85, + 0x4e, 0x86, 0xd1, 0x85, 0x4e, 0x86, 0xd1, 0x85, + 0x4e, 0x86, 0xd1, 0x85, 0x5a, 0x81, 0xb8, 0x8d, + 0xb0, 0x58, 0x02, 0xfc, 0xb5, 0x5b, 0x04, 0xff, + 0xc7, 0x7e, 0x39, 0xfe, 0x79, 0x72, 0x75, 0xa8, + 0x4e, 0x87, 0xd2, 0x85, 0x4e, 0x87, 0xd2, 0x85, + 0x4e, 0x87, 0xd2, 0x85, 0x4e, 0x87, 0xd2, 0x85, + 0x7f, 0x70, 0x6a, 0xae, 0xc0, 0x76, 0x29, 0xfb, + 0xfc, 0xe0, 0xb9, 0xff, 0xeb, 0xbf, 0x88, 0xff, + 0xca, 0xac, 0x90, 0xff, 0xf0, 0xf3, 0xf7, 0xff, + 0xd3, 0xd9, 0xdf, 0xff, 0x57, 0x56, 0x55, 0xff, + 0x87, 0x71, 0x52, 0xff, 0xee, 0xb5, 0x66, 0xff, + 0xfc, 0xd5, 0x9a, 0xff, 0xfc, 0xd3, 0x95, 0xff, + 0xfc, 0xd1, 0x92, 0xff, 0xfc, 0xcf, 0x8d, 0xff, + 0xfc, 0xce, 0x88, 0xff, 0xfc, 0xcc, 0x84, 0xff, + 0xfc, 0xca, 0x7f, 0xff, 0xfc, 0xd1, 0x94, 0xff, + 0xc6, 0x7d, 0x34, 0xfd, 0xa5, 0x5e, 0x1c, 0xe4, + 0x5b, 0x7f, 0xb3, 0x8f, 0x4d, 0x86, 0xd1, 0x86, + 0x4d, 0x86, 0xd1, 0x86, 0x4d, 0x86, 0xd1, 0x86, + 0x4d, 0x86, 0xd1, 0x86, 0x4d, 0x86, 0xd1, 0x86, + 0x4d, 0x86, 0xd1, 0x86, 0x56, 0x80, 0xbd, 0x8c, + 0x85, 0x6a, 0x5a, 0xb7, 0xac, 0x5c, 0x10, 0xee, + 0xba, 0x69, 0x1b, 0xfa, 0xb4, 0x5e, 0x0c, 0xfe, + 0x54, 0x81, 0xc1, 0x8b, 0x4d, 0x86, 0xd1, 0x86, + 0x4d, 0x86, 0xd1, 0x86, 0x4d, 0x86, 0xd1, 0x86, + 0x5e, 0x7d, 0xae, 0x92, 0xb8, 0x6b, 0x1e, 0xf6, + 0xf9, 0xd7, 0xa8, 0xff, 0xfd, 0xe4, 0xbf, 0xff, + 0xc8, 0x7e, 0x31, 0xff, 0xcf, 0xd9, 0xe5, 0xff, + 0xf1, 0xf3, 0xf6, 0xff, 0x94, 0x9d, 0xa7, 0xff, + 0x2e, 0x29, 0x22, 0xff, 0xee, 0xc0, 0x7c, 0xff, + 0xec, 0xb6, 0x6b, 0xff, 0xfc, 0xd3, 0x95, 0xff, + 0xfc, 0xd1, 0x92, 0xff, 0xfc, 0xcf, 0x8d, 0xff, + 0xfc, 0xce, 0x88, 0xff, 0xfc, 0xcc, 0x84, 0xff, + 0xfc, 0xca, 0x80, 0xff, 0xfd, 0xd9, 0xa4, 0xff, + 0xc9, 0x81, 0x37, 0xfc, 0x9b, 0x62, 0x30, 0xd5, + 0x5b, 0x7e, 0xb4, 0x90, 0x4e, 0x85, 0xd1, 0x87, + 0x4e, 0x84, 0xd1, 0x88, 0x4e, 0x84, 0xd1, 0x88, + 0x4e, 0x84, 0xd1, 0x88, 0x5e, 0x7d, 0xad, 0x94, + 0x8d, 0x68, 0x4d, 0xc0, 0xae, 0x5b, 0x0b, 0xf3, + 0xbc, 0x6c, 0x1e, 0xf9, 0xe0, 0x93, 0x4a, 0xfe, + 0xb4, 0x5e, 0x0b, 0xfe, 0x53, 0x81, 0xc6, 0x8b, + 0x4e, 0x84, 0xd1, 0x88, 0x4e, 0x84, 0xd1, 0x88, + 0x4d, 0x84, 0xd1, 0x88, 0x4d, 0x84, 0xd1, 0x88, + 0x4d, 0x84, 0xd1, 0x88, 0x4d, 0x84, 0xd1, 0x88, + 0x7f, 0x6d, 0x68, 0xb2, 0xbe, 0x74, 0x25, 0xf9, + 0xfd, 0xe4, 0xbd, 0xff, 0xfd, 0xd9, 0xa4, 0xff, + 0xd1, 0x8c, 0x41, 0xff, 0xcc, 0xd4, 0xde, 0xff, + 0xf3, 0xf6, 0xf9, 0xff, 0xa3, 0xac, 0xb8, 0xff, + 0x37, 0x32, 0x2c, 0xff, 0xd3, 0xac, 0x71, 0xff, + 0xe8, 0xab, 0x5c, 0xff, 0xfc, 0xce, 0x89, 0xff, + 0xfc, 0xcc, 0x84, 0xff, 0xfc, 0xca, 0x80, 0xff, + 0xfc, 0xc8, 0x7b, 0xff, 0xfc, 0xc6, 0x77, 0xff, + 0xfd, 0xdb, 0xaa, 0xff, 0xe8, 0xaf, 0x67, 0xfd, + 0xaf, 0x5d, 0x0f, 0xf2, 0x72, 0x73, 0x83, 0xa4, + 0x51, 0x83, 0xc9, 0x8a, 0xb1, 0x58, 0x01, 0xfe, + 0xfc, 0xb0, 0x41, 0xff, 0xc4, 0x70, 0x15, 0xfb, + 0x82, 0x6c, 0x61, 0xb5, 0x4e, 0x85, 0xd1, 0x88, + 0x4e, 0x85, 0xd1, 0x88, 0x4e, 0x85, 0xd1, 0x88, + 0x4e, 0x85, 0xd1, 0x88, 0x4e, 0x85, 0xd1, 0x88, + 0x4d, 0x84, 0xd2, 0x89, 0x4d, 0x84, 0xd2, 0x89, + 0x4d, 0x84, 0xd2, 0x89, 0x4d, 0x84, 0xd2, 0x89, + 0x4d, 0x84, 0xd2, 0x89, 0x56, 0x7f, 0xbe, 0x8f, + 0xac, 0x5d, 0x12, 0xf0, 0xef, 0xc3, 0x8b, 0xfe, + 0xfd, 0xe1, 0xb8, 0xff, 0xc8, 0x7e, 0x31, 0xff, + 0xcf, 0xd9, 0xe5, 0xff, 0xf1, 0xf3, 0xf6, 0xff, + 0x94, 0x9d, 0xa7, 0xff, 0x2e, 0x29, 0x22, 0xff, + 0xee, 0xc0, 0x7c, 0xff, 0xec, 0xb6, 0x6b, 0xff, + 0xfc, 0xd3, 0x95, 0xff, 0xfc, 0xd1, 0x92, 0xff, + 0xfc, 0xcf, 0x8d, 0xff, 0xfc, 0xce, 0x88, 0xff, + 0xfc, 0xcc, 0x84, 0xff, 0xfc, 0xca, 0x80, 0xff, + 0xfd, 0xd4, 0x9a, 0xff, 0xc3, 0x79, 0x30, 0xfc, + 0x86, 0x6a, 0x58, 0xbc, 0x4d, 0x85, 0xd0, 0x8a, + 0x4d, 0x85, 0xd0, 0x8a, 0x5f, 0x7c, 0xaa, 0x96, + 0x97, 0x65, 0x39, 0xcf, 0xb3, 0x5c, 0x0a, 0xfb, + 0xbe, 0x70, 0x26, 0xfa, 0xd2, 0x87, 0x3c, 0xfb, + 0xe2, 0x95, 0x4c, 0xff, 0xe3, 0x98, 0x50, 0xff, + 0xba, 0x67, 0x15, 0xfd, 0x7e, 0x6e, 0x69, 0xb2, + 0x4d, 0x85, 0xd0, 0x8a, 0x4d, 0x85, 0xd0, 0x8a, + 0x4d, 0x85, 0xd0, 0x8a, 0x4d, 0x85, 0xd0, 0x8a, + 0x7d, 0x6f, 0x6b, 0xb1, 0xc0, 0x76, 0x29, 0xfb, + 0xfc, 0xe0, 0xb9, 0xff, 0xeb, 0xbf, 0x88, 0xff, + 0xca, 0xac, 0x90, 0xff, 0xf0, 0xf3, 0xf7, 0xff, + 0xd3, 0xd9, 0xdf, 0xff, 0x57, 0x56, 0x55, 0xff, + 0x87, 0x71, 0x52, 0xff, 0xee, 0xb5, 0x66, 0xff, + 0xfc, 0xd5, 0x9a, 0xff, 0xfc, 0xd3, 0x95, 0xff, + 0xfc, 0xd1, 0x92, 0xff, 0xfc, 0xcf, 0x8d, 0xff, + 0xfc, 0xce, 0x88, 0xff, 0xfc, 0xcc, 0x84, 0xff, + 0xfc, 0xca, 0x7f, 0xff, 0xfc, 0xd1, 0x94, 0xff, + 0xc6, 0x7d, 0x34, 0xfd, 0xa4, 0x5e, 0x1c, 0xe6, + 0x59, 0x7f, 0xb4, 0x94, 0x4c, 0x86, 0xd1, 0x8b, + 0x4c, 0x86, 0xd1, 0x8b, 0x4c, 0x86, 0xd1, 0x8b, + 0x4c, 0x86, 0xd1, 0x8b, 0x4c, 0x86, 0xd1, 0x8b, + 0x4c, 0x86, 0xd1, 0x8b, 0x55, 0x80, 0xbe, 0x91, + 0x84, 0x6a, 0x5c, 0xba, 0xab, 0x5c, 0x11, 0xef, + 0xba, 0x69, 0x1b, 0xfa, 0xb4, 0x5e, 0x0c, 0xfe, + 0x54, 0x81, 0xc2, 0x90, 0x4d, 0x85, 0xd1, 0x8b, + 0x4d, 0x85, 0xd1, 0x8b, 0x4d, 0x85, 0xd1, 0x8b, + 0x57, 0x7f, 0xba, 0x92, 0xb4, 0x68, 0x1e, 0xf2, + 0xf6, 0xd3, 0xa3, 0xff, 0xfd, 0xe5, 0xc1, 0xff, + 0xcd, 0x85, 0x3a, 0xff, 0xcd, 0xd6, 0xe2, 0xff, + 0xf3, 0xf5, 0xf8, 0xff, 0x9c, 0xa5, 0xb0, 0xff, + 0x33, 0x2e, 0x27, 0xff, 0xde, 0xb4, 0x75, 0xff, + 0xe9, 0xb1, 0x66, 0xff, 0xfc, 0xd3, 0x96, 0xff, + 0xfc, 0xd1, 0x92, 0xff, 0xfc, 0xcf, 0x8d, 0xff, + 0xfc, 0xce, 0x89, 0xff, 0xfc, 0xcc, 0x84, 0xff, + 0xfc, 0xca, 0x80, 0xff, 0xfd, 0xd8, 0xa2, 0xff, + 0xcf, 0x8b, 0x43, 0xfc, 0x9e, 0x60, 0x29, 0xdc, + 0x5c, 0x7d, 0xae, 0x97, 0x4c, 0x84, 0xd1, 0x8c, + 0x4c, 0x84, 0xd1, 0x8c, 0x4c, 0x84, 0xd1, 0x8c, + 0x4c, 0x84, 0xd1, 0x8c, 0x5a, 0x7d, 0xb3, 0x95, + 0x87, 0x6a, 0x54, 0xbf, 0xad, 0x5c, 0x0f, 0xf1, + 0xb9, 0x65, 0x15, 0xfa, 0xdc, 0x8c, 0x3d, 0xfe, + 0xb6, 0x62, 0x11, 0xfc, 0x5b, 0x7d, 0xb1, 0x96, + 0x4c, 0x84, 0xd1, 0x8c, 0x4c, 0x84, 0xd1, 0x8c, + 0x4c, 0x84, 0xd1, 0x8c, 0x4c, 0x84, 0xd1, 0x8c, + 0x4d, 0x84, 0xd1, 0x8d, 0x4d, 0x84, 0xd1, 0x8d, + 0x7e, 0x6d, 0x6a, 0xb5, 0xbd, 0x71, 0x20, 0xf9, + 0xfd, 0xe4, 0xbd, 0xff, 0xfd, 0xda, 0xa8, 0xff, + 0xeb, 0xb7, 0x76, 0xff, 0xcb, 0xae, 0x93, 0xff, + 0xf0, 0xf3, 0xf8, 0xff, 0xd3, 0xd8, 0xdf, 0xff, + 0x54, 0x54, 0x52, 0xff, 0x8b, 0x75, 0x54, 0xff, + 0xed, 0xb4, 0x64, 0xff, 0xfc, 0xce, 0x89, 0xff, + 0xfc, 0xcc, 0x84, 0xff, 0xfc, 0xca, 0x80, 0xff, + 0xfc, 0xc8, 0x7b, 0xff, 0xfc, 0xc7, 0x78, 0xff, + 0xfd, 0xdc, 0xac, 0xff, 0xe7, 0xae, 0x66, 0xfd, + 0xaf, 0x5d, 0x0f, 0xf3, 0x71, 0x73, 0x85, 0xa8, + 0x4d, 0x84, 0xd1, 0x8d, 0x7a, 0x6f, 0x70, 0xb3, + 0xc1, 0x73, 0x25, 0xfa, 0xfa, 0xbf, 0x7f, 0xff, + 0xb2, 0x5a, 0x06, 0xfc, 0x5d, 0x7c, 0xae, 0x9a, + 0x4c, 0x84, 0xd2, 0x8e, 0x4c, 0x84, 0xd2, 0x8e, + 0x4c, 0x84, 0xd2, 0x8e, 0x4c, 0x84, 0xd2, 0x8e, + 0x4c, 0x84, 0xd2, 0x8e, 0x4c, 0x84, 0xd2, 0x8e, + 0x51, 0x88, 0xd1, 0x7c, 0x51, 0x88, 0xd1, 0x7c, + 0x51, 0x88, 0xd1, 0x7c, 0x98, 0x67, 0x3a, 0xc5, + 0xd5, 0x94, 0x4a, 0xfc, 0xfd, 0xe5, 0xbf, 0xff, + 0xf5, 0xc6, 0x88, 0xff, 0xd8, 0x9f, 0x66, 0xff, + 0x63, 0x87, 0xb6, 0xff, 0x5e, 0x6b, 0x7b, 0xff, + 0x56, 0x7d, 0xaf, 0xff, 0xc5, 0xc5, 0xc3, 0xff, + 0xe4, 0xb6, 0x72, 0xff, 0xe1, 0xa0, 0x49, 0xff, + 0xfc, 0xce, 0x88, 0xff, 0xfc, 0xcc, 0x84, 0xff, + 0xfc, 0xca, 0x80, 0xff, 0xfc, 0xc8, 0x7b, 0xff, + 0xfc, 0xc6, 0x76, 0xff, 0xfc, 0xc4, 0x73, 0xff, + 0xfc, 0xc7, 0x7b, 0xff, 0xfa, 0xd7, 0xa3, 0xff, + 0xd1, 0x92, 0x4d, 0xfb, 0x9e, 0x65, 0x32, 0xce, + 0x67, 0x7b, 0x9d, 0x8f, 0x55, 0x83, 0xc5, 0x81, + 0x50, 0x87, 0xd1, 0x7d, 0x50, 0x87, 0xd1, 0x7d, + 0x5a, 0x81, 0xb9, 0x85, 0x84, 0x6d, 0x5e, 0xad, + 0xb4, 0x5c, 0x07, 0xff, 0xe6, 0x9e, 0x59, 0xff, + 0xdd, 0x99, 0x56, 0xfe, 0x8c, 0x69, 0x50, 0xb6, + 0x50, 0x87, 0xd1, 0x7d, 0x50, 0x87, 0xd1, 0x7d, + 0x50, 0x87, 0xd1, 0x7d, 0x61, 0x7e, 0xac, 0x89, + 0xb1, 0x5c, 0x08, 0xf9, 0xfb, 0xdd, 0xb4, 0xff, + 0xfd, 0xdf, 0xb1, 0xff, 0xd8, 0x93, 0x4a, 0xff, + 0xa3, 0xb4, 0xc9, 0xff, 0x6c, 0x83, 0xa1, 0xff, + 0x62, 0x7b, 0x9c, 0xff, 0xa3, 0xb8, 0xd1, 0xff, + 0xb2, 0xa5, 0x91, 0xff, 0xfc, 0xbd, 0x61, 0xff, + 0xf5, 0xc2, 0x7a, 0xff, 0xfc, 0xce, 0x88, 0xff, + 0xfc, 0xcc, 0x84, 0xff, 0xfc, 0xca, 0x80, 0xff, + 0xfc, 0xc8, 0x7b, 0xff, 0xfc, 0xc6, 0x76, 0xff, + 0xfc, 0xc4, 0x73, 0xff, 0xfc, 0xcd, 0x89, 0xff, + 0xfb, 0xd7, 0xa2, 0xff, 0xde, 0xa1, 0x5a, 0xfc, + 0xb3, 0x5e, 0x0b, 0xfa, 0x9c, 0x63, 0x32, 0xcd, + 0x68, 0x7a, 0x9c, 0x90, 0x68, 0x7a, 0x9c, 0x90, + 0x81, 0x6e, 0x66, 0xaa, 0x97, 0x65, 0x3a, 0xc6, + 0xaa, 0x5e, 0x18, 0xe5, 0xb7, 0x66, 0x17, 0xfb, + 0xd1, 0x8a, 0x47, 0xfb, 0xee, 0xab, 0x6a, 0xff, + 0xf9, 0xb7, 0x76, 0xff, 0xb7, 0x63, 0x14, 0xf9, + 0x62, 0x7e, 0xa7, 0x8c, 0x50, 0x87, 0xd1, 0x7e, + 0x50, 0x87, 0xd1, 0x7e, 0x50, 0x87, 0xd1, 0x7e, + 0xa3, 0x63, 0x28, 0xd7, 0xf2, 0xc9, 0x94, 0xfe, + 0xfd, 0xe4, 0xbf, 0xff, 0xf5, 0xc6, 0x89, 0xff, + 0xd8, 0x9f, 0x66, 0xff, 0x63, 0x87, 0xb6, 0xff, + 0x5e, 0x6b, 0x7b, 0xff, 0x56, 0x7d, 0xaf, 0xff, + 0xc5, 0xc5, 0xc3, 0xff, 0xe4, 0xb6, 0x72, 0xff, + 0xe1, 0xa0, 0x49, 0xff, 0xfc, 0xce, 0x88, 0xff, + 0xfc, 0xcc, 0x84, 0xff, 0xfc, 0xca, 0x80, 0xff, + 0xfc, 0xc8, 0x7b, 0xff, 0xfc, 0xc6, 0x76, 0xff, + 0xfc, 0xc4, 0x73, 0xff, 0xfc, 0xcf, 0x8d, 0xff, + 0xfc, 0xd8, 0xa3, 0xff, 0xe2, 0xa5, 0x5c, 0xfd, + 0xb2, 0x5b, 0x09, 0xfa, 0x9e, 0x64, 0x31, 0xcf, + 0x6d, 0x7a, 0x94, 0x95, 0x7f, 0x70, 0x6c, 0xa8, + 0xa6, 0x60, 0x1d, 0xdf, 0xb3, 0x5c, 0x09, 0xfb, + 0xd6, 0x8c, 0x46, 0xfb, 0xf1, 0xb4, 0x7a, 0xff, + 0xf9, 0xbe, 0x83, 0xff, 0xf9, 0xbb, 0x7f, 0xff, + 0xb3, 0x5b, 0x07, 0xf9, 0x65, 0x7d, 0xa4, 0x8e, + 0x51, 0x88, 0xd1, 0x7f, 0x51, 0x88, 0xd1, 0x7f, + 0x51, 0x88, 0xd1, 0x7f, 0x51, 0x88, 0xd1, 0x7f, + 0x51, 0x88, 0xd1, 0x7f, 0x52, 0x85, 0xcc, 0x81, + 0xae, 0x5d, 0x0e, 0xf1, 0xf5, 0xcb, 0x91, 0xff, + 0xfd, 0xdd, 0xaf, 0xff, 0xfa, 0xd0, 0x95, 0xff, + 0xd2, 0x8f, 0x4d, 0xff, 0x68, 0x89, 0xb4, 0xff, + 0x5f, 0x6d, 0x7d, 0xff, 0x57, 0x7f, 0xb2, 0xff, + 0xcb, 0xcc, 0xcd, 0xff, 0xd4, 0xae, 0x77, 0xff, + 0xe3, 0xa1, 0x49, 0xff, 0xfc, 0xc9, 0x7d, 0xff, + 0xfc, 0xc7, 0x78, 0xff, 0xfc, 0xc5, 0x73, 0xff, + 0xfc, 0xc3, 0x6f, 0xff, 0xfb, 0xc1, 0x6a, 0xff, + 0xfb, 0xc1, 0x6e, 0xff, 0xfc, 0xd4, 0x97, 0xff, + 0xf7, 0xc9, 0x88, 0xff, 0xbb, 0x6a, 0x19, 0xfa, + 0xa5, 0x60, 0x20, 0xdd, 0xb1, 0x57, 0x00, 0xff, + 0xfc, 0xb4, 0x4b, 0xff, 0xe3, 0x94, 0x2e, 0xff, + 0xa6, 0x64, 0x24, 0xdd, 0x50, 0x88, 0xd1, 0x80, + 0x50, 0x88, 0xd1, 0x80, 0x50, 0x88, 0xd1, 0x80, + 0x50, 0x88, 0xd1, 0x80, 0x50, 0x88, 0xd1, 0x80, + 0x50, 0x88, 0xd1, 0x80, 0x50, 0x88, 0xd1, 0x80, + 0x50, 0x88, 0xd1, 0x80, 0x50, 0x88, 0xd1, 0x80, + 0x50, 0x88, 0xd1, 0x80, 0x97, 0x67, 0x3c, 0xc7, + 0xd8, 0x9b, 0x56, 0xfc, 0xfd, 0xe3, 0xbc, 0xff, + 0xf5, 0xc6, 0x88, 0xff, 0xd8, 0x9f, 0x66, 0xff, + 0x63, 0x87, 0xb6, 0xff, 0x5e, 0x6b, 0x7b, 0xff, + 0x56, 0x7d, 0xaf, 0xff, 0xc5, 0xc5, 0xc3, 0xff, + 0xe4, 0xb6, 0x72, 0xff, 0xe1, 0xa0, 0x49, 0xff, + 0xfc, 0xce, 0x88, 0xff, 0xfc, 0xcc, 0x84, 0xff, + 0xfc, 0xca, 0x80, 0xff, 0xfc, 0xc8, 0x7b, 0xff, + 0xfc, 0xc6, 0x76, 0xff, 0xfc, 0xc4, 0x73, 0xff, + 0xfc, 0xcd, 0x88, 0xff, 0xfa, 0xd5, 0x9f, 0xff, + 0xcb, 0x84, 0x37, 0xfb, 0x9e, 0x65, 0x31, 0xd1, + 0x9d, 0x64, 0x31, 0xd1, 0xb5, 0x61, 0x0f, 0xfb, + 0xd9, 0x90, 0x47, 0xfd, 0xf5, 0xb0, 0x6c, 0xff, + 0xf8, 0xa7, 0x59, 0xff, 0xf5, 0x99, 0x40, 0xff, + 0xf3, 0x8d, 0x2a, 0xff, 0xf8, 0xab, 0x60, 0xff, + 0xbc, 0x6e, 0x23, 0xfb, 0x64, 0x7b, 0xa4, 0x90, + 0x4f, 0x86, 0xd0, 0x82, 0x4f, 0x86, 0xd0, 0x82, + 0x4f, 0x86, 0xd0, 0x82, 0x60, 0x7d, 0xac, 0x8e, + 0xb0, 0x5c, 0x08, 0xf9, 0xfb, 0xdd, 0xb4, 0xff, + 0xfd, 0xdf, 0xb1, 0xff, 0xd8, 0x93, 0x4a, 0xff, + 0xa3, 0xb4, 0xc9, 0xff, 0x6c, 0x83, 0xa1, 0xff, + 0x62, 0x7b, 0x9c, 0xff, 0xa3, 0xb8, 0xd1, 0xff, + 0xb2, 0xa5, 0x91, 0xff, 0xfc, 0xbd, 0x61, 0xff, + 0xf5, 0xc2, 0x7a, 0xff, 0xfc, 0xce, 0x88, 0xff, + 0xfc, 0xcc, 0x84, 0xff, 0xfc, 0xca, 0x80, 0xff, + 0xfc, 0xc8, 0x7b, 0xff, 0xfc, 0xc6, 0x76, 0xff, + 0xfc, 0xc4, 0x73, 0xff, 0xfc, 0xcd, 0x89, 0xff, + 0xfb, 0xd7, 0xa2, 0xff, 0xde, 0xa1, 0x5a, 0xfc, + 0xb3, 0x5e, 0x0b, 0xfb, 0x9c, 0x63, 0x33, 0xcf, + 0x67, 0x79, 0x9e, 0x94, 0x67, 0x79, 0x9e, 0x94, + 0x80, 0x6d, 0x68, 0xac, 0x96, 0x64, 0x3c, 0xc8, + 0xaa, 0x5e, 0x18, 0xe6, 0xb3, 0x5d, 0x0a, 0xfb, + 0xcd, 0x7f, 0x35, 0xfb, 0xec, 0xa5, 0x5f, 0xff, + 0xf9, 0xb6, 0x75, 0xff, 0xb7, 0x63, 0x14, 0xfa, + 0x62, 0x7c, 0xa8, 0x90, 0x50, 0x85, 0xd1, 0x82, + 0x50, 0x85, 0xd1, 0x82, 0x50, 0x85, 0xd1, 0x82, + 0x9b, 0x65, 0x35, 0xce, 0xee, 0xc2, 0x88, 0xfe, + 0xfd, 0xe5, 0xc1, 0xff, 0xf7, 0xcd, 0x91, 0xff, + 0xd4, 0x95, 0x54, 0xff, 0x66, 0x88, 0xb5, 0xff, + 0x5f, 0x6c, 0x7c, 0xff, 0x56, 0x7e, 0xb2, 0xff, + 0xca, 0xca, 0xc9, 0xff, 0xdc, 0xb2, 0x75, 0xff, + 0xe2, 0xa1, 0x4a, 0xff, 0xfc, 0xce, 0x88, 0xff, + 0xfc, 0xcc, 0x84, 0xff, 0xfc, 0xca, 0x80, 0xff, + 0xfc, 0xc8, 0x7b, 0xff, 0xfc, 0xc6, 0x77, 0xff, + 0xfc, 0xc4, 0x73, 0xff, 0xfc, 0xcd, 0x88, 0xff, + 0xfc, 0xd9, 0xa6, 0xff, 0xe4, 0xaa, 0x61, 0xfd, + 0xb3, 0x5d, 0x0a, 0xfb, 0x9e, 0x63, 0x2d, 0xd4, + 0x6d, 0x77, 0x91, 0x9a, 0x7a, 0x71, 0x73, 0xa7, + 0xa4, 0x60, 0x22, 0xdc, 0xb1, 0x5b, 0x08, 0xfb, + 0xcf, 0x7f, 0x30, 0xfb, 0xed, 0xa1, 0x59, 0xff, + 0xf9, 0xb0, 0x6a, 0xff, 0xf9, 0xb6, 0x75, 0xff, + 0xb8, 0x61, 0x0f, 0xf8, 0x6c, 0x79, 0x92, 0x9a, + 0x4f, 0x87, 0xd1, 0x84, 0x4f, 0x87, 0xd1, 0x84, + 0x4f, 0x87, 0xd1, 0x84, 0x4f, 0x87, 0xd1, 0x84, + 0x4f, 0x87, 0xd1, 0x84, 0x51, 0x85, 0xcc, 0x85, + 0xae, 0x5d, 0x0e, 0xf2, 0xf5, 0xc9, 0x8d, 0xff, + 0xfd, 0xdf, 0xb2, 0xff, 0xfd, 0xd6, 0x9c, 0xff, + 0xd7, 0x92, 0x4a, 0xff, 0xa0, 0xb2, 0xca, 0xff, + 0x6e, 0x84, 0xa1, 0xff, 0x64, 0x7d, 0x9e, 0xff, + 0xa7, 0xba, 0xd3, 0xff, 0xaf, 0xa1, 0x8d, 0xff, + 0xfc, 0xbd, 0x61, 0xff, 0xf5, 0xbd, 0x6e, 0xff, + 0xfc, 0xc7, 0x78, 0xff, 0xfc, 0xc5, 0x73, 0xff, + 0xfc, 0xc3, 0x6f, 0xff, 0xfb, 0xc1, 0x6a, 0xff, + 0xfb, 0xc2, 0x70, 0xff, 0xfc, 0xd4, 0x99, 0xff, + 0xf6, 0xc7, 0x84, 0xff, 0xba, 0x67, 0x15, 0xfa, + 0xa5, 0x61, 0x21, 0xdf, 0xb1, 0x5a, 0x06, 0xfa, + 0xe9, 0xa7, 0x5d, 0xff, 0xfa, 0xc1, 0x81, 0xff, + 0xbe, 0x6d, 0x1c, 0xf9, 0x75, 0x73, 0x7d, 0xa5, + 0x4e, 0x86, 0xd1, 0x85, 0x4e, 0x86, 0xd1, 0x85, + 0x4e, 0x86, 0xd1, 0x85, 0x4e, 0x86, 0xd1, 0x85, + 0x4e, 0x86, 0xd1, 0x85, 0x4e, 0x86, 0xd1, 0x85, + 0x52, 0x89, 0xd1, 0x73, 0x52, 0x89, 0xd1, 0x73, + 0x68, 0x7d, 0x9e, 0x85, 0xb3, 0x5d, 0x0a, 0xfa, + 0xfb, 0xda, 0xac, 0xff, 0xfd, 0xda, 0xa8, 0xff, + 0xf9, 0xce, 0x95, 0xff, 0xda, 0x96, 0x53, 0xff, + 0x85, 0x9c, 0xbb, 0xff, 0x36, 0x65, 0xa2, 0xff, + 0x80, 0x98, 0xb6, 0xff, 0xe0, 0xe0, 0xdc, 0xff, + 0xc2, 0x9d, 0x6d, 0xff, 0xe3, 0xa0, 0x45, 0xff, + 0xfc, 0xca, 0x81, 0xff, 0xfc, 0xc6, 0x76, 0xff, + 0xfc, 0xc4, 0x73, 0xff, 0xfc, 0xc2, 0x6e, 0xff, + 0xfb, 0xbf, 0x66, 0xff, 0xfc, 0xba, 0x5a, 0xff, + 0xfc, 0xb6, 0x4e, 0xff, 0xfc, 0xb8, 0x55, 0xff, + 0xfb, 0xcc, 0x8a, 0xff, 0xe0, 0xaa, 0x6b, 0xfc, + 0xc2, 0x7b, 0x35, 0xf8, 0xba, 0x6c, 0x20, 0xfc, + 0xb5, 0x63, 0x13, 0xf7, 0xb1, 0x5e, 0x0e, 0xf4, + 0xba, 0x6a, 0x1e, 0xfc, 0xca, 0x83, 0x3d, 0xfa, + 0xed, 0xb0, 0x75, 0xff, 0xf8, 0xad, 0x65, 0xff, + 0xd8, 0x94, 0x51, 0xfc, 0x8a, 0x6b, 0x57, 0xaa, + 0x53, 0x88, 0xd2, 0x74, 0x53, 0x88, 0xd2, 0x74, + 0x53, 0x88, 0xd2, 0x74, 0xa5, 0x62, 0x24, 0xd5, + 0xe9, 0xb7, 0x76, 0xfd, 0xfd, 0xe3, 0xbb, 0xff, + 0xfd, 0xd8, 0xa1, 0xff, 0xe4, 0xa3, 0x5e, 0xff, + 0xd0, 0xc3, 0xb7, 0xff, 0x42, 0x6c, 0xa2, 0xff, + 0x42, 0x6c, 0xa2, 0xff, 0xc9, 0xce, 0xd2, 0xff, + 0xda, 0xd8, 0xd3, 0xff, 0xe8, 0xa3, 0x43, 0xff, + 0xf9, 0xc5, 0x7b, 0xff, 0xfc, 0xc8, 0x7d, 0xff, + 0xfc, 0xc6, 0x76, 0xff, 0xfc, 0xc4, 0x73, 0xff, + 0xfc, 0xc2, 0x6e, 0xff, 0xfc, 0xbf, 0x65, 0xff, + 0xfc, 0xba, 0x59, 0xff, 0xfc, 0xb6, 0x4e, 0xff, + 0xfc, 0xbb, 0x5b, 0xff, 0xfc, 0xca, 0x82, 0xff, + 0xf8, 0xcb, 0x8c, 0xff, 0xdd, 0x99, 0x51, 0xfd, + 0xb8, 0x65, 0x14, 0xfb, 0xba, 0x68, 0x1a, 0xf9, + 0xce, 0x83, 0x3b, 0xf8, 0xe3, 0x9f, 0x5c, 0xfe, + 0xf1, 0xbb, 0x87, 0xff, 0xf8, 0xc5, 0x93, 0xff, + 0xf8, 0xb1, 0x6c, 0xff, 0xf6, 0x95, 0x35, 0xff, + 0xf9, 0xb5, 0x73, 0xff, 0xb5, 0x5c, 0x07, 0xf8, + 0x6d, 0x7b, 0x93, 0x8b, 0x52, 0x89, 0xd0, 0x75, + 0x52, 0x89, 0xd0, 0x75, 0x7a, 0x73, 0x79, 0x97, + 0xcd, 0x88, 0x40, 0xfb, 0xfd, 0xe7, 0xc5, 0xff, + 0xfd, 0xd8, 0xa4, 0xff, 0xf9, 0xce, 0x95, 0xff, + 0xda, 0x96, 0x53, 0xff, 0x85, 0x9c, 0xbb, 0xff, + 0x36, 0x65, 0xa2, 0xff, 0x80, 0x98, 0xb6, 0xff, + 0xe0, 0xe0, 0xdc, 0xff, 0xc2, 0x9d, 0x6d, 0xff, + 0xe3, 0xa0, 0x45, 0xff, 0xfc, 0xca, 0x81, 0xff, + 0xfc, 0xc6, 0x76, 0xff, 0xfc, 0xc4, 0x73, 0xff, + 0xfc, 0xc2, 0x6e, 0xff, 0xfb, 0xbf, 0x63, 0xff, + 0xfb, 0xb8, 0x58, 0xff, 0xfc, 0xb4, 0x4e, 0xff, + 0xfc, 0xbb, 0x5e, 0xff, 0xfd, 0xcd, 0x87, 0xff, + 0xf8, 0xca, 0x8a, 0xff, 0xdb, 0x95, 0x49, 0xfd, + 0xb6, 0x62, 0x10, 0xfb, 0xc3, 0x73, 0x24, 0xf7, + 0xe8, 0x9d, 0x56, 0xff, 0xf8, 0xc1, 0x8b, 0xff, + 0xfa, 0xbe, 0x84, 0xff, 0xf8, 0xa7, 0x59, 0xff, + 0xf6, 0x96, 0x37, 0xff, 0xf9, 0xb5, 0x74, 0xff, + 0xb3, 0x5a, 0x03, 0xfa, 0x66, 0x7b, 0xa2, 0x87, + 0x51, 0x87, 0xd1, 0x77, 0x51, 0x87, 0xd1, 0x77, + 0x51, 0x87, 0xd1, 0x77, 0x51, 0x87, 0xd1, 0x77, + 0x51, 0x87, 0xd1, 0x77, 0x86, 0x6c, 0x5c, 0xa9, + 0xc5, 0x7c, 0x2e, 0xf9, 0xfd, 0xe3, 0xbb, 0xff, + 0xfc, 0xd5, 0x9c, 0xff, 0xfb, 0xd2, 0x97, 0xff, + 0xd8, 0x8f, 0x47, 0xff, 0x99, 0xac, 0xc3, 0xff, + 0x36, 0x65, 0xa1, 0xff, 0x70, 0x8d, 0xb0, 0xff, + 0xde, 0xde, 0xdb, 0xff, 0xc0, 0xa5, 0x82, 0xff, + 0xe2, 0x9b, 0x3d, 0xff, 0xfc, 0xc6, 0x78, 0xff, + 0xfb, 0xc1, 0x6c, 0xff, 0xfb, 0xbe, 0x63, 0xff, + 0xfc, 0xb5, 0x4e, 0xff, 0xfc, 0xb1, 0x43, 0xff, + 0xfc, 0xaf, 0x3d, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xbe, 0x65, 0xff, 0xf9, 0xc9, 0x88, 0xff, + 0xe5, 0xa8, 0x61, 0xff, 0xb1, 0x57, 0x01, 0xff, + 0xfb, 0xb8, 0x55, 0xff, 0xef, 0xa6, 0x43, 0xff, + 0xaf, 0x5f, 0x10, 0xee, 0x52, 0x88, 0xd1, 0x77, + 0x52, 0x88, 0xd1, 0x77, 0x52, 0x88, 0xd1, 0x77, + 0x52, 0x88, 0xd1, 0x77, 0x52, 0x88, 0xd1, 0x77, + 0x52, 0x87, 0xd1, 0x78, 0x52, 0x87, 0xd1, 0x78, + 0x52, 0x87, 0xd1, 0x78, 0x52, 0x87, 0xd1, 0x78, + 0x67, 0x7b, 0xa0, 0x89, 0xb5, 0x61, 0x0f, 0xfa, + 0xfb, 0xdb, 0xae, 0xff, 0xfd, 0xd8, 0xa3, 0xff, + 0xf9, 0xce, 0x95, 0xff, 0xda, 0x96, 0x53, 0xff, + 0x85, 0x9c, 0xbb, 0xff, 0x36, 0x65, 0xa2, 0xff, + 0x80, 0x98, 0xb6, 0xff, 0xe0, 0xe0, 0xdc, 0xff, + 0xc2, 0x9d, 0x6d, 0xff, 0xe3, 0xa0, 0x45, 0xff, + 0xfc, 0xca, 0x81, 0xff, 0xfc, 0xc6, 0x76, 0xff, + 0xfc, 0xc4, 0x73, 0xff, 0xfc, 0xc2, 0x6e, 0xff, + 0xfb, 0xbf, 0x66, 0xff, 0xfc, 0xba, 0x5a, 0xff, + 0xfc, 0xb6, 0x4e, 0xff, 0xfc, 0xbe, 0x63, 0xff, + 0xfb, 0xd1, 0x95, 0xff, 0xdd, 0xa1, 0x5b, 0xfc, + 0xde, 0x9d, 0x56, 0xfd, 0xf7, 0xbb, 0x78, 0xff, + 0xf8, 0xa1, 0x47, 0xff, 0xf4, 0x7d, 0x0a, 0xff, + 0xf2, 0x77, 0x00, 0xff, 0xf1, 0x77, 0x00, 0xff, + 0xf3, 0x78, 0x00, 0xff, 0xf8, 0xa1, 0x4d, 0xff, + 0xc7, 0x79, 0x2f, 0xf8, 0x7c, 0x72, 0x72, 0x9f, + 0x51, 0x88, 0xd2, 0x79, 0x51, 0x88, 0xd2, 0x79, + 0x51, 0x88, 0xd2, 0x79, 0xa4, 0x63, 0x26, 0xd7, + 0xe9, 0xb7, 0x76, 0xfd, 0xfd, 0xe3, 0xbb, 0xff, + 0xfd, 0xd8, 0xa1, 0xff, 0xe4, 0xa3, 0x5e, 0xff, + 0xd0, 0xc3, 0xb7, 0xff, 0x42, 0x6c, 0xa2, 0xff, + 0x42, 0x6c, 0xa2, 0xff, 0xc9, 0xce, 0xd2, 0xff, + 0xda, 0xd8, 0xd3, 0xff, 0xe8, 0xa3, 0x43, 0xff, + 0xf9, 0xc5, 0x7b, 0xff, 0xfc, 0xc8, 0x7d, 0xff, + 0xfc, 0xc6, 0x76, 0xff, 0xfc, 0xc4, 0x73, 0xff, + 0xfc, 0xc2, 0x6e, 0xff, 0xfc, 0xbf, 0x65, 0xff, + 0xfc, 0xba, 0x59, 0xff, 0xfc, 0xb6, 0x4e, 0xff, + 0xfc, 0xbb, 0x5b, 0xff, 0xfc, 0xca, 0x82, 0xff, + 0xf8, 0xcb, 0x8c, 0xff, 0xdd, 0x99, 0x51, 0xfd, + 0xb8, 0x65, 0x14, 0xfb, 0xba, 0x68, 0x1a, 0xf9, + 0xcb, 0x7d, 0x31, 0xf9, 0xe0, 0x90, 0x43, 0xfe, + 0xec, 0xa2, 0x5a, 0xff, 0xf7, 0xb2, 0x6f, 0xff, + 0xf8, 0xa1, 0x4e, 0xff, 0xf6, 0x8a, 0x22, 0xff, + 0xf9, 0xb4, 0x72, 0xff, 0xb5, 0x5c, 0x07, 0xf8, + 0x6b, 0x7a, 0x96, 0x8f, 0x50, 0x88, 0xd1, 0x7a, + 0x50, 0x88, 0xd1, 0x7a, 0x71, 0x77, 0x8a, 0x94, + 0xc6, 0x7e, 0x33, 0xfb, 0xfd, 0xe7, 0xc5, 0xff, + 0xfd, 0xd9, 0xa5, 0xff, 0xfb, 0xd2, 0x9a, 0xff, + 0xd8, 0x91, 0x4a, 0xff, 0x91, 0xa6, 0xc0, 0xff, + 0x36, 0x65, 0xa1, 0xff, 0x76, 0x91, 0xb3, 0xff, + 0xdf, 0xdf, 0xdc, 0xff, 0xc2, 0xa3, 0x79, 0xff, + 0xe2, 0x9e, 0x43, 0xff, 0xfc, 0xca, 0x81, 0xff, + 0xfc, 0xc6, 0x77, 0xff, 0xfc, 0xc4, 0x73, 0xff, + 0xfc, 0xc2, 0x6e, 0xff, 0xfb, 0xbf, 0x65, 0xff, + 0xfb, 0xb9, 0x58, 0xff, 0xfc, 0xb5, 0x4e, 0xff, + 0xfc, 0xbb, 0x5d, 0xff, 0xfc, 0xcb, 0x84, 0xff, + 0xf9, 0xcc, 0x8d, 0xff, 0xde, 0x9a, 0x4d, 0xfd, + 0xb6, 0x63, 0x13, 0xfa, 0xc0, 0x70, 0x20, 0xf8, + 0xe4, 0x95, 0x47, 0xfe, 0xf6, 0xb1, 0x6d, 0xff, + 0xf8, 0xa4, 0x53, 0xff, 0xf6, 0x8c, 0x25, 0xff, + 0xf5, 0x7d, 0x08, 0xff, 0xf9, 0xb4, 0x71, 0xff, + 0xb6, 0x5c, 0x05, 0xf8, 0x6f, 0x79, 0x8f, 0x93, + 0x51, 0x89, 0xd1, 0x7b, 0x51, 0x89, 0xd1, 0x7b, + 0x51, 0x89, 0xd1, 0x7b, 0x51, 0x89, 0xd1, 0x7b, + 0x51, 0x89, 0xd1, 0x7b, 0x85, 0x6d, 0x5e, 0xac, + 0xc4, 0x79, 0x29, 0xf9, 0xfd, 0xe4, 0xbd, 0xff, + 0xfc, 0xd5, 0x9c, 0xff, 0xfc, 0xd5, 0x9b, 0xff, + 0xe2, 0xa1, 0x59, 0xff, 0xcd, 0xc2, 0xb8, 0xff, + 0x41, 0x6c, 0xa1, 0xff, 0x44, 0x6d, 0xa2, 0xff, + 0xc8, 0xcd, 0xd2, 0xff, 0xd6, 0xd3, 0xcf, 0xff, + 0xe7, 0xa2, 0x42, 0xff, 0xf9, 0xc0, 0x71, 0xff, + 0xfb, 0xc1, 0x6e, 0xff, 0xfb, 0xbe, 0x63, 0xff, + 0xfc, 0xb5, 0x4e, 0xff, 0xfc, 0xb1, 0x43, 0xff, + 0xfc, 0xaf, 0x3d, 0xff, 0xfc, 0xaf, 0x3f, 0xff, + 0xfc, 0xc0, 0x6a, 0xff, 0xf9, 0xc8, 0x87, 0xff, + 0xe4, 0xa2, 0x56, 0xff, 0xf5, 0xb8, 0x6e, 0xff, + 0xfa, 0xb9, 0x6e, 0xff, 0xf9, 0xb3, 0x65, 0xff, + 0xd0, 0x80, 0x30, 0xfb, 0x89, 0x6a, 0x55, 0xb3, + 0x50, 0x87, 0xd1, 0x7d, 0x50, 0x87, 0xd1, 0x7d, + 0x50, 0x87, 0xd1, 0x7d, 0x50, 0x87, 0xd1, 0x7d, + 0x50, 0x87, 0xd1, 0x7d, 0x50, 0x87, 0xd1, 0x7d, + 0x55, 0x8a, 0xd1, 0x6b, 0x55, 0x8a, 0xd1, 0x6b, + 0xa7, 0x62, 0x22, 0xd2, 0xe2, 0xa5, 0x5e, 0xfd, + 0xfc, 0xe1, 0xb6, 0xff, 0xfc, 0xd4, 0x97, 0xff, + 0xfc, 0xd7, 0x9f, 0xff, 0xe7, 0xa2, 0x5a, 0xff, + 0xdc, 0xba, 0x96, 0xff, 0xd1, 0xce, 0xc7, 0xff, + 0xcb, 0xcb, 0xc5, 0xff, 0xd0, 0xc4, 0xb2, 0xff, + 0xce, 0x88, 0x45, 0xff, 0xf3, 0xba, 0x6d, 0xff, + 0xfc, 0xc6, 0x79, 0xff, 0xfb, 0xc0, 0x69, 0xff, + 0xfb, 0xbd, 0x5e, 0xff, 0xfd, 0xb4, 0x4b, 0xff, + 0xfc, 0xaf, 0x3f, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfa, 0xb6, 0x5a, 0xff, + 0xfa, 0xb6, 0x64, 0xff, 0xf9, 0xb4, 0x68, 0xff, + 0xf6, 0xb2, 0x6d, 0xff, 0xf3, 0xb0, 0x6f, 0xff, + 0xf9, 0xb2, 0x6c, 0xff, 0xf9, 0xb9, 0x7b, 0xff, + 0xf8, 0xa3, 0x53, 0xff, 0xf7, 0x97, 0x3b, 0xff, + 0xcd, 0x88, 0x44, 0xf9, 0x84, 0x70, 0x63, 0x9a, + 0x54, 0x8b, 0xd1, 0x6b, 0x54, 0x8b, 0xd1, 0x6b, + 0x80, 0x71, 0x6c, 0x94, 0xbe, 0x71, 0x22, 0xf9, + 0xfd, 0xe5, 0xc0, 0xff, 0xfc, 0xd6, 0x9e, 0xff, + 0xfc, 0xd7, 0x9f, 0xff, 0xf7, 0xca, 0x8a, 0xff, + 0xe1, 0x9b, 0x55, 0xff, 0xd7, 0xcd, 0xbf, 0xff, + 0xcc, 0xcc, 0xc6, 0xff, 0xcd, 0xcb, 0xc2, 0xff, + 0xd8, 0xae, 0x81, 0xff, 0xd8, 0x9a, 0x4c, 0xff, + 0xfc, 0xcc, 0x86, 0xff, 0xfc, 0xc2, 0x6f, 0xff, + 0xfb, 0xc1, 0x68, 0xff, 0xfb, 0xba, 0x57, 0xff, + 0xfb, 0xb2, 0x47, 0xff, 0xfc, 0xaf, 0x3d, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfa, 0xa9, 0x3d, 0xff, 0xfa, 0xb2, 0x5b, 0xff, + 0xfa, 0xbb, 0x75, 0xff, 0xf9, 0xb3, 0x6b, 0xff, + 0xf8, 0xae, 0x66, 0xff, 0xf8, 0xac, 0x62, 0xff, + 0xf8, 0xac, 0x64, 0xff, 0xf7, 0x9c, 0x45, 0xff, + 0xf6, 0x8f, 0x2b, 0xff, 0xf5, 0x8a, 0x22, 0xff, + 0xf5, 0xae, 0x69, 0xff, 0xb1, 0x59, 0x03, 0xf9, + 0x57, 0x89, 0xca, 0x6f, 0x55, 0x8b, 0xd0, 0x6d, + 0x58, 0x88, 0xc8, 0x6f, 0xb0, 0x5f, 0x11, 0xed, + 0xfa, 0xdc, 0xb1, 0xff, 0xfc, 0xde, 0xb0, 0xff, + 0xfc, 0xd4, 0x97, 0xff, 0xfc, 0xd7, 0x9f, 0xff, + 0xe7, 0xa2, 0x5a, 0xff, 0xdc, 0xba, 0x96, 0xff, + 0xd1, 0xce, 0xc7, 0xff, 0xcb, 0xcb, 0xc5, 0xff, + 0xd0, 0xc4, 0xb2, 0xff, 0xce, 0x88, 0x45, 0xff, + 0xf3, 0xba, 0x6d, 0xff, 0xfc, 0xc6, 0x79, 0xff, + 0xfb, 0xc0, 0x67, 0xff, 0xfb, 0xb9, 0x56, 0xff, + 0xfb, 0xb1, 0x46, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfa, 0xac, 0x43, 0xff, 0xfa, 0xb6, 0x63, 0xff, + 0xf9, 0xbe, 0x7a, 0xff, 0xf9, 0xb4, 0x6d, 0xff, + 0xf7, 0xa3, 0x52, 0xff, 0xf7, 0x9a, 0x40, 0xff, + 0xf8, 0xa1, 0x4e, 0xff, 0xf7, 0x9a, 0x40, 0xff, + 0xf6, 0x99, 0x3f, 0xff, 0xf3, 0xac, 0x68, 0xff, + 0xb1, 0x59, 0x05, 0xf6, 0x54, 0x8a, 0xd0, 0x6e, + 0x54, 0x8a, 0xd0, 0x6e, 0x54, 0x8a, 0xd0, 0x6e, + 0x54, 0x8a, 0xd0, 0x6e, 0x54, 0x8a, 0xd0, 0x6e, + 0x54, 0x8a, 0xd0, 0x6e, 0xb0, 0x5d, 0x0c, 0xf1, + 0xf4, 0xca, 0x90, 0xff, 0xfc, 0xd9, 0xa5, 0xff, + 0xfc, 0xd0, 0x8f, 0xff, 0xfc, 0xd5, 0x9a, 0xff, + 0xeb, 0xaa, 0x60, 0xff, 0xde, 0xb3, 0x87, 0xff, + 0xd1, 0xce, 0xc6, 0xff, 0xcb, 0xcb, 0xc5, 0xff, + 0xd0, 0xc7, 0xb8, 0xff, 0xd5, 0x91, 0x50, 0xff, + 0xea, 0xae, 0x5f, 0xff, 0xfb, 0xc4, 0x70, 0xff, + 0xfc, 0xb6, 0x4d, 0xff, 0xfc, 0xb0, 0x3f, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfb, 0xad, 0x41, 0xff, + 0xfa, 0xb0, 0x50, 0xff, 0xb2, 0x5a, 0x02, 0xff, + 0xfa, 0xba, 0x5f, 0xff, 0xf9, 0xb8, 0x5b, 0xff, + 0xb1, 0x59, 0x03, 0xfb, 0x53, 0x8a, 0xd1, 0x6f, + 0x53, 0x8a, 0xd1, 0x6f, 0x53, 0x8a, 0xd1, 0x6f, + 0x53, 0x8a, 0xd1, 0x6f, 0x53, 0x8a, 0xd1, 0x6f, + 0x53, 0x8a, 0xd1, 0x6f, 0x53, 0x8a, 0xd1, 0x6f, + 0x53, 0x8a, 0xd1, 0x6f, 0x53, 0x8a, 0xd1, 0x6f, + 0xa6, 0x63, 0x23, 0xd4, 0xe3, 0xab, 0x68, 0xfd, + 0xfc, 0xde, 0xaf, 0xff, 0xfc, 0xd4, 0x97, 0xff, + 0xfc, 0xd7, 0x9f, 0xff, 0xe7, 0xa2, 0x5a, 0xff, + 0xdc, 0xba, 0x96, 0xff, 0xd1, 0xce, 0xc7, 0xff, + 0xcb, 0xcb, 0xc5, 0xff, 0xd0, 0xc4, 0xb2, 0xff, + 0xce, 0x88, 0x45, 0xff, 0xf3, 0xba, 0x6d, 0xff, + 0xfc, 0xc6, 0x79, 0xff, 0xfb, 0xc0, 0x69, 0xff, + 0xfb, 0xbd, 0x5e, 0xff, 0xfd, 0xb4, 0x4b, 0xff, + 0xfc, 0xaf, 0x3f, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xb2, 0x47, 0xff, 0xfb, 0xb9, 0x60, 0xff, + 0xfa, 0xad, 0x51, 0xff, 0xf7, 0x91, 0x1e, 0xff, + 0xf6, 0x82, 0x0a, 0xff, 0xf3, 0x78, 0x00, 0xff, + 0xf2, 0x77, 0x00, 0xff, 0xf2, 0x77, 0x00, 0xff, + 0xf3, 0x78, 0x00, 0xff, 0xf6, 0x90, 0x2d, 0xff, + 0xe1, 0x94, 0x49, 0xfe, 0x9f, 0x62, 0x2c, 0xc8, + 0x54, 0x8a, 0xd1, 0x70, 0x54, 0x8a, 0xd2, 0x71, + 0x7e, 0x71, 0x70, 0x99, 0xbe, 0x71, 0x22, 0xf9, + 0xfd, 0xe5, 0xc0, 0xff, 0xfc, 0xd6, 0x9e, 0xff, + 0xfc, 0xd7, 0x9f, 0xff, 0xf7, 0xca, 0x8a, 0xff, + 0xe1, 0x9b, 0x55, 0xff, 0xd7, 0xcd, 0xbf, 0xff, + 0xcc, 0xcc, 0xc6, 0xff, 0xcd, 0xcb, 0xc2, 0xff, + 0xd8, 0xae, 0x81, 0xff, 0xd8, 0x9a, 0x4c, 0xff, + 0xfc, 0xcc, 0x86, 0xff, 0xfc, 0xc2, 0x6f, 0xff, + 0xfb, 0xc1, 0x68, 0xff, 0xfb, 0xba, 0x57, 0xff, + 0xfb, 0xb2, 0x47, 0xff, 0xfc, 0xaf, 0x3d, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfa, 0xa9, 0x3d, 0xff, 0xfa, 0xb2, 0x5b, 0xff, + 0xfa, 0xbb, 0x75, 0xff, 0xf9, 0xb3, 0x6a, 0xff, + 0xf8, 0xa1, 0x4d, 0xff, 0xf7, 0x95, 0x36, 0xff, + 0xf6, 0x89, 0x20, 0xff, 0xf5, 0x7c, 0x07, 0xff, + 0xf5, 0x79, 0x00, 0xff, 0xf5, 0x80, 0x0e, 0xff, + 0xf5, 0xae, 0x69, 0xff, 0xb1, 0x59, 0x04, 0xf9, + 0x55, 0x87, 0xca, 0x73, 0x53, 0x89, 0xd0, 0x71, + 0x54, 0x87, 0xce, 0x72, 0xab, 0x5f, 0x15, 0xe6, + 0xf8, 0xd6, 0xa9, 0xff, 0xfc, 0xdf, 0xb3, 0xff, + 0xfc, 0xd3, 0x96, 0xff, 0xfc, 0xd7, 0xa0, 0xff, + 0xe9, 0xa8, 0x5e, 0xff, 0xdd, 0xb7, 0x8e, 0xff, + 0xd1, 0xcf, 0xc7, 0xff, 0xcb, 0xcb, 0xc5, 0xff, + 0xd1, 0xc5, 0xb5, 0xff, 0xd4, 0x8f, 0x4b, 0xff, + 0xed, 0xb6, 0x68, 0xff, 0xfc, 0xc7, 0x7a, 0xff, + 0xfb, 0xc1, 0x68, 0xff, 0xfb, 0xb9, 0x59, 0xff, + 0xfb, 0xb2, 0x48, 0xff, 0xfc, 0xaf, 0x3d, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfa, 0xac, 0x41, 0xff, 0xfa, 0xb6, 0x62, 0xff, + 0xf9, 0xbd, 0x78, 0xff, 0xf9, 0xb4, 0x6b, 0xff, + 0xf7, 0x96, 0x38, 0xff, 0xf5, 0x7f, 0x0c, 0xff, + 0xf5, 0x79, 0x00, 0xff, 0xf5, 0x79, 0x00, 0xff, + 0xf5, 0x81, 0x11, 0xff, 0xf5, 0xac, 0x65, 0xff, + 0xb1, 0x58, 0x03, 0xfb, 0x54, 0x87, 0xcb, 0x75, + 0x52, 0x89, 0xd1, 0x73, 0x52, 0x89, 0xd1, 0x73, + 0x52, 0x89, 0xd1, 0x73, 0x52, 0x89, 0xd1, 0x73, + 0x52, 0x89, 0xd1, 0x73, 0xaf, 0x5d, 0x0c, 0xf1, + 0xf4, 0xc8, 0x8d, 0xff, 0xfc, 0xda, 0xa8, 0xff, + 0xfc, 0xd0, 0x8f, 0xff, 0xfc, 0xd3, 0x95, 0xff, + 0xf7, 0xc7, 0x81, 0xff, 0xe1, 0x9b, 0x55, 0xff, + 0xd7, 0xcd, 0xbf, 0xff, 0xcc, 0xcc, 0xc6, 0xff, + 0xcd, 0xcb, 0xc2, 0xff, 0xd8, 0xae, 0x81, 0xff, + 0xd6, 0x96, 0x48, 0xff, 0xfb, 0xc6, 0x77, 0xff, + 0xfc, 0xb6, 0x4e, 0xff, 0xfc, 0xb0, 0x3f, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfb, 0xae, 0x44, 0xff, + 0xfb, 0xb6, 0x5c, 0xff, 0xf8, 0xa8, 0x46, 0xff, + 0xf4, 0x90, 0x1e, 0xff, 0xf7, 0xa6, 0x4b, 0xff, + 0xdf, 0x92, 0x43, 0xff, 0x9c, 0x63, 0x31, 0xc7, + 0x53, 0x89, 0xd1, 0x74, 0x53, 0x89, 0xd1, 0x74, + 0x53, 0x89, 0xd1, 0x74, 0x53, 0x89, 0xd1, 0x74, + 0x53, 0x89, 0xd1, 0x74, 0x53, 0x89, 0xd1, 0x74, + 0x59, 0x8b, 0xd1, 0x62, 0x59, 0x8a, 0xcc, 0x63, + 0xb1, 0x5b, 0x06, 0xf6, 0xf5, 0xc7, 0x87, 0xff, + 0xfc, 0xd4, 0x99, 0xff, 0xfc, 0xce, 0x88, 0xff, + 0xfc, 0xd2, 0x94, 0xff, 0xf9, 0xcb, 0x8c, 0xff, + 0xee, 0xa7, 0x5d, 0xff, 0xeb, 0x9e, 0x52, 0xff, + 0xe6, 0xa3, 0x5f, 0xff, 0xed, 0x9f, 0x52, 0xff, + 0xf4, 0xb7, 0x6b, 0xff, 0xfb, 0xcb, 0x84, 0xff, + 0xfc, 0xba, 0x59, 0xff, 0xfb, 0xb2, 0x46, 0xff, + 0xfc, 0xaf, 0x3d, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xb0, 0x41, 0xff, 0xfb, 0xb9, 0x61, 0xff, + 0xfa, 0xb6, 0x65, 0xff, 0xf8, 0x9d, 0x38, 0xff, + 0xf5, 0x80, 0x09, 0xff, 0xf0, 0x77, 0x01, 0xff, + 0xf2, 0x8d, 0x2b, 0xff, 0xf5, 0xa4, 0x54, 0xff, + 0xf6, 0x94, 0x35, 0xff, 0xf8, 0xa4, 0x54, 0xff, + 0xbf, 0x72, 0x29, 0xfa, 0x6e, 0x7d, 0x98, 0x77, + 0x56, 0x8c, 0xd1, 0x63, 0x58, 0x8d, 0xd1, 0x63, + 0x8b, 0x6d, 0x5a, 0x98, 0xc5, 0x7c, 0x31, 0xf9, + 0xfd, 0xd8, 0xa2, 0xff, 0xfc, 0xd0, 0x8b, 0xff, + 0xfc, 0xcf, 0x8b, 0xff, 0xfc, 0xd7, 0x9e, 0xff, + 0xf4, 0xb9, 0x73, 0xff, 0xec, 0x9f, 0x52, 0xff, + 0xe7, 0xa3, 0x5f, 0xff, 0xec, 0x9e, 0x52, 0xff, + 0xef, 0xa9, 0x5d, 0xff, 0xfa, 0xc7, 0x81, 0xff, + 0xfb, 0xc3, 0x6f, 0xff, 0xfc, 0xb6, 0x4f, 0xff, + 0xfc, 0xaf, 0x41, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfa, 0xa4, 0x31, 0xff, 0xf9, 0x9a, 0x28, 0xff, + 0xf8, 0x9c, 0x37, 0xff, 0xf7, 0x94, 0x2f, 0xff, + 0xf4, 0x8a, 0x24, 0xff, 0xf3, 0x93, 0x38, 0xff, + 0xf3, 0x9d, 0x4c, 0xff, 0xf3, 0x97, 0x3e, 0xff, + 0xf3, 0x8d, 0x29, 0xff, 0xf5, 0x8e, 0x28, 0xff, + 0xe9, 0xa3, 0x60, 0xff, 0xaa, 0x5e, 0x19, 0xd6, + 0x57, 0x8c, 0xd2, 0x64, 0x57, 0x8c, 0xd2, 0x64, + 0x59, 0x8a, 0xcb, 0x66, 0xb1, 0x5c, 0x09, 0xf3, + 0xf7, 0xcd, 0x92, 0xff, 0xfd, 0xd4, 0x95, 0xff, + 0xfc, 0xce, 0x88, 0xff, 0xfc, 0xd2, 0x94, 0xff, + 0xf9, 0xcb, 0x8c, 0xff, 0xee, 0xa7, 0x5d, 0xff, + 0xeb, 0x9e, 0x52, 0xff, 0xe6, 0xa3, 0x5f, 0xff, + 0xed, 0x9f, 0x52, 0xff, 0xf4, 0xb7, 0x6b, 0xff, + 0xfb, 0xc9, 0x80, 0xff, 0xfd, 0xb6, 0x4f, 0xff, + 0xfc, 0xaf, 0x41, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfa, 0xa4, 0x31, 0xff, 0xf9, 0x9a, 0x28, 0xff, + 0xf8, 0x9d, 0x38, 0xff, 0xf7, 0x98, 0x37, 0xff, + 0xf4, 0x8a, 0x25, 0xff, 0xf3, 0x93, 0x38, 0xff, + 0xf3, 0x9d, 0x4c, 0xff, 0xf3, 0x97, 0x3e, 0xff, + 0xf4, 0x9a, 0x42, 0xff, 0xe9, 0xa3, 0x5e, 0xff, + 0xa9, 0x5f, 0x19, 0xd8, 0x57, 0x8c, 0xd0, 0x66, + 0x57, 0x8c, 0xd0, 0x66, 0x57, 0x8c, 0xd0, 0x66, + 0x57, 0x8c, 0xd0, 0x66, 0x57, 0x8c, 0xd0, 0x66, + 0x57, 0x8c, 0xd0, 0x66, 0xaf, 0x5f, 0x10, 0xe8, + 0xf1, 0xbf, 0x7c, 0xff, 0xfd, 0xcd, 0x89, 0xff, + 0xfc, 0xcb, 0x83, 0xff, 0xfc, 0xcf, 0x8c, 0xff, + 0xfa, 0xcd, 0x8d, 0xff, 0xf0, 0xa8, 0x5e, 0xff, + 0xeb, 0x9d, 0x50, 0xff, 0xe6, 0xa4, 0x60, 0xff, + 0xec, 0x9d, 0x51, 0xff, 0xf3, 0xb1, 0x62, 0xff, + 0xfb, 0xc5, 0x74, 0xff, 0xfc, 0xb1, 0x44, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfb, 0xb2, 0x4d, 0xff, + 0xf5, 0xb4, 0x62, 0xff, 0xb6, 0x5e, 0x07, 0xff, + 0xfc, 0xc2, 0x6c, 0xff, 0xf9, 0xbc, 0x66, 0xff, + 0xb1, 0x59, 0x03, 0xfb, 0x57, 0x8b, 0xd1, 0x66, + 0x57, 0x8b, 0xd1, 0x66, 0x57, 0x8b, 0xd1, 0x66, + 0x57, 0x8b, 0xd1, 0x66, 0x57, 0x8b, 0xd1, 0x66, + 0x57, 0x8b, 0xd1, 0x66, 0x57, 0x8b, 0xd1, 0x66, + 0x57, 0x8b, 0xd1, 0x66, 0x57, 0x8a, 0xcc, 0x67, + 0xb1, 0x5c, 0x08, 0xf7, 0xf7, 0xce, 0x97, 0xff, + 0xfc, 0xcf, 0x8f, 0xff, 0xfc, 0xce, 0x88, 0xff, + 0xfc, 0xd2, 0x94, 0xff, 0xf9, 0xcb, 0x8c, 0xff, + 0xee, 0xa7, 0x5d, 0xff, 0xeb, 0x9e, 0x52, 0xff, + 0xe6, 0xa3, 0x5f, 0xff, 0xed, 0x9f, 0x52, 0xff, + 0xf4, 0xb7, 0x6b, 0xff, 0xfb, 0xcb, 0x84, 0xff, + 0xfc, 0xba, 0x59, 0xff, 0xfb, 0xb2, 0x46, 0xff, + 0xfc, 0xaf, 0x3d, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xb0, 0x41, 0xff, 0xfb, 0xb8, 0x5f, 0xff, + 0xfa, 0xb6, 0x65, 0xff, 0xf9, 0xac, 0x58, 0xff, + 0xf8, 0xa4, 0x4e, 0xff, 0xf7, 0x9a, 0x40, 0xff, + 0xf6, 0x90, 0x2d, 0xff, 0xf6, 0x86, 0x1a, 0xff, + 0xf5, 0x7a, 0x02, 0xff, 0xf5, 0x7f, 0x0c, 0xff, + 0xf1, 0xac, 0x69, 0xff, 0xaf, 0x5c, 0x0b, 0xed, + 0x56, 0x8a, 0xd1, 0x68, 0x56, 0x8a, 0xd1, 0x68, + 0x89, 0x6d, 0x5c, 0x9b, 0xc5, 0x7c, 0x32, 0xf9, + 0xfd, 0xd8, 0xa2, 0xff, 0xfc, 0xd0, 0x8b, 0xff, + 0xfc, 0xcf, 0x8b, 0xff, 0xfc, 0xd7, 0x9e, 0xff, + 0xf4, 0xb9, 0x73, 0xff, 0xec, 0x9f, 0x52, 0xff, + 0xe7, 0xa3, 0x5f, 0xff, 0xec, 0x9e, 0x52, 0xff, + 0xef, 0xa9, 0x5d, 0xff, 0xfa, 0xc7, 0x81, 0xff, + 0xfb, 0xc3, 0x6f, 0xff, 0xfc, 0xb6, 0x4f, 0xff, + 0xfc, 0xaf, 0x41, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfa, 0xa4, 0x31, 0xff, 0xf9, 0x9a, 0x28, 0xff, + 0xf8, 0x9c, 0x37, 0xff, 0xf7, 0x8f, 0x25, 0xff, + 0xf3, 0x78, 0x00, 0xff, 0xf1, 0x77, 0x00, 0xff, + 0xf0, 0x76, 0x00, 0xff, 0xf1, 0x77, 0x00, 0xff, + 0xf2, 0x77, 0x00, 0xff, 0xf5, 0x84, 0x15, 0xff, + 0xe9, 0xa3, 0x60, 0xff, 0xa9, 0x5e, 0x1a, 0xd8, + 0x57, 0x8b, 0xd2, 0x69, 0x57, 0x8b, 0xd2, 0x69, + 0x56, 0x8a, 0xd0, 0x69, 0xb0, 0x5e, 0x0e, 0xed, + 0xf3, 0xc7, 0x89, 0xff, 0xfc, 0xd3, 0x97, 0xff, + 0xfc, 0xce, 0x88, 0xff, 0xfc, 0xd2, 0x92, 0xff, + 0xfa, 0xcf, 0x90, 0xff, 0xef, 0xa9, 0x5f, 0xff, + 0xeb, 0x9e, 0x50, 0xff, 0xe5, 0xa4, 0x60, 0xff, + 0xec, 0x9e, 0x52, 0xff, 0xf3, 0xb5, 0x69, 0xff, + 0xfb, 0xca, 0x81, 0xff, 0xfc, 0xb7, 0x52, 0xff, + 0xfc, 0xaf, 0x40, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfa, 0xa4, 0x32, 0xff, 0xf9, 0x9a, 0x28, 0xff, + 0xf8, 0x9d, 0x38, 0xff, 0xf7, 0x94, 0x30, 0xff, + 0xf4, 0x79, 0x02, 0xff, 0xf1, 0x77, 0x00, 0xff, + 0xf0, 0x76, 0x00, 0xff, 0xf1, 0x77, 0x00, 0xff, + 0xf2, 0x83, 0x16, 0xff, 0xed, 0xa4, 0x5e, 0xff, + 0xad, 0x5e, 0x12, 0xe3, 0x56, 0x8b, 0xd1, 0x6a, + 0x56, 0x8b, 0xd1, 0x6a, 0x56, 0x8b, 0xd1, 0x6a, + 0x56, 0x8b, 0xd1, 0x6a, 0x56, 0x8b, 0xd1, 0x6a, + 0x56, 0x8b, 0xd1, 0x6a, 0xaf, 0x5f, 0x11, 0xe9, + 0xf1, 0xbe, 0x7a, 0xff, 0xfd, 0xce, 0x8b, 0xff, + 0xfc, 0xcb, 0x83, 0xff, 0xfc, 0xca, 0x82, 0xff, + 0xfc, 0xd3, 0x95, 0xff, 0xf3, 0xb5, 0x6b, 0xff, + 0xeb, 0x9f, 0x52, 0xff, 0xe6, 0xa4, 0x60, 0xff, + 0xeb, 0x9d, 0x51, 0xff, 0xf0, 0xa9, 0x59, 0xff, + 0xfa, 0xc0, 0x6e, 0xff, 0xfc, 0xb7, 0x53, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfb, 0xb3, 0x50, 0xff, + 0xfb, 0xbe, 0x6f, 0xff, 0xfa, 0xae, 0x53, 0xff, + 0xf4, 0x93, 0x24, 0xff, 0xf7, 0xa2, 0x44, 0xff, + 0xe3, 0x99, 0x4d, 0xff, 0xa5, 0x60, 0x21, 0xd1, + 0x55, 0x8a, 0xd1, 0x6b, 0x54, 0x8b, 0xd1, 0x6b, + 0x54, 0x8b, 0xd1, 0x6b, 0x54, 0x8b, 0xd1, 0x6b, + 0x54, 0x8b, 0xd1, 0x6b, 0x54, 0x8b, 0xd1, 0x6b, + 0x59, 0x8e, 0xd0, 0x59, 0x59, 0x8e, 0xd0, 0x59, + 0x9e, 0x64, 0x30, 0xb3, 0xd2, 0x8a, 0x3a, 0xfb, + 0xfd, 0xcb, 0x83, 0xff, 0xfc, 0xbf, 0x65, 0xff, + 0xfc, 0xc6, 0x77, 0xff, 0xfc, 0xcd, 0x89, 0xff, + 0xfc, 0xd2, 0x95, 0xff, 0xfa, 0xc9, 0x84, 0xff, + 0xfa, 0xc4, 0x7c, 0xff, 0xfc, 0xcb, 0x85, 0xff, + 0xfb, 0xc8, 0x7a, 0xff, 0xfb, 0xb4, 0x4b, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xb2, 0x46, 0xff, + 0xfc, 0xca, 0x82, 0xff, 0xe0, 0xa3, 0x5f, 0xfd, + 0xd5, 0x8c, 0x3e, 0xfb, 0xf2, 0xaf, 0x66, 0xff, + 0xf9, 0xb3, 0x6c, 0xff, 0xf7, 0x96, 0x39, 0xff, + 0xf2, 0x90, 0x33, 0xff, 0xf2, 0xa1, 0x53, 0xff, + 0xf5, 0x93, 0x36, 0xff, 0xf4, 0xaf, 0x6b, 0xff, + 0xb5, 0x63, 0x12, 0xf7, 0x5a, 0x8e, 0xd1, 0x5a, + 0x5a, 0x8e, 0xd1, 0x5a, 0x5a, 0x8e, 0xd1, 0x5a, + 0x5c, 0x8c, 0xca, 0x5c, 0xb1, 0x5d, 0x0a, 0xef, + 0xf0, 0xbc, 0x79, 0xff, 0xfc, 0xbe, 0x63, 0xff, + 0xfd, 0xc2, 0x6b, 0xff, 0xfd, 0xc8, 0x7e, 0xff, + 0xfc, 0xd3, 0x96, 0xff, 0xfc, 0xcf, 0x8e, 0xff, + 0xfa, 0xc5, 0x7e, 0xff, 0xfb, 0xc8, 0x7f, 0xff, + 0xfc, 0xcb, 0x82, 0xff, 0xfb, 0xbc, 0x60, 0xff, + 0xfc, 0xae, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfb, 0xae, 0x3d, 0xff, + 0xfa, 0xae, 0x49, 0xff, 0xfa, 0xc0, 0x7a, 0xff, + 0xe8, 0xa6, 0x61, 0xff, 0xee, 0xac, 0x6a, 0xff, + 0xf9, 0xb9, 0x7b, 0xff, 0xf5, 0xa8, 0x5f, 0xff, + 0xf3, 0xa0, 0x51, 0xff, 0xf4, 0x97, 0x3d, 0xff, + 0xf5, 0x8d, 0x28, 0xff, 0xf5, 0x8f, 0x2b, 0xff, + 0xdd, 0x9d, 0x5d, 0xfc, 0x98, 0x65, 0x39, 0xa9, + 0x59, 0x8d, 0xcf, 0x5b, 0x59, 0x8d, 0xcf, 0x5b, + 0x58, 0x8e, 0xd0, 0x5c, 0x99, 0x67, 0x39, 0xad, + 0xd0, 0x8a, 0x3c, 0xfa, 0xfd, 0xc9, 0x81, 0xff, + 0xfc, 0xbc, 0x5e, 0xff, 0xfd, 0xc2, 0x6d, 0xff, + 0xfc, 0xcd, 0x89, 0xff, 0xfc, 0xd2, 0x95, 0xff, + 0xfa, 0xc9, 0x84, 0xff, 0xfa, 0xc2, 0x7a, 0xff, + 0xfb, 0xc7, 0x7b, 0xff, 0xfb, 0xc4, 0x70, 0xff, + 0xfc, 0xb2, 0x46, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfb, 0xae, 0x3d, 0xff, + 0xfa, 0xac, 0x45, 0xff, 0xfa, 0xc0, 0x79, 0xff, + 0xe9, 0xa6, 0x5f, 0xff, 0xee, 0xab, 0x68, 0xff, + 0xf9, 0xbb, 0x7f, 0xff, 0xf5, 0xaa, 0x61, 0xff, + 0xf3, 0xa0, 0x51, 0xff, 0xf4, 0x97, 0x3d, 0xff, + 0xf6, 0x9b, 0x43, 0xff, 0xe3, 0x9f, 0x5d, 0xfe, + 0x9d, 0x65, 0x32, 0xb3, 0x5a, 0x8d, 0xd0, 0x5d, + 0x5a, 0x8d, 0xd0, 0x5d, 0x5a, 0x8d, 0xd0, 0x5d, + 0x5a, 0x8d, 0xd0, 0x5d, 0x5a, 0x8d, 0xd0, 0x5d, + 0x5a, 0x8d, 0xd0, 0x5d, 0x95, 0x68, 0x42, 0xa3, + 0xcc, 0x84, 0x33, 0xfb, 0xfa, 0xc6, 0x78, 0xff, + 0xfc, 0xba, 0x59, 0xff, 0xfc, 0xc3, 0x6e, 0xff, + 0xfc, 0xcb, 0x82, 0xff, 0xfc, 0xd1, 0x91, 0xff, + 0xfb, 0xc9, 0x80, 0xff, 0xfa, 0xc2, 0x76, 0xff, + 0xfb, 0xc5, 0x73, 0xff, 0xfc, 0xc3, 0x71, 0xff, + 0xfc, 0xb4, 0x4a, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xbd, 0x61, 0xff, 0xf7, 0xc4, 0x82, 0xff, + 0xc7, 0x7c, 0x2e, 0xfb, 0xc4, 0x74, 0x1f, 0xff, + 0xfc, 0xc5, 0x73, 0xff, 0xf4, 0xb8, 0x66, 0xff, + 0xb1, 0x5d, 0x09, 0xf1, 0x59, 0x8e, 0xd0, 0x5d, + 0x59, 0x8e, 0xd0, 0x5d, 0x59, 0x8e, 0xd0, 0x5d, + 0x58, 0x8d, 0xd1, 0x5e, 0x58, 0x8d, 0xd1, 0x5e, + 0x58, 0x8d, 0xd1, 0x5e, 0x58, 0x8d, 0xd1, 0x5e, + 0x58, 0x8d, 0xd1, 0x5e, 0x58, 0x8d, 0xd1, 0x5e, + 0x9d, 0x65, 0x33, 0xb5, 0xd8, 0x98, 0x51, 0xfc, + 0xfc, 0xc3, 0x70, 0xff, 0xfc, 0xbf, 0x65, 0xff, + 0xfc, 0xc6, 0x77, 0xff, 0xfc, 0xcd, 0x89, 0xff, + 0xfc, 0xd2, 0x95, 0xff, 0xfa, 0xc9, 0x84, 0xff, + 0xfa, 0xc4, 0x7c, 0xff, 0xfc, 0xcb, 0x85, 0xff, + 0xfb, 0xc8, 0x7a, 0xff, 0xfb, 0xb4, 0x4b, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xb2, 0x46, 0xff, + 0xfc, 0xca, 0x82, 0xff, 0xe0, 0xa3, 0x5e, 0xfc, + 0xc8, 0x7f, 0x35, 0xf7, 0xd0, 0x83, 0x35, 0xf8, + 0xd5, 0x83, 0x32, 0xfc, 0xdb, 0x86, 0x34, 0xfe, + 0xe3, 0x95, 0x49, 0xff, 0xeb, 0xa5, 0x61, 0xff, + 0xf8, 0xab, 0x60, 0xff, 0xf5, 0x84, 0x16, 0xff, + 0xf2, 0xb0, 0x70, 0xff, 0xb0, 0x5b, 0x0a, 0xec, + 0x58, 0x8d, 0xd1, 0x5f, 0x58, 0x8d, 0xd1, 0x5f, + 0x5a, 0x8b, 0xca, 0x61, 0xb1, 0x5d, 0x0a, 0xf0, + 0xf0, 0xbc, 0x79, 0xff, 0xfc, 0xbe, 0x63, 0xff, + 0xfd, 0xc2, 0x6b, 0xff, 0xfd, 0xc8, 0x7e, 0xff, + 0xfc, 0xd3, 0x96, 0xff, 0xfc, 0xcf, 0x8e, 0xff, + 0xfa, 0xc5, 0x7e, 0xff, 0xfb, 0xc8, 0x7f, 0xff, + 0xfc, 0xcb, 0x82, 0xff, 0xfb, 0xbc, 0x60, 0xff, + 0xfc, 0xae, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfb, 0xae, 0x3d, 0xff, + 0xfa, 0xae, 0x49, 0xff, 0xfa, 0xc0, 0x7a, 0xff, + 0xe8, 0xa6, 0x61, 0xff, 0xee, 0xa8, 0x62, 0xff, + 0xf8, 0xad, 0x64, 0xff, 0xf4, 0x91, 0x32, 0xff, + 0xf0, 0x79, 0x06, 0xff, 0xf2, 0x77, 0x00, 0xff, + 0xf4, 0x78, 0x00, 0xff, 0xf5, 0x85, 0x18, 0xff, + 0xdd, 0x9d, 0x5d, 0xfc, 0x97, 0x65, 0x3d, 0xac, + 0x58, 0x8d, 0xd2, 0x60, 0x58, 0x8d, 0xd2, 0x60, + 0x58, 0x8d, 0xd2, 0x60, 0x92, 0x6b, 0x47, 0xa3, + 0xcb, 0x81, 0x33, 0xf9, 0xfd, 0xcc, 0x85, 0xff, + 0xfc, 0xbb, 0x5c, 0xff, 0xfc, 0xc1, 0x6d, 0xff, + 0xfc, 0xcd, 0x88, 0xff, 0xfc, 0xd2, 0x95, 0xff, + 0xfb, 0xca, 0x85, 0xff, 0xfa, 0xc3, 0x7a, 0xff, + 0xfb, 0xc7, 0x7a, 0xff, 0xfb, 0xc4, 0x73, 0xff, + 0xfc, 0xb2, 0x49, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfa, 0xab, 0x43, 0xff, 0xfb, 0xbf, 0x77, 0xff, + 0xeb, 0xa8, 0x62, 0xff, 0xec, 0xa5, 0x5c, 0xff, + 0xf9, 0xb0, 0x6a, 0xff, 0xf5, 0x94, 0x38, 0xff, + 0xf0, 0x7a, 0x08, 0xff, 0xf2, 0x77, 0x00, 0xff, + 0xf4, 0x84, 0x19, 0xff, 0xe6, 0xa0, 0x5c, 0xff, + 0xa2, 0x63, 0x27, 0xc2, 0x58, 0x8c, 0xd0, 0x61, + 0x58, 0x8c, 0xd0, 0x61, 0x58, 0x8c, 0xd0, 0x61, + 0x58, 0x8c, 0xd0, 0x61, 0x59, 0x8b, 0xd1, 0x62, + 0x59, 0x8b, 0xd1, 0x62, 0x94, 0x68, 0x45, 0xa6, + 0xcc, 0x83, 0x32, 0xfb, 0xfc, 0xc7, 0x7d, 0xff, + 0xfc, 0xba, 0x59, 0xff, 0xfc, 0xc3, 0x6e, 0xff, + 0xfc, 0xc6, 0x77, 0xff, 0xfc, 0xd0, 0x8f, 0xff, + 0xfb, 0xcc, 0x85, 0xff, 0xfa, 0xc1, 0x76, 0xff, + 0xfb, 0xc1, 0x6f, 0xff, 0xfc, 0xc4, 0x74, 0xff, + 0xfc, 0xba, 0x5a, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xbf, 0x66, 0xff, 0xf7, 0xc4, 0x80, 0xff, + 0xce, 0x85, 0x38, 0xfb, 0xe3, 0xa1, 0x58, 0xfe, + 0xf7, 0xbe, 0x7c, 0xff, 0xf7, 0xb3, 0x69, 0xff, + 0xd2, 0x82, 0x34, 0xfb, 0x92, 0x68, 0x46, 0xa7, + 0x56, 0x8c, 0xd1, 0x63, 0x56, 0x8c, 0xd1, 0x63, + 0x56, 0x8c, 0xd1, 0x63, 0x56, 0x8c, 0xd1, 0x63, + 0x56, 0x8c, 0xd1, 0x63, 0x56, 0x8c, 0xd1, 0x63, + 0x5b, 0x91, 0xd0, 0x51, 0x5b, 0x91, 0xd0, 0x51, + 0x71, 0x80, 0x95, 0x64, 0xb2, 0x5a, 0x05, 0xfa, + 0xce, 0x86, 0x39, 0xff, 0xf8, 0xb1, 0x4e, 0xff, + 0xfc, 0xb1, 0x43, 0xff, 0xfc, 0xb5, 0x4a, 0xff, + 0xfc, 0xb9, 0x55, 0xff, 0xf9, 0xb8, 0x5c, 0xff, + 0xec, 0xa9, 0x4f, 0xff, 0xed, 0xa3, 0x40, 0xff, + 0xf9, 0xab, 0x3b, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xf5, 0xa6, 0x38, 0xff, 0xf8, 0xaa, 0x3a, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xb5, 0x4e, 0xff, 0xfa, 0xcb, 0x89, 0xff, + 0xd1, 0x8f, 0x47, 0xfa, 0xae, 0x5f, 0x11, 0xde, + 0xa1, 0x64, 0x2a, 0xb2, 0xb1, 0x59, 0x04, 0xf6, + 0xc4, 0x6e, 0x1b, 0xf7, 0xe9, 0x97, 0x48, 0xff, + 0xf8, 0xbe, 0x85, 0xff, 0xf9, 0xc5, 0x93, 0xff, + 0xf7, 0xae, 0x69, 0xff, 0xf3, 0xb2, 0x73, 0xff, + 0xb5, 0x64, 0x15, 0xf0, 0x5d, 0x90, 0xd1, 0x52, + 0x5d, 0x90, 0xd1, 0x52, 0x5d, 0x90, 0xd1, 0x52, + 0x5d, 0x90, 0xd1, 0x52, 0x97, 0x6a, 0x41, 0x9a, + 0xc1, 0x73, 0x22, 0xfb, 0xe2, 0xa4, 0x58, 0xff, + 0xfc, 0xb1, 0x43, 0xff, 0xfc, 0xae, 0x3e, 0xff, + 0xfc, 0xb1, 0x45, 0xff, 0xfb, 0xb7, 0x53, 0xff, + 0xfc, 0xb9, 0x5a, 0xff, 0xf9, 0xb3, 0x4f, 0xff, + 0xf1, 0xa4, 0x3b, 0xff, 0xf8, 0xaa, 0x3a, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xf5, 0xa6, 0x38, 0xff, + 0xf8, 0xaa, 0x3a, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfb, 0xb0, 0x43, 0xff, 0xfa, 0xc3, 0x74, 0xff, + 0xf3, 0xbf, 0x7e, 0xff, 0xc5, 0x7a, 0x2d, 0xf9, + 0xaf, 0x5c, 0x0d, 0xe3, 0xb0, 0x5a, 0x08, 0xeb, + 0xc0, 0x70, 0x23, 0xf8, 0xe7, 0xa5, 0x64, 0xfe, + 0xf8, 0xc6, 0x96, 0xff, 0xf4, 0xb4, 0x75, 0xff, + 0xf5, 0xa0, 0x4e, 0xff, 0xf6, 0x97, 0x3b, 0xff, + 0xe0, 0x9a, 0x58, 0xfe, 0x9e, 0x64, 0x2f, 0xad, + 0x5b, 0x8f, 0xcf, 0x53, 0x5b, 0x8f, 0xcf, 0x53, + 0x5b, 0x8f, 0xcf, 0x53, 0x6d, 0x83, 0xa0, 0x62, + 0xb2, 0x59, 0x05, 0xfb, 0xcc, 0x85, 0x37, 0xff, + 0xf6, 0xb1, 0x4d, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xb0, 0x3f, 0xff, 0xfc, 0xb4, 0x4a, 0xff, + 0xfc, 0xb7, 0x54, 0xff, 0xf8, 0xb4, 0x53, 0xff, + 0xee, 0xa3, 0x3f, 0xff, 0xf6, 0xa8, 0x39, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xf5, 0xa6, 0x38, 0xff, + 0xf8, 0xaa, 0x3a, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfb, 0xae, 0x3f, 0xff, 0xf9, 0xbe, 0x6a, 0xff, + 0xf6, 0xc3, 0x82, 0xff, 0xca, 0x7e, 0x2d, 0xf9, + 0xb0, 0x5c, 0x0c, 0xe5, 0xb0, 0x5b, 0x07, 0xed, + 0xc3, 0x73, 0x27, 0xf8, 0xeb, 0xab, 0x6d, 0xff, + 0xf8, 0xc9, 0x9a, 0xff, 0xf4, 0xaf, 0x6c, 0xff, + 0xf5, 0xa2, 0x51, 0xff, 0xde, 0x9b, 0x5b, 0xfd, + 0x98, 0x66, 0x3c, 0xa0, 0x5a, 0x8e, 0xd0, 0x54, + 0x5a, 0x8e, 0xd0, 0x54, 0x5a, 0x8e, 0xd0, 0x54, + 0x5a, 0x8e, 0xd0, 0x54, 0x5c, 0x8f, 0xd0, 0x54, + 0x5c, 0x8f, 0xd0, 0x54, 0x6e, 0x83, 0xa3, 0x62, + 0xb2, 0x5b, 0x07, 0xfa, 0xc4, 0x7a, 0x2c, 0xff, + 0xf3, 0xa8, 0x41, 0xff, 0xfc, 0xaf, 0x3d, 0xff, + 0xfc, 0xb0, 0x43, 0xff, 0xfb, 0xb4, 0x4c, 0xff, + 0xfc, 0xb8, 0x54, 0xff, 0xf6, 0xb3, 0x53, 0xff, + 0xec, 0xa2, 0x40, 0xff, 0xf6, 0xa7, 0x39, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xf2, 0xa3, 0x35, 0xff, 0xed, 0x9e, 0x32, 0xff, + 0xf9, 0xac, 0x3d, 0xff, 0xf8, 0xac, 0x3d, 0xff, + 0xf7, 0xab, 0x3c, 0xff, 0xf6, 0xbd, 0x69, 0xff, + 0xec, 0xba, 0x75, 0xff, 0xb7, 0x64, 0x11, 0xf9, + 0xa7, 0x5d, 0x18, 0xcf, 0xd4, 0x8c, 0x39, 0xfc, + 0xfc, 0xc5, 0x73, 0xff, 0xea, 0xa9, 0x55, 0xff, + 0xaf, 0x60, 0x13, 0xdd, 0x5b, 0x8e, 0xd0, 0x55, + 0x5b, 0x8e, 0xd0, 0x55, 0x5b, 0x8e, 0xd0, 0x55, + 0x5b, 0x8e, 0xd0, 0x55, 0x5b, 0x8e, 0xd0, 0x55, + 0x5b, 0x8e, 0xd0, 0x55, 0x5b, 0x8e, 0xd0, 0x55, + 0x5b, 0x8e, 0xd0, 0x55, 0x5b, 0x8e, 0xd0, 0x55, + 0x71, 0x80, 0x97, 0x68, 0xb6, 0x63, 0x12, 0xfa, + 0xce, 0x86, 0x3a, 0xff, 0xf8, 0xac, 0x40, 0xff, + 0xfc, 0xb1, 0x43, 0xff, 0xfc, 0xb5, 0x4a, 0xff, + 0xfc, 0xb9, 0x55, 0xff, 0xf9, 0xb8, 0x5c, 0xff, + 0xec, 0xa9, 0x4f, 0xff, 0xed, 0xa3, 0x40, 0xff, + 0xf9, 0xab, 0x3b, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xf5, 0xa6, 0x38, 0xff, 0xf8, 0xaa, 0x3a, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xb5, 0x4e, 0xff, 0xfa, 0xcb, 0x89, 0xff, + 0xd0, 0x8c, 0x43, 0xf9, 0xad, 0x5f, 0x12, 0xdd, + 0x89, 0x70, 0x5f, 0x86, 0x8f, 0x6c, 0x4f, 0x92, + 0x96, 0x68, 0x3f, 0xa0, 0x9d, 0x63, 0x31, 0xae, + 0xa6, 0x62, 0x22, 0xc0, 0xb0, 0x5b, 0x09, 0xea, + 0xd5, 0x85, 0x36, 0xfb, 0xf8, 0xac, 0x62, 0xff, + 0xf0, 0xae, 0x6d, 0xff, 0xb1, 0x5b, 0x0b, 0xe7, + 0x5c, 0x8e, 0xcf, 0x57, 0x5c, 0x8e, 0xcf, 0x57, + 0x5c, 0x8e, 0xcf, 0x57, 0x96, 0x6a, 0x43, 0x9d, + 0xc1, 0x73, 0x22, 0xfb, 0xe2, 0xa4, 0x58, 0xff, + 0xfc, 0xb1, 0x43, 0xff, 0xfc, 0xae, 0x3e, 0xff, + 0xfc, 0xb1, 0x45, 0xff, 0xfb, 0xb7, 0x53, 0xff, + 0xfc, 0xb9, 0x5a, 0xff, 0xf9, 0xb3, 0x4f, 0xff, + 0xf1, 0xa4, 0x3b, 0xff, 0xf8, 0xaa, 0x3a, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xf5, 0xa6, 0x38, 0xff, + 0xf8, 0xaa, 0x3a, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfb, 0xb0, 0x43, 0xff, 0xfa, 0xc3, 0x74, 0xff, + 0xf3, 0xbf, 0x7e, 0xff, 0xc5, 0x7a, 0x2d, 0xf9, + 0xaf, 0x5c, 0x0d, 0xe4, 0xb0, 0x5a, 0x09, 0xeb, + 0xbf, 0x6d, 0x1e, 0xf8, 0xe4, 0x98, 0x4d, 0xfe, + 0xf6, 0xb0, 0x6c, 0xff, 0xf3, 0x9d, 0x4c, 0xff, + 0xf4, 0x8f, 0x2d, 0xff, 0xf6, 0x8f, 0x2b, 0xff, + 0xe0, 0x9a, 0x58, 0xfe, 0x9e, 0x64, 0x30, 0xaf, + 0x5b, 0x8f, 0xcf, 0x57, 0x5b, 0x8f, 0xcf, 0x57, + 0x5b, 0x8f, 0xcf, 0x57, 0x66, 0x86, 0xb2, 0x60, + 0xb1, 0x5a, 0x04, 0xfa, 0xcb, 0x80, 0x32, 0xff, + 0xf5, 0xb1, 0x51, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3f, 0xff, 0xfc, 0xb3, 0x49, 0xff, + 0xfc, 0xb7, 0x52, 0xff, 0xf8, 0xb4, 0x54, 0xff, + 0xee, 0xa4, 0x40, 0xff, 0xf5, 0xa7, 0x39, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xf6, 0xa7, 0x38, 0xff, + 0xf7, 0xa9, 0x39, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xfb, 0xae, 0x3d, 0xff, 0xf9, 0xbe, 0x67, 0xff, + 0xf7, 0xc5, 0x83, 0xff, 0xcf, 0x82, 0x33, 0xf9, + 0xb1, 0x5d, 0x0b, 0xe9, 0xb1, 0x5c, 0x0a, 0xe9, + 0xbe, 0x6b, 0x1a, 0xf8, 0xe4, 0x97, 0x4b, 0xff, + 0xf7, 0xb1, 0x6e, 0xff, 0xf2, 0x99, 0x43, 0xff, + 0xf4, 0x8e, 0x2c, 0xff, 0xe2, 0x9d, 0x59, 0xfe, + 0x9d, 0x65, 0x33, 0xaf, 0x59, 0x8e, 0xd0, 0x59, + 0x59, 0x8e, 0xd0, 0x59, 0x59, 0x8e, 0xd0, 0x59, + 0x59, 0x8e, 0xd0, 0x59, 0x59, 0x8e, 0xd0, 0x59, + 0x59, 0x8e, 0xd0, 0x59, 0x6b, 0x82, 0xa5, 0x67, + 0xb1, 0x5b, 0x06, 0xfb, 0xc5, 0x7b, 0x2d, 0xff, + 0xf4, 0xac, 0x45, 0xff, 0xfc, 0xaf, 0x3d, 0xff, + 0xfc, 0xb0, 0x43, 0xff, 0xfb, 0xb2, 0x48, 0xff, + 0xfb, 0xb5, 0x4e, 0xff, 0xf2, 0xad, 0x4f, 0xff, + 0xef, 0xa9, 0x48, 0xff, 0xfa, 0xaf, 0x42, 0xff, + 0xfc, 0xaf, 0x3e, 0xff, 0xfc, 0xaf, 0x3e, 0xff, + 0xf2, 0xa3, 0x35, 0xff, 0xed, 0x9e, 0x32, 0xff, + 0xf9, 0xac, 0x3d, 0xff, 0xf8, 0xac, 0x3d, 0xff, + 0xf7, 0xab, 0x3d, 0xff, 0xf6, 0xc0, 0x70, 0xff, + 0xed, 0xba, 0x76, 0xff, 0xb6, 0x62, 0x0e, 0xf9, + 0x9d, 0x65, 0x31, 0xb2, 0xac, 0x5e, 0x13, 0xdc, + 0xdc, 0x95, 0x49, 0xfd, 0xf9, 0xbf, 0x7f, 0xff, + 0xbb, 0x67, 0x16, 0xf8, 0x7e, 0x76, 0x7b, 0x7a, + 0x5b, 0x8d, 0xd1, 0x5a, 0x5b, 0x8d, 0xd1, 0x5a, + 0x5b, 0x8d, 0xd1, 0x5a, 0x5b, 0x8d, 0xd1, 0x5a, + 0x5b, 0x8d, 0xd1, 0x5a, 0x5b, 0x8d, 0xd1, 0x5a, + 0x5f, 0x91, 0xd0, 0x48, 0x5f, 0x91, 0xd0, 0x48, + 0x5f, 0x91, 0xd0, 0x48, 0xaa, 0x63, 0x1c, 0xc2, + 0xcd, 0x8c, 0x48, 0xfd, 0xb9, 0x6f, 0x22, 0xff, + 0xbd, 0x6a, 0x12, 0xff, 0xbf, 0x6c, 0x11, 0xff, + 0xc1, 0x74, 0x20, 0xff, 0xd2, 0x90, 0x40, 0xff, + 0xe4, 0x9a, 0x34, 0xff, 0xf0, 0xa6, 0x3b, 0xff, + 0xef, 0xa6, 0x3a, 0xff, 0xee, 0xa5, 0x3a, 0xff, + 0xed, 0xa4, 0x3a, 0xff, 0xd4, 0x84, 0x22, 0xff, + 0xc3, 0x6f, 0x12, 0xff, 0xe3, 0x99, 0x32, 0xff, + 0xe9, 0xa1, 0x39, 0xff, 0xe9, 0xac, 0x53, 0xff, + 0xe3, 0xba, 0x7f, 0xff, 0xbf, 0x77, 0x2d, 0xf8, + 0xa9, 0x62, 0x1d, 0xc1, 0x63, 0x8d, 0xbf, 0x4d, + 0x5e, 0x92, 0xd0, 0x49, 0x65, 0x8b, 0xbd, 0x4e, + 0x96, 0x6b, 0x45, 0x8b, 0xb1, 0x5b, 0x0c, 0xdf, + 0xb3, 0x5b, 0x06, 0xfa, 0xca, 0x7a, 0x2e, 0xf7, + 0xdf, 0x90, 0x44, 0xfe, 0xe7, 0x99, 0x4d, 0xff, + 0xb7, 0x62, 0x11, 0xfc, 0x7d, 0x7b, 0x83, 0x63, + 0x5d, 0x90, 0xd1, 0x49, 0x5d, 0x90, 0xd1, 0x49, + 0x5d, 0x90, 0xd1, 0x49, 0x66, 0x8b, 0xbb, 0x4f, + 0xaf, 0x5d, 0x0e, 0xe2, 0xc5, 0x82, 0x3e, 0xfe, + 0xbe, 0x70, 0x20, 0xff, 0xc7, 0x76, 0x19, 0xff, + 0xc8, 0x77, 0x19, 0xff, 0xc6, 0x76, 0x1e, 0xff, + 0xd9, 0x99, 0x4d, 0xff, 0xe1, 0x9b, 0x3d, 0xff, + 0xef, 0xa4, 0x3a, 0xff, 0xef, 0xa6, 0x3a, 0xff, + 0xee, 0xa5, 0x3a, 0xff, 0xed, 0xa4, 0x3a, 0xff, + 0xd4, 0x84, 0x22, 0xff, 0xbf, 0x6b, 0x0f, 0xff, + 0xd2, 0x83, 0x21, 0xff, 0xd9, 0x8b, 0x28, 0xff, + 0xdc, 0x91, 0x2c, 0xff, 0xe0, 0xa0, 0x49, 0xff, + 0xe5, 0xb7, 0x79, 0xff, 0xd7, 0x9c, 0x55, 0xfc, + 0xb4, 0x5d, 0x0a, 0xf8, 0x9b, 0x67, 0x3a, 0x99, + 0x5e, 0x90, 0xcb, 0x4b, 0x5e, 0x91, 0xd1, 0x4a, + 0x8c, 0x71, 0x5d, 0x7a, 0xac, 0x5e, 0x13, 0xd0, + 0xb5, 0x60, 0x0e, 0xf9, 0xcf, 0x82, 0x39, 0xf8, + 0xe1, 0x99, 0x53, 0xff, 0xef, 0xab, 0x6a, 0xff, + 0xe4, 0x99, 0x50, 0xff, 0xac, 0x5f, 0x14, 0xcd, + 0x5e, 0x91, 0xd1, 0x4a, 0x5e, 0x91, 0xd1, 0x4a, + 0x5e, 0x91, 0xd1, 0x4a, 0x5e, 0x91, 0xd1, 0x4a, + 0xa4, 0x64, 0x28, 0xb2, 0xc9, 0x89, 0x49, 0xfc, + 0xbc, 0x74, 0x29, 0xff, 0xbd, 0x6b, 0x12, 0xff, + 0xc0, 0x6d, 0x12, 0xff, 0xc5, 0x78, 0x22, 0xff, + 0xd5, 0x98, 0x4e, 0xff, 0xdc, 0x95, 0x39, 0xff, + 0xed, 0xa2, 0x38, 0xff, 0xef, 0xa6, 0x3a, 0xff, + 0xee, 0xa5, 0x3a, 0xff, 0xed, 0xa4, 0x3a, 0xff, + 0xd4, 0x84, 0x22, 0xff, 0xc0, 0x6c, 0x10, 0xff, + 0xda, 0x8c, 0x29, 0xff, 0xe6, 0x9d, 0x35, 0xff, + 0xe9, 0xa1, 0x39, 0xff, 0xe8, 0xa6, 0x46, 0xff, + 0xe9, 0xbc, 0x7b, 0xff, 0xe4, 0xae, 0x68, 0xff, + 0xb7, 0x61, 0x0f, 0xf8, 0xa1, 0x65, 0x2e, 0xa7, + 0x60, 0x8d, 0xc6, 0x4d, 0x5f, 0x8e, 0xcc, 0x4c, + 0x8f, 0x6e, 0x54, 0x81, 0xae, 0x5c, 0x0e, 0xda, + 0xbc, 0x6d, 0x22, 0xf9, 0xe2, 0x9d, 0x5a, 0xfd, + 0xf3, 0xb6, 0x7b, 0xff, 0xe5, 0x9a, 0x52, 0xff, + 0xab, 0x60, 0x16, 0xca, 0x5d, 0x91, 0xd0, 0x4c, + 0x5d, 0x91, 0xd0, 0x4c, 0x5d, 0x91, 0xd0, 0x4c, + 0x5d, 0x91, 0xd0, 0x4c, 0x5d, 0x91, 0xd0, 0x4c, + 0x5d, 0x91, 0xd0, 0x4c, 0x5d, 0x91, 0xd0, 0x4c, + 0xa9, 0x63, 0x1f, 0xc1, 0xd3, 0x9e, 0x66, 0xfd, + 0xb9, 0x71, 0x28, 0xff, 0xb4, 0x60, 0x09, 0xff, + 0xba, 0x67, 0x0f, 0xff, 0xbc, 0x6d, 0x16, 0xff, + 0xd1, 0x92, 0x4a, 0xff, 0xdc, 0x9a, 0x48, 0xff, + 0xea, 0xa1, 0x3a, 0xff, 0xec, 0xa4, 0x3a, 0xff, + 0xeb, 0xa3, 0x39, 0xff, 0xda, 0x8d, 0x29, 0xff, + 0xbd, 0x68, 0x0d, 0xff, 0xe4, 0x9c, 0x35, 0xff, + 0xe7, 0xa0, 0x38, 0xff, 0xe6, 0xa0, 0x3b, 0xff, + 0xe5, 0xb3, 0x69, 0xff, 0xd9, 0xa2, 0x5f, 0xfe, + 0xb1, 0x5d, 0x0a, 0xf7, 0x8f, 0x6e, 0x53, 0x83, + 0xa8, 0x62, 0x1f, 0xc0, 0xe4, 0xa4, 0x53, 0xff, + 0xfc, 0xc6, 0x77, 0xff, 0xcb, 0x7f, 0x2b, 0xf8, + 0x97, 0x69, 0x41, 0x93, 0x5e, 0x90, 0xd0, 0x4c, + 0x5e, 0x90, 0xd0, 0x4c, 0x5e, 0x90, 0xd0, 0x4c, + 0x5e, 0x90, 0xd0, 0x4c, 0x5e, 0x90, 0xd0, 0x4c, + 0x5e, 0x90, 0xd0, 0x4c, 0x5e, 0x90, 0xd0, 0x4c, + 0x5e, 0x90, 0xd0, 0x4c, 0x5e, 0x90, 0xd0, 0x4c, + 0x5d, 0x91, 0xd0, 0x4d, 0xa9, 0x63, 0x1d, 0xc4, + 0xd0, 0x94, 0x56, 0xfd, 0xb9, 0x6e, 0x21, 0xff, + 0xbd, 0x69, 0x0f, 0xff, 0xbf, 0x6c, 0x11, 0xff, + 0xc1, 0x74, 0x20, 0xff, 0xd2, 0x90, 0x40, 0xff, + 0xe4, 0x9a, 0x34, 0xff, 0xf0, 0xa6, 0x3b, 0xff, + 0xef, 0xa6, 0x3a, 0xff, 0xee, 0xa5, 0x3a, 0xff, + 0xed, 0xa4, 0x3a, 0xff, 0xd4, 0x84, 0x22, 0xff, + 0xc3, 0x6f, 0x12, 0xff, 0xe3, 0x99, 0x32, 0xff, + 0xe9, 0xa1, 0x39, 0xff, 0xe9, 0xac, 0x53, 0xff, + 0xe3, 0xba, 0x7f, 0xff, 0xbe, 0x75, 0x2b, 0xf8, + 0xa8, 0x62, 0x20, 0xc0, 0x60, 0x8e, 0xc3, 0x50, + 0x5d, 0x91, 0xd0, 0x4d, 0x5c, 0x8f, 0xd1, 0x4e, + 0x5c, 0x8f, 0xd1, 0x4e, 0x5c, 0x8f, 0xd1, 0x4e, + 0x5c, 0x8f, 0xd1, 0x4e, 0x6a, 0x86, 0xaf, 0x58, + 0xb1, 0x59, 0x02, 0xf7, 0xf4, 0xaf, 0x6e, 0xff, + 0xce, 0x7e, 0x30, 0xf8, 0xa1, 0x62, 0x28, 0xb1, + 0x5c, 0x8f, 0xd1, 0x4e, 0x5c, 0x8f, 0xd1, 0x4e, + 0x5c, 0x8f, 0xd1, 0x4e, 0x65, 0x8a, 0xbc, 0x54, + 0xae, 0x5e, 0x0f, 0xe3, 0xc5, 0x82, 0x3e, 0xfe, + 0xbe, 0x70, 0x20, 0xff, 0xc7, 0x76, 0x19, 0xff, + 0xc8, 0x77, 0x19, 0xff, 0xc6, 0x76, 0x1e, 0xff, + 0xd9, 0x99, 0x4d, 0xff, 0xe1, 0x9b, 0x3d, 0xff, + 0xef, 0xa4, 0x3a, 0xff, 0xef, 0xa6, 0x3a, 0xff, + 0xee, 0xa5, 0x3a, 0xff, 0xed, 0xa4, 0x3a, 0xff, + 0xd3, 0x84, 0x22, 0xff, 0xc0, 0x6b, 0x0f, 0xff, + 0xd3, 0x83, 0x21, 0xff, 0xd9, 0x8b, 0x28, 0xff, + 0xdc, 0x91, 0x2c, 0xff, 0xe0, 0xa0, 0x49, 0xff, + 0xe5, 0xb7, 0x79, 0xff, 0xd7, 0x9b, 0x54, 0xfd, + 0xb3, 0x5d, 0x0a, 0xf8, 0x9a, 0x67, 0x3c, 0x9c, + 0x5e, 0x8f, 0xc9, 0x50, 0x5e, 0x90, 0xcf, 0x4f, + 0x8b, 0x71, 0x60, 0x7d, 0xac, 0x5e, 0x14, 0xd1, + 0xb5, 0x5f, 0x0d, 0xf9, 0xcd, 0x7d, 0x2f, 0xf8, + 0xe0, 0x92, 0x48, 0xff, 0xef, 0xa7, 0x64, 0xff, + 0xe4, 0x99, 0x50, 0xff, 0xab, 0x5f, 0x15, 0xcf, + 0x5d, 0x8f, 0xcf, 0x4f, 0x5d, 0x8f, 0xcf, 0x4f, + 0x5d, 0x8f, 0xcf, 0x4f, 0x5d, 0x8f, 0xcf, 0x4f, + 0x9f, 0x67, 0x32, 0xa7, 0xc6, 0x85, 0x41, 0xfb, + 0xbd, 0x76, 0x2f, 0xff, 0xbd, 0x6a, 0x13, 0xff, + 0xc0, 0x6d, 0x11, 0xff, 0xc4, 0x76, 0x1f, 0xff, + 0xd4, 0x97, 0x4d, 0xff, 0xdb, 0x94, 0x3a, 0xff, + 0xec, 0xa2, 0x38, 0xff, 0xef, 0xa6, 0x3a, 0xff, + 0xee, 0xa5, 0x3a, 0xff, 0xed, 0xa4, 0x3a, 0xff, + 0xd7, 0x88, 0x25, 0xff, 0xbf, 0x6b, 0x0f, 0xff, + 0xd8, 0x8a, 0x27, 0xff, 0xe6, 0x9d, 0x35, 0xff, + 0xe9, 0xa1, 0x39, 0xff, 0xe8, 0xa5, 0x44, 0xff, + 0xe9, 0xbb, 0x78, 0xff, 0xe6, 0xb2, 0x6d, 0xff, + 0xb8, 0x64, 0x11, 0xf7, 0xa2, 0x63, 0x2a, 0xb2, + 0x61, 0x8b, 0xc1, 0x54, 0x5c, 0x90, 0xd0, 0x50, + 0x8a, 0x72, 0x5f, 0x7f, 0xad, 0x5e, 0x12, 0xd5, + 0xb5, 0x60, 0x0e, 0xfa, 0xda, 0x8a, 0x3c, 0xfd, + 0xf1, 0xa9, 0x64, 0xff, 0xe8, 0x9b, 0x51, 0xff, + 0xae, 0x5d, 0x11, 0xd8, 0x5c, 0x90, 0xd0, 0x50, + 0x5c, 0x90, 0xd0, 0x50, 0x5c, 0x90, 0xd0, 0x50, + 0x5c, 0x90, 0xd0, 0x50, 0x5c, 0x90, 0xd0, 0x50, + 0x5c, 0x90, 0xd0, 0x50, 0x5c, 0x90, 0xd0, 0x50, + 0xa8, 0x63, 0x20, 0xc3, 0xd3, 0x9b, 0x62, 0xfd, + 0xb7, 0x6e, 0x23, 0xff, 0xb5, 0x61, 0x0b, 0xff, + 0xbb, 0x69, 0x10, 0xff, 0xc1, 0x75, 0x23, 0xff, + 0xd5, 0x99, 0x50, 0xff, 0xe1, 0x9c, 0x40, 0xff, + 0xed, 0xa4, 0x3a, 0xff, 0xec, 0xa4, 0x3a, 0xff, + 0xeb, 0xa3, 0x39, 0xff, 0xda, 0x8d, 0x29, 0xff, + 0xbd, 0x68, 0x0d, 0xff, 0xe4, 0x9c, 0x35, 0xff, + 0xe7, 0xa0, 0x38, 0xff, 0xe6, 0xa0, 0x3c, 0xff, + 0xe5, 0xb5, 0x70, 0xff, 0xd9, 0xa3, 0x5f, 0xfe, + 0xb1, 0x5c, 0x08, 0xf8, 0x8c, 0x6e, 0x57, 0x86, + 0x5b, 0x8f, 0xd0, 0x51, 0x88, 0x71, 0x62, 0x7f, + 0xc1, 0x6f, 0x1e, 0xf6, 0xf6, 0xb6, 0x6f, 0xff, + 0xb1, 0x58, 0x02, 0xfa, 0x60, 0x8d, 0xc9, 0x54, + 0x5d, 0x90, 0xd1, 0x52, 0x5d, 0x90, 0xd1, 0x52, + 0x5d, 0x90, 0xd1, 0x52, 0x5d, 0x90, 0xd1, 0x52, + 0x5d, 0x90, 0xd1, 0x52, 0x5d, 0x90, 0xd1, 0x52, + 0x62, 0x94, 0xd0, 0x40, 0x62, 0x94, 0xd0, 0x40, + 0x62, 0x94, 0xd0, 0x40, 0x6b, 0x8b, 0xb5, 0x47, + 0xae, 0x5e, 0x10, 0xda, 0xd9, 0xad, 0x7d, 0xfc, + 0xe5, 0xcb, 0xab, 0xff, 0xe8, 0xc7, 0x9b, 0xff, + 0xe6, 0xb5, 0x6e, 0xff, 0xde, 0x9a, 0x36, 0xff, + 0xdd, 0x99, 0x36, 0xff, 0xdc, 0x99, 0x36, 0xff, + 0xdb, 0x98, 0x35, 0xff, 0xda, 0x97, 0x35, 0xff, + 0xc7, 0x7b, 0x1e, 0xff, 0xb3, 0x58, 0x00, 0xff, + 0xc3, 0x62, 0x01, 0xff, 0xb4, 0x5a, 0x01, 0xff, + 0xbc, 0x68, 0x12, 0xff, 0xc1, 0x82, 0x3d, 0xff, + 0xb0, 0x62, 0x16, 0xfa, 0xa1, 0x66, 0x2e, 0x9b, + 0x61, 0x93, 0xd0, 0x40, 0x61, 0x93, 0xd0, 0x40, + 0x61, 0x93, 0xd0, 0x40, 0x61, 0x93, 0xd0, 0x40, + 0x61, 0x93, 0xd0, 0x40, 0x61, 0x93, 0xd0, 0x40, + 0x73, 0x86, 0xa1, 0x4d, 0x95, 0x6b, 0x48, 0x7d, + 0xa8, 0x5f, 0x1e, 0xb2, 0xb0, 0x5e, 0x0f, 0xd0, + 0xb2, 0x5b, 0x08, 0xe3, 0xa3, 0x60, 0x23, 0xaa, + 0x61, 0x93, 0xd0, 0x40, 0x61, 0x93, 0xd0, 0x40, + 0x61, 0x93, 0xd0, 0x40, 0x61, 0x93, 0xd0, 0x40, + 0x6f, 0x86, 0xa6, 0x4b, 0xb6, 0x69, 0x1d, 0xe2, + 0xda, 0xaf, 0x80, 0xfd, 0xd9, 0xb6, 0x8e, 0xff, + 0xe2, 0xbe, 0x8f, 0xff, 0xe8, 0xbd, 0x80, 0xff, + 0xdf, 0x9d, 0x3d, 0xff, 0xdd, 0x99, 0x36, 0xff, + 0xdc, 0x99, 0x36, 0xff, 0xdb, 0x98, 0x35, 0xff, + 0xda, 0x97, 0x35, 0xff, 0xc7, 0x7b, 0x1e, 0xff, + 0xb4, 0x58, 0x00, 0xff, 0xce, 0x66, 0x00, 0xff, + 0xca, 0x67, 0x02, 0xff, 0xc6, 0x64, 0x04, 0xff, + 0xc0, 0x64, 0x08, 0xff, 0xbd, 0x68, 0x10, 0xff, + 0xb7, 0x5f, 0x0a, 0xff, 0xb2, 0x5d, 0x07, 0xef, + 0x7a, 0x7d, 0x8e, 0x55, 0x60, 0x91, 0xd1, 0x41, + 0x60, 0x91, 0xd1, 0x41, 0x60, 0x91, 0xd1, 0x41, + 0x60, 0x91, 0xd1, 0x41, 0x60, 0x91, 0xd1, 0x41, + 0x76, 0x81, 0x9a, 0x51, 0x97, 0x69, 0x41, 0x85, + 0xac, 0x5f, 0x16, 0xc2, 0xb3, 0x5b, 0x07, 0xe8, + 0xb2, 0x59, 0x02, 0xf7, 0xaf, 0x5b, 0x09, 0xe2, + 0x61, 0x92, 0xd1, 0x42, 0x61, 0x92, 0xd1, 0x42, + 0x61, 0x92, 0xd1, 0x42, 0x61, 0x92, 0xd1, 0x42, + 0x61, 0x91, 0xca, 0x43, 0xac, 0x60, 0x17, 0xc9, + 0xd8, 0xad, 0x7e, 0xfc, 0xe7, 0xcf, 0xb1, 0xff, + 0xea, 0xcb, 0xa2, 0xff, 0xe9, 0xbc, 0x7c, 0xff, + 0xde, 0x9b, 0x39, 0xff, 0xdd, 0x99, 0x36, 0xff, + 0xdc, 0x99, 0x36, 0xff, 0xdb, 0x98, 0x35, 0xff, + 0xda, 0x97, 0x35, 0xff, 0xc7, 0x7b, 0x1e, 0xff, + 0xb3, 0x58, 0x00, 0xff, 0xc9, 0x65, 0x01, 0xff, + 0xbf, 0x61, 0x03, 0xff, 0xb4, 0x5b, 0x01, 0xff, + 0xb7, 0x5e, 0x06, 0xff, 0xbd, 0x6d, 0x1b, 0xff, + 0xbe, 0x6d, 0x1a, 0xfc, 0xb2, 0x5d, 0x0a, 0xe9, + 0x87, 0x75, 0x6b, 0x68, 0x60, 0x93, 0xcf, 0x43, + 0x60, 0x93, 0xcf, 0x43, 0x60, 0x93, 0xcf, 0x43, + 0x60, 0x93, 0xcf, 0x43, 0x60, 0x93, 0xcf, 0x43, + 0x86, 0x77, 0x6f, 0x66, 0xaa, 0x5e, 0x17, 0xc1, + 0xb4, 0x5c, 0x09, 0xfa, 0xc8, 0x71, 0x1d, 0xfb, + 0xb2, 0x5a, 0x04, 0xf0, 0x60, 0x93, 0xcf, 0x43, + 0x60, 0x93, 0xcf, 0x43, 0x60, 0x93, 0xcf, 0x43, + 0x60, 0x93, 0xcf, 0x43, 0x60, 0x93, 0xcf, 0x43, + 0x60, 0x93, 0xcf, 0x43, 0x60, 0x93, 0xcf, 0x43, + 0x6a, 0x8a, 0xb3, 0x4a, 0xb3, 0x62, 0x13, 0xe6, + 0xe3, 0xc2, 0x9c, 0xfe, 0xe9, 0xd2, 0xb4, 0xff, + 0xea, 0xcc, 0xa3, 0xff, 0xea, 0xc5, 0x8f, 0xff, + 0xdf, 0xa2, 0x48, 0xff, 0xdb, 0x98, 0x35, 0xff, + 0xda, 0x97, 0x35, 0xff, 0xd9, 0x96, 0x35, 0xff, + 0xd1, 0x8b, 0x2c, 0xff, 0xb3, 0x5a, 0x01, 0xff, + 0xb3, 0x59, 0x00, 0xff, 0xce, 0x8a, 0x2b, 0xff, + 0xd4, 0x96, 0x3a, 0xff, 0xd4, 0xa7, 0x66, 0xff, + 0xc1, 0x8b, 0x47, 0xfc, 0xaf, 0x59, 0x06, 0xf1, + 0x85, 0x75, 0x6c, 0x67, 0x61, 0x90, 0xc8, 0x44, + 0xb2, 0x5b, 0x06, 0xf3, 0xf4, 0xbb, 0x6c, 0xff, + 0xf2, 0xb5, 0x63, 0xff, 0xb2, 0x5a, 0x05, 0xf7, + 0x6b, 0x88, 0xae, 0x4c, 0x5f, 0x92, 0xcf, 0x43, + 0x5e, 0x93, 0xd0, 0x44, 0x5e, 0x93, 0xd0, 0x44, + 0x5e, 0x93, 0xd0, 0x44, 0x5e, 0x93, 0xd0, 0x44, + 0x5e, 0x93, 0xd0, 0x44, 0x5e, 0x93, 0xd0, 0x44, + 0x5e, 0x93, 0xd0, 0x44, 0x5e, 0x93, 0xd0, 0x44, + 0x5e, 0x93, 0xd0, 0x44, 0x67, 0x8b, 0xb6, 0x4b, + 0xae, 0x5e, 0x10, 0xdb, 0xdd, 0xb6, 0x8e, 0xfc, + 0xe5, 0xca, 0xa7, 0xff, 0xe8, 0xc6, 0x97, 0xff, + 0xe6, 0xb5, 0x6e, 0xff, 0xde, 0x9a, 0x36, 0xff, + 0xdd, 0x99, 0x36, 0xff, 0xdc, 0x99, 0x36, 0xff, + 0xdb, 0x98, 0x35, 0xff, 0xda, 0x97, 0x35, 0xff, + 0xc7, 0x7b, 0x1e, 0xff, 0xb3, 0x58, 0x00, 0xff, + 0xc3, 0x62, 0x01, 0xff, 0xb4, 0x5a, 0x01, 0xff, + 0xbc, 0x68, 0x11, 0xff, 0xc1, 0x82, 0x3c, 0xff, + 0xaf, 0x62, 0x14, 0xfa, 0xa0, 0x66, 0x32, 0x9c, + 0x60, 0x91, 0xd0, 0x45, 0x60, 0x91, 0xd0, 0x45, + 0x60, 0x91, 0xd0, 0x45, 0x60, 0x91, 0xd0, 0x45, + 0x60, 0x91, 0xd0, 0x45, 0x60, 0x91, 0xd0, 0x45, + 0x60, 0x91, 0xd0, 0x45, 0x60, 0x91, 0xd0, 0x45, + 0xb1, 0x59, 0x04, 0xf1, 0xcf, 0x88, 0x42, 0xfb, + 0xaf, 0x5c, 0x0b, 0xdd, 0x68, 0x8a, 0xbc, 0x4a, + 0x60, 0x91, 0xd0, 0x45, 0x60, 0x91, 0xd0, 0x45, + 0x60, 0x91, 0xd0, 0x45, 0x60, 0x91, 0xd0, 0x45, + 0x6d, 0x85, 0xa8, 0x50, 0xb5, 0x69, 0x1e, 0xe3, + 0xda, 0xaf, 0x80, 0xfd, 0xd9, 0xb6, 0x8e, 0xff, + 0xe2, 0xbe, 0x8f, 0xff, 0xe8, 0xbd, 0x80, 0xff, + 0xdf, 0x9d, 0x3d, 0xff, 0xdd, 0x99, 0x36, 0xff, + 0xdc, 0x99, 0x36, 0xff, 0xdb, 0x98, 0x35, 0xff, + 0xda, 0x97, 0x35, 0xff, 0xc7, 0x7b, 0x1d, 0xff, + 0xb6, 0x5a, 0x01, 0xff, 0xcf, 0x67, 0x01, 0xff, + 0xca, 0x67, 0x02, 0xff, 0xc6, 0x64, 0x04, 0xff, + 0xc0, 0x64, 0x08, 0xff, 0xbd, 0x68, 0x10, 0xff, + 0xb6, 0x5f, 0x0a, 0xff, 0xb2, 0x5d, 0x07, 0xef, + 0x78, 0x7e, 0x92, 0x5a, 0x5f, 0x90, 0xd1, 0x46, + 0x5f, 0x90, 0xd1, 0x46, 0x5f, 0x90, 0xd1, 0x46, + 0x5e, 0x91, 0xcf, 0x46, 0x5e, 0x91, 0xcf, 0x46, + 0x73, 0x82, 0x9c, 0x55, 0x95, 0x6a, 0x44, 0x88, + 0xab, 0x60, 0x17, 0xc4, 0xb2, 0x5b, 0x07, 0xe9, + 0xb2, 0x59, 0x02, 0xf7, 0xaf, 0x5b, 0x09, 0xe3, + 0x5e, 0x91, 0xcf, 0x46, 0x5e, 0x91, 0xcf, 0x46, + 0x5e, 0x91, 0xcf, 0x46, 0x5e, 0x91, 0xcf, 0x46, + 0x5e, 0x91, 0xcf, 0x46, 0xaa, 0x61, 0x1d, 0xbe, + 0xd4, 0xa8, 0x78, 0xfa, 0xe6, 0xcd, 0xaf, 0xff, + 0xea, 0xcb, 0xa3, 0xff, 0xe9, 0xbe, 0x80, 0xff, + 0xdf, 0x9d, 0x3c, 0xff, 0xdd, 0x99, 0x36, 0xff, + 0xdc, 0x99, 0x36, 0xff, 0xdb, 0x98, 0x35, 0xff, + 0xda, 0x97, 0x35, 0xff, 0xca, 0x7e, 0x21, 0xff, + 0xb2, 0x58, 0x00, 0xff, 0xc9, 0x65, 0x01, 0xff, + 0xc0, 0x61, 0x03, 0xff, 0xb5, 0x5a, 0x02, 0xff, + 0xb6, 0x5d, 0x05, 0xff, 0xbd, 0x6c, 0x1a, 0xff, + 0xbe, 0x6e, 0x1b, 0xfd, 0xb1, 0x5d, 0x06, 0xee, + 0x8a, 0x73, 0x63, 0x72, 0x60, 0x92, 0xcf, 0x47, + 0x60, 0x92, 0xcf, 0x47, 0x60, 0x92, 0xcf, 0x47, + 0x60, 0x92, 0xcf, 0x47, 0x60, 0x92, 0xcf, 0x47, + 0x7f, 0x79, 0x7a, 0x65, 0xa8, 0x61, 0x1c, 0xbc, + 0xb3, 0x5c, 0x06, 0xf9, 0xc8, 0x72, 0x1d, 0xfb, + 0xb2, 0x58, 0x02, 0xf8, 0x5f, 0x8f, 0xcc, 0x48, + 0x5d, 0x92, 0xcf, 0x47, 0x5f, 0x91, 0xd0, 0x48, + 0x5f, 0x91, 0xd0, 0x48, 0x5f, 0x91, 0xd0, 0x48, + 0x5f, 0x91, 0xd0, 0x48, 0x5f, 0x91, 0xd0, 0x48, + 0x69, 0x89, 0xb5, 0x4f, 0xb3, 0x62, 0x13, 0xe7, + 0xe2, 0xbf, 0x96, 0xfe, 0xe9, 0xd3, 0xb5, 0xff, + 0xeb, 0xcc, 0xa1, 0xff, 0xe8, 0xbb, 0x7c, 0xff, + 0xdc, 0x9b, 0x39, 0xff, 0xdb, 0x98, 0x35, 0xff, + 0xda, 0x97, 0x35, 0xff, 0xd9, 0x96, 0x35, 0xff, + 0xd1, 0x8b, 0x2c, 0xff, 0xb3, 0x5a, 0x01, 0xff, + 0xb3, 0x59, 0x00, 0xff, 0xce, 0x8a, 0x2b, 0xff, + 0xd4, 0x96, 0x3b, 0xff, 0xd5, 0xa9, 0x6b, 0xff, + 0xc1, 0x8a, 0x45, 0xfd, 0xaf, 0x59, 0x06, 0xf2, + 0x84, 0x76, 0x70, 0x6d, 0x5e, 0x92, 0xd0, 0x49, + 0x5e, 0x92, 0xd0, 0x49, 0x9b, 0x66, 0x36, 0x9a, + 0xcd, 0x6f, 0x0d, 0xfa, 0xcf, 0x6f, 0x0a, 0xfb, + 0xab, 0x5f, 0x17, 0xc7, 0x5e, 0x92, 0xd0, 0x49, + 0x5e, 0x92, 0xd0, 0x49, 0x5e, 0x92, 0xd0, 0x49, + 0x5e, 0x92, 0xd0, 0x49, 0x5e, 0x92, 0xd0, 0x49, + 0x5e, 0x92, 0xd0, 0x49, 0x5e, 0x92, 0xd0, 0x49, + 0x64, 0x94, 0xcf, 0x37, 0x64, 0x94, 0xcf, 0x37, + 0x64, 0x94, 0xcf, 0x37, 0x64, 0x94, 0xcf, 0x37, + 0x75, 0x83, 0x9d, 0x44, 0xaf, 0x5b, 0x08, 0xe5, + 0xc6, 0x8f, 0x4c, 0xfd, 0xcc, 0xa8, 0x74, 0xff, + 0xcb, 0x9e, 0x5a, 0xff, 0xca, 0x8e, 0x36, 0xff, + 0xc9, 0x8c, 0x31, 0xff, 0xc8, 0x8b, 0x31, 0xff, + 0xc7, 0x8a, 0x31, 0xff, 0xc2, 0x82, 0x29, 0xff, + 0xb6, 0x60, 0x08, 0xff, 0xcf, 0x66, 0x00, 0xff, + 0xf5, 0x79, 0x00, 0xff, 0xf3, 0x7a, 0x04, 0xff, + 0xe4, 0x7a, 0x15, 0xff, 0xd0, 0x79, 0x20, 0xff, + 0xb2, 0x5b, 0x07, 0xf1, 0x57, 0x7d, 0xa3, 0x42, + 0x57, 0x85, 0xb7, 0x3d, 0x60, 0x91, 0xc5, 0x3a, + 0x63, 0x96, 0xcf, 0x38, 0x63, 0x96, 0xcf, 0x38, + 0x63, 0x96, 0xcf, 0x38, 0x63, 0x96, 0xcf, 0x38, + 0x63, 0x96, 0xcf, 0x38, 0x63, 0x96, 0xcf, 0x38, + 0x63, 0x96, 0xcf, 0x38, 0x63, 0x96, 0xcf, 0x38, + 0x63, 0x96, 0xcf, 0x38, 0x63, 0x96, 0xcf, 0x38, + 0x65, 0x94, 0xd0, 0x38, 0x65, 0x94, 0xd0, 0x38, + 0x65, 0x94, 0xd0, 0x38, 0x65, 0x94, 0xd0, 0x38, + 0x65, 0x94, 0xd0, 0x38, 0x78, 0x85, 0x9c, 0x45, + 0xb1, 0x5d, 0x0b, 0xe1, 0xcf, 0x99, 0x5c, 0xfb, + 0xce, 0xaa, 0x77, 0xff, 0xcb, 0x9e, 0x5b, 0xff, + 0xca, 0x8f, 0x38, 0xff, 0xc9, 0x8c, 0x31, 0xff, + 0xc8, 0x8b, 0x31, 0xff, 0xc7, 0x8a, 0x31, 0xff, + 0xc1, 0x80, 0x27, 0xff, 0xb6, 0x61, 0x09, 0xff, + 0xb6, 0x5a, 0x01, 0xff, 0xd3, 0x69, 0x01, 0xff, + 0xef, 0x76, 0x00, 0xff, 0xf5, 0x7b, 0x04, 0xff, + 0xf7, 0x95, 0x2a, 0xff, 0xfa, 0xaf, 0x4b, 0xff, + 0xfb, 0xbf, 0x69, 0xff, 0xc0, 0x73, 0x21, 0xf7, + 0x9b, 0x68, 0x39, 0x83, 0x63, 0x95, 0xd1, 0x39, + 0x63, 0x95, 0xd1, 0x39, 0x63, 0x95, 0xd1, 0x39, + 0x63, 0x95, 0xd1, 0x39, 0x63, 0x95, 0xd1, 0x39, + 0x63, 0x95, 0xd1, 0x39, 0x63, 0x95, 0xd1, 0x39, + 0x63, 0x95, 0xd1, 0x39, 0x63, 0x95, 0xd1, 0x39, + 0x63, 0x95, 0xd1, 0x39, 0x67, 0x91, 0xbf, 0x3d, + 0x63, 0x95, 0xd1, 0x39, 0x63, 0x95, 0xd1, 0x39, + 0x63, 0x95, 0xd1, 0x39, 0x63, 0x95, 0xd1, 0x39, + 0x63, 0x95, 0xd1, 0x39, 0x6e, 0x8e, 0xb6, 0x3f, + 0xae, 0x5d, 0x0d, 0xd9, 0xc1, 0x86, 0x44, 0xfb, + 0xca, 0xa6, 0x71, 0xff, 0xcb, 0x9c, 0x58, 0xff, + 0xca, 0x8e, 0x35, 0xff, 0xc9, 0x8c, 0x31, 0xff, + 0xc8, 0x8b, 0x31, 0xff, 0xc7, 0x8a, 0x31, 0xff, + 0xc2, 0x82, 0x29, 0xff, 0xb5, 0x60, 0x09, 0xff, + 0xbe, 0x5f, 0x01, 0xff, 0xf1, 0x77, 0x00, 0xff, + 0xf5, 0x79, 0x00, 0xff, 0xf5, 0x80, 0x0f, 0xff, + 0xf3, 0x98, 0x34, 0xff, 0xec, 0xa4, 0x4c, 0xff, + 0xb9, 0x66, 0x12, 0xfc, 0x7d, 0x71, 0x6e, 0x5c, + 0x5d, 0x8c, 0xcc, 0x3c, 0x62, 0x93, 0xd1, 0x3a, + 0x62, 0x93, 0xd1, 0x3a, 0x62, 0x93, 0xd1, 0x3a, + 0x62, 0x93, 0xd1, 0x3a, 0x62, 0x93, 0xd1, 0x3a, + 0x62, 0x93, 0xd1, 0x3a, 0x62, 0x93, 0xd1, 0x3a, + 0x79, 0x82, 0x8c, 0x4e, 0xa6, 0x61, 0x22, 0xa4, + 0xb0, 0x58, 0x03, 0xf3, 0x79, 0x82, 0x90, 0x4d, + 0x61, 0x94, 0xcf, 0x3b, 0x61, 0x94, 0xcf, 0x3b, + 0x61, 0x94, 0xcf, 0x3b, 0x61, 0x94, 0xcf, 0x3b, + 0x61, 0x94, 0xcf, 0x3b, 0x61, 0x94, 0xcf, 0x3b, + 0x61, 0x94, 0xcf, 0x3b, 0x81, 0x7b, 0x7a, 0x56, + 0xb0, 0x5b, 0x07, 0xf5, 0xce, 0xa1, 0x68, 0xff, + 0xcb, 0x9f, 0x5f, 0xff, 0xca, 0x8f, 0x39, 0xff, + 0xc9, 0x8c, 0x31, 0xff, 0xc9, 0x8c, 0x31, 0xff, + 0xc8, 0x8b, 0x31, 0xff, 0xc6, 0x88, 0x2f, 0xff, + 0xb7, 0x66, 0x0d, 0xff, 0xcf, 0x68, 0x00, 0xff, + 0xda, 0x6c, 0x00, 0xff, 0xb8, 0x63, 0x0c, 0xff, + 0xc2, 0x99, 0x5e, 0xff, 0xb7, 0x79, 0x33, 0xfa, + 0xad, 0x5b, 0x09, 0xe4, 0x70, 0x71, 0x78, 0x57, + 0x57, 0x83, 0xbb, 0x40, 0x90, 0x6d, 0x52, 0x6e, + 0xba, 0x65, 0x0c, 0xf5, 0xf5, 0xb4, 0x5a, 0xff, + 0xb7, 0x63, 0x0e, 0xf8, 0x9a, 0x69, 0x3e, 0x81, + 0x63, 0x93, 0xcf, 0x3b, 0x63, 0x93, 0xcf, 0x3b, + 0x63, 0x93, 0xcf, 0x3b, 0x63, 0x93, 0xcf, 0x3b, + 0x63, 0x93, 0xcf, 0x3b, 0x63, 0x93, 0xcf, 0x3b, + 0x63, 0x93, 0xcf, 0x3b, 0x63, 0x93, 0xcf, 0x3b, + 0x63, 0x93, 0xcf, 0x3b, 0x63, 0x93, 0xcf, 0x3b, + 0x63, 0x93, 0xcf, 0x3b, 0x62, 0x94, 0xd0, 0x3c, + 0x73, 0x84, 0xa1, 0x48, 0xaf, 0x5b, 0x0a, 0xe6, + 0xcb, 0x9b, 0x61, 0xfd, 0xcb, 0xa7, 0x6f, 0xff, + 0xcb, 0x97, 0x4b, 0xff, 0xca, 0x8c, 0x31, 0xff, + 0xc9, 0x8c, 0x31, 0xff, 0xc8, 0x8b, 0x31, 0xff, + 0xc7, 0x8a, 0x31, 0xff, 0xc2, 0x82, 0x29, 0xff, + 0xb6, 0x60, 0x08, 0xff, 0xcf, 0x66, 0x00, 0xff, + 0xf5, 0x79, 0x00, 0xff, 0xf3, 0x7d, 0x0b, 0xff, + 0xe4, 0x7b, 0x17, 0xff, 0xcf, 0x78, 0x1e, 0xff, + 0xb2, 0x5b, 0x05, 0xf2, 0x55, 0x77, 0xa5, 0x47, + 0x56, 0x85, 0xbc, 0x41, 0x5e, 0x8f, 0xc5, 0x3e, + 0x62, 0x94, 0xd0, 0x3c, 0x60, 0x92, 0xd0, 0x3d, + 0x60, 0x92, 0xd0, 0x3d, 0x60, 0x92, 0xd0, 0x3d, + 0x60, 0x92, 0xd0, 0x3d, 0x60, 0x92, 0xd0, 0x3d, + 0xb0, 0x59, 0x05, 0xea, 0xa8, 0x63, 0x23, 0xac, + 0x64, 0x8e, 0xbf, 0x41, 0x60, 0x92, 0xd0, 0x3d, + 0x60, 0x92, 0xd0, 0x3d, 0x60, 0x92, 0xd0, 0x3d, + 0x60, 0x92, 0xd0, 0x3d, 0x60, 0x92, 0xd0, 0x3d, + 0x60, 0x92, 0xd0, 0x3d, 0x73, 0x85, 0xa0, 0x4a, + 0xb1, 0x5d, 0x0c, 0xe1, 0xcf, 0x99, 0x5d, 0xfb, + 0xce, 0xaa, 0x77, 0xff, 0xcb, 0x9e, 0x5b, 0xff, + 0xca, 0x8f, 0x38, 0xff, 0xc9, 0x8c, 0x31, 0xff, + 0xc8, 0x8b, 0x31, 0xff, 0xc7, 0x8a, 0x31, 0xff, + 0xc1, 0x80, 0x28, 0xff, 0xb7, 0x61, 0x09, 0xff, + 0xb6, 0x5a, 0x01, 0xff, 0xd3, 0x69, 0x01, 0xff, + 0xef, 0x76, 0x00, 0xff, 0xf5, 0x7b, 0x04, 0xff, + 0xf7, 0x95, 0x2a, 0xff, 0xfa, 0xaf, 0x4b, 0xff, + 0xfb, 0xbf, 0x69, 0xff, 0xc0, 0x73, 0x21, 0xf7, + 0x99, 0x69, 0x3d, 0x86, 0x62, 0x93, 0xd1, 0x3e, + 0x62, 0x93, 0xd1, 0x3e, 0x62, 0x93, 0xd1, 0x3e, + 0x62, 0x93, 0xd1, 0x3e, 0x62, 0x93, 0xd1, 0x3e, + 0x62, 0x93, 0xd1, 0x3e, 0x62, 0x93, 0xd1, 0x3e, + 0x62, 0x93, 0xd1, 0x3e, 0x62, 0x93, 0xd1, 0x3e, + 0x62, 0x93, 0xd1, 0x3e, 0x66, 0x8f, 0xc1, 0x42, + 0x61, 0x92, 0xd1, 0x3e, 0x61, 0x92, 0xd1, 0x3e, + 0x61, 0x92, 0xd1, 0x3e, 0x61, 0x92, 0xd1, 0x3e, + 0x61, 0x92, 0xd1, 0x3e, 0x66, 0x8c, 0xc4, 0x41, + 0xae, 0x5f, 0x12, 0xd0, 0xbe, 0x80, 0x3e, 0xfa, + 0xca, 0xa5, 0x70, 0xff, 0xcb, 0x9e, 0x5a, 0xff, + 0xca, 0x8e, 0x36, 0xff, 0xc9, 0x8c, 0x31, 0xff, + 0xc8, 0x8b, 0x31, 0xff, 0xc7, 0x8a, 0x31, 0xff, + 0xc3, 0x82, 0x2a, 0xff, 0xb6, 0x62, 0x0b, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xf0, 0x77, 0x00, 0xff, + 0xf5, 0x79, 0x00, 0xff, 0xf5, 0x7f, 0x0d, 0xff, + 0xf3, 0x96, 0x31, 0xff, 0xec, 0xa4, 0x4b, 0xff, + 0xbd, 0x6b, 0x17, 0xfc, 0x85, 0x6b, 0x59, 0x6e, + 0x5e, 0x8d, 0xc8, 0x41, 0x60, 0x93, 0xcf, 0x3f, + 0x60, 0x93, 0xcf, 0x3f, 0x60, 0x93, 0xcf, 0x3f, + 0x60, 0x93, 0xcf, 0x3f, 0x60, 0x93, 0xcf, 0x3f, + 0x60, 0x93, 0xcf, 0x3f, 0x60, 0x93, 0xcf, 0x3f, + 0x75, 0x84, 0x99, 0x4e, 0xa3, 0x64, 0x28, 0xa0, + 0xb0, 0x59, 0x04, 0xf0, 0x82, 0x78, 0x77, 0x5c, + 0x60, 0x93, 0xcf, 0x3f, 0x60, 0x93, 0xcf, 0x3f, + 0x60, 0x93, 0xcf, 0x3f, 0x60, 0x93, 0xcf, 0x3f, + 0x60, 0x93, 0xcf, 0x3f, 0x60, 0x93, 0xcf, 0x3f, + 0x60, 0x93, 0xcf, 0x3f, 0x7f, 0x7b, 0x7d, 0x59, + 0xb0, 0x5a, 0x06, 0xf5, 0xcd, 0x9e, 0x5f, 0xff, + 0xcb, 0x9f, 0x5f, 0xff, 0xca, 0x90, 0x3b, 0xff, + 0xc9, 0x8c, 0x31, 0xff, 0xc9, 0x8c, 0x31, 0xff, + 0xc8, 0x8b, 0x31, 0xff, 0xc6, 0x88, 0x2f, 0xff, + 0xb7, 0x66, 0x0d, 0xff, 0xcf, 0x68, 0x00, 0xff, + 0xda, 0x6c, 0x00, 0xff, 0xb8, 0x63, 0x0d, 0xff, + 0xc2, 0x9b, 0x61, 0xff, 0xb7, 0x77, 0x31, 0xfa, + 0xad, 0x5b, 0x09, 0xe4, 0x70, 0x70, 0x7c, 0x5b, + 0x5a, 0x87, 0xbf, 0x44, 0x62, 0x91, 0xcc, 0x41, + 0x5f, 0x94, 0xd0, 0x40, 0xae, 0x60, 0x13, 0xcc, + 0xc8, 0x6a, 0x09, 0xff, 0xb2, 0x5a, 0x04, 0xf2, + 0x73, 0x84, 0x9b, 0x4f, 0x5f, 0x94, 0xd0, 0x40, + 0x61, 0x93, 0xd0, 0x40, 0x61, 0x93, 0xd0, 0x40, + 0x61, 0x93, 0xd0, 0x40, 0x61, 0x93, 0xd0, 0x40, + 0x61, 0x93, 0xd0, 0x40, 0x61, 0x93, 0xd0, 0x40, + 0x67, 0x94, 0xce, 0x2e, 0x67, 0x94, 0xce, 0x2e, + 0x67, 0x94, 0xce, 0x2e, 0x65, 0x96, 0xce, 0x2f, + 0x65, 0x96, 0xce, 0x2f, 0x81, 0x7e, 0x7f, 0x44, + 0xb0, 0x5e, 0x0f, 0xcb, 0xa8, 0x5d, 0x10, 0xf7, + 0xaf, 0x82, 0x4a, 0xff, 0xb7, 0x96, 0x67, 0xff, + 0xb5, 0x8e, 0x55, 0xff, 0xb4, 0x8b, 0x4d, 0xff, + 0xb4, 0x88, 0x47, 0xff, 0xb2, 0x84, 0x43, 0xff, + 0xb1, 0x87, 0x4c, 0xff, 0xb3, 0x5c, 0x06, 0xff, + 0xe7, 0x74, 0x05, 0xff, 0xf5, 0x7b, 0x04, 0xff, + 0xf6, 0x86, 0x11, 0xff, 0xfa, 0xad, 0x4e, 0xff, + 0xc1, 0x72, 0x21, 0xf6, 0x7c, 0x59, 0x3a, 0x71, + 0x43, 0x67, 0x8b, 0x40, 0x4d, 0x70, 0x9b, 0x3b, + 0x55, 0x7f, 0xae, 0x36, 0x62, 0x91, 0xc5, 0x31, + 0x64, 0x97, 0xcf, 0x2f, 0x64, 0x97, 0xcf, 0x2f, + 0x64, 0x97, 0xcf, 0x2f, 0x64, 0x97, 0xcf, 0x2f, + 0x64, 0x97, 0xcf, 0x2f, 0x64, 0x97, 0xcf, 0x2f, + 0x64, 0x97, 0xcf, 0x2f, 0x64, 0x97, 0xcf, 0x2f, + 0x64, 0x97, 0xcf, 0x2f, 0x64, 0x97, 0xcf, 0x2f, + 0x64, 0x97, 0xcf, 0x2f, 0x64, 0x97, 0xcf, 0x2f, + 0x64, 0x97, 0xcf, 0x2f, 0x64, 0x97, 0xcf, 0x2f, + 0x77, 0x88, 0x9d, 0x3a, 0xaa, 0x62, 0x1c, 0xa2, + 0xb1, 0x5d, 0x09, 0xf7, 0xb8, 0x83, 0x44, 0xfb, + 0xbc, 0x9a, 0x69, 0xff, 0xb6, 0x91, 0x5d, 0xff, + 0xb4, 0x8e, 0x54, 0xff, 0xb4, 0x8b, 0x4d, 0xff, + 0xb2, 0x86, 0x47, 0xff, 0xb2, 0x8e, 0x58, 0xff, + 0xb3, 0x8b, 0x56, 0xff, 0xb6, 0x6f, 0x27, 0xff, + 0xb3, 0x59, 0x02, 0xff, 0xc7, 0x68, 0x0c, 0xff, + 0xea, 0x9a, 0x3c, 0xff, 0xfc, 0xbf, 0x66, 0xff, + 0xfc, 0xbf, 0x66, 0xff, 0xee, 0xb5, 0x69, 0xff, + 0xb0, 0x5d, 0x0d, 0xd8, 0x53, 0x7d, 0xb0, 0x37, + 0x60, 0x8e, 0xc6, 0x32, 0x66, 0x95, 0xd0, 0x30, + 0x66, 0x95, 0xd0, 0x30, 0x66, 0x95, 0xd0, 0x30, + 0x66, 0x95, 0xd0, 0x30, 0x66, 0x95, 0xd0, 0x30, + 0x66, 0x95, 0xd0, 0x30, 0x66, 0x95, 0xd0, 0x30, + 0x66, 0x95, 0xd0, 0x30, 0x66, 0x95, 0xd0, 0x30, + 0x66, 0x95, 0xd0, 0x30, 0x64, 0x97, 0xd1, 0x31, + 0x64, 0x97, 0xd1, 0x31, 0x64, 0x97, 0xd1, 0x31, + 0x64, 0x97, 0xd1, 0x31, 0x64, 0x97, 0xd1, 0x31, + 0x77, 0x84, 0x9b, 0x3e, 0xac, 0x62, 0x17, 0xb4, + 0xa5, 0x58, 0x0b, 0xf7, 0xab, 0x7d, 0x44, 0xfe, + 0xb7, 0x94, 0x60, 0xff, 0xb5, 0x8c, 0x50, 0xff, + 0xb4, 0x89, 0x48, 0xff, 0xb4, 0x86, 0x42, 0xff, + 0xb2, 0x82, 0x3e, 0xff, 0xb2, 0x87, 0x4a, 0xff, + 0xb2, 0x6f, 0x26, 0xff, 0xb7, 0x5c, 0x04, 0xff, + 0xe8, 0x77, 0x0a, 0xff, 0xf6, 0x8c, 0x1e, 0xff, + 0xf9, 0x9c, 0x29, 0xff, 0xfc, 0xbc, 0x5d, 0xff, + 0xcd, 0x87, 0x39, 0xf7, 0x8b, 0x5c, 0x2e, 0x85, + 0x4a, 0x6f, 0xa0, 0x3e, 0x50, 0x7d, 0xb2, 0x39, + 0x5d, 0x8e, 0xc9, 0x34, 0x63, 0x94, 0xd1, 0x32, + 0x63, 0x94, 0xd1, 0x32, 0x63, 0x94, 0xd1, 0x32, + 0x63, 0x94, 0xd1, 0x32, 0x63, 0x94, 0xd1, 0x32, + 0x63, 0x94, 0xd1, 0x32, 0x63, 0x94, 0xd1, 0x32, + 0x6e, 0x8a, 0xb0, 0x39, 0x71, 0x87, 0xa6, 0x3c, + 0x63, 0x94, 0xd1, 0x32, 0x63, 0x94, 0xd1, 0x32, + 0x63, 0x94, 0xd1, 0x32, 0x63, 0x94, 0xd1, 0x32, + 0x63, 0x94, 0xd1, 0x32, 0x63, 0x94, 0xd1, 0x32, + 0x63, 0x94, 0xd1, 0x32, 0x63, 0x94, 0xd1, 0x32, + 0x93, 0x6e, 0x4f, 0x64, 0xb1, 0x5a, 0x05, 0xf0, + 0xad, 0x74, 0x32, 0xfb, 0xb6, 0x91, 0x5a, 0xff, + 0xb7, 0x8a, 0x47, 0xff, 0xb6, 0x85, 0x3c, 0xff, + 0xb5, 0x81, 0x35, 0xff, 0xb4, 0x7d, 0x2e, 0xff, + 0xb5, 0x63, 0x0d, 0xff, 0xe4, 0x76, 0x0c, 0xff, + 0xf5, 0x81, 0x10, 0xff, 0xc1, 0x63, 0x09, 0xff, + 0xb0, 0x5c, 0x08, 0xfa, 0xa6, 0x5a, 0x0f, 0xc9, + 0x4d, 0x59, 0x69, 0x51, 0x42, 0x60, 0x85, 0x45, + 0x4b, 0x6b, 0x93, 0x40, 0xa9, 0x5e, 0x15, 0xba, + 0xbd, 0x66, 0x0b, 0xfd, 0xb4, 0x5b, 0x04, 0xf8, + 0xa5, 0x64, 0x26, 0x93, 0x65, 0x96, 0xce, 0x32, + 0x65, 0x96, 0xce, 0x32, 0x65, 0x96, 0xce, 0x32, + 0x64, 0x94, 0xcf, 0x33, 0x64, 0x94, 0xcf, 0x33, + 0x64, 0x94, 0xcf, 0x33, 0x64, 0x94, 0xcf, 0x33, + 0x64, 0x94, 0xcf, 0x33, 0x64, 0x94, 0xcf, 0x33, + 0x64, 0x94, 0xcf, 0x33, 0x64, 0x94, 0xcf, 0x33, + 0x64, 0x94, 0xcf, 0x33, 0x64, 0x94, 0xcf, 0x33, + 0x64, 0x94, 0xcf, 0x33, 0x7f, 0x7e, 0x84, 0x48, + 0xb0, 0x5e, 0x10, 0xcc, 0xae, 0x67, 0x20, 0xf8, + 0xb0, 0x87, 0x54, 0xff, 0xb7, 0x91, 0x5b, 0xff, + 0xb5, 0x89, 0x49, 0xff, 0xb4, 0x86, 0x42, 0xff, + 0xb4, 0x84, 0x3b, 0xff, 0xb2, 0x81, 0x3a, 0xff, + 0xb1, 0x82, 0x42, 0xff, 0xb3, 0x5b, 0x05, 0xff, + 0xe7, 0x76, 0x09, 0xff, 0xf5, 0x7e, 0x0a, 0xff, + 0xf6, 0x88, 0x16, 0xff, 0xfa, 0xb1, 0x56, 0xff, + 0xbf, 0x6e, 0x1a, 0xf6, 0x7b, 0x5a, 0x3f, 0x74, + 0x43, 0x69, 0x92, 0x44, 0x4c, 0x71, 0xa1, 0x3f, + 0x53, 0x7f, 0xb4, 0x3a, 0x60, 0x90, 0xca, 0x35, + 0x62, 0x95, 0xd0, 0x34, 0x62, 0x95, 0xd0, 0x34, + 0x62, 0x95, 0xd0, 0x34, 0x62, 0x95, 0xd0, 0x34, + 0x8d, 0x73, 0x5e, 0x5c, 0x62, 0x95, 0xd0, 0x34, + 0x62, 0x95, 0xd0, 0x34, 0x62, 0x95, 0xd0, 0x34, + 0x62, 0x95, 0xd0, 0x34, 0x62, 0x95, 0xd0, 0x34, + 0x62, 0x95, 0xd0, 0x34, 0x62, 0x95, 0xd0, 0x34, + 0x62, 0x95, 0xd0, 0x34, 0x65, 0x93, 0xd0, 0x35, + 0x76, 0x86, 0xa2, 0x40, 0xa9, 0x62, 0x1f, 0xa5, + 0xb1, 0x5d, 0x09, 0xf7, 0xb8, 0x83, 0x44, 0xfc, + 0xbc, 0x9a, 0x69, 0xff, 0xb6, 0x91, 0x5d, 0xff, + 0xb4, 0x8e, 0x54, 0xff, 0xb4, 0x8b, 0x4d, 0xff, + 0xb2, 0x86, 0x47, 0xff, 0xb2, 0x8e, 0x58, 0xff, + 0xb3, 0x8b, 0x56, 0xff, 0xb6, 0x6f, 0x27, 0xff, + 0xb3, 0x59, 0x02, 0xff, 0xc7, 0x68, 0x0c, 0xff, + 0xea, 0x9a, 0x3c, 0xff, 0xfc, 0xbf, 0x66, 0xff, + 0xfc, 0xbf, 0x66, 0xff, 0xee, 0xb5, 0x69, 0xff, + 0xb0, 0x5d, 0x0e, 0xd9, 0x55, 0x7f, 0xae, 0x3c, + 0x61, 0x8f, 0xc2, 0x37, 0x65, 0x93, 0xd0, 0x35, + 0x63, 0x95, 0xd1, 0x35, 0x63, 0x95, 0xd1, 0x35, + 0x63, 0x95, 0xd1, 0x35, 0x63, 0x95, 0xd1, 0x35, + 0x63, 0x95, 0xd1, 0x35, 0x63, 0x95, 0xd1, 0x35, + 0x63, 0x95, 0xd1, 0x35, 0x63, 0x95, 0xd1, 0x35, + 0x63, 0x95, 0xd1, 0x35, 0x63, 0x95, 0xd1, 0x35, + 0x63, 0x95, 0xd1, 0x35, 0x63, 0x95, 0xd1, 0x35, + 0x63, 0x95, 0xd1, 0x35, 0x63, 0x95, 0xd1, 0x35, + 0x72, 0x8a, 0xab, 0x3e, 0xab, 0x61, 0x1c, 0xad, + 0xa7, 0x58, 0x0a, 0xf8, 0xaa, 0x7b, 0x40, 0xfe, + 0xb6, 0x94, 0x61, 0xff, 0xb5, 0x8d, 0x50, 0xff, + 0xb4, 0x89, 0x49, 0xff, 0xb4, 0x86, 0x42, 0xff, + 0xb2, 0x82, 0x3d, 0xff, 0xb1, 0x87, 0x4a, 0xff, + 0xb2, 0x72, 0x2a, 0xff, 0xb5, 0x5b, 0x04, 0xff, + 0xe5, 0x76, 0x09, 0xff, 0xf6, 0x8c, 0x1d, 0xff, + 0xf9, 0x9b, 0x28, 0xff, 0xfc, 0xba, 0x5a, 0xff, + 0xd4, 0x90, 0x41, 0xf9, 0x93, 0x5a, 0x28, 0x93, + 0x4c, 0x6e, 0x9c, 0x43, 0x52, 0x7b, 0xac, 0x3e, + 0x5d, 0x8a, 0xc0, 0x39, 0x62, 0x93, 0xd2, 0x36, + 0x62, 0x93, 0xd2, 0x36, 0x62, 0x93, 0xd2, 0x36, + 0x62, 0x93, 0xd2, 0x36, 0x62, 0x93, 0xd2, 0x36, + 0x62, 0x93, 0xd2, 0x36, 0x62, 0x93, 0xd2, 0x36, + 0x69, 0x8c, 0xbc, 0x3b, 0x72, 0x84, 0xa2, 0x42, + 0x62, 0x93, 0xd2, 0x36, 0x64, 0x94, 0xcf, 0x37, + 0x64, 0x94, 0xcf, 0x37, 0x64, 0x94, 0xcf, 0x37, + 0x64, 0x94, 0xcf, 0x37, 0x64, 0x94, 0xcf, 0x37, + 0x64, 0x94, 0xcf, 0x37, 0x64, 0x94, 0xcf, 0x37, + 0x92, 0x6f, 0x53, 0x68, 0xb1, 0x5a, 0x05, 0xf1, + 0xac, 0x70, 0x2c, 0xfb, 0xb6, 0x8f, 0x56, 0xff, + 0xb7, 0x8a, 0x47, 0xff, 0xb6, 0x85, 0x3c, 0xff, + 0xb5, 0x81, 0x36, 0xff, 0xb4, 0x7d, 0x2f, 0xff, + 0xb5, 0x63, 0x0e, 0xff, 0xe4, 0x76, 0x0c, 0xff, + 0xf5, 0x81, 0x10, 0xff, 0xc1, 0x63, 0x08, 0xff, + 0xb0, 0x5b, 0x07, 0xfb, 0xa5, 0x5a, 0x11, 0xca, + 0x4d, 0x5a, 0x6f, 0x56, 0x44, 0x63, 0x8d, 0x4a, + 0x48, 0x70, 0x99, 0x46, 0x52, 0x79, 0xa8, 0x41, + 0x5d, 0x88, 0xbb, 0x3c, 0xb1, 0x59, 0x03, 0xf3, + 0xb2, 0x5b, 0x06, 0xea, 0x8b, 0x75, 0x64, 0x5d, + 0x63, 0x96, 0xcf, 0x38, 0x63, 0x96, 0xcf, 0x38, + 0x63, 0x96, 0xcf, 0x38, 0x63, 0x96, 0xcf, 0x38, + 0x63, 0x96, 0xcf, 0x38, 0x63, 0x96, 0xcf, 0x38, + 0x63, 0x96, 0xcf, 0x38, 0x63, 0x96, 0xcf, 0x38, + 0x69, 0x96, 0xcd, 0x26, 0x69, 0x96, 0xcd, 0x26, + 0x69, 0x96, 0xcd, 0x26, 0x69, 0x96, 0xcd, 0x26, + 0x69, 0x96, 0xcd, 0x26, 0x69, 0x96, 0xcd, 0x26, + 0x69, 0x96, 0xcd, 0x26, 0x98, 0x65, 0x3a, 0x62, + 0xae, 0x59, 0x06, 0xe3, 0xad, 0x64, 0x17, 0xf7, + 0xb0, 0x76, 0x34, 0xfa, 0xa6, 0x75, 0x3b, 0xfe, + 0xa8, 0x7c, 0x45, 0xff, 0xb0, 0x83, 0x4b, 0xff, + 0xa7, 0x72, 0x33, 0xf9, 0xa9, 0x5b, 0x0d, 0xfb, + 0xb8, 0x5d, 0x06, 0xfe, 0xf2, 0x8c, 0x24, 0xff, + 0xf8, 0x95, 0x21, 0xff, 0xfb, 0xba, 0x5c, 0xff, + 0xce, 0x88, 0x3c, 0xf8, 0x82, 0x51, 0x23, 0x82, + 0x36, 0x4e, 0x6d, 0x41, 0x3b, 0x59, 0x7b, 0x3c, + 0x46, 0x63, 0x8d, 0x36, 0x4f, 0x74, 0xa4, 0x30, + 0x61, 0x8b, 0xc2, 0x2a, 0x67, 0x98, 0xce, 0x27, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x65, 0x95, 0xcf, 0x27, 0x65, 0x95, 0xcf, 0x27, + 0x7d, 0x76, 0x73, 0x3e, 0xa8, 0x5d, 0x14, 0xad, + 0xb4, 0x5e, 0x0b, 0xf9, 0xb9, 0x70, 0x25, 0xf5, + 0xb2, 0x73, 0x32, 0xf7, 0xb8, 0x80, 0x40, 0xfb, + 0xc9, 0x8f, 0x4b, 0xfc, 0xbf, 0x78, 0x30, 0xf6, + 0xb4, 0x5e, 0x0b, 0xfb, 0xad, 0x59, 0x07, 0xe7, + 0x89, 0x4d, 0x15, 0xa5, 0x83, 0x4d, 0x17, 0x9a, + 0xad, 0x5a, 0x07, 0xe4, 0xbb, 0x6b, 0x18, 0xf6, + 0xe2, 0xa0, 0x50, 0xfe, 0xde, 0x9e, 0x51, 0xfd, + 0xab, 0x5c, 0x0e, 0xc7, 0x42, 0x63, 0x8d, 0x36, + 0x4a, 0x74, 0xa4, 0x30, 0x5b, 0x8b, 0xc2, 0x2a, + 0x65, 0x95, 0xcf, 0x27, 0x68, 0x97, 0xd0, 0x28, + 0x68, 0x97, 0xd0, 0x28, 0x68, 0x97, 0xd0, 0x28, + 0x68, 0x97, 0xd0, 0x28, 0x68, 0x97, 0xd0, 0x28, + 0x68, 0x97, 0xd0, 0x28, 0x68, 0x97, 0xd0, 0x28, + 0x68, 0x97, 0xd0, 0x28, 0x68, 0x97, 0xd0, 0x28, + 0x68, 0x97, 0xd0, 0x28, 0x68, 0x97, 0xd0, 0x28, + 0x68, 0x97, 0xd0, 0x28, 0x68, 0x97, 0xd0, 0x28, + 0x68, 0x97, 0xd0, 0x28, 0x68, 0x97, 0xd0, 0x28, + 0x8d, 0x6d, 0x4f, 0x53, 0xad, 0x5b, 0x0a, 0xd6, + 0xab, 0x61, 0x14, 0xf7, 0xab, 0x6f, 0x2d, 0xf8, + 0xa3, 0x70, 0x34, 0xfe, 0xa6, 0x78, 0x3e, 0xff, + 0xad, 0x7e, 0x42, 0xff, 0xa8, 0x70, 0x30, 0xfc, + 0xa5, 0x60, 0x19, 0xf7, 0xac, 0x56, 0x02, 0xfb, + 0xb3, 0x58, 0x01, 0xfc, 0xdd, 0x89, 0x2d, 0xfd, + 0xfb, 0xbc, 0x62, 0xff, 0xfc, 0xc4, 0x72, 0xff, + 0xc6, 0x79, 0x27, 0xf5, 0x7f, 0x54, 0x2c, 0x7a, + 0x39, 0x5e, 0x7f, 0x3e, 0x44, 0x68, 0x91, 0x38, + 0x4c, 0x7a, 0xa8, 0x32, 0x5c, 0x90, 0xc5, 0x2c, + 0x66, 0x99, 0xd1, 0x29, 0x66, 0x99, 0xd1, 0x29, + 0x66, 0x99, 0xd1, 0x29, 0x66, 0x99, 0xd1, 0x29, + 0x66, 0x99, 0xd1, 0x29, 0x66, 0x99, 0xd1, 0x29, + 0x66, 0x99, 0xd1, 0x29, 0x66, 0x99, 0xd1, 0x29, + 0x66, 0x99, 0xd1, 0x29, 0x66, 0x99, 0xd1, 0x29, + 0x69, 0x96, 0xcd, 0x2a, 0x69, 0x96, 0xcd, 0x2a, + 0x69, 0x96, 0xcd, 0x2a, 0x69, 0x96, 0xcd, 0x2a, + 0x69, 0x96, 0xcd, 0x2a, 0x64, 0x96, 0xcd, 0x2a, + 0x64, 0x96, 0xcd, 0x2a, 0x76, 0x86, 0x9a, 0x35, + 0xaa, 0x5e, 0x14, 0xb0, 0xa9, 0x5b, 0x0e, 0xf9, + 0xb6, 0x7f, 0x3c, 0xff, 0xa8, 0x7b, 0x40, 0xff, + 0xa4, 0x7c, 0x46, 0xff, 0xa9, 0x81, 0x4b, 0xff, + 0xb4, 0x5d, 0x07, 0xff, 0xf0, 0x88, 0x23, 0xff, + 0xf5, 0x7d, 0x09, 0xff, 0xef, 0x8b, 0x2c, 0xff, + 0xb2, 0x5a, 0x04, 0xf9, 0x29, 0x3f, 0x59, 0x50, + 0x2c, 0x47, 0x62, 0x4b, 0x33, 0x50, 0x69, 0x46, + 0x45, 0x56, 0x69, 0x46, 0xaf, 0x58, 0x03, 0xef, + 0xaa, 0x5e, 0x12, 0xb6, 0x88, 0x71, 0x5c, 0x4d, + 0x67, 0x98, 0xce, 0x2a, 0x67, 0x98, 0xce, 0x2a, + 0x67, 0x98, 0xce, 0x2a, 0x67, 0x98, 0xce, 0x2a, + 0x67, 0x98, 0xce, 0x2a, 0x67, 0x98, 0xce, 0x2a, + 0x67, 0x98, 0xce, 0x2a, 0x67, 0x98, 0xce, 0x2a, + 0x67, 0x98, 0xce, 0x2a, 0x67, 0x98, 0xce, 0x2a, + 0x67, 0x98, 0xce, 0x2a, 0x67, 0x98, 0xce, 0x2a, + 0x67, 0x98, 0xce, 0x2a, 0x67, 0x98, 0xce, 0x2a, + 0x67, 0x98, 0xce, 0x2a, 0x67, 0x98, 0xce, 0x2a, + 0x67, 0x98, 0xce, 0x2a, 0x96, 0x68, 0x3d, 0x65, + 0xae, 0x5a, 0x07, 0xe4, 0xb1, 0x6d, 0x25, 0xf8, + 0xb0, 0x78, 0x3a, 0xfa, 0xa6, 0x76, 0x3e, 0xfe, + 0xa9, 0x7d, 0x47, 0xff, 0xb0, 0x82, 0x49, 0xff, + 0xa8, 0x71, 0x33, 0xfa, 0xaa, 0x5c, 0x10, 0xfb, + 0xb8, 0x5c, 0x04, 0xfe, 0xf3, 0x8f, 0x2a, 0xff, + 0xf8, 0x97, 0x26, 0xff, 0xfb, 0xbd, 0x63, 0xff, + 0xcc, 0x84, 0x34, 0xf7, 0x81, 0x51, 0x27, 0x84, + 0x39, 0x53, 0x75, 0x43, 0x3d, 0x5e, 0x83, 0x3e, + 0x48, 0x68, 0x96, 0x38, 0x51, 0x7a, 0xad, 0x32, + 0x62, 0x90, 0xca, 0x2c, 0x65, 0x95, 0xcf, 0x2b, + 0x65, 0x95, 0xcf, 0x2b, 0x65, 0x95, 0xcf, 0x2b, + 0x65, 0x95, 0xcf, 0x2b, 0x68, 0x97, 0xcf, 0x2c, + 0x68, 0x97, 0xcf, 0x2c, 0x68, 0x97, 0xcf, 0x2c, + 0x68, 0x97, 0xcf, 0x2c, 0x68, 0x97, 0xcf, 0x2c, + 0x68, 0x97, 0xcf, 0x2c, 0x68, 0x97, 0xcf, 0x2c, + 0x68, 0x97, 0xcf, 0x2c, 0x68, 0x97, 0xcf, 0x2c, + 0x68, 0x97, 0xcf, 0x2c, 0x68, 0x97, 0xcf, 0x2c, + 0x7f, 0x78, 0x78, 0x43, 0xa8, 0x5e, 0x16, 0xaf, + 0xb4, 0x5e, 0x0b, 0xf9, 0xb9, 0x70, 0x25, 0xf6, + 0xb2, 0x73, 0x32, 0xf7, 0xb8, 0x80, 0x40, 0xfb, + 0xc9, 0x8f, 0x4b, 0xfd, 0xbf, 0x78, 0x30, 0xf6, + 0xb4, 0x5e, 0x0b, 0xfb, 0xad, 0x5a, 0x07, 0xe8, + 0x89, 0x4d, 0x17, 0xa7, 0x83, 0x4e, 0x1b, 0x9c, + 0xae, 0x5a, 0x08, 0xe5, 0xbb, 0x6b, 0x18, 0xf6, + 0xe2, 0xa0, 0x50, 0xfe, 0xde, 0x9e, 0x51, 0xfd, + 0xab, 0x5c, 0x0f, 0xc9, 0x49, 0x67, 0x8e, 0x3b, + 0x51, 0x78, 0xa3, 0x35, 0x63, 0x90, 0xc7, 0x2e, + 0x66, 0x95, 0xd0, 0x2c, 0x66, 0x95, 0xd0, 0x2c, + 0x66, 0x95, 0xd0, 0x2c, 0x66, 0x95, 0xd0, 0x2c, + 0x66, 0x95, 0xd0, 0x2c, 0x66, 0x95, 0xd0, 0x2c, + 0x66, 0x95, 0xd0, 0x2c, 0x66, 0x95, 0xd0, 0x2c, + 0x66, 0x95, 0xd0, 0x2c, 0x66, 0x95, 0xd0, 0x2c, + 0x66, 0x95, 0xd0, 0x2c, 0x66, 0x95, 0xd0, 0x2c, + 0x66, 0x95, 0xd0, 0x2c, 0x66, 0x95, 0xd0, 0x2c, + 0x64, 0x96, 0xd1, 0x2d, 0x64, 0x96, 0xd1, 0x2d, + 0x86, 0x70, 0x5e, 0x51, 0xad, 0x5d, 0x0c, 0xd0, + 0xab, 0x60, 0x13, 0xf7, 0xab, 0x6f, 0x2c, 0xf7, + 0xa3, 0x6f, 0x34, 0xfd, 0xa6, 0x77, 0x3e, 0xff, + 0xae, 0x7f, 0x43, 0xff, 0xa8, 0x71, 0x31, 0xfc, + 0xa4, 0x61, 0x1a, 0xf7, 0xaa, 0x56, 0x02, 0xfb, + 0xb3, 0x58, 0x01, 0xfc, 0xd9, 0x83, 0x28, 0xfd, + 0xfb, 0xba, 0x61, 0xff, 0xfc, 0xc3, 0x6f, 0xff, + 0xcc, 0x83, 0x31, 0xf6, 0x87, 0x55, 0x26, 0x88, + 0x3d, 0x58, 0x7f, 0x42, 0x47, 0x64, 0x8e, 0x3d, + 0x4e, 0x73, 0xa2, 0x37, 0x5f, 0x8a, 0xbf, 0x30, + 0x64, 0x96, 0xd1, 0x2d, 0x67, 0x94, 0xce, 0x2e, + 0x67, 0x94, 0xce, 0x2e, 0x67, 0x94, 0xce, 0x2e, + 0x67, 0x94, 0xce, 0x2e, 0x67, 0x94, 0xce, 0x2e, + 0x67, 0x94, 0xce, 0x2e, 0x67, 0x94, 0xce, 0x2e, + 0x67, 0x94, 0xce, 0x2e, 0x67, 0x94, 0xce, 0x2e, + 0x67, 0x94, 0xce, 0x2e, 0x67, 0x94, 0xce, 0x2e, + 0x67, 0x94, 0xce, 0x2e, 0x67, 0x94, 0xce, 0x2e, + 0x67, 0x94, 0xce, 0x2e, 0x67, 0x94, 0xce, 0x2e, + 0x67, 0x94, 0xce, 0x2e, 0x77, 0x86, 0x9e, 0x39, + 0xaa, 0x5e, 0x15, 0xb1, 0xa8, 0x59, 0x0b, 0xf9, + 0xb6, 0x7d, 0x37, 0xff, 0xa8, 0x79, 0x3d, 0xff, + 0xa4, 0x7a, 0x42, 0xff, 0xa9, 0x81, 0x49, 0xff, + 0xb4, 0x5d, 0x07, 0xff, 0xf0, 0x88, 0x23, 0xff, + 0xf5, 0x7d, 0x09, 0xff, 0xef, 0x8b, 0x2c, 0xff, + 0xb2, 0x5a, 0x05, 0xf9, 0x30, 0x45, 0x5d, 0x55, + 0x33, 0x4c, 0x66, 0x50, 0x36, 0x51, 0x70, 0x4b, + 0x3e, 0x5c, 0x7d, 0x45, 0x48, 0x69, 0x8d, 0x3f, + 0x77, 0x6a, 0x5f, 0x53, 0xa7, 0x5d, 0x15, 0xae, + 0x73, 0x89, 0xa5, 0x38, 0x65, 0x96, 0xce, 0x2f, + 0x65, 0x96, 0xce, 0x2f, 0x65, 0x96, 0xce, 0x2f, + 0x65, 0x96, 0xce, 0x2f, 0x65, 0x96, 0xce, 0x2f, + 0x65, 0x96, 0xce, 0x2f, 0x65, 0x96, 0xce, 0x2f, + 0x65, 0x96, 0xce, 0x2f, 0x65, 0x96, 0xce, 0x2f, + 0x69, 0x96, 0xd1, 0x1d, 0x69, 0x96, 0xd1, 0x1d, + 0x69, 0x96, 0xd1, 0x1d, 0x69, 0x96, 0xd1, 0x1d, + 0x69, 0x96, 0xd1, 0x1d, 0x69, 0x96, 0xd1, 0x1d, + 0x69, 0x96, 0xd1, 0x1d, 0x57, 0x7b, 0xa7, 0x23, + 0x46, 0x64, 0x88, 0x2b, 0x8b, 0x56, 0x24, 0x6d, + 0x95, 0x53, 0x16, 0x8a, 0x9b, 0x53, 0x0f, 0xa3, + 0xa5, 0x58, 0x0d, 0xbf, 0xa4, 0x58, 0x0b, 0xc6, + 0x82, 0x48, 0x12, 0x97, 0x50, 0x36, 0x22, 0x70, + 0x92, 0x4c, 0x09, 0xba, 0xcb, 0x78, 0x24, 0xf9, + 0xfb, 0xb7, 0x5f, 0xff, 0xfa, 0xc4, 0x76, 0xff, + 0xb5, 0x60, 0x0c, 0xf8, 0x52, 0x41, 0x33, 0x58, + 0x2d, 0x3d, 0x56, 0x3e, 0x36, 0x48, 0x5f, 0x38, + 0x3e, 0x58, 0x72, 0x31, 0x48, 0x67, 0x8b, 0x2a, + 0x5a, 0x87, 0xb4, 0x22, 0x66, 0x99, 0xcc, 0x1e, + 0x66, 0x99, 0xcc, 0x1e, 0x66, 0x99, 0xcc, 0x1e, + 0x66, 0x99, 0xcc, 0x1e, 0x66, 0x99, 0xcc, 0x1e, + 0x6a, 0x9b, 0xcd, 0x1e, 0x6a, 0x9b, 0xcd, 0x1e, + 0x6a, 0x9b, 0xcd, 0x1e, 0x6a, 0x9b, 0xcd, 0x1e, + 0x6a, 0x9b, 0xcd, 0x1e, 0x6a, 0x9b, 0xcd, 0x1e, + 0x6a, 0x9b, 0xcd, 0x1e, 0x6a, 0x9b, 0xcd, 0x1e, + 0x6a, 0x9b, 0xcd, 0x1e, 0x6a, 0x9b, 0xcd, 0x1e, + 0x55, 0x7f, 0xa2, 0x24, 0x42, 0x67, 0x8b, 0x2a, + 0x5a, 0x58, 0x53, 0x3f, 0x75, 0x51, 0x2e, 0x5d, + 0x7f, 0x50, 0x1f, 0x76, 0x89, 0x4e, 0x15, 0x8f, + 0x8e, 0x4d, 0x0f, 0xa0, 0x6f, 0x43, 0x1a, 0x83, + 0x30, 0x2d, 0x2c, 0x60, 0x18, 0x23, 0x2e, 0x5d, + 0x18, 0x23, 0x2e, 0x5d, 0x1a, 0x26, 0x35, 0x56, + 0x1f, 0x2c, 0x3b, 0x51, 0x63, 0x41, 0x25, 0x6e, + 0xa4, 0x57, 0x0c, 0xbd, 0xb0, 0x59, 0x03, 0xf2, + 0x62, 0x4d, 0x3f, 0x4f, 0x3e, 0x58, 0x77, 0x31, + 0x47, 0x64, 0x8e, 0x2b, 0x5e, 0x83, 0xb6, 0x23, + 0x67, 0x98, 0xce, 0x1f, 0x67, 0x98, 0xce, 0x1f, + 0x67, 0x98, 0xce, 0x1f, 0x67, 0x98, 0xce, 0x1f, + 0x67, 0x98, 0xce, 0x1f, 0x67, 0x98, 0xce, 0x1f, + 0x67, 0x98, 0xce, 0x1f, 0x67, 0x98, 0xce, 0x1f, + 0x67, 0x98, 0xce, 0x1f, 0x67, 0x98, 0xce, 0x1f, + 0x67, 0x98, 0xce, 0x1f, 0x67, 0x98, 0xce, 0x1f, + 0x67, 0x98, 0xce, 0x1f, 0x67, 0x98, 0xce, 0x1f, + 0x67, 0x98, 0xce, 0x1f, 0x6b, 0x9a, 0xd0, 0x20, + 0x57, 0x78, 0xa7, 0x26, 0x45, 0x68, 0x90, 0x2c, + 0x83, 0x56, 0x30, 0x61, 0x8f, 0x53, 0x1c, 0x82, + 0x97, 0x53, 0x11, 0x9e, 0xa3, 0x57, 0x0d, 0xbd, + 0xa4, 0x58, 0x0c, 0xc7, 0x86, 0x4a, 0x12, 0x9e, + 0x5d, 0x3d, 0x1e, 0x7c, 0x20, 0x27, 0x2f, 0x62, + 0x41, 0x31, 0x25, 0x71, 0xaa, 0x58, 0x05, 0xe2, + 0xcd, 0x82, 0x31, 0xf9, 0xee, 0xb4, 0x66, 0xff, + 0xb2, 0x5a, 0x04, 0xf3, 0x3f, 0x41, 0x4c, 0x47, + 0x35, 0x4c, 0x66, 0x39, 0x3d, 0x56, 0x7a, 0x32, + 0x45, 0x68, 0x90, 0x2c, 0x5c, 0x86, 0xb1, 0x24, + 0x6b, 0x9a, 0xd0, 0x20, 0x68, 0x97, 0xd1, 0x21, + 0x68, 0x97, 0xd1, 0x21, 0x68, 0x97, 0xd1, 0x21, + 0x68, 0x97, 0xd1, 0x21, 0x68, 0x97, 0xd1, 0x21, + 0x68, 0x97, 0xd1, 0x21, 0x68, 0x97, 0xd1, 0x21, + 0x68, 0x97, 0xd1, 0x21, 0x68, 0x97, 0xd1, 0x21, + 0x68, 0x97, 0xd1, 0x21, 0x68, 0x97, 0xd1, 0x21, + 0x68, 0x97, 0xd1, 0x21, 0x68, 0x97, 0xd1, 0x21, + 0x68, 0x97, 0xd1, 0x21, 0x68, 0x97, 0xd1, 0x21, + 0x68, 0x97, 0xd1, 0x21, 0x61, 0x96, 0xca, 0x22, + 0x50, 0x76, 0xa1, 0x29, 0x84, 0x5c, 0x33, 0x5f, + 0xa3, 0x59, 0x10, 0xaa, 0xab, 0x5b, 0x0c, 0xca, + 0xab, 0x58, 0x06, 0xe3, 0xb1, 0x59, 0x03, 0xf5, + 0xbe, 0x69, 0x17, 0xfd, 0xf7, 0x94, 0x34, 0xff, + 0xf6, 0x91, 0x2f, 0xff, 0xe9, 0x97, 0x43, 0xff, + 0xaf, 0x59, 0x07, 0xf1, 0x23, 0x33, 0x42, 0x50, + 0x25, 0x37, 0x4b, 0x4a, 0x2d, 0x40, 0x57, 0x43, + 0x55, 0x4f, 0x49, 0x4c, 0x65, 0x55, 0x49, 0x4a, + 0x46, 0x67, 0x87, 0x2f, 0x5b, 0x7c, 0xaa, 0x27, + 0x6c, 0x99, 0xd2, 0x21, 0x6c, 0x99, 0xd2, 0x21, + 0x6c, 0x99, 0xd2, 0x21, 0x6c, 0x99, 0xd2, 0x21, + 0x6c, 0x99, 0xd2, 0x21, 0x6c, 0x99, 0xd2, 0x21, + 0x6c, 0x99, 0xd2, 0x21, 0x6c, 0x99, 0xd2, 0x21, + 0x6c, 0x99, 0xd2, 0x21, 0x6c, 0x99, 0xd2, 0x21, + 0x6c, 0x99, 0xd2, 0x21, 0x69, 0x96, 0xcd, 0x22, + 0x69, 0x96, 0xcd, 0x22, 0x69, 0x96, 0xcd, 0x22, + 0x69, 0x96, 0xcd, 0x22, 0x69, 0x96, 0xcd, 0x22, + 0x69, 0x96, 0xcd, 0x22, 0x59, 0x79, 0xa5, 0x28, + 0x4a, 0x69, 0x89, 0x30, 0x8a, 0x56, 0x28, 0x6f, + 0x92, 0x54, 0x19, 0x8c, 0x9a, 0x53, 0x10, 0xa5, + 0xa4, 0x58, 0x0d, 0xc0, 0xa3, 0x58, 0x0c, 0xc7, + 0x82, 0x48, 0x14, 0x9a, 0x4e, 0x38, 0x25, 0x73, + 0x92, 0x4d, 0x0a, 0xbb, 0xc9, 0x73, 0x1c, 0xf9, + 0xfb, 0xbb, 0x67, 0xff, 0xfa, 0xc3, 0x74, 0xff, + 0xb4, 0x5e, 0x09, 0xf8, 0x53, 0x44, 0x39, 0x5a, + 0x30, 0x44, 0x5d, 0x3f, 0x3a, 0x55, 0x6f, 0x39, + 0x41, 0x5f, 0x82, 0x33, 0x4b, 0x73, 0x9c, 0x2c, + 0x60, 0x90, 0xc0, 0x25, 0x67, 0x98, 0xce, 0x23, + 0x67, 0x98, 0xce, 0x23, 0x67, 0x98, 0xce, 0x23, + 0x67, 0x98, 0xce, 0x23, 0x67, 0x98, 0xce, 0x23, + 0x67, 0x98, 0xce, 0x23, 0x67, 0x98, 0xce, 0x23, + 0x67, 0x98, 0xce, 0x23, 0x67, 0x98, 0xce, 0x23, + 0x67, 0x98, 0xce, 0x23, 0x67, 0x98, 0xce, 0x23, + 0x67, 0x98, 0xce, 0x23, 0x67, 0x98, 0xce, 0x23, + 0x67, 0x98, 0xce, 0x23, 0x67, 0x98, 0xce, 0x23, + 0x57, 0x7c, 0xa7, 0x29, 0x46, 0x6c, 0x8d, 0x2f, + 0x5c, 0x5a, 0x5d, 0x42, 0x72, 0x55, 0x35, 0x61, + 0x80, 0x52, 0x24, 0x7a, 0x88, 0x4f, 0x18, 0x92, + 0x8d, 0x4f, 0x12, 0xa3, 0x70, 0x46, 0x1e, 0x86, + 0x32, 0x32, 0x33, 0x65, 0x1c, 0x2a, 0x37, 0x61, + 0x1c, 0x2a, 0x37, 0x61, 0x1e, 0x2c, 0x3d, 0x5b, + 0x24, 0x33, 0x45, 0x55, 0x63, 0x46, 0x29, 0x72, + 0xa3, 0x58, 0x0d, 0xbf, 0xb0, 0x59, 0x03, 0xf2, + 0x60, 0x52, 0x46, 0x53, 0x42, 0x5e, 0x7f, 0x36, + 0x4a, 0x6f, 0x8f, 0x30, 0x5f, 0x8c, 0xb2, 0x28, + 0x6a, 0x9a, 0xcf, 0x24, 0x6a, 0x9a, 0xcf, 0x24, + 0x6a, 0x9a, 0xcf, 0x24, 0x6a, 0x9a, 0xcf, 0x24, + 0x6a, 0x9a, 0xcf, 0x24, 0x6a, 0x9a, 0xcf, 0x24, + 0x68, 0x97, 0xd0, 0x24, 0x68, 0x97, 0xd0, 0x24, + 0x68, 0x97, 0xd0, 0x24, 0x68, 0x97, 0xd0, 0x24, + 0x68, 0x97, 0xd0, 0x24, 0x68, 0x97, 0xd0, 0x24, + 0x68, 0x97, 0xd0, 0x24, 0x68, 0x97, 0xd0, 0x24, + 0x68, 0x97, 0xd0, 0x24, 0x68, 0x97, 0xd0, 0x24, + 0x5d, 0x82, 0xae, 0x29, 0x4a, 0x6a, 0x8f, 0x30, + 0x7e, 0x56, 0x37, 0x61, 0x8e, 0x55, 0x1f, 0x83, + 0x95, 0x54, 0x14, 0x9e, 0xa2, 0x57, 0x0e, 0xbc, + 0xa5, 0x57, 0x0c, 0xc9, 0x89, 0x4c, 0x13, 0xa2, + 0x5f, 0x3f, 0x21, 0x80, 0x28, 0x2b, 0x32, 0x66, + 0x3a, 0x31, 0x2a, 0x70, 0xa8, 0x57, 0x07, 0xdc, + 0xc9, 0x7c, 0x2a, 0xf9, 0xf0, 0xb6, 0x6a, 0xff, + 0xb2, 0x5a, 0x05, 0xf5, 0x4d, 0x49, 0x4a, 0x52, + 0x35, 0x4e, 0x6f, 0x3e, 0x3f, 0x5b, 0x7a, 0x38, + 0x47, 0x6b, 0x8e, 0x32, 0x5b, 0x7f, 0xb0, 0x2a, + 0x66, 0x99, 0xd1, 0x25, 0x66, 0x99, 0xd1, 0x25, + 0x66, 0x99, 0xd1, 0x25, 0x66, 0x99, 0xd1, 0x25, + 0x66, 0x99, 0xd1, 0x25, 0x66, 0x99, 0xd1, 0x25, + 0x66, 0x99, 0xd1, 0x25, 0x66, 0x99, 0xd1, 0x25, + 0x66, 0x99, 0xd1, 0x25, 0x66, 0x99, 0xd1, 0x25, + 0x66, 0x99, 0xd1, 0x25, 0x66, 0x99, 0xd1, 0x25, + 0x66, 0x99, 0xd1, 0x25, 0x66, 0x99, 0xd1, 0x25, + 0x66, 0x99, 0xd1, 0x25, 0x69, 0x96, 0xcd, 0x26, + 0x69, 0x96, 0xcd, 0x26, 0x68, 0x8f, 0xca, 0x27, + 0x53, 0x74, 0xa6, 0x2e, 0x86, 0x5d, 0x3a, 0x62, + 0xa2, 0x59, 0x13, 0xac, 0xab, 0x5b, 0x0d, 0xcb, + 0xab, 0x59, 0x07, 0xe4, 0xb1, 0x59, 0x03, 0xf5, + 0xbe, 0x69, 0x17, 0xfd, 0xf7, 0x94, 0x34, 0xff, + 0xf6, 0x91, 0x2f, 0xff, 0xe9, 0x97, 0x43, 0xff, + 0xaf, 0x5a, 0x08, 0xf1, 0x27, 0x33, 0x48, 0x54, + 0x2a, 0x3a, 0x51, 0x4e, 0x32, 0x44, 0x5d, 0x47, + 0x37, 0x4b, 0x6b, 0x40, 0x3d, 0x57, 0x7b, 0x3a, + 0x4e, 0x65, 0x86, 0x36, 0x5c, 0x79, 0xad, 0x2c, + 0x69, 0x96, 0xcd, 0x26, 0x69, 0x96, 0xcd, 0x26, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x67, 0x98, 0xce, 0x27, 0x67, 0x98, 0xce, 0x27, + 0x68, 0x97, 0xd0, 0x14, 0x6d, 0x9b, 0xd1, 0x15, + 0x6d, 0x9b, 0xd1, 0x15, 0x6d, 0x9b, 0xd1, 0x15, + 0x6d, 0x9b, 0xd1, 0x15, 0x6d, 0x9b, 0xd1, 0x15, + 0x6d, 0x9b, 0xd1, 0x15, 0x5b, 0x84, 0xad, 0x19, + 0x4a, 0x62, 0x83, 0x1f, 0x35, 0x50, 0x6b, 0x26, + 0x2e, 0x45, 0x56, 0x2c, 0x29, 0x39, 0x4e, 0x31, + 0x25, 0x33, 0x45, 0x37, 0x1d, 0x2d, 0x3a, 0x3d, + 0x1b, 0x2a, 0x36, 0x42, 0x19, 0x24, 0x2f, 0x46, + 0x22, 0x26, 0x2a, 0x4c, 0xac, 0x57, 0x05, 0xe1, + 0xe1, 0xa4, 0x5a, 0xfe, 0xc3, 0x75, 0x23, 0xf7, + 0xa0, 0x55, 0x0b, 0xb0, 0x24, 0x32, 0x3f, 0x38, + 0x29, 0x39, 0x4e, 0x31, 0x2e, 0x45, 0x56, 0x2c, + 0x35, 0x50, 0x6b, 0x26, 0x4c, 0x66, 0x88, 0x1e, + 0x68, 0x96, 0xc5, 0x16, 0x6a, 0x9e, 0xd3, 0x15, + 0x6a, 0x9e, 0xd3, 0x15, 0x6a, 0x9e, 0xd3, 0x15, + 0x6a, 0x9e, 0xd3, 0x15, 0x6a, 0x9e, 0xd3, 0x15, + 0x6a, 0x9e, 0xd3, 0x15, 0x6a, 0x9e, 0xd3, 0x15, + 0x6a, 0x9e, 0xd3, 0x15, 0x6a, 0x9e, 0xd3, 0x15, + 0x6a, 0x9e, 0xd3, 0x15, 0x6a, 0x9e, 0xd3, 0x15, + 0x6a, 0x9e, 0xd3, 0x15, 0x6a, 0x9e, 0xd3, 0x15, + 0x6a, 0x9e, 0xd3, 0x15, 0x6a, 0x9e, 0xd3, 0x15, + 0x5b, 0x84, 0xad, 0x19, 0x4a, 0x62, 0x83, 0x1f, + 0x35, 0x50, 0x6b, 0x26, 0x2e, 0x45, 0x56, 0x2c, + 0x2d, 0x38, 0x51, 0x32, 0x28, 0x32, 0x44, 0x38, + 0x20, 0x2d, 0x3d, 0x3e, 0x1e, 0x29, 0x39, 0x43, + 0x1d, 0x24, 0x33, 0x46, 0x1b, 0x22, 0x30, 0x49, + 0x1b, 0x22, 0x30, 0x49, 0x1d, 0x24, 0x33, 0x46, + 0x1e, 0x29, 0x39, 0x43, 0x20, 0x2d, 0x3d, 0x3e, + 0x28, 0x31, 0x43, 0x39, 0x34, 0x39, 0x4c, 0x34, + 0x33, 0x44, 0x5a, 0x2d, 0x3c, 0x50, 0x72, 0x26, + 0x52, 0x62, 0x8b, 0x1f, 0x6e, 0x90, 0xc7, 0x17, + 0x6f, 0x99, 0xcc, 0x16, 0x6f, 0x99, 0xcc, 0x16, + 0x6f, 0x99, 0xcc, 0x16, 0x6f, 0x99, 0xcc, 0x16, + 0x6f, 0x99, 0xcc, 0x16, 0x6f, 0x99, 0xcc, 0x16, + 0x6f, 0x99, 0xcc, 0x16, 0x6b, 0x9c, 0xce, 0x17, + 0x6b, 0x9c, 0xce, 0x17, 0x6b, 0x9c, 0xce, 0x17, + 0x6b, 0x9c, 0xce, 0x17, 0x6b, 0x9c, 0xce, 0x17, + 0x6b, 0x9c, 0xce, 0x17, 0x6b, 0x9c, 0xce, 0x17, + 0x6b, 0x9c, 0xce, 0x17, 0x6b, 0x9c, 0xce, 0x17, + 0x5e, 0x84, 0xb3, 0x1b, 0x4d, 0x64, 0x8b, 0x21, + 0x3a, 0x55, 0x75, 0x27, 0x31, 0x48, 0x5e, 0x2e, + 0x2d, 0x3c, 0x55, 0x33, 0x28, 0x35, 0x47, 0x39, + 0x20, 0x30, 0x40, 0x3f, 0x1e, 0x29, 0x38, 0x44, + 0x1c, 0x27, 0x35, 0x47, 0x1b, 0x25, 0x33, 0x4a, + 0x1b, 0x25, 0x33, 0x4a, 0x24, 0x2b, 0x31, 0x4b, + 0x9d, 0x54, 0x0b, 0xb1, 0xb1, 0x58, 0x02, 0xfe, + 0x7c, 0x49, 0x1b, 0x6e, 0x2c, 0x3a, 0x53, 0x34, + 0x30, 0x46, 0x5c, 0x2f, 0x39, 0x52, 0x72, 0x28, + 0x4d, 0x64, 0x8b, 0x21, 0x66, 0x8e, 0xc1, 0x19, + 0x68, 0x97, 0xcf, 0x18, 0x68, 0x97, 0xcf, 0x18, + 0x68, 0x97, 0xcf, 0x18, 0x68, 0x97, 0xcf, 0x18, + 0x68, 0x97, 0xcf, 0x18, 0x68, 0x97, 0xcf, 0x18, + 0x68, 0x97, 0xcf, 0x18, 0x68, 0x97, 0xcf, 0x18, + 0x68, 0x97, 0xcf, 0x18, 0x68, 0x97, 0xcf, 0x18, + 0x68, 0x97, 0xcf, 0x18, 0x68, 0x97, 0xcf, 0x18, + 0x68, 0x97, 0xcf, 0x18, 0x68, 0x97, 0xcf, 0x18, + 0x68, 0x97, 0xcf, 0x18, 0x68, 0x97, 0xcf, 0x18, + 0x6c, 0x9b, 0xd1, 0x18, 0x6c, 0x9b, 0xd1, 0x18, + 0x52, 0x7b, 0x9c, 0x1f, 0x3c, 0x5d, 0x7f, 0x26, + 0x31, 0x4d, 0x63, 0x2e, 0x2c, 0x3f, 0x58, 0x34, + 0x22, 0x38, 0x49, 0x3b, 0xa3, 0x53, 0x07, 0xbe, + 0xde, 0x89, 0x37, 0xfe, 0xef, 0x9b, 0x4a, 0xff, + 0xd1, 0x7c, 0x29, 0xfa, 0xb0, 0x59, 0x05, 0xf1, + 0x5e, 0x3c, 0x1b, 0x70, 0x1c, 0x2b, 0x39, 0x47, + 0x1f, 0x2f, 0x3e, 0x41, 0x27, 0x39, 0x4a, 0x3a, + 0x2d, 0x41, 0x5a, 0x33, 0x33, 0x4f, 0x66, 0x2d, + 0x3c, 0x5d, 0x7f, 0x26, 0x5b, 0x88, 0xb6, 0x1c, + 0x6c, 0x9b, 0xd1, 0x18, 0x6c, 0x9b, 0xd1, 0x18, + 0x69, 0x9e, 0xd2, 0x19, 0x69, 0x9e, 0xd2, 0x19, + 0x69, 0x9e, 0xd2, 0x19, 0x69, 0x9e, 0xd2, 0x19, + 0x69, 0x9e, 0xd2, 0x19, 0x69, 0x9e, 0xd2, 0x19, + 0x69, 0x9e, 0xd2, 0x19, 0x69, 0x9e, 0xd2, 0x19, + 0x69, 0x9e, 0xd2, 0x19, 0x69, 0x9e, 0xd2, 0x19, + 0x69, 0x9e, 0xd2, 0x19, 0x69, 0x9e, 0xd2, 0x19, + 0x69, 0x9e, 0xd2, 0x19, 0x69, 0x9e, 0xd2, 0x19, + 0x69, 0x9e, 0xd2, 0x19, 0x55, 0x7f, 0xb2, 0x1e, + 0x46, 0x63, 0x8d, 0x24, 0x36, 0x55, 0x73, 0x2a, + 0x2f, 0x45, 0x64, 0x30, 0x29, 0x3c, 0x53, 0x37, + 0x21, 0x36, 0x4b, 0x3d, 0x1e, 0x2e, 0x41, 0x42, + 0x1c, 0x2a, 0x3c, 0x48, 0x1e, 0x28, 0x35, 0x4c, + 0x22, 0x28, 0x2f, 0x52, 0xab, 0x57, 0x04, 0xe2, + 0xdf, 0x9e, 0x4e, 0xfd, 0xc1, 0x72, 0x1d, 0xf7, + 0x9f, 0x56, 0x0d, 0xb2, 0x26, 0x3c, 0x4d, 0x3b, + 0x2f, 0x42, 0x55, 0x36, 0x35, 0x4a, 0x64, 0x30, + 0x3e, 0x5d, 0x7c, 0x29, 0x52, 0x70, 0x96, 0x22, + 0x6d, 0x99, 0xcc, 0x1a, 0x6d, 0x99, 0xcc, 0x1a, + 0x6d, 0x99, 0xcc, 0x1a, 0x6d, 0x99, 0xcc, 0x1a, + 0x6d, 0x99, 0xcc, 0x1a, 0x6d, 0x99, 0xcc, 0x1a, + 0x6d, 0x99, 0xcc, 0x1a, 0x6d, 0x99, 0xcc, 0x1a, + 0x6d, 0x99, 0xcc, 0x1a, 0x6d, 0x99, 0xcc, 0x1a, + 0x6d, 0x99, 0xcc, 0x1a, 0x6a, 0x9c, 0xcd, 0x1b, + 0x6a, 0x9c, 0xcd, 0x1b, 0x6a, 0x9c, 0xcd, 0x1b, + 0x6a, 0x9c, 0xcd, 0x1b, 0x6a, 0x9c, 0xcd, 0x1b, + 0x5a, 0x8b, 0xb4, 0x1f, 0x4b, 0x6e, 0x90, 0x25, + 0x3b, 0x5e, 0x76, 0x2b, 0x34, 0x4e, 0x68, 0x31, + 0x2e, 0x45, 0x58, 0x37, 0x26, 0x3f, 0x50, 0x3c, + 0x22, 0x36, 0x45, 0x42, 0x20, 0x32, 0x40, 0x47, + 0x1f, 0x2c, 0x3a, 0x4a, 0x1d, 0x2b, 0x38, 0x4d, + 0x1d, 0x2b, 0x38, 0x4d, 0x1f, 0x2c, 0x3a, 0x4a, + 0x20, 0x32, 0x40, 0x47, 0x22, 0x36, 0x45, 0x42, + 0x25, 0x3a, 0x4f, 0x3d, 0x34, 0x45, 0x53, 0x39, + 0x34, 0x4e, 0x68, 0x31, 0x3b, 0x5e, 0x76, 0x2b, + 0x4d, 0x6a, 0x94, 0x24, 0x64, 0x91, 0xc8, 0x1c, + 0x67, 0x98, 0xcf, 0x1b, 0x67, 0x98, 0xcf, 0x1b, + 0x67, 0x98, 0xcf, 0x1b, 0x67, 0x98, 0xcf, 0x1b, + 0x67, 0x98, 0xcf, 0x1b, 0x67, 0x98, 0xcf, 0x1b, + 0x67, 0x98, 0xcf, 0x1b, 0x67, 0x98, 0xcf, 0x1b, + 0x67, 0x98, 0xcf, 0x1b, 0x67, 0x98, 0xcf, 0x1b, + 0x67, 0x98, 0xcf, 0x1b, 0x67, 0x98, 0xcf, 0x1b, + 0x67, 0x98, 0xcf, 0x1b, 0x67, 0x98, 0xcf, 0x1b, + 0x67, 0x98, 0xcf, 0x1b, 0x67, 0x98, 0xcf, 0x1b, + 0x5d, 0x88, 0xbb, 0x1e, 0x4b, 0x67, 0x90, 0x25, + 0x3c, 0x5b, 0x7f, 0x2a, 0x35, 0x4a, 0x6a, 0x30, + 0x2e, 0x40, 0x58, 0x37, 0x29, 0x3e, 0x53, 0x3d, + 0x26, 0x36, 0x49, 0x42, 0x23, 0x31, 0x43, 0x48, + 0x22, 0x2c, 0x3d, 0x4b, 0x1d, 0x2a, 0x3a, 0x4e, + 0x1d, 0x2a, 0x3a, 0x4e, 0x20, 0x2d, 0x3a, 0x4d, + 0x98, 0x53, 0x0e, 0xaa, 0xb1, 0x58, 0x02, 0xfe, + 0x83, 0x4e, 0x1b, 0x7c, 0x2d, 0x44, 0x5b, 0x38, + 0x38, 0x4c, 0x6b, 0x32, 0x3e, 0x5a, 0x77, 0x2d, + 0x49, 0x6b, 0x93, 0x26, 0x69, 0x95, 0xca, 0x1d, + 0x6b, 0x9a, 0xd0, 0x1c, 0x6b, 0x9a, 0xd0, 0x1c, + 0x6b, 0x9a, 0xd0, 0x1c, 0x6b, 0x9a, 0xd0, 0x1c, + 0x6b, 0x9a, 0xd0, 0x1c, 0x6b, 0x9a, 0xd0, 0x1c, + 0x6b, 0x9a, 0xd0, 0x1c, 0x69, 0x96, 0xd1, 0x1d, + 0x69, 0x96, 0xd1, 0x1d, 0x69, 0x96, 0xd1, 0x1d, + 0x69, 0x96, 0xd1, 0x1d, 0x69, 0x96, 0xd1, 0x1d, + 0x69, 0x96, 0xd1, 0x1d, 0x69, 0x96, 0xd1, 0x1d, + 0x69, 0x96, 0xd1, 0x1d, 0x69, 0x96, 0xd1, 0x1d, + 0x69, 0x96, 0xd1, 0x1d, 0x69, 0x96, 0xd1, 0x1d, + 0x55, 0x71, 0xa2, 0x24, 0x41, 0x5e, 0x82, 0x2b, + 0x38, 0x4c, 0x70, 0x32, 0x32, 0x44, 0x5f, 0x38, + 0x27, 0x37, 0x4f, 0x40, 0xa3, 0x53, 0x09, 0xbf, + 0xde, 0x89, 0x37, 0xfe, 0xef, 0x9b, 0x4a, 0xff, + 0xd1, 0x7c, 0x29, 0xfa, 0xb0, 0x59, 0x05, 0xf1, + 0x5d, 0x3c, 0x21, 0x72, 0x22, 0x2f, 0x40, 0x4b, + 0x28, 0x36, 0x48, 0x46, 0x2b, 0x3b, 0x4f, 0x40, + 0x32, 0x48, 0x5f, 0x38, 0x3d, 0x51, 0x70, 0x32, + 0x47, 0x64, 0x88, 0x2b, 0x61, 0x87, 0xb4, 0x22, + 0x6c, 0x99, 0xcc, 0x1e, 0x6c, 0x99, 0xcc, 0x1e, + 0x6c, 0x99, 0xcc, 0x1e, 0x6c, 0x99, 0xcc, 0x1e, + 0x6c, 0x99, 0xcc, 0x1e, 0x6c, 0x99, 0xcc, 0x1e, + 0x6c, 0x99, 0xcc, 0x1e, 0x6c, 0x99, 0xcc, 0x1e, + 0x6c, 0x99, 0xcc, 0x1e, 0x6c, 0x99, 0xcc, 0x1e, + 0x70, 0x9f, 0xcf, 0x0c, 0x70, 0x9f, 0xcf, 0x0c, + 0x70, 0x9f, 0xcf, 0x0c, 0x70, 0x9f, 0xcf, 0x0c, + 0x70, 0x9f, 0xcf, 0x0c, 0x70, 0x9f, 0xcf, 0x0c, + 0x70, 0x9f, 0xcf, 0x0c, 0x70, 0x9f, 0xcf, 0x0c, + 0x62, 0x89, 0xc4, 0x0d, 0x3f, 0x59, 0x7f, 0x14, + 0x31, 0x44, 0x58, 0x1a, 0x29, 0x31, 0x4a, 0x1f, + 0x23, 0x2a, 0x3f, 0x24, 0x18, 0x25, 0x37, 0x29, + 0x17, 0x23, 0x35, 0x2b, 0x15, 0x25, 0x30, 0x2f, + 0x15, 0x25, 0x2f, 0x30, 0x58, 0x3a, 0x1a, 0x4a, + 0xb1, 0x5a, 0x04, 0xf3, 0x99, 0x51, 0x0b, 0x8d, + 0x18, 0x2b, 0x3e, 0x29, 0x1a, 0x2e, 0x43, 0x26, + 0x26, 0x36, 0x4d, 0x21, 0x31, 0x4e, 0x62, 0x1a, + 0x46, 0x71, 0x9b, 0x12, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x71, 0x9c, 0xd5, 0x0d, 0x71, 0x9c, 0xd5, 0x0d, + 0x71, 0x9c, 0xd5, 0x0d, 0x71, 0x9c, 0xd5, 0x0d, + 0x71, 0x9c, 0xd5, 0x0d, 0x6d, 0x91, 0xc8, 0x0e, + 0x48, 0x61, 0x85, 0x15, 0x38, 0x4b, 0x5e, 0x1b, + 0x2f, 0x37, 0x4f, 0x20, 0x22, 0x30, 0x44, 0x25, + 0x1f, 0x2b, 0x3e, 0x29, 0x1c, 0x28, 0x39, 0x2c, + 0x1b, 0x25, 0x30, 0x2f, 0x1a, 0x25, 0x2f, 0x30, + 0x1a, 0x25, 0x2f, 0x30, 0x1b, 0x25, 0x30, 0x2f, + 0x1c, 0x28, 0x39, 0x2c, 0x1f, 0x2b, 0x3e, 0x29, + 0x21, 0x2e, 0x43, 0x26, 0x2e, 0x36, 0x4d, 0x21, + 0x3a, 0x4e, 0x62, 0x1a, 0x55, 0x71, 0x9b, 0x12, + 0x71, 0x9c, 0xd5, 0x0d, 0x6b, 0xa1, 0xc9, 0x0e, + 0x6b, 0xa1, 0xc9, 0x0e, 0x6b, 0xa1, 0xc9, 0x0e, + 0x6b, 0xa1, 0xc9, 0x0e, 0x6b, 0xa1, 0xc9, 0x0e, + 0x6b, 0xa1, 0xc9, 0x0e, 0x6b, 0xa1, 0xc9, 0x0e, + 0x6b, 0xa1, 0xc9, 0x0e, 0x6b, 0xa1, 0xc9, 0x0e, + 0x6b, 0xa1, 0xc9, 0x0e, 0x6b, 0xa1, 0xc9, 0x0e, + 0x6b, 0xa1, 0xc9, 0x0e, 0x6b, 0xa1, 0xc9, 0x0e, + 0x6b, 0xa1, 0xc9, 0x0e, 0x6b, 0xa1, 0xc9, 0x0e, + 0x6b, 0xa1, 0xc9, 0x0e, 0x6b, 0xa1, 0xc9, 0x0e, + 0x6b, 0xa1, 0xc9, 0x0e, 0x66, 0x99, 0xbb, 0x0f, + 0x45, 0x68, 0x7f, 0x16, 0x36, 0x48, 0x5b, 0x1c, + 0x2e, 0x3d, 0x4d, 0x21, 0x27, 0x34, 0x47, 0x27, + 0x23, 0x2f, 0x41, 0x2b, 0x21, 0x2c, 0x37, 0x2e, + 0x1f, 0x29, 0x34, 0x31, 0x1e, 0x28, 0x33, 0x32, + 0x1e, 0x28, 0x33, 0x32, 0x1f, 0x29, 0x34, 0x31, + 0x21, 0x2c, 0x37, 0x2e, 0x6e, 0x45, 0x1e, 0x4c, + 0x27, 0x34, 0x47, 0x27, 0x2b, 0x3a, 0x50, 0x23, + 0x3f, 0x51, 0x64, 0x1c, 0x59, 0x72, 0x99, 0x14, + 0x73, 0x99, 0xcc, 0x0f, 0x73, 0x99, 0xcc, 0x0f, + 0x73, 0x99, 0xcc, 0x0f, 0x73, 0x99, 0xcc, 0x0f, + 0x73, 0x99, 0xcc, 0x0f, 0x73, 0x99, 0xcc, 0x0f, + 0x73, 0x99, 0xcc, 0x0f, 0x73, 0x99, 0xcc, 0x0f, + 0x73, 0x99, 0xcc, 0x0f, 0x73, 0x99, 0xcc, 0x0f, + 0x6d, 0x9e, 0xce, 0x10, 0x6d, 0x9e, 0xce, 0x10, + 0x6d, 0x9e, 0xce, 0x10, 0x6d, 0x9e, 0xce, 0x10, + 0x6d, 0x9e, 0xce, 0x10, 0x6d, 0x9e, 0xce, 0x10, + 0x6d, 0x9e, 0xce, 0x10, 0x6d, 0x9e, 0xce, 0x10, + 0x6d, 0x9e, 0xce, 0x10, 0x6d, 0x9e, 0xce, 0x10, + 0x5d, 0x86, 0xae, 0x13, 0x44, 0x62, 0x75, 0x1a, + 0x36, 0x45, 0x5c, 0x21, 0x27, 0x3a, 0x4e, 0x27, + 0x46, 0x3c, 0x2e, 0x39, 0xb0, 0x57, 0x00, 0xf4, + 0xb4, 0x5e, 0x09, 0xf8, 0xb0, 0x57, 0x01, 0xe8, + 0x91, 0x4d, 0x09, 0x98, 0x3f, 0x2d, 0x22, 0x4b, + 0x1a, 0x23, 0x30, 0x3a, 0x1c, 0x25, 0x33, 0x36, + 0x1e, 0x28, 0x38, 0x32, 0x22, 0x2e, 0x3f, 0x2c, + 0x28, 0x35, 0x50, 0x26, 0x37, 0x3f, 0x5f, 0x20, + 0x4d, 0x63, 0x90, 0x17, 0x68, 0x97, 0xd1, 0x10, + 0x68, 0x97, 0xd1, 0x10, 0x68, 0x97, 0xd1, 0x10, + 0x68, 0x97, 0xd1, 0x10, 0x68, 0x97, 0xd1, 0x10, + 0x68, 0x97, 0xd1, 0x10, 0x68, 0x97, 0xd1, 0x10, + 0x68, 0x97, 0xd1, 0x10, 0x68, 0x97, 0xd1, 0x10, + 0x68, 0x97, 0xd1, 0x10, 0x68, 0x97, 0xd1, 0x10, + 0x68, 0x97, 0xd1, 0x10, 0x68, 0x97, 0xd1, 0x10, + 0x68, 0x97, 0xd1, 0x10, 0x68, 0x97, 0xd1, 0x10, + 0x68, 0x97, 0xd1, 0x10, 0x68, 0x97, 0xd1, 0x10, + 0x68, 0x97, 0xd1, 0x10, 0x6f, 0x9b, 0xd3, 0x11, + 0x51, 0x73, 0xa2, 0x16, 0x3f, 0x5b, 0x76, 0x1c, + 0x34, 0x43, 0x61, 0x22, 0x27, 0x3a, 0x55, 0x27, + 0x22, 0x34, 0x45, 0x2c, 0x1f, 0x2e, 0x3e, 0x31, + 0x1d, 0x2c, 0x3a, 0x34, 0x1b, 0x25, 0x37, 0x37, + 0x1b, 0x24, 0x36, 0x38, 0x56, 0x38, 0x20, 0x51, + 0xb0, 0x58, 0x02, 0xf4, 0x96, 0x51, 0x0c, 0x91, + 0x20, 0x30, 0x41, 0x2f, 0x23, 0x35, 0x47, 0x2b, + 0x28, 0x3c, 0x57, 0x26, 0x37, 0x47, 0x67, 0x20, + 0x4d, 0x6e, 0x9b, 0x17, 0x6f, 0x9b, 0xd3, 0x11, + 0x6f, 0x9b, 0xd3, 0x11, 0x6f, 0x9b, 0xd3, 0x11, + 0x6f, 0x9b, 0xd3, 0x11, 0x6a, 0x9f, 0xca, 0x12, + 0x6a, 0x9f, 0xca, 0x12, 0x6a, 0x9f, 0xca, 0x12, + 0x6a, 0x9f, 0xca, 0x12, 0x6a, 0x9f, 0xca, 0x12, + 0x6a, 0x9f, 0xca, 0x12, 0x6a, 0x9f, 0xca, 0x12, + 0x6a, 0x9f, 0xca, 0x12, 0x6a, 0x9f, 0xca, 0x12, + 0x6a, 0x9f, 0xca, 0x12, 0x6a, 0x9f, 0xca, 0x12, + 0x6a, 0x9f, 0xca, 0x12, 0x6a, 0x9f, 0xca, 0x12, + 0x6a, 0x9f, 0xca, 0x12, 0x5d, 0x93, 0xbb, 0x13, + 0x47, 0x70, 0x8e, 0x19, 0x37, 0x4f, 0x67, 0x20, + 0x29, 0x44, 0x59, 0x25, 0x25, 0x3e, 0x50, 0x29, + 0x21, 0x37, 0x42, 0x2e, 0x1f, 0x34, 0x3e, 0x31, + 0x1e, 0x2d, 0x3c, 0x33, 0x1d, 0x2c, 0x3a, 0x34, + 0x21, 0x2b, 0x3e, 0x35, 0x22, 0x2c, 0x3f, 0x34, + 0x23, 0x33, 0x42, 0x32, 0x25, 0x36, 0x46, 0x2f, + 0x29, 0x3b, 0x4d, 0x2b, 0x2e, 0x43, 0x5d, 0x26, + 0x3f, 0x4f, 0x6f, 0x20, 0x55, 0x74, 0x9f, 0x18, + 0x70, 0x99, 0xcc, 0x13, 0x70, 0x99, 0xcc, 0x13, + 0x70, 0x99, 0xcc, 0x13, 0x70, 0x99, 0xcc, 0x13, + 0x70, 0x99, 0xcc, 0x13, 0x70, 0x99, 0xcc, 0x13, + 0x70, 0x99, 0xcc, 0x13, 0x70, 0x99, 0xcc, 0x13, + 0x70, 0x99, 0xcc, 0x13, 0x70, 0x99, 0xcc, 0x13, + 0x70, 0x99, 0xcc, 0x13, 0x70, 0x99, 0xcc, 0x13, + 0x70, 0x99, 0xcc, 0x13, 0x70, 0x99, 0xcc, 0x13, + 0x6c, 0x9d, 0xce, 0x13, 0x6c, 0x9d, 0xce, 0x13, + 0x6c, 0x9d, 0xce, 0x13, 0x6c, 0x9d, 0xce, 0x13, + 0x6c, 0x9d, 0xce, 0x13, 0x66, 0x99, 0xbf, 0x14, + 0x4e, 0x75, 0x93, 0x1a, 0x3d, 0x55, 0x6c, 0x21, + 0x2e, 0x49, 0x5d, 0x26, 0x2a, 0x42, 0x55, 0x2a, + 0x26, 0x3c, 0x48, 0x2e, 0x23, 0x33, 0x42, 0x32, + 0x22, 0x31, 0x3f, 0x34, 0x21, 0x30, 0x3e, 0x35, + 0x21, 0x30, 0x3e, 0x35, 0x22, 0x31, 0x3f, 0x34, + 0x23, 0x33, 0x42, 0x32, 0x6c, 0x4a, 0x22, 0x50, + 0x29, 0x41, 0x4d, 0x2b, 0x2e, 0x49, 0x5d, 0x26, + 0x3f, 0x57, 0x6f, 0x20, 0x55, 0x7f, 0x9f, 0x18, + 0x6c, 0x9d, 0xce, 0x13, 0x68, 0x97, 0xd0, 0x14, + 0x68, 0x97, 0xd0, 0x14, 0x68, 0x97, 0xd0, 0x14, + 0x68, 0x97, 0xd0, 0x14, 0x68, 0x97, 0xd0, 0x14, + 0x68, 0x97, 0xd0, 0x14, 0x68, 0x97, 0xd0, 0x14, + 0x68, 0x97, 0xd0, 0x14, 0x68, 0x97, 0xd0, 0x14, + 0x68, 0x97, 0xd0, 0x14, 0x68, 0x97, 0xd0, 0x14, + 0x68, 0x97, 0xd0, 0x14, 0x68, 0x97, 0xd0, 0x14, + 0x68, 0x97, 0xd0, 0x14, 0x68, 0x97, 0xd0, 0x14, + 0x68, 0x97, 0xd0, 0x14, 0x68, 0x97, 0xd0, 0x14, + 0x68, 0x97, 0xd0, 0x14, 0x68, 0x97, 0xd0, 0x14, + 0x58, 0x85, 0xb1, 0x17, 0x44, 0x5d, 0x7f, 0x1e, + 0x30, 0x4b, 0x67, 0x25, 0x2e, 0x45, 0x56, 0x2c, + 0x49, 0x40, 0x3b, 0x3c, 0xb0, 0x57, 0x00, 0xf4, + 0xb4, 0x5e, 0x09, 0xf8, 0xb0, 0x58, 0x01, 0xe8, + 0x90, 0x4e, 0x0c, 0x9a, 0x3e, 0x34, 0x29, 0x4e, + 0x1c, 0x2d, 0x39, 0x3e, 0x22, 0x2f, 0x3c, 0x3b, + 0x25, 0x33, 0x46, 0x36, 0x29, 0x39, 0x4e, 0x31, + 0x2f, 0x47, 0x58, 0x2b, 0x37, 0x52, 0x6e, 0x25, + 0x55, 0x7a, 0xa0, 0x1b, 0x6d, 0x9b, 0xd1, 0x15, + 0x6d, 0x9b, 0xd1, 0x15, 0x6d, 0x9b, 0xd1, 0x15, + 0x6d, 0x9b, 0xd1, 0x15, 0x6d, 0x9b, 0xd1, 0x15, + 0x6d, 0x9b, 0xd1, 0x15, 0x6d, 0x9b, 0xd1, 0x15, + 0x6d, 0x9b, 0xd1, 0x15, 0x6d, 0x9b, 0xd1, 0x15, + 0x6a, 0x9e, 0xd3, 0x15, 0x6a, 0x9e, 0xd3, 0x15, + 0x80, 0x80, 0xbf, 0x03, 0x80, 0x80, 0xbf, 0x03, + 0x80, 0x80, 0xbf, 0x03, 0x80, 0x80, 0xbf, 0x03, + 0x80, 0x80, 0xbf, 0x03, 0x80, 0x80, 0xbf, 0x03, + 0x80, 0x80, 0xbf, 0x03, 0x66, 0x99, 0xcc, 0x04, + 0x66, 0x99, 0xcc, 0x04, 0x66, 0x99, 0xcc, 0x04, + 0x66, 0x99, 0xcc, 0x04, 0x48, 0x48, 0x6d, 0x07, + 0x2e, 0x2e, 0x45, 0x0b, 0x24, 0x24, 0x36, 0x0e, + 0x1c, 0x1c, 0x2a, 0x12, 0x19, 0x19, 0x26, 0x14, + 0x17, 0x17, 0x22, 0x16, 0x18, 0x18, 0x24, 0x15, + 0x5e, 0x35, 0x15, 0x21, 0x1f, 0x1f, 0x2f, 0x10, + 0x27, 0x27, 0x3a, 0x0d, 0x3f, 0x3f, 0x5f, 0x08, + 0x66, 0x66, 0x99, 0x05, 0x66, 0x99, 0xcc, 0x04, + 0x66, 0x99, 0xcc, 0x04, 0x66, 0x99, 0xcc, 0x04, + 0x66, 0x99, 0xcc, 0x04, 0x66, 0x99, 0xcc, 0x04, + 0x66, 0x99, 0xcc, 0x04, 0x66, 0x99, 0xcc, 0x04, + 0x80, 0xaa, 0xd5, 0x04, 0x80, 0xaa, 0xd5, 0x04, + 0x80, 0xaa, 0xd5, 0x04, 0x80, 0xaa, 0xd5, 0x04, + 0x80, 0xaa, 0xd5, 0x04, 0x80, 0xaa, 0xd5, 0x04, + 0x80, 0xaa, 0xd5, 0x04, 0x80, 0xaa, 0xd5, 0x04, + 0x80, 0xaa, 0xd5, 0x04, 0x80, 0xaa, 0xd5, 0x04, + 0x80, 0xaa, 0xd5, 0x04, 0x80, 0xaa, 0xd5, 0x04, + 0x80, 0xaa, 0xd5, 0x04, 0x80, 0xaa, 0xd5, 0x04, + 0x80, 0xaa, 0xd5, 0x04, 0x80, 0xaa, 0xd5, 0x04, + 0x48, 0x6d, 0x6d, 0x07, 0x2e, 0x45, 0x45, 0x0b, + 0x24, 0x36, 0x36, 0x0e, 0x1c, 0x2a, 0x2a, 0x12, + 0x19, 0x26, 0x26, 0x14, 0x17, 0x22, 0x22, 0x16, + 0x17, 0x22, 0x2e, 0x16, 0x19, 0x26, 0x33, 0x14, + 0x1e, 0x2d, 0x3c, 0x11, 0x24, 0x36, 0x48, 0x0e, + 0x38, 0x55, 0x71, 0x09, 0x55, 0x7f, 0xaa, 0x06, + 0x6d, 0x92, 0xdb, 0x05, 0x6d, 0x92, 0xdb, 0x05, + 0x6d, 0x92, 0xdb, 0x05, 0x6d, 0x92, 0xdb, 0x05, + 0x6d, 0x92, 0xdb, 0x05, 0x6d, 0x92, 0xdb, 0x05, + 0x6d, 0x92, 0xdb, 0x05, 0x6d, 0x92, 0xdb, 0x05, + 0x6d, 0x92, 0xdb, 0x05, 0x6d, 0x92, 0xdb, 0x05, + 0x6d, 0x92, 0xdb, 0x05, 0x6d, 0x92, 0xdb, 0x05, + 0x6d, 0x92, 0xdb, 0x05, 0x6d, 0x92, 0xdb, 0x05, + 0x6d, 0x92, 0xdb, 0x05, 0x6d, 0x92, 0xdb, 0x05, + 0x6d, 0x92, 0xdb, 0x05, 0x80, 0x9f, 0xbf, 0x06, + 0x80, 0x9f, 0xbf, 0x06, 0x80, 0x9f, 0xbf, 0x06, + 0x80, 0x9f, 0xbf, 0x06, 0x80, 0x9f, 0xbf, 0x06, + 0x80, 0x9f, 0xbf, 0x06, 0x80, 0x9f, 0xbf, 0x06, + 0x55, 0x71, 0x71, 0x09, 0x3a, 0x4e, 0x4e, 0x0d, + 0x2f, 0x3f, 0x3f, 0x10, 0x26, 0x33, 0x33, 0x14, + 0x22, 0x2e, 0x2e, 0x16, 0x1f, 0x2a, 0x2a, 0x18, + 0x21, 0x2c, 0x2c, 0x17, 0x24, 0x30, 0x30, 0x15, + 0x2a, 0x38, 0x38, 0x12, 0x33, 0x44, 0x44, 0x0f, + 0x4c, 0x66, 0x66, 0x0a, 0x6d, 0x91, 0x91, 0x07, + 0x80, 0x9f, 0xbf, 0x06, 0x80, 0x9f, 0xbf, 0x06, + 0x80, 0x9f, 0xbf, 0x06, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x71, 0xaa, 0xc6, 0x07, + 0x71, 0xaa, 0xc6, 0x07, 0x5f, 0x9f, 0x9f, 0x08, + 0x33, 0x55, 0x55, 0x0f, 0x24, 0x3c, 0x3c, 0x15, + 0x1d, 0x27, 0x3a, 0x1a, 0x19, 0x22, 0x2a, 0x1e, + 0x16, 0x1e, 0x25, 0x22, 0x15, 0x1c, 0x23, 0x24, + 0x14, 0x1b, 0x22, 0x25, 0x14, 0x1b, 0x22, 0x25, + 0x15, 0x1c, 0x23, 0x24, 0x17, 0x1e, 0x26, 0x21, + 0x19, 0x22, 0x2a, 0x1e, 0x1e, 0x28, 0x3d, 0x19, + 0x28, 0x35, 0x50, 0x13, 0x45, 0x5c, 0x8b, 0x0b, + 0x66, 0x99, 0xcc, 0x07, 0x66, 0x99, 0xcc, 0x07, + 0x66, 0x99, 0xcc, 0x07, 0x66, 0x99, 0xcc, 0x07, + 0x66, 0x99, 0xcc, 0x07, 0x66, 0x99, 0xcc, 0x07, + 0x66, 0x99, 0xcc, 0x07, 0x66, 0x99, 0xcc, 0x07, + 0x66, 0x99, 0xcc, 0x07, 0x66, 0x99, 0xcc, 0x07, + 0x74, 0xa2, 0xd1, 0x08, 0x74, 0xa2, 0xd1, 0x08, + 0x74, 0xa2, 0xd1, 0x08, 0x74, 0xa2, 0xd1, 0x08, + 0x74, 0xa2, 0xd1, 0x08, 0x74, 0xa2, 0xd1, 0x08, + 0x74, 0xa2, 0xd1, 0x08, 0x74, 0xa2, 0xd1, 0x08, + 0x74, 0xa2, 0xd1, 0x08, 0x74, 0xa2, 0xd1, 0x08, + 0x74, 0xa2, 0xd1, 0x08, 0x71, 0x8d, 0xc6, 0x09, + 0x55, 0x6a, 0x94, 0x0c, 0x38, 0x46, 0x63, 0x12, + 0x2c, 0x37, 0x4d, 0x17, 0x27, 0x31, 0x3a, 0x1a, + 0x23, 0x2b, 0x34, 0x1d, 0x20, 0x29, 0x31, 0x1f, + 0x1f, 0x27, 0x2f, 0x20, 0x1f, 0x27, 0x2f, 0x20, + 0x51, 0x38, 0x20, 0x2c, 0x24, 0x2d, 0x36, 0x1c, + 0x28, 0x33, 0x47, 0x19, 0x33, 0x3f, 0x66, 0x14, + 0x48, 0x5b, 0x91, 0x0e, 0x66, 0x7f, 0xcc, 0x0a, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x6a, 0x95, 0xd5, 0x09, 0x6a, 0x95, 0xd5, 0x09, + 0x76, 0x9d, 0xd8, 0x0a, 0x76, 0x9d, 0xd8, 0x0a, + 0x62, 0x75, 0x9c, 0x0d, 0x4b, 0x5a, 0x78, 0x11, + 0x3f, 0x4c, 0x66, 0x14, 0x37, 0x42, 0x58, 0x17, + 0x33, 0x3d, 0x47, 0x19, 0x2f, 0x38, 0x42, 0x1b, + 0x31, 0x3a, 0x44, 0x1a, 0x35, 0x3f, 0x55, 0x18, + 0x39, 0x45, 0x5c, 0x16, 0x43, 0x50, 0x6b, 0x13, + 0x5b, 0x6d, 0x91, 0x0e, 0x73, 0x8b, 0xb9, 0x0b, + 0x76, 0x9d, 0xd8, 0x0a, 0x76, 0x9d, 0xd8, 0x0a, + 0x76, 0x9d, 0xd8, 0x0a, 0x76, 0x9d, 0xd8, 0x0a, + 0x76, 0x9d, 0xd8, 0x0a, 0x76, 0x9d, 0xd8, 0x0a, + 0x76, 0x9d, 0xd8, 0x0a, 0x76, 0x9d, 0xd8, 0x0a, + 0x6d, 0xa4, 0xc8, 0x0a, 0x6d, 0xa4, 0xc8, 0x0a, + 0x6d, 0xa4, 0xc8, 0x0a, 0x6d, 0xa4, 0xc8, 0x0a, + 0x6d, 0xa4, 0xc8, 0x0a, 0x6d, 0xa4, 0xc8, 0x0a, + 0x6d, 0xa4, 0xc8, 0x0a, 0x6d, 0xa4, 0xc8, 0x0a, + 0x6d, 0xa4, 0xc8, 0x0a, 0x6d, 0xa4, 0xc8, 0x0a, + 0x6d, 0xa4, 0xc8, 0x0a, 0x6d, 0xa4, 0xc8, 0x0a, + 0x6d, 0xa4, 0xc8, 0x0a, 0x6d, 0xa4, 0xc8, 0x0a, + 0x6d, 0xa4, 0xc8, 0x0a, 0x6d, 0xa4, 0xc8, 0x0a, + 0x4e, 0x75, 0x9c, 0x0d, 0x3f, 0x5f, 0x7f, 0x10, + 0x33, 0x4c, 0x66, 0x14, 0x2e, 0x45, 0x5c, 0x16, + 0x28, 0x3d, 0x47, 0x19, 0x25, 0x38, 0x42, 0x1b, + 0x27, 0x3a, 0x44, 0x1a, 0x33, 0x47, 0x51, 0x19, + 0x39, 0x51, 0x68, 0x16, 0x3f, 0x59, 0x72, 0x14, + 0x4f, 0x6f, 0x8f, 0x10, 0x6a, 0x94, 0xbf, 0x0c, + 0x66, 0x99, 0xcc, 0x0b, 0x66, 0x99, 0xcc, 0x0b, + 0x66, 0x99, 0xcc, 0x0b, 0x66, 0x99, 0xcc, 0x0b, + 0x66, 0x99, 0xcc, 0x0b, 0x66, 0x99, 0xcc, 0x0b, + 0x66, 0x99, 0xcc, 0x0b, 0x66, 0x99, 0xcc, 0x0b, + 0x66, 0x99, 0xcc, 0x0b, 0x66, 0x99, 0xcc, 0x0b, + 0x66, 0x99, 0xcc, 0x0b, 0x66, 0x99, 0xcc, 0x0b, + 0x66, 0x99, 0xcc, 0x0b, 0x66, 0x99, 0xcc, 0x0b, + 0x66, 0x99, 0xcc, 0x0b, 0x66, 0x99, 0xcc, 0x0b, + 0x66, 0x99, 0xcc, 0x0b, 0x70, 0x9f, 0xcf, 0x0c, + 0x70, 0x9f, 0xcf, 0x0c, 0x70, 0x9f, 0xcf, 0x0c, + 0x70, 0x9f, 0xcf, 0x0c, 0x70, 0x9f, 0xcf, 0x0c, + 0x70, 0x9f, 0xcf, 0x0c, 0x62, 0x89, 0xc4, 0x0d, + 0x3f, 0x59, 0x7f, 0x14, 0x33, 0x47, 0x5b, 0x19, + 0x29, 0x31, 0x4a, 0x1f, 0x24, 0x2b, 0x41, 0x23, + 0x1a, 0x27, 0x3a, 0x27, 0x18, 0x25, 0x37, 0x29, + 0x18, 0x24, 0x36, 0x2a, 0x18, 0x24, 0x36, 0x2a, + 0x18, 0x25, 0x37, 0x29, 0x1a, 0x28, 0x3c, 0x26, + 0x24, 0x2b, 0x41, 0x23, 0x2a, 0x33, 0x4c, 0x1e, + 0x37, 0x4d, 0x6e, 0x17, 0x4f, 0x6f, 0x9f, 0x10, + 0x70, 0x9f, 0xcf, 0x0c, 0x70, 0x9f, 0xcf, 0x0c, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x69, 0x96, 0xd2, 0x0d, 0x69, 0x96, 0xd2, 0x0d, + 0x00, 0x00, 0x28, 0x75, 0x75, 0x61, 0x79, 0x29, + 0x6c, 0x65, 0x62, 0x6c, 0x2d, 0x64, 0x69, 0x61, + 0x6c, 0x6f, 0x67, 0x2f, 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 +} }; + +static GStaticResource static_resource = { lebl_dialog_resource_data.data, sizeof (lebl_dialog_resource_data.data), NULL, NULL, NULL }; +extern GResource *lebl_dialog_get_resource (void); +GResource *lebl_dialog_get_resource (void) +{ + return g_static_resource_get_resource (&static_resource); +} +/* + If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and + destructors, in a sane way, including e.g. on library unload. If not you're on + your own. + + Some compilers need #pragma to handle this, which does not work with macros, + so the way you need to use this is (for constructors): + + #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA + #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(my_constructor) + #endif + G_DEFINE_CONSTRUCTOR(my_constructor) + static void my_constructor(void) { + ... + } + +*/ + +#ifndef __GTK_DOC_IGNORE__ + +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) + +#define G_HAS_CONSTRUCTORS 1 + +#define G_DEFINE_CONSTRUCTOR(_func) static void __attribute__((constructor)) _func (void); +#define G_DEFINE_DESTRUCTOR(_func) static void __attribute__((destructor)) _func (void); + +#elif defined (_MSC_VER) && (_MSC_VER >= 1500) +/* Visual studio 2008 and later has _Pragma */ + +#define G_HAS_CONSTRUCTORS 1 + +/* We do some weird things to avoid the constructors being optimized + * away on VS2015 if WholeProgramOptimization is enabled. First we + * make a reference to the array from the wrapper to make sure its + * references. Then we use a pragma to make sure the wrapper function + * symbol is always included at the link stage. Also, the symbols + * need to be extern (but not dllexport), even though they are not + * really used from another object file. + */ + +/* We need to account for differences between the mangling of symbols + * for Win32 (x86) and x64 programs, as symbols on Win32 are prefixed + * with an underscore but symbols on x64 are not. + */ +#ifdef _WIN64 +#define G_MSVC_SYMBOL_PREFIX "" +#else +#define G_MSVC_SYMBOL_PREFIX "_" +#endif + +#define G_DEFINE_CONSTRUCTOR(_func) G_MSVC_CTOR (_func, G_MSVC_SYMBOL_PREFIX) +#define G_DEFINE_DESTRUCTOR(_func) G_MSVC_DTOR (_func, G_MSVC_SYMBOL_PREFIX) + +#define G_MSVC_CTOR(_func,_sym_prefix) \ + static void _func(void); \ + extern int (* _array ## _func)(void); \ + int _func ## _wrapper(void) { _func(); g_slist_find (NULL, _array ## _func); return 0; } \ + __pragma(comment(linker,"/include:" _sym_prefix # _func "_wrapper")) \ + __pragma(section(".CRT$XCU",read)) \ + __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _wrapper; + +#define G_MSVC_DTOR(_func,_sym_prefix) \ + static void _func(void); \ + extern int (* _array ## _func)(void); \ + int _func ## _constructor(void) { atexit (_func); g_slist_find (NULL, _array ## _func); return 0; } \ + __pragma(comment(linker,"/include:" _sym_prefix # _func "_constructor")) \ + __pragma(section(".CRT$XCU",read)) \ + __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _constructor; + +#elif defined (_MSC_VER) + +#define G_HAS_CONSTRUCTORS 1 + +/* Pre Visual studio 2008 must use #pragma section */ +#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1 +#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1 + +#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \ + section(".CRT$XCU",read) +#define G_DEFINE_CONSTRUCTOR(_func) \ + static void _func(void); \ + static int _func ## _wrapper(void) { _func(); return 0; } \ + __declspec(allocate(".CRT$XCU")) static int (*p)(void) = _func ## _wrapper; + +#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \ + section(".CRT$XCU",read) +#define G_DEFINE_DESTRUCTOR(_func) \ + static void _func(void); \ + static int _func ## _constructor(void) { atexit (_func); return 0; } \ + __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _constructor; + +#elif defined(__SUNPRO_C) + +/* This is not tested, but i believe it should work, based on: + * https://opensource.apple.com/source/OpenSSL098/OpenSSL098-35/src/fips/fips_premain.c + */ + +#define G_HAS_CONSTRUCTORS 1 + +#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1 +#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1 + +#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \ + init(_func) +#define G_DEFINE_CONSTRUCTOR(_func) \ + static void _func(void); + +#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \ + fini(_func) +#define G_DEFINE_DESTRUCTOR(_func) \ + static void _func(void); + +#else + +/* constructors not supported for this compiler */ + +#endif + +#endif /* __GTK_DOC_IGNORE__ */ + +#ifdef G_HAS_CONSTRUCTORS + +#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA +#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(resource_constructor) +#endif +G_DEFINE_CONSTRUCTOR(resource_constructor) +#ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA +#pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(resource_destructor) +#endif +G_DEFINE_DESTRUCTOR(resource_destructor) + +#else +#warning "Constructor not supported on this compiler, linking in resources will not work" +#endif + +static void resource_constructor (void) +{ + g_static_resource_init (&static_resource); +} + +static void resource_destructor (void) +{ + g_static_resource_fini (&static_resource); +} diff --git a/app/dialogs/module-dialog.c b/app/dialogs/module-dialog.c new file mode 100644 index 0000000..be1a438 --- /dev/null +++ b/app/dialogs/module-dialog.c @@ -0,0 +1,526 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * module-dialog.c + * (C) 1999 Austin Donnelly <austin@gimp.org> + * (C) 2008 Sven Neumann <sven@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpmodule/gimpmodule.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimp-modules.h" + +#include "widgets/gimphelp-ids.h" + +#include "module-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_REFRESH 1 + +enum +{ + COLUMN_NAME, + COLUMN_ENABLED, + COLUMN_MODULE, + N_COLUMNS +}; + +enum +{ + INFO_AUTHOR, + INFO_VERSION, + INFO_DATE, + INFO_COPYRIGHT, + INFO_LOCATION, + N_INFOS +}; + +typedef struct _ModuleDialog ModuleDialog; + +struct _ModuleDialog +{ + Gimp *gimp; + + GimpModule *selected; + GtkListStore *list; + + GtkWidget *hint; + GtkWidget *table; + GtkWidget *label[N_INFOS]; + GtkWidget *error_box; + GtkWidget *error_label; +}; + + +/* local function prototypes */ + +static void dialog_response (GtkWidget *widget, + gint response_id, + ModuleDialog *private); +static void dialog_destroy_callback (GtkWidget *widget, + ModuleDialog *private); +static void dialog_select_callback (GtkTreeSelection *sel, + ModuleDialog *private); +static void dialog_enabled_toggled (GtkCellRendererToggle *celltoggle, + const gchar *path_string, + ModuleDialog *private); +static void make_list_item (gpointer data, + gpointer user_data); +static void dialog_info_add (GimpModuleDB *db, + GimpModule *module, + ModuleDialog *private); +static void dialog_info_remove (GimpModuleDB *db, + GimpModule *module, + ModuleDialog *private); +static void dialog_info_update (GimpModuleDB *db, + GimpModule *module, + ModuleDialog *private); +static void dialog_info_init (ModuleDialog *private, + GtkWidget *table); + + +/* public functions */ + +GtkWidget * +module_dialog_new (Gimp *gimp) +{ + ModuleDialog *private; + GtkWidget *dialog; + GtkWidget *vbox; + GtkWidget *sw; + GtkWidget *view; + GtkWidget *image; + GtkTreeSelection *sel; + GtkTreeIter iter; + GtkTreeViewColumn *col; + GtkCellRenderer *rend; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + private = g_slice_new0 (ModuleDialog); + + private->gimp = gimp; + + dialog = gimp_dialog_new (_("Module Manager"), + "gimp-modules", NULL, 0, + gimp_standard_help_func, GIMP_HELP_MODULE_DIALOG, + + _("_Refresh"), RESPONSE_REFRESH, + _("_Close"), GTK_RESPONSE_CLOSE, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_CLOSE, + RESPONSE_REFRESH, + -1); + + g_signal_connect (dialog, "response", + G_CALLBACK (dialog_response), + private); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + private->hint = gimp_hint_box_new (_("You will have to restart GIMP " + "for the changes to take effect.")); + gtk_box_pack_start (GTK_BOX (vbox), private->hint, FALSE, FALSE, 0); + + if (gimp->write_modulerc) + gtk_widget_show (private->hint); + + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0); + gtk_widget_set_size_request (sw, 124, 100); + gtk_widget_show (sw); + + private->list = gtk_list_store_new (N_COLUMNS, + G_TYPE_STRING, + G_TYPE_BOOLEAN, + GIMP_TYPE_MODULE); + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (private->list)); + g_object_unref (private->list); + + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); + + g_list_foreach (gimp->module_db->modules, make_list_item, private); + + rend = gtk_cell_renderer_toggle_new (); + + g_signal_connect (rend, "toggled", + G_CALLBACK (dialog_enabled_toggled), + private); + + col = gtk_tree_view_column_new (); + gtk_tree_view_column_pack_start (col, rend, FALSE); + gtk_tree_view_column_add_attribute (col, rend, "active", COLUMN_ENABLED); + + gtk_tree_view_append_column (GTK_TREE_VIEW (view), col); + + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), 1, + _("Module"), + gtk_cell_renderer_text_new (), + "text", COLUMN_NAME, + NULL); + + gtk_container_add (GTK_CONTAINER (sw), view); + gtk_widget_show (view); + + private->table = gtk_table_new (2, N_INFOS, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (private->table), 6); + gtk_box_pack_start (GTK_BOX (vbox), private->table, FALSE, FALSE, 0); + gtk_widget_show (private->table); + + private->error_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), private->error_box, FALSE, FALSE, 0); + + image = gtk_image_new_from_icon_name (GIMP_ICON_DIALOG_WARNING, + GTK_ICON_SIZE_BUTTON); + gtk_box_pack_start (GTK_BOX (private->error_box), image, FALSE, FALSE, 0); + gtk_widget_show (image); + + private->error_label = gtk_label_new (NULL); + gtk_label_set_xalign (GTK_LABEL (private->error_label), 0.0); + gtk_box_pack_start (GTK_BOX (private->error_box), + private->error_label, TRUE, TRUE, 0); + gtk_widget_show (private->error_label); + + dialog_info_init (private, private->table); + + dialog_info_update (gimp->module_db, private->selected, private); + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + + g_signal_connect (sel, "changed", + G_CALLBACK (dialog_select_callback), + private); + + if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (private->list), &iter)) + gtk_tree_selection_select_iter (sel, &iter); + + /* hook the GimpModuleDB signals so we can refresh the display + * appropriately. + */ + g_signal_connect (gimp->module_db, "add", + G_CALLBACK (dialog_info_add), + private); + g_signal_connect (gimp->module_db, "remove", + G_CALLBACK (dialog_info_remove), + private); + g_signal_connect (gimp->module_db, "module-modified", + G_CALLBACK (dialog_info_update), + private); + + g_signal_connect (dialog, "destroy", + G_CALLBACK (dialog_destroy_callback), + private); + + return dialog; +} + + +/* private functions */ + +static void +dialog_response (GtkWidget *widget, + gint response_id, + ModuleDialog *private) +{ + if (response_id == RESPONSE_REFRESH) + gimp_modules_refresh (private->gimp); + else + gtk_widget_destroy (widget); +} + +static void +dialog_destroy_callback (GtkWidget *widget, + ModuleDialog *private) +{ + g_signal_handlers_disconnect_by_func (private->gimp->module_db, + dialog_info_add, + private); + g_signal_handlers_disconnect_by_func (private->gimp->module_db, + dialog_info_remove, + private); + g_signal_handlers_disconnect_by_func (private->gimp->module_db, + dialog_info_update, + private); + + g_slice_free (ModuleDialog, private); +} + +static void +dialog_select_callback (GtkTreeSelection *sel, + ModuleDialog *private) +{ + GtkTreeIter iter; + + if (gtk_tree_selection_get_selected (sel, NULL, &iter)) + { + GimpModule *module; + + gtk_tree_model_get (GTK_TREE_MODEL (private->list), &iter, + COLUMN_MODULE, &module, -1); + + if (module) + g_object_unref (module); + + if (private->selected == module) + return; + + private->selected = module; + + dialog_info_update (private->gimp->module_db, private->selected, private); + } +} + +static void +dialog_enabled_toggled (GtkCellRendererToggle *celltoggle, + const gchar *path_string, + ModuleDialog *private) +{ + GtkTreePath *path; + GtkTreeIter iter; + GimpModule *module = NULL; + + path = gtk_tree_path_new_from_string (path_string); + + if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (private->list), &iter, path)) + { + g_warning ("%s: bad tree path?", G_STRFUNC); + return; + } + + gtk_tree_path_free (path); + + gtk_tree_model_get (GTK_TREE_MODEL (private->list), &iter, + COLUMN_MODULE, &module, + -1); + + if (module) + { + gimp_module_set_load_inhibit (module, ! module->load_inhibit); + g_object_unref (module); + + private->gimp->write_modulerc = TRUE; + gtk_widget_show (private->hint); + } +} + +static void +dialog_list_item_update (ModuleDialog *private, + GtkTreeIter *iter, + GimpModule *module) +{ + gtk_list_store_set (private->list, iter, + COLUMN_NAME, (module->info ? + gettext (module->info->purpose) : + gimp_filename_to_utf8 (module->filename)), + COLUMN_ENABLED, ! module->load_inhibit, + COLUMN_MODULE, module, + -1); +} + +static void +make_list_item (gpointer data, + gpointer user_data) +{ + GimpModule *module = data; + ModuleDialog *private = user_data; + GtkTreeIter iter; + + if (! private->selected) + private->selected = module; + + gtk_list_store_append (private->list, &iter); + + dialog_list_item_update (private, &iter, module); +} + +static void +dialog_info_add (GimpModuleDB *db, + GimpModule *module, + ModuleDialog *private) +{ + make_list_item (module, private); +} + +static void +dialog_info_remove (GimpModuleDB *db, + GimpModule *module, + ModuleDialog *private) +{ + GtkTreeIter iter; + + /* FIXME: Use gtk_list_store_foreach_remove when it becomes available */ + + if (! gtk_tree_model_get_iter_first (GTK_TREE_MODEL (private->list), &iter)) + return; + + do + { + GimpModule *this; + + gtk_tree_model_get (GTK_TREE_MODEL (private->list), &iter, + COLUMN_MODULE, &this, + -1); + + if (this) + g_object_unref (this); + + if (this == module) + { + gtk_list_store_remove (private->list, &iter); + return; + } + } + while (gtk_tree_model_iter_next (GTK_TREE_MODEL (private->list), &iter)); + + g_warning ("%s: Tried to remove a module not in the dialog's list.", + G_STRFUNC); +} + +static void +dialog_info_update (GimpModuleDB *db, + GimpModule *module, + ModuleDialog *private) +{ + GtkTreeModel *model = GTK_TREE_MODEL (private->list); + GtkTreeIter iter; + const gchar *text[N_INFOS] = { NULL, }; + gchar *location = NULL; + gboolean iter_valid; + gint i; + gboolean show_error; + + for (iter_valid = gtk_tree_model_get_iter_first (model, &iter); + iter_valid; + iter_valid = gtk_tree_model_iter_next (model, &iter)) + { + GimpModule *this; + + gtk_tree_model_get (model, &iter, + COLUMN_MODULE, &this, + -1); + if (this) + g_object_unref (this); + + if (this == module) + break; + } + + if (iter_valid) + dialog_list_item_update (private, &iter, module); + + /* only update the info if we're actually showing it */ + if (module != private->selected) + return; + + if (! module) + { + for (i = 0; i < N_INFOS; i++) + gtk_label_set_text (GTK_LABEL (private->label[i]), NULL); + + gtk_label_set_text (GTK_LABEL (private->error_label), NULL); + gtk_widget_hide (private->error_box); + + return; + } + + if (module->on_disk) + location = g_filename_display_name (module->filename); + + if (module->info) + { + text[INFO_AUTHOR] = module->info->author; + text[INFO_VERSION] = module->info->version; + text[INFO_DATE] = module->info->date; + text[INFO_COPYRIGHT] = module->info->copyright; + text[INFO_LOCATION] = module->on_disk ? location : _("Only in memory"); + } + else + { + text[INFO_LOCATION] = (module->on_disk ? + location : _("No longer available")); + } + + for (i = 0; i < N_INFOS; i++) + gtk_label_set_text (GTK_LABEL (private->label[i]), + text[i] ? text[i] : "--"); + g_free (location); + + /* Show errors */ + show_error = (module->state == GIMP_MODULE_STATE_ERROR && + module->last_module_error); + gtk_label_set_text (GTK_LABEL (private->error_label), + show_error ? module->last_module_error : NULL); + gtk_widget_set_visible (private->error_box, show_error); +} + +static void +dialog_info_init (ModuleDialog *private, + GtkWidget *table) +{ + GtkWidget *label; + gint i; + + const gchar * const text[] = + { + N_("Author:"), + N_("Version:"), + N_("Date:"), + N_("Copyright:"), + N_("Location:") + }; + + for (i = 0; i < G_N_ELEMENTS (text); i++) + { + label = gtk_label_new (gettext (text[i])); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i + 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 2); + gtk_widget_show (label); + + private->label[i] = gtk_label_new (""); + gtk_label_set_xalign (GTK_LABEL (private->label[i]), 0.0); + gtk_label_set_ellipsize (GTK_LABEL (private->label[i]), + PANGO_ELLIPSIZE_END); + gtk_table_attach (GTK_TABLE (private->table), private->label[i], + 1, 2, i, i + 1, + GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 2); + gtk_widget_show (private->label[i]); + } +} diff --git a/app/dialogs/module-dialog.h b/app/dialogs/module-dialog.h new file mode 100644 index 0000000..17aaef0 --- /dev/null +++ b/app/dialogs/module-dialog.h @@ -0,0 +1,27 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * module-dialog.h + * (C) 1999 Austin Donnelly <austin@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __MODULE_DIALOG_H__ + + +GtkWidget * module_dialog_new (Gimp *gimp); + + +#endif /* __MODULE_DIALOG_H__ */ diff --git a/app/dialogs/palette-import-dialog.c b/app/dialogs/palette-import-dialog.c new file mode 100644 index 0000000..d922c2f --- /dev/null +++ b/app/dialogs/palette-import-dialog.c @@ -0,0 +1,886 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpmath/gimpmath.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpcontainer.h" +#include "core/gimpcontext.h" +#include "core/gimpdatafactory.h" +#include "core/gimpdrawable.h" +#include "core/gimpgradient.h" +#include "core/gimpimage.h" +#include "core/gimppalette.h" +#include "core/gimppalette-import.h" + +#include "widgets/gimpcontainercombobox.h" +#include "widgets/gimpdnd.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpview.h" +#include "widgets/gimpwidgets-utils.h" + +#include "palette-import-dialog.h" + +#include "gimp-intl.h" + + +typedef enum +{ + GRADIENT_IMPORT, + IMAGE_IMPORT, + FILE_IMPORT +} ImportType; + + +typedef struct _ImportDialog ImportDialog; + +struct _ImportDialog +{ + GtkWidget *dialog; + + ImportType import_type; + GimpContext *context; + GimpImage *image; + + GimpPalette *palette; + + GtkWidget *gradient_radio; + GtkWidget *image_radio; + GtkWidget *file_radio; + + GtkWidget *gradient_combo; + GtkWidget *image_combo; + GtkWidget *file_chooser; + + GtkWidget *sample_merged_toggle; + GtkWidget *selection_only_toggle; + + GtkWidget *entry; + GtkAdjustment *num_colors; + GtkAdjustment *columns; + GtkAdjustment *threshold; + + GtkWidget *preview; + GtkWidget *no_colors_label; +}; + + +static void palette_import_free (ImportDialog *private); +static void palette_import_response (GtkWidget *dialog, + gint response_id, + ImportDialog *private); +static void palette_import_gradient_changed (GimpContext *context, + GimpGradient *gradient, + ImportDialog *private); +static void palette_import_image_changed (GimpContext *context, + GimpImage *image, + ImportDialog *private); +static void palette_import_layer_changed (GimpImage *image, + ImportDialog *private); +static void palette_import_mask_changed (GimpImage *image, + ImportDialog *private); +static void palette_import_filename_changed (GtkFileChooser *button, + ImportDialog *private); +static void import_dialog_drop_callback (GtkWidget *widget, + gint x, + gint y, + GimpViewable *viewable, + gpointer data); +static void palette_import_grad_callback (GtkWidget *widget, + ImportDialog *private); +static void palette_import_image_callback (GtkWidget *widget, + ImportDialog *private); +static void palette_import_file_callback (GtkWidget *widget, + ImportDialog *private); +static void palette_import_columns_changed (GtkAdjustment *adjustment, + ImportDialog *private); +static void palette_import_image_add (GimpContainer *container, + GimpImage *image, + ImportDialog *private); +static void palette_import_image_remove (GimpContainer *container, + GimpImage *image, + ImportDialog *private); +static void palette_import_make_palette (ImportDialog *private); + + +/* public functions */ + +GtkWidget * +palette_import_dialog_new (GimpContext *context) +{ + ImportDialog *private; + GimpGradient *gradient; + GtkWidget *dialog; + GtkWidget *main_hbox; + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *table; + GtkWidget *abox; + GtkSizeGroup *size_group; + GSList *group = NULL; + + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + + gradient = gimp_context_get_gradient (context); + + private = g_slice_new0 (ImportDialog); + + private->import_type = GRADIENT_IMPORT; + private->context = gimp_context_new (context->gimp, "Palette Import", + context); + + dialog = private->dialog = + gimp_dialog_new (_("Import a New Palette"), + "gimp-palette-import", NULL, 0, + gimp_standard_help_func, + GIMP_HELP_PALETTE_IMPORT, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Import"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) palette_import_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (palette_import_response), + private); + + gimp_dnd_viewable_dest_add (dialog, + GIMP_TYPE_GRADIENT, + import_dialog_drop_callback, + private); + gimp_dnd_viewable_dest_add (dialog, + GIMP_TYPE_IMAGE, + import_dialog_drop_callback, + private); + + main_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_hbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_hbox, TRUE, TRUE, 0); + gtk_widget_show (main_hbox); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_box_pack_start (GTK_BOX (main_hbox), vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + + /* The "Source" frame */ + + frame = gimp_frame_new (_("Select Source")); + gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + table = gtk_table_new (5, 2, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 6); + gtk_table_set_row_spacings (GTK_TABLE (table), 6); + gtk_container_add (GTK_CONTAINER (frame), table); + gtk_widget_show (table); + + private->gradient_radio = + gtk_radio_button_new_with_mnemonic (group, _("_Gradient")); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (private->gradient_radio)); + gtk_table_attach (GTK_TABLE (table), private->gradient_radio, + 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (private->gradient_radio); + + g_signal_connect (private->gradient_radio, "toggled", + G_CALLBACK (palette_import_grad_callback), + private); + + private->image_radio = + gtk_radio_button_new_with_mnemonic (group, _("I_mage")); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (private->image_radio)); + gtk_table_attach (GTK_TABLE (table), private->image_radio, + 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (private->image_radio); + + g_signal_connect (private->image_radio, "toggled", + G_CALLBACK (palette_import_image_callback), + private); + + gtk_widget_set_sensitive (private->image_radio, + ! gimp_container_is_empty (context->gimp->images)); + + private->sample_merged_toggle = + gtk_check_button_new_with_mnemonic (_("Sample _Merged")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->sample_merged_toggle), + TRUE); + gtk_table_attach (GTK_TABLE (table), private->sample_merged_toggle, + 1, 2, 2, 3, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (private->sample_merged_toggle); + + g_signal_connect_swapped (private->sample_merged_toggle, "toggled", + G_CALLBACK (palette_import_make_palette), + private); + + private->selection_only_toggle = + gtk_check_button_new_with_mnemonic (_("_Selected Pixels only")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->selection_only_toggle), + FALSE); + gtk_table_attach (GTK_TABLE (table), private->selection_only_toggle, + 1, 2, 3, 4, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (private->selection_only_toggle); + + g_signal_connect_swapped (private->selection_only_toggle, "toggled", + G_CALLBACK (palette_import_make_palette), + private); + + private->file_radio = + gtk_radio_button_new_with_mnemonic (group, _("Palette _file")); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (private->image_radio)); + gtk_table_attach (GTK_TABLE (table), private->file_radio, + 0, 1, 4, 5, GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (private->file_radio); + + g_signal_connect (private->file_radio, "toggled", + G_CALLBACK (palette_import_file_callback), + private); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL); + + /* The gradient menu */ + private->gradient_combo = + gimp_container_combo_box_new (gimp_data_factory_get_container (context->gimp->gradient_factory), + private->context, 24, 1); + gimp_table_attach_aligned (GTK_TABLE (table), 0, 0, + NULL, 0.0, 0.5, private->gradient_combo, 1, FALSE); + gtk_size_group_add_widget (size_group, private->gradient_combo); + + /* The image menu */ + private->image_combo = + gimp_container_combo_box_new (context->gimp->images, private->context, + 24, 1); + gimp_table_attach_aligned (GTK_TABLE (table), 0, 1, + NULL, 0.0, 0.5, private->image_combo, 1, FALSE); + gtk_size_group_add_widget (size_group, private->image_combo); + + /* Palette file name entry */ + private->file_chooser = gtk_file_chooser_button_new (_("Select Palette File"), + GTK_FILE_CHOOSER_ACTION_OPEN); + gimp_table_attach_aligned (GTK_TABLE (table), 0, 4, + NULL, 0.0, 0.5, private->file_chooser, 1, FALSE); + gtk_size_group_add_widget (size_group, private->file_chooser); + + g_object_unref (size_group); + + + /* The "Import" frame */ + + frame = gimp_frame_new (_("Import Options")); + gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + table = gtk_table_new (4, 3, FALSE); + gtk_table_set_col_spacings (GTK_TABLE (table), 6); + gtk_table_set_row_spacings (GTK_TABLE (table), 6); + gtk_container_add (GTK_CONTAINER (frame), table); + gtk_widget_show (table); + + /* The source's name */ + private->entry = gtk_entry_new (); + gtk_entry_set_text (GTK_ENTRY (private->entry), + gradient ? + gimp_object_get_name (gradient) : _("New import")); + gimp_table_attach_aligned (GTK_TABLE (table), 0, 0, + _("Palette _name:"), 0.0, 0.5, + private->entry, 2, FALSE); + + /* The # of colors */ + private->num_colors = + GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (table), 0, 1, + _("N_umber of colors:"), -1, 5, + 256, 2, 10000, 1, 10, 0, + TRUE, 0.0, 0.0, + NULL, NULL)); + gimp_scale_entry_set_logarithmic (GTK_OBJECT (private->num_colors), TRUE); + + g_signal_connect_swapped (private->num_colors, + "value-changed", + G_CALLBACK (palette_import_make_palette), + private); + + /* The columns */ + private->columns = + GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (table), 0, 2, + _("C_olumns:"), -1, 5, + 16, 0, 64, 1, 8, 0, + TRUE, 0.0, 0.0, + NULL, NULL)); + + g_signal_connect (private->columns, "value-changed", + G_CALLBACK (palette_import_columns_changed), + private); + + /* The interval */ + private->threshold = + GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (table), 0, 3, + _("I_nterval:"), -1, 5, + 1, 1, 128, 1, 8, 0, + TRUE, 0.0, 0.0, + NULL, NULL)); + + g_signal_connect_swapped (private->threshold, "value-changed", + G_CALLBACK (palette_import_make_palette), + private); + + + /* The "Preview" frame */ + frame = gimp_frame_new (_("Preview")); + gtk_box_pack_start (GTK_BOX (main_hbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + abox = gtk_alignment_new (0.0, 0.0, 0.0, 0.0); + gtk_box_pack_start (GTK_BOX (vbox), abox, FALSE, FALSE, 0); + gtk_widget_show (abox); + + private->preview = gimp_view_new_full_by_types (private->context, + GIMP_TYPE_VIEW, + GIMP_TYPE_PALETTE, + 192, 192, 1, + TRUE, FALSE, FALSE); + gtk_container_add (GTK_CONTAINER (abox), private->preview); + gtk_widget_show (private->preview); + + private->no_colors_label = + gtk_label_new (_("The selected source contains no colors.")); + gtk_widget_set_size_request (private->no_colors_label, 194, -1); + gtk_label_set_line_wrap (GTK_LABEL (private->no_colors_label), TRUE); + gimp_label_set_attributes (GTK_LABEL (private->no_colors_label), + PANGO_ATTR_STYLE, PANGO_STYLE_ITALIC, + -1); + gtk_box_pack_start (GTK_BOX (vbox), private->no_colors_label, FALSE, FALSE, 0); + gtk_widget_show (private->no_colors_label); + + + /* keep the dialog up-to-date */ + + g_signal_connect (context->gimp->images, "add", + G_CALLBACK (palette_import_image_add), + private); + g_signal_connect (context->gimp->images, "remove", + G_CALLBACK (palette_import_image_remove), + private); + + g_signal_connect (private->context, "gradient-changed", + G_CALLBACK (palette_import_gradient_changed), + private); + g_signal_connect (private->context, "image-changed", + G_CALLBACK (palette_import_image_changed), + private); + g_signal_connect (private->file_chooser, "selection-changed", + G_CALLBACK (palette_import_filename_changed), + private); + + palette_import_grad_callback (private->gradient_radio, private); + + return dialog; +} + + +/* private functions */ + +static void +palette_import_free (ImportDialog *private) +{ + Gimp *gimp = private->context->gimp; + + g_signal_handlers_disconnect_by_func (gimp->images, + palette_import_image_add, + private); + g_signal_handlers_disconnect_by_func (gimp->images, + palette_import_image_remove, + private); + + if (private->palette) + g_object_unref (private->palette); + + g_object_unref (private->context); + + g_slice_free (ImportDialog, private); +} + + +/* the palette import response callback ************************************/ + +static void +palette_import_response (GtkWidget *dialog, + gint response_id, + ImportDialog *private) +{ + palette_import_image_changed (private->context, NULL, private); + + if (response_id == GTK_RESPONSE_OK) + { + Gimp *gimp = private->context->gimp; + + if (private->palette && + gimp_palette_get_n_colors (private->palette) > 0) + { + const gchar *name = gtk_entry_get_text (GTK_ENTRY (private->entry)); + + if (name && *name) + gimp_object_set_name (GIMP_OBJECT (private->palette), name); + + gimp_container_add (gimp_data_factory_get_container (gimp->palette_factory), + GIMP_OBJECT (private->palette)); + } + else + { + gimp_message_literal (gimp, G_OBJECT (dialog), GIMP_MESSAGE_ERROR, + _("There is no palette to import.")); + return; + } + } + + gtk_widget_destroy (dialog); +} + + +/* functions to create & update the import dialog's gradient selection *****/ + +static void +palette_import_gradient_changed (GimpContext *context, + GimpGradient *gradient, + ImportDialog *private) +{ + if (gradient && private->import_type == GRADIENT_IMPORT) + { + gtk_entry_set_text (GTK_ENTRY (private->entry), + gimp_object_get_name (gradient)); + + palette_import_make_palette (private); + } +} + +static void +palette_import_image_changed (GimpContext *context, + GimpImage *image, + ImportDialog *private) +{ + if (private->image) + { + g_signal_handlers_disconnect_by_func (private->image, + palette_import_layer_changed, + private); + g_signal_handlers_disconnect_by_func (private->image, + palette_import_mask_changed, + private); + } + + private->image = image; + + if (private->import_type == IMAGE_IMPORT) + { + gboolean sensitive = FALSE; + + if (image) + { + gchar *label; + + label = g_strdup_printf ("%s-%d", + gimp_image_get_display_name (image), + gimp_image_get_ID (image)); + + gtk_entry_set_text (GTK_ENTRY (private->entry), label); + g_free (label); + + palette_import_make_palette (private); + + if (gimp_image_get_base_type (image) != GIMP_INDEXED) + sensitive = TRUE; + } + + gtk_widget_set_sensitive (private->sample_merged_toggle, sensitive); + gtk_widget_set_sensitive (private->selection_only_toggle, sensitive); + gimp_scale_entry_set_sensitive (GTK_OBJECT (private->threshold), + sensitive); + gimp_scale_entry_set_sensitive (GTK_OBJECT (private->num_colors), + sensitive); + } + + if (private->image) + { + g_signal_connect (private->image, "active-layer-changed", + G_CALLBACK (palette_import_layer_changed), + private); + g_signal_connect (private->image, "mask-changed", + G_CALLBACK (palette_import_mask_changed), + private); + } +} + +static void +palette_import_layer_changed (GimpImage *image, + ImportDialog *private) +{ + if (private->import_type == IMAGE_IMPORT && + ! gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (private->sample_merged_toggle))) + { + palette_import_make_palette (private); + } +} + +static void +palette_import_mask_changed (GimpImage *image, + ImportDialog *private) +{ + if (private->import_type == IMAGE_IMPORT && + gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (private->selection_only_toggle))) + { + palette_import_make_palette (private); + } +} + +static void +palette_import_filename_changed (GtkFileChooser *button, + ImportDialog *private) +{ + gchar *filename; + + if (private->import_type != FILE_IMPORT) + return; + + filename = gtk_file_chooser_get_filename (button); + + if (filename) + { + gchar *basename = g_filename_display_basename (filename); + + /* TODO: strip filename extension */ + gtk_entry_set_text (GTK_ENTRY (private->entry), basename); + g_free (basename); + } + else + { + gtk_entry_set_text (GTK_ENTRY (private->entry), ""); + } + + g_free (filename); + + palette_import_make_palette (private); +} + +static void +import_dialog_drop_callback (GtkWidget *widget, + gint x, + gint y, + GimpViewable *viewable, + gpointer data) +{ + ImportDialog *private = data; + + gimp_context_set_by_type (private->context, + G_TYPE_FROM_INSTANCE (viewable), + GIMP_OBJECT (viewable)); + + if (GIMP_IS_GRADIENT (viewable) && + private->import_type != GRADIENT_IMPORT) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->gradient_radio), + TRUE); + } + else if (GIMP_IS_IMAGE (viewable) && + private->import_type != IMAGE_IMPORT) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->image_radio), + TRUE); + } +} + + +/* the import source menu item callbacks ***********************************/ + +static void +palette_import_set_sensitive (ImportDialog *private) +{ + gboolean gradient = (private->import_type == GRADIENT_IMPORT); + gboolean image = (private->import_type == IMAGE_IMPORT); + gboolean file = (private->import_type == FILE_IMPORT); + + gtk_widget_set_sensitive (private->gradient_combo, gradient); + gtk_widget_set_sensitive (private->image_combo, image); + gtk_widget_set_sensitive (private->sample_merged_toggle, image); + gtk_widget_set_sensitive (private->selection_only_toggle, image); + gtk_widget_set_sensitive (private->file_chooser, file); + + gimp_scale_entry_set_sensitive (GTK_OBJECT (private->num_colors), ! file); + gimp_scale_entry_set_sensitive (GTK_OBJECT (private->columns), ! file); + gimp_scale_entry_set_sensitive (GTK_OBJECT (private->threshold), image); +} + +static void +palette_import_grad_callback (GtkWidget *widget, + ImportDialog *private) +{ + GimpGradient *gradient; + + if (! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) + return; + + private->import_type = GRADIENT_IMPORT; + + gradient = gimp_context_get_gradient (private->context); + + gtk_entry_set_text (GTK_ENTRY (private->entry), + gimp_object_get_name (gradient)); + + palette_import_set_sensitive (private); + + palette_import_make_palette (private); +} + +static void +palette_import_image_callback (GtkWidget *widget, + ImportDialog *private) +{ + GimpImage *image; + + if (! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) + return; + + private->import_type = IMAGE_IMPORT; + + image = gimp_context_get_image (private->context); + + if (! image) + { + GimpContainer *images = private->context->gimp->images; + + image = GIMP_IMAGE (gimp_container_get_first_child (images)); + } + + palette_import_set_sensitive (private); + + palette_import_image_changed (private->context, image, private); +} + +static void +palette_import_file_callback (GtkWidget *widget, + ImportDialog *private) +{ + gchar *filename; + + if (! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) + return; + + private->import_type = FILE_IMPORT; + + filename = + gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (private->file_chooser)); + + if (filename) + { + gchar *basename = g_filename_display_basename (filename); + + /* TODO: strip filename extension */ + gtk_entry_set_text (GTK_ENTRY (private->entry), basename); + g_free (basename); + + g_free (filename); + } + else + { + gtk_entry_set_text (GTK_ENTRY (private->entry), ""); + } + + palette_import_set_sensitive (private); +} + +static void +palette_import_columns_changed (GtkAdjustment *adj, + ImportDialog *private) +{ + if (private->palette) + gimp_palette_set_columns (private->palette, + ROUND (gtk_adjustment_get_value (adj))); +} + + +/* functions & callbacks to keep the import dialog uptodate ****************/ + +static void +palette_import_image_add (GimpContainer *container, + GimpImage *image, + ImportDialog *private) +{ + if (! gtk_widget_is_sensitive (private->image_radio)) + { + gtk_widget_set_sensitive (private->image_radio, TRUE); + gimp_context_set_image (private->context, image); + } +} + +static void +palette_import_image_remove (GimpContainer *container, + GimpImage *image, + ImportDialog *private) +{ + if (! gimp_container_get_n_children (private->context->gimp->images)) + { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (private->image_radio))) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->gradient_radio), + TRUE); + + gtk_widget_set_sensitive (private->image_radio, FALSE); + } +} + +static void +palette_import_make_palette (ImportDialog *private) +{ + GimpPalette *palette = NULL; + const gchar *palette_name; + gint n_colors; + gint n_columns; + gint threshold; + + palette_name = gtk_entry_get_text (GTK_ENTRY (private->entry)); + + if (! palette_name || ! strlen (palette_name)) + palette_name = _("Untitled"); + + n_colors = ROUND (gtk_adjustment_get_value (private->num_colors)); + n_columns = ROUND (gtk_adjustment_get_value (private->columns)); + threshold = ROUND (gtk_adjustment_get_value (private->threshold)); + + switch (private->import_type) + { + case GRADIENT_IMPORT: + { + GimpGradient *gradient; + + gradient = gimp_context_get_gradient (private->context); + + palette = gimp_palette_import_from_gradient (gradient, + private->context, + FALSE, + GIMP_GRADIENT_BLEND_RGB_PERCEPTUAL, + palette_name, + n_colors); + } + break; + + case IMAGE_IMPORT: + { + GimpImage *image = gimp_context_get_image (private->context); + gboolean sample_merged; + gboolean selection_only; + + sample_merged = + gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (private->sample_merged_toggle)); + + selection_only = + gtk_toggle_button_get_active + (GTK_TOGGLE_BUTTON (private->selection_only_toggle)); + + if (gimp_image_get_base_type (image) == GIMP_INDEXED) + { + palette = gimp_palette_import_from_indexed_image (image, + private->context, + palette_name); + } + else if (sample_merged) + { + palette = gimp_palette_import_from_image (image, + private->context, + palette_name, + n_colors, + threshold, + selection_only); + } + else + { + GimpDrawable *drawable; + + drawable = GIMP_DRAWABLE (gimp_image_get_active_layer (image)); + + palette = gimp_palette_import_from_drawable (drawable, + private->context, + palette_name, + n_colors, + threshold, + selection_only); + } + } + break; + + case FILE_IMPORT: + { + GFile *file; + GError *error = NULL; + + file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (private->file_chooser)); + + palette = gimp_palette_import_from_file (private->context, + file, + palette_name, &error); + g_object_unref (file); + + if (! palette) + { + gimp_message_literal (private->context->gimp, + G_OBJECT (private->dialog), GIMP_MESSAGE_ERROR, + error->message); + g_error_free (error); + } + } + break; + } + + if (private->palette) + g_object_unref (private->palette); + + private->palette = palette; + + if (palette) + { + gimp_palette_set_columns (palette, n_columns); + + gimp_view_set_viewable (GIMP_VIEW (private->preview), + GIMP_VIEWABLE (palette)); + + } + + gtk_widget_set_visible (private->no_colors_label, + ! (palette && + gimp_palette_get_n_colors (palette) > 0)); +} diff --git a/app/dialogs/palette-import-dialog.h b/app/dialogs/palette-import-dialog.h new file mode 100644 index 0000000..baa5677 --- /dev/null +++ b/app/dialogs/palette-import-dialog.h @@ -0,0 +1,25 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __PALETTE_IMPORT_DIALOG_H__ +#define __PALETTE_IMPORT_DIALOG_H__ + + +GtkWidget * palette_import_dialog_new (GimpContext *context); + + +#endif /* __PALETTE_IMPORT_DIALOG_H__ */ diff --git a/app/dialogs/preferences-dialog-utils.c b/app/dialogs/preferences-dialog-utils.c new file mode 100644 index 0000000..1a1aaaa --- /dev/null +++ b/app/dialogs/preferences-dialog-utils.c @@ -0,0 +1,402 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpcolor/gimpcolor.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "widgets/gimpcolorpanel.h" +#include "widgets/gimppropwidgets.h" +#include "widgets/gimpwidgets-constructors.h" + +#include "preferences-dialog-utils.h" + + +GtkWidget * +prefs_frame_new (const gchar *label, + GtkContainer *parent, + gboolean expand) +{ + GtkWidget *frame; + GtkWidget *vbox; + + frame = gimp_frame_new (label); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + if (GTK_IS_BOX (parent)) + gtk_box_pack_start (GTK_BOX (parent), frame, expand, expand, 0); + else + gtk_container_add (parent, frame); + + gtk_widget_show (frame); + + return vbox; +} + +GtkWidget * +prefs_table_new (gint rows, + GtkContainer *parent) +{ + GtkWidget *table; + + table = gtk_table_new (rows, 2, FALSE); + + gtk_table_set_row_spacings (GTK_TABLE (table), 6); + gtk_table_set_col_spacings (GTK_TABLE (table), 6); + + if (GTK_IS_BOX (parent)) + gtk_box_pack_start (GTK_BOX (parent), table, FALSE, FALSE, 0); + else + gtk_container_add (parent, table); + + gtk_widget_show (table); + + return table; +} + +GtkWidget * +prefs_hint_box_new (const gchar *icon_name, + const gchar *text) +{ + GtkWidget *hbox; + GtkWidget *image; + GtkWidget *label; + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + + image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON); + gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0); + gtk_widget_show (image); + + label = gtk_label_new (text); + gimp_label_set_attributes (GTK_LABEL (label), + PANGO_ATTR_STYLE, PANGO_STYLE_ITALIC, + -1); + gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + + gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); + gtk_widget_show (label); + + gtk_widget_show (hbox); + + return hbox; +} + +GtkWidget * +prefs_button_add (const gchar *icon_name, + const gchar *label, + GtkBox *box) +{ + GtkWidget *button; + + button = gimp_icon_button_new (icon_name, label); + gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + return button; +} + +GtkWidget * +prefs_check_button_add (GObject *config, + const gchar *property_name, + const gchar *label, + GtkBox *vbox) +{ + GtkWidget *button; + + button = gimp_prop_check_button_new (config, property_name, label); + + if (button) + { + gtk_box_pack_start (vbox, button, FALSE, FALSE, 0); + gtk_widget_show (button); + } + + return button; +} + +GtkWidget * +prefs_check_button_add_with_icon (GObject *config, + const gchar *property_name, + const gchar *label, + const gchar *icon_name, + GtkBox *vbox, + GtkSizeGroup *group) +{ + GtkWidget *button; + GtkWidget *hbox; + GtkWidget *image; + + button = gimp_prop_check_button_new (config, property_name, label); + if (!button) + return NULL; + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (vbox, hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON); + gtk_misc_set_padding (GTK_MISC (image), 2, 2); + gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0); + gtk_widget_show (image); + + gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + if (group) + gtk_size_group_add_widget (group, image); + + return button; +} + +GtkWidget * +prefs_widget_add_aligned (GtkWidget *widget, + const gchar *text, + GtkTable *table, + gint table_row, + gboolean left_align, + GtkSizeGroup *group) +{ + GtkWidget *label = gimp_table_attach_aligned (table, 0, table_row, + text, 0.0, 0.5, + widget, 1, left_align); + if (group) + gtk_size_group_add_widget (group, label); + + return label; +} + +GtkWidget * +prefs_color_button_add (GObject *config, + const gchar *property_name, + const gchar *label, + const gchar *title, + GtkTable *table, + gint table_row, + GtkSizeGroup *group, + GimpContext *context) +{ + GtkWidget *button; + GParamSpec *pspec; + gboolean has_alpha; + + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (config), + property_name); + + has_alpha = gimp_param_spec_rgb_has_alpha (pspec); + + button = gimp_prop_color_button_new (config, property_name, + title, + PREFS_COLOR_BUTTON_WIDTH, + PREFS_COLOR_BUTTON_HEIGHT, + has_alpha ? + GIMP_COLOR_AREA_SMALL_CHECKS : + GIMP_COLOR_AREA_FLAT); + + if (button) + { + if (context) + gimp_color_panel_set_context (GIMP_COLOR_PANEL (button), context); + + prefs_widget_add_aligned (button, label, table, table_row, TRUE, group); + } + + return button; +} + +GtkWidget * +prefs_entry_add (GObject *config, + const gchar *property_name, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group) +{ + GtkWidget *entry = gimp_prop_entry_new (config, property_name, -1); + + if (entry) + prefs_widget_add_aligned (entry, label, table, table_row, FALSE, group); + + return entry; +} + +GtkWidget * +prefs_spin_button_add (GObject *config, + const gchar *property_name, + gdouble step_increment, + gdouble page_increment, + gint digits, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group) +{ + GtkWidget *button = gimp_prop_spin_button_new (config, property_name, + step_increment, + page_increment, + digits); + + if (button) + prefs_widget_add_aligned (button, label, table, table_row, TRUE, group); + + return button; +} + +GtkWidget * +prefs_memsize_entry_add (GObject *config, + const gchar *property_name, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group) +{ + GtkWidget *entry = gimp_prop_memsize_entry_new (config, property_name); + + if (entry) + prefs_widget_add_aligned (entry, label, table, table_row, TRUE, group); + + return entry; +} + +GtkWidget * +prefs_file_chooser_button_add (GObject *config, + const gchar *property_name, + const gchar *label, + const gchar *dialog_title, + GtkTable *table, + gint table_row, + GtkSizeGroup *group) +{ + GtkWidget *button; + + button = gimp_prop_file_chooser_button_new (config, property_name, + dialog_title, + GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); + + if (button) + prefs_widget_add_aligned (button, label, table, table_row, FALSE, group); + + return button; +} + +GtkWidget * +prefs_enum_combo_box_add (GObject *config, + const gchar *property_name, + gint minimum, + gint maximum, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group) +{ + GtkWidget *combo = gimp_prop_enum_combo_box_new (config, property_name, + minimum, maximum); + + if (combo) + prefs_widget_add_aligned (combo, label, table, table_row, FALSE, group); + + return combo; +} + +GtkWidget * +prefs_boolean_combo_box_add (GObject *config, + const gchar *property_name, + const gchar *true_text, + const gchar *false_text, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group) +{ + GtkWidget *combo = gimp_prop_boolean_combo_box_new (config, property_name, + true_text, false_text); + + if (combo) + prefs_widget_add_aligned (combo, label, table, table_row, FALSE, group); + + return combo; +} + +#ifdef HAVE_ISO_CODES +GtkWidget * +prefs_language_combo_box_add (GObject *config, + const gchar *property_name, + GtkBox *vbox) +{ + GtkWidget *combo = gimp_prop_language_combo_box_new (config, property_name); + + if (combo) + { + gtk_box_pack_start (vbox, combo, FALSE, FALSE, 0); + gtk_widget_show (combo); + } + + return combo; +} +#endif + +GtkWidget * +prefs_profile_combo_box_add (GObject *config, + const gchar *property_name, + GtkListStore *profile_store, + const gchar *dialog_title, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group, + GObject *profile_path_config, + const gchar *profile_path_property_name) +{ + GtkWidget *combo = gimp_prop_profile_combo_box_new (config, + property_name, + profile_store, + dialog_title, + profile_path_config, + profile_path_property_name); + + if (combo) + prefs_widget_add_aligned (combo, label, table, table_row, FALSE, group); + + return combo; +} + +GtkWidget * +prefs_compression_combo_box_add (GObject *config, + const gchar *property_name, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group) +{ + GtkWidget *combo = gimp_prop_compression_combo_box_new (config, + property_name); + + if (combo) + prefs_widget_add_aligned (combo, label, table, table_row, FALSE, group); + + return combo; +} diff --git a/app/dialogs/preferences-dialog-utils.h b/app/dialogs/preferences-dialog-utils.h new file mode 100644 index 0000000..46f2be9 --- /dev/null +++ b/app/dialogs/preferences-dialog-utils.h @@ -0,0 +1,134 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __PREFERENCES_DIALOG_UTILS_H__ +#define __PREFERENCES_DIALOG_UTILS_H__ + + +#define PREFS_COLOR_BUTTON_WIDTH 40 +#define PREFS_COLOR_BUTTON_HEIGHT 24 + + +GtkWidget * prefs_frame_new (const gchar *label, + GtkContainer *parent, + gboolean expand); +GtkWidget * prefs_table_new (gint rows, + GtkContainer *parent); + +GtkWidget * prefs_hint_box_new (const gchar *icon_name, + const gchar *text); + +GtkWidget * prefs_button_add (const gchar *icon_name, + const gchar *label, + GtkBox *box); +GtkWidget * prefs_check_button_add (GObject *config, + const gchar *property_name, + const gchar *label, + GtkBox *box); +GtkWidget * prefs_check_button_add_with_icon (GObject *config, + const gchar *property_name, + const gchar *label, + const gchar *icon_name, + GtkBox *box, + GtkSizeGroup *group); + +GtkWidget * prefs_widget_add_aligned (GtkWidget *widget, + const gchar *text, + GtkTable *table, + gint table_row, + gboolean left_align, + GtkSizeGroup *group); + +GtkWidget * prefs_color_button_add (GObject *config, + const gchar *property_name, + const gchar *label, + const gchar *title, + GtkTable *table, + gint table_row, + GtkSizeGroup *group, + GimpContext *context); + +GtkWidget * prefs_entry_add (GObject *config, + const gchar *property_name, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group); +GtkWidget * prefs_spin_button_add (GObject *config, + const gchar *property_name, + gdouble step_increment, + gdouble page_increment, + gint digits, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group); +GtkWidget * prefs_memsize_entry_add (GObject *config, + const gchar *property_name, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group); + +GtkWidget * prefs_file_chooser_button_add (GObject *config, + const gchar *property_name, + const gchar *label, + const gchar *dialog_title, + GtkTable *table, + gint table_row, + GtkSizeGroup *group); + +GtkWidget * prefs_enum_combo_box_add (GObject *config, + const gchar *property_name, + gint minimum, + gint maximum, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group); +GtkWidget * prefs_boolean_combo_box_add (GObject *config, + const gchar *property_name, + const gchar *true_text, + const gchar *false_text, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group); +#ifdef HAVE_ISO_CODES +GtkWidget * prefs_language_combo_box_add (GObject *config, + const gchar *property_name, + GtkBox *vbox); +#endif +GtkWidget * prefs_profile_combo_box_add (GObject *config, + const gchar *property_name, + GtkListStore *profile_store, + const gchar *dialog_title, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group, + GObject *profile_path_config, + const gchar *profile_path_property_name); +GtkWidget * prefs_compression_combo_box_add (GObject *config, + const gchar *property_name, + const gchar *label, + GtkTable *table, + gint table_row, + GtkSizeGroup *group); + + +#endif /* __PREFERENCES_DIALOG_H__ */ diff --git a/app/dialogs/preferences-dialog.c b/app/dialogs/preferences-dialog.c new file mode 100644 index 0000000..3797317 --- /dev/null +++ b/app/dialogs/preferences-dialog.c @@ -0,0 +1,3405 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpmath/gimpmath.h" +#include "libgimpbase/gimpbase.h" +#include "libgimpconfig/gimpconfig.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimprc.h" + +#include "core/gimp.h" +#include "core/gimptemplate.h" + +#include "plug-in/gimppluginmanager.h" + +#include "widgets/gimpaction-history.h" +#include "widgets/gimpcolorpanel.h" +#include "widgets/gimpcontainercombobox.h" +#include "widgets/gimpcontainerview.h" +#include "widgets/gimpcontrollerlist.h" +#include "widgets/gimpdevices.h" +#include "widgets/gimpdialogfactory.h" +#include "widgets/gimpgrideditor.h" +#include "widgets/gimphelp.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpiconsizescale.h" +#include "widgets/gimplanguagecombobox.h" +#include "widgets/gimpmessagebox.h" +#include "widgets/gimpmessagedialog.h" +#include "widgets/gimppluginview.h" +#include "widgets/gimpprefsbox.h" +#include "widgets/gimppropwidgets.h" +#include "widgets/gimpstrokeeditor.h" +#include "widgets/gimptemplateeditor.h" +#include "widgets/gimptooleditor.h" +#include "widgets/gimpwidgets-utils.h" + +#include "menus/menus.h" + +#include "tools/gimp-tools.h" + +#include "gui/session.h" +#include "gui/icon-themes.h" +#include "gui/themes.h" + +#include "preferences-dialog.h" +#include "preferences-dialog-utils.h" +#include "resolution-calibrate-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_RESET 1 + + +/* preferences local functions */ + +static GtkWidget * prefs_dialog_new (Gimp *gimp, + GimpConfig *config); +static void prefs_config_notify (GObject *config, + GParamSpec *param_spec, + GObject *config_copy); +static void prefs_config_copy_notify (GObject *config_copy, + GParamSpec *param_spec, + GObject *config); +static void prefs_response (GtkWidget *widget, + gint response_id, + GtkWidget *dialog); + +static void prefs_message (GtkMessageType type, + gboolean destroy, + const gchar *message); + +static void prefs_color_management_reset (GtkWidget *widget, + GObject *config); +static void prefs_dialog_defaults_reset (GtkWidget *widget, + GObject *config); +static void prefs_folders_reset (GtkWidget *widget, + GObject *config); +static void prefs_path_reset (GtkWidget *widget, + GObject *config); + +static void prefs_import_raw_procedure_callback (GtkWidget *widget, + GObject *config); +static void prefs_resolution_source_callback (GtkWidget *widget, + GObject *config); +static void prefs_resolution_calibrate_callback (GtkWidget *widget, + GtkWidget *entry); +static void prefs_input_devices_dialog (GtkWidget *widget, + Gimp *gimp); +static void prefs_keyboard_shortcuts_dialog (GtkWidget *widget, + Gimp *gimp); +static void prefs_menus_save_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_menus_clear_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_menus_remove_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_session_save_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_session_clear_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_devices_save_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_devices_clear_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_search_clear_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_tool_options_save_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_tool_options_clear_callback (GtkWidget *widget, + Gimp *gimp); +static void prefs_help_language_change_callback (GtkComboBox *combo, + Gimp *gimp); +static void prefs_help_language_change_callback2 (GtkComboBox *combo, + GtkContainer *box); + + +/* private variables */ + +static GtkWidget *prefs_dialog = NULL; +static GtkWidget *tool_editor = NULL; + + +/* public function */ + +GtkWidget * +preferences_dialog_create (Gimp *gimp) +{ + GimpConfig *config; + GimpConfig *config_copy; + GimpConfig *config_orig; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + if (prefs_dialog) + return prefs_dialog; + + /* turn off autosaving while the prefs dialog is open */ + gimp_rc_set_autosave (GIMP_RC (gimp->edit_config), FALSE); + + config = GIMP_CONFIG (gimp->edit_config); + config_copy = gimp_config_duplicate (config); + config_orig = gimp_config_duplicate (config); + + g_signal_connect_object (config, "notify", + G_CALLBACK (prefs_config_notify), + config_copy, 0); + g_signal_connect_object (config_copy, "notify", + G_CALLBACK (prefs_config_copy_notify), + config, 0); + + prefs_dialog = prefs_dialog_new (gimp, config_copy); + + g_object_add_weak_pointer (G_OBJECT (prefs_dialog), + (gpointer) &prefs_dialog); + + g_object_set_data (G_OBJECT (prefs_dialog), "gimp", gimp); + + g_object_set_data_full (G_OBJECT (prefs_dialog), "config-copy", config_copy, + (GDestroyNotify) g_object_unref); + g_object_set_data_full (G_OBJECT (prefs_dialog), "config-orig", config_orig, + (GDestroyNotify) g_object_unref); + + return prefs_dialog; +} + + +/* private functions */ + +static void +prefs_config_notify (GObject *config, + GParamSpec *param_spec, + GObject *config_copy) +{ + GValue global_value = G_VALUE_INIT; + GValue copy_value = G_VALUE_INIT; + + g_value_init (&global_value, param_spec->value_type); + g_value_init (©_value, param_spec->value_type); + + g_object_get_property (config, param_spec->name, &global_value); + g_object_get_property (config_copy, param_spec->name, ©_value); + + if (g_param_values_cmp (param_spec, &global_value, ©_value)) + { + g_signal_handlers_block_by_func (config_copy, + prefs_config_copy_notify, + config); + + g_object_set_property (config_copy, param_spec->name, &global_value); + + g_signal_handlers_unblock_by_func (config_copy, + prefs_config_copy_notify, + config); + } + + g_value_unset (&global_value); + g_value_unset (©_value); +} + +static void +prefs_config_copy_notify (GObject *config_copy, + GParamSpec *param_spec, + GObject *config) +{ + GValue copy_value = G_VALUE_INIT; + GValue global_value = G_VALUE_INIT; + + g_value_init (©_value, param_spec->value_type); + g_value_init (&global_value, param_spec->value_type); + + g_object_get_property (config_copy, param_spec->name, ©_value); + g_object_get_property (config, param_spec->name, &global_value); + + if (g_param_values_cmp (param_spec, ©_value, &global_value)) + { + if (param_spec->flags & GIMP_CONFIG_PARAM_CONFIRM) + { +#ifdef GIMP_CONFIG_DEBUG + g_print ("NOT Applying prefs change of '%s' to edit_config " + "because it needs confirmation\n", + param_spec->name); +#endif + } + else + { +#ifdef GIMP_CONFIG_DEBUG + g_print ("Applying prefs change of '%s' to edit_config\n", + param_spec->name); +#endif + g_signal_handlers_block_by_func (config, + prefs_config_notify, + config_copy); + + g_object_set_property (config, param_spec->name, ©_value); + + g_signal_handlers_unblock_by_func (config, + prefs_config_notify, + config_copy); + } + } + + g_value_unset (©_value); + g_value_unset (&global_value); +} + +static void +prefs_response (GtkWidget *widget, + gint response_id, + GtkWidget *dialog) +{ + Gimp *gimp = g_object_get_data (G_OBJECT (dialog), "gimp"); + + switch (response_id) + { + case RESPONSE_RESET: + { + GtkWidget *confirm; + + confirm = gimp_message_dialog_new (_("Reset All Preferences"), + GIMP_ICON_DIALOG_QUESTION, + dialog, + GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT, + gimp_standard_help_func, NULL, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Reset"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (confirm), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (confirm)->box, + _("Do you really want to reset all " + "preferences to default values?")); + + if (gimp_dialog_run (GIMP_DIALOG (confirm)) == GTK_RESPONSE_OK) + { + GimpConfig *config_copy; + + config_copy = g_object_get_data (G_OBJECT (dialog), "config-copy"); + + gimp_config_reset (config_copy); + gimp_rc_load_system (GIMP_RC (config_copy)); + + /* don't use the default value if there is no help browser */ + if (! gimp_help_browser_is_installed (gimp)) + { + g_object_set (config_copy, + "help-browser", GIMP_HELP_BROWSER_WEB_BROWSER, + NULL); + } + } + + gtk_widget_destroy (confirm); + + return; + } + break; + + case GTK_RESPONSE_OK: + { + GObject *config_copy; + GList *restart_diff; + GList *confirm_diff; + GList *list; + + config_copy = g_object_get_data (G_OBJECT (dialog), "config-copy"); + + /* destroy config_orig */ + g_object_set_data (G_OBJECT (dialog), "config-orig", NULL); + + gtk_widget_set_sensitive (GTK_WIDGET (dialog), FALSE); + + confirm_diff = gimp_config_diff (G_OBJECT (gimp->edit_config), + config_copy, + GIMP_CONFIG_PARAM_CONFIRM); + + g_object_freeze_notify (G_OBJECT (gimp->edit_config)); + + for (list = confirm_diff; list; list = g_list_next (list)) + { + GParamSpec *param_spec = list->data; + GValue value = G_VALUE_INIT; + + g_value_init (&value, param_spec->value_type); + + g_object_get_property (config_copy, + param_spec->name, &value); + g_object_set_property (G_OBJECT (gimp->edit_config), + param_spec->name, &value); + + g_value_unset (&value); + } + + g_object_thaw_notify (G_OBJECT (gimp->edit_config)); + + g_list_free (confirm_diff); + + gimp_rc_save (GIMP_RC (gimp->edit_config)); + + /* spit out a solely informational warning about changed values + * which need restart + */ + restart_diff = gimp_config_diff (G_OBJECT (gimp->edit_config), + G_OBJECT (gimp->config), + GIMP_CONFIG_PARAM_RESTART); + + if (restart_diff) + { + GString *string; + + string = g_string_new (_("You will have to restart GIMP for " + "the following changes to take effect:")); + g_string_append (string, "\n\n"); + + for (list = restart_diff; list; list = g_list_next (list)) + { + GParamSpec *param_spec = list->data; + + g_string_append_printf (string, "%s\n", param_spec->name); + } + + prefs_message (GTK_MESSAGE_INFO, FALSE, string->str); + + g_string_free (string, TRUE); + } + + g_list_free (restart_diff); + } + break; + + default: + { + GObject *config_orig; + GList *diff; + GList *list; + + config_orig = g_object_get_data (G_OBJECT (dialog), "config-orig"); + + /* destroy config_copy */ + g_object_set_data (G_OBJECT (dialog), "config-copy", NULL); + + gtk_widget_set_sensitive (GTK_WIDGET (dialog), FALSE); + + diff = gimp_config_diff (G_OBJECT (gimp->edit_config), + config_orig, + GIMP_CONFIG_PARAM_SERIALIZE); + + g_object_freeze_notify (G_OBJECT (gimp->edit_config)); + + for (list = diff; list; list = g_list_next (list)) + { + GParamSpec *param_spec = list->data; + GValue value = G_VALUE_INIT; + + g_value_init (&value, param_spec->value_type); + + g_object_get_property (config_orig, + param_spec->name, &value); + g_object_set_property (G_OBJECT (gimp->edit_config), + param_spec->name, &value); + + g_value_unset (&value); + } + + gimp_tool_editor_revert_changes (GIMP_TOOL_EDITOR (tool_editor)); + + g_object_thaw_notify (G_OBJECT (gimp->edit_config)); + + g_list_free (diff); + } + + tool_editor = NULL; + } + + /* enable autosaving again */ + gimp_rc_set_autosave (GIMP_RC (gimp->edit_config), TRUE); + + gtk_widget_destroy (dialog); +} + +static void +prefs_color_management_reset (GtkWidget *widget, + GObject *config) +{ + GimpCoreConfig *core_config = GIMP_CORE_CONFIG (config); + + gimp_config_reset (GIMP_CONFIG (core_config->color_management)); + gimp_config_reset_property (config, "color-profile-policy"); + gimp_config_reset_property (config, "filter-tool-show-color-options"); +} + +static void +prefs_dialog_defaults_reset (GtkWidget *widget, + GObject *config) +{ + GParamSpec **pspecs; + guint n_pspecs; + guint i; + + pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (config), + &n_pspecs); + + g_object_freeze_notify (config); + + for (i = 0; i < n_pspecs; i++) + { + GParamSpec *pspec = pspecs[i]; + + if (pspec->owner_type == GIMP_TYPE_DIALOG_CONFIG) + gimp_config_reset_property (config, pspec->name); + } + + gimp_config_reset_property (config, "filter-tool-max-recent"); + gimp_config_reset_property (config, "filter-tool-use-last-settings"); + gimp_config_reset_property (config, "filter-tool-show-color-options"); + + g_object_thaw_notify (config); + + g_free (pspecs); +} + +static void +prefs_folders_reset (GtkWidget *widget, + GObject *config) +{ + gimp_config_reset_property (config, "temp-path"); + gimp_config_reset_property (config, "swap-path"); +} + +static void +prefs_path_reset (GtkWidget *widget, + GObject *config) +{ + const gchar *path_property; + const gchar *writable_property; + + path_property = g_object_get_data (G_OBJECT (widget), "path"); + writable_property = g_object_get_data (G_OBJECT (widget), "path-writable"); + + gimp_config_reset_property (config, path_property); + + if (writable_property) + gimp_config_reset_property (config, writable_property); +} + +static void +prefs_template_select_callback (GimpContainerView *view, + GimpTemplate *template, + gpointer insert_data, + GimpTemplate *edit_template) +{ + if (template) + { + /* make sure the resolution values are copied first (see bug #546924) */ + gimp_config_sync (G_OBJECT (template), G_OBJECT (edit_template), + GIMP_TEMPLATE_PARAM_COPY_FIRST); + gimp_config_sync (G_OBJECT (template), G_OBJECT (edit_template), + 0); + } +} + +static void +prefs_import_raw_procedure_callback (GtkWidget *widget, + GObject *config) +{ + gchar *raw_plug_in; + + raw_plug_in = gimp_plug_in_view_get_plug_in (GIMP_PLUG_IN_VIEW (widget)); + + g_object_set (config, + "import-raw-plug-in", raw_plug_in, + NULL); + + g_free (raw_plug_in); +} + +static void +prefs_resolution_source_callback (GtkWidget *widget, + GObject *config) +{ + gdouble xres; + gdouble yres; + gboolean from_gdk; + + from_gdk = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); + + if (from_gdk) + { + gimp_get_monitor_resolution (gtk_widget_get_screen (widget), + gimp_widget_get_monitor (widget), + &xres, &yres); + } + else + { + GimpSizeEntry *entry = g_object_get_data (G_OBJECT (widget), + "monitor_resolution_sizeentry"); + + g_return_if_fail (GIMP_IS_SIZE_ENTRY (entry)); + + xres = gimp_size_entry_get_refval (entry, 0); + yres = gimp_size_entry_get_refval (entry, 1); + } + + g_object_set (config, + "monitor-xresolution", xres, + "monitor-yresolution", yres, + "monitor-resolution-from-windowing-system", from_gdk, + NULL); +} + +static void +prefs_resolution_calibrate_callback (GtkWidget *widget, + GtkWidget *entry) +{ + GtkWidget *dialog; + GtkWidget *prefs_box; + const gchar *icon_name; + + dialog = gtk_widget_get_toplevel (entry); + + prefs_box = g_object_get_data (G_OBJECT (dialog), "prefs-box"); + icon_name = gimp_prefs_box_get_current_icon_name (GIMP_PREFS_BOX (prefs_box)); + + resolution_calibrate_dialog (entry, icon_name); +} + +static void +prefs_input_devices_dialog (GtkWidget *widget, + Gimp *gimp) +{ + gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (), + gtk_widget_get_screen (widget), + gimp_widget_get_monitor (widget), + "gimp-input-devices-dialog", 0); +} + +static void +prefs_keyboard_shortcuts_dialog (GtkWidget *widget, + Gimp *gimp) +{ + gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (), + gtk_widget_get_screen (widget), + gimp_widget_get_monitor (widget), + "gimp-keyboard-shortcuts-dialog", 0); +} + +static void +prefs_menus_save_callback (GtkWidget *widget, + Gimp *gimp) +{ + GtkWidget *clear_button; + + menus_save (gimp, TRUE); + + clear_button = g_object_get_data (G_OBJECT (widget), "clear-button"); + + if (clear_button) + gtk_widget_set_sensitive (clear_button, TRUE); +} + +static void +prefs_menus_clear_callback (GtkWidget *widget, + Gimp *gimp) +{ + GError *error = NULL; + + if (! menus_clear (gimp, &error)) + { + prefs_message (GTK_MESSAGE_ERROR, TRUE, error->message); + g_clear_error (&error); + } + else + { + gtk_widget_set_sensitive (widget, FALSE); + + prefs_message (GTK_MESSAGE_INFO, TRUE, + _("Your keyboard shortcuts will be reset to " + "default values the next time you start GIMP.")); + } +} + +static void +prefs_menus_remove_callback (GtkWidget *widget, + Gimp *gimp) +{ + GtkWidget *dialog; + + dialog = gimp_message_dialog_new (_("Remove all Keyboard Shortcuts"), + GIMP_ICON_DIALOG_QUESTION, + gtk_widget_get_toplevel (widget), + GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT, + gimp_standard_help_func, NULL, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("Cl_ear"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + g_signal_connect_object (gtk_widget_get_toplevel (widget), "unmap", + G_CALLBACK (gtk_widget_destroy), + dialog, G_CONNECT_SWAPPED); + + gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box, + _("Do you really want to remove all " + "keyboard shortcuts from all menus?")); + + if (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK) + { + menus_remove (gimp); + } + + gtk_widget_destroy (dialog); +} + +static void +prefs_session_save_callback (GtkWidget *widget, + Gimp *gimp) +{ + GtkWidget *clear_button; + + session_save (gimp, TRUE); + + clear_button = g_object_get_data (G_OBJECT (widget), "clear-button"); + + if (clear_button) + gtk_widget_set_sensitive (clear_button, TRUE); +} + +static void +prefs_session_clear_callback (GtkWidget *widget, + Gimp *gimp) +{ + GError *error = NULL; + + if (! session_clear (gimp, &error)) + { + prefs_message (GTK_MESSAGE_ERROR, TRUE, error->message); + g_clear_error (&error); + } + else + { + gtk_widget_set_sensitive (widget, FALSE); + + prefs_message (GTK_MESSAGE_INFO, TRUE, + _("Your window setup will be reset to " + "default values the next time you start GIMP.")); + } +} + +static void +prefs_devices_save_callback (GtkWidget *widget, + Gimp *gimp) +{ + GtkWidget *clear_button; + + gimp_devices_save (gimp, TRUE); + + clear_button = g_object_get_data (G_OBJECT (widget), "clear-button"); + + if (clear_button) + gtk_widget_set_sensitive (clear_button, TRUE); +} + +static void +prefs_devices_clear_callback (GtkWidget *widget, + Gimp *gimp) +{ + GError *error = NULL; + + if (! gimp_devices_clear (gimp, &error)) + { + prefs_message (GTK_MESSAGE_ERROR, TRUE, error->message); + g_clear_error (&error); + } + else + { + gtk_widget_set_sensitive (widget, FALSE); + + prefs_message (GTK_MESSAGE_INFO, TRUE, + _("Your input device settings will be reset to " + "default values the next time you start GIMP.")); + } +} + +static void +prefs_search_clear_callback (GtkWidget *widget, + Gimp *gimp) +{ + gimp_action_history_clear (gimp); +} + +static void +prefs_tool_options_save_callback (GtkWidget *widget, + Gimp *gimp) +{ + GtkWidget *clear_button; + + gimp_tools_save (gimp, TRUE, TRUE); + + clear_button = g_object_get_data (G_OBJECT (widget), "clear-button"); + + if (clear_button) + gtk_widget_set_sensitive (clear_button, TRUE); +} + +static void +prefs_tool_options_clear_callback (GtkWidget *widget, + Gimp *gimp) +{ + GError *error = NULL; + + if (! gimp_tools_clear (gimp, &error)) + { + prefs_message (GTK_MESSAGE_ERROR, TRUE, error->message); + g_clear_error (&error); + } + else + { + gtk_widget_set_sensitive (widget, FALSE); + + prefs_message (GTK_MESSAGE_INFO, TRUE, + _("Your tool options will be reset to " + "default values the next time you start GIMP.")); + } +} + +static void +prefs_help_language_change_callback (GtkComboBox *combo, + Gimp *gimp) +{ + gchar *help_locales = NULL; + gchar *code; + + code = gimp_language_combo_box_get_code (GIMP_LANGUAGE_COMBO_BOX (combo)); + if (code && g_strcmp0 ("", code) != 0) + { + help_locales = g_strdup_printf ("%s:", code); + } + g_object_set (gimp->config, + "help-locales", help_locales? help_locales : "", + NULL); + g_free (code); + if (help_locales) + g_free (help_locales); +} + +static void +prefs_help_language_change_callback2 (GtkComboBox *combo, + GtkContainer *box) +{ + Gimp *gimp; + GtkLabel *label = NULL; + GtkImage *icon = NULL; + GList *children; + GList *iter; + const gchar *text; + const gchar *icon_name; + + gimp = g_object_get_data (G_OBJECT (box), "gimp"); + children = gtk_container_get_children (box); + for (iter = children; iter; iter = iter->next) + { + if (GTK_IS_LABEL (iter->data)) + { + label = iter->data; + } + else if (GTK_IS_IMAGE (iter->data)) + { + icon = iter->data; + } + } + if (gimp_help_user_manual_is_installed (gimp)) + { + text = _("There's a local installation of the user manual."); + icon_name = GIMP_ICON_DIALOG_INFORMATION; + } + else + { + text = _("The user manual is not installed locally."); + icon_name = GIMP_ICON_DIALOG_WARNING; + } + if (label) + { + gtk_label_set_text (label, text); + } + if (icon) + { + gtk_image_set_from_icon_name (icon, icon_name, + GTK_ICON_SIZE_BUTTON); + } + + g_list_free (children); +} + +static void +prefs_format_string_select_callback (GtkTreeSelection *sel, + GtkEntry *entry) +{ + GtkTreeModel *model; + GtkTreeIter iter; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + GValue val = G_VALUE_INIT; + + gtk_tree_model_get_value (model, &iter, 1, &val); + gtk_entry_set_text (entry, g_value_get_string (&val)); + g_value_unset (&val); + } +} + +static void +prefs_theme_select_callback (GtkTreeSelection *sel, + Gimp *gimp) +{ + GtkTreeModel *model; + GtkTreeIter iter; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + GValue val = G_VALUE_INIT; + + gtk_tree_model_get_value (model, &iter, 0, &val); + g_object_set_property (G_OBJECT (gimp->config), "theme", &val); + g_value_unset (&val); + } +} + +static void +prefs_theme_reload_callback (GtkWidget *button, + Gimp *gimp) +{ + g_object_notify (G_OBJECT (gimp->config), "theme"); +} + +static void +prefs_icon_theme_select_callback (GtkTreeSelection *sel, + Gimp *gimp) +{ + GtkTreeModel *model; + GtkTreeIter iter; + + if (gtk_tree_selection_get_selected (sel, &model, &iter)) + { + GValue val = G_VALUE_INIT; + + gtk_tree_model_get_value (model, &iter, 1, &val); + g_object_set_property (G_OBJECT (gimp->config), "icon-theme", &val); + g_value_unset (&val); + } +} + +static void +prefs_canvas_padding_color_changed (GtkWidget *button, + GtkWidget *combo) +{ + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (combo), + GIMP_CANVAS_PADDING_MODE_CUSTOM); +} + +static void +prefs_display_options_frame_add (Gimp *gimp, + GObject *object, + const gchar *label, + GtkContainer *parent) +{ + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *checks_vbox; + GtkWidget *table; + GtkWidget *combo; + GtkWidget *button; + + vbox = prefs_frame_new (label, parent, FALSE); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + checks_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); + gtk_box_pack_start (GTK_BOX (hbox), checks_vbox, TRUE, TRUE, 0); + gtk_widget_show (checks_vbox); + + prefs_check_button_add (object, "show-selection", + _("Show s_election"), + GTK_BOX (checks_vbox)); + prefs_check_button_add (object, "show-layer-boundary", + _("Show _layer boundary"), + GTK_BOX (checks_vbox)); + prefs_check_button_add (object, "show-canvas-boundary", + _("Show can_vas boundary"), + GTK_BOX (checks_vbox)); + prefs_check_button_add (object, "show-guides", + _("Show _guides"), + GTK_BOX (checks_vbox)); + prefs_check_button_add (object, "show-grid", + _("Show gri_d"), + GTK_BOX (checks_vbox)); + prefs_check_button_add (object, "show-sample-points", + _("Show _sample points"), + GTK_BOX (checks_vbox)); + + checks_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); + gtk_box_pack_start (GTK_BOX (hbox), checks_vbox, TRUE, TRUE, 0); + gtk_widget_show (checks_vbox); + +#ifndef GDK_WINDOWING_QUARTZ + prefs_check_button_add (object, "show-menubar", + _("Show _menubar"), + GTK_BOX (checks_vbox)); +#endif /* !GDK_WINDOWING_QUARTZ */ + prefs_check_button_add (object, "show-rulers", + _("Show _rulers"), + GTK_BOX (checks_vbox)); + prefs_check_button_add (object, "show-scrollbars", + _("Show scroll_bars"), + GTK_BOX (checks_vbox)); + prefs_check_button_add (object, "show-statusbar", + _("Show s_tatusbar"), + GTK_BOX (checks_vbox)); + + table = prefs_table_new (2, GTK_CONTAINER (vbox)); + + combo = prefs_enum_combo_box_add (object, "padding-mode", 0, 0, + _("Canvas _padding mode:"), + GTK_TABLE (table), 0, + NULL); + + button = prefs_color_button_add (object, "padding-color", + _("Custom p_adding color:"), + _("Select Custom Canvas Padding Color"), + GTK_TABLE (table), 1, NULL, + gimp_get_user_context (gimp)); + + g_signal_connect (button, "color-changed", + G_CALLBACK (prefs_canvas_padding_color_changed), + combo); + + prefs_check_button_add (object, "padding-in-show-all", + _("_Keep canvas padding in \"Show All\" mode"), + GTK_BOX (vbox)); +} + +static void +prefs_behavior_options_frame_add (Gimp *gimp, + GObject *object, + const gchar *label, + GtkContainer *parent) +{ + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *checks_vbox; + + vbox = prefs_frame_new (label, parent, FALSE); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + checks_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); + gtk_box_pack_start (GTK_BOX (hbox), checks_vbox, TRUE, TRUE, 0); + gtk_widget_show (checks_vbox); + + prefs_check_button_add (object, "snap-to-guides", + _("Snap to _Guides"), + GTK_BOX (checks_vbox)); + prefs_check_button_add (object, "snap-to-grid", + _("S_nap to Grid"), + GTK_BOX (checks_vbox)); + + checks_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); + gtk_box_pack_start (GTK_BOX (hbox), checks_vbox, TRUE, TRUE, 0); + gtk_widget_show (checks_vbox); + + prefs_check_button_add (object, "snap-to-canvas", + _("Snap to Canvas _Edges"), + GTK_BOX (checks_vbox)); + prefs_check_button_add (object, "snap-to-path", + _("Snap to _Active Path"), + GTK_BOX (checks_vbox)); +} + +static void +prefs_help_func (const gchar *help_id, + gpointer help_data) +{ + GtkWidget *prefs_box; + + prefs_box = g_object_get_data (G_OBJECT (help_data), "prefs-box"); + + help_id = gimp_prefs_box_get_current_help_id (GIMP_PREFS_BOX (prefs_box)); + + gimp_standard_help_func (help_id, NULL); +} + +static void +prefs_message (GtkMessageType type, + gboolean destroy_with_parent, + const gchar *message) +{ + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (GTK_WINDOW (prefs_dialog), + destroy_with_parent ? + GTK_DIALOG_DESTROY_WITH_PARENT : 0, + type, GTK_BUTTONS_OK, + "%s", message); + + g_signal_connect (dialog, "response", + G_CALLBACK (gtk_widget_destroy), + NULL); + gtk_widget_show (dialog); +} + +static GtkWidget * +prefs_dialog_new (Gimp *gimp, + GimpConfig *config) +{ + GtkWidget *dialog; + GtkTreeIter top_iter; + GtkTreeIter child_iter; + + GtkWidget *prefs_box; + GtkSizeGroup *size_group = NULL; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *vbox2; + GtkWidget *vbox3; + GtkWidget *button; + GtkWidget *button2; + GtkWidget *table; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *calibrate_button; + GSList *group; + GtkWidget *separator; + GtkWidget *editor; + gint i; + + GObject *object; + GimpCoreConfig *core_config; + GimpDisplayConfig *display_config; + GList *manuals; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + g_return_val_if_fail (GIMP_IS_CONFIG (config), NULL); + + object = G_OBJECT (config); + core_config = GIMP_CORE_CONFIG (config); + display_config = GIMP_DISPLAY_CONFIG (config); + + dialog = gimp_dialog_new (_("Preferences"), "gimp-preferences", + NULL, 0, + prefs_help_func, + GIMP_HELP_PREFS_DIALOG, + + _("_Reset"), RESPONSE_RESET, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_OK"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + RESPONSE_RESET, + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + g_signal_connect (dialog, "response", + G_CALLBACK (prefs_response), + dialog); + + /* The prefs box */ + prefs_box = gimp_prefs_box_new (); + gtk_container_set_border_width (GTK_CONTAINER (prefs_box), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + prefs_box, TRUE, TRUE, 0); + gtk_widget_show (prefs_box); + + g_object_set_data (G_OBJECT (dialog), "prefs-box", prefs_box); + + + /**********************/ + /* System Resources */ + /**********************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-system-resources", + _("System Resources"), + _("System Resources"), + GIMP_HELP_PREFS_SYSTEM_RESOURCES, + NULL, + &top_iter); + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + vbox2 = prefs_frame_new (_("Resource Consumption"), + GTK_CONTAINER (vbox), FALSE); + +#ifdef ENABLE_MP + table = prefs_table_new (6, GTK_CONTAINER (vbox2)); +#else + table = prefs_table_new (5, GTK_CONTAINER (vbox2)); +#endif /* ENABLE_MP */ + + prefs_spin_button_add (object, "undo-levels", 1.0, 5.0, 0, + _("Minimal number of _undo levels:"), + GTK_TABLE (table), 0, size_group); + prefs_memsize_entry_add (object, "undo-size", + _("Maximum undo _memory:"), + GTK_TABLE (table), 1, size_group); + prefs_memsize_entry_add (object, "tile-cache-size", + _("Tile cache _size:"), + GTK_TABLE (table), 2, size_group); + prefs_memsize_entry_add (object, "max-new-image-size", + _("Maximum _new image size:"), + GTK_TABLE (table), 3, size_group); + + prefs_compression_combo_box_add (object, "swap-compression", + _("S_wap compression:"), + GTK_TABLE (table), 4, size_group); + +#ifdef ENABLE_MP + prefs_spin_button_add (object, "num-processors", 1.0, 4.0, 0, + _("Number of _threads to use:"), + GTK_TABLE (table), 5, size_group); +#endif /* ENABLE_MP */ + + /* Internet access */ +#ifdef CHECK_UPDATE + vbox2 = prefs_frame_new (_("Network access"), GTK_CONTAINER (vbox), + FALSE); + + prefs_check_button_add (object, "check-updates", + _("Check for updates (requires internet)"), + GTK_BOX (vbox2)); +#endif + + /* Image Thumbnails */ + vbox2 = prefs_frame_new (_("Image Thumbnails"), GTK_CONTAINER (vbox), FALSE); + + table = prefs_table_new (2, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "thumbnail-size", 0, 0, + _("Size of _thumbnails:"), + GTK_TABLE (table), 0, size_group); + + prefs_memsize_entry_add (object, "thumbnail-filesize-limit", + _("Maximum _filesize for thumbnailing:"), + GTK_TABLE (table), 1, size_group); + + /* Document History */ + vbox2 = prefs_frame_new (_("Document History"), GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add (object, "save-document-history", + _("_Keep record of used files in the Recent Documents list"), + GTK_BOX (vbox2)); + + g_clear_object (&size_group); + + + /***************/ + /* Debugging */ + /***************/ + /* No debugging preferences are needed on win32. Either GIMP has been + * built with DrMinGW support (HAVE_EXCHNDL) or not. If it has, then + * the backtracing is enabled and can't be disabled. It assume it will + * work only upon a crash. + */ +#ifndef G_OS_WIN32 + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-wilber-eek", /* TODO: icon needed. */ + _("Debugging"), + _("Debugging"), + GIMP_HELP_PREFS_DEBUGGING, + NULL, + &top_iter); + + hbox = g_object_new (GIMP_TYPE_HINT_BOX, + "icon-name", GIMP_ICON_DIALOG_WARNING, + "hint", _("We hope you will never need these " + "settings, but as all software, GIMP " + "has bugs, and crashes can occur. If it " + "happens, you can help us by reporting " + "bugs."), + NULL); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + vbox2 = prefs_frame_new (_("Bug Reporting"), + GTK_CONTAINER (vbox), FALSE); + + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + button = prefs_enum_combo_box_add (object, "debug-policy", 0, 0, + _("Debug _policy:"), + GTK_TABLE (table), 0, NULL); + + /* Check existence of gdb or lldb to activate the preference, as a + * good hint of its prerequisite, unless backtrace() API exists, in + * which case the feature is always available. + */ + hbox = NULL; + if (! gimp_stack_trace_available (TRUE)) + { +#ifndef HAVE_EXECINFO_H + hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING, + _("This feature requires \"gdb\" or \"lldb\" installed on your system.")); + gtk_widget_set_sensitive (button, FALSE); +#else + hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING, + _("This feature is more efficient with \"gdb\" or \"lldb\" installed on your system.")); +#endif /* ! HAVE_EXECINFO_H */ + } + if (hbox) + gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); + +#endif /* ! G_OS_WIN32 */ + + /**********************/ + /* Color Management */ + /**********************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-color-management", + _("Color Management"), + _("Color Management"), + GIMP_HELP_PREFS_COLOR_MANAGEMENT, + NULL, + &top_iter); + + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + button = gimp_prefs_box_set_page_resettable (GIMP_PREFS_BOX (prefs_box), + vbox, + _("R_eset Color Management")); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_color_management_reset), + config); + + { + GObject *color_config = G_OBJECT (core_config->color_management); + GtkListStore *store; + gchar *filename; + gint row = 0; + + filename = gimp_personal_rc_file ("profilerc"); + store = gimp_color_profile_store_new (filename); + g_free (filename); + + gimp_color_profile_store_add_file (GIMP_COLOR_PROFILE_STORE (store), + NULL, NULL); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + table = prefs_table_new (1, GTK_CONTAINER (vbox)); + + prefs_enum_combo_box_add (color_config, "mode", 0, 0, + _("Image display _mode:"), + GTK_TABLE (table), row++, NULL); + + /* Color Managed Display */ + vbox2 = prefs_frame_new (_("Color Managed Display"), GTK_CONTAINER (vbox), + FALSE); + + table = prefs_table_new (4, GTK_CONTAINER (vbox2)); + row = 0; + + prefs_profile_combo_box_add (color_config, + "display-profile", + store, + _("Select Monitor Color Profile"), + _("_Monitor profile:"), + GTK_TABLE (table), row++, size_group, + object, "color-profile-path"); + + button = gimp_prop_check_button_new (color_config, + "display-profile-from-gdk", + _("_Try to use the system monitor " + "profile")); + gtk_table_attach_defaults (GTK_TABLE (table), + button, 1, 2, row, row + 1); + gtk_widget_show (button); + row++; + + prefs_enum_combo_box_add (color_config, + "display-rendering-intent", 0, 0, + _("_Rendering intent:"), + GTK_TABLE (table), row++, size_group); + + button = gimp_prop_check_button_new (color_config, + "display-use-black-point-compensation", + _("Use _black point compensation")); + gtk_table_attach_defaults (GTK_TABLE (table), + button, 1, 2, row, row + 1); + gtk_widget_show (button); + row++; + + prefs_boolean_combo_box_add (color_config, + "display-optimize", + _("Speed"), + _("Precision / Color Fidelity"), + _("_Optimize image display for:"), + GTK_TABLE (table), row++, size_group); + + /* Print Simulation (Soft-proofing) */ + vbox2 = prefs_frame_new (_("Soft-Proofing"), + GTK_CONTAINER (vbox), + FALSE); + + table = prefs_table_new (4, GTK_CONTAINER (vbox2)); + row = 0; + + prefs_profile_combo_box_add (color_config, + "printer-profile", + store, + _("Select Soft-Proofing Color Profile"), + _("_Soft-proofing profile:"), + GTK_TABLE (table), row++, size_group, + object, "color-profile-path"); + + prefs_enum_combo_box_add (color_config, + "simulation-rendering-intent", 0, 0, + _("Re_ndering intent:"), + GTK_TABLE (table), row++, size_group); + + button = gimp_prop_check_button_new (color_config, + "simulation-use-black-point-compensation", + _("Use black _point compensation")); + gtk_table_attach_defaults (GTK_TABLE (table), + button, 1, 2, row, row + 1); + gtk_widget_show (button); + row++; + + prefs_boolean_combo_box_add (color_config, + "simulation-optimize", + _("Speed"), + _("Precision / Color Fidelity"), + _("O_ptimize soft-proofing for:"), + GTK_TABLE (table), row++, size_group); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_table_attach_defaults (GTK_TABLE (table), hbox, 1, 2, row, row + 1); + gtk_widget_show (hbox); + row++; + + button = gimp_prop_check_button_new (color_config, "simulation-gamut-check", + _("Mar_k out of gamut colors")); + gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); + gtk_widget_show (button); + + button = gimp_prop_color_button_new (color_config, "out-of-gamut-color", + _("Select Warning Color"), + PREFS_COLOR_BUTTON_WIDTH, + PREFS_COLOR_BUTTON_HEIGHT, + GIMP_COLOR_AREA_FLAT); + gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + gimp_color_panel_set_context (GIMP_COLOR_PANEL (button), + gimp_get_user_context (gimp)); + + /* Preferred profiles */ + vbox2 = prefs_frame_new (_("Preferred Profiles"), GTK_CONTAINER (vbox), + FALSE); + + table = prefs_table_new (3, GTK_CONTAINER (vbox2)); + row = 0; + + prefs_profile_combo_box_add (color_config, + "rgb-profile", + store, + _("Select Preferred RGB Color Profile"), + _("_RGB profile:"), + GTK_TABLE (table), row++, size_group, + object, "color-profile-path"); + + prefs_profile_combo_box_add (color_config, + "gray-profile", + store, + _("Select Preferred Grayscale Color Profile"), + _("_Grayscale profile:"), + GTK_TABLE (table), row++, size_group, + object, "color-profile-path"); + + prefs_profile_combo_box_add (color_config, + "cmyk-profile", + store, + _("Select CMYK Color Profile"), + _("_CMYK profile:"), + GTK_TABLE (table), row++, size_group, + object, "color-profile-path"); + + /* Policies */ + vbox2 = prefs_frame_new (_("Policies"), GTK_CONTAINER (vbox), + FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + button = prefs_enum_combo_box_add (object, "color-profile-policy", 0, 0, + _("_File Open behaviour:"), + GTK_TABLE (table), 0, size_group); + + /* Filter Dialogs */ + vbox2 = prefs_frame_new (_("Filter Dialogs"), GTK_CONTAINER (vbox), + FALSE); + + button = prefs_check_button_add (object, "filter-tool-show-color-options", + _("Show _advanced color options"), + GTK_BOX (vbox2)); + + g_clear_object (&size_group); + + g_object_unref (store); + } + + + /***************************/ + /* Image Import / Export */ + /***************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-import-export", + _("Image Import & Export"), + _("Image Import & Export"), + GIMP_HELP_PREFS_IMPORT_EXPORT, + NULL, + &top_iter); + + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + /* Import Policies */ + vbox2 = prefs_frame_new (_("Import Policies"), + GTK_CONTAINER (vbox), FALSE); + + button = prefs_check_button_add (object, "import-promote-float", + _("Promote imported images to " + "_floating point precision"), + GTK_BOX (vbox2)); + + vbox3 = prefs_frame_new (NULL, GTK_CONTAINER (vbox2), FALSE); + g_object_bind_property (button, "active", + vbox3, "sensitive", + G_BINDING_SYNC_CREATE); + button = prefs_check_button_add (object, "import-promote-dither", + _("_Dither images when promoting to " + "floating point"), + GTK_BOX (vbox3)); + + button = prefs_check_button_add (object, "import-add-alpha", + _("_Add an alpha channel to imported images"), + GTK_BOX (vbox2)); + + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + button = prefs_enum_combo_box_add (object, "color-profile-policy", 0, 0, + _("Color _profile policy:"), + GTK_TABLE (table), 0, size_group); + + /* Export Policies */ + vbox2 = prefs_frame_new (_("Export Policies"), + GTK_CONTAINER (vbox), FALSE); + + button = prefs_check_button_add (object, "export-color-profile", + _("Export the i_mage's color profile by default"), + GTK_BOX (vbox2)); + button = prefs_check_button_add (object, "export-metadata-exif", + /* Translators: label for + * configuration option (checkbox). + * It determines how file export + * plug-ins handle Exif by default. + */ + _("Export _Exif metadata by default when available"), + GTK_BOX (vbox2)); + button = prefs_check_button_add (object, "export-metadata-xmp", + /* Translators: label for + * configuration option (checkbox). + * It determines how file export + * plug-ins handle XMP by default. + */ + _("Export _XMP metadata by default when available"), + GTK_BOX (vbox2)); + button = prefs_check_button_add (object, "export-metadata-iptc", + /* Translators: label for + * configuration option (checkbox). + * It determines how file export + * plug-ins handle IPTC by default. + */ + _("Export _IPTC metadata by default when available"), + GTK_BOX (vbox2)); + hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING, + _("Metadata can contain sensitive information.")); + gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); + + /* Export File Type */ + vbox2 = prefs_frame_new (_("Export File Type"), GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "export-file-type", 0, 0, + _("Default export file t_ype:"), + GTK_TABLE (table), 0, size_group); + + /* Raw Image Importer */ + vbox2 = prefs_frame_new (_("Raw Image Importer"), + GTK_CONTAINER (vbox), TRUE); + + { + GtkWidget *scrolled_window; + GtkWidget *view; + + scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), + GTK_SHADOW_IN); + gtk_box_pack_start (GTK_BOX (vbox2), scrolled_window, TRUE, TRUE, 0); + gtk_widget_show (scrolled_window); + + view = gimp_plug_in_view_new (gimp->plug_in_manager->display_raw_load_procs); + gimp_plug_in_view_set_plug_in (GIMP_PLUG_IN_VIEW (view), + core_config->import_raw_plug_in); + gtk_container_add (GTK_CONTAINER (scrolled_window), view); + gtk_widget_show (view); + + g_signal_connect (view, "changed", + G_CALLBACK (prefs_import_raw_procedure_callback), + config); + } + + g_clear_object (&size_group); + + + /****************/ + /* Playground */ + /****************/ + if (gimp->show_playground) + { + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-playground", + _("Experimental Playground"), + _("Playground"), + GIMP_HELP_PREFS_PLAYGROUND, + NULL, + &top_iter); + + hbox = g_object_new (GIMP_TYPE_HINT_BOX, + "icon-name", GIMP_ICON_DIALOG_WARNING, + "hint", _("These features are unfinished, buggy " + "and may crash GIMP. It is unadvised to " + "use them unless you really know what " + "you are doing or you intend to contribute " + "patches."), + NULL); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + /* Hardware Acceleration */ + vbox2 = prefs_frame_new (_("Hardware Acceleration"), GTK_CONTAINER (vbox), + FALSE); + + hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING, + _("OpenCL drivers and support are experimental, " + "expect slowdowns and possible crashes " + "(please report).")); + gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); + + prefs_check_button_add (object, "use-opencl", + _("Use O_penCL"), + GTK_BOX (vbox2)); + + /* Very unstable tools */ + vbox2 = prefs_frame_new (_("Insane Options"), + GTK_CONTAINER (vbox), FALSE); + + button = prefs_check_button_add (object, "playground-npd-tool", + _("_N-Point Deformation tool"), + GTK_BOX (vbox2)); + button = prefs_check_button_add (object, "playground-seamless-clone-tool", + _("_Seamless Clone tool"), + GTK_BOX (vbox2)); + } + + + /******************/ + /* Tool Options */ + /******************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-tool-options", + C_("preferences", "Tool Options"), + C_("preferences", "Tool Options"), + GIMP_HELP_PREFS_TOOL_OPTIONS, + NULL, + &top_iter); + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + /* General */ + vbox2 = prefs_frame_new (_("General"), GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add (object, "edit-non-visible", + _("Allow _editing on non-visible layers"), + GTK_BOX (vbox2)); + + prefs_check_button_add (object, "save-tool-options", + _("_Save tool options on exit"), + GTK_BOX (vbox2)); + + button = prefs_button_add (GIMP_ICON_DOCUMENT_SAVE, + _("Save Tool Options _Now"), + GTK_BOX (vbox2)); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_tool_options_save_callback), + gimp); + + button2 = prefs_button_add (GIMP_ICON_RESET, + _("_Reset Saved Tool Options to " + "Default Values"), + GTK_BOX (vbox2)); + g_signal_connect (button2, "clicked", + G_CALLBACK (prefs_tool_options_clear_callback), + gimp); + + g_object_set_data (G_OBJECT (button), "clear-button", button2); + + /* Scaling */ + vbox2 = prefs_frame_new (_("Scaling"), GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "interpolation-type", 0, 0, + _("Default _interpolation:"), + GTK_TABLE (table), 0, size_group); + + g_object_unref (size_group); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + /* Global Brush, Pattern, ... */ + vbox2 = prefs_frame_new (_("Paint Options Shared Between Tools"), + GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add_with_icon (object, "global-brush", + _("_Brush"), GIMP_ICON_BRUSH, + GTK_BOX (vbox2), size_group); + prefs_check_button_add_with_icon (object, "global-dynamics", + _("_Dynamics"), GIMP_ICON_DYNAMICS, + GTK_BOX (vbox2), size_group); + prefs_check_button_add_with_icon (object, "global-pattern", + _("_Pattern"), GIMP_ICON_PATTERN, + GTK_BOX (vbox2), size_group); + prefs_check_button_add_with_icon (object, "global-gradient", + _("_Gradient"), GIMP_ICON_GRADIENT, + GTK_BOX (vbox2), size_group); + + /* Move Tool */ + vbox2 = prefs_frame_new (_("Move Tool"), + GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add_with_icon (object, "move-tool-changes-active", + _("Set _layer or path as active"), + GIMP_ICON_TOOL_MOVE, + GTK_BOX (vbox2), size_group); + + g_clear_object (&size_group); + + + /*******************/ + /* Default Image */ + /*******************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-new-image", + _("Default New Image"), + _("Default Image"), + GIMP_HELP_PREFS_NEW_IMAGE, + NULL, + &top_iter); + + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + table = prefs_table_new (1, GTK_CONTAINER (vbox)); + + { + GtkWidget *combo; + + combo = gimp_container_combo_box_new (gimp->templates, + gimp_get_user_context (gimp), + 16, 0); + gimp_table_attach_aligned (GTK_TABLE (table), 0, 0, + _("_Template:"), 0.0, 0.5, + combo, 1, FALSE); + + gimp_container_view_select_item (GIMP_CONTAINER_VIEW (combo), NULL); + + g_signal_connect (combo, "select-item", + G_CALLBACK (prefs_template_select_callback), + core_config->default_image); + } + + editor = gimp_template_editor_new (core_config->default_image, gimp, FALSE); + gimp_template_editor_show_advanced (GIMP_TEMPLATE_EDITOR (editor), TRUE); + gtk_box_pack_start (GTK_BOX (vbox), editor, FALSE, FALSE, 0); + gtk_widget_show (editor); + + /* Quick Mask Color */ + vbox2 = prefs_frame_new (_("Quick Mask"), GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_color_button_add (object, "quick-mask-color", + _("Quick Mask color:"), + _("Set the default Quick Mask color"), + GTK_TABLE (table), 0, NULL, + gimp_get_user_context (gimp)); + + + /**********************************/ + /* Default Image / Default Grid */ + /**********************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-default-grid", + _("Default Image Grid"), + _("Default Grid"), + GIMP_HELP_PREFS_DEFAULT_GRID, + &top_iter, + &child_iter); + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + /* Grid */ + editor = gimp_grid_editor_new (core_config->default_grid, + gimp_get_user_context (gimp), + gimp_template_get_resolution_x (core_config->default_image), + gimp_template_get_resolution_y (core_config->default_image)); + gtk_box_pack_start (GTK_BOX (vbox), editor, TRUE, TRUE, 0); + gtk_widget_show (editor); + + + /***************/ + /* Interface */ + /***************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-interface", + _("User Interface"), + _("Interface"), + GIMP_HELP_PREFS_INTERFACE, + NULL, + &top_iter); + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + /* Language */ + + /* Only add the language entry if the iso-codes package is available. */ +#ifdef HAVE_ISO_CODES + vbox2 = prefs_frame_new (_("Language"), GTK_CONTAINER (vbox), FALSE); + + prefs_language_combo_box_add (object, "language", GTK_BOX (vbox2)); +#endif + + /* Style */ + vbox2 = prefs_frame_new (_("Style"), GTK_CONTAINER (vbox), FALSE); + + button = prefs_check_button_add (object, "compact-sliders", + _("Use co_mpact sliders"), + GTK_BOX (vbox2)); + + /* Previews */ + vbox2 = prefs_frame_new (_("Previews"), GTK_CONTAINER (vbox), FALSE); + + button = prefs_check_button_add (object, "layer-previews", + _("_Enable layer & channel previews"), + GTK_BOX (vbox2)); + + vbox3 = prefs_frame_new (NULL, GTK_CONTAINER (vbox2), FALSE); + g_object_bind_property (button, "active", + vbox3, "sensitive", + G_BINDING_SYNC_CREATE); + button = prefs_check_button_add (object, "group-layer-previews", + _("Enable layer _group previews"), + GTK_BOX (vbox3)); + + table = prefs_table_new (3, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "layer-preview-size", 0, 0, + _("_Default layer & channel preview size:"), + GTK_TABLE (table), 0, NULL); + prefs_enum_combo_box_add (object, "undo-preview-size", 0, 0, + _("_Undo preview size:"), + GTK_TABLE (table), 1, NULL); + prefs_enum_combo_box_add (object, "navigation-preview-size", 0, 0, + _("Na_vigation preview size:"), + GTK_TABLE (table), 2, NULL); + + /* Keyboard Shortcuts */ + vbox2 = prefs_frame_new (_("Keyboard Shortcuts"), + GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add (object, "can-change-accels", + _("_Use dynamic keyboard shortcuts"), + GTK_BOX (vbox2)); + + button = prefs_button_add (GIMP_ICON_PREFERENCES_SYSTEM, + _("Configure _Keyboard Shortcuts..."), + GTK_BOX (vbox2)); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_keyboard_shortcuts_dialog), + gimp); + + prefs_check_button_add (object, "save-accels", + _("_Save keyboard shortcuts on exit"), + GTK_BOX (vbox2)); + + button = prefs_button_add (GIMP_ICON_DOCUMENT_SAVE, + _("Save Keyboard Shortcuts _Now"), + GTK_BOX (vbox2)); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_menus_save_callback), + gimp); + + button2 = prefs_button_add (GIMP_ICON_RESET, + _("_Reset Keyboard Shortcuts to Default Values"), + GTK_BOX (vbox2)); + g_signal_connect (button2, "clicked", + G_CALLBACK (prefs_menus_clear_callback), + gimp); + + g_object_set_data (G_OBJECT (button), "clear-button", button2); + + button = prefs_button_add (GIMP_ICON_EDIT_CLEAR, + _("Remove _All Keyboard Shortcuts"), + GTK_BOX (vbox2)); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_menus_remove_callback), + gimp); + + + /***********************/ + /* Interface / Theme */ + /***********************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-theme", + _("Theme"), + _("Theme"), + GIMP_HELP_PREFS_THEME, + &top_iter, + &child_iter); + + vbox2 = prefs_frame_new (_("Select Theme"), GTK_CONTAINER (vbox), TRUE); + + { + GtkWidget *scrolled_win; + GtkListStore *list_store; + GtkWidget *view; + GtkTreeSelection *sel; + gchar **themes; + gint n_themes; + gint i; + + scrolled_win = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_set_size_request (scrolled_win, -1, 80); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (vbox2), scrolled_win, TRUE, TRUE, 0); + gtk_widget_show (scrolled_win); + + list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store)); + gtk_container_add (GTK_CONTAINER (scrolled_win), view); + gtk_widget_show (view); + + g_object_unref (list_store); + + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), 0, + _("Theme"), + gtk_cell_renderer_text_new (), + "text", 0, + NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), 1, + _("Folder"), + gtk_cell_renderer_text_new (), + "text", 1, + NULL); + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + + themes = themes_list_themes (gimp, &n_themes); + + for (i = 0; i < n_themes; i++) + { + GtkTreeIter iter; + GFile *theme_dir = themes_get_theme_dir (gimp, themes[i]); + + gtk_list_store_append (list_store, &iter); + gtk_list_store_set (list_store, &iter, + 0, themes[i], + 1, gimp_file_get_utf8_name (theme_dir), + -1); + + if (GIMP_GUI_CONFIG (object)->theme && + ! strcmp (GIMP_GUI_CONFIG (object)->theme, themes[i])) + { + GtkTreePath *path; + + path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter); + + gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), path, NULL, FALSE); + gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (view), path, + NULL, FALSE, 0.0, 0.0); + + gtk_tree_path_free (path); + } + } + + g_strfreev (themes); + + g_signal_connect (sel, "changed", + G_CALLBACK (prefs_theme_select_callback), + gimp); + } + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + button = prefs_button_add (GIMP_ICON_VIEW_REFRESH, + _("Reload C_urrent Theme"), + GTK_BOX (hbox)); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_theme_reload_callback), + gimp); + + + /****************************/ + /* Interface / Icon Theme */ + /****************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-icon-theme", + _("Icon Theme"), + _("Icon Theme"), + GIMP_HELP_PREFS_ICON_THEME, + &top_iter, + &child_iter); + + vbox2 = prefs_frame_new (_("Select an Icon Theme"), GTK_CONTAINER (vbox), TRUE); + + { + GtkWidget *scrolled_win; + GtkWidget *icon_size_scale; + GtkListStore *list_store; + GtkWidget *view; + GtkTreeSelection *sel; + gchar **icon_themes; + gint n_icon_themes; + gint i; + + scrolled_win = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_set_size_request (scrolled_win, -1, 80); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (vbox2), scrolled_win, TRUE, TRUE, 0); + gtk_widget_show (scrolled_win); + + list_store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store)); + gtk_container_add (GTK_CONTAINER (scrolled_win), view); + gtk_widget_show (view); + + g_object_unref (list_store); + + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), 0, + NULL, + gtk_cell_renderer_pixbuf_new (), + "pixbuf", 0, + NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), 1, + _("Icon Theme"), + gtk_cell_renderer_text_new (), + "text", 1, + NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), 2, + _("Folder"), + gtk_cell_renderer_text_new (), + "text", 2, + NULL); + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + + icon_themes = icon_themes_list_themes (gimp, &n_icon_themes); + + for (i = 0; i < n_icon_themes; i++) + { + GtkTreeIter iter; + GFile *icon_theme_dir = icon_themes_get_theme_dir (gimp, icon_themes[i]); + GFile *icon_theme_search_path = g_file_get_parent (icon_theme_dir); + GtkIconTheme *theme; + gchar *example; + GdkPixbuf *pixbuf; + + theme = gtk_icon_theme_new (); + gtk_icon_theme_prepend_search_path (theme, gimp_file_get_utf8_name(icon_theme_search_path)); + g_object_unref (icon_theme_search_path); + gtk_icon_theme_set_custom_theme (theme, icon_themes[i]); + + example = gtk_icon_theme_get_example_icon_name (theme); + if (! example) + { + /* If the icon theme didn't explicitly specify an example + * icon, try "gimp-wilber". + */ + example = g_strdup ("gimp-wilber"); + } + pixbuf = gtk_icon_theme_load_icon (theme, example, 16, 0, NULL); + + gtk_list_store_append (list_store, &iter); + gtk_list_store_set (list_store, &iter, + 0, pixbuf, + 1, icon_themes[i], + 2, gimp_file_get_utf8_name (icon_theme_dir), + -1); + g_object_unref (theme); + g_object_unref (pixbuf); + g_free (example); + + if (GIMP_GUI_CONFIG (object)->icon_theme && + ! strcmp (GIMP_GUI_CONFIG (object)->icon_theme, icon_themes[i])) + { + GtkTreePath *path; + + path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter); + + gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), path, NULL, FALSE); + gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (view), path, + NULL, FALSE, 0.0, 0.0); + + gtk_tree_path_free (path); + } + } + + g_strfreev (icon_themes); + + g_signal_connect (sel, "changed", + G_CALLBACK (prefs_icon_theme_select_callback), + gimp); + + icon_size_scale = gimp_icon_size_scale_new (gimp); + gtk_box_pack_start (GTK_BOX (vbox), icon_size_scale, FALSE, FALSE, 0); + gtk_widget_show (icon_size_scale); + } + + + /*************************/ + /* Interface / Toolbox */ + /*************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-toolbox", + _("Toolbox"), + _("Toolbox"), + GIMP_HELP_PREFS_TOOLBOX, + &top_iter, + &child_iter); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + /* Appearance */ + vbox2 = prefs_frame_new (_("Appearance"), + GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add_with_icon (object, "toolbox-wilber", + _("Show GIMP _logo (drag-and-drop target)"), + GIMP_ICON_WILBER, + GTK_BOX (vbox2), size_group); + prefs_check_button_add_with_icon (object, "toolbox-color-area", + _("Show _foreground & background color"), + GIMP_ICON_COLORS_DEFAULT, + GTK_BOX (vbox2), size_group); + prefs_check_button_add_with_icon (object, "toolbox-foo-area", + _("Show active _brush, pattern & gradient"), + GIMP_ICON_BRUSH, + GTK_BOX (vbox2), size_group); + prefs_check_button_add_with_icon (object, "toolbox-image-area", + _("Show active _image"), + GIMP_ICON_IMAGE, + GTK_BOX (vbox2), size_group); + + separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); + gtk_box_pack_start (GTK_BOX (vbox2), separator, FALSE, FALSE, 0); + gtk_widget_show (separator); + + button = prefs_check_button_add_with_icon (object, "toolbox-groups", + _("Use tool _groups"), + NULL, + GTK_BOX (vbox2), size_group); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new (NULL); + gtk_misc_set_padding (GTK_MISC (label), 2, 2); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + gtk_size_group_add_widget (size_group, label); + + vbox3 = prefs_frame_new (NULL, GTK_CONTAINER (hbox), TRUE); + g_object_bind_property (button, "active", + vbox3, "sensitive", + G_BINDING_SYNC_CREATE); + + table = prefs_table_new (1, GTK_CONTAINER (vbox3)); + + prefs_enum_combo_box_add (object, "toolbox-group-menu-mode", 0, 0, + _("_Menu mode:"), + GTK_TABLE (table), 0, + NULL); + + g_clear_object (&size_group); + + /* Tool Editor */ + vbox2 = prefs_frame_new (_("Tools Configuration"), + GTK_CONTAINER (vbox), TRUE); + tool_editor = gimp_tool_editor_new (gimp->tool_item_list, gimp->user_context, + GIMP_VIEW_SIZE_SMALL, 1); + + gtk_box_pack_start (GTK_BOX (vbox2), tool_editor, TRUE, TRUE, 0); + gtk_widget_show (tool_editor); + + + /*********************************/ + /* Interface / Dialog Defaults */ + /*********************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + /* FIXME need an icon */ + "gimp-prefs-controllers", + _("Dialog Defaults"), + _("Dialog Defaults"), + GIMP_HELP_PREFS_DIALOG_DEFAULTS, + &top_iter, + &child_iter); + + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + button = gimp_prefs_box_set_page_resettable (GIMP_PREFS_BOX (prefs_box), + vbox, + _("Reset Dialog _Defaults")); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_dialog_defaults_reset), + config); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + /* Color profile import dialog */ + vbox2 = prefs_frame_new (_("Color Profile Import Dialog"), GTK_CONTAINER (vbox), + FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + button = prefs_enum_combo_box_add (object, "color-profile-policy", 0, 0, + _("Color profile policy:"), + GTK_TABLE (table), 0, size_group); + + /* All color profile chooser dialogs */ + vbox2 = prefs_frame_new (_("Color Profile File Dialogs"), GTK_CONTAINER (vbox), + FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_file_chooser_button_add (object, "color-profile-path", + _("Profile folder:"), + _("Select Default Folder for Color Profiles"), + GTK_TABLE (table), 0, size_group); + + /* Convert to Color Profile Dialog */ + vbox2 = prefs_frame_new (_("Convert to Color Profile Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "image-convert-profile-intent", 0, 0, + _("Rendering intent:"), + GTK_TABLE (table), 0, size_group); + + prefs_check_button_add (object, "image-convert-profile-black-point-compensation", + _("Black point compensation"), + GTK_BOX (vbox2)); + + /* Convert Precision Dialog */ + vbox2 = prefs_frame_new (_("Precision Conversion Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (3, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, + "image-convert-precision-layer-dither-method", + 0, 0, + _("Dither layers:"), + GTK_TABLE (table), 0, size_group); + prefs_enum_combo_box_add (object, + "image-convert-precision-text-layer-dither-method", + 0, 0, + _("Dither text layers:"), + GTK_TABLE (table), 1, size_group); + prefs_enum_combo_box_add (object, + "image-convert-precision-channel-dither-method", + 0, 0, + _("Dither channels/masks:"), + GTK_TABLE (table), 2, size_group); + + /* Convert Indexed Dialog */ + vbox2 = prefs_frame_new (_("Indexed Conversion Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (2, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "image-convert-indexed-palette-type", 0, 0, + _("Colormap:"), + GTK_TABLE (table), 0, size_group); + prefs_spin_button_add (object, "image-convert-indexed-max-colors", 1.0, 8.0, 0, + _("Maximum number of colors:"), + GTK_TABLE (table), 1, size_group); + + prefs_check_button_add (object, "image-convert-indexed-remove-duplicates", + _("Remove unused and duplicate colors " + "from colormap"), + GTK_BOX (vbox2)); + + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + prefs_enum_combo_box_add (object, "image-convert-indexed-dither-type", 0, 0, + _("Color dithering:"), + GTK_TABLE (table), 0, size_group); + + prefs_check_button_add (object, "image-convert-indexed-dither-alpha", + _("Enable dithering of transparency"), + GTK_BOX (vbox2)); + prefs_check_button_add (object, "image-convert-indexed-dither-text-layers", + _("Enable dithering of text layers"), + GTK_BOX (vbox2)); + + /* Filter Dialogs */ + vbox2 = prefs_frame_new (_("Filter Dialogs"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_spin_button_add (object, "filter-tool-max-recent", 1.0, 8.0, 0, + _("Keep recent settings:"), + GTK_TABLE (table), 1, size_group); + + button = prefs_check_button_add (object, "filter-tool-use-last-settings", + _("Default to the last used settings"), + GTK_BOX (vbox2)); + button = prefs_check_button_add (object, "filter-tool-show-color-options", + _("Show advanced color options"), + GTK_BOX (vbox2)); + + /* Canvas Size Dialog */ + vbox2 = prefs_frame_new (_("Canvas Size Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (2, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "image-resize-fill-type", 0, 0, + _("Fill with:"), + GTK_TABLE (table), 0, size_group); + prefs_enum_combo_box_add (object, "image-resize-layer-set", 0, 0, + _("Resize layers:"), + GTK_TABLE (table), 1, size_group); + + prefs_check_button_add (object, "image-resize-resize-text-layers", + _("Resize text layers"), + GTK_BOX (vbox2)); + + /* New Layer Dialog */ + vbox2 = prefs_frame_new (_("New Layer Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (2, GTK_CONTAINER (vbox2)); + + prefs_entry_add (object, "layer-new-name", + _("Layer name:"), + GTK_TABLE (table), 0, size_group); + + prefs_enum_combo_box_add (object, "layer-new-fill-type", 0, 0, + _("Fill type:"), + GTK_TABLE (table), 1, size_group); + + /* Layer Boundary Size Dialog */ + vbox2 = prefs_frame_new (_("Layer Boundary Size Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "layer-resize-fill-type", 0, 0, + _("Fill with:"), + GTK_TABLE (table), 0, size_group); + + /* Add Layer Mask Dialog */ + vbox2 = prefs_frame_new (_("Add Layer Mask Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "layer-add-mask-type", 0, 0, + _("Layer mask type:"), + GTK_TABLE (table), 0, size_group); + + prefs_check_button_add (object, "layer-add-mask-invert", + _("Invert mask"), + GTK_BOX (vbox2)); + + /* Merge Layers Dialog */ + vbox2 = prefs_frame_new (_("Merge Layers Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "layer-merge-type", + GIMP_EXPAND_AS_NECESSARY, + GIMP_CLIP_TO_BOTTOM_LAYER, + _("Merged layer size:"), + GTK_TABLE (table), 0, size_group); + + prefs_check_button_add (object, "layer-merge-active-group-only", + _("Merge within active group only"), + GTK_BOX (vbox2)); + prefs_check_button_add (object, "layer-merge-discard-invisible", + _("Discard invisible layers"), + GTK_BOX (vbox2)); + + /* New Channel Dialog */ + vbox2 = prefs_frame_new (_("New Channel Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (2, GTK_CONTAINER (vbox2)); + + prefs_entry_add (object, "channel-new-name", + _("Channel name:"), + GTK_TABLE (table), 0, size_group); + + prefs_color_button_add (object, "channel-new-color", + _("Color and opacity:"), + _("Default New Channel Color and Opacity"), + GTK_TABLE (table), 1, size_group, + gimp_get_user_context (gimp)); + + /* New Path Dialog */ + vbox2 = prefs_frame_new (_("New Path Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_entry_add (object, "path-new-name", + _("Path name:"), + GTK_TABLE (table), 0, size_group); + + /* Export Path Dialog */ + vbox2 = prefs_frame_new (_("Export Paths Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_file_chooser_button_add (object, "path-export-path", + _("Export folder:"), + _("Select Default Folder for Exporting Paths"), + GTK_TABLE (table), 0, size_group); + + prefs_check_button_add (object, "path-export-active-only", + _("Export the active path only"), + GTK_BOX (vbox2)); + + /* Import Path Dialog */ + vbox2 = prefs_frame_new (_("Import Paths Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_file_chooser_button_add (object, "path-import-path", + _("Import folder:"), + _("Select Default Folder for Importing Paths"), + GTK_TABLE (table), 0, size_group); + + prefs_check_button_add (object, "path-import-merge", + _("Merge imported paths"), + GTK_BOX (vbox2)); + prefs_check_button_add (object, "path-import-scale", + _("Scale imported paths"), + GTK_BOX (vbox2)); + + /* Feather Selection Dialog */ + vbox2 = prefs_frame_new (_("Feather Selection Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_spin_button_add (object, "selection-feather-radius", 1.0, 10.0, 2, + _("Feather radius:"), + GTK_TABLE (table), 0, size_group); + + prefs_check_button_add (object, "selection-feather-edge-lock", + _("Selected areas continue outside the image"), + GTK_BOX (vbox2)); + + /* Grow Selection Dialog */ + vbox2 = prefs_frame_new (_("Grow Selection Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_spin_button_add (object, "selection-grow-radius", 1.0, 10.0, 0, + _("Grow radius:"), + GTK_TABLE (table), 0, size_group); + + /* Shrink Selection Dialog */ + vbox2 = prefs_frame_new (_("Shrink Selection Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_spin_button_add (object, "selection-shrink-radius", 1.0, 10.0, 0, + _("Shrink radius:"), + GTK_TABLE (table), 0, size_group); + + prefs_check_button_add (object, "selection-shrink-edge-lock", + _("Selected areas continue outside the image"), + GTK_BOX (vbox2)); + + /* Border Selection Dialog */ + vbox2 = prefs_frame_new (_("Border Selection Dialog"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (2, GTK_CONTAINER (vbox2)); + + prefs_spin_button_add (object, "selection-border-radius", 1.0, 10.0, 0, + _("Border radius:"), + GTK_TABLE (table), 0, size_group); + + prefs_enum_combo_box_add (object, "selection-border-style", 0, 0, + _("Border style:"), + GTK_TABLE (table), 1, size_group); + + prefs_check_button_add (object, "selection-border-edge-lock", + _("Selected areas continue outside the image"), + GTK_BOX (vbox2)); + + /* Fill Options Dialog */ + vbox2 = prefs_frame_new (_("Fill Selection Outline & Fill Path Dialogs"), + GTK_CONTAINER (vbox), FALSE); + + table = gimp_fill_editor_new (GIMP_DIALOG_CONFIG (object)->fill_options, + FALSE); + gtk_box_pack_start (GTK_BOX (vbox2), table, FALSE, FALSE, 0); + gtk_widget_show (table); + + /* Stroke Options Dialog */ + vbox2 = prefs_frame_new (_("Stroke Selection & Stroke Path Dialogs"), + GTK_CONTAINER (vbox), FALSE); + + /* The stroke line width physical values could be based on either the + * x or y resolution, some average, or whatever which makes a bit of + * sense. There is no perfect answer. The actual stroke dialog though + * uses the y resolution on the opened image. So using the y resolution + * of the default image seems like the best compromise in the preferences. + */ + table = gimp_stroke_editor_new (GIMP_DIALOG_CONFIG (object)->stroke_options, + gimp_template_get_resolution_y (core_config->default_image), + FALSE); + gtk_box_pack_start (GTK_BOX (vbox2), table, FALSE, FALSE, 0); + gtk_widget_show (table); + + g_clear_object (&size_group); + + + /*****************************/ + /* Interface / Help System */ + /*****************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-help-system", + _("Help System"), + _("Help System"), + GIMP_HELP_PREFS_HELP, + &top_iter, + &child_iter); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + /* General */ + vbox2 = prefs_frame_new (_("General"), GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add (object, "show-tooltips", + _("Show _tooltips"), + GTK_BOX (vbox2)); + prefs_check_button_add (object, "show-help-button", + _("Show help _buttons"), + GTK_BOX (vbox2)); + + table = prefs_table_new (3, GTK_CONTAINER (vbox2)); + button = prefs_boolean_combo_box_add (object, "user-manual-online", + _("Use the online version"), + _("Use a locally installed copy"), + _("U_ser manual:"), + GTK_TABLE (table), 0, size_group); + gimp_help_set_help_data (button, NULL, NULL); + + manuals = gimp_help_get_installed_languages (); + entry = NULL; + if (manuals != NULL) + { + gchar *help_locales = NULL; + + entry = gimp_language_combo_box_new (TRUE, + _("User interface language")); + + g_object_get (config, "help-locales", &help_locales, NULL); + if (help_locales && strlen (help_locales)) + { + gchar *sep; + + sep = strchr (help_locales, ':'); + if (sep) + *sep = '\0'; + } + if (help_locales) + { + gimp_language_combo_box_set_code (GIMP_LANGUAGE_COMBO_BOX (entry), + help_locales); + g_free (help_locales); + } + else + { + gimp_language_combo_box_set_code (GIMP_LANGUAGE_COMBO_BOX (entry), + ""); + } + g_signal_connect (entry, "changed", + G_CALLBACK (prefs_help_language_change_callback), + gimp); + gtk_table_attach_defaults (GTK_TABLE (table), entry, 1, 2, 1, 2); + gtk_widget_show (entry); + } + + if (gimp_help_user_manual_is_installed (gimp)) + { + hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_INFORMATION, + _("There's a local installation " + "of the user manual.")); + } + else + { + hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING, + _("The user manual is not installed " + "locally.")); + } + if (manuals) + { + g_object_set_data (G_OBJECT (hbox), "gimp", gimp); + g_signal_connect (entry, "changed", + G_CALLBACK (prefs_help_language_change_callback2), + hbox); + g_list_free_full (manuals, g_free); + } + + gtk_table_attach_defaults (GTK_TABLE (table), hbox, 1, 2, 2, 3); + gtk_widget_show (hbox); + + /* Help Browser */ +#ifdef HAVE_WEBKIT + /* If there is no webkit available, assume we are on a platform + * that doesn't use the help browser, so don't bother showing + * the combo. + */ + vbox2 = prefs_frame_new (_("Help Browser"), GTK_CONTAINER (vbox), FALSE); + + if (gimp_help_browser_is_installed (gimp)) + { + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + button = prefs_enum_combo_box_add (object, "help-browser", 0, 0, + _("H_elp browser to use:"), + GTK_TABLE (table), 0, size_group); + } + else + { + hbox = prefs_hint_box_new (GIMP_ICON_DIALOG_WARNING, + _("The GIMP help browser doesn't seem to " + "be installed. Using the web browser " + "instead.")); + gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + g_object_set (config, + "help-browser", GIMP_HELP_BROWSER_WEB_BROWSER, + NULL); + } +#else + g_object_set (config, + "help-browser", GIMP_HELP_BROWSER_WEB_BROWSER, + NULL); +#endif /* HAVE_WEBKIT */ + + /* Action Search */ + vbox2 = prefs_frame_new (_("Action Search"), GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_check_button_add (object, "search-show-unavailable-actions", + _("Show _unavailable actions"), + GTK_BOX (vbox2)); + prefs_spin_button_add (object, "action-history-size", 1.0, 10.0, 0, + _("_Maximum History Size:"), + GTK_TABLE (table), 0, size_group); + + button = prefs_button_add (GIMP_ICON_SHRED, + _("C_lear Action History"), + GTK_BOX (vbox2)); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_search_clear_callback), + gimp); + + g_clear_object (&size_group); + + + /*************************/ + /* Interface / Display */ + /*************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-display", + _("Display"), + _("Display"), + GIMP_HELP_PREFS_DISPLAY, + &top_iter, + &child_iter); + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + /* Transparency */ + vbox2 = prefs_frame_new (_("Transparency"), GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (2, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "transparency-type", 0, 0, + _("_Check style:"), + GTK_TABLE (table), 0, size_group); + prefs_enum_combo_box_add (object, "transparency-size", 0, 0, + _("Check _size:"), + GTK_TABLE (table), 1, size_group); + + vbox2 = prefs_frame_new (_("Monitor Resolution"), + GTK_CONTAINER (vbox), FALSE); + + { + gchar *pixels_per_unit = g_strconcat (_("Pixels"), "/%s", NULL); + + entry = gimp_prop_coordinates_new (object, + "monitor-xresolution", + "monitor-yresolution", + NULL, + pixels_per_unit, + GIMP_SIZE_ENTRY_UPDATE_RESOLUTION, + 0.0, 0.0, + TRUE); + + g_free (pixels_per_unit); + } + + gtk_table_set_col_spacings (GTK_TABLE (entry), 2); + gtk_table_set_row_spacings (GTK_TABLE (entry), 2); + + gimp_size_entry_attach_label (GIMP_SIZE_ENTRY (entry), + _("Horizontal"), 0, 1, 0.0); + gimp_size_entry_attach_label (GIMP_SIZE_ENTRY (entry), + _("Vertical"), 0, 2, 0.0); + gimp_size_entry_attach_label (GIMP_SIZE_ENTRY (entry), + _("ppi"), 1, 4, 0.0); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + + gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 24); + gtk_widget_show (entry); + gtk_widget_set_sensitive (entry, ! display_config->monitor_res_from_gdk); + + group = NULL; + + { + gdouble xres; + gdouble yres; + gchar *str; + + gimp_get_monitor_resolution (gdk_screen_get_default (), /* FIXME monitor */ + 0, /* FIXME monitor */ + &xres, &yres); + + str = g_strdup_printf (_("_Detect automatically (currently %d × %d ppi)"), + ROUND (xres), ROUND (yres)); + + button = gtk_radio_button_new_with_mnemonic (group, str); + + g_free (str); + } + + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button)); + gtk_box_pack_start (GTK_BOX (vbox2), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + g_object_set_data (G_OBJECT (button), "monitor_resolution_sizeentry", entry); + + g_signal_connect (button, "toggled", + G_CALLBACK (prefs_resolution_source_callback), + config); + + button = gtk_radio_button_new_with_mnemonic (group, _("_Enter manually")); + group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button)); + gtk_box_pack_start (GTK_BOX (vbox2), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + if (! display_config->monitor_res_from_gdk) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + calibrate_button = gtk_button_new_with_mnemonic (_("C_alibrate...")); + label = gtk_bin_get_child (GTK_BIN (calibrate_button)); + gtk_misc_set_padding (GTK_MISC (label), 4, 0); + gtk_box_pack_start (GTK_BOX (hbox), calibrate_button, FALSE, FALSE, 0); + gtk_widget_show (calibrate_button); + gtk_widget_set_sensitive (calibrate_button, + ! display_config->monitor_res_from_gdk); + + g_object_bind_property (button, "active", + entry, "sensitive", + G_BINDING_SYNC_CREATE); + g_object_bind_property (button, "active", + calibrate_button, "sensitive", + G_BINDING_SYNC_CREATE); + + g_signal_connect (calibrate_button, "clicked", + G_CALLBACK (prefs_resolution_calibrate_callback), + entry); + + g_clear_object (&size_group); + + + /***********************************/ + /* Interface / Window Management */ + /***********************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-window-management", + _("Window Management"), + _("Window Management"), + GIMP_HELP_PREFS_WINDOW_MANAGEMENT, + &top_iter, + &child_iter); + + vbox2 = prefs_frame_new (_("Window Manager Hints"), + GTK_CONTAINER (vbox), FALSE); + + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "dock-window-hint", 0, 0, + _("Hint for _docks and toolbox:"), + GTK_TABLE (table), 1, NULL); + + vbox2 = prefs_frame_new (_("Focus"), + GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add (object, "activate-on-focus", + _("Activate the _focused image"), + GTK_BOX (vbox2)); + + /* Window Positions */ + vbox2 = prefs_frame_new (_("Window Positions"), GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add (object, "save-session-info", + _("_Save window positions on exit"), + GTK_BOX (vbox2)); + prefs_check_button_add (object, "restore-monitor", + _("Open windows on the same _monitor they were open before"), + GTK_BOX (vbox2)); + + button = prefs_button_add (GIMP_ICON_DOCUMENT_SAVE, + _("Save Window Positions _Now"), + GTK_BOX (vbox2)); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_session_save_callback), + gimp); + + button2 = prefs_button_add (GIMP_ICON_RESET, + _("_Reset Saved Window Positions to " + "Default Values"), + GTK_BOX (vbox2)); + g_signal_connect (button2, "clicked", + G_CALLBACK (prefs_session_clear_callback), + gimp); + + g_object_set_data (G_OBJECT (button), "clear-button", button2); + + + /*******************/ + /* Image Windows */ + /*******************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-image-windows", + _("Image Windows"), + _("Image Windows"), + GIMP_HELP_PREFS_IMAGE_WINDOW, + NULL, + &top_iter); + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + /* General */ + vbox2 = prefs_frame_new (_("General"), GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add (object, "default-show-all", + _("Use \"Show _all\" by default"), + GTK_BOX (vbox2)); + + prefs_check_button_add (object, "default-dot-for-dot", + _("Use \"_Dot for dot\" by default"), + GTK_BOX (vbox2)); + + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_spin_button_add (object, "marching-ants-speed", 1.0, 10.0, 0, + _("Marching ants s_peed:"), + GTK_TABLE (table), 0, size_group); + + /* Zoom & Resize Behavior */ + vbox2 = prefs_frame_new (_("Zoom & Resize Behavior"), + GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add (object, "resize-windows-on-zoom", + _("Resize window on _zoom"), + GTK_BOX (vbox2)); + prefs_check_button_add (object, "resize-windows-on-resize", + _("Resize window on image _size change"), + GTK_BOX (vbox2)); + + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_boolean_combo_box_add (object, "initial-zoom-to-fit", + _("Show entire image"), + "1:1", + _("Initial zoom _ratio:"), + GTK_TABLE (table), 0, size_group); + + /* Space Bar */ + vbox2 = prefs_frame_new (_("Space Bar"), + GTK_CONTAINER (vbox), FALSE); + + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "space-bar-action", 0, 0, + _("_While space bar is pressed:"), + GTK_TABLE (table), 0, size_group); + + /* Mouse Pointers */ + vbox2 = prefs_frame_new (_("Mouse Pointers"), + GTK_CONTAINER (vbox), FALSE); + + button = prefs_check_button_add (object, "show-brush-outline", + _("Show _brush outline"), + GTK_BOX (vbox2)); + + vbox3 = prefs_frame_new (NULL, GTK_CONTAINER (vbox2), FALSE); + g_object_bind_property (button, "active", + vbox3, "sensitive", + G_BINDING_SYNC_CREATE); + prefs_check_button_add (object, "snap-brush-outline", + _("S_nap brush outline to stroke"), + GTK_BOX (vbox3)); + + prefs_check_button_add (object, "show-paint-tool-cursor", + _("Show pointer for paint _tools"), + GTK_BOX (vbox2)); + + table = prefs_table_new (2, GTK_CONTAINER (vbox2)); + + prefs_enum_combo_box_add (object, "cursor-mode", 0, 0, + _("Pointer _mode:"), + GTK_TABLE (table), 0, size_group); + prefs_enum_combo_box_add (object, "cursor-handedness", 0, 0, + _("Pointer _handedness:"), + GTK_TABLE (table), 1, NULL); + + g_clear_object (&size_group); + + + /********************************/ + /* Image Windows / Appearance */ + /********************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-image-windows-appearance", + _("Image Window Appearance"), + _("Appearance"), + GIMP_HELP_PREFS_IMAGE_WINDOW_APPEARANCE, + &top_iter, + &child_iter); + + gimp_prefs_box_set_page_scrollable (GIMP_PREFS_BOX (prefs_box), vbox, TRUE); + + prefs_display_options_frame_add (gimp, + G_OBJECT (display_config->default_view), + _("Default Appearance in Normal Mode"), + GTK_CONTAINER (vbox)); + + prefs_display_options_frame_add (gimp, + G_OBJECT (display_config->default_fullscreen_view), + _("Default Appearance in Fullscreen Mode"), + GTK_CONTAINER (vbox)); + + + /****************************************************/ + /* Image Windows / Image Title & Statusbar Format */ + /****************************************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-image-title", + _("Image Title & Statusbar Format"), + _("Title & Status"), + GIMP_HELP_PREFS_IMAGE_WINDOW_TITLE, + &top_iter, + &child_iter); + + { + const gchar *format_strings[] = + { + NULL, + NULL, + "%f-%p.%i (%t) %z%%", + "%f-%p.%i (%t) %d:%s", + "%f-%p.%i (%t) %wx%h", + "%f-%p-%i (%t) %wx%h (%xx%y)" + }; + + const gchar *format_names[] = + { + N_("Current format"), + N_("Default format"), + N_("Show zoom percentage"), + N_("Show zoom ratio"), + N_("Show image size"), + N_("Show drawable size") + }; + + struct + { + gchar *current_setting; + const gchar *default_setting; + const gchar *title; + const gchar *property_name; + } + formats[] = + { + { NULL, GIMP_CONFIG_DEFAULT_IMAGE_TITLE_FORMAT, + N_("Image Title Format"), "image-title-format" }, + { NULL, GIMP_CONFIG_DEFAULT_IMAGE_STATUS_FORMAT, + N_("Image Statusbar Format"), "image-status-format" } + }; + + gint format; + + gimp_assert (G_N_ELEMENTS (format_strings) == G_N_ELEMENTS (format_names)); + + formats[0].current_setting = display_config->image_title_format; + formats[1].current_setting = display_config->image_status_format; + + for (format = 0; format < G_N_ELEMENTS (formats); format++) + { + GtkWidget *scrolled_win; + GtkListStore *list_store; + GtkWidget *view; + GtkTreeSelection *sel; + gint i; + + format_strings[0] = formats[format].current_setting; + format_strings[1] = formats[format].default_setting; + + vbox2 = prefs_frame_new (gettext (formats[format].title), + GTK_CONTAINER (vbox), TRUE); + + entry = gimp_prop_entry_new (object, formats[format].property_name, 0); + gtk_box_pack_start (GTK_BOX (vbox2), entry, FALSE, FALSE, 0); + gtk_widget_show (entry); + + scrolled_win = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), + GTK_SHADOW_IN); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_box_pack_start (GTK_BOX (vbox2), scrolled_win, TRUE, TRUE, 0); + gtk_widget_show (scrolled_win); + + list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); + + view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store)); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE); + gtk_container_add (GTK_CONTAINER (scrolled_win), view); + gtk_widget_show (view); + + g_object_unref (list_store); + + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), 0, + NULL, + gtk_cell_renderer_text_new (), + "text", 0, + NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view), 1, + NULL, + gtk_cell_renderer_text_new (), + "text", 1, + NULL); + + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); + + for (i = 0; i < G_N_ELEMENTS (format_strings); i++) + { + GtkTreeIter iter; + + gtk_list_store_append (list_store, &iter); + gtk_list_store_set (list_store, &iter, + 0, gettext (format_names[i]), + 1, format_strings[i], + -1); + + if (i == 0) + gtk_tree_selection_select_iter (sel, &iter); + } + + g_signal_connect (sel, "changed", + G_CALLBACK (prefs_format_string_select_callback), + entry); + } + } + + + /******************************/ + /* Image Windows / Snapping */ + /******************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-image-windows-snapping", + _("Image Window Snapping Behavior"), + _("Snapping"), + GIMP_HELP_PREFS_IMAGE_WINDOW_SNAPPING, + &top_iter, + &child_iter); + + prefs_behavior_options_frame_add (gimp, + G_OBJECT (display_config->default_view), + _("Default Behavior in Normal Mode"), + GTK_CONTAINER (vbox)); + prefs_behavior_options_frame_add (gimp, + G_OBJECT (display_config->default_fullscreen_view), + _("Default Behavior in Fullscreen Mode"), + GTK_CONTAINER (vbox)); + + /* Snapping Distance */ + vbox2 = prefs_frame_new (_("General"), + GTK_CONTAINER (vbox), FALSE); + table = prefs_table_new (1, GTK_CONTAINER (vbox2)); + + prefs_spin_button_add (object, "snap-distance", 1.0, 5.0, 0, + _("_Snapping distance:"), + GTK_TABLE (table), 0, NULL); + + + /*******************/ + /* Input Devices */ + /*******************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-input-devices", + _("Input Devices"), + _("Input Devices"), + GIMP_HELP_PREFS_INPUT_DEVICES, + NULL, + &top_iter); + + /* Extended Input Devices */ + vbox2 = prefs_frame_new (_("Extended Input Devices"), + GTK_CONTAINER (vbox), FALSE); + + prefs_check_button_add (object, "devices-share-tool", + _("S_hare tool and tool options between input devices"), + GTK_BOX (vbox2)); + + button = prefs_button_add (GIMP_ICON_PREFERENCES_SYSTEM, + _("Configure E_xtended Input Devices..."), + GTK_BOX (vbox2)); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_input_devices_dialog), + gimp); + + prefs_check_button_add (object, "save-device-status", + _("_Save input device settings on exit"), + GTK_BOX (vbox2)); + + button = prefs_button_add (GIMP_ICON_DOCUMENT_SAVE, + _("Save Input Device Settings _Now"), + GTK_BOX (vbox2)); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_devices_save_callback), + gimp); + + button2 = prefs_button_add (GIMP_ICON_RESET, + _("_Reset Saved Input Device Settings to " + "Default Values"), + GTK_BOX (vbox2)); + g_signal_connect (button2, "clicked", + G_CALLBACK (prefs_devices_clear_callback), + gimp); + + g_object_set_data (G_OBJECT (button), "clear-button", button2); + + + /****************************/ + /* Additional Controllers */ + /****************************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-controllers", + _("Additional Input Controllers"), + _("Input Controllers"), + GIMP_HELP_PREFS_INPUT_CONTROLLERS, + &top_iter, + &child_iter); + + vbox2 = gimp_controller_list_new (gimp); + gtk_box_pack_start (GTK_BOX (vbox), vbox2, TRUE, TRUE, 0); + gtk_widget_show (vbox2); + + + /*************/ + /* Folders */ + /*************/ + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + "gimp-prefs-folders", + _("Folders"), + _("Folders"), + GIMP_HELP_PREFS_FOLDERS, + NULL, + &top_iter); + + button = gimp_prefs_box_set_page_resettable (GIMP_PREFS_BOX (prefs_box), + vbox, + _("Reset _Folders")); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_folders_reset), + config); + + { + static const struct + { + const gchar *property_name; + const gchar *label; + const gchar *dialog_title; + } + dirs[] = + { + { + "temp-path", + N_("_Temporary folder:"), + N_("Select Folder for Temporary Files") + }, + { + "swap-path", + N_("_Swap folder:"), + N_("Select Swap Folder") + } + }; + + table = prefs_table_new (G_N_ELEMENTS (dirs) + 1, GTK_CONTAINER (vbox)); + + for (i = 0; i < G_N_ELEMENTS (dirs); i++) + { + prefs_file_chooser_button_add (object, dirs[i].property_name, + gettext (dirs[i].label), + gettext (dirs[i].dialog_title), + GTK_TABLE (table), i, NULL); + } + } + + + /*********************/ + /* Folders / <paths> */ + /*********************/ + { + static const struct + { + const gchar *tree_label; + const gchar *label; + const gchar *icon; + const gchar *help_data; + const gchar *reset_label; + const gchar *fs_label; + const gchar *path_property_name; + const gchar *writable_property_name; + } + paths[] = + { + { N_("Brushes"), N_("Brush Folders"), + "folders-brushes", + GIMP_HELP_PREFS_FOLDERS_BRUSHES, + N_("Reset Brush _Folders"), + N_("Select Brush Folders"), + "brush-path", "brush-path-writable" }, + { N_("Dynamics"), N_("Dynamics Folders"), + "folders-dynamics", + GIMP_HELP_PREFS_FOLDERS_DYNAMICS, + N_("Reset Dynamics _Folders"), + N_("Select Dynamics Folders"), + "dynamics-path", "dynamics-path-writable" }, + { N_("Patterns"), N_("Pattern Folders"), + "folders-patterns", + GIMP_HELP_PREFS_FOLDERS_PATTERNS, + N_("Reset Pattern _Folders"), + N_("Select Pattern Folders"), + "pattern-path", "pattern-path-writable" }, + { N_("Palettes"), N_("Palette Folders"), + "folders-palettes", + GIMP_HELP_PREFS_FOLDERS_PALETTES, + N_("Reset Palette _Folders"), + N_("Select Palette Folders"), + "palette-path", "palette-path-writable" }, + { N_("Gradients"), N_("Gradient Folders"), + "folders-gradients", + GIMP_HELP_PREFS_FOLDERS_GRADIENTS, + N_("Reset Gradient _Folders"), + N_("Select Gradient Folders"), + "gradient-path", "gradient-path-writable" }, + { N_("Fonts"), N_("Font Folders"), + "folders-fonts", + GIMP_HELP_PREFS_FOLDERS_FONTS, + N_("Reset Font _Folders"), + N_("Select Font Folders"), + "font-path", NULL }, + { N_("Tool Presets"), N_("Tool Preset Folders"), + "folders-tool-presets", + GIMP_HELP_PREFS_FOLDERS_TOOL_PRESETS, + N_("Reset Tool Preset _Folders"), + N_("Select Tool Preset Folders"), + "tool-preset-path", "tool-preset-path-writable" }, + { N_("MyPaint Brushes"), N_("MyPaint Brush Folders"), + "folders-mypaint-brushes", + GIMP_HELP_PREFS_FOLDERS_MYPAINT_BRUSHES, + N_("Reset MyPaint Brush _Folders"), + N_("Select MyPaint Brush Folders"), + "mypaint-brush-path", "mypaint-brush-path-writable" }, + { N_("Plug-ins"), N_("Plug-in Folders"), + "folders-plug-ins", + GIMP_HELP_PREFS_FOLDERS_PLUG_INS, + N_("Reset plug-in _Folders"), + N_("Select plug-in Folders"), + "plug-in-path", NULL }, + { N_("Scripts"), N_("Script-Fu Folders"), + "folders-scripts", + GIMP_HELP_PREFS_FOLDERS_SCRIPTS, + N_("Reset Script-Fu _Folders"), + N_("Select Script-Fu Folders"), + "script-fu-path", NULL }, + { N_("Modules"), N_("Module Folders"), + "folders-modules", + GIMP_HELP_PREFS_FOLDERS_MODULES, + N_("Reset Module _Folders"), + N_("Select Module Folders"), + "module-path", NULL }, + { N_("Interpreters"), N_("Interpreter Folders"), + "folders-interp", + GIMP_HELP_PREFS_FOLDERS_INTERPRETERS, + N_("Reset Interpreter _Folders"), + N_("Select Interpreter Folders"), + "interpreter-path", NULL }, + { N_("Environment"), N_("Environment Folders"), + "folders-environ", + GIMP_HELP_PREFS_FOLDERS_ENVIRONMENT, + N_("Reset Environment _Folders"), + N_("Select Environment Folders"), + "environ-path", NULL }, + { N_("Themes"), N_("Theme Folders"), + "folders-themes", + GIMP_HELP_PREFS_FOLDERS_THEMES, + N_("Reset Theme _Folders"), + N_("Select Theme Folders"), + "theme-path", NULL }, + { N_("Icon Themes"), N_("Icon Theme Folders"), + "folders-icon-themes", + GIMP_HELP_PREFS_FOLDERS_ICON_THEMES, + N_("Reset Icon Theme _Folders"), + N_("Select Icon Theme Folders"), + "icon-theme-path", NULL } + }; + + for (i = 0; i < G_N_ELEMENTS (paths); i++) + { + GtkWidget *editor; + gchar *icon_name; + + icon_name = g_strconcat ("gimp-prefs-", paths[i].icon, NULL); + vbox = gimp_prefs_box_add_page (GIMP_PREFS_BOX (prefs_box), + icon_name, + gettext (paths[i].label), + gettext (paths[i].tree_label), + paths[i].help_data, + &top_iter, + &child_iter); + g_free (icon_name); + + button = gimp_prefs_box_set_page_resettable (GIMP_PREFS_BOX (prefs_box), + vbox, + gettext (paths[i].reset_label)); + g_object_set_data (G_OBJECT (button), "path", + (gpointer) paths[i].path_property_name); + g_object_set_data (G_OBJECT (button), "path-writable", + (gpointer) paths[i].writable_property_name); + g_signal_connect (button, "clicked", + G_CALLBACK (prefs_path_reset), + config); + + editor = gimp_prop_path_editor_new (object, + paths[i].path_property_name, + paths[i].writable_property_name, + gettext (paths[i].fs_label)); + gtk_box_pack_start (GTK_BOX (vbox), editor, TRUE, TRUE, 0); + gtk_widget_show (editor); + } + } + + { + GtkWidget *tv; + GtkTreeModel *model; + GtkTreePath *path; + + tv = gimp_prefs_box_get_tree_view (GIMP_PREFS_BOX (prefs_box)); + gtk_tree_view_expand_all (GTK_TREE_VIEW (tv)); + + /* collapse the Folders subtree */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (tv)); + path = gtk_tree_model_get_path (model, &top_iter); + gtk_tree_view_collapse_row (GTK_TREE_VIEW (tv), path); + gtk_tree_path_free (path); + } + + return dialog; +} diff --git a/app/dialogs/preferences-dialog.h b/app/dialogs/preferences-dialog.h new file mode 100644 index 0000000..899f293 --- /dev/null +++ b/app/dialogs/preferences-dialog.h @@ -0,0 +1,25 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __PREFERENCES_DIALOG_H__ +#define __PREFERENCES_DIALOG_H__ + + +GtkWidget * preferences_dialog_create (Gimp *gimp); + + +#endif /* __PREFERENCES_DIALOG_H__ */ diff --git a/app/dialogs/print-size-dialog.c b/app/dialogs/print-size-dialog.c new file mode 100644 index 0000000..e3b9ba0 --- /dev/null +++ b/app/dialogs/print-size-dialog.c @@ -0,0 +1,454 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimp-utils.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpviewabledialog.h" + +#include "print-size-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_RESET 1 +#define SB_WIDTH 8 + + +typedef struct _PrintSizeDialog PrintSizeDialog; + +struct _PrintSizeDialog +{ + GimpImage *image; + GimpSizeEntry *size_entry; + GimpSizeEntry *resolution_entry; + GimpChainButton *chain; + gdouble xres; + gdouble yres; + GimpResolutionCallback callback; + gpointer user_data; +}; + + +/* local function prototypes */ + +static void print_size_dialog_free (PrintSizeDialog *private); +static void print_size_dialog_response (GtkWidget *dialog, + gint response_id, + PrintSizeDialog *private); +static void print_size_dialog_reset (PrintSizeDialog *private); + +static void print_size_dialog_size_changed (GtkWidget *widget, + PrintSizeDialog *private); +static void print_size_dialog_resolution_changed (GtkWidget *widget, + PrintSizeDialog *private); +static void print_size_dialog_set_size (PrintSizeDialog *private, + gdouble width, + gdouble height); +static void print_size_dialog_set_resolution (PrintSizeDialog *private, + gdouble xres, + gdouble yres); + + +/* public functions */ + +GtkWidget * +print_size_dialog_new (GimpImage *image, + GimpContext *context, + const gchar *title, + const gchar *role, + GtkWidget *parent, + GimpHelpFunc help_func, + const gchar *help_id, + GimpResolutionCallback callback, + gpointer user_data) +{ + PrintSizeDialog *private; + GtkWidget *dialog; + GtkWidget *frame; + GtkWidget *table; + GtkWidget *entry; + GtkWidget *label; + GtkWidget *width; + GtkWidget *height; + GtkWidget *hbox; + GtkWidget *chain; + GtkAdjustment *adj; + GList *focus_chain = NULL; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (PrintSizeDialog); + + private->image = image; + private->callback = callback; + private->user_data = user_data; + + gimp_image_get_resolution (image, &private->xres, &private->yres); + + dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + title, role, + GIMP_ICON_DOCUMENT_PRINT_RESOLUTION, title, + parent, + help_func, help_id, + + _("_Reset"), RESPONSE_RESET, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_OK"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + RESPONSE_RESET, + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) print_size_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (print_size_dialog_response), + private); + + frame = gimp_frame_new (_("Print Size")); + gtk_container_set_border_width (GTK_CONTAINER (frame), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + table = gtk_table_new (4, 3, FALSE); + gtk_table_set_col_spacing (GTK_TABLE (table), 0, 6); + gtk_table_set_row_spacings (GTK_TABLE (table), 12); + gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2); + gtk_table_set_row_spacing (GTK_TABLE (table), 2, 2); + gtk_container_add (GTK_CONTAINER (frame), table); + gtk_widget_show (table); + + /* the print size entry */ + + adj = (GtkAdjustment *) gtk_adjustment_new (1, 1, 1, 1, 10, 0); + width = gimp_spin_button_new (adj, 1.0, 2); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (width), TRUE); + gtk_entry_set_width_chars (GTK_ENTRY (width), SB_WIDTH); + + adj = (GtkAdjustment *) gtk_adjustment_new (1, 1, 1, 1, 10, 0); + height = gimp_spin_button_new (adj, 1.0, 2); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (height), TRUE); + gtk_entry_set_width_chars (GTK_ENTRY (height), SB_WIDTH); + + entry = gimp_size_entry_new (0, gimp_get_default_unit (), "%p", + FALSE, FALSE, FALSE, SB_WIDTH, + GIMP_SIZE_ENTRY_UPDATE_SIZE); + private->size_entry = GIMP_SIZE_ENTRY (entry); + + label = gtk_label_new_with_mnemonic (_("_Width:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), width); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (label); + + label = gtk_label_new_with_mnemonic (_("H_eight:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), height); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (label); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_table_attach_defaults (GTK_TABLE (table), hbox, 1, 2, 0, 2); + gtk_widget_show (hbox); + + gtk_table_set_row_spacing (GTK_TABLE (entry), 0, 2); + gtk_table_set_col_spacing (GTK_TABLE (entry), 1, 6); + + gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); + gtk_widget_show (entry); + + gimp_size_entry_add_field (GIMP_SIZE_ENTRY (entry), + GTK_SPIN_BUTTON (height), NULL); + gtk_table_attach_defaults (GTK_TABLE (entry), height, 0, 1, 1, 2); + gtk_widget_show (height); + + gimp_size_entry_add_field (GIMP_SIZE_ENTRY (entry), + GTK_SPIN_BUTTON (width), NULL); + gtk_table_attach_defaults (GTK_TABLE (entry), width, 0, 1, 0, 1); + gtk_widget_show (width); + + gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (entry), 0, + private->xres, FALSE); + gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (entry), 1, + private->yres, FALSE); + + gimp_size_entry_set_refval_boundaries + (GIMP_SIZE_ENTRY (entry), 0, GIMP_MIN_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE); + gimp_size_entry_set_refval_boundaries + (GIMP_SIZE_ENTRY (entry), 1, GIMP_MIN_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE); + + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (entry), 0, + gimp_image_get_width (image)); + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (entry), 1, + gimp_image_get_height (image)); + + /* the resolution entry */ + + adj = (GtkAdjustment *) gtk_adjustment_new (1, 1, 1, 1, 10, 0); + width = gimp_spin_button_new (adj, 1.0, 2); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (width), TRUE); + gtk_entry_set_width_chars (GTK_ENTRY (width), SB_WIDTH); + + adj = (GtkAdjustment *) gtk_adjustment_new (1, 1, 1, 1, 10, 0); + height = gimp_spin_button_new (adj, 1.0, 2); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (height), TRUE); + gtk_entry_set_width_chars (GTK_ENTRY (height), SB_WIDTH); + + label = gtk_label_new_with_mnemonic (_("_X resolution:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), width); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (label); + + label = gtk_label_new_with_mnemonic (_("_Y resolution:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), height); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4, + GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); + gtk_widget_show (label); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_table_attach_defaults (GTK_TABLE (table), hbox, 1, 2, 2, 4); + gtk_widget_show (hbox); + + entry = gimp_size_entry_new (0, gimp_image_get_unit (image), _("pixels/%a"), + FALSE, FALSE, FALSE, SB_WIDTH, + GIMP_SIZE_ENTRY_UPDATE_RESOLUTION); + private->resolution_entry = GIMP_SIZE_ENTRY (entry); + + gtk_table_set_row_spacing (GTK_TABLE (entry), 0, 2); + gtk_table_set_col_spacing (GTK_TABLE (entry), 1, 2); + gtk_table_set_col_spacing (GTK_TABLE (entry), 2, 2); + + gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); + gtk_widget_show (entry); + + gimp_size_entry_add_field (GIMP_SIZE_ENTRY (entry), + GTK_SPIN_BUTTON (height), NULL); + gtk_table_attach_defaults (GTK_TABLE (entry), height, 0, 1, 1, 2); + gtk_widget_show (height); + + gimp_size_entry_add_field (GIMP_SIZE_ENTRY (entry), + GTK_SPIN_BUTTON (width), NULL); + gtk_table_attach_defaults (GTK_TABLE (entry), width, 0, 1, 0, 1); + gtk_widget_show (width); + + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (entry), 0, + GIMP_MIN_RESOLUTION, + GIMP_MAX_RESOLUTION); + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (entry), 1, + GIMP_MIN_RESOLUTION, + GIMP_MAX_RESOLUTION); + + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (entry), 0, private->xres); + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (entry), 1, private->yres); + + chain = gimp_chain_button_new (GIMP_CHAIN_RIGHT); + if (ABS (private->xres - private->yres) < GIMP_MIN_RESOLUTION) + gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (chain), TRUE); + gtk_table_attach_defaults (GTK_TABLE (entry), chain, 1, 2, 0, 2); + gtk_widget_show (chain); + + private->chain = GIMP_CHAIN_BUTTON (chain); + + focus_chain = g_list_prepend (focus_chain, GIMP_SIZE_ENTRY (entry)->unitmenu); + focus_chain = g_list_prepend (focus_chain, chain); + focus_chain = g_list_prepend (focus_chain, height); + focus_chain = g_list_prepend (focus_chain, width); + + gtk_container_set_focus_chain (GTK_CONTAINER (entry), focus_chain); + g_list_free (focus_chain); + + g_signal_connect (private->size_entry, "value-changed", + G_CALLBACK (print_size_dialog_size_changed), + private); + g_signal_connect (private->resolution_entry, "value-changed", + G_CALLBACK (print_size_dialog_resolution_changed), + private); + + return dialog; +} + + +/* private functions */ + +static void +print_size_dialog_free (PrintSizeDialog *private) +{ + g_slice_free (PrintSizeDialog, private); +} + +static void +print_size_dialog_response (GtkWidget *dialog, + gint response_id, + PrintSizeDialog *private) +{ + GimpSizeEntry *entry = private->resolution_entry; + + switch (response_id) + { + case RESPONSE_RESET: + print_size_dialog_reset (private); + break; + + case GTK_RESPONSE_OK: + private->callback (dialog, + private->image, + gimp_size_entry_get_refval (entry, 0), + gimp_size_entry_get_refval (entry, 1), + gimp_size_entry_get_unit (entry), + private->user_data); + break; + + default: + gtk_widget_destroy (dialog); + break; + } +} + +static void +print_size_dialog_reset (PrintSizeDialog *private) +{ + gdouble xres, yres; + + gimp_size_entry_set_unit (private->resolution_entry, + gimp_get_default_unit ()); + + gimp_image_get_resolution (private->image, &xres, &yres); + print_size_dialog_set_resolution (private, xres, yres); +} + +static void +print_size_dialog_size_changed (GtkWidget *widget, + PrintSizeDialog *private) +{ + GimpImage *image = private->image; + gdouble width; + gdouble height; + gdouble xres; + gdouble yres; + gdouble scale; + + scale = gimp_unit_get_factor (gimp_size_entry_get_unit (private->size_entry)); + + width = gimp_size_entry_get_value (private->size_entry, 0); + height = gimp_size_entry_get_value (private->size_entry, 1); + + xres = scale * gimp_image_get_width (image) / MAX (0.001, width); + yres = scale * gimp_image_get_height (image) / MAX (0.001, height); + + xres = CLAMP (xres, GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); + yres = CLAMP (yres, GIMP_MIN_RESOLUTION, GIMP_MAX_RESOLUTION); + + print_size_dialog_set_resolution (private, xres, yres); + print_size_dialog_set_size (private, + gimp_image_get_width (image), + gimp_image_get_height (image)); +} + +static void +print_size_dialog_resolution_changed (GtkWidget *widget, + PrintSizeDialog *private) +{ + GimpSizeEntry *entry = private->resolution_entry; + gdouble xres = gimp_size_entry_get_refval (entry, 0); + gdouble yres = gimp_size_entry_get_refval (entry, 1); + + print_size_dialog_set_resolution (private, xres, yres); +} + +static void +print_size_dialog_set_size (PrintSizeDialog *private, + gdouble width, + gdouble height) +{ + g_signal_handlers_block_by_func (private->size_entry, + print_size_dialog_size_changed, + private); + + gimp_size_entry_set_refval (private->size_entry, 0, width); + gimp_size_entry_set_refval (private->size_entry, 1, height); + + g_signal_handlers_unblock_by_func (private->size_entry, + print_size_dialog_size_changed, + private); +} + +static void +print_size_dialog_set_resolution (PrintSizeDialog *private, + gdouble xres, + gdouble yres) +{ + if (private->chain && gimp_chain_button_get_active (private->chain)) + { + if (xres != private->xres) + yres = xres; + else + xres = yres; + } + + private->xres = xres; + private->yres = yres; + + g_signal_handlers_block_by_func (private->resolution_entry, + print_size_dialog_resolution_changed, + private); + + gimp_size_entry_set_refval (private->resolution_entry, 0, xres); + gimp_size_entry_set_refval (private->resolution_entry, 1, yres); + + g_signal_handlers_unblock_by_func (private->resolution_entry, + print_size_dialog_resolution_changed, + private); + + g_signal_handlers_block_by_func (private->size_entry, + print_size_dialog_size_changed, + private); + + gimp_size_entry_set_resolution (private->size_entry, 0, xres, TRUE); + gimp_size_entry_set_resolution (private->size_entry, 1, yres, TRUE); + + g_signal_handlers_unblock_by_func (private->size_entry, + print_size_dialog_size_changed, + private); +} diff --git a/app/dialogs/print-size-dialog.h b/app/dialogs/print-size-dialog.h new file mode 100644 index 0000000..53f37f5 --- /dev/null +++ b/app/dialogs/print-size-dialog.h @@ -0,0 +1,41 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __PRINT_SIZE_DIALOG_H__ +#define __PRINT_SIZE_DIALOG_H__ + + +typedef void (* GimpResolutionCallback) (GtkWidget *dialog, + GimpImage *image, + gdouble xresolution, + gdouble yresolution, + GimpUnit resolution_unit, + gpointer user_data); + + +GtkWidget * print_size_dialog_new (GimpImage *image, + GimpContext *context, + const gchar *title, + const gchar *role, + GtkWidget *parent, + GimpHelpFunc help_func, + const gchar *help_id, + GimpResolutionCallback callback, + gpointer user_data); + + +#endif /* __PRINT_SIZE_DIALOG_H__ */ diff --git a/app/dialogs/quit-dialog.c b/app/dialogs/quit-dialog.c new file mode 100644 index 0000000..11737f9 --- /dev/null +++ b/app/dialogs/quit-dialog.c @@ -0,0 +1,614 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Copyright (C) 2004 Sven Neumann <sven@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpcoreconfig.h" + +#include "core/gimp.h" +#include "core/gimpcontainer.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" + +#include "display/gimpdisplay.h" +#include "display/gimpdisplay-foreach.h" +#include "display/gimpdisplayshell.h" +#include "display/gimpimagewindow.h" + +#include "widgets/gimpcellrendererbutton.h" +#include "widgets/gimpcontainertreestore.h" +#include "widgets/gimpcontainertreeview.h" +#include "widgets/gimpcontainerview.h" +#include "widgets/gimpdnd.h" +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpmessagebox.h" +#include "widgets/gimpmessagedialog.h" +#include "widgets/gimpuimanager.h" +#include "widgets/gimpviewrenderer.h" +#include "widgets/gimpwidgets-utils.h" + +#include "quit-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _QuitDialog QuitDialog; + +struct _QuitDialog +{ + Gimp *gimp; + GimpContainer *images; + GimpContext *context; + + gboolean do_quit; + + GtkWidget *dialog; + GimpContainerTreeView *tree_view; + GtkTreeViewColumn *save_column; + GtkWidget *ok_button; + GimpMessageBox *box; + GtkWidget *lost_label; + GtkWidget *hint_label; + + guint accel_key; + GdkModifierType accel_mods; +}; + + +static GtkWidget * quit_close_all_dialog_new (Gimp *gimp, + gboolean do_quit); +static void quit_close_all_dialog_free (QuitDialog *private); +static void quit_close_all_dialog_response (GtkWidget *dialog, + gint response_id, + QuitDialog *private); +static void quit_close_all_dialog_accel_marshal (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data); +static void quit_close_all_dialog_container_changed (GimpContainer *images, + GimpObject *image, + QuitDialog *private); +static void quit_close_all_dialog_image_selected (GimpContainerView *view, + GimpImage *image, + gpointer insert_data, + QuitDialog *private); +static void quit_close_all_dialog_name_cell_func (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data); +static void quit_close_all_dialog_save_clicked (GtkCellRenderer *cell, + const gchar *path, + GdkModifierType state, + QuitDialog *private); +static gboolean quit_close_all_dialog_query_tooltip (GtkWidget *widget, + gint x, + gint y, + gboolean keyboard_tip, + GtkTooltip *tooltip, + QuitDialog *private); +static gboolean quit_close_all_idle (QuitDialog *private); + + +/* public functions */ + +GtkWidget * +quit_dialog_new (Gimp *gimp) +{ + return quit_close_all_dialog_new (gimp, TRUE); +} + +GtkWidget * +close_all_dialog_new (Gimp *gimp) +{ + return quit_close_all_dialog_new (gimp, FALSE); +} + + +/* private functions */ + +static GtkWidget * +quit_close_all_dialog_new (Gimp *gimp, + gboolean do_quit) +{ + QuitDialog *private; + GtkWidget *view; + GimpContainerTreeView *tree_view; + GtkTreeViewColumn *column; + GtkCellRenderer *renderer; + GtkWidget *dnd_widget; + GtkAccelGroup *accel_group; + GClosure *closure; + gint rows; + gint view_size; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + private = g_slice_new0 (QuitDialog); + + private->gimp = gimp; + private->do_quit = do_quit; + private->images = gimp_displays_get_dirty_images (gimp); + private->context = gimp_context_new (gimp, "close-all-dialog", + gimp_get_user_context (gimp)); + + g_return_val_if_fail (private->images != NULL, NULL); + + private->dialog = + gimp_message_dialog_new (do_quit ? _("Quit GIMP") : _("Close All Images"), + GIMP_ICON_DIALOG_WARNING, + NULL, 0, + gimp_standard_help_func, + do_quit ? + GIMP_HELP_FILE_QUIT : GIMP_HELP_FILE_CLOSE_ALL, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + + NULL); + + private->ok_button = gtk_dialog_add_button (GTK_DIALOG (private->dialog), + "", GTK_RESPONSE_OK); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (private->dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + g_object_weak_ref (G_OBJECT (private->dialog), + (GWeakNotify) quit_close_all_dialog_free, private); + + g_signal_connect (private->dialog, "response", + G_CALLBACK (quit_close_all_dialog_response), + private); + + /* connect <Primary>D to the quit/close button */ + accel_group = gtk_accel_group_new (); + gtk_window_add_accel_group (GTK_WINDOW (private->dialog), accel_group); + g_object_unref (accel_group); + + closure = g_closure_new_object (sizeof (GClosure), G_OBJECT (private->dialog)); + g_closure_set_marshal (closure, quit_close_all_dialog_accel_marshal); + gtk_accelerator_parse ("<Primary>D", + &private->accel_key, &private->accel_mods); + gtk_accel_group_connect (accel_group, + private->accel_key, private->accel_mods, + 0, closure); + + private->box = GIMP_MESSAGE_DIALOG (private->dialog)->box; + + view_size = gimp->config->layer_preview_size; + rows = CLAMP (gimp_container_get_n_children (private->images), 3, 6); + + view = gimp_container_tree_view_new (private->images, private->context, + view_size, 1); + gimp_container_box_set_size_request (GIMP_CONTAINER_BOX (view), + -1, + rows * (view_size + 2)); + + private->tree_view = tree_view = GIMP_CONTAINER_TREE_VIEW (view); + + gtk_tree_view_column_set_expand (tree_view->main_column, TRUE); + + renderer = gimp_container_tree_view_get_name_cell (tree_view); + gtk_tree_view_column_set_cell_data_func (tree_view->main_column, + renderer, + quit_close_all_dialog_name_cell_func, + NULL, NULL); + + private->save_column = column = gtk_tree_view_column_new (); + renderer = gimp_cell_renderer_button_new (); + g_object_set (renderer, + "icon-name", "document-save", + NULL); + gtk_tree_view_column_pack_end (column, renderer, FALSE); + gtk_tree_view_column_set_attributes (column, renderer, NULL); + + gtk_tree_view_append_column (tree_view->view, column); + gimp_container_tree_view_add_toggle_cell (tree_view, renderer); + + g_signal_connect (renderer, "clicked", + G_CALLBACK (quit_close_all_dialog_save_clicked), + private); + + gtk_box_pack_start (GTK_BOX (private->box), view, TRUE, TRUE, 0); + gtk_widget_show (view); + + g_signal_connect (view, "select-item", + G_CALLBACK (quit_close_all_dialog_image_selected), + private); + + dnd_widget = gimp_container_view_get_dnd_widget (GIMP_CONTAINER_VIEW (view)); + gimp_dnd_xds_source_add (dnd_widget, + (GimpDndDragViewableFunc) gimp_dnd_get_drag_data, + NULL); + + g_signal_connect (tree_view->view, "query-tooltip", + G_CALLBACK (quit_close_all_dialog_query_tooltip), + private); + + if (do_quit) + private->lost_label = gtk_label_new (_("If you quit GIMP now, " + "these changes will be lost.")); + else + private->lost_label = gtk_label_new (_("If you close these images now, " + "changes will be lost.")); + gtk_label_set_xalign (GTK_LABEL (private->lost_label), 0.0); + gtk_label_set_line_wrap (GTK_LABEL (private->lost_label), TRUE); + gtk_box_pack_start (GTK_BOX (private->box), private->lost_label, + FALSE, FALSE, 0); + gtk_widget_show (private->lost_label); + + private->hint_label = gtk_label_new (NULL); + gtk_label_set_xalign (GTK_LABEL (private->hint_label), 0.0); + gtk_label_set_line_wrap (GTK_LABEL (private->hint_label), TRUE); + gtk_box_pack_start (GTK_BOX (private->box), private->hint_label, + FALSE, FALSE, 0); + gtk_widget_show (private->hint_label); + + closure = g_cclosure_new (G_CALLBACK (quit_close_all_dialog_container_changed), + private, NULL); + g_object_watch_closure (G_OBJECT (private->dialog), closure); + g_signal_connect_closure (private->images, "add", closure, FALSE); + g_signal_connect_closure (private->images, "remove", closure, FALSE); + + quit_close_all_dialog_container_changed (private->images, NULL, + private); + + return private->dialog; +} + +static void +quit_close_all_dialog_free (QuitDialog *private) +{ + g_idle_remove_by_data (private); + g_object_unref (private->images); + g_object_unref (private->context); + + g_slice_free (QuitDialog, private); +} + +static void +quit_close_all_dialog_response (GtkWidget *dialog, + gint response_id, + QuitDialog *private) +{ + Gimp *gimp = private->gimp; + gboolean do_quit = private->do_quit; + + gtk_widget_destroy (dialog); + + if (response_id == GTK_RESPONSE_OK) + { + if (do_quit) + gimp_exit (gimp, TRUE); + else + gimp_displays_close (gimp); + } +} + +static void +quit_close_all_dialog_accel_marshal (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data) +{ + gtk_dialog_response (GTK_DIALOG (closure->data), GTK_RESPONSE_OK); + + /* we handled the accelerator */ + g_value_set_boolean (return_value, TRUE); +} + +static void +quit_close_all_dialog_container_changed (GimpContainer *images, + GimpObject *image, + QuitDialog *private) +{ + gint num_images = gimp_container_get_n_children (images); + gchar *accel_string; + gchar *hint; + gchar *markup; + + accel_string = gtk_accelerator_get_label (private->accel_key, + private->accel_mods); + + gimp_message_box_set_primary_text (private->box, + /* TRANSLATORS: unless your language + msgstr[0] applies to 1 only (as + in English), replace "one" with %d. */ + ngettext ("There is one image with " + "unsaved changes:", + "There are %d images with " + "unsaved changes:", + num_images), num_images); + + if (num_images == 0) + { + gtk_widget_hide (private->lost_label); + + if (private->do_quit) + hint = g_strdup_printf (_("Press %s to quit."), + accel_string); + else + hint = g_strdup_printf (_("Press %s to close all images."), + accel_string); + + g_object_set (private->ok_button, + "label", private->do_quit ? _("_Quit") : _("Cl_ose"), + "use-stock", TRUE, + "image", NULL, + NULL); + + gtk_widget_grab_default (private->ok_button); + + /* When no image requires saving anymore, there is no harm in + * assuming completing the original quit or close-all action is + * the expected end-result. + * I don't immediately exit though because of some unfinished + * actions provoking warnings. Let's just close as soon as + * possible with an idle source. + * Also the idle source has another benefit: allowing to change + * one's mind and not exist after the last save, for instance by + * hitting Esc quickly while the last save is in progress. + */ + g_idle_add ((GSourceFunc) quit_close_all_idle, private); + } + else + { + GtkWidget *icon; + + if (private->do_quit) + hint = g_strdup_printf (_("Press %s to discard all changes and quit."), + accel_string); + else + hint = g_strdup_printf (_("Press %s to discard all changes and close all images."), + accel_string); + + gtk_widget_show (private->lost_label); + + icon = gtk_image_new_from_icon_name ("edit-delete", + GTK_ICON_SIZE_BUTTON); + g_object_set (private->ok_button, + "label", _("_Discard Changes"), + "use-stock", FALSE, + "image", icon, + NULL); + + gtk_dialog_set_default_response (GTK_DIALOG (private->dialog), + GTK_RESPONSE_CANCEL); + } + + markup = g_strdup_printf ("<i><small>%s</small></i>", hint); + + gtk_label_set_markup (GTK_LABEL (private->hint_label), markup); + + g_free (markup); + g_free (hint); + g_free (accel_string); +} + +static void +quit_close_all_dialog_image_selected (GimpContainerView *view, + GimpImage *image, + gpointer insert_data, + QuitDialog *private) +{ + GList *list; + + for (list = gimp_get_display_iter (private->gimp); + list; + list = g_list_next (list)) + { + GimpDisplay *display = list->data; + + if (gimp_display_get_image (display) == image) + { + gimp_display_shell_present (gimp_display_get_shell (display)); + + /* We only want to update the active shell. Give back keyboard + * focus to the quit dialog after this. + */ + gtk_window_present (GTK_WINDOW (private->dialog)); + } + } +} + +static void +quit_close_all_dialog_name_cell_func (GtkTreeViewColumn *tree_column, + GtkCellRenderer *cell, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gpointer data) +{ + GimpViewRenderer *renderer; + GimpImage *image; + gchar *name; + + gtk_tree_model_get (tree_model, iter, + GIMP_CONTAINER_TREE_STORE_COLUMN_RENDERER, &renderer, + GIMP_CONTAINER_TREE_STORE_COLUMN_NAME, &name, + -1); + + image = GIMP_IMAGE (renderer->viewable); + + if (gimp_image_is_export_dirty (image)) + { + g_object_set (cell, + "markup", NULL, + "text", name, + NULL); + } + else + { + GFile *file; + const gchar *filename; + gchar *escaped_name; + gchar *escaped_filename; + gchar *exported; + gchar *markup; + + file = gimp_image_get_exported_file (image); + if (! file) + file = gimp_image_get_imported_file (image); + + filename = gimp_file_get_utf8_name (file); + + escaped_name = g_markup_escape_text (name, -1); + escaped_filename = g_markup_escape_text (filename, -1); + + exported = g_strdup_printf (_("Exported to %s"), escaped_filename); + markup = g_strdup_printf ("%s\n<i>%s</i>", escaped_name, exported); + g_free (exported); + + g_free (escaped_name); + g_free (escaped_filename); + + g_object_set (cell, + "text", NULL, + "markup", markup, + NULL); + + g_free (markup); + } + + g_object_unref (renderer); + g_free (name); +} + +static void +quit_close_all_dialog_save_clicked (GtkCellRenderer *cell, + const gchar *path_str, + GdkModifierType state, + QuitDialog *private) +{ + GtkTreePath *path = gtk_tree_path_new_from_string (path_str); + GtkTreeIter iter; + + if (gtk_tree_model_get_iter (private->tree_view->model, &iter, path)) + { + GimpViewRenderer *renderer; + GimpImage *image; + GList *list; + + gtk_tree_model_get (private->tree_view->model, &iter, + GIMP_CONTAINER_TREE_STORE_COLUMN_RENDERER, &renderer, + -1); + + image = GIMP_IMAGE (renderer->viewable); + g_object_unref (renderer); + + for (list = gimp_get_display_iter (private->gimp); + list; + list = g_list_next (list)) + { + GimpDisplay *display = list->data; + + if (gimp_display_get_image (display) == image) + { + GimpDisplayShell *shell = gimp_display_get_shell (display); + GimpImageWindow *window = gimp_display_shell_get_window (shell); + + if (window) + { + GimpUIManager *manager; + + manager = gimp_image_window_get_ui_manager (window); + + gimp_display_shell_present (shell); + /* Make sure the quit dialog kept keyboard focus when + * the save dialog will exit. */ + gtk_window_present (GTK_WINDOW (private->dialog)); + + if (state & GDK_SHIFT_MASK) + { + gimp_ui_manager_activate_action (manager, "file", + "file-save-as"); + } + else + { + gimp_ui_manager_activate_action (manager, "file", + "file-save"); + } + } + + break; + } + } + } +} + +static gboolean +quit_close_all_dialog_query_tooltip (GtkWidget *widget, + gint x, + gint y, + gboolean keyboard_tip, + GtkTooltip *tooltip, + QuitDialog *private) +{ + GtkTreePath *path; + gboolean show_tip = FALSE; + + if (gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (widget), &x, &y, + keyboard_tip, + NULL, &path, NULL)) + { + GtkTreeViewColumn *column = NULL; + + gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget), x, y, + NULL, &column, NULL, NULL); + + if (column == private->save_column) + { + gchar *tip = g_strconcat (_("Save this image"), "\n<b>", + gimp_get_mod_string (GDK_SHIFT_MASK), + "</b> ", _("Save as"), + NULL); + + gtk_tooltip_set_markup (tooltip, tip); + gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (widget), tooltip, path); + + g_free (tip); + + show_tip = TRUE; + } + + gtk_tree_path_free (path); + } + + return show_tip; +} + +static gboolean +quit_close_all_idle (QuitDialog *private) +{ + gtk_dialog_response (GTK_DIALOG (private->dialog), GTK_RESPONSE_OK); + + return FALSE; +} diff --git a/app/dialogs/quit-dialog.h b/app/dialogs/quit-dialog.h new file mode 100644 index 0000000..1760976 --- /dev/null +++ b/app/dialogs/quit-dialog.h @@ -0,0 +1,28 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Copyright (C) 2004 Sven Neumann + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __QUIT_DIALOG_H__ +#define __QUIT_DIALOG_H__ + + +GtkWidget * quit_dialog_new (Gimp *gimp); +GtkWidget * close_all_dialog_new (Gimp *gimp); + + +#endif /* __QUIT_DIALOG_H__ */ diff --git a/app/dialogs/resize-dialog.c b/app/dialogs/resize-dialog.c new file mode 100644 index 0000000..722f8a8 --- /dev/null +++ b/app/dialogs/resize-dialog.c @@ -0,0 +1,558 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpmath/gimpmath.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimplayer.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpsizebox.h" +#include "widgets/gimpviewabledialog.h" + +#include "resize-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_RESET 1 +#define SB_WIDTH 8 + + +typedef struct _ResizeDialog ResizeDialog; + +struct _ResizeDialog +{ + GimpViewable *viewable; + GimpContext *context; + GimpFillType fill_type; + GimpItemSet layer_set; + gboolean resize_text_layers; + GimpResizeCallback callback; + gpointer user_data; + + gint old_width; + gint old_height; + GimpUnit old_unit; + GimpFillType old_fill_type; + GimpItemSet old_layer_set; + gboolean old_resize_text_layers; + + GtkWidget *box; + GtkWidget *offset; + GtkWidget *area; + GtkWidget *layer_set_combo; + GtkWidget *fill_type_combo; + GtkWidget *text_layers_button; +}; + + +/* local function prototypes */ + +static void resize_dialog_free (ResizeDialog *private); +static void resize_dialog_response (GtkWidget *dialog, + gint response_id, + ResizeDialog *private); +static void resize_dialog_reset (ResizeDialog *private); + +static void size_notify (GimpSizeBox *box, + GParamSpec *pspec, + ResizeDialog *private); +static void offset_update (GtkWidget *widget, + ResizeDialog *private); +static void offsets_changed (GtkWidget *area, + gint off_x, + gint off_y, + ResizeDialog *private); +static void offset_center_clicked (GtkWidget *widget, + ResizeDialog *private); + + +/* public function */ + +GtkWidget * +resize_dialog_new (GimpViewable *viewable, + GimpContext *context, + const gchar *title, + const gchar *role, + GtkWidget *parent, + GimpHelpFunc help_func, + const gchar *help_id, + GimpUnit unit, + GimpFillType fill_type, + GimpItemSet layer_set, + gboolean resize_text_layers, + GimpResizeCallback callback, + gpointer user_data) +{ + ResizeDialog *private; + GtkWidget *dialog; + GtkWidget *main_vbox; + GtkWidget *vbox; + GtkWidget *abox; + GtkWidget *frame; + GtkWidget *button; + GtkWidget *spinbutton; + GtkWidget *entry; + GtkWidget *hbox; + GtkWidget *combo; + GtkAdjustment *adjustment; + GdkPixbuf *pixbuf; + GtkSizeGroup *size_group = NULL; + GimpImage *image = NULL; + const gchar *size_title = NULL; + const gchar *layers_title = NULL; + gint width, height; + gdouble xres, yres; + + g_return_val_if_fail (GIMP_IS_VIEWABLE (viewable), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (callback != NULL, NULL); + + if (GIMP_IS_IMAGE (viewable)) + { + image = GIMP_IMAGE (viewable); + + width = gimp_image_get_width (image); + height = gimp_image_get_height (image); + + size_title = _("Canvas Size"); + layers_title = _("Layers"); + } + else if (GIMP_IS_ITEM (viewable)) + { + GimpItem *item = GIMP_ITEM (viewable); + + image = gimp_item_get_image (item); + + width = gimp_item_get_width (item); + height = gimp_item_get_height (item); + + size_title = _("Layer Size"); + layers_title = _("Fill With"); + } + else + { + g_return_val_if_reached (NULL); + } + + private = g_slice_new0 (ResizeDialog); + + private->viewable = viewable; + private->context = context; + private->fill_type = fill_type; + private->layer_set = layer_set; + private->resize_text_layers = resize_text_layers; + private->callback = callback; + private->user_data = user_data; + + private->old_width = width; + private->old_height = height; + private->old_unit = unit; + private->old_fill_type = private->fill_type; + private->old_layer_set = private->layer_set; + private->old_resize_text_layers = private->resize_text_layers; + + dialog = gimp_viewable_dialog_new (viewable, context, + title, role, GIMP_ICON_OBJECT_RESIZE, title, + parent, + help_func, help_id, + + _("Re_set"), RESPONSE_RESET, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Resize"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + RESPONSE_RESET, + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) resize_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (resize_dialog_response), + private); + + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_vbox, TRUE, TRUE, 0); + gtk_widget_show (main_vbox); + + frame = gimp_frame_new (size_title); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + gimp_image_get_resolution (image, &xres, &yres); + + private->box = g_object_new (GIMP_TYPE_SIZE_BOX, + "width", width, + "height", height, + "unit", unit, + "xresolution", xres, + "yresolution", yres, + "keep-aspect", FALSE, + "edit-resolution", FALSE, + NULL); + gtk_container_add (GTK_CONTAINER (frame), private->box); + gtk_widget_show (private->box); + + frame = gimp_frame_new (_("Offset")); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + /* the offset sizeentry */ + adjustment = (GtkAdjustment *) gtk_adjustment_new (1, 1, 1, 1, 10, 0); + spinbutton = gimp_spin_button_new (adjustment, 1.0, 2); + gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); + gtk_entry_set_width_chars (GTK_ENTRY (spinbutton), SB_WIDTH); + + private->offset = entry = gimp_size_entry_new (1, unit, "%p", + TRUE, FALSE, FALSE, SB_WIDTH, + GIMP_SIZE_ENTRY_UPDATE_SIZE); + gtk_table_set_col_spacing (GTK_TABLE (entry), 0, 6); + gtk_table_set_col_spacing (GTK_TABLE (entry), 1, 6); + gtk_table_set_col_spacing (GTK_TABLE (entry), 3, 12); + gtk_table_set_row_spacing (GTK_TABLE (entry), 0, 2); + + gimp_size_entry_add_field (GIMP_SIZE_ENTRY (entry), + GTK_SPIN_BUTTON (spinbutton), NULL); + gtk_table_attach_defaults (GTK_TABLE (entry), spinbutton, + 1, 2, 0, 1); + gtk_widget_show (spinbutton); + + gimp_size_entry_attach_label (GIMP_SIZE_ENTRY (entry), + _("_X:"), 0, 0, 0.0); + gimp_size_entry_attach_label (GIMP_SIZE_ENTRY (entry),_("_Y:"), 1, 0, 0.0); + gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 0); + gtk_widget_show (entry); + + gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (entry), 0, xres, FALSE); + gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (entry), 1, yres, FALSE); + + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (entry), 0, 0, 0); + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (entry), 1, 0, 0); + + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (entry), 0, 0); + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (entry), 1, 0); + + g_signal_connect (entry, "value-changed", + G_CALLBACK (offset_update), + private); + + button = gtk_button_new_with_mnemonic (_("C_enter")); + gtk_table_attach_defaults (GTK_TABLE (entry), button, 4, 5, 1, 2); + gtk_widget_show (button); + + g_signal_connect (button, "clicked", + G_CALLBACK (offset_center_clicked), + private); + + abox = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); + gtk_box_pack_start (GTK_BOX (vbox), abox, FALSE, FALSE, 0); + gtk_widget_show (abox); + + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (abox), frame); + gtk_widget_show (frame); + + private->area = gimp_offset_area_new (width, height); + gtk_container_add (GTK_CONTAINER (frame), private->area); + gtk_widget_show (private->area); + + gimp_viewable_get_preview_size (viewable, 200, TRUE, TRUE, &width, &height); + pixbuf = gimp_viewable_get_pixbuf (viewable, context, + width, height); + + if (pixbuf) + gimp_offset_area_set_pixbuf (GIMP_OFFSET_AREA (private->area), pixbuf); + + g_signal_connect (private->area, "offsets-changed", + G_CALLBACK (offsets_changed), + private); + + g_signal_connect (private->box, "notify", + G_CALLBACK (size_notify), + private); + + frame = gimp_frame_new (layers_title); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + if (GIMP_IS_IMAGE (viewable)) + { + GtkWidget *label; + + size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("Resize _layers:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + gtk_size_group_add_widget (size_group, label); + + private->layer_set_combo = combo = + gimp_enum_combo_box_new (GIMP_TYPE_ITEM_SET); + gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0); + gtk_widget_show (combo); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); + + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->layer_set, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->layer_set); + } + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + private->fill_type_combo = combo = + gimp_enum_combo_box_new (GIMP_TYPE_FILL_TYPE); + gtk_box_pack_end (GTK_BOX (hbox), combo, TRUE, TRUE, 0); + gtk_widget_show (combo); + + gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), + private->fill_type, + G_CALLBACK (gimp_int_combo_box_get_active), + &private->fill_type); + + if (GIMP_IS_IMAGE (viewable)) + { + GtkWidget *label; + + label = gtk_label_new_with_mnemonic (_("_Fill with:")); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); + + gtk_size_group_add_widget (size_group, label); + + private->text_layers_button = button = + gtk_check_button_new_with_mnemonic (_("Resize _text layers")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->resize_text_layers); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->resize_text_layers); + + gimp_help_set_help_data (button, + _("Resizing text layers will make them uneditable"), + NULL); + + g_object_unref (size_group); + } + + return dialog; +} + + +/* private functions */ + +static void +resize_dialog_free (ResizeDialog *private) +{ + g_slice_free (ResizeDialog, private); +} + +static void +resize_dialog_response (GtkWidget *dialog, + gint response_id, + ResizeDialog *private) +{ + GimpSizeEntry *entry = GIMP_SIZE_ENTRY (private->offset); + GimpUnit unit; + gint width; + gint height; + + switch (response_id) + { + case RESPONSE_RESET: + resize_dialog_reset (private); + break; + + case GTK_RESPONSE_OK: + g_object_get (private->box, + "width", &width, + "height", &height, + "unit", &unit, + NULL); + + private->callback (dialog, + private->viewable, + private->context, + width, + height, + unit, + gimp_size_entry_get_refval (entry, 0), + gimp_size_entry_get_refval (entry, 1), + private->fill_type, + private->layer_set, + private->resize_text_layers, + private->user_data); + break; + + default: + gtk_widget_destroy (dialog); + break; + } +} + +static void +resize_dialog_reset (ResizeDialog *private) +{ + g_object_set (private->box, + "keep-aspect", FALSE, + NULL); + + g_object_set (private->box, + "width", private->old_width, + "height", private->old_height, + "unit", private->old_unit, + NULL); + + if (private->layer_set_combo) + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (private->layer_set_combo), + private->old_layer_set); + + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (private->fill_type_combo), + private->old_fill_type); + + if (private->text_layers_button) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (private->text_layers_button), + private->old_resize_text_layers); +} + +static void +size_notify (GimpSizeBox *box, + GParamSpec *pspec, + ResizeDialog *private) +{ + gint diff_x = box->width - private->old_width; + gint diff_y = box->height - private->old_height; + + gimp_offset_area_set_size (GIMP_OFFSET_AREA (private->area), + box->width, box->height); + + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (private->offset), 0, + MIN (0, diff_x), MAX (0, diff_x)); + gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (private->offset), 1, + MIN (0, diff_y), MAX (0, diff_y)); +} + +static gint +resize_bound_off_x (ResizeDialog *private, + gint offset_x) +{ + GimpSizeBox *box = GIMP_SIZE_BOX (private->box); + + if (private->old_width <= box->width) + return CLAMP (offset_x, 0, (box->width - private->old_width)); + else + return CLAMP (offset_x, (box->width - private->old_width), 0); +} + +static gint +resize_bound_off_y (ResizeDialog *private, + gint off_y) +{ + GimpSizeBox *box = GIMP_SIZE_BOX (private->box); + + if (private->old_height <= box->height) + return CLAMP (off_y, 0, (box->height - private->old_height)); + else + return CLAMP (off_y, (box->height - private->old_height), 0); +} + +static void +offset_update (GtkWidget *widget, + ResizeDialog *private) +{ + GimpSizeEntry *entry = GIMP_SIZE_ENTRY (private->offset); + gint off_x; + gint off_y; + + off_x = resize_bound_off_x (private, + RINT (gimp_size_entry_get_refval (entry, 0))); + off_y = resize_bound_off_y (private, + RINT (gimp_size_entry_get_refval (entry, 1))); + + gimp_offset_area_set_offsets (GIMP_OFFSET_AREA (private->area), off_x, off_y); +} + +static void +offsets_changed (GtkWidget *area, + gint off_x, + gint off_y, + ResizeDialog *private) +{ + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset), 0, off_x); + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset), 1, off_y); +} + +static void +offset_center_clicked (GtkWidget *widget, + ResizeDialog *private) +{ + GimpSizeBox *box = GIMP_SIZE_BOX (private->box); + gint off_x; + gint off_y; + + off_x = resize_bound_off_x (private, (box->width - private->old_width) / 2); + off_y = resize_bound_off_y (private, (box->height - private->old_height) / 2); + + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset), 0, off_x); + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (private->offset), 1, off_y); + + g_signal_emit_by_name (private->offset, "value-changed", 0); +} diff --git a/app/dialogs/resize-dialog.h b/app/dialogs/resize-dialog.h new file mode 100644 index 0000000..ddbe5ce --- /dev/null +++ b/app/dialogs/resize-dialog.h @@ -0,0 +1,51 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __RESIZE_DIALOG_H__ +#define __RESIZE_DIALOG_H__ + + +typedef void (* GimpResizeCallback) (GtkWidget *dialog, + GimpViewable *viewable, + GimpContext *context, + gint width, + gint height, + GimpUnit unit, + gint offset_x, + gint offset_y, + GimpFillType fill_type, + GimpItemSet layer_set, + gboolean resize_text_layers, + gpointer user_data); + + +GtkWidget * resize_dialog_new (GimpViewable *viewable, + GimpContext *context, + const gchar *title, + const gchar *role, + GtkWidget *parent, + GimpHelpFunc help_func, + const gchar *help_id, + GimpUnit unit, + GimpFillType fill_type, + GimpItemSet layer_set, + gboolean resize_text_layers, + GimpResizeCallback callback, + gpointer user_data); + + +#endif /* __RESIZE_DIALOG_H__ */ diff --git a/app/dialogs/resolution-calibrate-dialog.c b/app/dialogs/resolution-calibrate-dialog.c new file mode 100644 index 0000000..d4562aa --- /dev/null +++ b/app/dialogs/resolution-calibrate-dialog.c @@ -0,0 +1,204 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpmath/gimpmath.h" +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "resolution-calibrate-dialog.h" + +#include "gimp-intl.h" + + +static GtkWidget *calibrate_entry = NULL; +static gdouble calibrate_xres = 1.0; +static gdouble calibrate_yres = 1.0; +static gint ruler_width = 1; +static gint ruler_height = 1; + + +/** + * resolution_calibrate_dialog: + * @resolution_entry: a #GimpSizeEntry to connect the dialog to + * @icon_name: an optional icon-name for the upper left corner + * + * Displays a dialog that allows the user to interactively determine + * her monitor resolution. This dialog runs it's own GTK main loop and + * is connected to a #GimpSizeEntry handling the resolution to be set. + **/ +void +resolution_calibrate_dialog (GtkWidget *resolution_entry, + const gchar *icon_name) +{ + GtkWidget *dialog; + GtkWidget *table; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *ruler; + GtkWidget *label; + GdkScreen *screen; + GdkRectangle rect; + gint monitor; + + g_return_if_fail (GIMP_IS_SIZE_ENTRY (resolution_entry)); + g_return_if_fail (gtk_widget_get_realized (resolution_entry)); + + /* this dialog can only exist once */ + if (calibrate_entry) + return; + + dialog = gimp_dialog_new (_("Calibrate Monitor Resolution"), + "gimp-resolution-calibration", + gtk_widget_get_toplevel (resolution_entry), + GTK_DIALOG_DESTROY_WITH_PARENT, + NULL, NULL, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_OK"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + screen = gtk_widget_get_screen (dialog); + monitor = gdk_screen_get_monitor_at_window (screen, + gtk_widget_get_window (resolution_entry)); + gdk_screen_get_monitor_workarea (screen, monitor, &rect); + + ruler_width = rect.width - 300 - (rect.width % 100); + ruler_height = rect.height - 300 - (rect.height % 100); + + table = gtk_table_new (4, 4, FALSE); + gtk_container_set_border_width (GTK_CONTAINER (table), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + table, TRUE, TRUE, 0); + gtk_widget_show (table); + + if (icon_name) + { + GtkWidget *image = gtk_image_new_from_icon_name (icon_name, + GTK_ICON_SIZE_DIALOG); + + gtk_table_attach (GTK_TABLE (table), image, 0, 1, 0, 1, + GTK_SHRINK, GTK_SHRINK, 4, 4); + gtk_widget_show (image); + } + + ruler = gimp_ruler_new (GTK_ORIENTATION_HORIZONTAL); + gtk_widget_set_size_request (ruler, ruler_width, 32); + gimp_ruler_set_range (GIMP_RULER (ruler), 0, ruler_width, ruler_width); + gtk_table_attach (GTK_TABLE (table), ruler, 1, 3, 0, 1, + GTK_SHRINK, GTK_SHRINK, 0, 0); + gtk_widget_show (ruler); + + ruler = gimp_ruler_new (GTK_ORIENTATION_VERTICAL); + gtk_widget_set_size_request (ruler, 32, ruler_height); + gimp_ruler_set_range (GIMP_RULER (ruler), 0, ruler_height, ruler_height); + gtk_table_attach (GTK_TABLE (table), ruler, 0, 1, 1, 3, + GTK_SHRINK, GTK_SHRINK, 0, 0); + gtk_widget_show (ruler); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_table_attach (GTK_TABLE (table), vbox, 1, 2, 1, 2, + GTK_SHRINK, GTK_SHRINK, 0, 0); + gtk_widget_show (vbox); + + label = + gtk_label_new (_("Measure the rulers and enter their lengths:")); + gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); + gtk_label_set_xalign (GTK_LABEL (label), 0.0); + gimp_label_set_attributes (GTK_LABEL (label), + PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, + PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, + -1); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + calibrate_xres = + gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (resolution_entry), 0); + calibrate_yres = + gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (resolution_entry), 1); + + calibrate_entry = + gimp_coordinates_new (GIMP_UNIT_INCH, "%p", + FALSE, FALSE, 10, + GIMP_SIZE_ENTRY_UPDATE_SIZE, + FALSE, + FALSE, + _("_Horizontal:"), + ruler_width, + calibrate_xres, + 1, GIMP_MAX_IMAGE_SIZE, + 0, 0, + _("_Vertical:"), + ruler_height, + calibrate_yres, + 1, GIMP_MAX_IMAGE_SIZE, + 0, 0); + gtk_widget_hide (GTK_WIDGET (GIMP_COORDINATES_CHAINBUTTON (calibrate_entry))); + g_signal_connect (dialog, "destroy", + G_CALLBACK (gtk_widget_destroyed), + &calibrate_entry); + + gtk_box_pack_end (GTK_BOX (hbox), calibrate_entry, FALSE, FALSE, 0); + gtk_widget_show (calibrate_entry); + + gtk_widget_show (dialog); + + switch (gimp_dialog_run (GIMP_DIALOG (dialog))) + { + case GTK_RESPONSE_OK: + { + GtkWidget *chain_button; + gdouble x, y; + + x = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (calibrate_entry), 0); + y = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (calibrate_entry), 1); + + calibrate_xres = (gdouble) ruler_width * calibrate_xres / x; + calibrate_yres = (gdouble) ruler_height * calibrate_yres / y; + + chain_button = GIMP_COORDINATES_CHAINBUTTON (resolution_entry); + + if (ABS (x - y) > GIMP_MIN_RESOLUTION) + gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (chain_button), + FALSE); + + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (resolution_entry), + 0, calibrate_xres); + gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (resolution_entry), + 1, calibrate_yres); + } + + default: + break; + } + + gtk_widget_destroy (dialog); +} diff --git a/app/dialogs/resolution-calibrate-dialog.h b/app/dialogs/resolution-calibrate-dialog.h new file mode 100644 index 0000000..84a60dc --- /dev/null +++ b/app/dialogs/resolution-calibrate-dialog.h @@ -0,0 +1,26 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __RESOLUTION_CALIBRATE_DIALOG_H__ +#define __RESOLUTION_CALIBRATE_DIALOG_H__ + + +void resolution_calibrate_dialog (GtkWidget *resolution_entry, + const gchar *icon_name); + + +#endif /* __RESOLUTION_CALIBRATE_DIALOG_H__ */ diff --git a/app/dialogs/scale-dialog.c b/app/dialogs/scale-dialog.c new file mode 100644 index 0000000..8c4b6da --- /dev/null +++ b/app/dialogs/scale-dialog.c @@ -0,0 +1,311 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimpitem.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpmessagebox.h" +#include "widgets/gimpsizebox.h" +#include "widgets/gimpviewabledialog.h" + +#include "scale-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_RESET 1 + +typedef struct _ScaleDialog ScaleDialog; + +struct _ScaleDialog +{ + GimpViewable *viewable; + GimpUnit unit; + GimpInterpolationType interpolation; + GtkWidget *box; + GtkWidget *combo; + GimpScaleCallback callback; + gpointer user_data; +}; + + +/* local function prototypes */ + +static void scale_dialog_free (ScaleDialog *private); +static void scale_dialog_response (GtkWidget *dialog, + gint response_id, + ScaleDialog *private); +static void scale_dialog_reset (ScaleDialog *private); + + +/* public function */ + +GtkWidget * +scale_dialog_new (GimpViewable *viewable, + GimpContext *context, + const gchar *title, + const gchar *role, + GtkWidget *parent, + GimpHelpFunc help_func, + const gchar *help_id, + GimpUnit unit, + GimpInterpolationType interpolation, + GimpScaleCallback callback, + gpointer user_data) +{ + GtkWidget *dialog; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *frame; + GtkWidget *label; + ScaleDialog *private; + GimpImage *image = NULL; + const gchar *text = NULL; + gint width, height; + gdouble xres, yres; + + g_return_val_if_fail (GIMP_IS_VIEWABLE (viewable), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (callback != NULL, NULL); + + if (GIMP_IS_IMAGE (viewable)) + { + image = GIMP_IMAGE (viewable); + + width = gimp_image_get_width (image); + height = gimp_image_get_height (image); + + text = _("Image Size"); + } + else if (GIMP_IS_ITEM (viewable)) + { + GimpItem *item = GIMP_ITEM (viewable); + + image = gimp_item_get_image (item); + + width = gimp_item_get_width (item); + height = gimp_item_get_height (item); + + text = _("Layer Size"); + } + else + { + g_return_val_if_reached (NULL); + } + + private = g_slice_new0 (ScaleDialog); + + private->viewable = viewable; + private->interpolation = interpolation; + private->unit = unit; + private->callback = callback; + private->user_data = user_data; + + gimp_image_get_resolution (image, &xres, &yres); + + dialog = gimp_viewable_dialog_new (viewable, context, + title, role, GIMP_ICON_OBJECT_SCALE, title, + parent, + help_func, help_id, + + _("_Reset"), RESPONSE_RESET, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Scale"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + RESPONSE_RESET, + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) scale_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (scale_dialog_response), + private); + + private->box = g_object_new (GIMP_TYPE_SIZE_BOX, + "width", width, + "height", height, + "unit", unit, + "xresolution", xres, + "yresolution", yres, + "resolution-unit", gimp_image_get_unit (image), + "keep-aspect", TRUE, + "edit-resolution", GIMP_IS_IMAGE (viewable), + NULL); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + frame = gimp_frame_new (text); + gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + gtk_container_add (GTK_CONTAINER (frame), private->box); + gtk_widget_show (private->box); + + frame = gimp_frame_new (_("Quality")); + gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("I_nterpolation:")); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + gtk_size_group_add_widget (GIMP_SIZE_BOX (private->box)->size_group, label); + + private->combo = gimp_enum_combo_box_new (GIMP_TYPE_INTERPOLATION_TYPE); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), private->combo); + gtk_box_pack_start (GTK_BOX (hbox), private->combo, TRUE, TRUE, 0); + gtk_widget_show (private->combo); + + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (private->combo), + private->interpolation); + + return dialog; +} + + +/* private functions */ + +static void +scale_dialog_free (ScaleDialog *private) +{ + g_slice_free (ScaleDialog, private); +} + +static void +scale_dialog_response (GtkWidget *dialog, + gint response_id, + ScaleDialog *private) +{ + GimpUnit unit = private->unit; + gint interpolation = private->interpolation; + GimpUnit resolution_unit; + gint width, height; + gdouble xres, yres; + + switch (response_id) + { + case RESPONSE_RESET: + scale_dialog_reset (private); + break; + + case GTK_RESPONSE_OK: + g_object_get (private->box, + "width", &width, + "height", &height, + "unit", &unit, + "xresolution", &xres, + "yresolution", &yres, + "resolution-unit", &resolution_unit, + NULL); + + gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (private->combo), + &interpolation); + + private->callback (dialog, + private->viewable, + width, height, unit, interpolation, + xres, yres, resolution_unit, + private->user_data); + break; + + default: + gtk_widget_destroy (dialog); + break; + } +} + +static void +scale_dialog_reset (ScaleDialog *private) +{ + GimpImage *image; + gint width, height; + gdouble xres, yres; + + if (GIMP_IS_IMAGE (private->viewable)) + { + image = GIMP_IMAGE (private->viewable); + + width = gimp_image_get_width (image); + height = gimp_image_get_height (image); + } + else if (GIMP_IS_ITEM (private->viewable)) + { + GimpItem *item = GIMP_ITEM (private->viewable); + + image = gimp_item_get_image (item); + + width = gimp_item_get_width (item); + height = gimp_item_get_height (item); + } + else + { + g_return_if_reached (); + } + + gimp_image_get_resolution (image, &xres, &yres); + + g_object_set (private->box, + "keep-aspect", FALSE, + NULL); + + g_object_set (private->box, + "width", width, + "height", height, + "unit", private->unit, + NULL); + + g_object_set (private->box, + "keep-aspect", TRUE, + "xresolution", xres, + "yresolution", yres, + "resolution-unit", gimp_image_get_unit (image), + NULL); + + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (private->combo), + private->interpolation); +} diff --git a/app/dialogs/scale-dialog.h b/app/dialogs/scale-dialog.h new file mode 100644 index 0000000..46e8f9c --- /dev/null +++ b/app/dialogs/scale-dialog.h @@ -0,0 +1,35 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __SCALE_DIALOG_H__ +#define __SCALE_DIALOG_H__ + + +GtkWidget * scale_dialog_new (GimpViewable *viewable, + GimpContext *context, + const gchar *title, + const gchar *role, + GtkWidget *parent, + GimpHelpFunc help_func, + const gchar *help_id, + GimpUnit unit, + GimpInterpolationType interpolation, + GimpScaleCallback callback, + gpointer user_data); + + +#endif /* __SCALE_DIALOG_H__ */ diff --git a/app/dialogs/stroke-dialog.c b/app/dialogs/stroke-dialog.c new file mode 100644 index 0000000..33c11ce --- /dev/null +++ b/app/dialogs/stroke-dialog.c @@ -0,0 +1,303 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Copyright (C) 2003 Henrik Brix Andersen <brix@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpconfig/gimpconfig.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpdrawable.h" +#include "core/gimpimage.h" +#include "core/gimppaintinfo.h" +#include "core/gimpstrokeoptions.h" +#include "core/gimptoolinfo.h" + +#include "widgets/gimpcontainercombobox.h" +#include "widgets/gimpcontainerview.h" +#include "widgets/gimpviewabledialog.h" +#include "widgets/gimpstrokeeditor.h" + +#include "stroke-dialog.h" + +#include "gimp-intl.h" + + +#define RESPONSE_RESET 1 + + +typedef struct _StrokeDialog StrokeDialog; + +struct _StrokeDialog +{ + GimpItem *item; + GimpDrawable *drawable; + GimpContext *context; + GimpStrokeOptions *options; + GimpStrokeCallback callback; + gpointer user_data; + + GtkWidget *tool_combo; +}; + + +/* local function prototypes */ + +static void stroke_dialog_free (StrokeDialog *private); +static void stroke_dialog_response (GtkWidget *dialog, + gint response_id, + StrokeDialog *private); + + +/* public function */ + +GtkWidget * +stroke_dialog_new (GimpItem *item, + GimpDrawable *drawable, + GimpContext *context, + const gchar *title, + const gchar *icon_name, + const gchar *help_id, + GtkWidget *parent, + GimpStrokeOptions *options, + GimpStrokeCallback callback, + gpointer user_data) +{ + StrokeDialog *private; + GimpImage *image; + GtkWidget *dialog; + GtkWidget *main_vbox; + GtkWidget *radio_box; + GtkWidget *cairo_radio; + GtkWidget *paint_radio; + GSList *group; + GtkWidget *frame; + + g_return_val_if_fail (GIMP_IS_ITEM (item), NULL); + g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (icon_name != NULL, NULL); + g_return_val_if_fail (help_id != NULL, NULL); + g_return_val_if_fail (parent == NULL || GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (callback != NULL, NULL); + + image = gimp_item_get_image (item); + + private = g_slice_new0 (StrokeDialog); + + private->item = item; + private->drawable = drawable; + private->context = context; + private->options = gimp_stroke_options_new (context->gimp, context, TRUE); + private->callback = callback; + private->user_data = user_data; + + gimp_config_sync (G_OBJECT (options), + G_OBJECT (private->options), 0); + + dialog = gimp_viewable_dialog_new (GIMP_VIEWABLE (item), context, + title, "gimp-stroke-options", + icon_name, + _("Choose Stroke Style"), + parent, + gimp_standard_help_func, + help_id, + + _("_Reset"), RESPONSE_RESET, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Stroke"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + RESPONSE_RESET, + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) stroke_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (stroke_dialog_response), + private); + + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_vbox, TRUE, TRUE, 0); + gtk_widget_show (main_vbox); + + radio_box = gimp_prop_enum_radio_box_new (G_OBJECT (private->options), + "method", -1, -1); + + group = gtk_radio_button_get_group (g_object_get_data (G_OBJECT (radio_box), + "radio-button")); + + cairo_radio = g_object_ref (group->next->data); + gtk_container_remove (GTK_CONTAINER (radio_box), cairo_radio); + + paint_radio = g_object_ref (group->data); + gtk_container_remove (GTK_CONTAINER (radio_box), paint_radio); + + g_object_ref_sink (radio_box); + g_object_unref (radio_box); + + { + PangoFontDescription *font_desc; + + font_desc = pango_font_description_new (); + pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD); + + gtk_widget_modify_font (gtk_bin_get_child (GTK_BIN (cairo_radio)), + font_desc); + gtk_widget_modify_font (gtk_bin_get_child (GTK_BIN (paint_radio)), + font_desc); + + pango_font_description_free (font_desc); + } + + + /* the stroke frame */ + + frame = gimp_frame_new (NULL); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + gtk_frame_set_label_widget (GTK_FRAME (frame), cairo_radio); + g_object_unref (cairo_radio); + + { + GtkWidget *stroke_editor; + gdouble xres; + gdouble yres; + + gimp_image_get_resolution (image, &xres, &yres); + + stroke_editor = gimp_stroke_editor_new (private->options, yres, FALSE); + gtk_container_add (GTK_CONTAINER (frame), stroke_editor); + gtk_widget_show (stroke_editor); + + g_object_bind_property (cairo_radio, "active", + stroke_editor, "sensitive", + G_BINDING_SYNC_CREATE); + } + + + /* the paint tool frame */ + + frame = gimp_frame_new (NULL); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + gtk_frame_set_label_widget (GTK_FRAME (frame), paint_radio); + g_object_unref (paint_radio); + + { + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *combo; + GtkWidget *button; + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_container_add (GTK_CONTAINER (frame), vbox); + gtk_widget_show (vbox); + + g_object_bind_property (paint_radio, "active", + vbox, "sensitive", + G_BINDING_SYNC_CREATE); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + label = gtk_label_new_with_mnemonic (_("P_aint tool:")); + gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + combo = gimp_container_combo_box_new (image->gimp->paint_info_list, + GIMP_CONTEXT (private->options), + 16, 0); + gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0); + gtk_widget_show (combo); + + private->tool_combo = combo; + + button = gimp_prop_check_button_new (G_OBJECT (private->options), + "emulate-brush-dynamics", + _("_Emulate brush dynamics")); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + gtk_widget_show (button); + } + + return dialog; +} + + +/* private functions */ + +static void +stroke_dialog_free (StrokeDialog *private) +{ + g_object_unref (private->options); + + g_slice_free (StrokeDialog, private); +} + +static void +stroke_dialog_response (GtkWidget *dialog, + gint response_id, + StrokeDialog *private) +{ + switch (response_id) + { + case RESPONSE_RESET: + { + GimpToolInfo *tool_info = gimp_context_get_tool (private->context); + + gimp_config_reset (GIMP_CONFIG (private->options)); + + gimp_container_view_select_item (GIMP_CONTAINER_VIEW (private->tool_combo), + GIMP_VIEWABLE (tool_info->paint_info)); + + } + break; + + case GTK_RESPONSE_OK: + private->callback (dialog, + private->item, + private->drawable, + private->context, + private->options, + private->user_data); + break; + + default: + gtk_widget_destroy (dialog); + break; + } +} diff --git a/app/dialogs/stroke-dialog.h b/app/dialogs/stroke-dialog.h new file mode 100644 index 0000000..e8e02a1 --- /dev/null +++ b/app/dialogs/stroke-dialog.h @@ -0,0 +1,44 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * Copyright (C) 2003 Simon Budig + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __STROKE_DIALOG_H__ +#define __STROKE_DIALOG_H__ + + +typedef void (* GimpStrokeCallback) (GtkWidget *dialog, + GimpItem *item, + GimpDrawable *drawable, + GimpContext *context, + GimpStrokeOptions *options, + gpointer user_data); + + +GtkWidget * stroke_dialog_new (GimpItem *item, + GimpDrawable *drawable, + GimpContext *context, + const gchar *title, + const gchar *icon_name, + const gchar *help_id, + GtkWidget *parent, + GimpStrokeOptions *options, + GimpStrokeCallback callback, + gpointer user_data); + + +#endif /* __STROKE_DIALOG_H__ */ diff --git a/app/dialogs/template-options-dialog.c b/app/dialogs/template-options-dialog.c new file mode 100644 index 0000000..7025253 --- /dev/null +++ b/app/dialogs/template-options-dialog.c @@ -0,0 +1,180 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpconfig/gimpconfig.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpcoreconfig.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimptemplate.h" + +#include "widgets/gimptemplateeditor.h" +#include "widgets/gimpviewabledialog.h" + +#include "template-options-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _TemplateOptionsDialog TemplateOptionsDialog; + +struct _TemplateOptionsDialog +{ + GimpTemplate *template; + GimpContext *context; + GimpTemplateOptionsCallback callback; + gpointer user_data; + + GtkWidget *editor; +}; + + +/* local function prototypes */ + +static void template_options_dialog_free (TemplateOptionsDialog *private); +static void template_options_dialog_response (GtkWidget *dialog, + gint response_id, + TemplateOptionsDialog *private); + + +/* public function */ + +GtkWidget * +template_options_dialog_new (GimpTemplate *template, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + GimpTemplateOptionsCallback callback, + gpointer user_data) +{ + TemplateOptionsDialog *private; + GtkWidget *dialog; + GimpViewable *viewable = NULL; + GtkWidget *vbox; + + g_return_val_if_fail (template == NULL || GIMP_IS_TEMPLATE (template), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (title != NULL, NULL); + g_return_val_if_fail (role != NULL, NULL); + g_return_val_if_fail (icon_name != NULL, NULL); + g_return_val_if_fail (desc != NULL, NULL); + g_return_val_if_fail (help_id != NULL, NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (TemplateOptionsDialog); + + private->template = template; + private->context = context; + private->callback = callback; + private->user_data = user_data; + + if (template) + { + viewable = GIMP_VIEWABLE (template); + template = gimp_config_duplicate (GIMP_CONFIG (template)); + } + else + { + template = + gimp_config_duplicate (GIMP_CONFIG (context->gimp->config->default_image)); + viewable = GIMP_VIEWABLE (template); + + gimp_object_set_static_name (GIMP_OBJECT (template), _("Unnamed")); + } + + dialog = gimp_viewable_dialog_new (viewable, context, + title, role, icon_name, desc, + parent, + gimp_standard_help_func, help_id, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_OK"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) template_options_dialog_free, private); + + g_signal_connect (dialog, "response", + G_CALLBACK (template_options_dialog_response), + private); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + private->editor = gimp_template_editor_new (template, context->gimp, TRUE); + gtk_box_pack_start (GTK_BOX (vbox), private->editor, FALSE, FALSE, 0); + gtk_widget_show (private->editor); + + g_object_unref (template); + + return dialog; +} + + +/* private functions */ + +static void +template_options_dialog_free (TemplateOptionsDialog *private) +{ + g_slice_free (TemplateOptionsDialog, private); +} + +static void +template_options_dialog_response (GtkWidget *dialog, + gint response_id, + TemplateOptionsDialog *private) +{ + if (response_id == GTK_RESPONSE_OK) + { + GimpTemplateEditor *editor = GIMP_TEMPLATE_EDITOR (private->editor); + + private->callback (dialog, + private->template, + gimp_template_editor_get_template (editor), + private->context, + private->user_data); + } + else + { + gtk_widget_destroy (dialog); + } +} diff --git a/app/dialogs/template-options-dialog.h b/app/dialogs/template-options-dialog.h new file mode 100644 index 0000000..633489e --- /dev/null +++ b/app/dialogs/template-options-dialog.h @@ -0,0 +1,41 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __TEMPLATE_OPTIONS_DIALOG_H__ +#define __TEMPLATE_OPTIONS_DIALOG_H__ + + +typedef void (* GimpTemplateOptionsCallback) (GtkWidget *dialog, + GimpTemplate *template, + GimpTemplate *edit_template, + GimpContext *context, + gpointer user_data); + + +GtkWidget * template_options_dialog_new (GimpTemplate *template, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + GimpTemplateOptionsCallback callback, + gpointer user_data); + + +#endif /* __TEMPLATE_OPTIONS_DIALOG_H__ */ diff --git a/app/dialogs/tips-dialog.c b/app/dialogs/tips-dialog.c new file mode 100644 index 0000000..610938c --- /dev/null +++ b/app/dialogs/tips-dialog.c @@ -0,0 +1,289 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpbase/gimpbase.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "config/gimpguiconfig.h" + +#include "core/gimp.h" + +#include "widgets/gimphelp-ids.h" + +#include "tips-dialog.h" +#include "tips-parser.h" + +#include "gimp-intl.h" + +enum +{ + RESPONSE_PREVIOUS = 1, + RESPONSE_NEXT = 2 +}; + + +/* eek, see bug 762279 */ +GtkLinkButtonUriFunc +gtk_link_button_set_uri_hook (GtkLinkButtonUriFunc func, + gpointer data, + GDestroyNotify destroy); +static void tips_uri_hook (GtkLinkButton *button, + const gchar *link_, + gpointer user_data); + + +static void tips_dialog_set_tip (GimpTip *tip); +static void tips_dialog_response (GtkWidget *dialog, + gint response); +static void tips_dialog_destroy (GtkWidget *widget, + GimpGuiConfig *config); +static void more_button_clicked (GtkWidget *button, + Gimp *gimp); + + +static GtkWidget *tips_dialog = NULL; +static GtkWidget *tip_label = NULL; +static GtkWidget *more_button = NULL; +static GList *tips = NULL; +static GList *current_tip = NULL; + + +GtkWidget * +tips_dialog_create (Gimp *gimp) +{ + GimpGuiConfig *config; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *button; + GtkWidget *image; + gint tips_count; + + g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); + + if (!tips) + { + GError *error = NULL; + GFile *file; + + file = gimp_data_directory_file ("tips", "gimp-tips.xml", NULL); + + tips = gimp_tips_from_file (file, &error); + + if (! tips) + { + GimpTip *tip; + + if (! error) + { + tip = gimp_tip_new (_("The GIMP tips file is empty!"), NULL); + } + else if (error->code == G_FILE_ERROR_NOENT) + { + tip = gimp_tip_new (_("The GIMP tips file appears to be " + "missing!"), + _("There should be a file called '%s'. " + "Please check your installation."), + gimp_file_get_utf8_name (file)); + } + else + { + tip = gimp_tip_new (_("The GIMP tips file could not be parsed!"), + "%s", error->message); + } + + tips = g_list_prepend (tips, tip); + } + else if (error) + { + g_printerr ("Error while parsing '%s': %s\n", + gimp_file_get_utf8_name (file), error->message); + } + + g_clear_error (&error); + g_object_unref (file); + } + + tips_count = g_list_length (tips); + + config = GIMP_GUI_CONFIG (gimp->config); + + if (config->last_tip_shown >= tips_count || config->last_tip_shown < 0) + config->last_tip_shown = 0; + + current_tip = g_list_nth (tips, config->last_tip_shown); + + if (tips_dialog) + return tips_dialog; + + tips_dialog = gimp_dialog_new (_("GIMP Tip of the Day"), + "gimp-tip-of-the-day", + NULL, 0, NULL, NULL, + NULL); + + button = gtk_dialog_add_button (GTK_DIALOG (tips_dialog), + _("_Previous Tip"), RESPONSE_PREVIOUS); + gtk_button_set_image (GTK_BUTTON (button), + gtk_image_new_from_icon_name (GIMP_ICON_GO_PREVIOUS, + GTK_ICON_SIZE_BUTTON)); + + button = gtk_dialog_add_button (GTK_DIALOG (tips_dialog), + _("_Next Tip"), RESPONSE_NEXT); + gtk_button_set_image (GTK_BUTTON (button), + gtk_image_new_from_icon_name (GIMP_ICON_GO_NEXT, + GTK_ICON_SIZE_BUTTON)); + + gtk_dialog_set_response_sensitive (GTK_DIALOG (tips_dialog), + RESPONSE_NEXT, tips_count > 1); + gtk_dialog_set_response_sensitive (GTK_DIALOG (tips_dialog), + RESPONSE_PREVIOUS, tips_count > 1); + + g_signal_connect (tips_dialog, "response", + G_CALLBACK (tips_dialog_response), + NULL); + g_signal_connect (tips_dialog, "destroy", + G_CALLBACK (tips_dialog_destroy), + config); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (tips_dialog))), + vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); + gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); + gtk_widget_show (hbox); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); + gtk_widget_show (vbox); + + image = gtk_image_new_from_icon_name (GIMP_ICON_DIALOG_INFORMATION, + GTK_ICON_SIZE_DIALOG); + gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0); + gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0); + gtk_widget_show (image); + + gtk_container_set_focus_chain (GTK_CONTAINER (hbox), NULL); + + tip_label = gtk_label_new (NULL); + gtk_label_set_selectable (GTK_LABEL (tip_label), TRUE); + gtk_label_set_justify (GTK_LABEL (tip_label), GTK_JUSTIFY_LEFT); + gtk_label_set_line_wrap (GTK_LABEL (tip_label), TRUE); + gtk_label_set_yalign (GTK_LABEL (tip_label), 0.0); + gtk_box_pack_start (GTK_BOX (vbox), tip_label, TRUE, TRUE, 0); + gtk_widget_show (tip_label); + + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show (hbox); + + more_button = gtk_link_button_new_with_label ("https://docs.gimp.org/", + /* a link to the related section in the user manual */ + _("Learn more")); + gtk_widget_show (more_button); + gtk_box_pack_start (GTK_BOX (hbox), more_button, FALSE, FALSE, 0); + + /* this is deprecated but better than showing two URIs, see bug #762279 */ + gtk_link_button_set_uri_hook (tips_uri_hook, NULL, NULL); + + g_signal_connect (more_button, "clicked", + G_CALLBACK (more_button_clicked), + gimp); + + tips_dialog_set_tip (current_tip->data); + + return tips_dialog; +} + +static void +tips_dialog_destroy (GtkWidget *widget, + GimpGuiConfig *config) +{ + /* the last-shown-tip is saved in sessionrc */ + config->last_tip_shown = g_list_position (tips, current_tip); + + tips_dialog = NULL; + current_tip = NULL; + + gimp_tips_free (tips); + tips = NULL; +} + +static void +tips_dialog_response (GtkWidget *dialog, + gint response) +{ + switch (response) + { + case RESPONSE_PREVIOUS: + current_tip = current_tip->prev ? current_tip->prev : g_list_last (tips); + tips_dialog_set_tip (current_tip->data); + break; + + case RESPONSE_NEXT: + current_tip = current_tip->next ? current_tip->next : tips; + tips_dialog_set_tip (current_tip->data); + break; + + default: + gtk_widget_destroy (dialog); + break; + } +} + +static void +tips_dialog_set_tip (GimpTip *tip) +{ + g_return_if_fail (tip != NULL); + + gtk_label_set_markup (GTK_LABEL (tip_label), tip->text); + + /* set the URI to unset the "visited" state */ + gtk_link_button_set_uri (GTK_LINK_BUTTON (more_button), + "https://docs.gimp.org/"); + + gtk_widget_set_sensitive (more_button, tip->help_id != NULL); +} + +static void +more_button_clicked (GtkWidget *button, + Gimp *gimp) +{ + GimpTip *tip = current_tip->data; + + g_signal_stop_emission_by_name (button, "clicked"); + + if (tip->help_id) + gimp_help (gimp, NULL, NULL, tip->help_id); +} + +static void +tips_uri_hook (GtkLinkButton *button, + const gchar *link_, + gpointer user_data) +{ + /* do nothing */ +} diff --git a/app/dialogs/tips-dialog.h b/app/dialogs/tips-dialog.h new file mode 100644 index 0000000..e594212 --- /dev/null +++ b/app/dialogs/tips-dialog.h @@ -0,0 +1,25 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __TIPS_DIALOG_H__ +#define __TIPS_DIALOG_H__ + + +GtkWidget * tips_dialog_create (Gimp *gimp); + + +#endif /* __TIPS_DIALOG_H__ */ diff --git a/app/dialogs/tips-parser.c b/app/dialogs/tips-parser.c new file mode 100644 index 0000000..9e94f0f --- /dev/null +++ b/app/dialogs/tips-parser.c @@ -0,0 +1,477 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * tips-parser.c - Parse the gimp-tips.xml file. + * Copyright (C) 2002, 2008 Sven Neumann <sven@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <string.h> + +#include <gio/gio.h> + +#include "config/config-types.h" +#include "config/gimpxmlparser.h" + +#include "tips-parser.h" + +#include "gimp-intl.h" + + +typedef enum +{ + TIPS_START, + TIPS_IN_TIPS, + TIPS_IN_TIP, + TIPS_IN_THETIP, + TIPS_IN_UNKNOWN +} TipsParserState; + +typedef enum +{ + TIPS_LOCALE_NONE, + TIPS_LOCALE_MATCH, + TIPS_LOCALE_MISMATCH +} TipsParserLocaleState; + +typedef struct +{ + TipsParserState state; + TipsParserState last_known_state; + const gchar *locale; + const gchar *help_id; + TipsParserLocaleState locale_state; + gint markup_depth; + gint unknown_depth; + GString *value; + GimpTip *current_tip; + GList *tips; +} TipsParser; + + +static void tips_parser_start_element (GMarkupParseContext *context, + const gchar *element_name, + const gchar **attribute_names, + const gchar **attribute_values, + gpointer user_data, + GError **error); +static void tips_parser_end_element (GMarkupParseContext *context, + const gchar *element_name, + gpointer user_data, + GError **error); +static void tips_parser_characters (GMarkupParseContext *context, + const gchar *text, + gsize text_len, + gpointer user_data, + GError **error); + +static void tips_parser_start_markup (TipsParser *parser, + const gchar *markup_name); +static void tips_parser_end_markup (TipsParser *parser, + const gchar *markup_name); +static void tips_parser_start_unknown (TipsParser *parser); +static void tips_parser_end_unknown (TipsParser *parser); + +static gchar * tips_parser_parse_help_id (TipsParser *parser, + const gchar **names, + const gchar **values); + +static void tips_parser_parse_locale (TipsParser *parser, + const gchar **names, + const gchar **values); +static void tips_parser_set_by_locale (TipsParser *parser, + gchar **dest); + + +static const GMarkupParser markup_parser = +{ + tips_parser_start_element, + tips_parser_end_element, + tips_parser_characters, + NULL, /* passthrough */ + NULL /* error */ +}; + + +GimpTip * +gimp_tip_new (const gchar *title, + const gchar *format, + ...) +{ + GimpTip *tip = g_slice_new0 (GimpTip); + GString *str = g_string_new (NULL); + + if (title) + { + g_string_append (str, "<b>"); + g_string_append (str, title); + g_string_append (str, "</b>"); + + if (format) + g_string_append (str, "\n\n"); + } + + if (format) + { + va_list args; + + va_start (args, format); + g_string_append_vprintf (str, format, args); + va_end (args); + } + + tip->text = g_string_free (str, FALSE); + + return tip; +} + +void +gimp_tip_free (GimpTip *tip) +{ + if (! tip) + return; + + g_free (tip->text); + g_free (tip->help_id); + + g_slice_free (GimpTip, tip); +} + +/** + * gimp_tips_from_file: + * @file: the tips file to parse + * @error: return location for a #GError + * + * Reads a gimp-tips XML file, creates a new #GimpTip for + * each tip entry and returns a #GList of them. If a parser + * error occurs at some point, the uncompleted list is + * returned and @error is set (unless @error is %NULL). + * The message set in @error contains a detailed description + * of the problem. + * + * Return value: a #Glist of #GimpTips. + **/ +GList * +gimp_tips_from_file (GFile *file, + GError **error) +{ + GimpXmlParser *xml_parser; + TipsParser parser = { 0, }; + const gchar *tips_locale; + GList *tips = NULL; + + g_return_val_if_fail (G_IS_FILE (file), NULL); + g_return_val_if_fail (error == NULL || *error == NULL, NULL); + + parser.value = g_string_new (NULL); + + /* This is a special string to specify the language identifier to + look for in the gimp-tips.xml file. Please translate the C in it + according to the name of the po file used for gimp-tips.xml. + E.g. for the german translation, that would be "tips-locale:de". + */ + tips_locale = _("tips-locale:C"); + + if (g_str_has_prefix (tips_locale, "tips-locale:")) + { + tips_locale += strlen ("tips-locale:"); + + if (*tips_locale && *tips_locale != 'C') + parser.locale = tips_locale; + } + else + { + g_warning ("Wrong translation for 'tips-locale:', fix the translation!"); + } + + xml_parser = gimp_xml_parser_new (&markup_parser, &parser); + + gimp_xml_parser_parse_gfile (xml_parser, file, error); + + gimp_xml_parser_free (xml_parser); + + tips = g_list_reverse (parser.tips); + + gimp_tip_free (parser.current_tip); + g_string_free (parser.value, TRUE); + + return tips; +} + +void +gimp_tips_free (GList *tips) +{ + GList *list; + + for (list = tips; list; list = list->next) + gimp_tip_free (list->data); + + g_list_free (tips); +} + +static void +tips_parser_start_element (GMarkupParseContext *context, + const gchar *element_name, + const gchar **attribute_names, + const gchar **attribute_values, + gpointer user_data, + GError **error) +{ + TipsParser *parser = user_data; + + switch (parser->state) + { + case TIPS_START: + if (strcmp (element_name, "gimp-tips") == 0) + { + parser->state = TIPS_IN_TIPS; + } + else + { + tips_parser_start_unknown (parser); + } + break; + + case TIPS_IN_TIPS: + if (strcmp (element_name, "tip") == 0) + { + parser->state = TIPS_IN_TIP; + parser->current_tip = g_slice_new0 (GimpTip); + parser->current_tip->help_id = tips_parser_parse_help_id (parser, + attribute_names, + attribute_values); + } + else + { + tips_parser_start_unknown (parser); + } + break; + + case TIPS_IN_TIP: + if (strcmp (element_name, "thetip") == 0) + { + parser->state = TIPS_IN_THETIP; + tips_parser_parse_locale (parser, attribute_names, attribute_values); + } + else + { + tips_parser_start_unknown (parser); + } + break; + + case TIPS_IN_THETIP: + if (strcmp (element_name, "b" ) == 0 || + strcmp (element_name, "big") == 0 || + strcmp (element_name, "tt" ) == 0) + { + tips_parser_start_markup (parser, element_name); + } + else + { + tips_parser_start_unknown (parser); + } + break; + + case TIPS_IN_UNKNOWN: + tips_parser_start_unknown (parser); + break; + } +} + +static void +tips_parser_end_element (GMarkupParseContext *context, + const gchar *element_name, + gpointer user_data, + GError **error) +{ + TipsParser *parser = user_data; + + switch (parser->state) + { + case TIPS_START: + g_warning ("%s: shouldn't get here", G_STRLOC); + break; + + case TIPS_IN_TIPS: + parser->state = TIPS_START; + break; + + case TIPS_IN_TIP: + parser->tips = g_list_prepend (parser->tips, parser->current_tip); + parser->current_tip = NULL; + parser->state = TIPS_IN_TIPS; + break; + + case TIPS_IN_THETIP: + if (parser->markup_depth == 0) + { + tips_parser_set_by_locale (parser, &parser->current_tip->text); + g_string_truncate (parser->value, 0); + parser->state = TIPS_IN_TIP; + } + else + tips_parser_end_markup (parser, element_name); + break; + + case TIPS_IN_UNKNOWN: + tips_parser_end_unknown (parser); + break; + } +} + +static void +tips_parser_characters (GMarkupParseContext *context, + const gchar *text, + gsize text_len, + gpointer user_data, + GError **error) +{ + TipsParser *parser = user_data; + + switch (parser->state) + { + case TIPS_IN_THETIP: + if (parser->locale_state != TIPS_LOCALE_MISMATCH) + { + gint i; + + /* strip tabs, newlines and adjacent whitespace */ + for (i = 0; i < text_len; i++) + { + if (text[i] != ' ' && + text[i] != '\t' && text[i] != '\n' && text[i] != '\r') + { + g_string_append_c (parser->value, text[i]); + } + else if (parser->value->len > 0 && + parser->value->str[parser->value->len - 1] != ' ') + { + g_string_append_c (parser->value, ' '); + } + } + } + break; + default: + break; + } +} + +static void +tips_parser_start_markup (TipsParser *parser, + const gchar *markup_name) +{ + parser->markup_depth++; + g_string_append_printf (parser->value, "<%s>", markup_name); +} + +static void +tips_parser_end_markup (TipsParser *parser, + const gchar *markup_name) +{ + gimp_assert (parser->markup_depth > 0); + + parser->markup_depth--; + g_string_append_printf (parser->value, "</%s>", markup_name); +} + +static void +tips_parser_start_unknown (TipsParser *parser) +{ + if (parser->unknown_depth == 0) + parser->last_known_state = parser->state; + + parser->state = TIPS_IN_UNKNOWN; + parser->unknown_depth++; +} + +static void +tips_parser_end_unknown (TipsParser *parser) +{ + gimp_assert (parser->unknown_depth > 0 && parser->state == TIPS_IN_UNKNOWN); + + parser->unknown_depth--; + + if (parser->unknown_depth == 0) + parser->state = parser->last_known_state; +} + +static gchar * +tips_parser_parse_help_id (TipsParser *parser, + const gchar **names, + const gchar **values) +{ + while (*names && *values) + { + if (strcmp (*names, "help") == 0 && **values) + return g_strdup (*values); + + names++; + values++; + } + + return NULL; +} + +static void +tips_parser_parse_locale (TipsParser *parser, + const gchar **names, + const gchar **values) +{ + parser->locale_state = TIPS_LOCALE_NONE; + + while (*names && *values) + { + if (strcmp (*names, "xml:lang") == 0 && **values) + { + parser->locale_state = (parser->locale && + strcmp (*values, parser->locale) == 0 ? + TIPS_LOCALE_MATCH : TIPS_LOCALE_MISMATCH); + } + + names++; + values++; + } +} + +static void +tips_parser_set_by_locale (TipsParser *parser, + gchar **dest) +{ + switch (parser->locale_state) + { + case TIPS_LOCALE_NONE: + if (!parser->locale) + { + g_free (*dest); + *dest = g_strdup (parser->value->str); + } + else if (*dest == NULL) + { + *dest = g_strdup (parser->value->str); + } + break; + + case TIPS_LOCALE_MATCH: + g_free (*dest); + *dest = g_strdup (parser->value->str); + break; + + case TIPS_LOCALE_MISMATCH: + break; + } +} + diff --git a/app/dialogs/tips-parser.h b/app/dialogs/tips-parser.h new file mode 100644 index 0000000..4d9fab7 --- /dev/null +++ b/app/dialogs/tips-parser.h @@ -0,0 +1,44 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * tips-parser.h - Parse the gimp-tips.xml file. + * Copyright (C) 2002, 2008 Sven Neumann <sven@gimp.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __TIPS_PARSER_H__ +#define __TIPS_PARSER_H__ + + +typedef struct _GimpTip GimpTip; + +struct _GimpTip +{ + gchar *text; + gchar *help_id; +}; + + +GimpTip * gimp_tip_new (const gchar *title, + const gchar *format, + ...) G_GNUC_PRINTF(2, 3); +void gimp_tip_free (GimpTip *tip); + +GList * gimp_tips_from_file (GFile *file, + GError **error); +void gimp_tips_free (GList *tips); + + +#endif /* __TIPS_PARSER_H__ */ diff --git a/app/dialogs/user-install-dialog.c b/app/dialogs/user-install-dialog.c new file mode 100644 index 0000000..af9edd4 --- /dev/null +++ b/app/dialogs/user-install-dialog.c @@ -0,0 +1,153 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * user-install-dialog.c + * Copyright (C) 2000-2006 Michael Natterer and Sven Neumann + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp-user-install.h" + +#include "widgets/gimpmessagebox.h" +#include "widgets/gimpmessagedialog.h" + +#include "user-install-dialog.h" + +#include "gimp-intl.h" + + +static GtkWidget * user_install_dialog_new (GimpUserInstall *install); +static void user_install_dialog_log (const gchar *message, + gboolean error, + gpointer data); + + +gboolean +user_install_dialog_run (GimpUserInstall *install) +{ + GtkWidget *dialog; + gboolean success; + + g_return_val_if_fail (install != NULL, FALSE); + + dialog = user_install_dialog_new (install); + + success = gimp_user_install_run (install); + + if (! success) + { + g_signal_connect (dialog, "response", + G_CALLBACK (gtk_main_quit), + NULL); + + gtk_widget_show (dialog); + + gtk_main (); + } + + gtk_widget_destroy (dialog); + + return success; +} + +static GtkWidget * +user_install_dialog_new (GimpUserInstall *install) +{ + GtkWidget *dialog; + GtkWidget *frame; + GtkWidget *scrolled; + GtkTextBuffer *buffer; + GtkWidget *view; + + gimp_icons_init (); + + dialog = gimp_message_dialog_new (_("GIMP User Installation"), + GIMP_ICON_WILBER_EEK, + NULL, 0, NULL, NULL, + + _("_Quit"), GTK_RESPONSE_OK, + + NULL); + + gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box, + _("User installation failed!")); + gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box, + _("The GIMP user installation failed; " + "see the log for details.")); + + frame = gimp_frame_new (_("Installation Log")); + gtk_container_set_border_width (GTK_CONTAINER (frame), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + frame, TRUE, TRUE, 0); + gtk_widget_show (frame); + + scrolled = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (frame), scrolled); + gtk_widget_show (scrolled); + + buffer = gtk_text_buffer_new (NULL); + + gtk_text_buffer_create_tag (buffer, "bold", + "weight", PANGO_WEIGHT_BOLD, + NULL); + + view = gtk_text_view_new_with_buffer (buffer); + gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE); + gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD); + gtk_widget_set_size_request (view, -1, 200); + gtk_container_add (GTK_CONTAINER (scrolled), view); + gtk_widget_show (view); + + g_object_unref (buffer); + + gimp_user_install_set_log_handler (install, user_install_dialog_log, buffer); + + return dialog; +} + +static void +user_install_dialog_log (const gchar *message, + gboolean error, + gpointer data) +{ + GtkTextBuffer *buffer = GTK_TEXT_BUFFER (data); + GtkTextIter cursor; + + gtk_text_buffer_get_end_iter (buffer, &cursor); + + if (error && message) + { + gtk_text_buffer_insert_with_tags_by_name (buffer, &cursor, message, -1, + "bold", NULL); + } + else if (message) + { + gtk_text_buffer_insert (buffer, &cursor, message, -1); + } + + gtk_text_buffer_insert (buffer, &cursor, "\n", -1); +} diff --git a/app/dialogs/user-install-dialog.h b/app/dialogs/user-install-dialog.h new file mode 100644 index 0000000..baa2bda --- /dev/null +++ b/app/dialogs/user-install-dialog.h @@ -0,0 +1,25 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __USER_INSTALL_DIALOG_H__ +#define __USER_INSTALL_DIALOG_H__ + + +gboolean user_install_dialog_run (GimpUserInstall *install); + + +#endif /* __USER_INSTALL_DIALOG_H__ */ diff --git a/app/dialogs/vectors-export-dialog.c b/app/dialogs/vectors-export-dialog.c new file mode 100644 index 0000000..9a3e082 --- /dev/null +++ b/app/dialogs/vectors-export-dialog.c @@ -0,0 +1,179 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpimage.h" + +#include "vectors-export-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _VectorsExportDialog VectorsExportDialog; + +struct _VectorsExportDialog +{ + GimpImage *image; + gboolean active_only; + GimpVectorsExportCallback callback; + gpointer user_data; +}; + + +/* local function prototypes */ + +static void vectors_export_dialog_free (VectorsExportDialog *private); +static void vectors_export_dialog_response (GtkWidget *widget, + gint response_id, + VectorsExportDialog *private); + + +/* public function */ + +GtkWidget * +vectors_export_dialog_new (GimpImage *image, + GtkWidget *parent, + GFile *export_folder, + gboolean active_only, + GimpVectorsExportCallback callback, + gpointer user_data) +{ + VectorsExportDialog *private; + GtkWidget *dialog; + GtkWidget *combo; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (export_folder == NULL || G_IS_FILE (export_folder), + NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (VectorsExportDialog); + + private->image = image; + private->active_only = active_only; + private->callback = callback; + private->user_data = user_data; + + dialog = gtk_file_chooser_dialog_new (_("Export Path to SVG"), NULL, + GTK_FILE_CHOOSER_ACTION_SAVE, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Save"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_role (GTK_WINDOW (dialog), "gimp-vectors-export"); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_window_set_screen (GTK_WINDOW (dialog), + gtk_widget_get_screen (parent)); + + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), + TRUE); + + if (export_folder) + gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (dialog), + export_folder, NULL); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) vectors_export_dialog_free, private); + + g_signal_connect_object (image, "disconnect", + G_CALLBACK (gtk_widget_destroy), + dialog, 0); + + g_signal_connect (dialog, "delete-event", + G_CALLBACK (gtk_true), + NULL); + + g_signal_connect (dialog, "response", + G_CALLBACK (vectors_export_dialog_response), + private); + + combo = gimp_int_combo_box_new (_("Export the active path"), TRUE, + _("Export all paths from this image"), FALSE, + NULL); + gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (combo), + private->active_only); + gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (dialog), combo); + + g_signal_connect (combo, "changed", + G_CALLBACK (gimp_int_combo_box_get_active), + &private->active_only); + + return dialog; +} + + +/* private functions */ + +static void +vectors_export_dialog_free (VectorsExportDialog *private) +{ + g_slice_free (VectorsExportDialog, private); +} + +static void +vectors_export_dialog_response (GtkWidget *dialog, + gint response_id, + VectorsExportDialog *private) +{ + if (response_id == GTK_RESPONSE_OK) + { + GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog); + GFile *file; + + file = gtk_file_chooser_get_file (chooser); + + if (file) + { + GFile *folder; + + folder = gtk_file_chooser_get_current_folder_file (chooser); + + private->callback (dialog, + private->image, + file, + folder, + private->active_only, + private->user_data); + + if (folder) + g_object_unref (folder); + + g_object_unref (file); + } + } + else + { + gtk_widget_destroy (dialog); + } +} diff --git a/app/dialogs/vectors-export-dialog.h b/app/dialogs/vectors-export-dialog.h new file mode 100644 index 0000000..236b6e5 --- /dev/null +++ b/app/dialogs/vectors-export-dialog.h @@ -0,0 +1,38 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __VECTORS_EXPORT_DIALOG_H__ +#define __VECTORS_EXPORT_DIALOG_H__ + + +typedef void (* GimpVectorsExportCallback) (GtkWidget *dialog, + GimpImage *image, + GFile *file, + GFile *export_folder, + gboolean active_only, + gpointer user_data); + + +GtkWidget * vectors_export_dialog_new (GimpImage *image, + GtkWidget *parent, + GFile *export_folder, + gboolean active_only, + GimpVectorsExportCallback callback, + gpointer user_data); + + +#endif /* __VECTORS_EXPORT_DIALOG_H__ */ diff --git a/app/dialogs/vectors-import-dialog.c b/app/dialogs/vectors-import-dialog.c new file mode 100644 index 0000000..76ac7cc --- /dev/null +++ b/app/dialogs/vectors-import-dialog.c @@ -0,0 +1,209 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpimage.h" + +#include "vectors-import-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _VectorsImportDialog VectorsImportDialog; + +struct _VectorsImportDialog +{ + GimpImage *image; + gboolean merge_vectors; + gboolean scale_vectors; + GimpVectorsImportCallback callback; + gpointer user_data; +}; + + +/* local function prototypes */ + +static void vectors_import_dialog_free (VectorsImportDialog *private); +static void vectors_import_dialog_response (GtkWidget *dialog, + gint response_id, + VectorsImportDialog *private); + + +/* public function */ + +GtkWidget * +vectors_import_dialog_new (GimpImage *image, + GtkWidget *parent, + GFile *import_folder, + gboolean merge_vectors, + gboolean scale_vectors, + GimpVectorsImportCallback callback, + gpointer user_data) +{ + VectorsImportDialog *private; + GtkWidget *dialog; + GtkWidget *vbox; + GtkWidget *button; + GtkFileFilter *filter; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (import_folder == NULL || G_IS_FILE (import_folder), + NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (VectorsImportDialog); + + private->image = image; + private->merge_vectors = merge_vectors; + private->scale_vectors = scale_vectors; + private->callback = callback; + private->user_data = user_data; + + dialog = gtk_file_chooser_dialog_new (_("Import Paths from SVG"), NULL, + GTK_FILE_CHOOSER_ACTION_OPEN, + + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Open"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_role (GTK_WINDOW (dialog), "gimp-vectors-import"); + gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE); + gtk_window_set_screen (GTK_WINDOW (dialog), + gtk_widget_get_screen (parent)); + + if (import_folder) + gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (dialog), + import_folder, NULL); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) vectors_import_dialog_free, private); + + g_signal_connect_object (image, "disconnect", + G_CALLBACK (gtk_widget_destroy), + dialog, 0); + + g_signal_connect (dialog, "delete-event", + G_CALLBACK (gtk_true), + NULL); + + g_signal_connect (dialog, "response", + G_CALLBACK (vectors_import_dialog_response), + private); + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("All files (*.*)")); + gtk_file_filter_add_pattern (filter, "*"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_set_name (filter, _("Scalable SVG image (*.svg)")); + gtk_file_filter_add_pattern (filter, "*.[Ss][Vv][Gg]"); + gtk_file_filter_add_mime_type (filter, "image/svg+xml"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + + gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (dialog), vbox); + gtk_widget_show (vbox); + + button = gtk_check_button_new_with_mnemonic (_("_Merge imported paths")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->merge_vectors); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->merge_vectors); + + button = gtk_check_button_new_with_mnemonic (_("_Scale imported paths " + "to fit image")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), + private->scale_vectors); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + gtk_widget_show (button); + + g_signal_connect (button, "toggled", + G_CALLBACK (gimp_toggle_button_update), + &private->scale_vectors); + + return dialog; +} + + +/* private functions */ + +static void +vectors_import_dialog_free (VectorsImportDialog *private) +{ + g_slice_free (VectorsImportDialog, private); +} + +static void +vectors_import_dialog_response (GtkWidget *dialog, + gint response_id, + VectorsImportDialog *private) +{ + if (response_id == GTK_RESPONSE_OK) + { + GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog); + GFile *file; + + file = gtk_file_chooser_get_file (chooser); + + if (file) + { + GFile *folder; + + folder = gtk_file_chooser_get_current_folder_file (chooser); + + private->callback (dialog, + private->image, + file, + folder, + private->merge_vectors, + private->scale_vectors, + private->user_data); + + if (folder) + g_object_unref (folder); + + g_object_unref (file); + } + } + else + { + gtk_widget_destroy (dialog); + } +} diff --git a/app/dialogs/vectors-import-dialog.h b/app/dialogs/vectors-import-dialog.h new file mode 100644 index 0000000..b8928d4 --- /dev/null +++ b/app/dialogs/vectors-import-dialog.h @@ -0,0 +1,40 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __VECTORS_IMPORT_DIALOG_H__ +#define __VECTORS_IMPORT_DIALOG_H__ + + +typedef void (* GimpVectorsImportCallback) (GtkWidget *dialog, + GimpImage *image, + GFile *file, + GFile *import_folder, + gboolean merge_vectors, + gboolean scale_vectors, + gpointer user_data); + + +GtkWidget * vectors_import_dialog_new (GimpImage *image, + GtkWidget *parent, + GFile *import_folder, + gboolean merge_vectors, + gboolean scale_vectors, + GimpVectorsImportCallback callback, + gpointer user_data); + + +#endif /* __VECTORS_IMPORT_DIALOG_H__ */ diff --git a/app/dialogs/vectors-options-dialog.c b/app/dialogs/vectors-options-dialog.c new file mode 100644 index 0000000..3b00be0 --- /dev/null +++ b/app/dialogs/vectors-options-dialog.c @@ -0,0 +1,160 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#include "config.h" + +#include <gegl.h> +#include <gtk/gtk.h> + +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimpcontext.h" +#include "core/gimpimage.h" + +#include "vectors/gimpvectors.h" + +#include "item-options-dialog.h" +#include "vectors-options-dialog.h" + +#include "gimp-intl.h" + + +typedef struct _VectorsOptionsDialog VectorsOptionsDialog; + +struct _VectorsOptionsDialog +{ + GimpVectorsOptionsCallback callback; + gpointer user_data; +}; + + +/* local function prototypes */ + +static void vectors_options_dialog_free (VectorsOptionsDialog *private); +static void vectors_options_dialog_callback (GtkWidget *dialog, + GimpImage *image, + GimpItem *item, + GimpContext *context, + const gchar *item_name, + gboolean item_visible, + gboolean item_linked, + GimpColorTag item_color_tag, + gboolean item_lock_content, + gboolean item_lock_position, + gpointer user_data); + + +/* public functions */ + +GtkWidget * +vectors_options_dialog_new (GimpImage *image, + GimpVectors *vectors, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + const gchar *vectors_name, + gboolean vectors_visible, + gboolean vectors_linked, + GimpColorTag vectors_color_tag, + gboolean vectors_lock_content, + gboolean vectors_lock_position, + GimpVectorsOptionsCallback callback, + gpointer user_data) +{ + VectorsOptionsDialog *private; + GtkWidget *dialog; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); + g_return_val_if_fail (vectors == NULL || GIMP_IS_VECTORS (vectors), NULL); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); + g_return_val_if_fail (GTK_IS_WIDGET (parent), NULL); + g_return_val_if_fail (title != NULL, NULL); + g_return_val_if_fail (role != NULL, NULL); + g_return_val_if_fail (icon_name != NULL, NULL); + g_return_val_if_fail (desc != NULL, NULL); + g_return_val_if_fail (help_id != NULL, NULL); + g_return_val_if_fail (callback != NULL, NULL); + + private = g_slice_new0 (VectorsOptionsDialog); + + private->callback = callback; + private->user_data = user_data; + + dialog = item_options_dialog_new (image, GIMP_ITEM (vectors), context, + parent, title, role, + icon_name, desc, help_id, + _("Path _name:"), + GIMP_ICON_TOOL_PATH, + _("Lock path _strokes"), + _("Lock path _position"), + vectors_name, + vectors_visible, + vectors_linked, + vectors_color_tag, + vectors_lock_content, + vectors_lock_position, + vectors_options_dialog_callback, + private); + + g_object_weak_ref (G_OBJECT (dialog), + (GWeakNotify) vectors_options_dialog_free, private); + + return dialog; +} + + +/* private functions */ + +static void +vectors_options_dialog_free (VectorsOptionsDialog *private) +{ + g_slice_free (VectorsOptionsDialog, private); +} + +static void +vectors_options_dialog_callback (GtkWidget *dialog, + GimpImage *image, + GimpItem *item, + GimpContext *context, + const gchar *item_name, + gboolean item_visible, + gboolean item_linked, + GimpColorTag item_color_tag, + gboolean item_lock_content, + gboolean item_lock_position, + gpointer user_data) +{ + VectorsOptionsDialog *private = user_data; + + private->callback (dialog, + image, + GIMP_VECTORS (item), + context, + item_name, + item_visible, + item_linked, + item_color_tag, + item_lock_content, + item_lock_position, + private->user_data); +} diff --git a/app/dialogs/vectors-options-dialog.h b/app/dialogs/vectors-options-dialog.h new file mode 100644 index 0000000..00f5a32 --- /dev/null +++ b/app/dialogs/vectors-options-dialog.h @@ -0,0 +1,54 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * 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 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 <https://www.gnu.org/licenses/>. + */ + +#ifndef __VECTORS_OPTIONS_DIALOG_H__ +#define __VECTORS_OPTIONS_DIALOG_H__ + + +typedef void (* GimpVectorsOptionsCallback) (GtkWidget *dialog, + GimpImage *image, + GimpVectors *vectors, + GimpContext *context, + const gchar *vectors_name, + gboolean vectors_visible, + gboolean vectors_linked, + GimpColorTag vectors_color_tag, + gboolean vectors_lock_content, + gboolean vectors_lock_position, + gpointer user_data); + + +GtkWidget * vectors_options_dialog_new (GimpImage *image, + GimpVectors *vectors, + GimpContext *context, + GtkWidget *parent, + const gchar *title, + const gchar *role, + const gchar *icon_name, + const gchar *desc, + const gchar *help_id, + const gchar *vectors_name, + gboolean vectors_visible, + gboolean vectors_linked, + GimpColorTag vectors_color_tag, + gboolean vectors_lock_content, + gboolean vectors_lock_position, + GimpVectorsOptionsCallback callback, + gpointer user_data); + + +#endif /* __VECTORS_OPTIONS_DIALOG_H__ */ |