From 2b152eae69cc7063e8b10df8ca2ed9325c85f2f0 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Wed, 9 Sep 2020 21:38:33 +0900 Subject: [PATCH] videoparsers: Add vp9parse element Adding vp9parse element to parse various stream information such as resolution, profile, and so on. If upstream does not provide resolution and/or profile, this would be useful for decodebin pipeline for autoplugging suitable decoder element depending on template caps of each decoder element. In addition, vp9parse element supports unpacking superframe into single frame for decoders. The vp9 superframe is a frame which consists of multiple frames (or superframe with one frame is allowed) followed by superframe index block. Then unpacked each frame will be considered as normal frame by decoder. The decision for unpacking will be done by downstream element's "alignment" caps field, which can be "super-frame" or "frame". If downstream specifies the "alignment" as "frame", then vp9parse element will split an incoming superframe into single frames and the superframe index (located at the end of the superframe) data will be discarded by vp9parse element. Part-of: --- docs/plugins/gst_plugins_cache.json | 27 + gst/videoparsers/gstvp9parse.c | 784 ++++++++++++++++ gst/videoparsers/gstvp9parse.h | 34 + gst/videoparsers/meson.build | 1 + gst/videoparsers/plugin.c | 9 + tests/check/elements/vp9parse.c | 160 ++++ tests/check/elements/vp9parse.h | 1305 +++++++++++++++++++++++++++ tests/check/meson.build | 1 + 8 files changed, 2321 insertions(+) create mode 100644 gst/videoparsers/gstvp9parse.c create mode 100644 gst/videoparsers/gstvp9parse.h create mode 100644 tests/check/elements/vp9parse.c create mode 100644 tests/check/elements/vp9parse.h diff --git a/docs/plugins/gst_plugins_cache.json b/docs/plugins/gst_plugins_cache.json index f2ca4f690a..82491a194d 100644 --- a/docs/plugins/gst_plugins_cache.json +++ b/docs/plugins/gst_plugins_cache.json @@ -221903,6 +221903,33 @@ }, "properties": {}, "rank": "none" + }, + "vp9parse": { + "author": "Seungha Yang ", + "description": "Parses VP9 streams", + "hierarchy": [ + "GstVp9Parse", + "GstBaseParse", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Codec/Parser/Converter/Video", + "long-name": "VP9 parser", + "pad-templates": { + "sink": { + "caps": "video/x-vp9:\n", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "video/x-vp9:\n parsed: true\n alignment: { (string)super-frame, (string)frame }\n", + "direction": "src", + "presence": "always" + } + }, + "rank": "secondary" } }, "filename": "gstvideoparsersbad", diff --git a/gst/videoparsers/gstvp9parse.c b/gst/videoparsers/gstvp9parse.c new file mode 100644 index 0000000000..c85e4810ea --- /dev/null +++ b/gst/videoparsers/gstvp9parse.c @@ -0,0 +1,784 @@ +/* GStreamer + * Copyright (C) 2020 Seungha Yang + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include "gstvp9parse.h" + +#include + +GST_DEBUG_CATEGORY (vp9_parse_debug); +#define GST_CAT_DEFAULT vp9_parse_debug + +typedef enum +{ + GST_VP9_PARSE_ALIGN_NONE = 0, + GST_VP9_PARSE_ALIGN_SUPER_FRAME, + GST_VP9_PARSE_ALIGN_FRAME, +} GstVp9ParseAligment; + +struct _GstVp9Parse +{ + GstBaseParse parent; + + /* parsed from the last keyframe */ + gint width; + gint height; + gint subsampling_x; + gint subsampling_y; + GstVp9ColorSpace color_space; + GstVp9ColorRange color_range; + GstVP9Profile profile; + GstVp9BitDepth bit_depth; + + GstVp9ParseAligment in_align; + GstVp9ParseAligment align; + + GstVp9Parser *parser; + gboolean update_caps; + + /* per frame status */ + gboolean discont; +}; + +static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("video/x-vp9")); + +static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", + GST_PAD_SRC, + GST_PAD_ALWAYS, + GST_STATIC_CAPS ("video/x-vp9, parsed = (boolean) true, " + "alignment=(string) { super-frame, frame }")); + +#define parent_class gst_vp9_parse_parent_class +G_DEFINE_TYPE (GstVp9Parse, gst_vp9_parse, GST_TYPE_BASE_PARSE); + +static gboolean gst_vp9_parse_start (GstBaseParse * parse); +static gboolean gst_vp9_parse_stop (GstBaseParse * parse); +static GstFlowReturn gst_vp9_parse_handle_frame (GstBaseParse * parse, + GstBaseParseFrame * frame, gint * skipsize); +static gboolean gst_vp9_parse_set_sink_caps (GstBaseParse * parse, + GstCaps * caps); +static GstCaps *gst_vp9_parse_get_sink_caps (GstBaseParse * parse, + GstCaps * filter); +static void gst_vp9_parse_update_src_caps (GstVp9Parse * self, GstCaps * caps); +static GstFlowReturn gst_vp9_parse_parse_frame (GstVp9Parse * self, + GstBaseParseFrame * frame, GstVp9FrameHdr * frame_hdr); + +static void +gst_vp9_parse_class_init (GstVp9ParseClass * klass) +{ + GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); + GstElementClass *element_class = GST_ELEMENT_CLASS (klass); + + parse_class->start = GST_DEBUG_FUNCPTR (gst_vp9_parse_start); + parse_class->stop = GST_DEBUG_FUNCPTR (gst_vp9_parse_stop); + parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_vp9_parse_handle_frame); + parse_class->set_sink_caps = GST_DEBUG_FUNCPTR (gst_vp9_parse_set_sink_caps); + parse_class->get_sink_caps = GST_DEBUG_FUNCPTR (gst_vp9_parse_get_sink_caps); + + gst_element_class_add_static_pad_template (element_class, &srctemplate); + gst_element_class_add_static_pad_template (element_class, &sinktemplate); + + gst_element_class_set_static_metadata (element_class, "VP9 parser", + "Codec/Parser/Converter/Video", + "Parses VP9 streams", "Seungha Yang "); + + GST_DEBUG_CATEGORY_INIT (vp9_parse_debug, "vp9parse", 0, "vp9 parser"); +} + +static void +gst_vp9_parse_init (GstVp9Parse * self) +{ + gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (self), FALSE); + gst_base_parse_set_infer_ts (GST_BASE_PARSE (self), FALSE); + + GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (self)); + GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (self)); +} + +static void +gst_vp9_parse_reset (GstVp9Parse * self) +{ + self->width = 0; + self->height = 0; + self->subsampling_x = -1; + self->subsampling_y = -1; + self->color_space = GST_VP9_CS_UNKNOWN; + self->color_range = GST_VP9_CR_LIMITED; + self->profile = GST_VP9_PROFILE_UNDEFINED; + self->bit_depth = (GstVp9BitDepth) 0; +} + +static gboolean +gst_vp9_parse_start (GstBaseParse * parse) +{ + GstVp9Parse *self = GST_VP9_PARSE (parse); + + GST_DEBUG_OBJECT (self, "start"); + + self->parser = gst_vp9_parser_new (); + gst_vp9_parse_reset (self); + + /* short frame header with one byte */ + gst_base_parse_set_min_frame_size (parse, 1); + + return TRUE; +} + +static gboolean +gst_vp9_parse_stop (GstBaseParse * parse) +{ + GstVp9Parse *self = GST_VP9_PARSE (parse); + + GST_DEBUG_OBJECT (self, "stop"); + g_clear_pointer (&self->parser, gst_vp9_parser_free); + + return TRUE; +} + +static const gchar * +gst_vp9_parse_profile_to_string (GstVP9Profile profile) +{ + switch (profile) { + case GST_VP9_PROFILE_0: + return "0"; + case GST_VP9_PROFILE_1: + return "1"; + case GST_VP9_PROFILE_2: + return "2"; + case GST_VP9_PROFILE_3: + return "3"; + default: + break; + } + + return NULL; +} + +static GstVP9Profile +gst_vp9_parse_profile_from_string (const gchar * profile) +{ + if (!profile) + return GST_VP9_PROFILE_UNDEFINED; + + if (g_strcmp0 (profile, "0") == 0) + return GST_VP9_PROFILE_0; + else if (g_strcmp0 (profile, "1") == 0) + return GST_VP9_PROFILE_1; + else if (g_strcmp0 (profile, "2") == 0) + return GST_VP9_PROFILE_2; + else if (g_strcmp0 (profile, "3") == 0) + return GST_VP9_PROFILE_3; + + return GST_VP9_PROFILE_UNDEFINED; +} + +static const gchar * +gst_vp9_parse_alignment_to_string (GstVp9ParseAligment align) +{ + switch (align) { + case GST_VP9_PARSE_ALIGN_SUPER_FRAME: + return "super-frame"; + case GST_VP9_PARSE_ALIGN_FRAME: + return "frame"; + default: + break; + } + + return NULL; +} + +static GstVp9ParseAligment +gst_vp9_parse_alignment_from_string (const gchar * align) +{ + if (!align) + return GST_VP9_PARSE_ALIGN_NONE; + + if (g_strcmp0 (align, "super-frame") == 0) + return GST_VP9_PARSE_ALIGN_SUPER_FRAME; + else if (g_strcmp0 (align, "frame") == 0) + return GST_VP9_PARSE_ALIGN_FRAME; + + return GST_VP9_PARSE_ALIGN_NONE; +} + +static void +gst_vp9_parse_alignment_from_caps (GstCaps * caps, GstVp9ParseAligment * align) +{ + *align = GST_VP9_PARSE_ALIGN_NONE; + + GST_DEBUG ("parsing caps: %" GST_PTR_FORMAT, caps); + + if (caps && gst_caps_get_size (caps) > 0) { + GstStructure *s = gst_caps_get_structure (caps, 0); + const gchar *str = NULL; + + if ((str = gst_structure_get_string (s, "alignment"))) { + *align = gst_vp9_parse_alignment_from_string (str); + } + } +} + +/* check downstream caps to configure format and alignment */ +static void +gst_vp9_parse_negotiate (GstVp9Parse * self, GstVp9ParseAligment in_align, + GstCaps * in_caps) +{ + GstCaps *caps; + GstVp9ParseAligment align = self->align; + + caps = gst_pad_get_allowed_caps (GST_BASE_PARSE_SRC_PAD (self)); + GST_DEBUG_OBJECT (self, "allowed caps: %" GST_PTR_FORMAT, caps); + + /* concentrate on leading structure, since decodebin parser + * capsfilter always includes parser template caps */ + if (caps) { + caps = gst_caps_truncate (caps); + GST_DEBUG_OBJECT (self, "negotiating with caps: %" GST_PTR_FORMAT, caps); + } + + if (in_caps && caps) { + if (gst_caps_can_intersect (in_caps, caps)) { + GST_DEBUG_OBJECT (self, "downstream accepts upstream caps"); + gst_vp9_parse_alignment_from_caps (in_caps, &align); + gst_clear_caps (&caps); + } + } + + /* FIXME We could fail the negotiation immediately if caps are empty */ + if (caps && !gst_caps_is_empty (caps)) { + /* fixate to avoid ambiguity with lists when parsing */ + caps = gst_caps_fixate (caps); + gst_vp9_parse_alignment_from_caps (caps, &align); + } + + /* default */ + if (align == GST_VP9_PARSE_ALIGN_NONE) + align = GST_VP9_PARSE_ALIGN_SUPER_FRAME; + + GST_DEBUG_OBJECT (self, "selected alignment %s", + gst_vp9_parse_alignment_to_string (align)); + + self->align = align; + + gst_clear_caps (&caps); +} + +static gboolean +gst_vp9_parse_process_frame (GstVp9Parse * self, GstVp9FrameHdr * frame_hdr) +{ + GstVp9Parser *parser = self->parser; + gint width, height; + + /* the resolution might be varying. Update our status per key frame */ + if (frame_hdr->frame_type != GST_VP9_KEY_FRAME) { + return TRUE; + } + + width = frame_hdr->width; + height = frame_hdr->height; + if (frame_hdr->display_size_enabled && + frame_hdr->display_width > 0 && frame_hdr->display_height) { + width = frame_hdr->display_width; + height = frame_hdr->display_height; + } + + if (width != self->width || height != self->height) { + GST_DEBUG_OBJECT (self, "resolution change from %dx%d to %dx%d", + self->width, self->height, width, height); + self->width = width; + self->height = height; + self->update_caps = TRUE; + } + + if (self->subsampling_x != parser->subsampling_x || + self->subsampling_y != parser->subsampling_y) { + GST_DEBUG_OBJECT (self, + "subsampling changed from x: %d, y: %d to x: %d, y: %d", + self->subsampling_x, self->subsampling_y, + parser->subsampling_x, parser->subsampling_y); + self->subsampling_x = parser->subsampling_x; + self->subsampling_y = parser->subsampling_y; + self->update_caps = TRUE; + } + + if (parser->color_space != GST_VP9_CS_UNKNOWN && + parser->color_space != GST_VP9_CS_RESERVED_2 && + parser->color_space != self->color_space) { + GST_DEBUG_OBJECT (self, "colorspace changed from %d to %d", + self->color_space, parser->color_space); + self->color_space = parser->color_space; + self->update_caps = TRUE; + } + + if (parser->color_range != self->color_range) { + GST_DEBUG_OBJECT (self, "color range changed from %d to %d", + self->color_range, parser->color_range); + self->color_range = parser->color_range; + self->update_caps = TRUE; + } + + if (frame_hdr->profile != GST_VP9_PROFILE_UNDEFINED && + frame_hdr->profile != self->profile) { + GST_DEBUG_OBJECT (self, "profile changed from %d to %d", self->profile, + frame_hdr->profile); + self->profile = frame_hdr->profile; + self->update_caps = TRUE; + } + + if (parser->bit_depth != self->bit_depth) { + GST_DEBUG_OBJECT (self, "bit-depth changed from %d to %d", + self->bit_depth, parser->bit_depth); + self->bit_depth = parser->bit_depth; + self->update_caps = TRUE; + } + + return TRUE; +} + +static GstFlowReturn +gst_vp9_parse_handle_frame (GstBaseParse * parse, GstBaseParseFrame * frame, + gint * skipsize) +{ + GstVp9Parse *self = GST_VP9_PARSE (parse); + GstBuffer *buffer = frame->buffer; + GstFlowReturn ret = GST_FLOW_OK; + GstVp9ParserResult parse_res = GST_VP9_PARSER_ERROR; + GstMapInfo map; + gsize offset = 0; + GstVp9SuperframeInfo superframe_info; + guint i; + GstVp9FrameHdr frame_hdr; + + if (GST_BUFFER_FLAG_IS_SET (frame->buffer, GST_BUFFER_FLAG_DISCONT)) + self->discont = TRUE; + else + self->discont = FALSE; + + /* need to save buffer from invalidation upon _finish_frame */ + if (self->align == GST_VP9_PARSE_ALIGN_FRAME) + buffer = gst_buffer_copy (frame->buffer); + + if (!gst_buffer_map (buffer, &map, GST_MAP_READ)) { + GST_ELEMENT_ERROR (parse, CORE, NOT_IMPLEMENTED, (NULL), + ("Couldn't map incoming buffer")); + + return GST_FLOW_ERROR; + } + + GST_TRACE_OBJECT (self, "processing buffer of size %" G_GSIZE_FORMAT, + map.size); + + /* superframe_info will be zero initialized by GstVp9Parser */ + parse_res = gst_vp9_parser_parse_superframe_info (self->parser, + &superframe_info, map.data, map.size); + + if (parse_res != GST_VP9_PARSER_OK) { + /* just finish this frame anyway, so that we don't too strict + * regarding parsing vp9 stream. + * Downstream might be able to handle this stream even though + * it's very unlikely */ + GST_WARNING_OBJECT (self, "Couldn't parse superframe res: %d", parse_res); + goto done; + } + + for (i = 0; i < superframe_info.frames_in_superframe; i++) { + guint32 frame_size; + + frame_size = superframe_info.frame_sizes[i]; + parse_res = gst_vp9_parser_parse_frame_header (self->parser, + &frame_hdr, map.data + offset, frame_size); + + if (parse_res != GST_VP9_PARSER_OK) { + GST_WARNING_OBJECT (self, "Parsing error %d", parse_res); + break; + } + + gst_vp9_parse_process_frame (self, &frame_hdr); + + if (self->align == GST_VP9_PARSE_ALIGN_FRAME) { + GstBaseParseFrame subframe; + + gst_base_parse_frame_init (&subframe); + subframe.flags |= frame->flags; + subframe.offset = frame->offset; + subframe.overhead = frame->overhead; + subframe.buffer = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, + offset, frame_size); + + /* note we don't need to come up with a sub-buffer, since + * subsequent code only considers input buffer's metadata. + * Real data is either taken from input by baseclass or + * a replacement output buffer is provided anyway. */ + gst_vp9_parse_parse_frame (self, &subframe, &frame_hdr); + ret = gst_base_parse_finish_frame (parse, &subframe, frame_size); + } else { + /* FIXME: need to parse all frames belong to this superframe? */ + break; + } + + offset += frame_size; + } + +done: + gst_buffer_unmap (buffer, &map); + + if (self->align != GST_VP9_PARSE_ALIGN_FRAME) { + if (parse_res == GST_VP9_PARSER_OK) + gst_vp9_parse_parse_frame (self, frame, &frame_hdr); + ret = gst_base_parse_finish_frame (parse, frame, map.size); + } else { + gst_buffer_unref (buffer); + if (offset != map.size) { + gsize left = map.size - offset; + if (left != superframe_info.superframe_index_size) { + GST_WARNING_OBJECT (parse, + "Skipping leftover frame data %" G_GSIZE_FORMAT, left); + } + frame->flags |= GST_BASE_PARSE_FRAME_FLAG_DROP; + ret = gst_base_parse_finish_frame (parse, frame, left); + } + } + + return ret; +} + +static void +gst_vp9_parse_update_src_caps (GstVp9Parse * self, GstCaps * caps) +{ + GstCaps *sink_caps, *src_caps; + GstCaps *final_caps = NULL; + GstStructure *s = NULL; + gint width, height; + gint par_n = 0, par_d = 0; + gint fps_n = 0, fps_d = 0; + gint bitdepth = 0; + gchar *colorimetry = NULL; + const gchar *chroma_format = NULL; + const gchar *profile = NULL; + + if (!self->update_caps) + return; + + /* if this is being called from the first _setcaps call, caps on the sinkpad + * aren't set yet and so they need to be passed as an argument */ + if (caps) + sink_caps = gst_caps_ref (caps); + else + sink_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SINK_PAD (self)); + + /* carry over input caps as much as possible; override with our own stuff */ + if (!sink_caps) + sink_caps = gst_caps_new_empty_simple ("video/x-vp9"); + else + s = gst_caps_get_structure (sink_caps, 0); + + final_caps = gst_caps_copy (sink_caps); + + /* frame header should give this but upstream overrides */ + if (s && gst_structure_has_field (s, "width") && + gst_structure_has_field (s, "height")) { + gst_structure_get_int (s, "width", &width); + gst_structure_get_int (s, "height", &height); + } else { + width = self->width; + height = self->height; + } + + if (width > 0 && height > 0) + gst_caps_set_simple (final_caps, "width", G_TYPE_INT, width, + "height", G_TYPE_INT, height, NULL); + + if (s && gst_structure_get_fraction (s, "pixel-aspect-ratio", &par_n, &par_d)) { + if (par_n != 0 && par_d != 0) { + gst_caps_set_simple (final_caps, "pixel-aspect-ratio", + GST_TYPE_FRACTION, par_n, par_d, NULL); + } + } + + if (s && gst_structure_has_field (s, "framerate")) { + gst_structure_get_fraction (s, "framerate", &fps_n, &fps_d); + } + + if (fps_n > 0 && fps_d > 0) { + gst_caps_set_simple (final_caps, "framerate", + GST_TYPE_FRACTION, fps_n, fps_d, NULL); + gst_base_parse_set_frame_rate (GST_BASE_PARSE (self), fps_n, fps_d, 0, 0); + } + + if (self->color_space != GST_VP9_CS_UNKNOWN && + self->color_space != GST_VP9_CS_RESERVED_2) { + GstVideoColorimetry cinfo; + gboolean have_cinfo = TRUE; + + memset (&cinfo, 0, sizeof (GstVideoColorimetry)); + + switch (self->parser->color_space) { + case GST_VP9_CS_BT_601: + gst_video_colorimetry_from_string (&cinfo, GST_VIDEO_COLORIMETRY_BT601); + break; + case GST_VP9_CS_BT_709: + gst_video_colorimetry_from_string (&cinfo, GST_VIDEO_COLORIMETRY_BT709); + break; + case GST_VP9_CS_SMPTE_170: + gst_video_colorimetry_from_string (&cinfo, GST_VIDEO_COLORIMETRY_BT601); + break; + case GST_VP9_CS_SMPTE_240: + gst_video_colorimetry_from_string (&cinfo, + GST_VIDEO_COLORIMETRY_SMPTE240M); + break; + case GST_VP9_CS_BT_2020: + if (self->parser->bit_depth == GST_VP9_BIT_DEPTH_12) { + gst_video_colorimetry_from_string (&cinfo, + GST_VIDEO_COLORIMETRY_BT2020); + } else { + gst_video_colorimetry_from_string (&cinfo, + GST_VIDEO_COLORIMETRY_BT2020_10); + } + break; + case GST_VP9_CS_SRGB: + gst_video_colorimetry_from_string (&cinfo, GST_VIDEO_COLORIMETRY_SRGB); + break; + default: + have_cinfo = FALSE; + break; + } + + if (have_cinfo) { + if (self->parser->color_range == GST_VP9_CR_LIMITED) + cinfo.range = GST_VIDEO_COLOR_RANGE_16_235; + else + cinfo.range = GST_VIDEO_COLOR_RANGE_0_255; + + colorimetry = gst_video_colorimetry_to_string (&cinfo); + } + } + + if (self->color_space != GST_VP9_CS_SRGB) { + if (self->parser->subsampling_x == 1 && self->parser->subsampling_y == 1) + chroma_format = "4:2:0"; + else if (self->parser->subsampling_x == 1 && + self->parser->subsampling_y == 0) + chroma_format = "4:2:2"; + else if (self->parser->subsampling_x == 0 && + self->parser->subsampling_y == 1) + chroma_format = "4:4:0"; + else if (self->parser->subsampling_x == 1 && + self->parser->subsampling_y == 1) + chroma_format = "4:4:4"; + + if (chroma_format) + gst_caps_set_simple (final_caps, + "chroma-format", G_TYPE_STRING, chroma_format, NULL); + } + + switch (self->bit_depth) { + case GST_VP9_BIT_DEPTH_8: + bitdepth = 8; + break; + case GST_VP9_BIT_DEPTH_10: + bitdepth = 10; + break; + case GST_VP9_BIT_DEPTH_12: + bitdepth = 12; + break; + default: + break; + } + + if (bitdepth) { + gst_caps_set_simple (final_caps, + "bit-depth-luma", G_TYPE_UINT, bitdepth, + "bit-depth-chroma", G_TYPE_UINT, bitdepth, NULL); + } + + if (colorimetry && (!s || !gst_structure_has_field (s, "colorimetry"))) { + gst_caps_set_simple (final_caps, + "colorimetry", G_TYPE_STRING, colorimetry, NULL); + } + + g_free (colorimetry); + + gst_caps_set_simple (final_caps, "parsed", G_TYPE_BOOLEAN, TRUE, + "alignment", G_TYPE_STRING, + gst_vp9_parse_alignment_to_string (self->align), NULL); + + profile = gst_vp9_parse_profile_to_string (self->profile); + if (profile) + gst_caps_set_simple (final_caps, "profile", G_TYPE_STRING, profile, NULL); + + src_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (self)); + + if (!(src_caps && gst_caps_is_strictly_equal (src_caps, final_caps))) { + GST_DEBUG_OBJECT (self, "Update src caps %" GST_PTR_FORMAT, final_caps); + gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (self), final_caps); + } + + gst_clear_caps (&src_caps); + gst_caps_unref (final_caps); + gst_caps_unref (sink_caps); + + self->update_caps = FALSE; +} + +static GstFlowReturn +gst_vp9_parse_parse_frame (GstVp9Parse * self, GstBaseParseFrame * frame, + GstVp9FrameHdr * frame_hdr) +{ + GstBuffer *buffer; + + buffer = frame->buffer; + + gst_vp9_parse_update_src_caps (self, NULL); + + if (frame_hdr->frame_type == GST_VP9_KEY_FRAME) + GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DELTA_UNIT); + else + GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT); + + if (self->align == GST_VP9_PARSE_ALIGN_FRAME) { + if (!frame_hdr->show_frame) + GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DECODE_ONLY); + else + GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DECODE_ONLY); + } + + if (self->discont) { + GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT); + self->discont = FALSE; + } + + return GST_FLOW_OK; +} + +static gboolean +gst_vp9_parse_set_sink_caps (GstBaseParse * parse, GstCaps * caps) +{ + GstVp9Parse *self = GST_VP9_PARSE (parse); + GstStructure *str; + GstVp9ParseAligment align; + GstCaps *in_caps = NULL; + const gchar *profile; + + str = gst_caps_get_structure (caps, 0); + + /* accept upstream info if provided */ + gst_structure_get_int (str, "width", &self->width); + gst_structure_get_int (str, "height", &self->height); + profile = gst_structure_get_string (str, "profile"); + if (profile) + self->profile = gst_vp9_parse_profile_from_string (profile); + + /* get upstream align from caps */ + gst_vp9_parse_alignment_from_caps (caps, &align); + + /* default */ + if (align == GST_VP9_PARSE_ALIGN_NONE) + align = GST_VP9_PARSE_ALIGN_SUPER_FRAME; + + /* prefer alignment type determined above */ + in_caps = gst_caps_copy (caps); + gst_caps_set_simple (in_caps, "alignment", G_TYPE_STRING, + gst_vp9_parse_alignment_to_string (align), NULL); + + /* negotiate with downstream, set output align */ + gst_vp9_parse_negotiate (self, align, in_caps); + + self->update_caps = TRUE; + + /* if all of decoder's capability related values are provided + * by upstream, update src caps now */ + if (self->width > 0 && self->height > 0 && profile) + gst_vp9_parse_update_src_caps (self, in_caps); + + gst_caps_unref (in_caps); + + self->in_align = align; + + return TRUE; +} + +static void +remove_fields (GstCaps * caps, gboolean all) +{ + guint i, n; + + n = gst_caps_get_size (caps); + for (i = 0; i < n; i++) { + GstStructure *s = gst_caps_get_structure (caps, i); + + if (all) { + gst_structure_remove_field (s, "alignment"); + } + gst_structure_remove_field (s, "parsed"); + } +} + +static GstCaps * +gst_vp9_parse_get_sink_caps (GstBaseParse * parse, GstCaps * filter) +{ + GstCaps *peercaps, *templ; + GstCaps *res, *tmp, *pcopy; + + templ = gst_pad_get_pad_template_caps (GST_BASE_PARSE_SINK_PAD (parse)); + if (filter) { + GstCaps *fcopy = gst_caps_copy (filter); + /* Remove the fields we convert */ + remove_fields (fcopy, TRUE); + peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), fcopy); + gst_caps_unref (fcopy); + } else { + peercaps = gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (parse), NULL); + } + + pcopy = gst_caps_copy (peercaps); + remove_fields (pcopy, TRUE); + + res = gst_caps_intersect_full (pcopy, templ, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (pcopy); + gst_caps_unref (templ); + + if (filter) { + GstCaps *tmp = gst_caps_intersect_full (res, filter, + GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (res); + res = tmp; + } + + /* Try if we can put the downstream caps first */ + pcopy = gst_caps_copy (peercaps); + remove_fields (pcopy, FALSE); + tmp = gst_caps_intersect_full (pcopy, res, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (pcopy); + if (!gst_caps_is_empty (tmp)) + res = gst_caps_merge (tmp, res); + else + gst_caps_unref (tmp); + + gst_caps_unref (peercaps); + + return res; +} diff --git a/gst/videoparsers/gstvp9parse.h b/gst/videoparsers/gstvp9parse.h new file mode 100644 index 0000000000..3ec4d356a1 --- /dev/null +++ b/gst/videoparsers/gstvp9parse.h @@ -0,0 +1,34 @@ +/* GStreamer + * Copyright (C) 2020 Seungha Yang + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef __GST_VP9_PARSE_H__ +#define __GST_VP9_PARSE_H__ + +#include +#include + +G_BEGIN_DECLS + +#define GST_TYPE_VP9_PARSE (gst_vp9_parse_get_type()) +G_DECLARE_FINAL_TYPE (GstVp9Parse, + gst_vp9_parse, GST, VP9_PARSE, GstBaseParse); + +G_END_DECLS + +#endif /* __GST_VP9_PARSE_H__ */ diff --git a/gst/videoparsers/meson.build b/gst/videoparsers/meson.build index 2fd164fc31..ad6c7e24f2 100644 --- a/gst/videoparsers/meson.build +++ b/gst/videoparsers/meson.build @@ -12,6 +12,7 @@ vparse_sources = [ 'gsth265parse.c', 'gstvideoparseutils.c', 'gstjpeg2000parse.c', + 'gstvp9parse.c', ] gstvideoparsersbad = library('gstvideoparsersbad', diff --git a/gst/videoparsers/plugin.c b/gst/videoparsers/plugin.c index f4690c4668..60e6125cbd 100644 --- a/gst/videoparsers/plugin.c +++ b/gst/videoparsers/plugin.c @@ -31,6 +31,7 @@ #include "gstjpeg2000parse.h" #include "gstvc1parse.h" #include "gsth265parse.h" +#include "gstvp9parse.h" GST_DEBUG_CATEGORY (videoparseutils_debug); @@ -61,6 +62,14 @@ plugin_init (GstPlugin * plugin) ret |= gst_element_register (plugin, "vc1parse", GST_RANK_NONE, GST_TYPE_VC1_PARSE); + /** + * element-vp9parse: + * + * Since: 1.20 + */ + ret |= gst_element_register (plugin, "vp9parse", + GST_RANK_SECONDARY, GST_TYPE_VP9_PARSE); + return ret; } diff --git a/tests/check/elements/vp9parse.c b/tests/check/elements/vp9parse.c new file mode 100644 index 0000000000..6515137691 --- /dev/null +++ b/tests/check/elements/vp9parse.c @@ -0,0 +1,160 @@ +/* GStreamer + * Copyright (C) 2020 Seungha Yang + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include "vp9parse.h" +#include + +typedef struct +{ + const guint8 *data; + guint len; + gboolean superframe; + guint subframe_len[2]; +} GstVp9ParseTestFrameData; + +static void +run_split_superframe_with_caps (const gchar * in_caps) +{ + GstHarness *h; + GstBuffer *in_buf, *out_buf = NULL; + GstMapInfo map; + GstFlowReturn ret; + gint i = 0; + GstVp9ParseTestFrameData frames[] = { + {profile_0_frame0, profile_0_frame0_len, FALSE, {profile_0_frame0_len, 0}}, + {profile_0_frame1, profile_0_frame1_len, TRUE, {profile_0_frame1_first_len, + profile_0_frame1_last_len}}, + {profile_0_frame2, profile_0_frame2_len, FALSE, {profile_0_frame2_len, 0}}, + }; + + h = gst_harness_new_parse ("vp9parse"); + fail_unless (h != NULL); + + gst_harness_set_sink_caps_str (h, "video/x-vp9,alignment=(string)frame"); + + /* default alignment is super-frame */ + gst_harness_set_src_caps_str (h, in_caps); + + gst_harness_play (h); + for (i = 0; i < G_N_ELEMENTS (frames); i++) { + in_buf = gst_buffer_new_and_alloc (frames[i].len); + gst_buffer_map (in_buf, &map, GST_MAP_WRITE); + memcpy (map.data, frames[i].data, frames[i].len); + gst_buffer_unmap (in_buf, &map); + + ret = gst_harness_push (h, in_buf); + fail_unless (ret == GST_FLOW_OK, "GstFlowReturn was %s", + gst_flow_get_name (ret)); + out_buf = gst_harness_try_pull (h); + fail_unless (out_buf); + fail_unless_equals_int (gst_buffer_get_size (out_buf), + frames[i].subframe_len[0]); + + if (i == 0) { + GstEvent *event; + GstCaps *caps = NULL; + GstStructure *s; + const gchar *profile; + gint width, height; + + fail_if (GST_BUFFER_FLAG_IS_SET (out_buf, GST_BUFFER_FLAG_DELTA_UNIT)); + + while ((event = gst_harness_try_pull_event (h))) { + GstCaps *event_caps; + if (GST_EVENT_TYPE (event) != GST_EVENT_CAPS) { + gst_event_unref (event); + continue; + } + + gst_event_parse_caps (event, &event_caps); + gst_caps_replace (&caps, event_caps); + gst_event_unref (event); + } + + fail_unless (caps != NULL); + s = gst_caps_get_structure (caps, 0); + fail_unless (gst_structure_get_int (s, "width", &width)); + fail_unless (gst_structure_get_int (s, "height", &height)); + fail_unless ((profile = gst_structure_get_string (s, "profile"))); + + fail_unless_equals_int (width, 256); + fail_unless_equals_int (height, 144); + fail_unless_equals_string (profile, "0"); + gst_caps_unref (caps); + } else { + fail_unless (GST_BUFFER_FLAG_IS_SET (out_buf, + GST_BUFFER_FLAG_DELTA_UNIT)); + } + + if (frames[i].superframe) { + /* this is decoding only frame */ + fail_unless (GST_BUFFER_FLAG_IS_SET (out_buf, + GST_BUFFER_FLAG_DECODE_ONLY)); + fail_unless (GST_BUFFER_FLAG_IS_SET (out_buf, + GST_BUFFER_FLAG_DELTA_UNIT)); + gst_clear_buffer (&out_buf); + + out_buf = gst_harness_try_pull (h); + fail_unless (out_buf); + fail_unless_equals_int (gst_buffer_get_size (out_buf), + frames[i].subframe_len[1]); + fail_unless (GST_BUFFER_FLAG_IS_SET (out_buf, + GST_BUFFER_FLAG_DELTA_UNIT)); + } + + gst_clear_buffer (&out_buf); + } + + gst_harness_teardown (h); +} + +GST_START_TEST (test_split_superframe) +{ + /* vp9parse will split frame if downstream alignment is frame + * whatever the upstream alignment was specified */ + run_split_superframe_with_caps ("video/x-vp9"); + run_split_superframe_with_caps ("video/x-vp9,alignment=(string)super-frame"); + run_split_superframe_with_caps ("video/x-vp9,alignment=(string)frame"); +} + +GST_END_TEST; + +static Suite * +vp9parse_suite (void) +{ + Suite *s; + TCase *tc_chain; + + s = suite_create ("vp9parse"); + tc_chain = tcase_create ("general"); + + suite_add_tcase (s, tc_chain); + + tcase_add_test (tc_chain, test_split_superframe); + + return s; +} + +GST_CHECK_MAIN (vp9parse); diff --git a/tests/check/elements/vp9parse.h b/tests/check/elements/vp9parse.h new file mode 100644 index 0000000000..20018ad320 --- /dev/null +++ b/tests/check/elements/vp9parse.h @@ -0,0 +1,1305 @@ +/* GStreamer + * Copyright (C) 2020 Seungha Yang + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include + +/* Part of vp9 test bitstream available at + * https://www.webmproject.org/vp9/levels/ + */ + +/* crowd_run_256X144_fr15_bd8_8buf_l1.webm + * 256x144 + * profile0 + */ +static const guint8 profile_0_frame0[] = { + 0x82, 0x49, 0x83, 0x42, 0x00, 0x0f, 0xf0, 0x08, 0xf4, 0x18, 0x38, 0x24, + 0x1c, 0x18, 0xee, 0x00, 0x02, 0x20, 0x7f, 0xd1, 0x5d, 0x32, 0xd6, 0x6f, + 0x51, 0xe2, 0x8f, 0x24, 0xca, 0xed, 0xd1, 0x9b, 0x97, 0x35, 0x93, 0x88, + 0xde, 0x8c, 0xc7, 0xa7, 0x75, 0x52, 0xb3, 0x63, 0xa2, 0xb8, 0xe9, 0x00, + 0x17, 0xba, 0x18, 0x00, 0x7a, 0xa9, 0xff, 0xff, 0xd9, 0x9e, 0x97, 0xd4, + 0x01, 0x93, 0x4c, 0xd3, 0xc5, 0x2f, 0xbd, 0xe0, 0x13, 0xef, 0x24, 0x4c, + 0x27, 0xc9, 0x3e, 0x91, 0x16, 0x22, 0xe0, 0x91, 0x88, 0x6b, 0xce, 0x67, + 0xa1, 0xde, 0xa4, 0x3f, 0xa2, 0x5c, 0x55, 0x6f, 0x27, 0xce, 0x96, 0x42, + 0x72, 0x99, 0xe2, 0x6a, 0x79, 0x48, 0xbc, 0x1f, 0x12, 0x52, 0x13, 0x49, + 0x92, 0xb1, 0xb3, 0x69, 0x25, 0x1e, 0x35, 0x86, 0x03, 0x4f, 0x68, 0x53, + 0xa7, 0x1f, 0xf8, 0xf1, 0x46, 0xa6, 0xd2, 0x4b, 0xe3, 0xc1, 0x61, 0x56, + 0x09, 0x2d, 0x59, 0xfc, 0x40, 0xb7, 0x8b, 0x5b, 0x3c, 0xcc, 0xf8, 0x66, + 0xfc, 0x98, 0xda, 0xbc, 0x08, 0x01, 0xb2, 0x7b, 0x8d, 0x6d, 0x14, 0x4f, + 0x86, 0xf9, 0x56, 0xf7, 0x5a, 0xb5, 0x50, 0x44, 0xef, 0xca, 0x71, 0x7e, + 0x21, 0xfe, 0x15, 0x8d, 0xaa, 0xfe, 0x5b, 0x87, 0xc0, 0xed, 0x76, 0x91, + 0x2c, 0xd2, 0x61, 0x6e, 0xd9, 0x52, 0x8c, 0x3b, 0x46, 0xb3, 0x72, 0x21, + 0xac, 0xbb, 0xc3, 0x15, 0x54, 0x3f, 0x2d, 0x2d, 0xcf, 0x73, 0xce, 0x6d, + 0x4c, 0x36, 0xde, 0xdd, 0xa5, 0xd4, 0xa4, 0x9f, 0xfb, 0x9e, 0x93, 0xc7, + 0xf6, 0x86, 0x24, 0x15, 0x15, 0x2e, 0x27, 0x9b, 0x61, 0x5e, 0x92, 0x67, + 0x93, 0x6e, 0x04, 0x1a, 0x0f, 0x98, 0x51, 0x12, 0xc6, 0xb3, 0x07, 0x80, + 0x3e, 0xd4, 0x12, 0x29, 0x5d, 0x75, 0x05, 0x6f, 0xfd, 0x55, 0x6b, 0xaf, + 0xc0, 0x78, 0x21, 0xd8, 0xc0, 0xb1, 0x75, 0x99, 0x81, 0xea, 0xf8, 0x03, + 0xb7, 0x3f, 0x1a, 0x6f, 0x9e, 0xda, 0x3d, 0x39, 0xe2, 0xbb, 0xc4, 0xc6, + 0xcd, 0xb4, 0xc8, 0x4c, 0xcc, 0xcd, 0xd6, 0x32, 0xbf, 0x15, 0x21, 0xcf, + 0x4d, 0x00, 0xcc, 0x69, 0x29, 0x77, 0x2c, 0xd2, 0xfb, 0x82, 0x3f, 0x7a, + 0xb0, 0xbd, 0x75, 0x9a, 0x38, 0xcf, 0x91, 0x8f, 0x1b, 0x5e, 0x4b, 0x35, + 0x06, 0x5a, 0xef, 0x36, 0x4a, 0x3c, 0x95, 0xf8, 0xb4, 0x5a, 0x5a, 0x9e, + 0xc1, 0x68, 0x16, 0xfc, 0xee, 0x85, 0x81, 0xfa, 0xca, 0x58, 0x0d, 0x70, + 0x24, 0x5d, 0xa0, 0x00, 0x88, 0xbd, 0x57, 0x35, 0x16, 0xaa, 0xe0, 0xec, + 0x0f, 0xf0, 0xca, 0xf0, 0xe5, 0x59, 0x44, 0x2a, 0xf3, 0xa3, 0x74, 0x1f, + 0xce, 0x19, 0xa3, 0x65, 0x26, 0x38, 0x71, 0xdb, 0x08, 0x86, 0x1d, 0xef, + 0x0a, 0x11, 0x62, 0xc1, 0x91, 0xf1, 0x2a, 0x6f, 0xa2, 0xa5, 0x25, 0x15, + 0x70, 0x90, 0x29, 0xe8, 0xb7, 0xea, 0x45, 0x6a, 0xdd, 0xf2, 0x0e, 0x17, + 0x0d, 0x02, 0xe1, 0x6e, 0x6a, 0xbf, 0xa2, 0xd6, 0x03, 0x88, 0xba, 0x2a, + 0xd7, 0x30, 0xa4, 0x77, 0xd9, 0xf6, 0x36, 0x8f, 0xc1, 0x5f, 0xe8, 0xc3, + 0x9f, 0xc2, 0xf1, 0xf8, 0xfb, 0x6c, 0x53, 0x98, 0x22, 0x52, 0x1e, 0x32, + 0x96, 0xd8, 0x9b, 0x70, 0xe7, 0x37, 0x42, 0x73, 0x67, 0x9f, 0x67, 0xe6, + 0x4c, 0xe5, 0xac, 0x49, 0xcc, 0x96, 0x5a, 0x4c, 0xa4, 0x33, 0xd4, 0x8e, + 0xf2, 0x68, 0x83, 0x3d, 0x49, 0x1b, 0x8c, 0x91, 0x5b, 0x2e, 0xa3, 0x38, + 0x38, 0xb8, 0x32, 0x76, 0xed, 0x9a, 0x5e, 0x9a, 0xf2, 0x8d, 0x22, 0x5a, + 0x42, 0xa0, 0x3b, 0xdc, 0x74, 0x1c, 0x50, 0xff, 0xa7, 0xe1, 0x12, 0xbb, + 0xe8, 0x41, 0x6c, 0xe3, 0x6a, 0xde, 0x62, 0x42, 0xed, 0xba, 0xcc, 0x25, + 0xdd, 0xcc, 0x08, 0x7d, 0xd4, 0x3b, 0xac, 0xa1, 0x2f, 0xd1, 0xa7, 0x5a, + 0x79, 0xf6, 0x8a, 0x06, 0xd7, 0xd5, 0x39, 0xea, 0xe1, 0x5e, 0xc0, 0xca, + 0x60, 0x1f, 0xd4, 0xf0, 0x06, 0x31, 0x20, 0xab, 0x2e, 0xed, 0x45, 0x00, + 0x9d, 0xfc, 0x7f, 0xf0, 0x3d, 0xfd, 0x12, 0x01, 0xa7, 0x06, 0x29, 0x51, + 0xb0, 0xb7, 0x3e, 0x12, 0x24, 0xfd, 0xf4, 0x81, 0xc9, 0xc6, 0x80, 0xb5, + 0x8f, 0x79, 0x28, 0x91, 0xc6, 0x49, 0x75, 0x5b, 0x8c, 0x8b, 0xc0, 0x06, + 0xc4, 0x0a, 0xa5, 0x05, 0xed, 0xd8, 0xf9, 0x7a, 0x2e, 0x2c, 0x6b, 0x03, + 0x4b, 0x61, 0x78, 0x8f, 0x1e, 0x4d, 0x72, 0xed, 0xd4, 0x3a, 0x73, 0x3d, + 0x2c, 0xca, 0xe6, 0xb8, 0x9c, 0x68, 0x71, 0x9f, 0x20, 0x75, 0x4a, 0xd1, + 0x85, 0x6d, 0xe2, 0x05, 0x54, 0x8d, 0xd0, 0x45, 0xc4, 0x6e, 0xa0, 0xfa, + 0x8e, 0xf7, 0x55, 0xf9, 0x46, 0x5c, 0xe3, 0x1a, 0xe7, 0x45, 0xfc, 0xa5, + 0xe9, 0xd0, 0xc6, 0x68, 0x07, 0x0a, 0x0d, 0x29, 0x70, 0x16, 0x17, 0x02, + 0x70, 0x93, 0x00, 0x5a, 0x7c, 0x07, 0x3f, 0x85, 0x4a, 0x9a, 0x23, 0x0b, + 0x14, 0xf9, 0x26, 0x27, 0x8c, 0xf4, 0x33, 0x84, 0x1c, 0xba, 0xff, 0xf7, + 0x99, 0x49, 0xe7, 0xc9, 0xfd, 0x09, 0x8f, 0x32, 0xce, 0x03, 0xfe, 0x2c, + 0xe7, 0x46, 0x2c, 0xdf, 0xd7, 0xce, 0xef, 0x35, 0x37, 0xe9, 0x4f, 0xd6, + 0xd2, 0x8b, 0x5b, 0x79, 0x01, 0x39, 0xc2, 0xa8, 0xf2, 0x2c, 0x01, 0x84, + 0x30, 0x9c, 0x26, 0xb0, 0x74, 0xdd, 0x7a, 0xcc, 0xa8, 0x36, 0x45, 0xc5, + 0x73, 0xc5, 0xbe, 0xa6, 0x1a, 0x01, 0x44, 0xc9, 0x04, 0x96, 0x99, 0x53, + 0xc8, 0xa7, 0xb0, 0xd9, 0xca, 0x54, 0x06, 0xcb, 0xa9, 0xb2, 0x98, 0x94, + 0x07, 0x11, 0xff, 0xa5, 0x28, 0xb4, 0xb6, 0x17, 0xe5, 0xee, 0x7f, 0x75, + 0xc4, 0xbd, 0x63, 0x07, 0x50, 0x73, 0xd1, 0x18, 0x48, 0x42, 0xd3, 0x61, + 0x4f, 0xbe, 0xbe, 0x67, 0x9c, 0xd6, 0xe6, 0x41, 0xcb, 0x7c, 0x54, 0x26, + 0x99, 0x45, 0x33, 0x6f, 0xb7, 0xf8, 0xdb, 0xd9, 0x96, 0x3c, 0xae, 0x7d, + 0x37, 0xa8, 0x52, 0xdc, 0x5a, 0xe0, 0x41, 0x5b, 0xac, 0x0f, 0xc0, 0x9f, + 0x62, 0x93, 0x73, 0xd6, 0x4a, 0x06, 0x2c, 0x5d, 0x47, 0x3f, 0x7b, 0xb2, + 0x8f, 0x9d, 0x29, 0x05, 0xfa, 0x38, 0xc6, 0x43, 0x55, 0x1e, 0x26, 0x26, + 0xb8, 0x8f, 0x66, 0xd5, 0x23, 0x0d, 0x22, 0x03, 0x45, 0x8c, 0x64, 0xef, + 0xea, 0xc7, 0x93, 0x20, 0x47, 0xae, 0xe5, 0x72, 0xff, 0x7e, 0xb5, 0x48, + 0x67, 0x83, 0x32, 0x2c, 0xb1, 0x7f, 0xdb, 0xf5, 0xf7, 0x27, 0x5a, 0xc7, + 0xc4, 0x37, 0xe8, 0x65, 0x51, 0x0c, 0xa6, 0xc9, 0x8a, 0x5a, 0x41, 0x4f, + 0xa1, 0xf3, 0xee, 0xc4, 0xbb, 0xd9, 0xb8, 0x63, 0xad, 0x79, 0x53, 0xad, + 0x10, 0x36, 0xbb, 0x68, 0xcc, 0xf9, 0x70, 0xff, 0x78, 0xce, 0x58, 0x23, + 0x66, 0xac, 0x7c, 0x0f, 0x61, 0xe0, 0xf0, 0x94, 0x47, 0xbb, 0x23, 0x66, + 0xc5, 0x0d, 0x52, 0x3e, 0x8f, 0xe4, 0xa6, 0x2a, 0x6a, 0x93, 0x2d, 0x74, + 0x19, 0x1e, 0xc1, 0xa3, 0xcc, 0x76, 0x62, 0x43, 0x46, 0x59, 0x41, 0xc2, + 0x1a, 0x1d, 0xf7, 0xa4, 0xf1, 0xa9, 0xaf, 0xfe, 0xdd, 0xe3, 0x32, 0xe1, + 0x19, 0x2f, 0xa9, 0x9b, 0xa4, 0xc5, 0xee, 0xc5, 0x6c, 0xcf, 0xdf, 0xaf, + 0x40, 0x79, 0x91, 0xd6, 0x6f, 0x58, 0x5f, 0x31, 0x7e, 0xa8, 0x26, 0x61, + 0xf2, 0x88, 0xc5, 0xb5, 0x8a, 0xa5, 0x5e, 0xfc, 0x0b, 0xae, 0xba, 0x77, + 0x71, 0xcd, 0xca, 0xd9, 0x91, 0xee, 0x52, 0x6e, 0xee, 0x2f, 0xbb, 0x11, + 0x40, 0x97, 0x59, 0x4c, 0xd7, 0x1d, 0x47, 0xc4, 0xce, 0xaf, 0x71, 0xcc, + 0xc8, 0x2e, 0x3f, 0x6a, 0x8b, 0x57, 0x6f, 0xd2, 0xd7, 0x2e, 0x7c, 0x1e, + 0x50, 0x5f, 0x09, 0x2c, 0x7c, 0x57, 0x86, 0xb6, 0xf0, 0x94, 0x23, 0x1e, + 0x2f, 0x8e, 0x50, 0xa2, 0x03, 0x43, 0x32, 0x13, 0x59, 0x4e, 0x29, 0x10, + 0x0f, 0xfb, 0x9b, 0xa7, 0xfc, 0xe1, 0x5a, 0x26, 0x55, 0x84, 0xdd, 0x71, + 0xd0, 0xe3, 0x92, 0x1d, 0xba, 0x98, 0x6e, 0x78, 0xe4, 0x5a, 0xf8, 0x2e, + 0x35, 0x42, 0x94, 0x80, 0xf4, 0x77, 0x36, 0x2b, 0x23, 0xc9, 0x14, 0x94, + 0x47, 0x19, 0x1e, 0x4e, 0x5c, 0x93, 0x0e, 0x31, 0x35, 0xbb, 0xc7, 0x24, + 0x18, 0x9f, 0xca, 0x25, 0xa2, 0x3c, 0x3d, 0xa0, 0xb1, 0x5d, 0xac, 0x15, + 0x57, 0x57, 0x56, 0x40, 0x2a, 0x66, 0x64, 0xe2, 0xa8, 0x69, 0x4d, 0xda, + 0xed, 0xe1, 0x8e, 0x24, 0xd0, 0xc4, 0xdd, 0x49, 0x55, 0xa8, 0xca, 0x9f, + 0x83, 0xd7, 0x93, 0xc9, 0x96, 0x65, 0xf2, 0x01, 0xca, 0xd7, 0x3e, 0x31, + 0x9f, 0x16, 0x3e, 0x77, 0x99, 0x3d, 0x51, 0x82, 0xc7, 0x20, 0x3c, 0x5d, + 0xa1, 0x76, 0xa5, 0x4b, 0xb3, 0x8a, 0xb2, 0x8b, 0x79, 0xdd, 0x2c, 0x29, + 0x2c, 0x3a, 0x0a, 0x6f, 0xdd, 0xaa, 0x2a, 0xb8, 0xd5, 0x3d, 0xca, 0x54, + 0x0f, 0x6a, 0x1a, 0x25, 0x89, 0xfb, 0x52, 0x94, 0xfe, 0xcd, 0xa9, 0x04, + 0x86, 0x88, 0x0e, 0x59, 0x81, 0x22, 0xd3, 0xea, 0x02, 0xe7, 0xc4, 0xf3, + 0x2c, 0x12, 0x20, 0x67, 0xbe, 0x0f, 0x8f, 0x5c, 0x7d, 0xba, 0x7f, 0x72, + 0x14, 0xb0, 0x4a, 0x6d, 0x6f, 0x38, 0x52, 0x8b, 0x1f, 0xb3, 0x6e, 0xad, + 0x3c, 0x86, 0x7c, 0x84, 0x86, 0x6d, 0xea, 0x55, 0xaf, 0x68, 0xd7, 0x0f, + 0xb0, 0x35, 0xb8, 0x00, 0x6b, 0x37, 0x2a, 0x3b, 0x33, 0xca, 0xfd, 0x68, + 0xb4, 0x79, 0x2c, 0x58, 0xcb, 0x00, 0x39, 0x74, 0x3a, 0x21, 0x55, 0x8d, + 0x1e, 0xbd, 0x66, 0x62, 0x83, 0xa1, 0x82, 0xe6, 0x06, 0xb4, 0xdd, 0x09, + 0xa4, 0xdc, 0x3f, 0x66, 0xe8, 0xac, 0xf2, 0x1d, 0x79, 0x19, 0xa3, 0x76, + 0x0d, 0x99, 0xa5, 0xc9, 0xb9, 0xb0, 0x00, 0x5d, 0x9e, 0x48, 0xe6, 0xa4, + 0xd4, 0xf9, 0x6b, 0xbb, 0xa9, 0x0a, 0xab, 0x5e, 0xf6, 0x52, 0x8b, 0x3b, + 0x8a, 0x3b, 0x34, 0x29, 0x52, 0xb4, 0x07, 0xe6, 0x28, 0xbf, 0xde, 0x4b, + 0x8e, 0x20, 0xc2, 0x90, 0x10, 0x5f, 0x13, 0xa1, 0xc3, 0x1c, 0xed, 0xd2, + 0xaa, 0x63, 0x82, 0x6c, 0xed, 0xf4, 0x1f, 0x37, 0xf2, 0xf2, 0x26, 0xa0, + 0xf3, 0x9d, 0xfb, 0x6d, 0xc3, 0x38, 0xaf, 0xb2, 0x5c, 0x73, 0x2b, 0x7e, + 0xab, 0x5e, 0x17, 0x08, 0x64, 0x7a, 0x4f, 0xf9, 0x87, 0x65, 0x4a, 0xe9, + 0x45, 0x17, 0x44, 0x03, 0xb1, 0xdd, 0x25, 0x24, 0x9e, 0x77, 0x7e, 0xd8, + 0xa5, 0x90, 0xab, 0x74, 0x33, 0x83, 0x37, 0xc3, 0xee, 0xac, 0xd2, 0xad, + 0x47, 0x57, 0x1e, 0x60, 0x51, 0x0c, 0xc4, 0x91, 0x4a, 0xb1, 0x54, 0x98, + 0x50, 0x7c, 0x52, 0xaf, 0xbb, 0x5c, 0xa9, 0x6b, 0x18, 0x73, 0x98, 0xa6, + 0x4c, 0xf2, 0x19, 0xb0, 0x6c, 0x86, 0x98, 0x41, 0x4a, 0xac, 0x99, 0x38, + 0x72, 0x82, 0x7e, 0x3e, 0xab, 0xcc, 0xf8, 0x97, 0x3a, 0xd2, 0x09, 0xa1, + 0xfd, 0x75, 0x85, 0x60, 0x02, 0x76, 0xa4, 0x62, 0x6c, 0x66, 0x9d, 0xc7, + 0x54, 0x2f, 0xf0, 0xee, 0x66, 0x68, 0x31, 0x76, 0xd8, 0x88, 0x1d, 0xfd, + 0x81, 0x41, 0x6c, 0x86, 0x51, 0x2c, 0x82, 0xd1, 0x7b, 0x4f, 0x6c, 0x2c, + 0xea, 0x1f, 0xc0, 0xc0, 0x88, 0xc2, 0xa3, 0x6f, 0x9e, 0xa4, 0x8e, 0x8e, + 0x90, 0x5d, 0xc1, 0xbe, 0x58, 0xb2, 0xcc, 0xea, 0x01, 0x6e, 0x98, 0x5e, + 0xac, 0x93, 0xb3, 0x39, 0xca, 0x1a, 0x49, 0x34, 0x39, 0x11, 0x2f, 0xe0, + 0x49, 0x49, 0x8e, 0xe7, 0xdf, 0x79, 0x8c, 0x4f, 0xba, 0x0b, 0x09, 0x6f, + 0xe1, 0x03, 0xdc, 0xea, 0xdf, 0x42, 0x1d, 0xa2, 0x0f, 0x3f, 0x08, 0x82, + 0xb2, 0xd8, 0xb2, 0xd4, 0xb2, 0xea, 0xa9, 0x51, 0xc2, 0x8f, 0x14, 0x76, + 0x91, 0xd9, 0x0d, 0x6a, 0x6a, 0xc9, 0xf8, 0xf5, 0xf4, 0x48, 0xbf, 0xe5, + 0x34, 0x74, 0x41, 0x84, 0xe7, 0x05, 0xb9, 0xa9, 0xdd, 0xa6, 0x8a, 0x48, + 0xa4, 0x24, 0x38, 0xa8, 0x6b, 0x68, 0xd8, 0x5f, 0x0a, 0xd1, 0x1f, 0x01, + 0xec, 0xf2, 0x85, 0x6c, 0x36, 0xde, 0x2f, 0xdd, 0xc8, 0x53, 0x6f, 0xf1, + 0x53, 0xfa, 0x35, 0x24, 0x47, 0xd2, 0x14, 0xf5, 0xab, 0x56, 0xa1, 0xe8, + 0x95, 0x3d, 0x44, 0x89, 0x7c, 0x6e, 0xd3, 0x4f, 0x57, 0xd5, 0xde, 0x93, + 0x0f, 0xa9, 0x33, 0xf9, 0x0e, 0x6e, 0x85, 0x93, 0x6a, 0xf2, 0xda, 0xdb, + 0xc1, 0x42, 0x89, 0x0b, 0xbb, 0xc1, 0x81, 0x1d, 0x3e, 0xf7, 0xf8, 0x11, + 0xa2, 0x5f, 0x26, 0x81, 0x75, 0x35, 0xd3, 0xa0, 0xdc, 0xcc, 0x14, 0xd7, + 0x89, 0xb1, 0x1d, 0x90, 0xee, 0x62, 0x7f, 0x28, 0x74, 0xce, 0xa6, 0xc8, + 0x1c, 0x46, 0xb3, 0x4f, 0x55, 0x35, 0xab, 0xfe, 0xd0, 0x3e, 0xa7, 0xd8, + 0x79, 0x1c, 0x22, 0xc4, 0xa2, 0x26, 0xf6, 0x40, 0x4e, 0x91, 0xb3, 0x68, + 0x43, 0xdb, 0x66, 0xde, 0xa7, 0xb0, 0xc9, 0x28, 0xb1, 0x36, 0xdc, 0x3e, + 0x1b, 0x19, 0x4e, 0xfb, 0xac, 0xde, 0x13, 0xd0, 0x02, 0x42, 0x76, 0x79, + 0xdc, 0xf2, 0xea, 0xc7, 0xcf, 0x16, 0xab, 0x19, 0x42, 0xaa, 0x2a, 0x59, + 0x79, 0xe8, 0xf5, 0xb0, 0x66, 0x92, 0xfc, 0x98, 0x1b, 0x76, 0x46, 0x31, + 0x65, 0x47, 0xe1, 0x7b, 0x70, 0x4a, 0x06, 0xa7, 0xdb, 0xc6, 0xc2, 0x8b, + 0xca, 0x4c, 0x58, 0x6a, 0x11, 0xa3, 0xb7, 0xe2, 0xca, 0x06, 0x25, 0xdc, + 0xc3, 0xc1, 0x37, 0xbb, 0xb7, 0xab, 0xce, 0x12, 0x43, 0xfe, 0x8b, 0xa9, + 0x01, 0x7d, 0xaf, 0xac, 0x89, 0x28, 0x2d, 0x2c, 0xc2, 0x4c, 0x87, 0xcf, + 0xe8, 0x4c, 0x5b, 0x87, 0x7f, 0xb5, 0x22, 0xa1, 0xd9, 0x40, 0x4d, 0xa9, + 0x66, 0x10, 0x8b, 0x1b, 0xeb, 0x3f, 0x47, 0x5b, 0x67, 0x34, 0xb2, 0xf6, + 0x84, 0x88, 0x54, 0x66, 0xf0, 0x5d, 0x9d, 0xa5, 0x27, 0x66, 0x55, 0xf7, + 0x42, 0x3d, 0xd5, 0xca, 0xca, 0x6e, 0xbc, 0xfd, 0x37, 0x39, 0x99, 0xdb, + 0xa1, 0xa2, 0x4c, 0x69, 0x43, 0x42, 0xc8, 0xf5, 0xb9, 0x8f, 0xbe, 0x52, + 0xf8, 0xcc, 0x87, 0xf6, 0x0e, 0x30, 0xc5, 0x2b, 0xf4, 0xa8, 0x85, 0xab, + 0x8f, 0xa2, 0x11, 0xbc, 0x4f, 0x22, 0x9c, 0x94, 0x44, 0x6b, 0x86, 0x0e, + 0x3f, 0xaa, 0x5c, 0xb7, 0x41, 0x1b, 0xed, 0x83, 0x88, 0xf3, 0x0e, 0x0c, + 0xea, 0x19, 0x9d, 0xb5, 0x9f, 0xe2, 0xe8, 0xa2, 0x9f, 0x4b, 0x0f, 0x9c, + 0xe5, 0x0f, 0xc9, 0x18, 0xa4, 0x3b, 0x86, 0x16, 0x15, 0x45, 0x2b, 0x97, + 0x8f, 0x7a, 0xf3, 0x18, 0x30, 0xf8, 0x97, 0xdc, 0x3e, 0xc4, 0xca, 0x26, + 0xa0, 0x24, 0x53, 0xd9, 0xcd, 0x8e, 0x5c, 0xc0, 0x95, 0x31, 0xc2, 0xf7, + 0x24, 0x5f, 0x19, 0x3e, 0x5b, 0x4b, 0x08, 0x13, 0x4d, 0x8f, 0x77, 0x15, + 0xf1, 0x67, 0xbe, 0x55, 0xa8, 0x7c, 0xf0, 0xcc, 0x97, 0x83, 0x7b, 0xaa, + 0x8c, 0xab, 0xa4, 0xb7, 0xe7, 0xdc, 0x5d, 0x62, 0xc5, 0x6a, 0x21, 0xf6, + 0xe3, 0xca, 0x4c, 0x96, 0x44, 0x06, 0xaa, 0x38, 0x6f, 0xc4, 0x88, 0x8c, + 0x58, 0x54, 0xdb, 0x7f, 0x1c, 0xac, 0x14, 0x15, 0x7c, 0xce, 0x26, 0x79, + 0x4b, 0xae, 0xa0, 0x24, 0xb8, 0xec, 0xb6, 0xfb, 0x8c, 0x35, 0x9b, 0x16, + 0xcb, 0xc0, 0x96, 0x47, 0xf2, 0x18, 0xff, 0xf7, 0x91, 0x02, 0x87, 0xe1, + 0xb3, 0xd0, 0xa4, 0x29, 0x13, 0x25, 0xb7, 0xde, 0x8f, 0xa6, 0xe4, 0x22, + 0x6c, 0x92, 0x3e, 0x29, 0x90, 0x3d, 0xf2, 0xa5, 0xff, 0xeb, 0xf9, 0x0a, + 0xa9, 0x3b, 0xd3, 0x50, 0xbb, 0x96, 0x18, 0x2c, 0x8c, 0xdf, 0xc2, 0x5b, + 0x8f, 0x83, 0x66, 0x3c, 0x64, 0x81, 0x1b, 0x6f, 0x26, 0x47, 0x46, 0x48, + 0x79, 0x06, 0x19, 0x07, 0xb8, 0xab, 0xc2, 0x58, 0x22, 0xd7, 0x00, 0xed, + 0xcd, 0x3c, 0x13, 0x81, 0xe8, 0x72, 0x7d, 0x97, 0xa9, 0x9a, 0xc2, 0x21, + 0xe5, 0x9a, 0xf1, 0xba, 0xfa, 0xb7, 0xe8, 0x0f, 0xfb, 0xa9, 0x4a, 0xd9, + 0x23, 0x7a, 0xe1, 0x06, 0x04, 0x14, 0x23, 0x77, 0x46, 0x93, 0x91, 0xc4, + 0xd2, 0x7c, 0x24, 0x4c, 0xad, 0xee, 0xba, 0x7d, 0xd0, 0x11, 0xd2, 0x3a, + 0x0f, 0x46, 0xae, 0x21, 0xe6, 0x08, 0x43, 0x12, 0x2c, 0x95, 0x4f, 0x52, + 0x87, 0x8e, 0x51, 0x35, 0xf4, 0x28, 0x3a, 0x12, 0x55, 0x14, 0x33, 0x5d, + 0xd2, 0xd2, 0x14, 0xa1, 0xcd, 0x83, 0x4d, 0x5d, 0xfe, 0x80, 0x5c, 0x5a, + 0x2b, 0x34, 0x17, 0x8b, 0x7b, 0xdb, 0x78, 0x98, 0x90, 0xdc, 0x04, 0x52, + 0x96, 0x58, 0x50, 0x47, 0x38, 0x48, 0x39, 0x16, 0xd1, 0x87, 0x2d, 0x3d, + 0xcb, 0xba, 0xaf, 0x5b, 0x9f, 0x57, 0xda, 0x13, 0x5a, 0xf2, 0xe7, 0x46, + 0x37, 0x44, 0x1c, 0x85, 0x1c, 0x7d, 0xdc, 0xba, 0xb2, 0x24, 0xd1, 0xad, + 0x28, 0x86, 0xdf, 0xf5, 0x26, 0x09, 0x3f, 0x7c, 0x2b, 0xec, 0xfc, 0xf0, + 0x25, 0x96, 0x5c, 0x1d, 0x45, 0xef, 0xba, 0xd9, 0x54, 0x4a, 0x9d, 0x9b, + 0xc3, 0x9a, 0x73, 0xa0, 0x09, 0x82, 0x8d, 0xa2, 0x5c, 0x8a, 0x18, 0xb3, + 0x36, 0x04, 0x0e, 0xe9, 0x53, 0x2c, 0x47, 0xe6, 0x1c, 0xc9, 0xd3, 0xe1, + 0x61, 0x44, 0x1b, 0x9f, 0x20, 0xa9, 0x7a, 0x7f, 0x14, 0x13, 0x2d, 0xf5, + 0xf9, 0x75, 0xbe, 0x25, 0xa4, 0xbf, 0x65, 0x93, 0x06, 0xd2, 0xfb, 0xa4, + 0xa8, 0x22, 0x72, 0x11, 0x97, 0xd0, 0x66, 0x90, 0x62, 0xc3, 0x81, 0xfd, + 0x06, 0xd1, 0xe1, 0x18, 0xea, 0x1c, 0xc7, 0x22, 0xfe, 0x39, 0x7d, 0xc6, + 0x37, 0xb8, 0x39, 0x36, 0xe9, 0xb3, 0xe2, 0x8f, 0x44, 0xec, 0x9a, 0x3a, + 0x5e, 0x71, 0x08, 0xac, 0x4e, 0xbd, 0x37, 0x07, 0x17, 0x89, 0xf0, 0xf5, + 0x4f, 0x35, 0xcf, 0x89, 0x7a, 0xf8, 0x71, 0x2f, 0x06, 0x22, 0xf5, 0x51, + 0x4b, 0x8d, 0x53, 0x24, 0x16, 0xe7, 0x7c, 0x5a, 0x17, 0x7a, 0x6a, 0xc5, + 0xbe, 0x14, 0x8d, 0xa6, 0x25, 0xf1, 0x5c, 0xd9, 0x07, 0x74, 0x9b, 0x45, + 0x2d, 0xdd, 0x31, 0x7a, 0xbd, 0xd7, 0x9c, 0x63, 0x7c, 0x2f, 0x4f, 0x1e, + 0x9e, 0x4f, 0x16, 0x1f, 0x23, 0x61, 0xe9, 0x20, 0x43, 0x7e, 0x96, 0xf3, + 0x1b, 0xa4, 0x63, 0xe6, 0x7f, 0xb5, 0x31, 0xd8, 0x9b, 0xd6, 0xe7, 0x0c, + 0xbb, 0x18, 0x62, 0x88, 0x4f, 0x5c, 0x6c, 0xcf, 0x8f, 0x4e, 0x29, 0x90, + 0xc1, 0x2f, 0x9f, 0x72, 0x9c, 0xc5, 0xcb, 0xd6, 0xe5, 0x56, 0x5a, 0x11, + 0x98, 0xce, 0x84, 0xd1, 0x40, 0x0c, 0x14, 0xcc, 0x00, 0xf3, 0x25, 0x13, + 0xb6, 0xe2, 0x5b, 0x56, 0xee, 0x70, 0xe3, 0x81, 0x04, 0x89, 0x45, 0x38, + 0x03, 0xf8, 0x29, 0xdd, 0xc9, 0xd1, 0x43, 0xfc, 0x09, 0x57, 0x5f, 0x3a, + 0x6a, 0xba, 0x37, 0x8a, 0x95, 0x9a, 0xbd, 0x4b, 0x57, 0xaa, 0xba, 0x89, + 0x34, 0x75, 0x2a, 0x02, 0x92, 0xc0, 0x88, 0xa9, 0xdc, 0x21, 0x12, 0x24, + 0x6b, 0xab, 0x87, 0xe5, 0x0e, 0x28, 0xb6, 0x14, 0xb3, 0x8c, 0xa5, 0x91, + 0x4a, 0x53, 0xdf, 0x16, 0x23, 0x9f, 0xea, 0x17, 0xa7, 0xb6, 0x9c, 0x15, + 0x7a, 0x02, 0x65, 0xc6, 0x2e, 0xd9, 0xd4, 0xd4, 0x93, 0xe8, 0xab, 0x6f, + 0x1b, 0xc8, 0x25, 0xa5, 0xea, 0x1f, 0x07, 0x64, 0xf1, 0x12, 0x8d, 0xd3, + 0x89, 0xe8, 0x6d, 0x28, 0xa2, 0xbf, 0xa5, 0x34, 0xea, 0xd6, 0x06, 0x2f, + 0x3a, 0xd6, 0xb2, 0xe5, 0x30, 0xe0, 0xc5, 0x3a, 0x44, 0xe2, 0x55, 0x88, + 0x38, 0xc4, 0x2b, 0xc3, 0x69, 0x2e, 0xf6, 0x95, 0xb4, 0x41, 0xd2, 0xe5, + 0xaa, 0x89, 0x9c, 0x75, 0x5e, 0x29, 0xff, 0x4e, 0x61, 0xf2, 0xd0, 0x74, + 0x7a, 0x6d, 0xbd, 0xc3, 0x55, 0xd1, 0x63, 0x75, 0x35, 0x5a, 0x27, 0x26, + 0x61, 0x12, 0xcc, 0xd2, 0x54, 0xcf, 0x1d, 0xdf, 0x83, 0x7e, 0x9c, 0xf5, + 0x88, 0x3b, 0x1a, 0x5b, 0x66, 0x8f, 0xc1, 0x71, 0x95, 0x3e, 0xae, 0x4e, + 0xa3, 0x86, 0x82, 0xc9, 0xa1, 0x0a, 0x1a, 0x2d, 0x36, 0x44, 0xa6, 0x37, + 0x1d, 0x4d, 0x3e, 0x72, 0xfb, 0x15, 0x8b, 0x5b, 0xec, 0x22, 0x13, 0x34, + 0x3a, 0xdb, 0xc1, 0xf4, 0x78, 0xe9, 0x51, 0xb7, 0x60, 0x53, 0xff, 0x71, + 0x07, 0x86, 0x1a, 0xc9, 0x38, 0xfa, 0xa6, 0xeb, 0x7a, 0x10, 0x75, 0xb3, + 0xf1, 0xf0, 0x28, 0xb9, 0x7d, 0x08, 0x59, 0x36, 0x81, 0xa0, 0xdc, 0x7c, + 0x71, 0x8f, 0xdf, 0x85, 0x45, 0xa7, 0x49, 0xcd, 0x1f, 0xf5, 0x0f, 0x46, + 0x4f, 0xa6, 0x7a, 0x6d, 0x64, 0x05, 0x48, 0x82, 0x8f, 0xe7, 0x55, 0xf5, + 0xdc, 0xf5, 0xcb, 0xd7, 0x14, 0x97, 0x05, 0x3d, 0x3b, 0x62, 0x90, 0x64, + 0x2d, 0x87, 0x06, 0x97, 0x3c, 0xc0, 0xde, 0x79, 0x73, 0x0f, 0xae, 0xee, + 0x99, 0x1e, 0x4d, 0xda, 0xbf, 0x6d, 0x2d, 0xe4, 0xc8, 0xde, 0x31, 0x16, + 0x2b, 0x5a, 0x6f, 0x1b, 0x71, 0x92, 0xd6, 0x6b, 0x4c, 0x34, 0x39, 0xdc, + 0x1e, 0xf5, 0x62, 0x59, 0x49, 0xb9, 0xd4, 0x6e, 0x1b, 0x82, 0x70, 0xa8, + 0xf0, 0xf2, 0x19, 0x75, 0x23, 0x25, 0xa8, 0xcc, 0x26, 0xe3, 0xd0, 0xca, + 0x0e, 0xe6, 0x47, 0x5f, 0x99, 0xc7, 0x6b, 0x05, 0xb8, 0xba, 0x6c, 0xe5, + 0xab, 0xfb, 0x76, 0x45, 0x1c, 0x31, 0x9a, 0x76, 0xfe, 0xae, 0x3e, 0x07, + 0xad, 0x22, 0x2c, 0x2f, 0x91, 0x45, 0xa7, 0x7b, 0xad, 0xe3, 0xf3, 0x2f, + 0xe1, 0x53, 0x32, 0x73, 0x40, 0x34, 0x0e, 0x9e, 0x5b, 0xa2, 0xa4, 0x4c, + 0x79, 0x3c, 0xa8, 0x5f, 0x6d, 0x96, 0xe8, 0x20, 0x3c, 0x1a, 0x33, 0x0a, + 0x7b, 0x3d, 0xad, 0xd8, 0x81, 0xbc, 0x3b, 0x99, 0xfc, 0xcd, 0xdf, 0x6b, + 0xe7, 0xa6, 0xa7, 0xe3, 0xdc, 0xfc, 0x3f, 0xd2, 0xca, 0xc8, 0x51, 0x00, + 0xdc, 0x95, 0x07, 0x5c, 0x17, 0xea, 0x97, 0xf1, 0x42, 0x3f, 0x00, 0x9e, + 0xc2, 0xab, 0xf3, 0x05, 0xfd, 0x1a, 0xc2, 0xdf, 0x2f, 0x56, 0x23, 0x64, + 0x43, 0x35, 0x31, 0x85, 0x62, 0xbb, 0x99, 0xb0, 0x01, 0xb6, 0x9b, 0xdb, + 0x07, 0xed, 0xa0, 0xf4, 0x21, 0xa1, 0xd4, 0x61, 0xb7, 0x57, 0x16, 0x15, + 0x69, 0xf4, 0x48, 0xd4, 0x7b, 0x55, 0x6f, 0xac, 0x94, 0xd5, 0xbd, 0x4a, + 0x31, 0x92, 0x45, 0xb0, 0x7d, 0x71, 0x09, 0xfa, 0x5f, 0x50, 0xf8, 0x44, + 0x38, 0xfe, 0x23, 0x55, 0x87, 0xb3, 0xbe, 0xdc, 0x75, 0x72, 0xf9, 0x57, + 0xd8, 0xeb, 0xd7, 0x65, 0x85, 0x93, 0xb8, 0xd3, 0x0d, 0x92, 0xd9, 0x68, + 0x09, 0xbe, 0x27, 0x38, 0x82, 0x64, 0xbd, 0xc8, 0xa3, 0x75, 0x2c, 0xb5, + 0xef, 0x76, 0x07, 0x89, 0xfe, 0xd9, 0x4c, 0x32, 0x09, 0x7a, 0xf8, 0x8b, + 0x22, 0x26, 0xee, 0x7c, 0xf9, 0x90, 0xbe, 0x8b, 0x01, 0xd0, 0xa5, 0x00, + 0x0a, 0x1f, 0x26, 0x21, 0x31, 0x48, 0xc0, 0xf3, 0xaf, 0x6d, 0x19, 0xb9, + 0x12, 0x7c, 0xa7, 0x88, 0xad, 0x55, 0x79, 0x1c, 0x10, 0x94, 0x40, 0xb8, + 0xf6, 0x07, 0x0e, 0xfd, 0x4f, 0xd1, 0x12, 0x29, 0x31, 0x04, 0x4d, 0x95, + 0xf5, 0x5d, 0x95, 0x9a, 0xb6, 0x47, 0x39, 0x5b, 0x5a, 0xba, 0x2a, 0xd8, + 0x43, 0xf9, 0x27, 0x22, 0x9c, 0x48, 0xdf, 0x78, 0x87, 0xfe, 0xc5, 0x19, + 0xfe, 0xe1, 0x0a, 0x9b, 0x67, 0x42, 0xc1, 0x69, 0x8c, 0x2d, 0x83, 0xa5, + 0x25, 0xf3, 0xcf, 0xeb, 0xfb, 0x32, 0xa7, 0x14, 0xef, 0x98, 0xc1, 0xa1, + 0x91, 0x56, 0x22, 0xf9, 0x4c, 0xa6, 0x94, 0xf0, 0x7d, 0x18, 0xd7, 0x97, + 0x36, 0xe1, 0x7e, 0x51, 0xeb, 0xac, 0x65, 0x42, 0x9e, 0x59, 0xc7, 0xfc, + 0x4c, 0x57, 0x2f, 0x77, 0x47, 0xe5, 0x64, 0x1a, 0x61, 0xa1, 0x73, 0x38, + 0x71, 0x87, 0x8b, 0x9f, 0xe5, 0xe7, 0x10, 0xc9, 0x26, 0x07, 0x05, 0x45, + 0x1e, 0x3b, 0x58, 0x1d, 0xc2, 0x90, 0x44, 0xa5, 0x57, 0x5b, 0xc8, 0xd5, + 0xf7, 0x4d, 0xb0, 0x8b, 0xc2, 0xc3, 0xe5, 0x6d, 0xe7, 0x9a, 0xdf, 0xdb, + 0xfc, 0x96, 0x3f, 0x0b, 0x23, 0x95, 0x48, 0xe1, 0xb4, 0x87, 0x9e, 0x8a, + 0x09, 0xf2, 0xc4, 0x41, 0x95, 0xe5, 0x0d, 0x74, 0x09, 0xa4, 0x78, 0xc0, + 0x9b, 0xbb, 0x89, 0x91, 0xed, 0x03, 0xb6, 0x5b, 0x69, 0xfc, 0x86, 0x62, + 0x4b, 0xa9, 0xcc, 0xa4, 0x02, 0x81, 0x5f, 0xaa, 0x39, 0xa8, 0xfb, 0xd3, + 0x5c, 0xf2, 0x73, 0xe8, 0xed, 0x44, 0x22, 0xf0, 0xd5, 0x5f, 0x4b, 0x75, + 0x04, 0x98, 0x09, 0x9b, 0x39, 0x4f, 0xb5, 0xb5, 0x93, 0x07, 0xcc, 0xb8, + 0x70, 0x8d, 0x61, 0xf2, 0xe8, 0x49, 0x1c, 0xda, 0xd5, 0xcc, 0x4f, 0xf2, + 0x08, 0x8a, 0x0a, 0xf2, 0x87, 0xc8, 0x4b, 0x3b, 0x10, 0x1b, 0x0a, 0xd4, + 0xcb, 0x75, 0xb0, 0x78, 0xa8, 0xae, 0x8f, 0x4d, 0x5d, 0x3f, 0xeb, 0x6e, + 0xb0, 0xb2, 0xe0, 0x4f, 0x6c, 0x9d, 0x26, 0x48, 0x11, 0x2b, 0xd7, 0xba, + 0x0a, 0x3f, 0x38, 0xc2, 0x40, 0x0d, 0xb9, 0xc9, 0x1a, 0x24, 0x41, 0xde, + 0x0c, 0xd9, 0x67, 0x4f, 0x7e, 0xaa, 0xe3, 0x37, 0x51, 0x0d, 0x46, 0x4a, + 0x95, 0xc9, 0x44, 0x25, 0x74, 0xe5, 0x78, 0xbc, 0xeb, 0x5f, 0x20, 0xa0, + 0x7e, 0xad, 0xfa, 0xc5, 0x34, 0xd8, 0x85, 0xbe, 0xea, 0x93, 0xd1, 0x5a, + 0x20, 0x14, 0x6b, 0x74, 0x40, 0xde, 0x05, 0xad, 0x57, 0xd8, 0xba, 0x34, + 0x92, 0x64, 0xed, 0x80, 0xb4, 0xe6, 0x18, 0x89, 0xea, 0x15, 0x40, 0xd8, + 0xcf, 0x1e, 0xf7, 0x34, 0xc8, 0x3e, 0x39, 0x9d, 0x40, 0x5b, 0x7c, 0x36, + 0x90, 0xaf, 0xe4, 0x8c, 0xac, 0xc5, 0xe8, 0x50, 0xe9, 0x9d, 0x76, 0x60, + 0x08, 0xc3, 0x85, 0xbf, 0x37, 0xdd, 0x63, 0x01, 0x4c, 0xe9, 0xa4, 0x30, + 0x39, 0x88, 0x8b, 0x1b, 0x80, 0x79, 0xaa, 0x46, 0xf0, 0x4f, 0x7e, 0x97, + 0x81, 0x2a, 0xfc, 0x9f, 0xfc, 0xbf, 0xe9, 0xf6, 0xa0, 0x04, 0x33, 0xcb, + 0xc9, 0x5b, 0xde, 0xd3, 0xf4, 0x6a, 0x5d, 0x11, 0x45, 0x37, 0x29, 0xca, + 0xb5, 0x3e, 0x6d, 0xd9, 0x39, 0x95, 0xaa, 0x32, 0x14, 0xd1, 0xbd, 0x24, + 0xb7, 0x3f, 0xd7, 0x43, 0x86, 0x9a, 0x80, 0x8e, 0x53, 0xfc, 0x13, 0xb9, + 0x36, 0x31, 0x8c, 0x58, 0x73, 0x41, 0x57, 0xc1, 0xf0, 0x5b, 0xa9, 0x6c, + 0x6c, 0xf5, 0x5c, 0x95, 0xaa, 0x19, 0x82, 0x84, 0x36, 0x50, 0x19, 0x89, + 0xc3, 0x2b, 0x09, 0x59, 0x7a, 0x2d, 0xd9, 0x5e, 0x01, 0x9c, 0xd6, 0xfc, + 0xb7, 0xfe, 0xac, 0x31, 0x2e, 0x86, 0x32, 0xbf, 0x4e, 0xed, 0x53, 0xed, + 0x76, 0x68, 0x20, 0x0d, 0xfa, 0x18, 0x62, 0x47, 0x5e, 0x25, 0x5a, 0xd0, + 0x80, 0x4a, 0xae, 0xa7, 0x74, 0xe9, 0xfa, 0x9a, 0x12, 0x48, 0x7c, 0xcd, + 0xd5, 0xcd, 0x02, 0xcb, 0x47, 0x84, 0xbf, 0xed, 0xa3, 0x82, 0x29, 0xe4, + 0x69, 0x89, 0xa5, 0xbc, 0xff, 0xac, 0x06, 0x3a, 0x16, 0xc0, 0xdc, 0xe1, + 0xf7, 0xfa, 0x99, 0xaf, 0x02, 0x04, 0xbf, 0xa9, 0x56, 0xe2, 0xbe, 0xd0, + 0x5d, 0x85, 0x5a, 0x6e, 0xc4, 0xac, 0x5c, 0xac, 0xbb, 0x9f, 0x41, 0xa6, + 0x65, 0x43, 0x77, 0xe2, 0x32, 0x1b, 0xfb, 0x64, 0x7b, 0xbd, 0x1a, 0x83, + 0xff, 0xba, 0xc6, 0x99, 0x79, 0x3c, 0x10, 0x78, 0xc7, 0x5b, 0x9f, 0x0d, + 0xf3, 0xdc, 0xc1, 0xc1, 0xfb, 0xc1, 0xf3, 0x0e, 0x56, 0x25, 0x19, 0xa1, + 0xea, 0xbf, 0xc0, 0xda, 0x2b, 0x0b, 0xc5, 0x4c, 0x4d, 0x22, 0x1b, 0x9b, + 0x53, 0x27, 0xe0, 0x73, 0x82, 0x75, 0xf9, 0xbe, 0x6b, 0xa3, 0x75, 0xa3, + 0x9f, 0x63, 0x0b, 0xfa, 0x10, 0x1b, 0xb1, 0x49, 0x2c, 0x1d, 0xfa, 0x47, + 0xd5, 0xfc, 0x4b, 0x32, 0x62, 0xd9, 0x30, 0x1e, 0x22, 0xb3, 0xce, 0xb8, + 0x24, 0xd7, 0x17, 0xbb, 0xb5, 0xb0, 0x39, 0x2f, 0x21, 0x12, 0xe4, 0xd8, + 0x87, 0xa7, 0xe3, 0xa8, 0xb4, 0x59, 0x90, 0x19, 0x6b, 0x27, 0xd8, 0x40, + 0xc6, 0xc0, 0xc1, 0xd4, 0x0a, 0x69, 0xe1, 0xc9, 0xb1, 0x2e, 0xb5, 0xb5, + 0xb0, 0x60, 0xf1, 0x01, 0x90, 0x8d, 0x80, 0xe0, 0x1f, 0xd3, 0x5a, 0x1c, + 0xa0, 0x83, 0x5c, 0x07, 0xe2, 0x9a, 0x0b, 0x64, 0xbc, 0x78, 0x45, 0x11, + 0x9f, 0x0a, 0x60, 0xae, 0x78, 0x56, 0x74, 0xda, 0x2d, 0x0f, 0x66, 0x9d, + 0x3c, 0xc9, 0x05, 0x59, 0x0f, 0x0a, 0x48, 0x9a, 0x04, 0x4b, 0xa7, 0x6d, + 0xd4, 0xaf, 0x23, 0xeb, 0xea, 0x6e, 0xfe, 0xa3, 0xfa, 0x10, 0x02, 0x42, + 0xb5, 0x49, 0x0f, 0x73, 0x29, 0xcd, 0x43, 0x62, 0x06, 0xb6, 0xc8, 0xc4, + 0xaa, 0xb1, 0x55, 0x6b, 0x2a, 0x50, 0x08, 0x8f, 0x82, 0x33, 0x74, 0xcb, + 0xc5, 0x18, 0xc2, 0x60, 0xa8, 0x1d, 0x75, 0x11, 0x90, 0x78, 0x82, 0x99, + 0x8b, 0x91, 0xa8, 0x60, 0x7e, 0xe8, 0x66, 0x76, 0xa7, 0x1b, 0x15, 0xfa, + 0x0b, 0xa2, 0x22, 0x9e, 0x85, 0x83, 0xa4, 0x2c, 0x45, 0x70, 0x9f, 0xf6, + 0x3c, 0xe4, 0x67, 0xbe, 0x96, 0x02, 0x40, 0x11, 0x3b, 0xa2, 0xeb, 0x01, + 0x08, 0x7b, 0xbe, 0x2b, 0xd2, 0x45, 0x8e, 0x51, 0x25, 0x6c, 0x33, 0x5d, + 0xf1, 0x4c, 0x4c, 0xe7, 0x28, 0x75, 0x2f, 0xd9, 0x90, 0xf6, 0xf8, 0x11, + 0x7a, 0x0d, 0x5e, 0xf2, 0xad, 0xaf, 0xf3, 0x83, 0x45, 0x78, 0x1e, 0xbc, + 0xe7, 0x36, 0xfb, 0x53, 0xf7, 0x32, 0xab, 0x22, 0xc3, 0x3e, 0x58, 0x3d, + 0x9d, 0xe1, 0x18, 0xac, 0x57, 0x04, 0x21, 0xcf, 0x53, 0xf1, 0xc6, 0xe6, + 0x33, 0x57, 0x83, 0xf2, 0xef, 0x5f, 0x3b, 0x8b, 0x94, 0x31, 0x91, 0x52, + 0x19, 0x0f, 0x6c, 0xd0, 0xa3, 0x5f, 0x18, 0x6f, 0x9b, 0x6d, 0x92, 0xe9, + 0x03, 0xd8, 0x41, 0x10, 0x00, 0xc4, 0x35, 0xb2, 0x60, 0x58, 0xc5, 0xcf, + 0x28, 0x9f, 0x5b, 0x13, 0xa5, 0x83, 0xb9, 0x68, 0x99, 0xc2, 0x3b, 0xbf, + 0x6b, 0x49, 0xc3, 0xba, 0x12, 0xb5, 0xc3, 0x53, 0x87, 0x45, 0x21, 0xca, + 0x20, 0xeb, 0x18, 0xd7, 0x4c, 0xc3, 0xc9, 0xe3, 0xe7, 0x83, 0x1c, 0x49, + 0xbc, 0x29, 0x19, 0x51, 0xa5, 0x66, 0x3c, 0xa1, 0xda, 0x32, 0xe7, 0xb8, + 0x24, 0x2f, 0xb8, 0xdc, 0x76, 0xe7, 0xe0, 0xbf, 0x8b, 0x39, 0x38, 0x91, + 0x13, 0x36, 0x09, 0x23, 0x85, 0x2c, 0x49, 0x86, 0x9b, 0x97, 0x2a, 0xb7, + 0xc7, 0x0b, 0xb9, 0xc5, 0xf7, 0xe1, 0x72, 0x30, 0x85, 0xf5, 0x2d, 0x36, + 0xdc, 0x4a, 0x89, 0x45, 0xd1, 0x82, 0x5a, 0x6e, 0xe3, 0x54, 0x8f, 0x30, + 0x57, 0x26, 0x9b, 0x7d, 0x52, 0x65, 0xbf, 0x05, 0x91, 0x7f, 0xf0, 0xb8, + 0x3d, 0x8e, 0x81, 0xec, 0xaa, 0xf8, 0x50, 0xa5, 0x55, 0x08, 0xad, 0x4c, + 0x7a, 0x78, 0xa4, 0x02, 0xc7, 0x03, 0xdd, 0x67, 0x64, 0x09, 0x66, 0x79, + 0x7f, 0x5c, 0x16, 0x12, 0x9c, 0xda, 0x38, 0x41, 0x30, 0xa0, 0xa0, 0x17, + 0x88, 0x42, 0x7f, 0xf1, 0x5b, 0x83, 0xfa, 0xe3, 0xc4, 0xea, 0xdb, 0x78, + 0x5f, 0xa1, 0x92, 0xf9, 0xbf, 0x0b, 0xed, 0x94, 0x3b, 0x7d, 0x2e, 0x9c, + 0xf5, 0xbb, 0x7e, 0x80, 0x2c, 0x36, 0x66, 0x4f, 0x4e, 0xf2, 0x20, 0x22, + 0x20, 0xe8, 0xe5, 0xba, 0xa6, 0xe5, 0x31, 0x39, 0x52, 0x0c, 0x65, 0x26, + 0xdf, 0xe5, 0x0d, 0x92, 0x12, 0x38, 0xd9, 0x0f, 0x0c, 0xe1, 0xfc, 0xce, + 0xce, 0x69, 0x03, 0x8a, 0x5c, 0x19, 0xc9, 0xfa, 0xed, 0x90, 0xb4, 0xe1, + 0xe1, 0x6f, 0x62, 0xd2, 0x35, 0xce, 0x8f, 0xe6, 0xfc, 0x37, 0x99, 0x44, + 0xa5, 0xbd, 0x61, 0x06, 0xdb, 0x71, 0x66, 0x07, 0x74, 0x8e, 0xec, 0xe7, + 0x0d, 0xc0, 0xc8, 0xc9, 0x7c, 0x51, 0xd0, 0x55, 0xeb, 0x56, 0x87, 0x08, + 0x16, 0x71, 0x44, 0x5e, 0x2d, 0x5d, 0x6a, 0xef, 0xc0, 0xd8, 0xe3, 0x9d, + 0x57, 0x32, 0x01, 0xc7, 0xce, 0xff, 0x70, 0xee, 0xbc, 0x22, 0xd0, 0xe3, + 0x90, 0x84, 0x77, 0x4a, 0x94, 0xaa, 0x8e, 0xeb, 0x5b, 0x87, 0xec, 0x4e, + 0x1a, 0x4e, 0xae, 0x1d, 0x39, 0x1c, 0xff, 0x6e, 0x9c, 0x0f, 0x90, 0x4d, + 0x56, 0x3b, 0xff, 0xac, 0xe5, 0xbb, 0x22, 0xb2, 0x2c, 0xfd, 0x76, 0xf4, + 0x42, 0x5c, 0x5b, 0x9b, 0x7f, 0x58, 0xc0, 0x53, 0xcd, 0x17, 0xa2, 0x61, + 0xec, 0x83, 0x2d, 0xe8, 0x69, 0x42, 0x5e, 0x5f, 0xc1, 0x30, 0x85, 0xa0, + 0x2b, 0x7e, 0xb3, 0xe6, 0x14, 0x6d, 0x93, 0xb6, 0xda, 0xef, 0x4c, 0xaf, + 0x8a, 0x1f, 0x7b, 0x0f, 0x4a, 0xd3, 0x47, 0x89, 0x0f, 0x62, 0xe1, 0x70, + 0xcd, 0xa2, 0x1f, 0xa2, 0x8b, 0x5c, 0xd9, 0x2b, 0x26, 0xef, 0x5e, 0x68, + 0x11, 0x71, 0x89, 0x33, 0x17, 0x51, 0x41, 0x88, 0x60, 0x99, 0x48, 0x2d, + 0x39, 0x1b, 0xf2, 0x8a, 0xf0, 0x98, 0xf9, 0xe0, 0x49, 0xb3, 0xde, 0x10, + 0x30, 0xbd, 0x02, 0x55, 0xb2, 0x3f, 0xbb, 0xcd, 0x8a, 0x28, 0xd5, 0xb7, + 0x91, 0xc7, 0x27, 0xd6, 0x99, 0x0c, 0x32, 0x35, 0xba, 0x14, 0x3e, 0xd5, + 0x1c, 0xb0, 0x46, 0x39, 0x91, 0xd3, 0x05, 0x4f, 0xba, 0x63, 0xee, 0x3c, + 0x76, 0xe5, 0xcb, 0x54, 0xb7, 0x8c, 0x69, 0x81, 0x53, 0xa3, 0xb3, 0xa2, + 0xef, 0x3a, 0x35, 0x54, 0xaf, 0xbc, 0x5e, 0x1c, 0x2a, 0x0f, 0x94, 0x2b, + 0x69, 0x20, 0x1f, 0xa1, 0x0c, 0xa3, 0x82, 0x36, 0x80, 0xdb, 0x47, 0xa3, + 0x41, 0x7e, 0xd1, 0x9c, 0x5f, 0x80, 0x58, 0x72, 0xac, 0x8c, 0x7a, 0x64, + 0x13, 0xe6, 0x19, 0x9f, 0x15, 0xc2, 0x20, 0xf7, 0xe8, 0x3e, 0x4a, 0x4c, + 0x0e, 0x3a, 0x63, 0x11, 0x6c, 0xf7, 0x09, 0x76, 0xc3, 0x12, 0xfc, 0x88, + 0xd5, 0xc8, 0xd0, 0xbb, 0xfa, 0x0b, 0x46, 0xc2, 0xe3, 0x3b, 0x84, 0xf4, + 0x0f, 0xcc, 0x84, 0x59, 0x98, 0xc5, 0x93, 0xdd, 0xb7, 0x03, 0x46, 0xf9, + 0x09, 0xd3, 0x94, 0x8c, 0x23, 0xd3, 0x99, 0x42, 0xf1, 0xc3, 0xa8, 0x5b, + 0x0c, 0xb0, 0xbc, 0x23, 0xb8, 0xea, 0x84, 0xab, 0x41, 0x3f, 0x6e, 0xb2, + 0xc2, 0xa7, 0xbe, 0x5e, 0x43, 0x5c, 0x25, 0x0d, 0x1e, 0x2a, 0xae, 0xc5, + 0xbe, 0xc5, 0xdc, 0xd6, 0xc7, 0xfa, 0xe7, 0x04, 0x8d, 0xc8, 0xba, 0xca, + 0xbd, 0xd0, 0x09, 0x23, 0xd6, 0xee, 0x31, 0x75, 0x34, 0x92, 0x6d, 0x26, + 0x2c, 0x0c, 0x87, 0xa8, 0x5d, 0x0b, 0x6a, 0xe4, 0xec, 0x50, 0x77, 0xcd, + 0x92, 0x2a, 0xbb, 0x61, 0x09, 0x48, 0xe5, 0x6c, 0xb1, 0x99, 0xe8, 0x03, + 0xe2, 0x8f, 0xbb, 0x1a, 0xf9, 0x6a, 0x7d, 0xac, 0xba, 0xd2, 0x88, 0x41, + 0xd6, 0xd8, 0x79, 0x1d, 0x3d, 0xed, 0x66, 0xf1, 0x0f, 0xd4, 0x27, 0x61, + 0xbf, 0xc3, 0x31, 0x4e, 0xdc, 0x86, 0x67, 0x6e, 0x90, 0xab, 0x34, 0x2f, + 0xf6, 0xcd, 0xdf, 0xb8, 0x25, 0xb2, 0x01, 0xc3, 0xa0, 0xd7, 0x90, 0xa6, + 0x90, 0xde, 0xcd, 0x97, 0xf8, 0xa7, 0xb8, 0x24, 0x96, 0x31, 0x19, 0x2c, + 0xf1, 0xde, 0x6a, 0x0b, 0x19, 0x1d, 0xbb, 0xce, 0xef, 0x4b, 0x72, 0x5a, + 0xde, 0x50, 0x02, 0x61, 0x0f, 0x5e, 0xa4, 0x47, 0x6c, 0x4b, 0x2c, 0xd2, + 0x4d, 0xf4, 0xe7, 0x67, 0xb9, 0xff, 0x52, 0x5d, 0x9f, 0x9f, 0x96, 0xb7, + 0x17, 0x5e, 0xb8, 0x91, 0x58, 0x1a, 0xd5, 0xf6, 0x6d, 0x67, 0x9d, 0x74, + 0xfb, 0x55, 0xbb, 0xf9, 0xaf, 0x3c, 0xec, 0x9e, 0x0d, 0x72, 0xfd, 0x00, + 0x24, 0xc3, 0x41, 0x57, 0x34, 0x04, 0x8d, 0x82, 0xbb, 0x82, 0xc0, 0x24, + 0x41, 0x1f, 0xf8, 0x20, 0xf9, 0x65, 0x0a, 0x2b, 0xad, 0x50, 0xae, 0xa6, + 0x23, 0x6a, 0x5d, 0xdf, 0x6a, 0x37, 0x2b, 0x42, 0x46, 0x63, 0x9b, 0xee, + 0xd9, 0x30, 0xf3, 0x5d, 0x69, 0xb8, 0x9c, 0x0f, 0x46, 0x82, 0x44, 0xb0, + 0x05, 0xec, 0x3d, 0x25, 0xb2, 0x41, 0xe7, 0xb4, 0x4c, 0x10, 0xa5, 0x96, + 0x17, 0xec, 0x3d, 0x40, 0x39, 0xc4, 0x64, 0x10, 0x71, 0x7a, 0x78, 0xc6, + 0x5a, 0x5d, 0x31, 0xcc, 0x1f, 0x8a, 0x25, 0xe2, 0x06, 0x5e, 0x3f, 0xa1, + 0x98, 0xb5, 0xee, 0x9a, 0x3e, 0x4b, 0xa9, 0x10, 0xd9, 0xd6, 0x32, 0x61, + 0xf5, 0x63, 0xfc, 0x03, 0x2d, 0xbf, 0xad, 0x3f, 0x47, 0xa4, 0x01, 0xb6, + 0x5f, 0x4d, 0xdc, 0x76, 0xfb, 0x9e, 0x52, 0x18, 0x42, 0xd1, 0xe7, 0x12, + 0x7b, 0xc7, 0xf8, 0x23, 0xb7, 0x7c, 0xba, 0x48, 0xb1, 0x8b, 0x0c, 0x89, + 0x98, 0xa5, 0x42, 0xe8, 0xc6, 0xbc, 0x58, 0xa6, 0x20, 0x04, 0xe7, 0xbe, + 0xf3, 0x48, 0x63, 0xa3, 0x6e, 0xac, 0xfa, 0xdd, 0x57, 0xf5, 0x4c, 0xcc, + 0x6b, 0xa5, 0xc7, 0x23, 0xb3, 0x18, 0x00, 0x49, 0x61, 0x1b, 0x6f, 0x3e, + 0x41, 0x47, 0x35, 0x41, 0xc1, 0x6a, 0x7d, 0xc1, 0x8b, 0x4d, 0x3f, 0xeb, + 0x4d, 0x0f, 0xc1, 0x46, 0xbc, 0xa5, 0x49, 0x22, 0xc4, 0x43, 0x08, 0xf2, + 0xc6, 0x51, 0x66, 0x03, 0x92, 0x24, 0xc0, 0xfb, 0x4d, 0x16, 0x96, 0x93, + 0xd6, 0xbf, 0xd4, 0x81, 0xa9, 0x33, 0x5e, 0x5f, 0x94, 0xb5, 0x70, 0x2a, + 0xd9, 0x13, 0x6b, 0xa0, 0xdb, 0xec, 0x54, 0x65, 0x4a, 0x56, 0x17, 0xef, + 0x54, 0x43, 0x1b, 0xb2, 0x1a, 0x06, 0x7c, 0x71, 0x04, 0x59, 0x66, 0x28, + 0x95, 0xa1, 0xa5, 0x7e, 0x31, 0xe4, 0xb2, 0xe1, 0x3b, 0x18, 0xc4, 0xdb, + 0x48, 0x33, 0x70, 0xed, 0xe8, 0xcf, 0x09, 0x9b, 0x0d, 0xf0, 0xd7, 0x17, + 0x6b, 0x9f, 0x4a, 0x23, 0xad, 0x92, 0x83, 0x59, 0x91, 0xdd, 0x5f, 0xc6, + 0x38, 0xb9, 0x99, 0xba, 0xee, 0x13, 0x2b, 0xb8, 0x91, 0x1c, 0x49, 0x30, + 0x9b, 0xab, 0xcb, 0x3f, 0xa4, 0x43, 0x03, 0x89, 0x8f, 0x86, 0x04, 0xbe, + 0x34, 0x3e, 0xbe, 0xda, 0x6f, 0x49, 0x8e, 0x2c, 0x08, 0x20, 0xe3, 0xb1, + 0x6d, 0xbd, 0xec, 0x3f, 0xf9, 0xd5, 0x1a, 0xde, 0x05, 0xfe, 0x71, 0x74, + 0xe5, 0x35, 0x4b, 0xc4, 0x4f, 0x19, 0x68, 0x24, 0x5f, 0x88, 0xbe, 0x7c, + 0xd7, 0xa8, 0x97, 0x3e, 0x6f, 0xa1, 0xab, 0xc7, 0x36, 0x9b, 0xfc, 0x42, + 0x8e, 0x20, 0x70, 0x22, 0x0c, 0x77, 0x6e, 0xaf, 0xae, 0x34, 0x85, 0x27, + 0xca, 0xa3, 0x7d, 0xcd, 0xe5, 0x90, 0x11, 0x10, 0x8e, 0x5b, 0x59, 0x48, + 0x8c, 0x9d, 0xa4, 0x7f, 0x4a, 0x0d, 0xa8, 0x00, 0xb2, 0x6a, 0xe6, 0x03, + 0xc6, 0xcf, 0x10, 0xa3, 0xdb, 0x0d, 0x61, 0xfd, 0x34, 0x4c, 0xf0, 0xe0, + 0x63, 0xed, 0x15, 0xd6, 0x56, 0x3c, 0xa7, 0x75, 0xd6, 0x45, 0x31, 0xd0, + 0x71, 0x92, 0x50, 0x8e, 0xab, 0x6a, 0x1c, 0x42, 0xf6, 0xbf, 0x16, 0x56, + 0x95, 0x71, 0xee, 0x87, 0x75, 0x4e, 0x89, 0xe4, 0x0d, 0xc0, 0xc2, 0x8e, + 0x7e, 0x90, 0xe9, 0x3b, 0x62, 0x48, 0xfa, 0x0a, 0x02, 0x64, 0xc8, 0xbd, + 0xa7, 0x6d, 0xe8, 0x8a, 0xf8, 0x68, 0xeb, 0xce, 0x66, 0x0f, 0x39, 0x02, + 0xa9, 0x92, 0x9f, 0xba, 0x38, 0x1e, 0x68, 0xbd, 0x3c, 0x33, 0x9f, 0x2a, + 0x44, 0x5c, 0xf2, 0xe3, 0xd7, 0x2b, 0x1e, 0x81, 0x94, 0xba, 0x38, 0xd8, + 0x47, 0x24, 0x8b, 0x7e, 0x37, 0x33, 0xc1, 0xba, 0xf4, 0x4d, 0x09, 0x99, + 0x60, 0x07, 0xf3, 0x71, 0x19, 0x84, 0x53, 0xe5, 0x89, 0x73, 0x8e, 0xed, + 0xe0, 0xef, 0x3b, 0x1e, 0x3a, 0x00, 0xf9, 0x46, 0x91, 0x40, 0xff, 0x94, + 0x49, 0x4b, 0xd6, 0x23, 0xff, 0x5b, 0x7f, 0xdf, 0xdc, 0x99, 0xbe, 0xae, + 0x5d, 0x0a, 0x0d, 0x4f, 0xcf, 0x3c, 0x8e, 0x44, 0x65, 0x8b, 0x20, 0xd8, + 0xc9, 0x3f, 0xa7, 0xa7, 0xd1, 0xd7, 0x36, 0xf7, 0xb4, 0x7c, 0xfc, 0x62, + 0xfc, 0x80, 0x33, 0x36, 0x9b, 0xba, 0x74, 0x95, 0x11, 0xed, 0xcb, 0x2b, + 0x9d, 0x90, 0x6b, 0x44, 0x17, 0xbd, 0x43, 0xbf, 0x54, 0x0a, 0x8e, 0x25, + 0xaa, 0xe5, 0x6c, 0xd5, 0xb7, 0xe1, 0x2d, 0x86, 0xe4, 0xed, 0xf6, 0xec, + 0xd1, 0xe8, 0x16, 0x1d, 0xda, 0x27, 0x5d, 0xca, 0xa9, 0xcd, 0x74, 0xb5, + 0xbb, 0x2e, 0x5c, 0x65, 0x6d, 0xee, 0xb1, 0x69, 0xd8, 0x9b, 0x63, 0x56, + 0xdc, 0x55, 0xb6, 0xe9, 0xa0, 0x38, 0x79, 0x86, 0x50, 0xc2, 0x55, 0xf3, + 0x3a, 0x77, 0xd4, 0xda, 0x59, 0x93, 0xc7, 0xc6, 0x4c, 0x04, 0x56, 0x0a, + 0x64, 0xae, 0xab, 0x54, 0xaa, 0x26, 0x5d, 0xcb, 0x90, 0x4b, 0x5c, 0xa4, + 0x76, 0xeb, 0x0c, 0x81, 0x69, 0xb1, 0xf7, 0x3f, 0xba, 0xf2, 0xf3, 0x20, + 0x55, 0xdd, 0xe8, 0xd4, 0x32, 0xf4, 0x43, 0x86, 0x47, 0x27, 0x3c, 0xab, + 0xde, 0x0b, 0x49, 0xd2, 0xc0, 0x53, 0x01, 0xe2, 0x87, 0x38, 0x1f, 0x6d, + 0x47, 0x37, 0x5c, 0x46, 0x15, 0xfe, 0x25, 0x82, 0x9f, 0xf6, 0x6b, 0x84, + 0x90, 0x1f, 0x86, 0x0d, 0xaf, 0x9c, 0x23, 0x02, 0x11, 0xcb, 0x62, 0x87, + 0xdf, 0x1d, 0xae, 0x45, 0xdf, 0x6a, 0xd4, 0x34, 0x74, 0x0c, 0x08, 0x46, + 0x7b, 0x79, 0x26, 0x44, 0x33, 0xbd, 0xaf, 0x3f, 0x45, 0xd0, 0x8a, 0x1e, + 0x8f, 0xf6, 0xa8, 0xa6, 0xd0, 0xcb, 0x08, 0x78, 0x2a, 0xdc, 0xf4, 0xd2, + 0x48, 0xaa, 0x53, 0xde, 0x2c, 0x13, 0x24, 0x4c, 0x2a, 0x14, 0x73, 0x92, + 0x66, 0xbc, 0x3e, 0x18, 0x38, 0xe1, 0x42, 0x0e, 0x2e, 0x4d, 0x94, 0x19, + 0xed, 0x22, 0xb5, 0xd3, 0x84, 0xab, 0xb4, 0xbe, 0x9d, 0xf4, 0x18, 0xd6, + 0xb2, 0x9d, 0x4b, 0xe9, 0xa3, 0x66, 0xc4, 0x87, 0x75, 0x1c, 0x06, 0x16, + 0xba, 0x5d, 0x5b, 0x2c, 0x77, 0x3c, 0x62, 0xe0, 0x3b, 0x73, 0xd5, 0x25, + 0xb9, 0x5b, 0x2e, 0xca, 0xd2, 0xc7, 0x05, 0x4c, 0xf5, 0x0e, 0xbe, 0x97, + 0x1c, 0xf5, 0xdb, 0x5b, 0xbe, 0x8a, 0xa5, 0xaf, 0xb3, 0xe0, 0x71, 0x16, + 0x09, 0xf6, 0x4e, 0x33, 0xe0, 0x05, 0x32, 0x1f, 0x3e, 0xa3, 0xe7, 0x35, + 0xf8, 0xf7, 0xbf, 0xbc, 0x43, 0xc9, 0xf9, 0xfd, 0x8d, 0xd8, 0x54, 0x9f, + 0x94, 0x4a, 0x68, 0x9e, 0x54, 0x70, 0x12, 0x76, 0xfa, 0x91, 0xbf, 0x31, + 0xe8, 0xdc, 0x5c, 0xe4, 0x9f, 0xe6, 0xb7, 0x97, 0x34, 0x2c, 0x7f, 0xbd, + 0x5f, 0x1d, 0xbd, 0x67, 0xd2, 0xe2, 0x3c, 0x06, 0x7b, 0xd1, 0x70, 0x29, + 0x36, 0x93, 0x4e, 0x9e, 0xc1, 0xa2, 0xfb, 0xad, 0xde, 0xaa, 0x6c, 0xb6, + 0x2b, 0xf8, 0x0e, 0xff, 0xad, 0x51, 0x4a, 0xc7, 0x64, 0x30, 0x75, 0x63, + 0xd2, 0x86, 0x07, 0xc0, 0x70, 0xef, 0xcd, 0xa0, 0x3b, 0x41, 0x11, 0xaa, + 0x59, 0xb4, 0x45, 0x4f, 0xdb, 0xf9, 0xf3, 0xb6, 0x0c, 0x78, 0x94, 0x14, + 0x32, 0x81, 0x71, 0xf0, 0xd5, 0x52, 0x14, 0x99, 0xd5, 0x30, 0x5c, 0xea, + 0xa2, 0x97, 0x28, 0x73, 0xe8, 0xa5, 0x24, 0xf7, 0x51, 0x0a, 0x23, 0x2d, + 0x5f, 0x5a, 0x59, 0x84, 0x66, 0x83, 0x38, 0x7a, 0x41, 0x3d, 0x47, 0x2a, + 0xa0, 0x45, 0x1f, 0x1f, 0xc8, 0x5a, 0x1b, 0xd7, 0x18, 0x30, 0x18, 0xb5, + 0x2c, 0xaa, 0x57, 0xc0, 0x14, 0x0d, 0x2c, 0xc3, 0x99, 0xfc, 0x6b, 0xd2, + 0xf8, 0x34, 0x7e, 0xd5, 0xca, 0x3a, 0xfc, 0xc8, 0xa0, 0x90, 0x38, 0x1a, + 0x88, 0x69, 0x52, 0x90, 0x8c, 0x4a, 0xfb, 0xf1, 0xd3, 0xe1, 0x8e, 0x03, + 0x22, 0x48, 0x34, 0x30, 0xe5, 0x29, 0x3e, 0xb1, 0xea, 0x54, 0x08, 0x4f, + 0xcd, 0x76, 0x93, 0xdb, 0xf3, 0xe2, 0x92, 0xb4, 0x47, 0xb5, 0x24, 0xf6, + 0xd5, 0x9a, 0xea, 0xcb, 0xd6, 0x9e, 0xfe, 0xf4, 0x41, 0x4f, 0x79, 0x93, + 0x3c, 0xa9, 0xd2, 0x40, 0x1f, 0xc9, 0x43, 0x6c, 0x21, 0x53, 0x2c, 0x69, + 0x70, 0x6f, 0x3a, 0x8c, 0x85, 0xe3, 0xb3, 0x12, 0x28, 0xf0, 0x27, 0x28, + 0xc6, 0x65, 0x8d, 0xe2, 0x5c, 0x26, 0x46, 0x4c, 0xfa, 0x46, 0x14, 0xf2, + 0xe1, 0x68, 0x1d, 0x99, 0xe5, 0xfc, 0xe5, 0x6a, 0xce, 0x32, 0xce, 0x37, + 0x1d, 0x17, 0xb5, 0x7b, 0x38, 0x32, 0xb3, 0x6e, 0x42, 0xcd, 0x4a, 0x16, + 0x1e, 0x54, 0x94, 0x56, 0x8b, 0xf6, 0xeb, 0x60, 0x31, 0x7e, 0xd7, 0xdc, + 0xcc, 0x96, 0xf5, 0x51, 0x1e, 0x19, 0xdc, 0x7d, 0x06, 0xa6, 0xf4, 0x59, + 0xda, 0xa1, 0xa2, 0xb2, 0x7f, 0x83, 0xf8, 0x7a, 0x73, 0xef, 0x8f, 0x51, + 0xac, 0xf5, 0xdf, 0xf1, 0xe6, 0x81, 0x94, 0xad, 0x40, 0x3c, 0xc0, 0x08, + 0x80, 0xe8, 0x35, 0x98, 0x4c, 0x5f, 0x4b, 0x06, 0x92, 0xa0, 0x6c, 0xd4, + 0x1f, 0xfa, 0xbc, 0xe0, 0x3e, 0xd7, 0xe0, 0xa5, 0x74, 0xf3, 0x44, 0xd9, + 0xa7, 0xc6, 0x8a, 0xea, 0x6a, 0x79, 0xe5, 0x77, 0x13, 0x38, 0x15, 0xf0, + 0x82, 0x5c, 0x58, 0x22, 0x3e, 0x40, 0x64, 0x4d, 0x16, 0xa8, 0x67, 0x65, + 0x17, 0x97, 0x85, 0x88, 0xe7, 0x3c, 0x65, 0x21, 0x23, 0xb8, 0xe9, 0xb4, + 0x1a, 0x43, 0x6a, 0xc7, 0xa0, 0x9b, 0x8b, 0xce, 0xb2, 0x8d, 0x42, 0x32, + 0x56, 0x17, 0xcd, 0x84, 0x90, 0x95, 0x1f, 0xab, 0x5c, 0xf0, 0x1f, 0xc4, + 0x93, 0x09, 0x4a, 0xa4, 0xad, 0xb1, 0x83, 0xa2, 0x02, 0xc1, 0xe1, 0x21, + 0xaa, 0x00, 0x2f, 0xc5, 0x9d, 0x15, 0xb8, 0xa8, 0xbe, 0x92, 0x7f, 0x0d, + 0x2f, 0xc7, 0xb4, 0x32, 0xf9, 0x87, 0xec, 0x7f, 0x1f, 0x3e, 0xcd, 0x32, + 0x66, 0xc5, 0xbc, 0x8b, 0x0b, 0x7a, 0x30, 0x0d, 0x99, 0xde, 0x02, 0x82, + 0xe7, 0x89, 0x80, 0x55, 0xc6, 0x51, 0xdb, 0xd3, 0xb6, 0xa9, 0xc2, 0xc0, + 0xc5, 0x10, 0x44, 0x2c, 0xde, 0x27, 0x08, 0x95, 0x68, 0x61, 0x43, 0x79, + 0x5d, 0x9a, 0xb1, 0x67, 0x4a, 0x2f, 0x0b, 0x4e, 0x84, 0xa4, 0x4c, 0x6d, + 0xe0, 0x7b, 0xed, 0x07, 0xd5, 0xe9, 0xd7, 0x51, 0xb0, 0x75, 0xbc, 0xe4, + 0x0f, 0xf4, 0xeb, 0x76, 0x9f, 0xf4, 0x05, 0x0d, 0x0b, 0x9a, 0x9a, 0xa4, + 0xbb, 0x4f, 0xa7, 0x16, 0x79, 0x6c, 0xb9, 0xa8, 0x12, 0xd5, 0x85, 0x2f, + 0x73, 0x17, 0x55, 0xb5, 0x8b, 0xc5, 0xf8, 0xa5, 0x4e, 0x58, 0x1c, 0x55, + 0xd4, 0x37, 0xc6, 0x0b, 0x52, 0x8c, 0x6c, 0x43, 0xc2, 0xb6, 0x25, 0x76, + 0x78, 0x37, 0xc4, 0xdb, 0xeb, 0xf7, 0xaa, 0x13, 0xfc, 0x47, 0x10, 0x13, + 0x18, 0xdf, 0x80, 0x10, 0x15, 0xa7, 0x52, 0xdd, 0x55, 0x1c, 0xb0, 0xa0, + 0xca, 0x75, 0x0f, 0x34, 0x13, 0x0b, 0xae, 0x28, 0x09, 0xb7, 0xa9, 0x3d, + 0xd2, 0xf1, 0x59, 0x98, 0xed, 0x71, 0xfa, 0xfa, 0xbb, 0x28, 0x16, 0xa9, + 0x95, 0xfb, 0xc8, 0xfe, 0x2c, 0xb0, 0x4f, 0x86, 0x8c, 0x1d, 0x9d, 0xde, + 0xe5, 0x3e, 0x1b, 0xb0, 0x3d, 0x43, 0x4a, 0x31, 0xa1, 0x0e, 0xc6, 0xac, + 0xa9, 0x5f, 0x60, 0x5b, 0xfa, 0xa5, 0x2a, 0x95, 0x54, 0x3c, 0x50, 0x7f, + 0x9c, 0x9f, 0x5c, 0xfa, 0xb0, 0x5c, 0x57, 0xe9, 0x13, 0x6b, 0x47, 0xb2, + 0xda, 0x72, 0x9b, 0xbc, 0x66, 0x3c, 0x9b, 0x5a, 0x75, 0x9a, 0x1e, 0x23, + 0xac, 0xbd, 0x47, 0x00, 0x8f, 0x8f, 0xe8, 0xbf, 0xa9, 0xbf, 0x82, 0x99, + 0x23, 0x8e, 0x5f, 0x43, 0xda, 0x06, 0x7e, 0xfc, 0xf4, 0x52, 0x81, 0x5e, + 0xea, 0xab, 0x16, 0xee, 0x69, 0x73, 0xfc, 0xeb, 0xfe, 0x8d, 0xeb, 0xf8, + 0xcc, 0x80, 0xa2, 0x09, 0xb9, 0x6e, 0x24, 0x8a, 0xea, 0x23, 0x7c, 0xdf, + 0xbe, 0xc8, 0x4d, 0x03, 0x81, 0x1c, 0x48, 0xcd, 0x47, 0x7e, 0xf8, 0x23, + 0xf1, 0xd4, 0x5f, 0xce, 0x5b, 0xfc, 0x09, 0xe8, 0xe0, 0xc9, 0x4d, 0x80, + 0x35, 0xe1, 0x6c, 0x3e, 0x9a, 0xe0, 0x92, 0xa8, 0x65, 0xa8, 0x5e, 0x76, + 0x51, 0x4b, 0x56, 0xa5, 0x99, 0x60, 0x50, 0xcb, 0x04, 0xcf, 0xaa, 0xad, + 0x79, 0x82, 0x23, 0x1a, 0x38, 0x9b, 0x8f, 0x52, 0xdb, 0x4d, 0x82, 0xa6, + 0xaf, 0xcf, 0xde, 0x3f, 0x7f, 0xca, 0x2c, 0xba, 0x56, 0x2d, 0x7c, 0x2c, + 0x5d, 0x09, 0xc3, 0xcd, 0x74, 0xc6, 0x79, 0xeb, 0x1e, 0x33, 0x4b, 0x25, + 0x5c, 0x5c, 0xc4, 0x8e, 0xa4, 0x36, 0x0a, 0xf7, 0xb8, 0x3c, 0x42, 0x83, + 0xab, 0x7d, 0xc3, 0x07, 0xa6, 0x93, 0x06, 0x1d, 0x85, 0xb3, 0xf5, 0x0a, + 0x65, 0x7d, 0x14, 0xeb, 0x4f, 0x4d, 0xe1, 0xb7, 0x65, 0xeb, 0x15, 0x9d, + 0xf8, 0x36, 0x81, 0x60, 0x2c, 0x5f, 0x88, 0xb6, 0x97, 0xb6, 0xd1, 0xf1, + 0xa5, 0x98, 0x51, 0x29, 0x19, 0xae, 0x20, 0xba, 0x6e, 0xc4, 0x61, 0x6b, + 0x5e, 0x03, 0x39, 0x22, 0x43, 0xd0, 0x74, 0xc6, 0x2a, 0xdb, 0x4f, 0x47, + 0x92, 0xf4, 0x1d, 0x2d, 0x19, 0x79, 0xc4, 0x43, 0x74, 0xc4, 0xd0, 0xbe, + 0x6d, 0x8a, 0x8e, 0xa2, 0xcc, 0x77, 0x81, 0x5f, 0x9f, 0x8a, 0x35, 0xfe, + 0x6e, 0x57, 0xfb, 0x5e, 0x37, 0x25, 0x7d, 0xd9, 0x48, 0x98, 0xed, 0x5e, + 0xb3, 0x9a, 0x48, 0x7e, 0x67, 0x33, 0xa4, 0xc3, 0x97, 0x5e, 0x01, 0x87, + 0xea, 0xd8, 0x33, 0xe7, 0x0c, 0xc2, 0x11, 0x88, 0x54, 0xf8, 0x5b, 0xbb, + 0x04, 0xe2, 0x6a, 0xa9, 0x35, 0xf8, 0x3e, 0x3f, 0x70, 0xa7, 0xe3, 0xdd, + 0xd5, 0x56, 0x98, 0x09, 0x3e, 0xfb, 0xef, 0xbf, 0x40, 0x9c, 0xa9, 0x60, + 0xab, 0x41, 0xfd, 0xb9, 0xfd, 0x6b, 0x21, 0x75, 0xa6, 0x35, 0xd9, 0x90, + 0xc6, 0xe8, 0xbf, 0xc3, 0x8f, 0xdf, 0xed, 0x34, 0xa9, 0xc3, 0x3e, 0x82, + 0xbc, 0xcd, 0x24, 0xf5, 0x12, 0x65, 0xa8, 0xf3, 0xec, 0x6b, 0x29, 0xa4, + 0xbb, 0xd7, 0x6c, 0xe0, 0xb4, 0xd0, 0x32, 0x31, 0xdb, 0x9b, 0x63, 0xc7, + 0xdd, 0xd6, 0x35, 0x64, 0x11, 0xe0, 0xe3, 0x19, 0xc7, 0x67, 0x0f, 0xea, + 0x98, 0x53, 0xf3, 0x95, 0x3d, 0x92, 0xfc, 0x86, 0xd4, 0xd5, 0x30, 0x7e, + 0x33, 0x73, 0x61, 0xcb, 0x4c, 0x52, 0x24, 0x7a, 0xb2, 0xf5, 0x96, 0x72, + 0x6f, 0x56, 0xf0, 0xcf, 0xca, 0x8d, 0xaf, 0xe0, 0xbf, 0x62, 0xbb, 0x4c, + 0x81, 0x06, 0xc3, 0xef, 0x0a, 0x48, 0x19, 0x72, 0x5d, 0x87, 0x92, 0xe6, + 0x0c, 0x61, 0xf5, 0xbc, 0x41, 0xbe, 0x88, 0x34, 0x44, 0x5d, 0xbb, 0x57, + 0x3f, 0x7a, 0x9b, 0x19, 0xa2, 0x74, 0x3d, 0x83, 0x81, 0xef, 0xe0, 0x30, + 0xdb, 0xbd, 0xf6, 0x8e, 0xab, 0x34, 0x68, 0x34, 0x7b, 0x50, 0x77, 0x65, + 0xfe, 0xcf, 0x42, 0x00, 0x2f, 0x53, 0x79, 0x30, 0x30, 0xf4, 0xf0, 0x55, + 0x09, 0xeb, 0xc4, 0x44, 0x03, 0x69, 0x32, 0x20, 0x7a, 0x82, 0x21, 0x62, + 0x09, 0x0a, 0x17, 0xc2, 0x2c, 0x2d, 0x59, 0x59, 0x0f, 0x22, 0x93, 0xe9, + 0x47, 0x5c, 0x31, 0xf3, 0xde, 0xcf, 0x0a, 0xc8, 0x7e, 0x72, 0xe6, 0xea, + 0x23, 0x1c, 0xe1, 0x7f, 0x54, 0xc0, 0x92, 0x69, 0x27, 0x8b, 0x6c, 0xa4, + 0xd5, 0x55, 0xb9, 0xbe, 0x9c, 0xe1, 0x39, 0x5b, 0xa5, 0xb8, 0xf1, 0x89, + 0x24, 0xbe, 0xea, 0xa7, 0xf3, 0xea, 0xb9, 0xef, 0x3c, 0xbb, 0x08, 0x49, + 0x53, 0x6b, 0x38, 0xd9, 0x95, 0xcf, 0x5e, 0x07, 0xaf, 0xf9, 0x5b, 0x86, + 0x68, 0x38, 0x46, 0x77, 0x25, 0x6f, 0xac, 0x2f, 0xf2, 0x52, 0x6e, 0x72, + 0x19, 0x8b, 0x58, 0xf8, 0x9c, 0xde, 0x86, 0x86, 0x93, 0x0f, 0x0a, 0x15, + 0x93, 0x24, 0x82, 0xfd, 0xdb, 0x39, 0x5b, 0xc1, 0x7b, 0x32, 0xb7, 0xfa, + 0x22, 0x1f, 0xf0, 0xa7, 0xd0, 0x48, 0xa6, 0xc0, 0x8d, 0x1c, 0xa8, 0xdb, + 0x57, 0x0a, 0x05, 0x67, 0x06, 0x70, 0x8e, 0x03, 0x65, 0xf6, 0xd9, 0x1f, + 0xc1, 0x4f, 0x01, 0xa5, 0xa9, 0x1a, 0xf9, 0x7b, 0x97, 0x27, 0x9c, 0x81, + 0xaf, 0xbb, 0xbe, 0xf4, 0x99, 0x6e, 0xf0, 0xd1, 0x2d, 0x01, 0xfb, 0x83, + 0x03, 0x27, 0x02, 0xe9, 0xcb, 0x65, 0x43, 0x5c, 0x8d, 0x55, 0x3c, 0xc9, + 0x3c, 0xc9, 0xfe, 0x17, 0xd8, 0xea, 0x7d, 0xd7, 0xa5, 0xc8, 0xe7, 0xd5, + 0xc4, 0x9f, 0x51, 0xe9, 0xf4, 0x7b, 0x62, 0x25, 0xc6, 0xf4, 0xf5, 0x06, + 0x3f, 0x42, 0xf1, 0x85, 0xf2, 0x7b, 0xf4, 0x7c, 0xc4, 0x51, 0x8e, 0xe6, + 0x88, 0x49, 0xbf, 0xf7, 0x84, 0x2b, 0xbd, 0x27, 0xaa, 0x69, 0xb6, 0xbc, + 0x86, 0x05, 0x3a, 0xe6, 0x07, 0xe7, 0xa8, 0x00, 0xb5, 0x66, 0x40, 0x4e, + 0x3d, 0x3f, 0xa8, 0x8b, 0xe9, 0xfa, 0x82, 0x0c, 0x1b, 0x35, 0xea, 0x0c, + 0x4e, 0x3f, 0xa9, 0xa0, 0x73, 0xd5, 0x96, 0x2b, 0x32, 0xdf, 0x1d, 0x30, + 0x1d, 0x1b, 0xca, 0x7c, 0xc1, 0xd9, 0xe3, 0x46, 0x17, 0xa0, 0xa2, 0x49, + 0x01, 0x42, 0x86, 0x9f, 0x75, 0x30, 0xfa, 0x6d, 0x7a, 0x86, 0x89, 0x32, + 0x85, 0xfd, 0xf3, 0x90, 0x6a, 0x3e, 0x84, 0x8d, 0x8c, 0x42, 0xfd, 0xb5, + 0x4c, 0xf4, 0x37, 0xae, 0x50, 0x95, 0xba, 0x4b, 0x98, 0x31, 0x3e, 0x79, + 0xfa, 0x64, 0x21, 0xe5, 0x75, 0xa3, 0x49, 0x8c, 0x73, 0x49, 0x68, 0x92, + 0xcc, 0x19, 0x9d, 0x08, 0xf9, 0x62, 0xde, 0x42, 0xb8, 0x20, 0x47, 0xec, + 0x4f, 0xf3, 0x92, 0xa1, 0x89, 0xf1, 0x4a, 0x95, 0xa7, 0x69, 0xdc, 0xe0, + 0x4a, 0xb3, 0x0e, 0x85, 0x75, 0x02, 0x9c, 0x79, 0xd0, 0x24, 0xc3, 0x18, + 0x66, 0xe0, 0x63, 0x91, 0x7a, 0x0b, 0xc6, 0x3b, 0x31, 0x5c, 0x1e, 0x47, + 0x0a, 0x71, 0x2b, 0xa2, 0x21, 0x4d, 0x69, 0x2c, 0x72, 0xd0, 0xcc, 0x66, + 0xf0, 0xd0, 0x45, 0x9d, 0x04, 0xf2, 0x6c, 0x42, 0x99, 0xd5, 0x1e, 0xb8, + 0x6d, 0x9b, 0xbd, 0x27, 0xf2, 0xcf, 0xda, 0xdb, 0x1a, 0x16, 0x8f, 0xf3, + 0x8a, 0x5f, 0xb6, 0x81, 0xc1, 0xe9, 0xbd, 0x90, 0x71, 0xe9, 0x53, 0xd2, + 0x1f, 0xaa, 0x53, 0xce, 0xf0, 0x80, 0x70, 0x92, 0x6c, 0x72, 0x14, 0xb1, + 0x9b, 0x75, 0x90, 0x5a, 0x15, 0x41, 0xa8, 0xbe, 0x26, 0x29, 0xd1, 0xa8, + 0x96, 0x21, 0xda, 0x73, 0xb1, 0x4e, 0xbc, 0x96, 0x36, 0x19, 0x78, 0x87, + 0x2a, 0x76, 0x09, 0x37, 0x11, 0x6b, 0x59, 0xeb, 0x9b, 0x3f, 0xe3, 0x8e, + 0x13, 0xbd, 0x71, 0x0e, 0x78, 0xc3, 0xb5, 0xc4, 0xac, 0x7e, 0x17, 0x18, + 0x8a, 0x49, 0xad, 0xf8, 0x53, 0xe0, 0x1c, 0xd4, 0x82, 0xe0, 0x66, 0x18, + 0x1e, 0xfa, 0x12, 0x88, 0xce, 0x72, 0x2a, 0xae, 0xfc, 0x18, 0x2c, 0xd2, + 0xe0, 0xf1, 0x6b, 0x47, 0x0f, 0x92, 0xe9, 0x61, 0x59, 0x13, 0x31, 0x51, + 0xb8, 0xdf, 0x08, 0x74, 0xef, 0xa5, 0xbe, 0x7b, 0x81, 0xd4, 0x95, 0x90, + 0x33, 0x59, 0x56, 0x68, 0x9f, 0x50, 0x17, 0x92, 0x38, 0xb5, 0x16, 0x6c, + 0x31, 0x3f, 0xb2, 0xe9, 0x3a, 0x62, 0x0e, 0x63, 0xfe, 0x2b, 0xff, 0x75, + 0xc6, 0x11, 0x6e, 0xae, 0xab, 0xfc, 0xdc, 0x95, 0xaa, 0x87, 0x09, 0x0a, + 0x23, 0xb9, 0x6f, 0xc3, 0x19, 0xb1, 0xcb, 0xc0, 0x4e, 0x6e, 0x6d, 0xc6, + 0x6e, 0xf8, 0x70, 0x99, 0x5a, 0x8f, 0x40, 0x54, 0x5d, 0xe9, 0x3c, 0xb6, + 0x0c, 0xb0, 0x66, 0xf0, 0xc7, 0xdd, 0xd3, 0xe0, 0xd5, 0x11, 0xc1, 0x4b, + 0x0c, 0x99, 0x8c, 0x77, 0xbb, 0xf1, 0xe0, 0x21, 0xf6, 0xe9, 0x03, 0x4b, + 0x4f, 0x78, 0xc2, 0x6d, 0xf1, 0x7b, 0x38, 0x81, 0x32, 0xe7, 0x02, 0x4b, + 0xbd, 0xdd, 0x32, 0x33, 0x19, 0x04, 0x02, 0x57, 0xed, 0x75, 0xe1, 0x18, + 0x6e, 0x0f, 0x2b, 0x9c, 0xc3, 0xa9, 0x29, 0x03, 0x04, 0x1a, 0xd0, 0xe5, + 0x04, 0xdd, 0x7f, 0x45, 0x73, 0x08, 0x9f, 0x84, 0x6e, 0xe1, 0x55, 0xea, + 0xf9, 0xcc, 0xa6, 0x87, 0x62, 0xef, 0x32, 0x29, 0xaa, 0x28, 0x7f, 0xe5, + 0x5a, 0xbe, 0x2f, 0x00, 0x74, 0xa3, 0x11, 0xf6, 0x8b, 0xf6, 0xfa, 0x93, + 0x7e, 0xcf, 0x99, 0x60, 0xb6, 0x9c, 0xa6, 0x58, 0x26, 0x6e, 0x4c, 0x23, + 0x3c, 0x17, 0x35, 0x4f, 0x52, 0xbc, 0x84, 0x8e, 0xa8, 0x57, 0x92, 0x89, + 0xb8, 0xa2, 0xb4, 0x6f, 0xc4, 0x43, 0x0f, 0x54, 0x29, 0x47, 0x73, 0x79, + 0x0a, 0x0a, 0x4f, 0xa5, 0x26, 0x72, 0x1b, 0x0f, 0x92, 0x08, 0xe1, 0xf5, + 0xde, 0x20, 0xee, 0xbb, 0x85, 0xed, 0xcc, 0xd7, 0x85, 0xc1, 0x90, 0xaa, + 0xaf, 0xb7, 0x30, 0x3b, 0x13, 0x38, 0x34, 0x1a, 0xdc, 0x6f, 0x97, 0x61, + 0x3e, 0xd1, 0xb5, 0x93, 0xda, 0x6c, 0x9e, 0xbb, 0xb0, 0x02, 0xbc, 0x12, + 0xc3, 0xdf, 0x71, 0xb6, 0x61, 0x8d, 0x78, 0x94, 0xc6, 0x5a, 0x0e, 0xf1, + 0x17, 0x70, 0x3e, 0x9c, 0x95, 0xcb, 0x06, 0x24, 0xb5, 0xb1, 0x38, 0x6c, + 0xb8, 0x8d, 0xd3, 0x8c, 0x30, 0x3b, 0x56, 0x65, 0x4a, 0xe2, 0x43, 0x5b, + 0xcc, 0x9d, 0xeb, 0xca, 0x3a, 0x6d, 0x3d, 0xd8, 0x10, 0x20, 0xf0, 0x01, + 0x15, 0x32, 0xf9, 0x43, 0x61, 0x4a, 0xe6, 0x35, 0xc7, 0x77, 0x32, 0x7d, + 0xcd, 0x04, 0x77, 0x12, 0x19, 0xbc, 0x2f, 0xa7, 0xed, 0xbd, 0xbd, 0xdf, + 0xb1, 0xcf, 0x19, 0xb8, 0xce, 0x12, 0x0a, 0x25, 0x0f, 0xf7, 0xad, 0x84, + 0xb1, 0x41, 0xba, 0x1e, 0xf2, 0xb7, 0x85, 0x02, 0xd1, 0x74, 0x56, 0x32, + 0xb4, 0xf2, 0x60, 0xe5, 0x4b, 0x1b, 0xf6, 0x6a, 0xb2, 0x50, 0x16, 0x83, + 0xa4, 0x94, 0xc8, 0x9d, 0x1e, 0x5f, 0x38, 0xed, 0xa9, 0xd5, 0x81, 0x46, + 0xf2, 0x90, 0x22, 0xe8, 0xcc, 0x1f, 0x24, 0x77, 0x4d, 0xbd, 0x75, 0xa4, + 0xc1, 0x1b, 0x52, 0x97, 0xd2, 0xf6, 0x4c, 0xa9, 0x81, 0x33, 0x4d, 0xaf, + 0xb5, 0xf8, 0x2f, 0x24, 0xf2, 0xb6, 0x36, 0xc8, 0x28, 0x57, 0xc4, 0xe5, + 0x99, 0x69, 0x96, 0xac, 0xab, 0x87, 0xd3, 0x3e, 0xea, 0xf5, 0x02, 0xb7, + 0x6a, 0x6a, 0x58, 0x1f, 0x58, 0x1b, 0x26, 0xae, 0xaf, 0x6e, 0x24, 0xaf, + 0xa9, 0xc7, 0xfe, 0x29, 0x75, 0xe4, 0x8e, 0x5d, 0x89, 0xef, 0x05, 0x15, + 0xea, 0xc4, 0x26, 0x9d, 0xc8, 0x55, 0x69, 0x21, 0xa4, 0xac, 0xcf, 0x21, + 0x15, 0x0d, 0x4b, 0x9e, 0xd7, 0xde, 0x17, 0xcd, 0xc0, 0x36, 0xc2, 0xeb, + 0x2b, 0x2e, 0xc0, 0x31, 0x03, 0x18, 0x44, 0x79, 0x50, 0x3d, 0x66, 0x18, + 0x21, 0x14, 0xbf, 0x2c, 0x4c, 0xf7, 0xe9, 0x6f, 0xb1, 0xe3, 0x48, 0xfd, + 0xfd, 0x99, 0x72, 0xd8, 0xe5, 0xa7, 0x9e, 0xca, 0xf0, 0x89, 0x69, 0x9d, + 0xac, 0x84, 0x5c, 0xc8, 0xe4, 0x5d, 0x04, 0x48, 0xd3, 0xb4, 0x2c, 0xa8, + 0xf5, 0x19, 0x8c, 0x22, 0x2b, 0x27, 0x7d, 0x9b, 0x70, 0x42, 0x9c, 0x3f, + 0x64, 0x34, 0x91, 0x20, 0x5b, 0xb0, 0x4e, 0xd9, 0x7e, 0xaf, 0xf6, 0x6b, + 0x2b, 0xdb, 0x6a, 0x50, 0xb8, 0xd9, 0xf4, 0x5c, 0x2d, 0xac, 0xec, 0x0b, + 0xaa, 0xd5, 0x36, 0x7c, 0x2b, 0x24, 0xdc, 0x48, 0xe6, 0x92, 0x2c, 0x36, + 0x63, 0xb1, 0x40, 0xad, 0x3e, 0xbe, 0x29, 0x4f, 0x74, 0x93, 0xfd, 0x76, + 0x7c, 0xa2, 0xa4, 0x04, 0x05, 0x17, 0xe7, 0xb5, 0x29, 0x8a, 0xe8, 0x6a, + 0x7f, 0xb2, 0x5e, 0x24, 0xd5, 0x11, 0xf3, 0x83, 0x38, 0x70, 0x9a, 0x12, + 0x73, 0x88, 0x51, 0xf1, 0x25, 0x68, 0xd5, 0xe9, 0x06, 0x8c, 0x26, 0x99, + 0x59, 0xd9, 0x60, 0x92, 0xce, 0x32, 0x8f, 0x75, 0xa4, 0x86, 0xf1, 0xea, + 0xb3, 0xee, 0xf5, 0x50, 0x86, 0x7a, 0x6a, 0xa9, 0xfd, 0x3a, 0x70, 0x35, + 0xf5, 0x00, 0x0a, 0x31, 0xaf, 0xd3, 0x64, 0x21, 0x40, 0xa4, 0xe3, 0x28, + 0x3a, 0xec, 0x33, 0x70, 0x0f, 0xc3, 0xcd, 0x99, 0x3f, 0xd3, 0xb4, 0xd6, + 0xc9, 0x2f, 0x17, 0x05, 0xaf, 0xd2, 0xe7, 0xe5, 0xf5, 0x4d, 0x03, 0x84, + 0x0d, 0x8a, 0x3d, 0x76, 0x59, 0x0b, 0x10, 0xc4, 0x53, 0x46, 0x8b, 0x82, + 0x10, 0x57, 0x48, 0x28, 0x21, 0x23, 0x8b, 0x9b, 0xcf, 0x29, 0xb7, 0x51, + 0xaa, 0xaa, 0xa2, 0x26, 0x1b, 0x61, 0xd2, 0x48, 0xcc, 0x7f, 0xc7, 0x5c, + 0xa8, 0xba, 0x8f, 0x6c, 0x79, 0x63, 0x2e, 0xe3, 0x04, 0xe3, 0xb2, 0xb2, + 0x52, 0xe5, 0xb9, 0xe0, 0xa9, 0xd9, 0xbb, 0xc1, 0x83, 0xf0, 0xbf, 0x11, + 0x1e, 0x69, 0x59, 0xfd, 0x0f, 0x94, 0x4c, 0x85, 0x44, 0xef, 0xbd, 0x65, + 0xbc, 0xb8, 0xb7, 0x0e, 0xb0, 0x48, 0xc8, 0x36, 0x24, 0xd5, 0xe8, 0x75, + 0x99, 0xa0, 0x4e, 0x7b, 0x82, 0x90, 0x54, 0x11, 0x9c, 0xbf, 0x48, 0x9e, + 0xf3, 0xd7, 0x66, 0x8e, 0x22, 0xbb, 0x05, 0x49, 0xc1, 0xb3, 0x51, 0xa4, + 0xe1, 0x10, 0x3f, 0x57, 0x2a, 0x27, 0x08, 0x0f, 0x86, 0xf6, 0xd1, 0x3b, + 0x49, 0x58, 0xf4, 0xbd, 0xd1, 0xc7, 0xf1, 0xe2, 0xed, 0xf7, 0x33, 0x63, + 0x61, 0x6e, 0xe2, 0xb5, 0x73, 0x96, 0xcd, 0xbb, 0xaf, 0x5d, 0xf1, 0x31, + 0xe8, 0xd3, 0x25, 0xcd, 0x35, 0xba, 0xbd, 0x7e, 0x1d, 0x14, 0x10, 0x3a, + 0x29, 0x87, 0xe1, 0xdd, 0x53, 0x80, 0x42, 0xf8, 0xff, 0x12, 0xdb, 0x4c, + 0x8a, 0xdd, 0x5f, 0xcb, 0x7c, 0xe7, 0xa8, 0xa9, 0xad, 0x1c, 0x33, 0xfe, + 0x0f, 0x17, 0x57, 0x2b, 0xdd, 0x2f, 0xc1, 0x3c, 0xf4, 0x02, 0x05, 0x2b, + 0x27, 0x82, 0xd7, 0x34, 0x72, 0x2f, 0x25, 0x18, 0xe8, 0x3e, 0x3b, 0x38, + 0x43, 0x7b, 0xb4, 0xb7, 0x81, 0xf8, 0x16, 0x92, 0x16, 0x93, 0x6c, 0x78, + 0xe7, 0xbb, 0x60, 0x87, 0xf7, 0x49, 0x47, 0x40, 0xbb, 0x52, 0x7d, 0x13, + 0xab, 0x27, 0x4b, 0x7a, 0x07, 0x92, 0x02, 0x83, 0xd2, 0xaa, 0x34, 0x3b, + 0xe8, 0x5d, 0xc8, 0xb4, 0xcc, 0xa2, 0xea, 0xa3, 0x78, 0x75, 0x76, 0x32, + 0x36, 0xc6, 0x36, 0x85, 0x89, 0x8c, 0x6e, 0x6c, 0xcd, 0xf4, 0x43, 0x32, + 0xf6, 0x21, 0x03, 0x7d, 0x42, 0x08, 0xd1, 0x11, 0xb8, 0x14, 0x08, 0x29, + 0x1c, 0x14, 0x00, 0x67, 0xe6, 0x2c, 0x21, 0xc9, 0xc6, 0x2a, 0xb5, 0x6f, + 0xc5, 0x7c, 0xa8, 0x00, 0x81, 0xa4, 0x86, 0x53, 0xed, 0x66, 0x5d, 0x7e, + 0x21, 0xd4, 0x68, 0x11, 0xec, 0x59, 0xc5, 0x3d, 0x5c, 0x5f, 0x28, 0xff, + 0xd0, 0xe2, 0xd6, 0x52, 0x1e, 0x43, 0xd2, 0x8e, 0x00 +}; +static const guint profile_0_frame0_len = 8085; + +/* superframe, consists of two frames. + * decoding only frame is followed by normal frame + * first frame size: 5796 + * the last frame size: 369 */ +static const guint8 profile_0_frame1[] = { + 0x84, 0x00, 0x80, 0x49, 0x72, 0x70, 0x9e, 0xc0, 0x00, 0x5c, 0x7f, 0x93, + 0x59, 0x50, 0x2b, 0xf4, 0xe0, 0x5f, 0x1d, 0xdd, 0xec, 0xcc, 0x24, 0x77, + 0xbd, 0x77, 0x68, 0x93, 0x7a, 0xf9, 0x77, 0xbc, 0x02, 0x97, 0x24, 0x5c, + 0x07, 0x33, 0xae, 0xbe, 0x87, 0xf3, 0xa0, 0xbf, 0x8f, 0xf5, 0x79, 0x1f, + 0xf0, 0x6a, 0xe9, 0x90, 0x5d, 0x33, 0x00, 0x00, 0x7f, 0x2d, 0x32, 0xce, + 0xf8, 0x93, 0x00, 0x6e, 0xaf, 0x72, 0xcf, 0x0b, 0x37, 0xdf, 0x4e, 0xa0, + 0x20, 0x60, 0xf7, 0xce, 0xd8, 0x2a, 0x54, 0x5b, 0xb6, 0xcd, 0x44, 0xa8, + 0x37, 0xea, 0x08, 0x46, 0x4f, 0x36, 0xd6, 0x6c, 0xe2, 0x0f, 0x4a, 0x2d, + 0xff, 0x84, 0xc5, 0x82, 0x3b, 0x58, 0x1a, 0x37, 0xb9, 0x92, 0x85, 0x92, + 0x08, 0x3e, 0x8b, 0x56, 0x7e, 0x89, 0x83, 0xf6, 0x5f, 0x8d, 0x37, 0x9f, + 0x65, 0x89, 0x6d, 0x3a, 0x9b, 0x50, 0x81, 0xcd, 0xc8, 0xb2, 0xc2, 0xe9, + 0x9f, 0x4e, 0x70, 0xb9, 0xe2, 0x48, 0xcd, 0x0e, 0x4c, 0xfd, 0xcc, 0xc6, + 0x58, 0x3a, 0x02, 0x61, 0x6c, 0x16, 0xf9, 0xe6, 0x64, 0x51, 0x61, 0x49, + 0x51, 0x5d, 0xbe, 0xcb, 0x27, 0xc1, 0xdb, 0xec, 0x09, 0x8a, 0x67, 0x6c, + 0x9a, 0xe3, 0x1b, 0x0d, 0x14, 0xb9, 0x2a, 0x5a, 0x55, 0xf5, 0x9d, 0xa3, + 0x4a, 0x9b, 0x76, 0x72, 0x43, 0x2d, 0x0a, 0x7a, 0xfd, 0x5f, 0x26, 0x6d, + 0x80, 0x04, 0x03, 0x7a, 0x45, 0x89, 0xda, 0xd1, 0x1e, 0x0e, 0x86, 0xa4, + 0x45, 0x5e, 0x6d, 0xe9, 0xd3, 0xf4, 0xd0, 0x12, 0x67, 0xcb, 0xd2, 0xa3, + 0xe7, 0x35, 0x08, 0xc8, 0x84, 0xbb, 0xc5, 0xc8, 0xe5, 0xb0, 0x02, 0x71, + 0xa2, 0xff, 0xaa, 0x02, 0xef, 0x11, 0x6c, 0x39, 0xa8, 0x6b, 0x4b, 0x4c, + 0x1f, 0x5a, 0xd4, 0x7d, 0xa7, 0xda, 0x12, 0x00, 0xcc, 0x79, 0xd1, 0x70, + 0x97, 0x60, 0x20, 0x95, 0xfb, 0x25, 0x92, 0xb7, 0xf4, 0x8f, 0xab, 0x09, + 0x2d, 0x01, 0x16, 0x8e, 0x48, 0xc1, 0xe7, 0x01, 0xc1, 0x96, 0xf3, 0xf9, + 0xea, 0xa9, 0x4f, 0x64, 0xb7, 0x56, 0x17, 0x48, 0x1c, 0xdd, 0x61, 0x99, + 0x42, 0xed, 0x51, 0xe3, 0xe3, 0x14, 0x96, 0x4a, 0x9a, 0x94, 0x59, 0x47, + 0xa4, 0x4b, 0xdc, 0xea, 0x35, 0x58, 0xa8, 0xea, 0x5e, 0x06, 0xbd, 0x91, + 0xbd, 0xa1, 0x8c, 0xb1, 0x27, 0xd0, 0x76, 0x30, 0x55, 0xfc, 0x79, 0x8a, + 0x39, 0xe0, 0x38, 0xeb, 0xd9, 0x4b, 0x6a, 0x6a, 0x28, 0xfa, 0xb9, 0xf7, + 0x85, 0x25, 0x65, 0xd7, 0xb3, 0x99, 0xbc, 0xfb, 0x4f, 0x90, 0xe5, 0x02, + 0x01, 0x6d, 0xcb, 0xbe, 0x0a, 0xc4, 0xa6, 0xb4, 0x05, 0x91, 0xdb, 0xaa, + 0xc7, 0xb9, 0x5f, 0xdc, 0x18, 0xc2, 0xc9, 0x2c, 0xca, 0xa4, 0xe9, 0x11, + 0x65, 0xad, 0xc5, 0x15, 0xc4, 0x4d, 0x3f, 0x3a, 0xc8, 0xfe, 0x03, 0x64, + 0x05, 0xbd, 0xf7, 0xd6, 0x76, 0xd0, 0xe0, 0xf0, 0x0b, 0x7b, 0xef, 0xdc, + 0x34, 0xab, 0xfa, 0xbf, 0xb0, 0xaf, 0xec, 0xfd, 0x54, 0x70, 0x4a, 0xe1, + 0x26, 0x1d, 0xac, 0x69, 0xa0, 0x66, 0x7c, 0x87, 0xed, 0xe6, 0xf7, 0x19, + 0xf3, 0xeb, 0xcf, 0x6c, 0xb7, 0x0d, 0x46, 0x09, 0x6c, 0xf6, 0x97, 0x16, + 0x38, 0x6f, 0x13, 0x3a, 0xde, 0xd4, 0x41, 0xec, 0x4c, 0x65, 0x24, 0xd5, + 0x63, 0xe7, 0x9f, 0x9d, 0xb5, 0x3e, 0xdb, 0xc2, 0xef, 0x58, 0xba, 0x2f, + 0x98, 0x8e, 0x48, 0x08, 0x0a, 0x0e, 0x7e, 0xbc, 0xa4, 0x9f, 0x5a, 0xd0, + 0x89, 0xba, 0x75, 0xa6, 0xc5, 0xe9, 0x24, 0x9d, 0x28, 0x6b, 0x5b, 0x06, + 0xd8, 0xf7, 0xfe, 0x9f, 0x38, 0x10, 0x31, 0x4f, 0x7e, 0x21, 0xd6, 0x81, + 0xf3, 0x13, 0x7a, 0x21, 0x90, 0xda, 0x52, 0x84, 0x53, 0x74, 0x00, 0x8b, + 0x85, 0xf2, 0x90, 0xbe, 0x4c, 0x88, 0x9c, 0x01, 0xd2, 0xd1, 0x1c, 0x6a, + 0xf4, 0x5a, 0xb6, 0x0f, 0x7f, 0x5d, 0x70, 0xff, 0x78, 0x9b, 0x5d, 0x4d, + 0xfe, 0xc7, 0x87, 0xdf, 0x96, 0x4d, 0x27, 0x04, 0x55, 0x56, 0x65, 0x13, + 0xb1, 0xc2, 0x30, 0xce, 0x02, 0x7f, 0x36, 0x9a, 0xa2, 0x06, 0x5d, 0x6a, + 0xf9, 0x4b, 0xb7, 0x3b, 0x61, 0xeb, 0x03, 0xd6, 0x05, 0xfd, 0xf7, 0x34, + 0xfe, 0xb7, 0x87, 0x43, 0xb8, 0xbf, 0xc0, 0xd1, 0xed, 0x48, 0x65, 0x2f, + 0x8e, 0xf7, 0x21, 0x3f, 0x5a, 0x84, 0x58, 0x1d, 0x8f, 0x0d, 0x4d, 0x0f, + 0x6a, 0x25, 0xec, 0x8a, 0xdf, 0xeb, 0x06, 0xd5, 0xba, 0xc5, 0xbb, 0xc7, + 0x0d, 0x1b, 0x4d, 0xf7, 0x3b, 0x88, 0x85, 0x81, 0x06, 0xc5, 0x61, 0x36, + 0x60, 0xfb, 0x9a, 0xdf, 0xef, 0xd4, 0x35, 0x9b, 0x37, 0xfb, 0xcd, 0x4a, + 0x55, 0xed, 0xaf, 0xf2, 0xa9, 0x7b, 0x1f, 0x27, 0xfa, 0x4e, 0x02, 0x28, + 0x24, 0xc8, 0xcf, 0xac, 0x23, 0x12, 0x46, 0x84, 0xb5, 0xad, 0x0a, 0x7a, + 0x44, 0x8c, 0xbc, 0xc7, 0x82, 0x5b, 0xc1, 0x2c, 0x5f, 0x02, 0x27, 0x8f, + 0xd1, 0xa0, 0x96, 0x6c, 0x7c, 0x20, 0x53, 0x8d, 0xaa, 0x75, 0x2e, 0xfa, + 0xbd, 0xd2, 0xc2, 0x30, 0xdb, 0xe4, 0x70, 0x4c, 0x40, 0x1e, 0xdd, 0xd7, + 0xf0, 0x41, 0x31, 0x3e, 0x12, 0xd2, 0xd5, 0x6a, 0x6e, 0xfc, 0xec, 0xde, + 0xb6, 0x5c, 0xd3, 0x43, 0x7e, 0x50, 0xab, 0xb5, 0x80, 0x39, 0x65, 0xcd, + 0x38, 0x98, 0x64, 0x4e, 0x03, 0x79, 0x52, 0x73, 0x7e, 0x80, 0xe7, 0x14, + 0xf7, 0xc6, 0xa9, 0xda, 0x68, 0x5e, 0x7c, 0x26, 0x56, 0xf6, 0x67, 0x6b, + 0xb4, 0xaa, 0x8b, 0x76, 0xbe, 0xa1, 0x29, 0xc7, 0x85, 0xcc, 0x28, 0x56, + 0x47, 0x6e, 0x81, 0x2b, 0xc4, 0xf0, 0x66, 0xa2, 0x3b, 0xd5, 0xe4, 0x9d, + 0x85, 0xfe, 0xfd, 0x21, 0xb6, 0x86, 0x29, 0xe7, 0xf6, 0x01, 0xc2, 0x97, + 0x24, 0x3c, 0x9b, 0xc7, 0x8b, 0x9f, 0x4b, 0x0a, 0x94, 0xf3, 0x63, 0x62, + 0xf0, 0x73, 0xf8, 0xbe, 0xb1, 0xee, 0x2f, 0xed, 0xa7, 0xa8, 0xfd, 0x24, + 0x09, 0x14, 0x2a, 0x12, 0xe2, 0xbd, 0x13, 0x33, 0x15, 0xa0, 0xca, 0x17, + 0x36, 0x22, 0xc2, 0x64, 0x98, 0xf0, 0x44, 0xb4, 0x5e, 0x9d, 0x28, 0xdf, + 0xca, 0xb3, 0x7a, 0x92, 0x4c, 0x37, 0x6e, 0xea, 0x62, 0x00, 0xf1, 0x7a, + 0xc6, 0xe3, 0xbc, 0x46, 0x79, 0xad, 0xc8, 0xce, 0x94, 0x67, 0x40, 0x2f, + 0x6b, 0x2e, 0x57, 0x84, 0xca, 0xca, 0x16, 0x54, 0xbb, 0xc8, 0xf7, 0x78, + 0x31, 0x6f, 0x10, 0x59, 0x8b, 0x7b, 0xf6, 0x15, 0x7d, 0x11, 0x21, 0x24, + 0x86, 0xdb, 0x32, 0x95, 0x12, 0x6f, 0x96, 0x95, 0xd7, 0x76, 0xcd, 0xef, + 0x1e, 0xec, 0x4f, 0x01, 0x5e, 0x89, 0xf1, 0xbb, 0x08, 0x8a, 0xa2, 0xe9, + 0xeb, 0x77, 0x3a, 0x1c, 0x9e, 0x38, 0x16, 0x7a, 0x64, 0xc2, 0x24, 0xa5, + 0x78, 0x62, 0xa7, 0x35, 0x6e, 0x53, 0x9d, 0xa0, 0x82, 0xca, 0x54, 0xd7, + 0x63, 0xcf, 0xe7, 0x3a, 0xb9, 0x0b, 0x7d, 0x5a, 0xe5, 0xdb, 0x57, 0x39, + 0x4d, 0xb4, 0xf3, 0x1d, 0xc8, 0x00, 0xa0, 0x85, 0x47, 0xf1, 0xb7, 0xf2, + 0x53, 0xdb, 0x91, 0x42, 0xfb, 0xed, 0x87, 0x0f, 0x9b, 0xb2, 0x35, 0xe7, + 0x8f, 0x9a, 0x55, 0xd8, 0x34, 0x74, 0x71, 0x15, 0x6b, 0xb9, 0x08, 0x3e, + 0x09, 0xd6, 0x3f, 0xc0, 0x27, 0x91, 0xd7, 0xf9, 0xfa, 0x99, 0xa4, 0xd5, + 0xb3, 0xe4, 0x18, 0xbf, 0x3b, 0x4a, 0xfb, 0xbd, 0xc4, 0xcf, 0x9f, 0x01, + 0xa5, 0xd4, 0x6a, 0x1e, 0x7e, 0x0c, 0x0e, 0x09, 0x7e, 0x16, 0xb2, 0x84, + 0x32, 0xd3, 0x66, 0x71, 0x46, 0x4e, 0x4b, 0xe0, 0xc6, 0xb6, 0x80, 0x0b, + 0x55, 0xf1, 0x46, 0x89, 0x75, 0x98, 0x5f, 0xef, 0x1b, 0x26, 0xb5, 0xa2, + 0x92, 0xdd, 0x31, 0xd5, 0x15, 0xdb, 0xf8, 0x86, 0xb3, 0x78, 0x13, 0x9b, + 0x0a, 0xe7, 0x79, 0xa8, 0x42, 0xa4, 0x63, 0xdf, 0xde, 0x16, 0x6c, 0x43, + 0xe7, 0xe5, 0x35, 0x8d, 0x05, 0x22, 0xe0, 0xb4, 0xdd, 0x2f, 0x87, 0xe4, + 0xe0, 0xb1, 0x9d, 0x3a, 0x08, 0x31, 0x16, 0xf2, 0x2b, 0x43, 0x50, 0xd8, + 0x9c, 0x0c, 0x59, 0x84, 0x03, 0x00, 0xd1, 0x68, 0xfb, 0x22, 0xee, 0xcb, + 0x60, 0x7c, 0x0c, 0xf9, 0x22, 0xd1, 0x3e, 0xb4, 0xf5, 0xc9, 0xa9, 0x43, + 0x9c, 0x36, 0x9d, 0x13, 0x65, 0x62, 0x08, 0x90, 0x7e, 0x23, 0x9c, 0xc8, + 0x19, 0x93, 0xb9, 0x26, 0x2d, 0x3a, 0x7b, 0x9b, 0x1c, 0x9d, 0x39, 0x2e, + 0xa3, 0x79, 0x4b, 0x78, 0x49, 0x3e, 0xf3, 0xb2, 0xc7, 0xa9, 0xa4, 0x08, + 0x5f, 0xd2, 0x54, 0xda, 0xcd, 0xf5, 0x2d, 0x8f, 0x97, 0xa1, 0x22, 0xd7, + 0x0c, 0x6c, 0xde, 0x9b, 0x75, 0x37, 0xb1, 0xdf, 0x51, 0x4c, 0xc9, 0xa0, + 0xe6, 0x42, 0x53, 0xca, 0x74, 0x77, 0x67, 0xa4, 0xc8, 0xa4, 0x5b, 0x24, + 0x5f, 0xa2, 0x46, 0x4b, 0x8f, 0x2b, 0x71, 0x5a, 0xcb, 0x0d, 0xa8, 0xca, + 0xbd, 0xdb, 0x9a, 0x89, 0x9c, 0xd2, 0xbd, 0xd4, 0x0a, 0xc0, 0xba, 0x49, + 0x84, 0xd6, 0xa5, 0xd4, 0x5b, 0x27, 0x91, 0x6e, 0xab, 0x1c, 0x66, 0x29, + 0x63, 0xbc, 0x78, 0x75, 0x00, 0xf4, 0x66, 0x3b, 0x7e, 0xd2, 0xb6, 0x2b, + 0xfc, 0x2e, 0xf4, 0x1d, 0x76, 0x45, 0x20, 0x20, 0x00, 0x4c, 0x3d, 0x10, + 0xc0, 0x7d, 0x98, 0x0d, 0xc0, 0xc1, 0xf3, 0x40, 0x48, 0x98, 0x6b, 0xd5, + 0x7a, 0x76, 0x3b, 0xeb, 0x5b, 0x0a, 0x29, 0xd2, 0x4a, 0x53, 0x57, 0x9d, + 0x5c, 0xa6, 0xe7, 0xd3, 0xe9, 0x21, 0x7c, 0x23, 0xbb, 0x45, 0x79, 0xe4, + 0xfb, 0x1e, 0xb2, 0x85, 0x90, 0x5d, 0xa0, 0xfe, 0xc5, 0xbb, 0x2a, 0x49, + 0x23, 0x00, 0x81, 0xf2, 0x68, 0x68, 0xed, 0x5d, 0x9a, 0xd3, 0x77, 0x1e, + 0xcf, 0xa2, 0x07, 0xa2, 0xcf, 0x71, 0x28, 0xb3, 0xa3, 0x41, 0xfa, 0xd2, + 0x68, 0xa2, 0xa0, 0x1c, 0x7c, 0x8a, 0x16, 0x7d, 0x34, 0x88, 0x29, 0xe5, + 0x7a, 0x0e, 0x24, 0xba, 0x79, 0x3c, 0x93, 0x3a, 0xf7, 0x49, 0xb8, 0x54, + 0x0c, 0xb7, 0x8f, 0x50, 0x96, 0x9c, 0x70, 0x40, 0xfe, 0x91, 0x17, 0x08, + 0xec, 0x5b, 0x2a, 0xa9, 0x32, 0x85, 0xe8, 0x88, 0xf7, 0x4a, 0x48, 0x45, + 0x0d, 0x33, 0xd4, 0xe9, 0xb3, 0xac, 0x52, 0xdc, 0xb8, 0xe6, 0x34, 0xab, + 0xf0, 0xa9, 0xd3, 0x00, 0x81, 0x39, 0x73, 0x9d, 0x46, 0x59, 0x12, 0xa1, + 0x18, 0x26, 0xb0, 0xa6, 0x38, 0xb8, 0x74, 0xf8, 0x27, 0xb9, 0xa8, 0xc0, + 0x0f, 0x71, 0x5d, 0xce, 0x57, 0x53, 0xb4, 0x93, 0x15, 0x17, 0x28, 0x2c, + 0x44, 0xea, 0xdd, 0x67, 0x52, 0x8c, 0x68, 0x03, 0x80, 0x1d, 0x6e, 0x60, + 0x40, 0x80, 0xeb, 0x99, 0x18, 0xe1, 0xe9, 0x1f, 0x81, 0xcc, 0x6c, 0x17, + 0x2d, 0xf3, 0xea, 0x93, 0x3b, 0xbd, 0x22, 0x45, 0xd4, 0x4b, 0xe1, 0xb0, + 0x0d, 0x29, 0x59, 0x2f, 0xe3, 0x1a, 0x8f, 0xa1, 0x45, 0x51, 0x63, 0x8f, + 0x11, 0x7a, 0x61, 0x4b, 0x33, 0xcd, 0xbd, 0xbc, 0x25, 0xe3, 0xd3, 0xc0, + 0x8d, 0xfa, 0x23, 0x40, 0x3d, 0xef, 0x9c, 0x42, 0x7e, 0xff, 0x6c, 0x3c, + 0x3c, 0x3d, 0x75, 0xba, 0xe2, 0xd6, 0x19, 0xee, 0x20, 0x67, 0x2f, 0xbe, + 0x0c, 0x23, 0x37, 0x01, 0x42, 0x33, 0xe2, 0xb0, 0xa5, 0x4e, 0x9e, 0xbe, + 0x2c, 0xa0, 0xc7, 0x59, 0x20, 0xfb, 0xbe, 0x3c, 0xed, 0x1f, 0xc1, 0xb0, + 0x72, 0x9e, 0x40, 0xb2, 0xa7, 0xac, 0x4e, 0x5c, 0x7b, 0x8a, 0x13, 0x90, + 0xcc, 0x6a, 0xbe, 0x34, 0x75, 0x2e, 0xeb, 0x4f, 0x13, 0x6c, 0x7c, 0xc6, + 0x48, 0x7e, 0xaf, 0x4b, 0x19, 0xcf, 0x19, 0x38, 0xe1, 0x6a, 0x49, 0x00, + 0x53, 0xfc, 0x82, 0x2b, 0x75, 0x28, 0x72, 0x56, 0x85, 0x85, 0x17, 0x53, + 0x50, 0x2c, 0x3b, 0x06, 0x35, 0xf9, 0x8f, 0xc8, 0xf9, 0xa7, 0x4d, 0x0c, + 0x14, 0x62, 0x61, 0xbd, 0xc8, 0x0e, 0x55, 0x17, 0x65, 0x5a, 0xd9, 0x6c, + 0x24, 0x0c, 0x42, 0x42, 0x50, 0x18, 0x9c, 0xfa, 0xc7, 0xf8, 0xd8, 0x47, + 0x2d, 0x41, 0x91, 0x4f, 0x9c, 0x78, 0xed, 0xd6, 0x36, 0xb4, 0xe7, 0x70, + 0xb0, 0x3d, 0x2c, 0xc5, 0x65, 0x45, 0x00, 0xa1, 0x7a, 0x9b, 0xdc, 0xa3, + 0xd8, 0x2d, 0x47, 0x5b, 0xc0, 0x4d, 0x0f, 0x3f, 0xb4, 0xb3, 0xa8, 0xec, + 0xbd, 0xeb, 0x0b, 0x3d, 0x0d, 0xe9, 0x52, 0xd6, 0xe2, 0xc5, 0x9a, 0x96, + 0x6a, 0xdc, 0xed, 0xa6, 0x3a, 0x96, 0x33, 0x77, 0x6a, 0x83, 0x19, 0x98, + 0xfc, 0x92, 0x93, 0x44, 0x6e, 0xca, 0x76, 0x83, 0xfe, 0xd1, 0x5a, 0x02, + 0x0f, 0x92, 0x59, 0xbc, 0x9d, 0x2e, 0xe0, 0x3e, 0x5c, 0x7d, 0x6a, 0x0f, + 0x41, 0xfe, 0xdd, 0xb2, 0x11, 0x78, 0xf9, 0x5b, 0x13, 0x26, 0x65, 0xe6, + 0xc0, 0xd4, 0xc2, 0x25, 0x2d, 0x7a, 0xcb, 0xbb, 0xdb, 0x8c, 0x9f, 0xf4, + 0xd5, 0xfb, 0x57, 0xfc, 0xc7, 0xa0, 0x25, 0xbe, 0x14, 0x4a, 0xc3, 0xd6, + 0xbe, 0x7f, 0xa8, 0xc2, 0xa6, 0x02, 0x60, 0x14, 0x92, 0x70, 0xbe, 0xc2, + 0x96, 0x95, 0x0f, 0x1e, 0xf4, 0x2f, 0xf9, 0xe6, 0xeb, 0x0a, 0xcc, 0xa4, + 0xcf, 0x05, 0x18, 0x8d, 0x16, 0x30, 0x4c, 0x47, 0xe7, 0x05, 0x06, 0x92, + 0x42, 0x6d, 0x43, 0x60, 0xf5, 0xba, 0xff, 0xee, 0x86, 0xf3, 0xb3, 0xf9, + 0x8e, 0x07, 0xd7, 0x00, 0xa4, 0xc1, 0x38, 0x16, 0x6c, 0xbe, 0x70, 0x31, + 0x0c, 0x7c, 0xc2, 0x56, 0xe7, 0xc5, 0x5e, 0x80, 0x2b, 0xee, 0x14, 0xe5, + 0x19, 0xbd, 0xb3, 0x80, 0x4d, 0x80, 0x23, 0x11, 0x91, 0xb4, 0xd4, 0xdc, + 0x4c, 0xc3, 0xe3, 0x2a, 0x74, 0x85, 0xd9, 0xb0, 0xa1, 0x0f, 0x1c, 0x32, + 0x1f, 0xfc, 0x35, 0x9e, 0xdf, 0x49, 0xa8, 0x55, 0x78, 0x1a, 0x75, 0x95, + 0xab, 0x8a, 0x12, 0xaa, 0xf6, 0x0c, 0xec, 0xad, 0xb5, 0x3e, 0xf1, 0x07, + 0x01, 0x30, 0x8e, 0xc5, 0xdb, 0xbe, 0xd9, 0x2d, 0x37, 0xa4, 0x76, 0x49, + 0x79, 0xac, 0xda, 0xe7, 0xc8, 0x46, 0x89, 0x82, 0x8d, 0x42, 0x70, 0x88, + 0x4f, 0xfd, 0x65, 0x48, 0x62, 0x29, 0xae, 0x49, 0x0c, 0xbd, 0xa0, 0xe7, + 0x22, 0x06, 0xdd, 0x92, 0x18, 0xd7, 0xc0, 0x4d, 0x8a, 0x2f, 0x03, 0xcd, + 0xd4, 0x6e, 0xf9, 0x40, 0xfb, 0xb5, 0x08, 0x33, 0x63, 0xb6, 0xbc, 0x1f, + 0xd7, 0x31, 0x8c, 0x3b, 0x6c, 0x4e, 0x9c, 0x1e, 0x5a, 0x00, 0xb9, 0x57, + 0x9b, 0x25, 0xed, 0x74, 0x43, 0xf4, 0xaa, 0xa7, 0x15, 0x89, 0x36, 0x2e, + 0x63, 0x8c, 0x40, 0xfc, 0x7b, 0x03, 0xfc, 0x66, 0x7b, 0x88, 0x1a, 0xf6, + 0xf7, 0xf8, 0xa1, 0x3b, 0xa9, 0x99, 0x6b, 0x3f, 0xe3, 0xa8, 0xe1, 0x18, + 0x74, 0xa2, 0xa7, 0x28, 0xac, 0x27, 0x6f, 0xf3, 0x16, 0x43, 0xaa, 0x1c, + 0x2c, 0x08, 0xdb, 0xc6, 0x15, 0x02, 0xe6, 0x19, 0x6d, 0x8f, 0x7b, 0xfd, + 0x81, 0x58, 0xcc, 0xda, 0x69, 0xa1, 0x9d, 0x53, 0xcd, 0xd5, 0x53, 0xce, + 0x1b, 0x3c, 0x75, 0xc3, 0x14, 0xbf, 0x96, 0x79, 0x34, 0x8a, 0x08, 0xa2, + 0xe7, 0x69, 0x7a, 0xb5, 0x0f, 0x77, 0x5f, 0xe1, 0xb8, 0xd1, 0x51, 0xce, + 0x78, 0xb3, 0xa3, 0xc1, 0x8e, 0x08, 0x73, 0x6b, 0x2a, 0x74, 0xe1, 0xf1, + 0x22, 0x43, 0xf0, 0x60, 0xcc, 0x59, 0x48, 0x44, 0xd9, 0xee, 0xf8, 0x1a, + 0xb8, 0xc7, 0x26, 0x7a, 0x74, 0xf6, 0x9b, 0xfb, 0x15, 0x43, 0x6c, 0x9f, + 0x59, 0xfa, 0x53, 0xa3, 0x94, 0x7d, 0x8e, 0x42, 0xaa, 0xd8, 0x05, 0x0e, + 0xa5, 0xe3, 0xda, 0xd5, 0xed, 0x8b, 0x14, 0x81, 0x13, 0x05, 0xa5, 0x9d, + 0xdc, 0xb5, 0x8b, 0xdf, 0x66, 0xc5, 0xd4, 0xb1, 0x14, 0x20, 0xc7, 0xee, + 0x55, 0x91, 0xc8, 0xf4, 0x69, 0x2e, 0xe0, 0x43, 0x65, 0x2b, 0x34, 0xa9, + 0x55, 0x4d, 0x9d, 0x24, 0x91, 0x58, 0x8a, 0xe2, 0x4a, 0xc9, 0x00, 0x1c, + 0x31, 0x52, 0x58, 0x87, 0xf7, 0x64, 0x4b, 0xb5, 0x8d, 0xee, 0x78, 0xae, + 0x09, 0xe5, 0xa1, 0x44, 0x21, 0x4a, 0xe8, 0x30, 0xb3, 0x67, 0x78, 0x89, + 0x44, 0x5e, 0x15, 0x4f, 0xb5, 0xfc, 0xf7, 0x82, 0xef, 0xc5, 0xe3, 0xff, + 0x21, 0x69, 0xca, 0x45, 0x56, 0x5b, 0x2d, 0x8f, 0x63, 0x6a, 0xd2, 0x67, + 0x45, 0x65, 0xd0, 0xf0, 0x37, 0xfa, 0x6c, 0x3d, 0x56, 0xbd, 0xe5, 0x64, + 0xae, 0x96, 0xed, 0xa6, 0xbd, 0x6f, 0xf1, 0xa4, 0x5c, 0x0b, 0xfd, 0x2d, + 0x1b, 0x31, 0x82, 0x10, 0x0f, 0x1d, 0xae, 0x4d, 0xa9, 0xf3, 0xbf, 0xe9, + 0x68, 0x33, 0x1d, 0x64, 0x66, 0x34, 0xc8, 0x03, 0x8d, 0x7c, 0x80, 0x97, + 0x03, 0x80, 0x84, 0x02, 0xf5, 0x39, 0xc6, 0xea, 0xc5, 0x89, 0x57, 0x87, + 0x2d, 0x05, 0x59, 0xa7, 0x1d, 0xc6, 0x26, 0x76, 0xce, 0x96, 0xdb, 0x1b, + 0x23, 0x3c, 0x51, 0x9b, 0xab, 0x43, 0xab, 0x84, 0x88, 0x30, 0x41, 0xaf, + 0xad, 0xc4, 0x03, 0xc0, 0xe7, 0x57, 0x08, 0x0c, 0x93, 0x6b, 0x41, 0x44, + 0xcb, 0x72, 0xaf, 0x7b, 0xd0, 0x64, 0x90, 0x42, 0x13, 0x0f, 0x59, 0xd9, + 0xd7, 0xf3, 0xc2, 0xdb, 0xa3, 0xc1, 0xd2, 0x9d, 0x79, 0xcc, 0x4e, 0x31, + 0x84, 0x88, 0xa9, 0x42, 0x97, 0xab, 0xe7, 0xe8, 0x00, 0xeb, 0x5e, 0x8a, + 0x50, 0xe3, 0x05, 0xe8, 0x9b, 0xc8, 0xa5, 0xcf, 0xe6, 0xdf, 0x31, 0xff, + 0x9f, 0x5c, 0x16, 0xee, 0x3f, 0xc6, 0x4e, 0x3d, 0x7a, 0x1b, 0x5b, 0x48, + 0xb0, 0xf9, 0x29, 0xa2, 0xed, 0x64, 0x41, 0x28, 0xec, 0xbb, 0x2f, 0x7c, + 0xa9, 0xaa, 0x33, 0x78, 0xb2, 0x9a, 0x44, 0x91, 0x69, 0xfe, 0x4a, 0x6d, + 0xf2, 0xa4, 0xdc, 0xb8, 0x83, 0xee, 0xee, 0x31, 0x73, 0xe4, 0x3c, 0x4a, + 0xf3, 0xfa, 0xa6, 0xd2, 0x33, 0xa8, 0x03, 0x86, 0xe7, 0x9b, 0x9d, 0x8d, + 0xfd, 0x4f, 0x2a, 0xf7, 0x15, 0x26, 0x06, 0x1e, 0xcd, 0xa9, 0xd1, 0xa5, + 0x3d, 0x17, 0xf9, 0xdd, 0x6b, 0x05, 0x75, 0xf1, 0x56, 0xa7, 0x6b, 0xa0, + 0xc8, 0xc9, 0x3d, 0x21, 0x26, 0xa3, 0xf8, 0xb7, 0x74, 0xda, 0x78, 0x09, + 0xf1, 0x32, 0xf8, 0x2c, 0x3f, 0x47, 0x7d, 0xad, 0x8c, 0xc0, 0x97, 0x1d, + 0x82, 0x4c, 0x4a, 0x67, 0x81, 0x18, 0xe1, 0x87, 0x79, 0xa5, 0x13, 0x18, + 0xd2, 0x73, 0xc3, 0x6b, 0x03, 0xcc, 0x10, 0x83, 0x51, 0x14, 0x5b, 0x11, + 0x1f, 0xe2, 0x51, 0x4d, 0x81, 0x54, 0x1f, 0xee, 0xdd, 0xe8, 0x2d, 0xde, + 0xe6, 0x4d, 0x72, 0x18, 0x2c, 0xf4, 0x27, 0xe9, 0x08, 0x90, 0x9b, 0xed, + 0x03, 0xe4, 0x78, 0xac, 0xc7, 0x18, 0x91, 0x5d, 0x81, 0x69, 0x36, 0x7f, + 0xd7, 0xa6, 0x00, 0xbe, 0xf2, 0xb5, 0xef, 0xf7, 0x68, 0x17, 0xe6, 0x86, + 0x4a, 0x47, 0x32, 0xb1, 0xc5, 0x32, 0x21, 0x76, 0xe0, 0x43, 0x8d, 0xae, + 0xc6, 0x5f, 0xdc, 0xe5, 0x56, 0x9f, 0x99, 0x58, 0x54, 0xc0, 0xf3, 0x0d, + 0xea, 0xd6, 0x25, 0xfb, 0xbc, 0x4f, 0xc7, 0xdc, 0xc0, 0xf2, 0x0c, 0x57, + 0x80, 0x61, 0x9c, 0x0f, 0x24, 0xc0, 0x7e, 0x18, 0x51, 0xbd, 0x35, 0x33, + 0x33, 0x4b, 0x25, 0xf8, 0x45, 0x3d, 0x48, 0xcd, 0xd4, 0x45, 0x40, 0x33, + 0xb9, 0x0a, 0x6c, 0xfc, 0xd8, 0x43, 0xaf, 0x8c, 0x09, 0x0b, 0x5b, 0x14, + 0x39, 0xc3, 0xdb, 0x0e, 0x85, 0x77, 0x15, 0xf8, 0xed, 0x9b, 0x7e, 0xd6, + 0xb1, 0x03, 0x23, 0x6d, 0xab, 0xb6, 0xbd, 0xb3, 0x88, 0x03, 0xea, 0x44, + 0xd8, 0x61, 0x9e, 0xf3, 0x1a, 0xec, 0x2a, 0x94, 0xbb, 0xbe, 0xb9, 0x3b, + 0xd3, 0x85, 0x63, 0x83, 0xc6, 0x2c, 0x83, 0x4e, 0x85, 0xfe, 0x07, 0xc2, + 0x76, 0x38, 0x04, 0xbd, 0xdd, 0x65, 0x05, 0xab, 0x4c, 0x36, 0xc1, 0xc1, + 0x69, 0x8d, 0x10, 0xd5, 0xc0, 0xc6, 0x60, 0x2d, 0xf0, 0xbc, 0xfa, 0x0a, + 0x13, 0x14, 0xe7, 0x2c, 0xcb, 0x09, 0x49, 0x04, 0x1e, 0xe8, 0x81, 0x75, + 0x42, 0x54, 0xa0, 0x08, 0x92, 0x51, 0x06, 0x9f, 0xa7, 0x60, 0x85, 0x59, + 0xd9, 0x98, 0x1f, 0x70, 0xcf, 0x92, 0x9d, 0x3e, 0x41, 0xd9, 0xcc, 0x2c, + 0x78, 0x8e, 0x67, 0x4a, 0xce, 0x0d, 0x61, 0x80, 0xf7, 0xd4, 0x40, 0x43, + 0x60, 0xba, 0xae, 0xd2, 0x24, 0xe6, 0xc5, 0x51, 0x26, 0x06, 0x74, 0x35, + 0x72, 0xd9, 0x33, 0x34, 0x46, 0x2f, 0x7d, 0x08, 0x2f, 0x14, 0xaa, 0x37, + 0xc6, 0xda, 0x94, 0xcf, 0x34, 0x2f, 0x7c, 0xeb, 0x63, 0x3a, 0xcf, 0xc5, + 0xbe, 0xae, 0x55, 0x0c, 0xc2, 0xf1, 0x92, 0x2e, 0xf1, 0x61, 0x2f, 0x35, + 0xd0, 0x17, 0xbb, 0x5d, 0xc1, 0x54, 0x1b, 0x9c, 0xc0, 0x9f, 0x46, 0x12, + 0xb1, 0xb7, 0x34, 0x5a, 0x3b, 0xec, 0x57, 0x81, 0x24, 0x5b, 0xd1, 0xad, + 0xcd, 0x33, 0x7a, 0xb6, 0x94, 0x51, 0xac, 0xc1, 0x3c, 0x0f, 0xe4, 0x15, + 0x6f, 0xfd, 0x43, 0xa5, 0x09, 0xe5, 0x2c, 0xa4, 0xcd, 0xa4, 0x7d, 0x3a, + 0x10, 0x5e, 0x21, 0xcf, 0x23, 0x30, 0x61, 0xfb, 0x61, 0x0c, 0xe7, 0x91, + 0x0f, 0x79, 0x38, 0x60, 0xc1, 0x42, 0x41, 0xd8, 0x86, 0x1b, 0xd8, 0x12, + 0x39, 0xd0, 0xa7, 0x76, 0xfc, 0x51, 0x6e, 0xa5, 0x8a, 0xfa, 0xd4, 0xa6, + 0x4e, 0xae, 0xa0, 0x8b, 0x58, 0x07, 0xfb, 0x02, 0xa1, 0x2b, 0x20, 0xb9, + 0xe2, 0x16, 0x05, 0xae, 0x6e, 0xfc, 0x5d, 0xbe, 0xa8, 0x3f, 0x0f, 0x07, + 0xb3, 0x06, 0xbd, 0x24, 0x70, 0x76, 0x8b, 0xaf, 0xaf, 0xc3, 0xdc, 0x36, + 0xee, 0xbd, 0x83, 0xa4, 0x44, 0xbd, 0x78, 0x6f, 0x81, 0xab, 0x3d, 0x66, + 0x9a, 0xba, 0xae, 0x04, 0xdc, 0x35, 0x0a, 0xa8, 0x7c, 0x36, 0x63, 0x3d, + 0x16, 0xe1, 0x25, 0x8d, 0xb7, 0x4a, 0x99, 0xfa, 0xe9, 0x4f, 0x54, 0x7c, + 0xc0, 0x14, 0x05, 0xfc, 0x4f, 0x81, 0xf1, 0xbf, 0x59, 0x2f, 0x0f, 0xfb, + 0xe4, 0x23, 0xdb, 0x2c, 0xd2, 0xf9, 0x4c, 0x53, 0x3e, 0x2e, 0xd1, 0xd6, + 0x92, 0x21, 0x02, 0x6f, 0x4e, 0x68, 0x3e, 0xf1, 0x3b, 0x5a, 0x44, 0xcf, + 0x1e, 0x0d, 0xda, 0x77, 0xa9, 0x10, 0x7d, 0xb2, 0x95, 0x7e, 0x9b, 0x36, + 0xbc, 0xd7, 0xae, 0x59, 0xf1, 0x00, 0x3a, 0x44, 0x0d, 0x41, 0x63, 0xf6, + 0x12, 0xc1, 0xc3, 0xd2, 0x12, 0x25, 0xf6, 0x8b, 0xc0, 0xaa, 0xcb, 0xf2, + 0x4d, 0xcc, 0x27, 0xef, 0x21, 0x7e, 0x46, 0x13, 0xdf, 0xaf, 0x55, 0xd2, + 0xec, 0x42, 0xdf, 0xf4, 0x8b, 0xee, 0xd5, 0x42, 0x9e, 0x30, 0xcb, 0x67, + 0xbe, 0x00, 0x0b, 0x31, 0x56, 0xd2, 0x64, 0x84, 0xf4, 0x63, 0xed, 0xcb, + 0x2a, 0xb1, 0x14, 0x03, 0x82, 0xa3, 0xee, 0x97, 0x53, 0xa4, 0x1f, 0x92, + 0x13, 0x3c, 0x13, 0x42, 0x34, 0xea, 0xfe, 0x59, 0x14, 0x6b, 0x7f, 0x35, + 0x2d, 0x9f, 0x9a, 0x46, 0x4c, 0x40, 0x7e, 0x92, 0xe2, 0xa8, 0x81, 0x74, + 0x88, 0x05, 0xb6, 0x4d, 0xf3, 0x86, 0xa3, 0x25, 0xf8, 0x5e, 0x3d, 0x1b, + 0xbf, 0x3b, 0x82, 0xd6, 0x14, 0x68, 0xed, 0xf3, 0x33, 0xc8, 0x18, 0x28, + 0xfa, 0x6f, 0x14, 0xa4, 0xeb, 0x08, 0xbd, 0x7f, 0x3c, 0x20, 0x49, 0xb9, + 0xdb, 0x85, 0xc6, 0x30, 0x0d, 0x40, 0xce, 0x88, 0x3e, 0x5c, 0xe2, 0x21, + 0xb9, 0x3a, 0x0f, 0x29, 0x16, 0x04, 0x19, 0xb9, 0x14, 0xa6, 0xf3, 0xcf, + 0xac, 0x83, 0xfa, 0x8c, 0x5b, 0x7d, 0xb4, 0xcc, 0xb6, 0x97, 0x97, 0xb6, + 0x0a, 0x56, 0x55, 0x5a, 0xed, 0xa8, 0xb7, 0xe7, 0x29, 0x57, 0x56, 0x1d, + 0xdf, 0xf9, 0x19, 0x38, 0xa5, 0x11, 0x23, 0x2a, 0xd0, 0x2c, 0xe3, 0x1c, + 0x83, 0x0a, 0x8a, 0x6f, 0x52, 0xd8, 0xf0, 0x1d, 0x3d, 0x84, 0x6a, 0xf8, + 0xe1, 0xd8, 0x54, 0xe0, 0x26, 0x87, 0xdb, 0x7e, 0x1b, 0x23, 0xb8, 0xee, + 0xdf, 0x8e, 0x36, 0xfb, 0x4f, 0x2d, 0xe5, 0xa9, 0x2c, 0x44, 0xee, 0xe5, + 0xf7, 0x80, 0x16, 0xed, 0x09, 0xda, 0xe6, 0x75, 0xfc, 0xe9, 0xf8, 0x8e, + 0xc4, 0x70, 0x66, 0xa9, 0xb0, 0x9d, 0xaf, 0x39, 0x5d, 0x3f, 0x10, 0x86, + 0x38, 0x45, 0x3c, 0x6e, 0x39, 0xe3, 0xc7, 0x4d, 0x53, 0x04, 0xf9, 0x09, + 0xa7, 0xfc, 0xc6, 0x3b, 0x82, 0x3c, 0x41, 0x33, 0x52, 0x21, 0xcc, 0x50, + 0x52, 0x01, 0x58, 0x2a, 0xbf, 0x19, 0x47, 0x52, 0x86, 0x44, 0x06, 0x2c, + 0x6a, 0x8b, 0x51, 0x9d, 0x58, 0x6c, 0x5b, 0xe8, 0xba, 0x3d, 0xf3, 0x3b, + 0x19, 0xdc, 0xb9, 0x70, 0xd1, 0x68, 0x2d, 0x3e, 0xda, 0x37, 0x7c, 0xf4, + 0xe2, 0x05, 0x35, 0x15, 0xbb, 0x3d, 0x5a, 0x6d, 0xc6, 0x32, 0x81, 0x4f, + 0xe6, 0xec, 0x1a, 0x88, 0x0c, 0xbf, 0x95, 0x37, 0x76, 0xcc, 0x1e, 0xa9, + 0x91, 0xf0, 0x80, 0xb3, 0x0e, 0x86, 0x64, 0x2c, 0xe9, 0xf2, 0xab, 0xce, + 0xb8, 0xa8, 0x3b, 0x0a, 0x26, 0x1b, 0x58, 0x7d, 0x85, 0x51, 0xc7, 0x7c, + 0x8f, 0x44, 0x0a, 0x2b, 0x6a, 0x65, 0x04, 0x2e, 0xbf, 0x85, 0x89, 0x21, + 0xab, 0x0a, 0x8b, 0xef, 0x9a, 0xd9, 0x62, 0x2e, 0x18, 0x0f, 0x5d, 0xc0, + 0x43, 0xdd, 0xbe, 0x68, 0x5a, 0xe6, 0x61, 0x7e, 0xaf, 0x85, 0xbe, 0xd1, + 0x75, 0x5e, 0x34, 0x64, 0x7d, 0x6e, 0xe2, 0xad, 0xfd, 0x45, 0xf0, 0x52, + 0xa5, 0x66, 0x18, 0x3b, 0x50, 0x70, 0xe6, 0x28, 0xb3, 0x5f, 0x11, 0x72, + 0xcd, 0x67, 0x04, 0xc3, 0x53, 0x75, 0x8d, 0x4f, 0x57, 0xe7, 0xd6, 0xa7, + 0xa1, 0x24, 0xcc, 0xf5, 0x90, 0x8c, 0xfb, 0xf4, 0x7d, 0x0d, 0xd8, 0x13, + 0xa4, 0x3a, 0x94, 0x96, 0x1a, 0xbb, 0x5b, 0xb0, 0x49, 0xcd, 0xf5, 0x49, + 0x14, 0xfe, 0x7f, 0x42, 0x6d, 0x0e, 0xe0, 0xf0, 0x0e, 0x04, 0xdd, 0xbf, + 0x61, 0x9c, 0xec, 0xcd, 0xc9, 0x24, 0xe3, 0x73, 0xae, 0x13, 0xa8, 0xce, + 0xe2, 0xc6, 0x51, 0x51, 0xaf, 0xed, 0xbd, 0x19, 0x7b, 0x9d, 0x70, 0x65, + 0xb6, 0xa3, 0xeb, 0x59, 0xb1, 0x58, 0x82, 0xfd, 0x91, 0xe4, 0x90, 0xeb, + 0xe2, 0x92, 0xe7, 0x85, 0x6e, 0xef, 0x7f, 0x9a, 0x62, 0x10, 0xf5, 0x93, + 0x23, 0x57, 0xce, 0x42, 0x2d, 0x84, 0x37, 0x1e, 0x1c, 0xd7, 0x08, 0x68, + 0x37, 0x01, 0x83, 0x02, 0x8d, 0x19, 0xb6, 0x4b, 0xa0, 0x0b, 0xb2, 0x67, + 0x56, 0xd5, 0xf8, 0xbf, 0xeb, 0xcc, 0xc4, 0x3b, 0x64, 0x63, 0xa1, 0xe6, + 0x5d, 0xc0, 0xe2, 0x4f, 0x93, 0x93, 0x9c, 0xf9, 0x78, 0xad, 0xcf, 0x65, + 0x06, 0x50, 0x34, 0x7b, 0x3d, 0x9e, 0xb0, 0x37, 0xad, 0xc7, 0xd0, 0x72, + 0xad, 0xc0, 0xd1, 0x2f, 0xac, 0x48, 0xfd, 0x98, 0xb6, 0xb5, 0xcc, 0x20, + 0xb2, 0xcc, 0xb5, 0xa1, 0xb8, 0xf3, 0x5f, 0x49, 0x6d, 0x95, 0xdb, 0x31, + 0xad, 0x69, 0x2f, 0xb0, 0x7a, 0xac, 0x32, 0xdc, 0x3f, 0xdc, 0xbb, 0xf0, + 0x24, 0xeb, 0x5c, 0x10, 0x31, 0xfd, 0x91, 0xaa, 0x5e, 0xa3, 0xe4, 0xc6, + 0x3a, 0xd7, 0xaa, 0xb4, 0xd9, 0x80, 0x19, 0xb3, 0xf8, 0x9e, 0xcb, 0xc4, + 0x73, 0x3f, 0x61, 0x6a, 0x59, 0x77, 0x63, 0x2e, 0x4e, 0x82, 0x5c, 0x4e, + 0x8b, 0x5c, 0xdc, 0x15, 0xc3, 0xf2, 0xab, 0x3a, 0x5b, 0x6e, 0xcc, 0x08, + 0x2b, 0xd1, 0x9e, 0x48, 0x7b, 0xfd, 0x75, 0x91, 0xf5, 0x86, 0x46, 0xfa, + 0x89, 0x21, 0x3f, 0x4b, 0x07, 0x92, 0xb3, 0xa4, 0x6c, 0xa8, 0x87, 0x3b, + 0x8e, 0x9e, 0x9e, 0xeb, 0x2d, 0x87, 0xd0, 0x45, 0x42, 0xce, 0x6b, 0x31, + 0xe6, 0x50, 0xc9, 0xcf, 0xa1, 0x34, 0xda, 0x5a, 0x4c, 0x5a, 0x93, 0x5f, + 0x5b, 0x6d, 0xc5, 0x22, 0x75, 0x53, 0x44, 0xbd, 0xe6, 0xa1, 0x78, 0xec, + 0xd5, 0xd7, 0x53, 0xa1, 0x67, 0xd7, 0xf0, 0x83, 0x85, 0x75, 0xd6, 0xcb, + 0x30, 0x1e, 0x6f, 0xd4, 0xc2, 0xcd, 0x82, 0xf1, 0x08, 0x7c, 0x1e, 0xa4, + 0xed, 0xef, 0xb1, 0xc8, 0xdc, 0xf2, 0x64, 0x65, 0xdf, 0xe7, 0x21, 0xed, + 0x4d, 0x5a, 0x87, 0xe8, 0x68, 0x87, 0xac, 0x8d, 0x9d, 0xc2, 0xb7, 0x19, + 0x80, 0x62, 0xac, 0xbb, 0x73, 0x7d, 0x39, 0xd0, 0xf6, 0x7b, 0xb8, 0xc1, + 0x53, 0x1b, 0xe9, 0x46, 0x28, 0x50, 0x05, 0x6e, 0x65, 0xf9, 0x3d, 0x1c, + 0x23, 0x94, 0x09, 0xd8, 0x8f, 0xcf, 0xf6, 0x19, 0x52, 0x29, 0xae, 0x1d, + 0x46, 0xf5, 0x05, 0x61, 0x82, 0xb5, 0xd1, 0x52, 0xc5, 0x03, 0x49, 0x9d, + 0xcf, 0xe2, 0x49, 0x0b, 0x6a, 0x77, 0x73, 0x91, 0x95, 0x7a, 0x56, 0xb9, + 0x13, 0xa9, 0xb4, 0x9b, 0xf9, 0xa4, 0x39, 0x06, 0x1a, 0xd4, 0xd7, 0x7f, + 0xec, 0xb4, 0xa6, 0xcd, 0x8a, 0x60, 0x3d, 0x4d, 0xba, 0xbc, 0x91, 0xc7, + 0x1f, 0x50, 0xac, 0xd7, 0x75, 0x77, 0x3c, 0xb1, 0xd6, 0x5c, 0x34, 0x88, + 0xf0, 0xe1, 0xd9, 0x63, 0x99, 0xdd, 0xa0, 0x37, 0xde, 0xa1, 0xb4, 0xc1, + 0xc3, 0x4d, 0x8c, 0x0d, 0x8a, 0x0d, 0x96, 0xba, 0x48, 0xc2, 0x0c, 0x3d, + 0x6f, 0x7b, 0x10, 0xb5, 0x22, 0x9b, 0x79, 0x84, 0x6f, 0x24, 0x4d, 0xaf, + 0x61, 0x03, 0xd6, 0x33, 0xc8, 0x2e, 0xde, 0x24, 0x39, 0x59, 0x49, 0x5f, + 0x11, 0xad, 0x3a, 0x99, 0x49, 0x3c, 0xda, 0xdc, 0xe8, 0xea, 0x66, 0x37, + 0xa9, 0x6e, 0xf3, 0x79, 0x6a, 0x6f, 0xea, 0x43, 0x10, 0x6e, 0xf6, 0x41, + 0xc2, 0x54, 0x6e, 0x42, 0x43, 0xe9, 0xcf, 0x3e, 0xce, 0xeb, 0x99, 0xf2, + 0x56, 0xb7, 0x26, 0x4a, 0xce, 0xd6, 0x57, 0x59, 0x8f, 0x30, 0xa0, 0xdc, + 0xe4, 0xed, 0x42, 0xe0, 0x1d, 0x15, 0x9e, 0x39, 0xc9, 0xdd, 0x10, 0xfe, + 0x66, 0x34, 0x54, 0xd4, 0x25, 0xfc, 0x48, 0x87, 0xae, 0xff, 0x77, 0x96, + 0x01, 0x30, 0xd7, 0xd5, 0x2b, 0xa3, 0xba, 0xe0, 0x34, 0xce, 0x67, 0x96, + 0x4c, 0x3e, 0x88, 0x84, 0x7d, 0x49, 0xeb, 0x01, 0x07, 0x2d, 0xad, 0x3d, + 0xa5, 0x22, 0x47, 0xed, 0x5b, 0x43, 0xfc, 0xcf, 0x69, 0x1c, 0xff, 0x65, + 0x00, 0x93, 0x60, 0x3b, 0x94, 0x10, 0xd6, 0xcd, 0x71, 0xa7, 0x93, 0xfd, + 0x58, 0x53, 0xcf, 0x9f, 0x4f, 0x56, 0xa7, 0x7b, 0x39, 0x9d, 0x9b, 0x5d, + 0x0d, 0xf1, 0xb5, 0x98, 0x96, 0x9b, 0x04, 0x7a, 0xa7, 0xda, 0x8f, 0x44, + 0x92, 0x05, 0x22, 0xbd, 0xb6, 0x49, 0x15, 0x53, 0xf6, 0x0b, 0x9c, 0xb4, + 0xf3, 0x61, 0xfa, 0xf3, 0xc1, 0x88, 0xd5, 0x09, 0xb9, 0x3c, 0x0f, 0x2b, + 0xa6, 0xbe, 0x1d, 0xa8, 0xc6, 0x65, 0x61, 0x46, 0x95, 0xf0, 0x04, 0xfd, + 0x2e, 0xc7, 0xfe, 0x67, 0xb3, 0xb9, 0x1e, 0xc8, 0xb8, 0x9a, 0x54, 0x45, + 0x0b, 0x9d, 0x1a, 0x26, 0x6e, 0x3c, 0x7a, 0xca, 0x77, 0xb9, 0xf5, 0x5a, + 0x95, 0x1c, 0x99, 0x12, 0x97, 0xfb, 0x53, 0xdd, 0x63, 0x9c, 0x2e, 0x5e, + 0x9d, 0x13, 0x19, 0xa0, 0x21, 0x24, 0xe0, 0x7a, 0xa4, 0xda, 0x8c, 0x64, + 0x13, 0xce, 0xa8, 0xd8, 0x2d, 0x09, 0x15, 0x1a, 0x50, 0xb4, 0x25, 0x32, + 0xc5, 0xef, 0x03, 0xf4, 0x1e, 0xca, 0x8c, 0x62, 0xcd, 0x8d, 0x01, 0x79, + 0x7b, 0xf0, 0x06, 0x69, 0xd1, 0x2f, 0x56, 0x01, 0x94, 0xc1, 0xa1, 0xcd, + 0x9d, 0x22, 0x6e, 0x49, 0xfb, 0x7a, 0xab, 0x4f, 0x3e, 0xae, 0x6b, 0xad, + 0xce, 0x33, 0xd6, 0x9c, 0x86, 0x0c, 0x5c, 0x97, 0x34, 0x5e, 0x59, 0xce, + 0x3a, 0x43, 0x99, 0x5e, 0xca, 0x59, 0xd0, 0x6c, 0x1e, 0xb6, 0xf8, 0x36, + 0xef, 0x28, 0x0c, 0x0d, 0x26, 0xc6, 0xb8, 0x5a, 0x91, 0xe3, 0x0e, 0xa1, + 0x9b, 0xf2, 0x31, 0x02, 0x6f, 0x98, 0x47, 0x1e, 0x92, 0x55, 0x1a, 0x0f, + 0x9d, 0x24, 0x63, 0x51, 0x14, 0xdf, 0xdd, 0x82, 0xbc, 0xb3, 0x10, 0x1d, + 0xa9, 0xe9, 0xb3, 0x1a, 0xb9, 0x74, 0x68, 0xc2, 0x24, 0xec, 0x8e, 0x9c, + 0xc8, 0xc3, 0x14, 0xec, 0x05, 0xe5, 0xa7, 0x96, 0xc7, 0xba, 0x3e, 0x62, + 0xd2, 0x90, 0xd8, 0xec, 0x4a, 0xae, 0x71, 0x67, 0x0a, 0xd5, 0x78, 0x72, + 0x2f, 0x66, 0x2a, 0x48, 0x77, 0x5b, 0x51, 0xe2, 0xe9, 0x2a, 0x0c, 0x53, + 0xaa, 0xf9, 0xa1, 0x01, 0xb8, 0x4c, 0x39, 0xba, 0x55, 0xc1, 0x3a, 0xe4, + 0x6b, 0x14, 0x0e, 0x95, 0x78, 0x52, 0x81, 0xea, 0x60, 0x76, 0xc0, 0x54, + 0xc0, 0x1d, 0x84, 0xf8, 0x4e, 0xb5, 0x9c, 0x20, 0xc8, 0x01, 0x82, 0xd3, + 0x52, 0xfa, 0xee, 0xd5, 0xf6, 0x82, 0x55, 0x4b, 0xb3, 0x52, 0x9f, 0xb8, + 0xcc, 0x69, 0x38, 0x52, 0x90, 0xbd, 0xba, 0xc0, 0xd4, 0xa8, 0x5c, 0x9e, + 0x59, 0x14, 0xb4, 0x35, 0x5f, 0x0e, 0xf6, 0x51, 0x29, 0xa7, 0x1a, 0xd2, + 0xdd, 0xfd, 0xda, 0x8a, 0x8e, 0xa3, 0x6d, 0x7f, 0x19, 0x81, 0xab, 0x0c, + 0xed, 0x15, 0x28, 0x8c, 0x68, 0xdb, 0xf7, 0x72, 0x4f, 0xf3, 0x36, 0x1d, + 0x62, 0x44, 0xe1, 0xa2, 0x48, 0x81, 0x78, 0x1c, 0xfc, 0x53, 0xc9, 0x9e, + 0x5c, 0x62, 0x46, 0x71, 0x51, 0xf1, 0xa4, 0x88, 0x1b, 0x1f, 0xb5, 0xdf, + 0x85, 0xfb, 0xf6, 0xfc, 0xc2, 0x13, 0x14, 0xf9, 0xda, 0xa1, 0xd1, 0x3b, + 0x8b, 0x81, 0xf1, 0x77, 0xa2, 0xff, 0xfa, 0x9f, 0xa4, 0x25, 0x1d, 0xea, + 0x08, 0x69, 0xcf, 0x2e, 0x9c, 0xac, 0xe8, 0x92, 0x03, 0x59, 0x4e, 0xf2, + 0xf7, 0xa8, 0x57, 0x84, 0x77, 0xa4, 0xde, 0xac, 0x7f, 0x52, 0xf1, 0xe9, + 0x5b, 0x65, 0x46, 0xd1, 0x20, 0x4e, 0x86, 0xf0, 0xb4, 0xb1, 0x52, 0x6a, + 0x00, 0xd9, 0x32, 0x13, 0x80, 0x5b, 0xe1, 0x17, 0x47, 0xc7, 0xfd, 0xc5, + 0x98, 0x9a, 0x12, 0xe2, 0xf2, 0x8d, 0xea, 0xb9, 0x3a, 0xac, 0x6d, 0x3c, + 0xbb, 0xfb, 0x07, 0x38, 0x48, 0xf6, 0x5b, 0x57, 0xb0, 0xe3, 0x41, 0xc5, + 0x4e, 0xeb, 0xdc, 0x76, 0x33, 0xc1, 0x0b, 0x6c, 0xae, 0xd9, 0x6a, 0xed, + 0x7f, 0x4f, 0xb1, 0xc5, 0x21, 0xa7, 0x1d, 0xff, 0xfc, 0x93, 0x83, 0x0a, + 0x72, 0x82, 0xed, 0xde, 0xa8, 0xe9, 0x4a, 0x7e, 0x06, 0x79, 0x14, 0x95, + 0x4a, 0x4a, 0x4f, 0xda, 0xcf, 0xa7, 0x69, 0x69, 0x56, 0x78, 0x67, 0x9c, + 0x51, 0x55, 0x77, 0x6a, 0x3d, 0xad, 0x4c, 0xc8, 0x86, 0x99, 0xa0, 0xfc, + 0x03, 0xa7, 0x0d, 0x9c, 0x4f, 0x8c, 0x63, 0x3a, 0xf3, 0x58, 0xd9, 0xd9, + 0xcd, 0x67, 0x2a, 0xc1, 0x45, 0x05, 0xa3, 0x1b, 0x51, 0xf5, 0x48, 0x08, + 0x2b, 0x56, 0xe4, 0xe2, 0x28, 0x24, 0xaa, 0x46, 0x19, 0xd3, 0x34, 0xda, + 0x5a, 0x95, 0x2f, 0x67, 0x99, 0x33, 0xd5, 0xc8, 0x34, 0x23, 0x23, 0x1a, + 0x97, 0xc4, 0xf2, 0x6d, 0xf5, 0xc9, 0x2a, 0xd3, 0x87, 0xc5, 0xe7, 0x8f, + 0xc5, 0x16, 0x41, 0xbf, 0x04, 0x04, 0x0f, 0x50, 0xb8, 0x91, 0x0d, 0x0c, + 0xfd, 0xb5, 0xc3, 0xe6, 0xbf, 0xfd, 0xdb, 0xef, 0x21, 0xc3, 0xf4, 0x4e, + 0x88, 0xb4, 0x33, 0xfe, 0x19, 0xee, 0xc1, 0x3b, 0x5a, 0xcf, 0x71, 0x75, + 0x40, 0xbe, 0x6d, 0x07, 0xb9, 0x9f, 0x51, 0x81, 0x97, 0xca, 0xca, 0xa1, + 0x8a, 0x45, 0xa9, 0x05, 0x5a, 0x8f, 0x36, 0xcf, 0x66, 0x56, 0x29, 0x96, + 0xc4, 0x52, 0x76, 0x44, 0x72, 0xff, 0xb0, 0x22, 0xc9, 0xce, 0xf1, 0x9f, + 0x05, 0x61, 0xa0, 0xa2, 0x95, 0x7e, 0x5a, 0xf6, 0x39, 0x47, 0xf8, 0x81, + 0x80, 0x00, 0x1e, 0xa5, 0x45, 0x4d, 0xb1, 0x90, 0xc9, 0xf5, 0xba, 0xe6, + 0x1a, 0xe1, 0x99, 0xc7, 0x60, 0x77, 0xc1, 0xb6, 0x12, 0x23, 0xa5, 0xd6, + 0xe4, 0x27, 0x49, 0x95, 0xc5, 0xa8, 0x30, 0xb8, 0xb6, 0x66, 0x47, 0x31, + 0xf3, 0x8d, 0x21, 0xbe, 0x47, 0x4c, 0xe5, 0x71, 0x95, 0xa2, 0x17, 0x1f, + 0x4c, 0x0c, 0x10, 0xc0, 0x9b, 0x32, 0x29, 0xf8, 0xb5, 0xbd, 0xc7, 0x39, + 0x4a, 0x5b, 0xb6, 0xc5, 0x73, 0x73, 0x96, 0x49, 0x13, 0x35, 0xbd, 0xa1, + 0xa6, 0x7d, 0x6f, 0xfb, 0x4f, 0x1d, 0x43, 0x3f, 0x80, 0x1f, 0xba, 0x0b, + 0xcf, 0x47, 0x80, 0x69, 0xa7, 0xda, 0x86, 0x12, 0xc9, 0x74, 0x83, 0x41, + 0x70, 0x20, 0x66, 0xbb, 0x18, 0xd8, 0xb5, 0xf3, 0x89, 0xfb, 0x13, 0xad, + 0x18, 0xc7, 0x2d, 0x94, 0x91, 0xb0, 0x5d, 0xd2, 0x57, 0xe4, 0x99, 0x0e, + 0xd8, 0x50, 0xb3, 0xb6, 0x12, 0x08, 0xa8, 0x23, 0x06, 0x7a, 0x72, 0x43, + 0x30, 0x9c, 0x96, 0x64, 0xfc, 0x48, 0xf9, 0x00, 0x02, 0xcf, 0xf9, 0x26, + 0x15, 0x82, 0x91, 0xd9, 0xdc, 0x48, 0x3e, 0x56, 0xd5, 0x01, 0xaa, 0x83, + 0xb4, 0x99, 0x48, 0x59, 0x72, 0x93, 0xdb, 0x30, 0x40, 0xd7, 0x89, 0xf2, + 0xc6, 0x3e, 0x96, 0x6a, 0xe2, 0x50, 0x12, 0x17, 0x2c, 0xc0, 0xe9, 0x2a, + 0xf6, 0xa6, 0x20, 0xc5, 0xd5, 0xbe, 0x79, 0x40, 0xeb, 0x17, 0x0e, 0xb9, + 0x1f, 0x17, 0xc0, 0xab, 0x7d, 0xdd, 0x75, 0x0f, 0x6f, 0x32, 0x99, 0x48, + 0x9d, 0x8b, 0x3b, 0xb3, 0xfc, 0xaf, 0xb7, 0x79, 0xfc, 0xdf, 0xab, 0xb1, + 0xad, 0x68, 0x66, 0xe9, 0xc8, 0x78, 0x9e, 0xe8, 0x11, 0x58, 0x74, 0x02, + 0xb8, 0x1a, 0xfe, 0x64, 0x2d, 0x6b, 0x74, 0x2c, 0x2c, 0xee, 0x3a, 0x27, + 0x51, 0xee, 0x96, 0x04, 0xb7, 0xc4, 0x4b, 0x14, 0x1d, 0x1e, 0x94, 0x4b, + 0x78, 0xa2, 0xfb, 0x07, 0x73, 0xe2, 0x1a, 0x75, 0x11, 0x46, 0xe9, 0xb3, + 0xe2, 0x15, 0x37, 0x40, 0xe3, 0xaa, 0x2f, 0x9d, 0x0d, 0x80, 0x50, 0xac, + 0x85, 0x67, 0x85, 0x12, 0xf0, 0xe2, 0x01, 0xdc, 0xe9, 0x68, 0x0c, 0x3a, + 0x25, 0xca, 0xf3, 0x93, 0x76, 0x39, 0xeb, 0x00, 0xbf, 0x29, 0xf7, 0xdb, + 0x79, 0xd0, 0xb0, 0x7a, 0x6d, 0x81, 0x48, 0xe8, 0xad, 0xe3, 0x2c, 0xcc, + 0x53, 0x16, 0x2e, 0xed, 0xd6, 0xc7, 0x93, 0xff, 0x18, 0x21, 0x43, 0x99, + 0x60, 0xfb, 0x46, 0x77, 0x2c, 0x75, 0x3b, 0xb1, 0x0a, 0x87, 0xca, 0x51, + 0xd2, 0x28, 0xde, 0x4d, 0xf9, 0x68, 0x4a, 0x5f, 0xb1, 0x52, 0x9d, 0x5b, + 0x78, 0xf2, 0x2b, 0xaa, 0x17, 0x29, 0x9a, 0x5a, 0x76, 0x07, 0x37, 0x64, + 0xf2, 0x07, 0xe7, 0x2e, 0x93, 0x57, 0x60, 0xa2, 0xfb, 0x2c, 0xd7, 0x4e, + 0x61, 0x3e, 0x2b, 0xd3, 0xda, 0xcc, 0x2a, 0xfb, 0x38, 0x5e, 0xec, 0xf4, + 0x82, 0xa5, 0x4b, 0x9e, 0x39, 0x0e, 0xf4, 0xca, 0xbe, 0xf3, 0x43, 0x3a, + 0x5e, 0x16, 0x3a, 0xc9, 0x0d, 0x7d, 0x15, 0xa1, 0x0e, 0x2f, 0x42, 0x89, + 0x54, 0xf0, 0x4b, 0xcb, 0x0b, 0x54, 0xa4, 0x5e, 0x21, 0xae, 0x8f, 0xd0, + 0x14, 0x23, 0x46, 0xf6, 0xeb, 0x29, 0x77, 0x0a, 0x7c, 0xd6, 0x2e, 0x31, + 0xdf, 0xe8, 0x68, 0x80, 0x01, 0xa1, 0xd9, 0x30, 0x2b, 0x5f, 0x2a, 0x33, + 0xf4, 0xaa, 0x9a, 0x17, 0x38, 0x54, 0x8e, 0xdc, 0x07, 0xa4, 0xc3, 0x8a, + 0x64, 0xda, 0x9c, 0x1d, 0x0b, 0x40, 0xe5, 0xef, 0x38, 0x2d, 0x77, 0x4e, + 0x5d, 0x12, 0xf6, 0x9f, 0xa8, 0x71, 0x2a, 0xb8, 0x04, 0x0a, 0x93, 0x1f, + 0x05, 0x9d, 0xab, 0xee, 0x4f, 0xa6, 0xec, 0x7c, 0xa9, 0x9a, 0x73, 0x09, + 0xde, 0xfc, 0x29, 0xb9, 0xf6, 0xd4, 0x75, 0x99, 0xbb, 0x77, 0x23, 0xbc, + 0x31, 0x76, 0x7e, 0x3a, 0xe7, 0x12, 0x37, 0x83, 0x69, 0xdb, 0xac, 0x5b, + 0xcd, 0x4e, 0x12, 0x96, 0xa9, 0x1b, 0x2a, 0x21, 0x71, 0xe0, 0xd9, 0xc9, + 0x62, 0xbc, 0xa4, 0x48, 0xf8, 0xe5, 0x9e, 0x9c, 0xe6, 0x0b, 0x2f, 0xee, + 0xa5, 0xc8, 0xc2, 0x72, 0x82, 0xbf, 0xad, 0x2e, 0x53, 0x03, 0x3f, 0x02, + 0x30, 0x9b, 0xa5, 0xcc, 0xd1, 0x61, 0x3c, 0xab, 0xc2, 0xbc, 0xcf, 0x4f, + 0x0e, 0xf4, 0x5b, 0x57, 0xce, 0x61, 0x8f, 0xcf, 0xaa, 0x3d, 0x2e, 0xeb, + 0x4d, 0xbc, 0x29, 0x8a, 0x81, 0x38, 0xe7, 0xa1, 0x7b, 0x53, 0x59, 0xbc, + 0x9f, 0xbf, 0xc9, 0xb1, 0x49, 0xd8, 0xcf, 0x44, 0xd3, 0x6c, 0x50, 0x09, + 0x93, 0x22, 0x2f, 0xd1, 0xed, 0x70, 0x52, 0xa4, 0x72, 0x82, 0x14, 0xab, + 0xdc, 0x0e, 0x8f, 0x9e, 0x8c, 0x27, 0xa9, 0x5a, 0x28, 0x6a, 0x77, 0xb3, + 0xc6, 0x30, 0x2f, 0xbf, 0xc8, 0x84, 0x94, 0xa6, 0x70, 0xa9, 0xab, 0x64, + 0x88, 0x85, 0xb0, 0x8e, 0x39, 0x20, 0x03, 0xb3, 0x2d, 0x76, 0x95, 0xc2, + 0xdb, 0x4f, 0x3c, 0x2b, 0x8f, 0xd0, 0xc3, 0x41, 0x5b, 0xdf, 0x84, 0x5c, + 0xc6, 0xf8, 0xdb, 0x05, 0x3d, 0xf9, 0x2b, 0x76, 0x18, 0xdb, 0xbc, 0xa2, + 0xa1, 0xc5, 0xb2, 0xd7, 0xf1, 0x80, 0x1b, 0xce, 0xce, 0x23, 0xd9, 0x07, + 0x3b, 0xf8, 0x47, 0xc9, 0x5f, 0x0d, 0xc7, 0x23, 0xc0, 0x2b, 0x64, 0xf7, + 0xfa, 0x8a, 0xa1, 0x26, 0x56, 0xd4, 0x14, 0xbe, 0xda, 0x6a, 0xb6, 0x15, + 0x7e, 0xa7, 0x2e, 0xce, 0x91, 0x6d, 0x45, 0xd6, 0x58, 0x19, 0x47, 0xcb, + 0xaf, 0xd4, 0x79, 0xee, 0xc1, 0x68, 0xad, 0xf8, 0xee, 0xda, 0x9d, 0xa2, + 0x6d, 0x91, 0x1a, 0xd1, 0x4a, 0x0c, 0xed, 0xb0, 0x8c, 0x3e, 0x01, 0xff, + 0xf0, 0x20, 0x16, 0x4f, 0x0b, 0x80, 0xfa, 0xce, 0x25, 0xb9, 0xb8, 0x27, + 0xa7, 0xf5, 0x70, 0xd4, 0x98, 0x3d, 0x3a, 0xce, 0x9c, 0xb7, 0xb3, 0xa4, + 0x46, 0x64, 0x3b, 0x07, 0xaf, 0x88, 0xd2, 0xbc, 0x69, 0x72, 0x37, 0x7d, + 0x24, 0x38, 0x2a, 0xee, 0xa5, 0xfd, 0xfe, 0xad, 0xdf, 0xcc, 0xcb, 0x36, + 0xd3, 0x32, 0x4f, 0x8a, 0x04, 0xd9, 0xac, 0x4e, 0x87, 0x05, 0xd5, 0x77, + 0x2a, 0xc6, 0xa2, 0xd7, 0x5b, 0x14, 0xff, 0x74, 0x45, 0xe4, 0x55, 0x1e, + 0xd9, 0x37, 0x2d, 0xb3, 0xf2, 0x0f, 0xc3, 0x9d, 0x52, 0x9f, 0xec, 0x0c, + 0x89, 0xa1, 0x97, 0xdb, 0x8a, 0x53, 0x52, 0x27, 0x8c, 0x30, 0x55, 0x60, + 0x3e, 0x90, 0x01, 0xec, 0x59, 0x12, 0xf0, 0xc9, 0x7c, 0xc7, 0x00, 0x75, + 0xd7, 0x52, 0xe0, 0xdf, 0x4b, 0xe4, 0xfa, 0xba, 0x34, 0x6a, 0x09, 0xf9, + 0x55, 0xec, 0xce, 0xab, 0xa3, 0x51, 0x1d, 0xb5, 0xb2, 0x9f, 0x12, 0x60, + 0x81, 0x86, 0xa7, 0xba, 0x2f, 0x7e, 0x6e, 0x5f, 0x29, 0xde, 0x01, 0x49, + 0xcc, 0x35, 0xf1, 0xd9, 0xdf, 0xad, 0xf9, 0x06, 0xfd, 0x0a, 0xb9, 0x00, + 0x61, 0x1e, 0xfb, 0x00, 0x10, 0x8e, 0x11, 0x4e, 0xff, 0xed, 0x61, 0x34, + 0x06, 0x3c, 0x03, 0x38, 0x46, 0xff, 0x04, 0x56, 0x64, 0xdb, 0xcd, 0x41, + 0x05, 0x68, 0x30, 0x77, 0x55, 0x21, 0x07, 0x4b, 0xe9, 0x01, 0x88, 0x0c, + 0x1b, 0x69, 0x64, 0xc4, 0x8e, 0xda, 0x72, 0x09, 0x01, 0x93, 0xc0, 0x03, + 0x34, 0xec, 0x59, 0xfb, 0xd0, 0x9e, 0x3c, 0xbb, 0x29, 0xe8, 0x30, 0x76, + 0xb9, 0xaf, 0x9d, 0x3b, 0xe4, 0x9e, 0x7c, 0xd5, 0x6a, 0x66, 0x03, 0x8c, + 0x2e, 0x43, 0x98, 0xed, 0xbe, 0xdc, 0xc9, 0xf8, 0x1b, 0xe7, 0xc9, 0x6f, + 0x42, 0x3f, 0x09, 0xe3, 0x83, 0x5d, 0x4c, 0xfe, 0x19, 0xa7, 0xb4, 0xdc, + 0xc6, 0x8d, 0x85, 0x4c, 0x51, 0xe5, 0x21, 0x7e, 0xe7, 0xa2, 0x2f, 0x48, + 0x88, 0x59, 0xd0, 0x49, 0xab, 0x09, 0x63, 0x1d, 0xa9, 0x35, 0x90, 0x27, + 0x1a, 0xd0, 0xd9, 0x0e, 0x9d, 0x2b, 0xec, 0xf6, 0x38, 0x02, 0x02, 0x62, + 0xaa, 0xff, 0x30, 0x07, 0xf6, 0x14, 0x66, 0x92, 0x23, 0x32, 0x1f, 0x5f, + 0xc0, 0xa9, 0x94, 0xf3, 0xb8, 0xaf, 0x52, 0x8d, 0xfd, 0x07, 0xe5, 0xc6, + 0x1d, 0x25, 0xb6, 0x36, 0xdd, 0xb1, 0xb5, 0x69, 0x54, 0x34, 0x2f, 0x4c, + 0xa3, 0xc5, 0x3d, 0xc9, 0x6d, 0x4f, 0x4a, 0xc8, 0xad, 0x9a, 0x58, 0x2f, + 0x42, 0xb6, 0x7f, 0x9b, 0xe9, 0x83, 0x86, 0xb0, 0x59, 0xfb, 0x8d, 0x5c, + 0xed, 0x42, 0x72, 0x6b, 0xff, 0x35, 0xa5, 0xe5, 0x3f, 0x6e, 0x6e, 0x51, + 0xea, 0xff, 0xfd, 0x66, 0xf8, 0xff, 0x5e, 0x1d, 0x56, 0x53, 0x75, 0xc5, + 0x89, 0x44, 0x53, 0xa3, 0xac, 0xd4, 0xff, 0x0e, 0x84, 0x66, 0x56, 0xae, + 0x97, 0x8b, 0x43, 0x37, 0x4b, 0xa6, 0xc9, 0x37, 0x2a, 0x22, 0xcb, 0x77, + 0xe3, 0xfe, 0x25, 0xee, 0x50, 0x56, 0xc3, 0xb2, 0xfb, 0x3a, 0x2d, 0xff, + 0x5a, 0xdb, 0xf6, 0x2f, 0x6b, 0x76, 0x7c, 0x52, 0xc1, 0x87, 0x37, 0x5f, + 0x8c, 0x82, 0x1d, 0x8a, 0xce, 0x90, 0x87, 0xda, 0x6a, 0xe4, 0xd8, 0x00, + 0x86, 0x02, 0x00, 0x96, 0xe0, 0xc1, 0x50, 0x80, 0x00, 0x64, 0x70, 0xce, + 0x3f, 0xd1, 0xf9, 0x0e, 0xe4, 0xfc, 0x2f, 0xe3, 0xf6, 0x37, 0x50, 0x3c, + 0xff, 0xb7, 0xdd, 0x70, 0x7f, 0xff, 0x6f, 0xf6, 0xc6, 0x80, 0x00, 0x33, + 0xf8, 0xb8, 0x5a, 0x9c, 0xb7, 0x39, 0xa5, 0xca, 0x1e, 0x02, 0x24, 0xdf, + 0xd1, 0x47, 0x14, 0x68, 0x1e, 0xc7, 0x93, 0xd7, 0x4d, 0x1f, 0x54, 0xe7, + 0x15, 0xec, 0x93, 0xf2, 0x3a, 0x57, 0x86, 0x30, 0xd0, 0xb7, 0x7e, 0x31, + 0x03, 0x8c, 0x96, 0x3c, 0xde, 0x72, 0x8d, 0x76, 0x4d, 0x1f, 0xec, 0xda, + 0x3a, 0x0d, 0x4d, 0x75, 0x41, 0x06, 0x80, 0x3a, 0xec, 0xfb, 0xa0, 0xa2, + 0xe0, 0xda, 0x9b, 0x0c, 0x68, 0x17, 0xc3, 0xb3, 0x64, 0xd0, 0x88, 0xe4, + 0xf1, 0xf3, 0x6e, 0x38, 0x7c, 0x80, 0x2f, 0x7a, 0xd9, 0xab, 0x67, 0x97, + 0xf0, 0x19, 0x6e, 0x67, 0x4b, 0x7d, 0x58, 0xd1, 0x23, 0x98, 0xd0, 0xf9, + 0x48, 0xb7, 0x75, 0x6c, 0x90, 0x4c, 0x2d, 0xcd, 0x50, 0x1b, 0xb0, 0x61, + 0xb1, 0xa3, 0xc1, 0xbf, 0x77, 0xb9, 0xbf, 0xf8, 0x89, 0x89, 0xb8, 0x43, + 0xc1, 0xdf, 0x8c, 0xfa, 0xfc, 0xf6, 0xaa, 0xd0, 0xaf, 0x48, 0xd4, 0x8a, + 0x4f, 0x64, 0x74, 0x2f, 0x1b, 0xc2, 0xfb, 0x32, 0xbb, 0x4b, 0x35, 0x0a, + 0x64, 0x0e, 0x0a, 0xe7, 0xd7, 0x00, 0xd6, 0x2a, 0x3e, 0x16, 0x7d, 0x43, + 0x38, 0x46, 0xd2, 0x85, 0x2b, 0x8f, 0x14, 0x5e, 0x24, 0x39, 0x3c, 0xe9, + 0x52, 0xd0, 0xcf, 0xf6, 0xe3, 0xff, 0x54, 0xb8, 0x38, 0xe3, 0xa6, 0x28, + 0x72, 0xd5, 0x89, 0x40, 0x75, 0xb7, 0xbf, 0x96, 0x19, 0x00, 0x52, 0x7c, + 0x4a, 0xc0, 0x91, 0x01, 0x54, 0xba, 0x63, 0xb3, 0xca, 0xed, 0xab, 0x3d, + 0xdf, 0xf9, 0x11, 0x54, 0x1f, 0xc6, 0x24, 0x4f, 0x21, 0x93, 0xea, 0x1b, + 0xc9, 0xd6, 0xd1, 0x29, 0x8a, 0x57, 0x66, 0x44, 0x10, 0xed, 0x38, 0xca, + 0x7b, 0xa0, 0xa6, 0xc2, 0x7c, 0x41, 0x2f, 0x39, 0x3c, 0xb6, 0x44, 0x99, + 0x0f, 0x47, 0x96, 0xa3, 0xab, 0xc9, 0x8e, 0x96, 0x63, 0x24, 0x33, 0xef, + 0x7d, 0x4f, 0xdb, 0x42, 0x2a, 0x9f, 0x76, 0xd2, 0x1e, 0xf4, 0x81, 0x35, + 0x41, 0xba, 0x42, 0xf1, 0x4c, 0x87, 0x34, 0x8d, 0x1e, 0x07, 0xa5, 0x48, + 0x70, 0xeb, 0x3c, 0xe5, 0xf4, 0x21, 0x4b, 0xde, 0xb5, 0x4b, 0xdd, 0x44, + 0x71, 0x1d, 0xcf, 0xd3, 0xae, 0x9a, 0x75, 0xa6, 0x45, 0xe2, 0x80, 0xaf, + 0x3a, 0xf6, 0xa7, 0x0f, 0x79, 0xfe, 0xe2, 0x4d, 0x2a, 0x8c, 0x2e, 0xa5, + 0x32, 0x36, 0xdd, 0xaa, 0xec, 0x88, 0x07, 0xf8, 0xea, 0xc6, 0x5a, 0xf5, + 0x29, 0x01, 0x30, 0xe0, 0x01, 0xcf, 0x83, 0xd0, 0x00, 0xc9, 0xa4, 0x16, + 0x71, 0x01, 0xc9 +}; +static const guint profile_0_frame1_len = 6171; +static const guint profile_0_frame1_first_len = 5796; +static const guint profile_0_frame1_last_len = 369; + +static const guint8 profile_0_frame2[] = { + 0x86, 0x04, 0x18, 0x96, 0x98, 0x60, 0x54, 0x40, 0x00, 0x14, 0x77, 0x67, + 0x6b, 0x66, 0x9f, 0x27, 0x00, 0x52, 0x03, 0x88, 0xbb, 0x8b, 0xe5, 0xb8, + 0x03, 0xc7, 0xfb, 0x7f, 0x00, 0x00, 0x62, 0xde, 0xa8, 0x9d, 0xec, 0x3c, + 0x11, 0x21, 0xf8, 0x45, 0xca, 0x83, 0x6c, 0x72, 0x35, 0x09, 0x7e, 0x88, + 0x66, 0x79, 0xa2, 0xac, 0x5c, 0xae, 0x69, 0x00, 0x66, 0xcb, 0x5b, 0x63, + 0x0e, 0x8c, 0xd3, 0x73, 0x06, 0xb5, 0xc1, 0xeb, 0x8b, 0x6e, 0xcd, 0xe8, + 0xdc, 0xe9, 0x25, 0xbc, 0x9e, 0x0e, 0x89, 0xe8, 0x83, 0xa2, 0x8f, 0xc6, + 0x87, 0x59, 0xa9, 0x2a, 0x12, 0x5e, 0x6f, 0x48, 0xa0, 0xb6, 0x52, 0xb4, + 0x5e, 0x9a, 0xb0, 0xb6, 0x1b, 0x7d, 0x44, 0x61, 0x4c, 0x9b, 0xac, 0x11, + 0x44, 0x14, 0xf3, 0xde, 0xf7, 0x82, 0x8e, 0x57, 0x1a, 0x41, 0x1f, 0xe9, + 0x99, 0x4b, 0x93, 0xbd, 0xbf, 0x41, 0x20, 0x57, 0x5d, 0xaa, 0x1f, 0xd2, + 0x47, 0x29, 0xe5, 0xb9, 0x7a, 0x74, 0x98, 0x94, 0x71, 0xe2, 0xd8, 0xaa, + 0xeb, 0x7b, 0x35, 0x9c, 0x8e, 0xa5, 0xc0, 0xed, 0x5f, 0xc7, 0x64, 0x0e, + 0x22, 0x25, 0x12, 0xbd, 0x8e, 0x55, 0x94, 0x03, 0xcb, 0x92, 0xdf, 0x8c, + 0x5e, 0xb3, 0xa0, 0x59, 0x6c, 0xdc, 0x97, 0xbd, 0x33, 0x90, 0x89, 0xc1, + 0x7d, 0x20, 0x72, 0x29, 0x3c, 0x52, 0x7b, 0x3a, 0x89, 0x7a, 0x69, 0x7f, + 0x6a, 0x9f, 0xd2, 0x86, 0x91, 0x9c, 0x3d, 0x84, 0x41, 0xbe, 0x33, 0x88, + 0x9e, 0x47, 0x5d, 0x89, 0x34, 0xc6, 0xe7, 0x18, 0xcb, 0x9c, 0x88, 0x5e, + 0xed, 0xe4, 0x53, 0x35, 0xb3, 0x1d, 0x89, 0x4f, 0xfb, 0x59, 0xd0, 0xeb, + 0xe8, 0x2e, 0x9a, 0xb3, 0xbc, 0xc0, 0x81, 0x07, 0x37, 0xc8, 0xad, 0x17, + 0x24, 0x89, 0x12, 0xf7, 0x09, 0x35, 0x29, 0x54, 0x76, 0x9f, 0x0c, 0x5c, + 0x97, 0xa1, 0x9e, 0x52, 0xae, 0xbf, 0xfc, 0x11, 0x0d, 0xce, 0x50, 0x56, + 0xf2, 0x61, 0xd3, 0x35, 0xba, 0x99, 0x88, 0x9f, 0xca, 0xfe, 0xf8, 0x1a, + 0x0f, 0x33, 0x28, 0x9e, 0x19, 0x70, 0x38, 0x14, 0xc5, 0xa3, 0x2a, 0x0b, + 0x42, 0x98, 0xed, 0xfc, 0x68, 0x6c, 0xc8, 0x13, 0x63, 0x86, 0xd1, 0x3f, + 0x09, 0x26, 0x84, 0x0d, 0x62, 0x0d, 0x91, 0x1a, 0xfd, 0x8c, 0x8f, 0xe0, + 0xca, 0x66, 0x60, 0xee, 0xcb, 0x72, 0x7c, 0x55, 0xd3, 0x6b, 0x22, 0x09, + 0x61, 0x3a, 0x7a, 0xbe, 0x98, 0x4b, 0x31, 0xf2, 0x61, 0x38, 0xb7, 0x99, + 0x83, 0xd5, 0x38, 0x12, 0xf8, 0x54, 0x53, 0x21, 0xd4, 0x9a, 0xca, 0xcf, + 0xf8, 0x26, 0xa3, 0xfe, 0x1a, 0xc4, 0xc6, 0x3e, 0xbd, 0x2c, 0x0d, 0xa9, + 0x79, 0xc4, 0x6f, 0xa3, 0x9a, 0x92, 0x56, 0xc5, 0xe2, 0xea, 0xcc, 0xdf, + 0x12, 0xe9, 0x03, 0x9d, 0x1c, 0x5a, 0x4f, 0x76, 0xfb, 0x08, 0xf5, 0x48, + 0xac, 0xe1, 0x2f, 0x98, 0xed, 0x75, 0x3e, 0xb8, 0x56, 0x50, 0x3c, 0xff, + 0x0a, 0x02, 0x01, 0xcd, 0x66, 0xe9, 0xed, 0x23, 0x79, 0x31, 0x5d, 0x97, + 0x3e, 0x61, 0x1f, 0x9d, 0x0c, 0x99, 0x3c, 0x93, 0x2b, 0x75, 0x5f, 0xf3, + 0x05, 0x88, 0x07, 0x7b, 0xc4, 0x22, 0x09, 0xc4, 0x04, 0x53, 0xb4, 0x9e, + 0x37, 0x24, 0x87, 0x38, 0x6e, 0x49, 0x43, 0xe3, 0x89, 0xda, 0x9e, 0x03, + 0x2a, 0x0c, 0x92, 0x79, 0x60, 0x2b, 0x7b, 0xa2, 0x33, 0xf2, 0x44, 0x11, + 0x10, 0xff, 0x1a, 0x90, 0x9d, 0xa1, 0xa7, 0x36, 0xac, 0xc9, 0x21, 0xbc, + 0x16, 0x5e, 0x08, 0x30, 0x64, 0xba, 0xe3, 0x6a, 0x10, 0xb8, 0x08, 0xfe, + 0xad, 0x41, 0xa0, 0x6d, 0xd9, 0xba, 0xd7, 0xdf, 0x60, 0x5d, 0x88, 0x1f, + 0x52, 0xa5, 0x49, 0x95, 0x66, 0xc4, 0x91, 0xc5, 0x1d, 0xa4, 0xef, 0xfe, + 0xab, 0xab, 0x6b, 0x34, 0x99, 0xa7, 0xf0, 0x66, 0x3f, 0x80, 0xdc, 0xa2, + 0x53, 0x85, 0x13, 0x28, 0x8b, 0xfe, 0x4a, 0xf0, 0x22, 0xe5, 0x2d, 0x61, + 0x91, 0x17, 0x94, 0x25, 0x0c, 0x90, 0xf1, 0x44, 0x36, 0x08, 0x8d, 0x4b, + 0xd9, 0xcf, 0x6e, 0x49, 0x46, 0x5b, 0x57, 0x42, 0x37, 0x68, 0x73, 0x91, + 0x91, 0x87, 0x64, 0x36, 0x74, 0x1e, 0x45, 0x3c, 0x7a, 0x4f, 0x33, 0x84, + 0x2c, 0x94, 0x30, 0x1c, 0x03, 0x01, 0x83, 0x7f, 0x4c, 0x26, 0xdd, 0x49, + 0x19, 0x1d, 0xd9, 0xc1, 0xb5, 0xad, 0xd6, 0x05, 0x13, 0xad, 0x1e, 0xd1, + 0x74, 0x87, 0x42, 0x06, 0x90, 0xce, 0x7f, 0x44, 0x18, 0x6a, 0x7c, 0xa8, + 0xa9, 0xbf, 0x4e, 0x26, 0x26, 0x96, 0x9c, 0xe9, 0x12, 0xb1, 0x75, 0xaf, + 0xc9, 0xe9, 0x60, 0x9f, 0x8c, 0x56, 0x4a, 0x6b, 0x1d, 0x18, 0x3e, 0x8f, + 0xa9, 0x70, 0xff, 0x65, 0x4c, 0xa6, 0x15, 0x9b, 0x17, 0xfb, 0xf7, 0x96, + 0xe3, 0x4b, 0x29, 0x74, 0xcf, 0x0e, 0x2d, 0x86, 0x86, 0xf9, 0x37, 0xe0, + 0xe5, 0x64, 0x37, 0x0a, 0x29, 0xa6, 0x0a, 0x1f, 0x4f, 0x32, 0x65, 0x6b, + 0xe2, 0xcc, 0x5a, 0xf1, 0x45, 0xdd, 0xd5, 0xc4, 0x5b, 0xe2, 0xdb, 0x2a, + 0x0a, 0x05, 0x0b, 0x90, 0xed, 0x92, 0xc7, 0x48, 0x54, 0xac, 0xf1, 0xdb, + 0x59, 0x78, 0xa8, 0x78, 0x12, 0x42, 0x6c, 0x92, 0x78, 0x5d, 0x0e, 0x54, + 0xd7, 0x3f, 0x47, 0xc9, 0xd2, 0x1e, 0x2d, 0x82, 0xb5, 0x21, 0x1f, 0x8d, + 0x3a, 0x48, 0x88, 0x63, 0x35, 0x24, 0xb8, 0x1c, 0xd1, 0x27, 0x06, 0x53, + 0x05, 0x07, 0xdf, 0xeb, 0x0d, 0x57, 0xaa, 0x76, 0x20, 0xa1, 0x94, 0xe0, + 0xc3, 0x1d, 0x2b, 0x26, 0xf2, 0xbd, 0x31, 0x68, 0x4c, 0x66, 0x19, 0x9a, + 0xe2, 0xd6, 0x51, 0xe4, 0xfe, 0x8d, 0xd9, 0xd7, 0x38, 0x4c, 0x26, 0xcf, + 0x40, 0x35, 0x85, 0x96, 0xd8, 0xd0, 0x1b, 0x23, 0x67, 0x67, 0x46, 0x00, + 0x36, 0xaf, 0x26, 0xcc, 0xfc, 0x96, 0xe3, 0x7b, 0x5e, 0xe0, 0x42, 0x9b, + 0xe0, 0x74, 0x2d, 0x2a, 0xe8, 0xe8, 0xce, 0xcc, 0x00, 0xb0, 0xe1, 0x74, + 0x3c, 0x81, 0xb5, 0x9d, 0x5d, 0x6f, 0xba, 0x42, 0x03, 0x28, 0xb2, 0xaa, + 0xb9, 0xd1, 0xea, 0x49, 0x4d, 0x8f, 0x91, 0xb0, 0xf4, 0x97, 0x67, 0xa2, + 0xd5, 0x90, 0x8a, 0x14, 0xf7, 0x5c, 0x98, 0xd5, 0xf7, 0x14, 0x16, 0x61, + 0x68, 0x4f, 0x4c, 0xa0, 0x06, 0x00 +}; +static const guint profile_0_frame2_len = 834; diff --git a/tests/check/meson.build b/tests/check/meson.build index 12eefe3ab9..bbcf689fc7 100644 --- a/tests/check/meson.build +++ b/tests/check/meson.build @@ -55,6 +55,7 @@ base_tests = [ [['elements/switchbin.c']], [['elements/videoframe-audiolevel.c']], [['elements/viewfinderbin.c']], + [['elements/vp9parse.c'], false, [gstcodecparsers_dep]], [['elements/wasapi2.c'], host_machine.system() != 'windows', ], [['libs/h264parser.c'], false, [gstcodecparsers_dep]], [['libs/h265parser.c'], false, [gstcodecparsers_dep]],