am 97f6618f: am 11e71558: Merge "Fixed data offset at parsing IPMP Descriptors"
* commit '97f6618fb3eae850945decda725151baa9388aca':
Fixed data offset at parsing IPMP Descriptors
diff --git a/cmds/screenrecord/Android.mk b/cmds/screenrecord/Android.mk
index b4a5947..d77fdb6 100644
--- a/cmds/screenrecord/Android.mk
+++ b/cmds/screenrecord/Android.mk
@@ -18,10 +18,14 @@
LOCAL_SRC_FILES := \
screenrecord.cpp \
+ EglWindow.cpp \
+ TextRenderer.cpp \
+ Overlay.cpp \
+ Program.cpp
LOCAL_SHARED_LIBRARIES := \
libstagefright libmedia libutils libbinder libstagefright_foundation \
- libjpeg libgui libcutils liblog
+ libjpeg libgui libcutils liblog libEGL libGLESv2
LOCAL_C_INCLUDES := \
frameworks/av/media/libstagefright \
@@ -30,6 +34,7 @@
external/jpeg
LOCAL_CFLAGS += -Wno-multichar
+#LOCAL_CFLAGS += -UNDEBUG
LOCAL_MODULE_TAGS := optional
diff --git a/cmds/screenrecord/EglWindow.cpp b/cmds/screenrecord/EglWindow.cpp
new file mode 100644
index 0000000..aa0517f
--- /dev/null
+++ b/cmds/screenrecord/EglWindow.cpp
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#define EGL_EGLEXT_PROTOTYPES
+
+#include <gui/BufferQueue.h>
+#include <gui/GraphicBufferAlloc.h>
+#include <gui/Surface.h>
+
+#include "EglWindow.h"
+
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+
+#include <assert.h>
+
+using namespace android;
+
+
+status_t EglWindow::createWindow(const sp<IGraphicBufferProducer>& surface) {
+ status_t err = eglSetupContext();
+ if (err != NO_ERROR) {
+ return err;
+ }
+
+ surface->query(NATIVE_WINDOW_WIDTH, &mWidth);
+ surface->query(NATIVE_WINDOW_HEIGHT, &mHeight);
+
+ // Output side (EGL surface to draw on).
+ sp<ANativeWindow> anw = new Surface(surface);
+ mEglSurface = eglCreateWindowSurface(mEglDisplay, mEglConfig, anw.get(),
+ NULL);
+ if (mEglSurface == EGL_NO_SURFACE) {
+ ALOGE("eglCreateWindowSurface error: %#x", eglGetError());
+ eglRelease();
+ return UNKNOWN_ERROR;
+ }
+
+ return NO_ERROR;
+}
+
+status_t EglWindow::makeCurrent() const {
+ if (!eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) {
+ ALOGE("eglMakeCurrent failed: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+ return NO_ERROR;
+}
+
+status_t EglWindow::eglSetupContext() {
+ EGLBoolean result;
+
+ mEglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+ if (mEglDisplay == EGL_NO_DISPLAY) {
+ ALOGE("eglGetDisplay failed: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ EGLint majorVersion, minorVersion;
+ result = eglInitialize(mEglDisplay, &majorVersion, &minorVersion);
+ if (result != EGL_TRUE) {
+ ALOGE("eglInitialize failed: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+ ALOGV("Initialized EGL v%d.%d", majorVersion, minorVersion);
+
+ EGLint numConfigs = 0;
+ EGLint configAttribs[] = {
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_RECORDABLE_ANDROID, 1,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_NONE
+ };
+ result = eglChooseConfig(mEglDisplay, configAttribs, &mEglConfig, 1,
+ &numConfigs);
+ if (result != EGL_TRUE) {
+ ALOGE("eglChooseConfig error: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ EGLint contextAttribs[] = {
+ EGL_CONTEXT_CLIENT_VERSION, 2,
+ EGL_NONE
+ };
+ mEglContext = eglCreateContext(mEglDisplay, mEglConfig, EGL_NO_CONTEXT,
+ contextAttribs);
+ if (mEglContext == EGL_NO_CONTEXT) {
+ ALOGE("eglCreateContext error: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ return NO_ERROR;
+}
+
+void EglWindow::eglRelease() {
+ ALOGV("EglWindow::eglRelease");
+ if (mEglDisplay != EGL_NO_DISPLAY) {
+ eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE,
+ EGL_NO_CONTEXT);
+
+ if (mEglContext != EGL_NO_CONTEXT) {
+ eglDestroyContext(mEglDisplay, mEglContext);
+ }
+
+ if (mEglSurface != EGL_NO_SURFACE) {
+ eglDestroySurface(mEglDisplay, mEglSurface);
+ }
+ }
+
+ mEglDisplay = EGL_NO_DISPLAY;
+ mEglContext = EGL_NO_CONTEXT;
+ mEglSurface = EGL_NO_SURFACE;
+ mEglConfig = NULL;
+
+ eglReleaseThread();
+}
+
+// Sets the presentation time on the current EGL buffer.
+void EglWindow::presentationTime(nsecs_t whenNsec) const {
+ eglPresentationTimeANDROID(mEglDisplay, mEglSurface, whenNsec);
+}
+
+// Swaps the EGL buffer.
+void EglWindow::swapBuffers() const {
+ eglSwapBuffers(mEglDisplay, mEglSurface);
+}
diff --git a/cmds/screenrecord/EglWindow.h b/cmds/screenrecord/EglWindow.h
new file mode 100644
index 0000000..02a2efc
--- /dev/null
+++ b/cmds/screenrecord/EglWindow.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SCREENRECORD_EGL_WINDOW_H
+#define SCREENRECORD_EGL_WINDOW_H
+
+#include <gui/BufferQueue.h>
+#include <utils/Errors.h>
+
+#include <EGL/egl.h>
+
+namespace android {
+
+/*
+ * Wraps EGL display, context, surface, config for a window surface.
+ *
+ * Not thread safe.
+ */
+class EglWindow {
+public:
+ EglWindow() :
+ mEglDisplay(EGL_NO_DISPLAY),
+ mEglContext(EGL_NO_CONTEXT),
+ mEglSurface(EGL_NO_SURFACE),
+ mEglConfig(NULL),
+ mWidth(0),
+ mHeight(0)
+ {}
+ ~EglWindow() { eglRelease(); }
+
+ // Creates an EGL window for the supplied surface.
+ status_t createWindow(const sp<IGraphicBufferProducer>& surface);
+
+ // Return width and height values (obtained from IGBP).
+ int getWidth() const { return mWidth; }
+ int getHeight() const { return mHeight; }
+
+ // Release anything we created.
+ void release() { eglRelease(); }
+
+ // Make this context current.
+ status_t makeCurrent() const;
+
+ // Sets the presentation time on the current EGL buffer.
+ void presentationTime(nsecs_t whenNsec) const;
+
+ // Swaps the EGL buffer.
+ void swapBuffers() const;
+
+private:
+ EglWindow(const EglWindow&);
+ EglWindow& operator=(const EglWindow&);
+
+ // Init display, create config and context.
+ status_t eglSetupContext();
+ void eglRelease();
+
+ // Basic EGL goodies.
+ EGLDisplay mEglDisplay;
+ EGLContext mEglContext;
+ EGLSurface mEglSurface;
+ EGLConfig mEglConfig;
+
+ // Surface dimensions.
+ int mWidth;
+ int mHeight;
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_EGL_WINDOW_H*/
diff --git a/cmds/screenrecord/FontBitmap.h b/cmds/screenrecord/FontBitmap.h
new file mode 100644
index 0000000..2b94f35
--- /dev/null
+++ b/cmds/screenrecord/FontBitmap.h
@@ -0,0 +1,6571 @@
+// auto-generated from Android default system font at 24pts
+class FontBitmap {
+public:
+ static const uint32_t width = 256;
+ static const uint32_t height = 204;
+ static const uint32_t numGlyphs = 95;
+ static const uint32_t firstGlyphChar = 32;
+ static const uint32_t maxGlyphHeight = 34;
+ static const uint32_t outlineWidth = 1;
+ static const uint8_t pixels[];
+ static const uint16_t yoffset[];
+ static const uint16_t glyphWidth[];
+};
+const uint8_t FontBitmap::pixels[] = {
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0xca, 0xd2,
+ 0xb4, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xe, 0x40, 0x68, 0x62, 0x4a,
+ 0x4a, 0x6a, 0x5c, 0x30, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4, 0x9b, 0xd7,
+ 0x4b, 0x48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe, 0x40, 0x68, 0x66, 0x3e, 0xa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0x66, 0x9a, 0x98,
+ 0x56, 0x0, 0x1c, 0xa0, 0xa8, 0x9c, 0x16, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20, 0x16, 0xc,
+ 0x0, 0x0, 0x0, 0x3e, 0x27, 0x67, 0x67, 0x13,
+ 0x39, 0x67, 0x61, 0xde, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x12, 0x16, 0x10, 0x6,
+ 0xc, 0x16, 0x14, 0xa, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x14, 0xe4, 0xbb, 0xff,
+ 0x5b, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x10, 0x3e, 0x5a, 0x54, 0x2c,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x1a, 0x4a, 0x6c, 0x62, 0x38, 0xa,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x3e, 0x27, 0x67, 0x67, 0x21, 0x32, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x9c, 0xd, 0x9d, 0x8d,
+ 0xcc, 0x0, 0x74, 0x43, 0xc7, 0x39, 0xdc, 0x24,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0x14, 0x18, 0x10, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa, 0x14, 0x1a, 0x12, 0x6, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x1c, 0x4a, 0x6c, 0x68, 0x40,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0x2a, 0x58, 0x76,
+ 0x68, 0x3e, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x54, 0x11, 0x23, 0x23, 0x23, 0xfe,
+ 0x0, 0x0, 0x0, 0x64, 0x63, 0xff, 0xff, 0x35,
+ 0x8d, 0xff, 0xf1, 0xf8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x9c, 0x19, 0x23, 0x15, 0x7e,
+ 0xb, 0x23, 0x21, 0xb8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x2e, 0xba, 0xfe, 0x35, 0xcb, 0xff,
+ 0x77, 0x5, 0xd8, 0x4a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2, 0x78, 0xfc, 0x2f, 0x5f, 0x51, 0x19,
+ 0xe0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x20, 0xba, 0xfe, 0x41, 0x67, 0x5f, 0x21, 0xf2,
+ 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x64, 0x63, 0xff, 0xff, 0x57, 0x4e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x88, 0x15, 0xcb, 0xff, 0xdb,
+ 0xd4, 0x0, 0x7a, 0x9b, 0xff, 0xef, 0x4f, 0xd8,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x9c, 0x1d, 0x23, 0x13, 0x56, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+ 0xfa, 0x21, 0x23, 0x17, 0x5a, 0x0, 0x0, 0x0,
+ 0x0, 0x3e, 0xd0, 0xfe, 0x43, 0x67, 0x61, 0x33,
+ 0xfe, 0xae, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x16, 0x4e, 0x98, 0xd4, 0xf8,
+ 0x5, 0xde, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x6, 0x70, 0xf0, 0x11, 0x53, 0x69,
+ 0x5f, 0x2f, 0xfe, 0xb2, 0x26, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8c, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xff, 0x27,
+ 0x8d, 0xff, 0xeb, 0xfc, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xec, 0xcb, 0xff, 0x89, 0xbe,
+ 0x71, 0xff, 0xdf, 0xdc, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x38, 0xf6, 0x5d, 0xd9, 0xff, 0xff, 0xff,
+ 0xff, 0xe9, 0x7f, 0xfe, 0x5e, 0x0, 0x0, 0x0,
+ 0x0, 0x58, 0xb, 0xaf, 0xff, 0xff, 0xff, 0xf1,
+ 0x71, 0xec, 0x16, 0x4, 0x38, 0x38, 0x36, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+ 0xde, 0x49, 0xdb, 0xff, 0xff, 0xff, 0xf9, 0x97,
+ 0xfe, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0x63, 0xff, 0xff, 0x4d, 0x4c, 0x0, 0x0,
+ 0x0, 0x0, 0x42, 0xfe, 0xbb, 0xff, 0xfb, 0x5f,
+ 0xc0, 0x0, 0x6a, 0x25, 0xdf, 0xff, 0xed, 0x33,
+ 0x9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xd2, 0xcb, 0xff, 0x89, 0x84, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x62,
+ 0x31, 0xff, 0xff, 0x8d, 0x66, 0x0, 0x0, 0x0,
+ 0x4e, 0xfe, 0x71, 0xe5, 0xff, 0xff, 0xff, 0xff,
+ 0xd1, 0x4b, 0xe8, 0x24, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x78, 0xe8, 0xfe, 0x37, 0x73, 0xa3, 0xcf,
+ 0xf5, 0x15, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4, 0xa6, 0x15, 0xa5, 0xf7, 0xff, 0xff,
+ 0xff, 0xff, 0xd3, 0x53, 0xf2, 0x2e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xf5, 0xfe,
+ 0x8d, 0xff, 0xd1, 0xf6, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xe, 0xfe, 0xef, 0xff, 0x5b, 0xe2,
+ 0x9b, 0xff, 0xbb, 0xe8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xd4, 0x6b, 0xfd, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x95, 0xf6, 0x16, 0x0, 0x0,
+ 0x0, 0xc4, 0x8f, 0xff, 0xff, 0xbf, 0xdb, 0xff,
+ 0xf9, 0x39, 0x5e, 0x68, 0x13, 0x67, 0xfe, 0x6c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72,
+ 0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x89, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0x63, 0xff, 0xff, 0x19, 0x2a, 0x0, 0x0,
+ 0x0, 0x4, 0xda, 0x77, 0xff, 0xff, 0x89, 0xf4,
+ 0x30, 0x0, 0xc, 0xc0, 0x41, 0xf9, 0xff, 0xc9,
+ 0xfe, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x2e, 0x2e,
+ 0x2a, 0xe8, 0xbf, 0xff, 0x7b, 0x9e, 0x1a, 0x1a,
+ 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2,
+ 0x1a, 0x32, 0x46, 0x34, 0x1c, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc8,
+ 0x8d, 0xff, 0xff, 0x31, 0x62, 0x0, 0x0, 0x12,
+ 0xf0, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xf7, 0x4f, 0xbc, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xd6, 0xaf, 0xef, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x64, 0x11, 0xd1, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xfb, 0x5d, 0xc8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xdb, 0xfe,
+ 0x8d, 0xff, 0xb5, 0xe2, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x3c, 0x29, 0xff, 0xff, 0x23, 0xf2,
+ 0xc3, 0xff, 0x93, 0xc2, 0x0, 0x0, 0x0, 0x0,
+ 0x22, 0x9, 0xe9, 0xff, 0xff, 0xef, 0x93, 0x89,
+ 0xe5, 0xff, 0xff, 0xfd, 0x39, 0x68, 0x0, 0x0,
+ 0x0, 0xf2, 0xd5, 0xff, 0xa7, 0xfe, 0xf, 0xeb,
+ 0xff, 0x87, 0xac, 0xf4, 0x9b, 0xff, 0xa3, 0x7a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc8,
+ 0x9f, 0xff, 0xff, 0xed, 0x85, 0x9d, 0xfd, 0xff,
+ 0xeb, 0xfe, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0x63, 0xff, 0xe7, 0xfe, 0x6, 0x0, 0x0,
+ 0x0, 0x4c, 0x11, 0xed, 0xff, 0xdf, 0x9, 0x52,
+ 0x0, 0x0, 0x0, 0x1a, 0xf4, 0xa3, 0xff, 0xff,
+ 0x6f, 0xc0, 0x0, 0x0, 0x0, 0x42, 0x17, 0x57,
+ 0xfe, 0xf8, 0xb5, 0xff, 0x6d, 0xec, 0x5, 0x41,
+ 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+ 0xb, 0x3f, 0x3f, 0x3f, 0xf, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xfe,
+ 0xd5, 0xff, 0xd1, 0xfc, 0x12, 0x0, 0x0, 0x68,
+ 0x31, 0xf9, 0xff, 0xff, 0xdf, 0x89, 0x95, 0xf3,
+ 0xff, 0xff, 0xdd, 0xfe, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0xe4, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xe0, 0x9b, 0xff, 0xff, 0xff, 0xbd, 0x7f,
+ 0x9f, 0xf9, 0xff, 0xff, 0xe3, 0xfe, 0x20, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xbf, 0xf8,
+ 0x8d, 0xff, 0x95, 0xc2, 0x0, 0x0, 0x0, 0x14,
+ 0x34, 0x50, 0xaa, 0x5f, 0xff, 0xeb, 0xfe, 0xfe,
+ 0xe5, 0xff, 0x69, 0xb0, 0x36, 0x16, 0x0, 0x0,
+ 0x4e, 0x4d, 0xff, 0xff, 0xff, 0x73, 0xf2, 0xe6,
+ 0x3b, 0xfd, 0xff, 0xff, 0x93, 0xb4, 0x0, 0x0,
+ 0x0, 0xfa, 0xeb, 0xff, 0x83, 0xbe, 0xf8, 0xcd,
+ 0xff, 0xa1, 0xea, 0x43, 0xfb, 0xf9, 0x3d, 0x7a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe8,
+ 0xcd, 0xff, 0xff, 0x83, 0xf4, 0xfe, 0xc1, 0xff,
+ 0xff, 0x15, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0x63, 0xff, 0xc7, 0xf0, 0x0, 0x0, 0x0,
+ 0x0, 0xbc, 0x7f, 0xff, 0xff, 0x7f, 0xcc, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x74, 0x2d, 0xfd, 0xff,
+ 0xd9, 0xfe, 0x22, 0x0, 0x0, 0x82, 0x71, 0xff,
+ 0xdb, 0x85, 0xb1, 0xff, 0x71, 0x8f, 0xe5, 0xeb,
+ 0x5, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x34, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0x37,
+ 0xff, 0xff, 0x89, 0xc4, 0x0, 0x0, 0x0, 0xbe,
+ 0x93, 0xff, 0xff, 0xf5, 0x27, 0xe0, 0xf2, 0x61,
+ 0xff, 0xff, 0xff, 0x57, 0x76, 0x0, 0x0, 0x0,
+ 0x0, 0xcc, 0x8f, 0xa7, 0xa7, 0xc9, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x14, 0xfe, 0xed, 0xff, 0xff, 0xbf, 0xfe, 0xcc,
+ 0xfa, 0x89, 0xff, 0xff, 0xff, 0x47, 0x4e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x60, 0x63, 0xff, 0xa1, 0xe4,
+ 0x8d, 0xff, 0x75, 0x8a, 0x0, 0x0, 0x0, 0x7e,
+ 0x33, 0x4d, 0x4d, 0xa1, 0xff, 0xd5, 0x4d, 0x55,
+ 0xff, 0xff, 0x6b, 0x4d, 0x37, 0x8e, 0x0, 0x0,
+ 0x64, 0x63, 0xff, 0xff, 0xff, 0x49, 0x8a, 0x18,
+ 0xfc, 0xe1, 0xff, 0xff, 0xb7, 0xb6, 0x0, 0x0,
+ 0x0, 0xf8, 0xdf, 0xff, 0x91, 0xf4, 0xfe, 0xdb,
+ 0xff, 0x93, 0xfe, 0xcf, 0xff, 0x97, 0xf2, 0x1a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea,
+ 0xcf, 0xff, 0xff, 0x7d, 0xe0, 0xfe, 0xd3, 0xff,
+ 0xf5, 0xfe, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x60, 0x63, 0xff, 0xa3, 0xc4, 0x0, 0x0, 0x0,
+ 0x8, 0xfa, 0xcf, 0xff, 0xfb, 0x21, 0x50, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x10, 0xfc, 0xcb, 0xff,
+ 0xff, 0x4d, 0x78, 0x0, 0x0, 0x80, 0x8f, 0xf9,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+ 0x43, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcc, 0x91,
+ 0xff, 0xff, 0x2f, 0x5e, 0x0, 0x0, 0x0, 0xec,
+ 0xc7, 0xff, 0xff, 0xc3, 0xf8, 0xc, 0x30, 0xfe,
+ 0xef, 0xff, 0xff, 0x93, 0xb6, 0x0, 0x0, 0x0,
+ 0x0, 0x58, 0xa0, 0xc8, 0xee, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1a, 0x33, 0xff, 0xff, 0xff, 0x77, 0xac, 0x0,
+ 0x80, 0x43, 0xff, 0xff, 0xff, 0x67, 0x68, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x3a, 0x1f, 0x51, 0x2d, 0xa8,
+ 0x2d, 0x51, 0x1d, 0x46, 0x0, 0x0, 0x0, 0xac,
+ 0xa9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xbb, 0xbc, 0x0, 0x0,
+ 0x4c, 0x49, 0xff, 0xff, 0xff, 0x85, 0xf6, 0x60,
+ 0xc2, 0x47, 0x57, 0x57, 0x41, 0x8e, 0x0, 0x0,
+ 0x0, 0xdc, 0xb1, 0xff, 0xeb, 0x7b, 0x99, 0xff,
+ 0xff, 0x5d, 0x7d, 0xff, 0xdf, 0xf, 0x60, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xce,
+ 0xa7, 0xff, 0xff, 0xcb, 0xb, 0x9b, 0xff, 0xff,
+ 0xaf, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x3a, 0x1d, 0x4d, 0x29, 0x74, 0x0, 0x0, 0x0,
+ 0x32, 0x1f, 0xfb, 0xff, 0xd5, 0xfc, 0xa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xcc, 0x95, 0xff,
+ 0xff, 0x9b, 0xc6, 0x0, 0x0, 0x58, 0xee, 0x13,
+ 0x67, 0xbd, 0xff, 0xff, 0xf7, 0xaf, 0x6b, 0x19,
+ 0xee, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xfe, 0xd9,
+ 0xff, 0xcf, 0xfc, 0x10, 0x0, 0x0, 0x0, 0xf8,
+ 0xdf, 0xff, 0xff, 0xa9, 0xda, 0x0, 0x0, 0xfa,
+ 0xd7, 0xff, 0xff, 0xaf, 0xd6, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1a, 0x1b, 0x63, 0x63, 0x63, 0x27, 0x4a, 0x0,
+ 0xa2, 0x5b, 0xff, 0xff, 0xff, 0x51, 0x58, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x8, 0x2e, 0x3a, 0x34, 0x1e,
+ 0x34, 0x3a, 0x2e, 0x8, 0x0, 0x0, 0x0, 0xa4,
+ 0x93, 0xdd, 0xdd, 0xfb, 0xff, 0xe7, 0xdd, 0xed,
+ 0xff, 0xf5, 0xdd, 0xdd, 0xa1, 0xb6, 0x0, 0x0,
+ 0x20, 0x9, 0xe9, 0xff, 0xff, 0xf9, 0x93, 0x1b,
+ 0xee, 0x9a, 0x6c, 0x5e, 0x40, 0x1a, 0x0, 0x0,
+ 0x0, 0x82, 0x2d, 0xe7, 0xff, 0xff, 0xff, 0xff,
+ 0xb5, 0x27, 0xf1, 0xff, 0x59, 0xc4, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c,
+ 0x3d, 0xfb, 0xff, 0xff, 0xe9, 0xff, 0xff, 0xdf,
+ 0x21, 0x7c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x8, 0x2a, 0x36, 0x30, 0xe, 0x0, 0x0, 0x0,
+ 0x6e, 0x59, 0xff, 0xff, 0xaf, 0xe2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x65, 0xff,
+ 0xff, 0xc9, 0xf0, 0x0, 0x0, 0x0, 0x4, 0x8e,
+ 0xd, 0xd1, 0xff, 0xfb, 0xfd, 0x5b, 0xee, 0x48,
+ 0x6, 0x0, 0x0, 0x20, 0x7a, 0xb0, 0xc8, 0xd4,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0xd8, 0xc8, 0xb0,
+ 0x7c, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x6c, 0x3b, 0xff,
+ 0xff, 0x87, 0xc2, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xe9, 0xff, 0xff, 0xa3, 0xd0, 0x0, 0x0, 0xf4,
+ 0xd1, 0xff, 0xff, 0xbb, 0xe0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x8, 0x38, 0x60, 0x7a, 0x62, 0x3c, 0xc, 0x30,
+ 0xfc, 0xb7, 0xff, 0xff, 0xf3, 0x17, 0x2c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5a,
+ 0xce, 0xf0, 0x5, 0xf9, 0xff, 0x4f, 0xfe, 0xa9,
+ 0xff, 0xb1, 0xfe, 0xf2, 0xd2, 0x68, 0x0, 0x0,
+ 0x0, 0xd2, 0x67, 0xfb, 0xff, 0xff, 0xff, 0xf3,
+ 0xa5, 0x2f, 0xf0, 0x5a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x10, 0xc8, 0x19, 0x85, 0xab, 0xa1, 0x69,
+ 0xfe, 0xb7, 0xff, 0xb1, 0xfc, 0x2c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0xfc, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x23,
+ 0xbc, 0x46, 0x6a, 0x7a, 0x52, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa0, 0x81, 0xff, 0xff, 0x95, 0xc2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x54, 0x43, 0xff,
+ 0xff, 0xe9, 0xfe, 0x0, 0x0, 0x0, 0x38, 0xfe,
+ 0xa7, 0xff, 0xd9, 0x7d, 0xff, 0xeb, 0x29, 0x9e,
+ 0x0, 0x0, 0x0, 0x5a, 0x49, 0x9f, 0x9f, 0x9f,
+ 0xa9, 0xff, 0xff, 0xff, 0xad, 0x9f, 0x9f, 0x9f,
+ 0x4d, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x50, 0xa6, 0xd0,
+ 0xdc, 0xdc, 0xdc, 0xda, 0xb8, 0x74, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x93, 0xff,
+ 0xfd, 0x2d, 0x5a, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xeb, 0xff, 0xff, 0xa3, 0xce, 0x0, 0x0, 0xf2,
+ 0xd1, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xe0,
+ 0x5f, 0xff, 0xff, 0xff, 0x99, 0xe8, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4e, 0x3d, 0xff, 0xfd, 0x15, 0xf8, 0xcf,
+ 0xff, 0x89, 0xb4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0xf2, 0x53, 0xdb, 0xff, 0xff, 0xff,
+ 0xff, 0xf9, 0x93, 0x5, 0x84, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x6, 0x52, 0xa0, 0xc6, 0xc0, 0xe6,
+ 0x5d, 0xff, 0xef, 0x25, 0xd6, 0xd4, 0xd4, 0xaa,
+ 0x54, 0x4, 0x0, 0x0, 0x0, 0x0, 0x1c, 0xda,
+ 0x3b, 0xdb, 0xff, 0xff, 0xff, 0xfb, 0x47, 0xec,
+ 0x36, 0xf, 0x6f, 0x6f, 0x43, 0x6e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xbc, 0x95, 0xff, 0xff, 0x83, 0xac, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0x27, 0xff,
+ 0xff, 0xfb, 0xfe, 0x6, 0x0, 0x0, 0x40, 0x6b,
+ 0xff, 0xff, 0x51, 0xfe, 0xd1, 0xff, 0xcb, 0xb4,
+ 0x0, 0x0, 0x0, 0x86, 0x77, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x7b, 0x8a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x87, 0xb3,
+ 0xb3, 0xb3, 0xb3, 0xb3, 0xab, 0xec, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x1a, 0xfe, 0xdb, 0xff,
+ 0xcd, 0xfc, 0x10, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xeb, 0xff, 0xff, 0xa3, 0xce, 0x0, 0x0, 0xf2,
+ 0xd1, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xc6, 0x37,
+ 0xf1, 0xff, 0xff, 0xd5, 0xf, 0x64, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0xc0,
+ 0xea, 0xfa, 0x6f, 0xff, 0xe3, 0xfe, 0xfe, 0xf1,
+ 0xff, 0x5b, 0xf6, 0xd2, 0x78, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x26, 0xbc, 0x5, 0x6d, 0xc9, 0xff,
+ 0xff, 0xff, 0xff, 0xb9, 0xfe, 0x34, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x11,
+ 0xe3, 0xff, 0x79, 0x13, 0x8b, 0xb7, 0xb7, 0x89,
+ 0x11, 0xb0, 0x4, 0x0, 0x0, 0x0, 0xb6, 0x41,
+ 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x2d,
+ 0xca, 0x43, 0xff, 0xff, 0x93, 0x96, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc8, 0xa1, 0xff, 0xff, 0x7b, 0xa0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0xff,
+ 0xff, 0xff, 0x15, 0xe, 0x0, 0x0, 0x40, 0x21,
+ 0xb7, 0xad, 0xfa, 0xbc, 0x4b, 0xf1, 0x71, 0xb0,
+ 0x0, 0x0, 0x0, 0x82, 0x77, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x7b, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc, 0xc1, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xf5, 0xfc, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x6e, 0x3f, 0xff, 0xff,
+ 0x85, 0xbe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xeb, 0xff, 0xff, 0xa3, 0xce, 0x0, 0x0, 0xf2,
+ 0xd1, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa, 0xb6, 0x2b, 0xe3,
+ 0xff, 0xff, 0xeb, 0x31, 0xb0, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8e, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x77,
+ 0xd7, 0xd7, 0xe9, 0xff, 0xf5, 0xd7, 0xd7, 0xff,
+ 0xff, 0xdb, 0xd7, 0xaf, 0xce, 0x0, 0x0, 0x0,
+ 0x3a, 0x6a, 0x90, 0x80, 0x7c, 0xb8, 0xfc, 0x47,
+ 0xd3, 0xff, 0xff, 0xff, 0x65, 0x8e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xf4, 0x9b,
+ 0xff, 0xcb, 0x17, 0xdd, 0xff, 0xff, 0xff, 0xff,
+ 0xd9, 0x11, 0x56, 0x0, 0x0, 0x1c, 0xfe, 0xd9,
+ 0xff, 0xff, 0xd3, 0x4f, 0xf3, 0xff, 0xff, 0xd7,
+ 0x15, 0x77, 0xff, 0xff, 0x7b, 0x96, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xca, 0xa3, 0xff, 0xff, 0x79, 0x9e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xf, 0xff,
+ 0xff, 0xff, 0x1d, 0xe, 0x0, 0x0, 0xa, 0x86,
+ 0xbe, 0xd, 0x76, 0x22, 0xda, 0x1f, 0xe0, 0x3e,
+ 0x0, 0x0, 0x0, 0x56, 0x41, 0x8d, 0x8d, 0x8d,
+ 0x99, 0xff, 0xff, 0xff, 0x9f, 0x8d, 0x8d, 0x8d,
+ 0x43, 0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xcc, 0xc1, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xf5, 0xfa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xd4, 0x97, 0xff, 0xfd,
+ 0x29, 0x58, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xe9, 0xff, 0xff, 0xa3, 0xd0, 0x0, 0x0, 0xf4,
+ 0xd1, 0xff, 0xff, 0xbb, 0xe0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0xa8, 0x21, 0xdb, 0xff,
+ 0xff, 0xf3, 0x49, 0xd4, 0x12, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x58, 0x1b, 0x35, 0x35, 0x35, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88, 0x8d,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd1, 0xd2, 0x0, 0x0, 0x0,
+ 0xd4, 0x6d, 0x73, 0x73, 0x47, 0x88, 0x1e, 0xb2,
+ 0x21, 0xf3, 0xff, 0xff, 0xa7, 0xc8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa8, 0x41, 0xfb,
+ 0xf9, 0x3d, 0x93, 0xff, 0xf3, 0x73, 0x79, 0xf7,
+ 0xff, 0x8b, 0xae, 0x0, 0x0, 0x48, 0x43, 0xff,
+ 0xff, 0xff, 0x67, 0xf8, 0x61, 0xfb, 0xff, 0xff,
+ 0xbf, 0xcf, 0xff, 0xff, 0x41, 0x5a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc2, 0x9b, 0xff, 0xff, 0x7f, 0xa6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x21, 0xff,
+ 0xff, 0xff, 0x5, 0x8, 0x0, 0x0, 0x0, 0x0,
+ 0x2, 0x2, 0x2, 0x0, 0x8, 0x8, 0x8, 0x0,
+ 0x0, 0x0, 0x0, 0x1c, 0x68, 0x9c, 0xb6, 0xc2,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0xc8, 0xb6, 0x9c,
+ 0x6a, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x9, 0xd,
+ 0xd, 0xd, 0xd, 0xd, 0xb, 0xde, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x1c, 0xfe, 0xdd, 0xff, 0xcb,
+ 0xfc, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8,
+ 0xdf, 0xff, 0xff, 0xa9, 0xdc, 0x0, 0x0, 0xfa,
+ 0xd7, 0xff, 0xff, 0xaf, 0xd4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4, 0x9a, 0x17, 0xd1, 0xff, 0xff,
+ 0xf9, 0x5b, 0xe4, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8, 0x1a, 0x2c, 0x36, 0x26, 0x14,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x2b,
+ 0x4d, 0x4d, 0xe9, 0xff, 0x8b, 0x4d, 0xa7, 0xff,
+ 0xd3, 0x4d, 0x4d, 0x3f, 0xaa, 0x0, 0x0, 0x0,
+ 0xee, 0xe9, 0xff, 0xff, 0xaf, 0xe6, 0x6, 0x14,
+ 0xfe, 0xd9, 0xff, 0xff, 0xb9, 0xd8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xfe, 0xcf, 0xff,
+ 0x97, 0xfe, 0xc1, 0xff, 0xb1, 0xfa, 0xfa, 0xb9,
+ 0xff, 0xbb, 0xdc, 0x0, 0x0, 0x5c, 0x5f, 0xff,
+ 0xff, 0xff, 0x4f, 0xa8, 0xf6, 0x7f, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd9, 0xfe, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x8b, 0xff, 0xff, 0x8b, 0xb8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x35, 0xff,
+ 0xff, 0xf3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x4,
+ 0x6, 0x6, 0x6, 0x6, 0x4, 0x2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x74, 0x43, 0xff, 0xff, 0x81,
+ 0xba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea,
+ 0xc5, 0xff, 0xff, 0xc5, 0xf8, 0x10, 0x32, 0xfe,
+ 0xf1, 0xff, 0xff, 0x91, 0xb4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x88, 0xf, 0xc7, 0xff, 0xff, 0xfd,
+ 0x6b, 0xf0, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x30,
+ 0x68, 0x13, 0xfd, 0xff, 0x3f, 0xf2, 0xb3, 0xff,
+ 0xa7, 0xe4, 0x54, 0x3a, 0x1a, 0x0, 0x0, 0x0,
+ 0xee, 0xc9, 0xff, 0xff, 0xeb, 0x19, 0xe2, 0xe0,
+ 0x21, 0xf3, 0xff, 0xff, 0xa7, 0xc6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x8, 0xe0, 0x7d, 0xff, 0xdf,
+ 0xf, 0xf0, 0xcb, 0xff, 0xa7, 0xe4, 0xe6, 0xad,
+ 0xff, 0xc5, 0xe2, 0x0, 0x0, 0x48, 0x43, 0xff,
+ 0xff, 0xff, 0x99, 0xfc, 0xd8, 0xfe, 0x9f, 0xff,
+ 0xff, 0xff, 0xff, 0x63, 0xca, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x84, 0x69, 0xff, 0xff, 0xa5, 0xd4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x57, 0xff,
+ 0xff, 0xd5, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x3c, 0xcc, 0xf2, 0xf6,
+ 0xdc, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14,
+ 0x0, 0x0, 0x0, 0xd8, 0x9b, 0xff, 0xfb, 0x27,
+ 0x54, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba,
+ 0x8f, 0xff, 0xff, 0xf7, 0x2d, 0xe8, 0xf4, 0x63,
+ 0xff, 0xff, 0xff, 0x53, 0x72, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x74, 0x9, 0xbd, 0xff, 0xff, 0xff, 0x7d,
+ 0xfe, 0xe6, 0xe0, 0xe0, 0xda, 0xb4, 0x66, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8a, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x64, 0x4d, 0xff, 0xf9, 0x9, 0xfa, 0xd7, 0xff,
+ 0x7d, 0xa6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xb2, 0x77, 0xff, 0xff, 0xff, 0xe1, 0x95, 0x91,
+ 0xdd, 0xff, 0xff, 0xff, 0x5f, 0x8a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x8, 0x1f, 0xf1, 0xff, 0x59,
+ 0xc4, 0xd4, 0xb1, 0xff, 0xd1, 0x5, 0xfe, 0xcd,
+ 0xff, 0xab, 0xce, 0x0, 0x0, 0x1c, 0xfe, 0xdf,
+ 0xff, 0xff, 0xff, 0xb1, 0x87, 0x9f, 0xe3, 0xff,
+ 0xff, 0xff, 0xfd, 0x63, 0xea, 0x1e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x48, 0x39, 0xff, 0xff, 0xc5, 0xf4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x7f, 0xff,
+ 0xff, 0xb1, 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x36, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x74, 0x71, 0xe3, 0xe3,
+ 0xaf, 0xc4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26,
+ 0x0, 0x0, 0x20, 0xfe, 0xe1, 0xff, 0xc9, 0xfa,
+ 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60,
+ 0x2b, 0xf7, 0xff, 0xff, 0xe5, 0x93, 0x9d, 0xf5,
+ 0xff, 0xff, 0xd9, 0xfe, 0x26, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xda, 0xab, 0xff, 0xff, 0xff, 0xed, 0xb7,
+ 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x9d, 0xd0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa4, 0x7b, 0xff, 0xd9, 0xfc, 0x5, 0xf7, 0xff,
+ 0x4f, 0x66, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x42, 0x5, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xb5, 0xfe, 0x30, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x8, 0xdc, 0x55, 0x8d, 0xfc,
+ 0x2c, 0x94, 0x5f, 0xff, 0xff, 0xdb, 0xd5, 0xff,
+ 0xff, 0x59, 0x8a, 0x0, 0x0, 0x0, 0xc2, 0x55,
+ 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xf5, 0x45, 0xce, 0x10, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x16, 0xfe, 0xe5, 0xff, 0xef, 0x5, 0x2a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0xee, 0xb3, 0xff,
+ 0xff, 0x6d, 0x9a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
+ 0x11, 0x67, 0x67, 0x67, 0x19, 0x20, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x9c, 0x7f, 0xff, 0xff,
+ 0xc5, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x36,
+ 0x0, 0x0, 0x78, 0x47, 0xff, 0xff, 0x7f, 0xb8,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+ 0xea, 0x79, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xf3, 0x47, 0xb6, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xf6, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xf0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8a, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x94, 0xa5, 0xff, 0xb5, 0xda, 0x3d, 0xff, 0xff,
+ 0x15, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x84, 0xfe, 0x7f, 0xe1, 0xff, 0xff, 0xff,
+ 0xff, 0xdf, 0x7b, 0xfe, 0x80, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x28, 0x72, 0x72, 0x56,
+ 0x0, 0x30, 0xfe, 0x83, 0xf5, 0xff, 0xff, 0xf5,
+ 0x81, 0xfc, 0x2a, 0x0, 0x0, 0x0, 0x28, 0xec,
+ 0x47, 0xc9, 0xfd, 0xff, 0xff, 0xff, 0xf3, 0xa7,
+ 0x41, 0xe3, 0xff, 0xff, 0xe9, 0x35, 0x10, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xde, 0xa5, 0xff, 0xff, 0x59, 0x98, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x44, 0xb, 0xef, 0xff,
+ 0xf3, 0x17, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4,
+ 0x38, 0x62, 0x80, 0x64, 0x3a, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa6, 0x7f, 0xff, 0xff,
+ 0xc1, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26,
+ 0x0, 0x0, 0xdc, 0x9d, 0xff, 0xfb, 0x23, 0x50,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x44, 0xf8, 0x63, 0xd9, 0xff, 0xff, 0xff, 0xfd,
+ 0xc7, 0x41, 0xe2, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x7c, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xee, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xe8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6c, 0xfe, 0xfe, 0xfe, 0x8c, 0xfe, 0xfe, 0xfe,
+ 0xf6, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4a, 0xcc, 0xfe, 0x2f, 0xed, 0xff,
+ 0x27, 0xfe, 0xca, 0x46, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0xe8, 0xf, 0x43, 0x43, 0xf,
+ 0xe8, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+ 0xa4, 0xfa, 0x1f, 0x4f, 0x59, 0x41, 0x9, 0xec,
+ 0xde, 0xfe, 0xfe, 0xfe, 0xfe, 0xc8, 0x10, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x7a, 0x39, 0xfd, 0xff, 0xbb, 0xfa, 0x24,
+ 0x0, 0x0, 0x0, 0x4, 0xce, 0x77, 0xff, 0xff,
+ 0x9f, 0xea, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xbe, 0x89, 0xff, 0xff,
+ 0xa7, 0xca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14,
+ 0x0, 0x8, 0xe6, 0xe3, 0xff, 0xc7, 0xf8, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x32, 0xbe, 0xfe, 0x31, 0x55, 0x51, 0x23,
+ 0xfc, 0xa0, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xbc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xb2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x10, 0xf8, 0xe9, 0xff,
+ 0xfe, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x4, 0x20, 0x38, 0x38, 0x20,
+ 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0x2c, 0x50, 0x5e, 0x42, 0x1c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x16, 0xf8, 0xad, 0xff, 0xfd, 0x4d, 0xc2,
+ 0x8, 0x0, 0x0, 0x74, 0x11, 0xe3, 0xff, 0xef,
+ 0x25, 0x6e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0xf0, 0xaf, 0xff, 0xff,
+ 0x5d, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0x21, 0x95, 0x95, 0x55, 0xa4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x12, 0x38, 0x54, 0x52, 0x30,
+ 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xda, 0x91, 0x9f,
+ 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x7c, 0x21, 0xe9, 0xff, 0xdf, 0x1d,
+ 0x9e, 0x0, 0x52, 0xfe, 0xa9, 0xff, 0xff, 0x71,
+ 0xde, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x18, 0x17, 0xf1, 0xff, 0xd1,
+ 0xfe, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0x62, 0x9c, 0xa8, 0x76, 0x28, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0x9c, 0x9c,
+ 0x68, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xa, 0xd0, 0x4b, 0xf5, 0xff, 0xcb,
+ 0xce, 0x0, 0x78, 0x89, 0xff, 0xff, 0x9b, 0xfe,
+ 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x18, 0x37, 0xd9, 0xf1, 0x41,
+ 0xae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x22, 0xe6, 0x4b, 0xe7, 0xb5,
+ 0xd0, 0x0, 0x78, 0x6b, 0xfb, 0x8d, 0xfe, 0x64,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x14, 0xb4, 0x5, 0x31, 0xde,
+ 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x22, 0xcc, 0x17, 0x39,
+ 0x88, 0x0, 0x3a, 0xb, 0x3b, 0xf2, 0x56, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x10, 0x10,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x18, 0x18,
+ 0x14, 0x0, 0x2, 0x18, 0x18, 0x16, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0x30, 0x5c, 0x76,
+ 0x66, 0x3c, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x2, 0xe, 0x18, 0x20, 0x18, 0xc, 0x2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x16, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x1c, 0x48, 0x6c, 0x6a, 0x46, 0x1c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0xe, 0x18, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x1e, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2, 0x22, 0x52, 0x74, 0x6e, 0x46, 0x18,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x22, 0x50, 0x70, 0x60, 0x36,
+ 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x28, 0x56,
+ 0x76, 0x6e, 0x46, 0x18, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0x16, 0x20, 0x1c, 0x10, 0x6, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xe, 0x86, 0xf6, 0x1b, 0x57, 0x6b,
+ 0x5f, 0x2f, 0xfe, 0xba, 0x30, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7e, 0xd, 0x23, 0x23, 0x23, 0xb, 0x24, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x62, 0x11, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x5,
+ 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52,
+ 0xda, 0xfe, 0x41, 0x63, 0x61, 0x41, 0x5, 0xd4,
+ 0x2c, 0x0, 0x0, 0x0, 0x3a, 0xd, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x1d, 0xa8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5a, 0xe4, 0xb, 0x4b, 0x69, 0x63, 0x3d, 0xfe,
+ 0xc8, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x44, 0xd8, 0x5, 0x4b, 0x69, 0x5b, 0x21,
+ 0xf8, 0x8c, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x70, 0xec, 0x11, 0x51,
+ 0x69, 0x63, 0x3d, 0xfe, 0xcc, 0x3e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa, 0x46, 0x8c, 0xbe, 0xd2, 0xd2, 0xc4, 0x9a,
+ 0x56, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0xfe,
+ 0x23, 0x23, 0x23, 0x15, 0x94, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x12, 0xca, 0x29, 0xb5, 0xfb, 0xff, 0xff,
+ 0xff, 0xff, 0xd7, 0x5f, 0xfa, 0x40, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c,
+ 0xfc, 0xb3, 0xff, 0xff, 0xff, 0x4d, 0x42, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xac, 0x97, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x20, 0x0, 0x0, 0x0, 0x0, 0x4, 0x98, 0x9,
+ 0x89, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x5b,
+ 0x44, 0x0, 0x0, 0x0, 0x66, 0x6b, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xd3, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x78,
+ 0x9, 0x93, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xe1,
+ 0x6b, 0xfc, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0xfe, 0x79, 0xeb, 0xff, 0xff, 0xff, 0xfd,
+ 0xbb, 0x2b, 0xc8, 0xe, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xa4, 0x19, 0xa5, 0xf5, 0xff,
+ 0xff, 0xff, 0xff, 0xe3, 0x71, 0xfe, 0x4c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x92,
+ 0xf8, 0x21, 0x73, 0x99, 0xab, 0xaf, 0x9d, 0x7f,
+ 0x35, 0xfe, 0xac, 0x26, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x4f,
+ 0xff, 0xff, 0xff, 0xc5, 0xf8, 0xa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8a, 0x31, 0xe7, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x75, 0xe0, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xc6,
+ 0x5b, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xda, 0xaf, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x2a, 0x0, 0x0, 0x0, 0x0, 0x7c, 0x13, 0xc7,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x43,
+ 0x44, 0x0, 0x0, 0x0, 0x76, 0x6b, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xd3, 0xf2, 0x0, 0x0, 0x0, 0x20, 0xfe,
+ 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x79, 0xe0, 0x4, 0x0, 0x0, 0x0, 0x26,
+ 0xfa, 0x93, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xe5, 0x2b, 0x8e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x42, 0x9, 0xd1, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xe8, 0x8,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0xf2, 0x3d,
+ 0xbb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xcf, 0x51, 0xf8, 0x48, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2, 0xa5,
+ 0xff, 0xff, 0xff, 0xfb, 0x21, 0x50, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xf0, 0xb7, 0xff, 0xff, 0xff, 0xb7, 0x7d,
+ 0x99, 0xf3, 0xff, 0xff, 0xf1, 0x13, 0x32, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x62, 0xf,
+ 0xe1, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xec, 0xc3, 0xff, 0xff,
+ 0xd7, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x23,
+ 0x1c, 0x0, 0x0, 0x0, 0x1e, 0xfc, 0xb1, 0xff,
+ 0xff, 0xff, 0xd1, 0x8d, 0x89, 0xa7, 0xcf, 0xfe,
+ 0x1c, 0x0, 0x0, 0x0, 0x50, 0x47, 0xad, 0xad,
+ 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xe9, 0xff,
+ 0xff, 0xc5, 0xdc, 0x0, 0x0, 0x0, 0x6c, 0x49,
+ 0xff, 0xff, 0xff, 0xe1, 0x85, 0x93, 0xf3, 0xff,
+ 0xff, 0xf1, 0xf, 0x2a, 0x0, 0x0, 0x0, 0x9a,
+ 0x53, 0xff, 0xff, 0xff, 0xdb, 0x85, 0xa5, 0xfd,
+ 0xff, 0xff, 0xbd, 0xfa, 0x14, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xa0, 0x77, 0xff, 0xff, 0xff, 0xd7,
+ 0x8b, 0x9b, 0xf3, 0xff, 0xff, 0xf5, 0x1f, 0x3e,
+ 0x0, 0x0, 0x0, 0x0, 0x4a, 0xfc, 0x77, 0xfb,
+ 0xff, 0xf3, 0xb5, 0x7b, 0x5f, 0x5b, 0x73, 0xa3,
+ 0xe5, 0xff, 0xfd, 0x7f, 0xfc, 0x3c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x5, 0xe9,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xba, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xf4, 0xf7, 0xff, 0xff, 0xb5, 0xfe, 0xc8,
+ 0xf4, 0x73, 0xff, 0xff, 0xff, 0x5d, 0x64, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xf2, 0x97,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xf8, 0xd9, 0xff, 0xff,
+ 0x65, 0xf2, 0xe8, 0xe8, 0xe8, 0xe8, 0xce, 0x92,
+ 0xc, 0x0, 0x0, 0x0, 0x78, 0x45, 0xff, 0xff,
+ 0xff, 0xaf, 0xfe, 0xd6, 0xbe, 0xda, 0xc8, 0x9e,
+ 0x0, 0x0, 0x0, 0x0, 0x20, 0x86, 0xbe, 0xd6,
+ 0xd6, 0xd6, 0xd6, 0xda, 0xfa, 0x67, 0xff, 0xff,
+ 0xef, 0x35, 0x9a, 0x0, 0x0, 0x0, 0xa4, 0x8d,
+ 0xff, 0xff, 0xff, 0x39, 0xe2, 0xf4, 0x7b, 0xff,
+ 0xff, 0xff, 0x55, 0x56, 0x0, 0x0, 0x0, 0xec,
+ 0xbd, 0xff, 0xff, 0xef, 0x21, 0xe0, 0xfa, 0x8d,
+ 0xff, 0xff, 0xfd, 0x33, 0x52, 0x0, 0x0, 0x0,
+ 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+ 0x0, 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x52, 0x9e, 0x9c, 0x72,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x98, 0x9c, 0x62,
+ 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb2, 0xb3, 0xff, 0xff, 0xef, 0x19,
+ 0xdc, 0xf2, 0x67, 0xff, 0xff, 0xff, 0x6b, 0x78,
+ 0x0, 0x0, 0x0, 0x20, 0xf2, 0x7f, 0xff, 0xff,
+ 0xb7, 0x27, 0xf2, 0xb2, 0x82, 0x7e, 0xa4, 0xe4,
+ 0xd, 0x91, 0xff, 0xff, 0x6f, 0xdc, 0xa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x59, 0xff,
+ 0xff, 0xf9, 0xff, 0xff, 0xcb, 0xfa, 0xe, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x9, 0x7b, 0x7b, 0x7b, 0x41, 0x8c, 0x0,
+ 0x6a, 0x31, 0xff, 0xff, 0xff, 0x73, 0x78, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa6, 0x3d, 0xf9,
+ 0xff, 0xeb, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x2, 0xfe, 0xed, 0xff, 0xff,
+ 0x43, 0x6a, 0x3a, 0x34, 0x16, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xc8, 0x9d, 0xff, 0xff,
+ 0xf5, 0x19, 0xb0, 0x98, 0x9c, 0x74, 0x34, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x92, 0x2d, 0xf1, 0xff, 0xff,
+ 0x63, 0xde, 0x14, 0x0, 0x0, 0x0, 0xb6, 0x9d,
+ 0xff, 0xff, 0xf1, 0xfe, 0x1e, 0x78, 0x41, 0xff,
+ 0xff, 0xff, 0x67, 0x68, 0x0, 0x0, 0x2, 0xfe,
+ 0xef, 0xff, 0xff, 0xa7, 0xee, 0xa, 0x5c, 0x21,
+ 0xff, 0xff, 0xff, 0x79, 0x94, 0x0, 0x0, 0x0,
+ 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+ 0x0, 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35,
+ 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x18, 0x7a, 0xec, 0x19, 0x83, 0xa9, 0xc8,
+ 0x0, 0x0, 0x0, 0x26, 0x7e, 0xb2, 0xc8, 0xc8,
+ 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xa8, 0x6c,
+ 0x8, 0x0, 0x0, 0x0, 0xae, 0x97, 0x91, 0x27,
+ 0xf6, 0x90, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x98, 0x67, 0x87, 0x87, 0x6f, 0xde,
+ 0x6, 0x4e, 0x19, 0xff, 0xff, 0xff, 0x83, 0x92,
+ 0x0, 0x0, 0x0, 0xac, 0x49, 0xf9, 0xff, 0xa5,
+ 0xfe, 0x88, 0x2c, 0x64, 0x92, 0x9c, 0x74, 0x38,
+ 0x5e, 0xfc, 0x89, 0xff, 0xef, 0x21, 0x5a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xea, 0xad, 0xff,
+ 0xff, 0x9d, 0xf9, 0xff, 0xfd, 0x2b, 0x5a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x46, 0x78, 0x9c, 0x86, 0x58, 0x1a, 0x1c,
+ 0xc2, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x46, 0xfe, 0xcd, 0xff,
+ 0xf9, 0x79, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x14, 0xb, 0xfd, 0xff, 0xff,
+ 0x19, 0x1b, 0x49, 0x39, 0xfe, 0xde, 0x52, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff,
+ 0xc7, 0xfe, 0x53, 0x85, 0x89, 0x63, 0xd, 0xc4,
+ 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x2e, 0xfe, 0xbf, 0xff, 0xff, 0xab,
+ 0xfc, 0x32, 0x0, 0x0, 0x0, 0x0, 0x94, 0x7f,
+ 0xff, 0xff, 0xfd, 0x1f, 0xa4, 0xd0, 0x63, 0xff,
+ 0xff, 0xff, 0x41, 0x4c, 0x0, 0x0, 0x2, 0xb,
+ 0xff, 0xff, 0xff, 0x87, 0xbe, 0x0, 0xa, 0xfe,
+ 0xf1, 0xff, 0xff, 0x9b, 0xbe, 0x0, 0x0, 0x0,
+ 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x36, 0x0,
+ 0x0, 0x0, 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35,
+ 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32,
+ 0xa6, 0xfc, 0x3b, 0xa5, 0xf3, 0xff, 0xcd, 0xea,
+ 0x0, 0x0, 0x0, 0x6a, 0x53, 0x9f, 0x9f, 0x9f,
+ 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x1d,
+ 0x18, 0x0, 0x0, 0x0, 0xd6, 0xb3, 0xff, 0xf9,
+ 0xb5, 0x4f, 0xfe, 0xbe, 0x46, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x34, 0x74, 0xa0, 0xa2, 0x78, 0x3c,
+ 0x0, 0x88, 0x3d, 0xff, 0xff, 0xff, 0x69, 0x7a,
+ 0x0, 0x0, 0x28, 0xfe, 0xcf, 0xff, 0xd3, 0x9,
+ 0x70, 0x86, 0xfe, 0x49, 0x83, 0x83, 0x63, 0x13,
+ 0xe0, 0x84, 0x5, 0xd5, 0xff, 0x8b, 0xca, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x32, 0x9, 0xef, 0xff,
+ 0xff, 0x45, 0xc3, 0xff, 0xff, 0x87, 0xc2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xf8, 0xfe, 0x9,
+ 0x43, 0xd5, 0xff, 0xff, 0xcd, 0xfe, 0x24, 0x0,
+ 0x0, 0x0, 0x0, 0xc, 0xe0, 0x7b, 0xff, 0xff,
+ 0x95, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x38, 0x31, 0xff, 0xff, 0xf9,
+ 0xc3, 0xff, 0xff, 0xff, 0xed, 0x89, 0xfe, 0x64,
+ 0x0, 0x0, 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff,
+ 0xcb, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x47,
+ 0xd4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb2, 0x5d, 0xff, 0xff, 0xef, 0x21,
+ 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e, 0x1f,
+ 0xf1, 0xff, 0xff, 0xbb, 0x3d, 0x4d, 0xd9, 0xff,
+ 0xff, 0xcd, 0xfe, 0x1c, 0x0, 0x0, 0x2, 0xfe,
+ 0xfd, 0xff, 0xff, 0x8f, 0xc8, 0x0, 0x0, 0xfc,
+ 0xe5, 0xff, 0xff, 0xa7, 0xce, 0x0, 0x0, 0x0,
+ 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+ 0x0, 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35,
+ 0x26, 0x0, 0x0, 0x0, 0x8, 0x58, 0xd0, 0xfe,
+ 0x63, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xcd, 0xe0,
+ 0x0, 0x0, 0x0, 0x98, 0x87, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x26, 0x0, 0x0, 0x0, 0xc6, 0xb3, 0xff, 0xff,
+ 0xff, 0xff, 0xd5, 0x79, 0x11, 0xe6, 0x72, 0x14,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x52, 0xfe, 0xaf, 0xff, 0xff, 0xf5, 0x21, 0x40,
+ 0x0, 0x0, 0x86, 0x55, 0xff, 0xff, 0x53, 0xb2,
+ 0x82, 0x11, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xef,
+ 0x81, 0xc8, 0xc4, 0x7d, 0xff, 0xd9, 0xfa, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x96, 0x63, 0xff, 0xff,
+ 0xe5, 0xfe, 0x7d, 0xff, 0xff, 0xd1, 0xfc, 0x12,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x7c, 0x7d, 0xfd, 0xff,
+ 0xff, 0xff, 0xff, 0xd1, 0x25, 0xa0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x84, 0x25, 0xef, 0xff, 0xdf,
+ 0xd, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x64, 0x53, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xf8,
+ 0x16, 0x0, 0x0, 0x0, 0xfa, 0xe3, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb,
+ 0x21, 0x68, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x22, 0xfe, 0xd1, 0xff, 0xff, 0x8f, 0xe4,
+ 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xdc,
+ 0x53, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xd7, 0x2b, 0xa2, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xe7, 0xff, 0xff, 0xbb, 0xfa, 0x32, 0x5e, 0xfe,
+ 0xe5, 0xff, 0xff, 0xa9, 0xd4, 0x0, 0x0, 0x0,
+ 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+ 0x0, 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x14, 0x0, 0x0, 0x30, 0xe6, 0x1d, 0x89, 0xe1,
+ 0xff, 0xff, 0xff, 0xff, 0xfd, 0xc7, 0x69, 0xb2,
+ 0x0, 0x0, 0x0, 0x8c, 0x87, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x22, 0x0, 0x0, 0x0, 0x90, 0x53, 0xb7, 0xf5,
+ 0xff, 0xff, 0xff, 0xff, 0xef, 0x9d, 0x33, 0xf6,
+ 0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6c,
+ 0xfe, 0x89, 0xff, 0xff, 0xff, 0x8f, 0xea, 0xa,
+ 0x0, 0x0, 0xdc, 0xa7, 0xff, 0xd7, 0xfe, 0x4c,
+ 0xfe, 0xb7, 0xff, 0xff, 0xcd, 0xb1, 0xe9, 0xff,
+ 0xdd, 0xea, 0x52, 0x29, 0xff, 0xfb, 0x11, 0x24,
+ 0x0, 0x0, 0x0, 0x4, 0xee, 0xb3, 0xff, 0xff,
+ 0xa5, 0xea, 0x27, 0xfd, 0xff, 0xff, 0x31, 0x62,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x90, 0x7f, 0xff, 0xff,
+ 0xff, 0xff, 0xf7, 0x79, 0xfe, 0x7c, 0x0, 0x0,
+ 0x0, 0x0, 0x2e, 0xfc, 0xb3, 0xff, 0xff, 0x55,
+ 0xda, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x6e, 0x6f, 0xff, 0xff, 0xff,
+ 0xb5, 0x75, 0x8b, 0xed, 0xff, 0xff, 0xfd, 0x39,
+ 0x66, 0x0, 0x0, 0x0, 0xfa, 0xe3, 0xff, 0xff,
+ 0xfd, 0xa1, 0x55, 0x53, 0xb5, 0xff, 0xff, 0xff,
+ 0x9b, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x7c, 0x4d, 0xff, 0xff, 0xf9, 0x21, 0x5e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xb0,
+ 0x11, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+ 0x77, 0xfe, 0x74, 0x0, 0x0, 0x0, 0x0, 0xe2,
+ 0xb1, 0xff, 0xff, 0xf9, 0x5f, 0xfe, 0xd, 0x95,
+ 0xff, 0xff, 0xff, 0xa9, 0xd4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x68, 0x5f, 0xf5, 0xff, 0xff,
+ 0xff, 0xff, 0xd7, 0x8b, 0x2b, 0xfa, 0xac, 0x38,
+ 0x0, 0x0, 0x0, 0x58, 0x25, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0xd,
+ 0x12, 0x0, 0x0, 0x0, 0x26, 0x94, 0xf2, 0x15,
+ 0x75, 0xc3, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0x93,
+ 0xac, 0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x5,
+ 0xa5, 0xff, 0xff, 0xff, 0xad, 0xfe, 0x58, 0x0,
+ 0x0, 0x4, 0xfe, 0xdf, 0xff, 0x9d, 0xd6, 0x9c,
+ 0x5b, 0xff, 0xff, 0x97, 0xfe, 0xfc, 0xbf, 0xff,
+ 0xcb, 0xf0, 0xe, 0xfe, 0xf1, 0xff, 0x4b, 0x4a,
+ 0x0, 0x0, 0x0, 0x3a, 0xf, 0xf3, 0xff, 0xff,
+ 0x59, 0x8a, 0xfc, 0xcf, 0xff, 0xff, 0x8d, 0xca,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x66, 0x55, 0xad, 0xaf,
+ 0xcb, 0xff, 0xff, 0xff, 0xad, 0xfe, 0x2c, 0x0,
+ 0x0, 0x4, 0xc6, 0x5b, 0xff, 0xff, 0xad, 0xfe,
+ 0xce, 0x57, 0xff, 0xff, 0xff, 0x4d, 0xaa, 0x4a,
+ 0x8, 0x0, 0x0, 0x54, 0x49, 0x9b, 0xab, 0x99,
+ 0xfe, 0xbe, 0xea, 0x4f, 0xff, 0xff, 0xff, 0x8f,
+ 0xb2, 0x0, 0x0, 0x0, 0xfa, 0xe3, 0xff, 0xff,
+ 0xb5, 0xfe, 0x94, 0xa4, 0xfe, 0xdb, 0xff, 0xff,
+ 0xdb, 0xfa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xa1, 0xff, 0xff, 0xc3, 0xf8, 0xa,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x17,
+ 0xcf, 0xff, 0xff, 0xf1, 0xb7, 0xc1, 0xfb, 0xff,
+ 0xff, 0xa3, 0xfe, 0x2c, 0x0, 0x0, 0x0, 0x8a,
+ 0x43, 0xfb, 0xff, 0xff, 0xff, 0xeb, 0xf7, 0xff,
+ 0xff, 0xff, 0xff, 0xa9, 0xd4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x90, 0x7b, 0xff, 0xff, 0xff,
+ 0xaf, 0x41, 0xfe, 0xd8, 0x62, 0xe, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x2c, 0x88, 0xba, 0xce, 0xce,
+ 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xae, 0x72,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x46,
+ 0xbe, 0xfc, 0x23, 0x8d, 0xf7, 0xff, 0xff, 0xb3,
+ 0xd4, 0x0, 0x0, 0x0, 0x0, 0x6, 0xf0, 0x9f,
+ 0xff, 0xff, 0xfd, 0x89, 0xfe, 0x76, 0x0, 0x0,
+ 0x0, 0x1a, 0xf, 0xff, 0xff, 0x67, 0x94, 0xf0,
+ 0xbb, 0xff, 0xf3, 0x13, 0x62, 0xf4, 0xd1, 0xff,
+ 0xb9, 0xe2, 0x0, 0xfc, 0xe3, 0xff, 0x5b, 0x6c,
+ 0x0, 0x0, 0x0, 0xa0, 0x6b, 0xff, 0xff, 0xef,
+ 0x9, 0xac, 0xea, 0x8d, 0xff, 0xff, 0xd7, 0xfe,
+ 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x28, 0x8c, 0xc2, 0xe2,
+ 0xfe, 0x6d, 0xff, 0xff, 0xff, 0x5b, 0x84, 0x0,
+ 0x0, 0x3a, 0x11, 0xe1, 0xff, 0xfd, 0x89, 0x7b,
+ 0x7b, 0x9b, 0xff, 0xff, 0xff, 0x97, 0x7b, 0x1b,
+ 0x1e, 0x0, 0x0, 0x20, 0x78, 0xb4, 0xca, 0xa8,
+ 0x60, 0x0, 0x24, 0xfe, 0xe5, 0xff, 0xff, 0xb5,
+ 0xd8, 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff,
+ 0xb1, 0xe2, 0x0, 0x0, 0xe0, 0x9d, 0xff, 0xff,
+ 0xf9, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1c, 0xfe, 0xe3, 0xff, 0xff, 0x85, 0xba, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd2, 0x99,
+ 0xff, 0xff, 0xf1, 0x2f, 0xf6, 0xfc, 0x5f, 0xff,
+ 0xff, 0xff, 0x5b, 0x8e, 0x0, 0x0, 0x0, 0x1c,
+ 0xf2, 0x73, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xd5,
+ 0xed, 0xff, 0xff, 0xa7, 0xce, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x7c, 0x7b, 0xff, 0xff, 0xff,
+ 0xfd, 0xc9, 0x7b, 0x1b, 0xf6, 0xa2, 0x3a, 0x4,
+ 0x0, 0x0, 0x0, 0x68, 0x4d, 0x91, 0x91, 0x91,
+ 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x19,
+ 0x16, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x8c, 0xec,
+ 0xd, 0x6b, 0xbb, 0xf9, 0xff, 0xff, 0xff, 0xb3,
+ 0xc2, 0x0, 0x0, 0x0, 0x0, 0x22, 0x17, 0xf9,
+ 0xff, 0xff, 0x9f, 0xfc, 0x52, 0x0, 0x0, 0x0,
+ 0x0, 0x3c, 0x39, 0xff, 0xff, 0x47, 0x66, 0x5,
+ 0xf3, 0xff, 0xc3, 0xf6, 0x4, 0xfa, 0xe3, 0xff,
+ 0xa7, 0xd2, 0x0, 0xfc, 0xe1, 0xff, 0x63, 0x72,
+ 0x0, 0x0, 0x6, 0xf4, 0xb9, 0xff, 0xff, 0xd7,
+ 0x7b, 0x7b, 0x7b, 0x95, 0xff, 0xff, 0xff, 0x39,
+ 0x6c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1c, 0x92, 0xca, 0xe2, 0xca, 0x90, 0x1a, 0x0,
+ 0x3a, 0xfe, 0xed, 0xff, 0xff, 0xa1, 0xbe, 0x0,
+ 0x0, 0x5c, 0x69, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x39,
+ 0x30, 0x0, 0x0, 0x60, 0xba, 0xe4, 0xe6, 0xc6,
+ 0x6a, 0x0, 0x0, 0xfa, 0xd3, 0xff, 0xff, 0xbf,
+ 0xe0, 0x0, 0x0, 0x0, 0xf2, 0xd3, 0xff, 0xff,
+ 0xc3, 0xf0, 0x0, 0x0, 0xc8, 0x8f, 0xff, 0xff,
+ 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5a, 0x43, 0xff, 0xff, 0xff, 0x47, 0x64, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf6, 0xdd,
+ 0xff, 0xff, 0xaf, 0xf4, 0x10, 0x30, 0xfe, 0xdd,
+ 0xff, 0xff, 0xad, 0xcc, 0x0, 0x0, 0x0, 0x0,
+ 0x40, 0xec, 0x31, 0x93, 0xb7, 0xb7, 0x83, 0xf,
+ 0xf7, 0xff, 0xff, 0x99, 0xbe, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x4a, 0x19, 0x85, 0xdf, 0xff,
+ 0xff, 0xff, 0xff, 0xf9, 0xbb, 0x6b, 0xf, 0x96,
+ 0x0, 0x0, 0x0, 0x96, 0x87, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x26, 0x0, 0x0, 0x0, 0x74, 0xfe, 0x57, 0xad,
+ 0xf1, 0xff, 0xff, 0xff, 0xff, 0xed, 0x9b, 0x2f,
+ 0x86, 0x0, 0x0, 0x0, 0x0, 0x26, 0x41, 0xff,
+ 0xff, 0xff, 0x5d, 0x84, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x54, 0x51, 0xff, 0xff, 0x2d, 0x66, 0x35,
+ 0xff, 0xff, 0x9f, 0xd2, 0x4, 0xfe, 0xf3, 0xff,
+ 0x93, 0xbc, 0xa, 0xfe, 0xef, 0xff, 0x57, 0x5e,
+ 0x0, 0x0, 0x44, 0x17, 0xf7, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95,
+ 0xd2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x30, 0x41, 0xbb, 0xbb, 0xbb, 0x3d, 0x74, 0x0,
+ 0x20, 0xfe, 0xe5, 0xff, 0xff, 0xaf, 0xcc, 0x0,
+ 0x0, 0x5e, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x39,
+ 0x30, 0x0, 0x0, 0xb4, 0x99, 0xc3, 0xcf, 0xa1,
+ 0xe2, 0x8, 0x24, 0xfe, 0xe3, 0xff, 0xff, 0xb1,
+ 0xd6, 0x0, 0x0, 0x0, 0xdc, 0xb1, 0xff, 0xff,
+ 0xe7, 0x5, 0x3c, 0xc, 0xf0, 0xad, 0xff, 0xff,
+ 0xed, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa0, 0x7b, 0xff, 0xff, 0xf9, 0xb, 0x20, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfa, 0xef,
+ 0xff, 0xff, 0xa9, 0xec, 0x4, 0x16, 0xfc, 0xd7,
+ 0xff, 0xff, 0xc1, 0xde, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x12, 0x66, 0xb4, 0xd6, 0xd4, 0xdc, 0x41,
+ 0xff, 0xff, 0xff, 0x75, 0x90, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x52, 0xcc, 0xfe, 0x5f,
+ 0xc1, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xd6,
+ 0x0, 0x0, 0x0, 0x8e, 0x87, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x22, 0x0, 0x0, 0x0, 0xb8, 0xab, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd3, 0x77, 0xf, 0xe4, 0x6e,
+ 0x10, 0x0, 0x0, 0x0, 0x0, 0x20, 0x13, 0x3f,
+ 0x3f, 0x3f, 0x13, 0x32, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x5a, 0x4f, 0xff, 0xff, 0x2f, 0x7c, 0x57,
+ 0xff, 0xff, 0x8d, 0xc0, 0x1a, 0xf, 0xff, 0xff,
+ 0x7d, 0xa4, 0x54, 0x21, 0xff, 0xff, 0x29, 0x36,
+ 0x0, 0x0, 0xaa, 0x73, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd,
+ 0xfe, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x30, 0x3b, 0xff, 0xff, 0xff, 0x9d, 0xfe, 0xce,
+ 0xf0, 0x49, 0xff, 0xff, 0xff, 0x91, 0xae, 0x0,
+ 0x0, 0x34, 0x1f, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b,
+ 0x6b, 0x91, 0xff, 0xff, 0xff, 0x8b, 0x6b, 0x17,
+ 0x1c, 0x0, 0x0, 0xc4, 0xbb, 0xff, 0xff, 0xed,
+ 0x1b, 0xe0, 0xee, 0x4f, 0xff, 0xff, 0xff, 0x83,
+ 0xa6, 0x0, 0x0, 0x0, 0x9a, 0x71, 0xff, 0xff,
+ 0xff, 0x6f, 0xf8, 0xe4, 0x25, 0xf1, 0xff, 0xff,
+ 0xbf, 0xec, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xd2, 0xa3, 0xff, 0xff, 0xdb, 0xfc, 0x2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf6, 0xdb,
+ 0xff, 0xff, 0xe3, 0xf, 0xdc, 0xec, 0x39, 0xf9,
+ 0xff, 0xff, 0xab, 0xcc, 0x0, 0x0, 0x0, 0x0,
+ 0x1c, 0xb0, 0xd0, 0xdc, 0xbc, 0xd8, 0x9, 0xbf,
+ 0xff, 0xff, 0xf9, 0x27, 0x4a, 0x0, 0x0, 0x0,
+ 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+ 0x0, 0x0, 0x3c, 0xcc, 0xf2, 0xf6, 0xdc, 0x78,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0xa2,
+ 0xfa, 0x35, 0xa1, 0xf1, 0xff, 0xff, 0xcd, 0xee,
+ 0x0, 0x0, 0x0, 0x5a, 0x2d, 0x57, 0x57, 0x57,
+ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0xf,
+ 0x14, 0x0, 0x0, 0x0, 0xda, 0xb3, 0xff, 0xff,
+ 0xf9, 0xb1, 0x4b, 0xfe, 0xbc, 0x44, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0xe4, 0xfa,
+ 0xfe, 0xfc, 0xe6, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x42, 0x45, 0xff, 0xff, 0x3f, 0x90, 0x59,
+ 0xff, 0xff, 0x95, 0xda, 0x9e, 0x39, 0xff, 0xff,
+ 0x6b, 0x96, 0xd8, 0x85, 0xff, 0xd9, 0xfe, 0xe,
+ 0x0, 0x8, 0xf6, 0xc1, 0xff, 0xff, 0xcd, 0x63,
+ 0x63, 0x63, 0x63, 0x63, 0x7f, 0xff, 0xff, 0xff,
+ 0x43, 0x76, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x18, 0xfe, 0xd9, 0xff, 0xff, 0xff, 0xbb, 0x89,
+ 0x9f, 0xf1, 0xff, 0xff, 0xf9, 0x39, 0x68, 0x0,
+ 0x0, 0x8, 0x3e, 0x6a, 0x86, 0x86, 0x86, 0x86,
+ 0xb8, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x9e, 0x3e,
+ 0x6, 0x0, 0x0, 0xa0, 0x6d, 0xff, 0xff, 0xff,
+ 0xdd, 0x8f, 0x99, 0xef, 0xff, 0xff, 0xf3, 0x21,
+ 0x54, 0x0, 0x0, 0x0, 0x3e, 0xb, 0xdf, 0xff,
+ 0xff, 0xf9, 0xa1, 0x8f, 0xdf, 0xff, 0xff, 0xff,
+ 0x57, 0x9c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf0, 0xc9, 0xff, 0xff, 0xc1, 0xec, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x99,
+ 0xff, 0xff, 0xff, 0xd9, 0x8f, 0x97, 0xeb, 0xff,
+ 0xff, 0xff, 0x5f, 0x8e, 0x0, 0x0, 0x0, 0x0,
+ 0x52, 0x43, 0xd5, 0xa1, 0x89, 0x91, 0xd5, 0xff,
+ 0xff, 0xff, 0xa1, 0xf2, 0xe, 0x0, 0x0, 0x0,
+ 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+ 0x0, 0x0, 0x74, 0x71, 0xe3, 0xe3, 0xaf, 0xc4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x14, 0x76, 0xe8, 0x15, 0x7f, 0xdb, 0xcd, 0xdc,
+ 0x0, 0x0, 0x0, 0x10, 0x36, 0x58, 0x6a, 0x6a,
+ 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x4e, 0x2c,
+ 0x4, 0x0, 0x0, 0x0, 0xc2, 0xb3, 0xe5, 0x8f,
+ 0x23, 0xf4, 0x8c, 0x22, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x51, 0xf5,
+ 0xf5, 0xf5, 0x57, 0x4e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x24, 0x1b, 0xff, 0xff, 0x6b, 0xac, 0x2d,
+ 0xff, 0xff, 0xd5, 0xb, 0x1b, 0xc3, 0xff, 0xff,
+ 0x6d, 0xfa, 0x27, 0xe7, 0xff, 0x7b, 0xc4, 0x0,
+ 0x0, 0x4c, 0x1f, 0xf9, 0xff, 0xff, 0x7b, 0xd2,
+ 0x7a, 0x7a, 0x7a, 0x8a, 0xfe, 0xe9, 0xff, 0xff,
+ 0x9b, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xb6, 0x49, 0xf1, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf0, 0x16, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6a, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x3a, 0xfe, 0xb3, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x71, 0xe4,
+ 0xa, 0x0, 0x0, 0x0, 0x2, 0xc0, 0x47, 0xef,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x97,
+ 0xfc, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xfc, 0xe5, 0xff, 0xff, 0xa7, 0xd6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x19,
+ 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xb1, 0xfe, 0x30, 0x0, 0x0, 0x0, 0x0,
+ 0x76, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xc5, 0xd, 0x6c, 0x0, 0x0, 0x0, 0x0,
+ 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x36, 0x0,
+ 0x0, 0x0, 0x9c, 0x7f, 0xff, 0xff, 0xc5, 0xe4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x6, 0x4e, 0xc8, 0xec, 0x3f, 0xa4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x88, 0x3f, 0x5, 0xd6,
+ 0x5e, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x57, 0xff,
+ 0xff, 0xff, 0x5b, 0x6e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0xfe, 0xe3, 0xff, 0xa1, 0xe6, 0xfe,
+ 0xcf, 0xff, 0xff, 0xf3, 0xf9, 0xe9, 0xe1, 0xff,
+ 0xdb, 0xa7, 0xeb, 0xff, 0xc3, 0xfe, 0x44, 0x0,
+ 0x0, 0xb4, 0x7b, 0xff, 0xff, 0xfd, 0x27, 0x50,
+ 0x0, 0x0, 0x0, 0x0, 0xe6, 0xad, 0xff, 0xff,
+ 0xe3, 0xfe, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x20, 0xdc, 0x31, 0xb3, 0xf7, 0xff, 0xff,
+ 0xff, 0xfd, 0xcb, 0x57, 0xfa, 0x4a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x4c, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x42, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x7c, 0xfe, 0x7f, 0xe1,
+ 0xff, 0xff, 0xff, 0xff, 0xd9, 0x61, 0xf8, 0x3e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0xda, 0x37,
+ 0xbb, 0xfb, 0xff, 0xff, 0xff, 0xe3, 0x75, 0xfe,
+ 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf8, 0xf7, 0xff, 0xff, 0x93, 0xa4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xae,
+ 0x17, 0x9d, 0xef, 0xff, 0xff, 0xff, 0xff, 0xe3,
+ 0x83, 0x5, 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x64, 0x65, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xe5,
+ 0x87, 0x5, 0x92, 0x2, 0x0, 0x0, 0x0, 0x0,
+ 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+ 0x0, 0x0, 0xa6, 0x7f, 0xff, 0xff, 0xc1, 0xe4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x16, 0x16,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x16, 0x16, 0x16, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c, 0x57, 0xff,
+ 0xff, 0xff, 0x5b, 0x52, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xde, 0xa7, 0xff, 0xe9, 0xd, 0xc6,
+ 0x39, 0xdf, 0xff, 0xff, 0xe5, 0x4b, 0x5b, 0xf3,
+ 0xff, 0xff, 0xf5, 0xa3, 0x13, 0x92, 0x0, 0x0,
+ 0x0, 0xb2, 0xc7, 0xff, 0xff, 0xcf, 0xfc, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x90, 0x63, 0xff, 0xff,
+ 0xff, 0x4d, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x12, 0x86, 0xf2, 0xd, 0x47, 0x59,
+ 0x4d, 0x1b, 0xfc, 0xaa, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x2a, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x24, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0xcc, 0xfe,
+ 0x31, 0x57, 0x55, 0x2d, 0xfe, 0xbc, 0x30, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x90,
+ 0xf6, 0x19, 0x4d, 0x57, 0x39, 0xfe, 0xce, 0x40,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe4, 0xfe, 0xfe, 0xfe, 0xfe, 0x5c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
+ 0x68, 0xe4, 0xfe, 0x3d, 0x57, 0x55, 0x31, 0xfe,
+ 0xd0, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x34, 0xca, 0xfe, 0x2f, 0x4f, 0x55, 0x35, 0xfe,
+ 0xd4, 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+ 0x0, 0x0, 0xbe, 0x89, 0xff, 0xff, 0xa7, 0xca,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x2c, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x82, 0x47, 0xff, 0xff, 0x91, 0xf4,
+ 0xca, 0x5, 0x45, 0x43, 0x9, 0xd2, 0xe6, 0x1f,
+ 0x55, 0x49, 0xf, 0xec, 0x6e, 0x4, 0x0, 0x0,
+ 0x0, 0x94, 0xfe, 0xfe, 0xfe, 0xfe, 0xa0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x32, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0x22, 0x48, 0x5e,
+ 0x4e, 0x2a, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+ 0x38, 0x58, 0x56, 0x34, 0x10, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6, 0x2a, 0x4c, 0x58, 0x3c, 0x16, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x18, 0x3e, 0x5c, 0x58, 0x38, 0x12,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x10, 0x32, 0x54, 0x54, 0x38, 0x14,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6, 0xf0, 0xaf, 0xff, 0xff, 0x5d, 0x88,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x1e, 0xfe, 0xaf, 0xff, 0xfb, 0x6b,
+ 0xfa, 0x8c, 0x46, 0x36, 0x1c, 0x0, 0x2c, 0x58,
+ 0x6e, 0x52, 0x22, 0x4, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x18, 0x17, 0xf1, 0xff, 0xd1, 0xfe, 0x2e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x7c, 0x1b, 0xd9, 0xff, 0xfd,
+ 0xab, 0x35, 0xfe, 0xf2, 0xee, 0xf8, 0xfe, 0x4f,
+ 0x2f, 0x5c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x18, 0x37, 0xd9, 0xf1, 0x41, 0xae, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x8, 0xb4, 0x1f, 0xc7, 0xff,
+ 0xff, 0xff, 0xdf, 0xc7, 0xbf, 0xd3, 0xef, 0xff,
+ 0x87, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x14, 0xb4, 0x5, 0x31, 0xde, 0x1c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0x98, 0xfe, 0x67,
+ 0xc7, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3,
+ 0x5d, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x10, 0x10, 0x10, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0xac,
+ 0xf6, 0x13, 0x49, 0x5f, 0x6b, 0x57, 0x23, 0xfc,
+ 0xb6, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x4, 0x24, 0x4c, 0x72, 0x78, 0x60, 0x34, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x1e,
+ 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x20, 0x4e, 0x72, 0x72, 0x4e, 0x20, 0x2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a,
+ 0x20, 0x20, 0x20, 0x1c, 0x10, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x18, 0xe, 0x2, 0x0,
+ 0x0, 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0xe, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e,
+ 0x4a, 0x70, 0x74, 0x54, 0x28, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a,
+ 0x20, 0x16, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc, 0x16, 0x20, 0x1a, 0xe, 0x4, 0x0, 0x0,
+ 0x0, 0x2, 0xc, 0x18, 0x20, 0x18, 0xc, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x2, 0xe, 0x18, 0x20, 0x16, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20,
+ 0x16, 0xc, 0x0, 0x0, 0x0, 0x0, 0xa, 0x16,
+ 0x20, 0x20, 0x18, 0xc, 0x2, 0x0, 0x0, 0x4,
+ 0xe, 0x1a, 0x20, 0x16, 0xc, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4,
+ 0xe, 0x1a, 0x20, 0x20, 0x16, 0xc, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x16, 0x20,
+ 0x20, 0x1a, 0xe, 0x4, 0x0, 0x0, 0x0, 0x4,
+ 0xe, 0x1a, 0x20, 0x16, 0xc, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xc, 0x16, 0x20, 0x1a, 0xe, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x14, 0x3e, 0x66, 0x72, 0x56, 0x28, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x1f, 0x9, 0xfe, 0xea, 0x9e, 0x30, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x60, 0xe2,
+ 0x5, 0x49, 0x65, 0x65, 0x49, 0xb, 0xec, 0x76,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0x52, 0x11, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x15, 0xfe, 0xf8, 0xc2,
+ 0x5c, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0xd, 0x32, 0x0,
+ 0x0, 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0xd, 0x34,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0x5c, 0xe0, 0x5,
+ 0x45, 0x65, 0x67, 0x4f, 0x13, 0xf6, 0x8e, 0x14,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x52, 0x11, 0x23,
+ 0x23, 0x23, 0xfe, 0x2, 0x0, 0x0, 0x0, 0x2,
+ 0xfe, 0x23, 0x23, 0x23, 0x11, 0x4e, 0x0, 0x0,
+ 0x0, 0x24, 0xb, 0x23, 0x23, 0x23, 0xb, 0x2e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x32, 0xd, 0x23, 0x23, 0x23, 0x9,
+ 0x1c, 0x0, 0x0, 0x0, 0x52, 0x11, 0x23, 0x23,
+ 0x23, 0xfe, 0x2, 0x0, 0x0, 0x40, 0xfe, 0x21,
+ 0x23, 0x23, 0x23, 0xf, 0x4, 0x0, 0x0, 0x52,
+ 0x11, 0x23, 0x23, 0x23, 0xfe, 0x2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52,
+ 0x11, 0x23, 0x23, 0x23, 0x23, 0x5, 0x30, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x40, 0x9, 0x23, 0x23,
+ 0x23, 0x23, 0xf, 0x44, 0x0, 0x0, 0x0, 0x52,
+ 0x11, 0x23, 0x23, 0x23, 0xfe, 0x42, 0x0, 0x0,
+ 0x0, 0x2, 0xfe, 0x23, 0x23, 0x23, 0x11, 0x4e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xc8,
+ 0xfe, 0x35, 0x5d, 0x67, 0x51, 0x11, 0xf2, 0x8a,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xeb, 0xbd, 0x5f, 0xfe, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0xa6, 0x11, 0x97,
+ 0xef, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xa7, 0x1f,
+ 0xc2, 0xe, 0x0, 0x0, 0x0, 0x88, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xd1, 0x8d,
+ 0x1b, 0xd6, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x58, 0x0,
+ 0x0, 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x5c,
+ 0x0, 0x0, 0x0, 0x6, 0xa4, 0xf, 0x91, 0xed,
+ 0xff, 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x35, 0xdc,
+ 0x1c, 0x0, 0x0, 0x0, 0x0, 0x88, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x4, 0x0, 0x0, 0x0, 0x4,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0x82, 0x0, 0x0,
+ 0x0, 0x42, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x52,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x58, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x36, 0x0, 0x0, 0x0, 0x88, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x4, 0x0, 0xe, 0xe0, 0x75, 0xff,
+ 0xff, 0xff, 0xd9, 0x15, 0x4, 0x0, 0x0, 0x88,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x94, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xac, 0x75, 0xff, 0xff,
+ 0xff, 0xff, 0x77, 0x76, 0x0, 0x0, 0x0, 0x88,
+ 0x87, 0xff, 0xff, 0xff, 0x77, 0xda, 0x8, 0x0,
+ 0x0, 0x4, 0xd, 0xff, 0xff, 0xff, 0x83, 0x82,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x7a, 0xfe, 0x75,
+ 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xb5, 0x35,
+ 0xde, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0xfe, 0x36,
+ 0x0, 0x0, 0x0, 0x0, 0x86, 0x1b, 0xd1, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3,
+ 0x29, 0x94, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xed, 0x59, 0xee, 0x26, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x68, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x6e,
+ 0x0, 0x0, 0x0, 0x86, 0x19, 0xcf, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x43,
+ 0xb8, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x0, 0x8a, 0x27, 0xef, 0xff,
+ 0xff, 0xf9, 0x43, 0xb8, 0x4, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xb1, 0xee, 0x4,
+ 0x0, 0x0, 0x0, 0xa, 0xf8, 0xc3, 0xff, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xeb, 0x1b, 0x6e, 0x0,
+ 0x0, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x5, 0xb1, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1,
+ 0x57, 0xde, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad,
+ 0xb1, 0xc7, 0xfb, 0xff, 0xff, 0xff, 0x67, 0x9a,
+ 0x0, 0x0, 0x0, 0x20, 0xfe, 0xb7, 0xff, 0xff,
+ 0xff, 0xbf, 0x7d, 0x89, 0xbd, 0xff, 0xff, 0xff,
+ 0xc3, 0xfe, 0x1c, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xad, 0xad, 0xb7, 0xd7, 0xff, 0xff,
+ 0xff, 0xf9, 0x51, 0xc6, 0x2, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad, 0xad,
+ 0xad, 0xad, 0xad, 0xad, 0xad, 0x41, 0x44, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad,
+ 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0x43, 0x4a,
+ 0x0, 0x0, 0x24, 0xfe, 0xb9, 0xff, 0xff, 0xff,
+ 0xcd, 0x85, 0x81, 0xb1, 0xfd, 0xff, 0xff, 0xdb,
+ 0x9, 0x32, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x36, 0xfe, 0xb9, 0xff, 0xff,
+ 0xff, 0x87, 0xf0, 0x1c, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf, 0x3a,
+ 0x0, 0x0, 0x0, 0x50, 0x21, 0xfb, 0xff, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xa1, 0xf6, 0x1a,
+ 0x0, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x12, 0xf4, 0x97, 0xff, 0xff,
+ 0xff, 0xd9, 0x91, 0x83, 0xad, 0xf9, 0xff, 0xff,
+ 0xf1, 0x35, 0x8e, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8,
+ 0xe0, 0xfa, 0x43, 0xf7, 0xff, 0xff, 0xb5, 0xd6,
+ 0x0, 0x0, 0x0, 0x7c, 0x49, 0xff, 0xff, 0xff,
+ 0xa3, 0xfe, 0xc6, 0xc6, 0xfe, 0x95, 0xff, 0xff,
+ 0xff, 0x43, 0x6a, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0xda, 0xe8, 0xfe, 0x53, 0xed,
+ 0xff, 0xff, 0xe3, 0xb, 0x40, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8, 0xd6,
+ 0xd6, 0xd6, 0xd6, 0xd6, 0xbc, 0x84, 0x1a, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8,
+ 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xbc, 0x84, 0x1c,
+ 0x0, 0x0, 0x80, 0x4f, 0xff, 0xff, 0xff, 0xb1,
+ 0xfe, 0xce, 0xbe, 0xfa, 0x77, 0xff, 0xff, 0xff,
+ 0x63, 0x8c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0xe, 0xd6, 0x69, 0xff, 0xff, 0xff,
+ 0xc7, 0xfe, 0x50, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6b, 0xa0,
+ 0x0, 0x0, 0x0, 0xba, 0x7f, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x41, 0xa2,
+ 0x0, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x68, 0x31, 0xfb, 0xff, 0xff,
+ 0xc1, 0x9, 0xda, 0xc0, 0xf8, 0x51, 0xf9, 0xff,
+ 0xff, 0xb9, 0xf8, 0x8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x1c, 0xfc, 0xcf, 0xff, 0xff, 0xcb, 0xe6,
+ 0x0, 0x0, 0x0, 0xca, 0xa1, 0xff, 0xff, 0xf7,
+ 0x21, 0x72, 0x0, 0x0, 0x60, 0x13, 0xfb, 0xff,
+ 0xff, 0x91, 0x98, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x26, 0xde, 0x67,
+ 0xff, 0xff, 0xff, 0x73, 0x9c, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xce, 0xa3, 0xff, 0xff, 0xf7, 0x27,
+ 0x80, 0x0, 0x0, 0x42, 0xfe, 0xe3, 0xff, 0xff,
+ 0xa7, 0x9a, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x7e, 0x1f, 0xeb, 0xff, 0xff, 0xef,
+ 0x2d, 0x9a, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xbb, 0xf4,
+ 0x6, 0x0, 0x10, 0xfc, 0xcb, 0xff, 0xff, 0xeb,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, 0xfe,
+ 0x3a, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xbe, 0x93, 0xff, 0xff, 0xfb,
+ 0x37, 0x96, 0x0, 0x0, 0x26, 0xf6, 0xa9, 0xff,
+ 0xff, 0xfd, 0x1f, 0x3a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x6, 0x5e, 0xfe, 0xd9, 0xff, 0xff, 0xb5, 0xd4,
+ 0x0, 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff, 0xcb,
+ 0xf8, 0xa, 0x0, 0x0, 0x4, 0xf4, 0xa3, 0xbd,
+ 0xbd, 0x83, 0x8a, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x34, 0xfe,
+ 0xe7, 0xff, 0xff, 0xb1, 0xd8, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4c, 0x46,
+ 0x46, 0x46, 0x46, 0x30, 0x1a, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xee, 0xcd, 0xff, 0xff, 0xcd, 0xfa,
+ 0xc, 0x0, 0x0, 0x0, 0xc4, 0x49, 0x63, 0x63,
+ 0x49, 0x82, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0xfc, 0xaf, 0xff, 0xff, 0xff, 0x6b,
+ 0xde, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xcb, 0xe3, 0xff, 0xf7, 0x17,
+ 0x44, 0x0, 0x5e, 0x2d, 0xfd, 0xff, 0xd3, 0xdb,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x6d,
+ 0xd0, 0xa, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xe8, 0xc5, 0xff, 0xff, 0xd3,
+ 0xfc, 0x16, 0x0, 0x0, 0x0, 0x8e, 0x53, 0xff,
+ 0xff, 0xff, 0x65, 0x72, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xfe,
+ 0xfe, 0x17, 0x91, 0xff, 0xff, 0xff, 0x5b, 0x96,
+ 0x0, 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb3,
+ 0xe2, 0x0, 0x0, 0x0, 0x0, 0x6c, 0xba, 0xde,
+ 0xd8, 0xac, 0x4c, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xf2,
+ 0xc3, 0xff, 0xff, 0xcf, 0xf0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0x43, 0x3f, 0x3f,
+ 0x3f, 0x3f, 0x3f, 0x3f, 0x9, 0xe, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xda, 0xa0, 0xa, 0x0,
+ 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb3, 0xe4,
+ 0x0, 0x0, 0x0, 0x0, 0x20, 0x4c, 0x70, 0x70,
+ 0x4c, 0x20, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0x33, 0x69, 0xff, 0xff, 0xff, 0xb1, 0xfe,
+ 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xd5, 0x99, 0xff, 0xff, 0x75,
+ 0xac, 0x0, 0xc6, 0x89, 0xff, 0xff, 0x85, 0xe3,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0x5f, 0xff, 0xff, 0xe5,
+ 0x13, 0x66, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff, 0xb7,
+ 0xe6, 0x0, 0x0, 0x0, 0x0, 0x32, 0x27, 0xff,
+ 0xff, 0xff, 0x7d, 0x9a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xf1, 0xf1,
+ 0xf3, 0xff, 0xff, 0xff, 0xf5, 0x81, 0xfc, 0x2c,
+ 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+ 0xd8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xe4,
+ 0xb7, 0xff, 0xff, 0xdb, 0xf6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x29, 0x1c, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xcf, 0xcd,
+ 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x21, 0x18, 0x0,
+ 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad, 0xd8,
+ 0x0, 0x68, 0xc0, 0xe4, 0xec, 0xec, 0xec, 0xe4,
+ 0xbe, 0x62, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xcf, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+ 0xcf, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x19, 0x82,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xdd, 0x3b, 0xff, 0xff, 0xc3,
+ 0xf8, 0x20, 0xfe, 0xd5, 0xff, 0xfb, 0x25, 0xeb,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xbb, 0xff, 0xff,
+ 0x99, 0xf0, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+ 0xda, 0x0, 0x0, 0x0, 0x0, 0x10, 0xd, 0xff,
+ 0xff, 0xff, 0x87, 0xa8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xe3, 0x81, 0xfe, 0x6a,
+ 0x0, 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff, 0xad,
+ 0xd6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xe0,
+ 0xb7, 0xff, 0xff, 0xdd, 0xf8, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x29, 0x22, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x29, 0x22, 0x0,
+ 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff, 0xad, 0xd6,
+ 0x0, 0xc4, 0x9f, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
+ 0x9b, 0xbe, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x27, 0x90,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xe5, 0xfe, 0xd3, 0xff, 0xfb,
+ 0x21, 0x98, 0x39, 0xff, 0xff, 0xc3, 0xfe, 0xf3,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x31, 0xf7, 0xff,
+ 0xf9, 0x37, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff, 0xad,
+ 0xd6, 0x0, 0x0, 0x0, 0x0, 0x6, 0xd, 0xff,
+ 0xff, 0xff, 0x87, 0xac, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0x93, 0x91,
+ 0x91, 0x95, 0xbb, 0xff, 0xff, 0xff, 0xa1, 0xf6,
+ 0x12, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+ 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xe4,
+ 0xb7, 0xff, 0xff, 0xdb, 0xf6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0x9d, 0x9b, 0x9b,
+ 0x9b, 0x9b, 0x9b, 0x9b, 0x19, 0x14, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xef, 0xef,
+ 0xef, 0xef, 0xef, 0xef, 0xef, 0x27, 0x1a, 0x0,
+ 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad, 0xda,
+ 0x0, 0xda, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xc7, 0xe4, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef,
+ 0xef, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xe9, 0xe9, 0xff, 0xff, 0xff, 0xbb, 0xfe,
+ 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xef, 0xfe, 0x85, 0xff, 0xff,
+ 0x7d, 0xf2, 0x93, 0xff, 0xff, 0x71, 0xfe, 0xfb,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xec, 0x93, 0xff,
+ 0xff, 0xbf, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+ 0xda, 0x0, 0x0, 0x0, 0x0, 0x12, 0xd, 0xff,
+ 0xff, 0xff, 0x87, 0xa8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xba,
+ 0xba, 0xcc, 0xfe, 0x8b, 0xff, 0xff, 0xfb, 0x31,
+ 0x46, 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb5,
+ 0xe4, 0x0, 0x0, 0x0, 0x0, 0x6c, 0xb8, 0xdc,
+ 0xd6, 0xa8, 0x4c, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xf4,
+ 0xc5, 0xff, 0xff, 0xcd, 0xee, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xc8, 0xc6,
+ 0xc6, 0xc6, 0xc6, 0xa4, 0x68, 0x6, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xf8, 0xd4, 0xc, 0x0,
+ 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb5, 0xe6,
+ 0x0, 0xc2, 0x9b, 0xc1, 0xc1, 0xef, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0xfe, 0xc1, 0xff, 0xff, 0xff, 0x71,
+ 0xde, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xf7, 0xfe, 0x25, 0xfb, 0xff,
+ 0xcb, 0xfe, 0xdd, 0xff, 0xf3, 0x11, 0xf, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x60, 0xf, 0xe3,
+ 0xff, 0xff, 0x67, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff, 0xbb,
+ 0xe8, 0x0, 0x0, 0x0, 0x0, 0x36, 0x2b, 0xff,
+ 0xff, 0xff, 0x7b, 0x98, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x70, 0x35, 0xff, 0xff, 0xff, 0x6b,
+ 0x74, 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff, 0xcd,
+ 0xfa, 0xc, 0x0, 0x0, 0x6, 0xf6, 0xa3, 0xbb,
+ 0xbb, 0x81, 0x8e, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x3c, 0x5,
+ 0xeb, 0xff, 0xff, 0xaf, 0xd6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff, 0xcf, 0xfa,
+ 0x12, 0x62, 0xb8, 0xe0, 0xfe, 0xcb, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x34, 0xe8, 0xfc, 0xfe, 0xfc, 0xe6,
+ 0x1a, 0x0, 0x80, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x44, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x98, 0x31, 0xf3, 0xff, 0xff, 0xef,
+ 0x27, 0x8e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0x5, 0xfa, 0xc1, 0xff,
+ 0xfd, 0x5d, 0xff, 0xff, 0xb1, 0xf0, 0x21, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xa, 0xca, 0x65,
+ 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xe8, 0xc3, 0xff, 0xff, 0xd5,
+ 0xfe, 0x1a, 0x0, 0x0, 0x0, 0x92, 0x55, 0xff,
+ 0xff, 0xff, 0x61, 0x6e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x8c, 0x3b, 0xff, 0xff, 0xff, 0x75,
+ 0x7e, 0x0, 0x0, 0xca, 0xa1, 0xff, 0xff, 0xf7,
+ 0x23, 0x72, 0x0, 0x0, 0x6a, 0x17, 0xfb, 0xff,
+ 0xff, 0x95, 0x9c, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x32, 0xe6, 0x71,
+ 0xff, 0xff, 0xff, 0x6d, 0x98, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xc8, 0x9d, 0xff, 0xff, 0xf9, 0x31,
+ 0x92, 0x0, 0x0, 0x0, 0xf0, 0xcb, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x4c, 0x67, 0xf7, 0xf7, 0xf7, 0x3f,
+ 0x5e, 0x0, 0xb2, 0x75, 0xff, 0xff, 0xff, 0x31,
+ 0x2c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x18, 0xe8, 0x83, 0xff, 0xff, 0xff,
+ 0xbd, 0xfe, 0x3e, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xac, 0x71, 0xff,
+ 0xff, 0xe9, 0xff, 0xff, 0x5b, 0xa0, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x34, 0xfe,
+ 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xba, 0x8f, 0xff, 0xff, 0xfd,
+ 0x3f, 0xa2, 0x4, 0x0, 0x2a, 0xf8, 0xad, 0xff,
+ 0xff, 0xfb, 0x1b, 0x36, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xe0,
+ 0xe2, 0xf0, 0x9, 0xad, 0xff, 0xff, 0xff, 0x4d,
+ 0x5a, 0x0, 0x0, 0x7c, 0x49, 0xff, 0xff, 0xff,
+ 0xa5, 0xfe, 0xd0, 0xd0, 0xfe, 0x9f, 0xff, 0xff,
+ 0xff, 0x4b, 0x72, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0xe4, 0xf0, 0xfe, 0x63, 0xf1,
+ 0xff, 0xff, 0xdf, 0x9, 0x3a, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xe0, 0xe0,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xc8, 0x92, 0x20, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x74, 0x41, 0xfd, 0xff, 0xff, 0xbf,
+ 0x9, 0xdc, 0xb6, 0xd6, 0xfe, 0xd1, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x4c, 0x47, 0xff, 0xff, 0xff, 0x81,
+ 0xf6, 0xd0, 0xfe, 0xb7, 0xff, 0xff, 0xf1, 0x9,
+ 0x12, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x4c, 0x5, 0xcf, 0xff, 0xff,
+ 0xff, 0x73, 0xe0, 0xe, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xe0, 0xe0, 0xe0,
+ 0xe0, 0xe0, 0xd2, 0xa6, 0x4a, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x44, 0x11, 0xf3,
+ 0xff, 0xff, 0xff, 0xe7, 0x5, 0x4e, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x98,
+ 0x39, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x62, 0x2d, 0xf9, 0xff, 0xff,
+ 0xc9, 0x11, 0xe6, 0xce, 0xfa, 0x57, 0xfb, 0xff,
+ 0xff, 0xb5, 0xf6, 0x8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xb7, 0xb7,
+ 0xb7, 0xbf, 0xe3, 0xff, 0xff, 0xff, 0xdb, 0xfe,
+ 0x22, 0x0, 0x0, 0x20, 0xfe, 0xb9, 0xff, 0xff,
+ 0xff, 0xc7, 0x89, 0x93, 0xc9, 0xff, 0xff, 0xff,
+ 0xc5, 0xfe, 0x22, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xb7, 0xb7, 0xbf, 0xe1, 0xff, 0xff,
+ 0xff, 0xf7, 0x49, 0xc0, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xb7, 0xb7, 0xb7,
+ 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x49, 0x50, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x1c, 0xfa, 0xa7, 0xff, 0xff, 0xff,
+ 0xdb, 0x93, 0x83, 0x95, 0xd1, 0xff, 0xff, 0xff,
+ 0xc3, 0xd4, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x1e, 0xfe, 0xe3, 0xff, 0xff, 0xf7,
+ 0xa5, 0x89, 0xbb, 0xff, 0xff, 0xff, 0xa7, 0xea,
+ 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x0, 0xaa, 0x3f, 0xf9, 0xff,
+ 0xff, 0xef, 0x29, 0x90, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xb7, 0xb7, 0xb7, 0xb7,
+ 0xb7, 0xb7, 0xb7, 0x7f, 0xa2, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xa, 0xee, 0xb1,
+ 0xff, 0xff, 0xff, 0x9f, 0xde, 0x2a, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x16,
+ 0xf2, 0x9b, 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x10, 0xee, 0x8f, 0xff, 0xff,
+ 0xff, 0xe3, 0x9f, 0x91, 0xb7, 0xfb, 0xff, 0xff,
+ 0xef, 0x31, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x45, 0xba,
+ 0x0, 0x0, 0x0, 0x0, 0x88, 0x1d, 0xcf, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf,
+ 0x27, 0x98, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xe5, 0x4d, 0xe8, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x67, 0x74, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x70, 0xb, 0xb7, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf,
+ 0x37, 0x98, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0xc8, 0x5d, 0xfb, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0x1d, 0x74,
+ 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x0, 0x1a, 0xf2, 0x93, 0xff,
+ 0xff, 0xff, 0xbf, 0xfe, 0x40, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xb3, 0xd0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x90, 0x59,
+ 0xff, 0xff, 0xff, 0x41, 0x76, 0x2a, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x66, 0x15, 0xe9, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x0, 0x58, 0xfe, 0xa7, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef,
+ 0x51, 0xda, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x86, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfd, 0xf3, 0xd3, 0x95, 0x21, 0xd4, 0x1e,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0xa4, 0x11, 0x91,
+ 0xe9, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x9b, 0x17,
+ 0xba, 0xe, 0x0, 0x0, 0x0, 0x86, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xf9, 0xeb, 0xc3, 0x7f,
+ 0xf, 0xca, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x86, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x67, 0x60, 0x0,
+ 0x0, 0x86, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x2, 0x82, 0xfe, 0x73, 0xd7,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x89, 0xd,
+ 0xbc, 0x16, 0x0, 0x0, 0x0, 0x86, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x4, 0x0, 0x0, 0x0, 0x4,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0x82, 0x0, 0x0,
+ 0x0, 0x42, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x52,
+ 0x0, 0x0, 0x0, 0x2e, 0xf0, 0x4d, 0xc9, 0xfd,
+ 0xff, 0xff, 0xff, 0xf3, 0xa5, 0x19, 0xb2, 0x8,
+ 0x0, 0x0, 0x0, 0x0, 0x86, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x4, 0x0, 0x0, 0x5e, 0xd, 0xdb,
+ 0xff, 0xff, 0xff, 0x75, 0x40, 0x0, 0x0, 0x86,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xb3, 0xbc, 0x0, 0x0, 0x86,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x2c, 0xfe,
+ 0xe7, 0xff, 0xd9, 0xfe, 0x1c, 0x1c, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x74, 0x0, 0x0, 0x0, 0x86,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x0, 0x0,
+ 0x6, 0xd4, 0x6f, 0xff, 0xff, 0xff, 0x83, 0x82,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x6e, 0xfe, 0x69,
+ 0xd3, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xab, 0x2d,
+ 0xd8, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xf6, 0xc8, 0x64, 0xa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x5a, 0xda,
+ 0xfe, 0x39, 0x55, 0x55, 0x35, 0xfe, 0xe0, 0x68,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xee, 0xb0,
+ 0x4a, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x36, 0x0,
+ 0x0, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xbe, 0xfe,
+ 0x25, 0x4f, 0x57, 0x43, 0x21, 0xfc, 0xc4, 0x54,
+ 0x2, 0x0, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x2, 0x0, 0x0, 0x0, 0x2,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x4c, 0x0, 0x0,
+ 0x0, 0x24, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2c,
+ 0x0, 0x0, 0x0, 0x0, 0x24, 0xa6, 0xfa, 0x1b,
+ 0x4d, 0x59, 0x47, 0xb, 0xea, 0x70, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x2, 0x0, 0x0, 0x2, 0xb0, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x40, 0x0, 0x0, 0x50,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x7e, 0x0, 0x0, 0x50,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2, 0x0, 0xc2,
+ 0xfe, 0xfe, 0xfe, 0xac, 0x0, 0xe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x42, 0x0, 0x0, 0x0, 0x50,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2, 0x0, 0x0,
+ 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x4c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0xb8,
+ 0xfc, 0x23, 0x4d, 0x57, 0x41, 0x9, 0xea, 0x7e,
+ 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x16, 0x3c, 0x5a, 0x58, 0x38, 0x14, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0x2e, 0x50, 0x5c, 0x48, 0x24, 0xa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x2a,
+ 0x4e, 0x5e, 0x46, 0x20, 0x2, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc, 0x2e, 0x50, 0x5a, 0x40, 0x1a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x62, 0xd0, 0xf0, 0xf8, 0xf8, 0xee, 0xca,
+ 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90,
+ 0xde, 0xf4, 0xf8, 0xf8, 0xea, 0xbc, 0x24, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xb0, 0x9b, 0xdd, 0xdd, 0xdd, 0xdd, 0x83,
+ 0x90, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2,
+ 0xc3, 0xdd, 0xdd, 0xdd, 0xdd, 0x4d, 0x4a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20,
+ 0x1e, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x14, 0x3e, 0x66, 0x72, 0x56, 0x28, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20, 0x1e,
+ 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa,
+ 0x32, 0x5e, 0x78, 0x6c, 0x44, 0x18, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0x10, 0x1a, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x1e, 0x12, 0x8, 0x0, 0x0, 0x6,
+ 0x12, 0x1c, 0x1e, 0x14, 0x8, 0x0, 0x0, 0x0,
+ 0x0, 0x4, 0xe, 0x1a, 0x20, 0x16, 0xc, 0x0,
+ 0x0, 0x8, 0x14, 0x1e, 0x1e, 0x14, 0x8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20,
+ 0x18, 0xc, 0x2, 0x2, 0xe, 0x18, 0x20, 0x16,
+ 0xc, 0x0, 0x0, 0x0, 0x8, 0x14, 0x1a, 0x12,
+ 0x8, 0x0, 0x0, 0x0, 0xc, 0x16, 0x20, 0x18,
+ 0xc, 0x2, 0x0, 0x6, 0x12, 0x1c, 0x20, 0x1a,
+ 0xe, 0x4, 0x0, 0x0, 0x0, 0x2, 0xe, 0x18,
+ 0x20, 0x1c, 0x12, 0x6, 0x0, 0xa, 0x14, 0x20,
+ 0x1e, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6, 0x12, 0x1c, 0x20, 0x16, 0xc, 0x0, 0x0,
+ 0xc, 0x16, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x18, 0xc, 0x2, 0x0,
+ 0x0, 0xd6, 0xb3, 0xff, 0xff, 0xff, 0xff, 0x99,
+ 0xae, 0x0, 0xa, 0x16, 0x20, 0x1a, 0xe, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
+ 0xe3, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x6a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x16, 0x1a,
+ 0x10, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x1d, 0xfe, 0xfc, 0xd2, 0x6a, 0xc, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40,
+ 0xc8, 0xfe, 0x35, 0x5d, 0x67, 0x51, 0x11, 0xf2,
+ 0x8a, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x1d, 0xfe, 0xfc, 0xd4, 0x6a, 0xa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0xa8, 0xfc,
+ 0x21, 0x57, 0x69, 0x61, 0x3b, 0xfe, 0xd4, 0x4e,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x13, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x1b, 0x98, 0x0, 0x0, 0x7c,
+ 0x17, 0x23, 0x23, 0x1f, 0xbe, 0x0, 0x0, 0x0,
+ 0x0, 0x44, 0xf, 0x23, 0x23, 0x23, 0x5, 0x10,
+ 0x0, 0x92, 0x1f, 0x23, 0x23, 0x1d, 0xd2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x6c, 0xf, 0x23, 0x23,
+ 0x23, 0xb, 0xe, 0x1c, 0xd, 0x23, 0x23, 0x23,
+ 0xfe, 0x1c, 0x0, 0x0, 0xd6, 0x1d, 0x23, 0x1b,
+ 0xbe, 0x0, 0x0, 0x26, 0x5, 0x23, 0x23, 0x23,
+ 0xb, 0x10, 0x0, 0x36, 0x17, 0x23, 0x23, 0x23,
+ 0x11, 0x8c, 0x0, 0x0, 0x0, 0x76, 0xd, 0x23,
+ 0x23, 0x23, 0x19, 0x4c, 0x0, 0x86, 0x21, 0x23,
+ 0x23, 0x1f, 0xf0, 0x14, 0x0, 0x0, 0x0, 0x4,
+ 0xcc, 0x19, 0x23, 0x23, 0x23, 0x7, 0x0, 0xe,
+ 0x5, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0xb, 0x24, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xf7, 0xcb, 0x79,
+ 0x8a, 0x0, 0xa6, 0x21, 0x23, 0x23, 0x11, 0x82,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc,
+ 0xb3, 0xd5, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x28, 0xfe, 0x21, 0x23,
+ 0x15, 0x9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xfd, 0xdd, 0x9b, 0x25, 0xd4, 0x20,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7a, 0xfe,
+ 0x75, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xb5,
+ 0x35, 0xde, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfd, 0xdd, 0x9b, 0x21, 0xce, 0x16, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4a, 0xfa, 0x55, 0xcb,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x85, 0x5,
+ 0x8c, 0x2, 0x0, 0x0, 0x9a, 0x95, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xc7, 0xd4, 0x0, 0x0, 0xba,
+ 0xb1, 0xff, 0xff, 0xe3, 0xee, 0x0, 0x0, 0x0,
+ 0x0, 0x76, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x20,
+ 0x0, 0xae, 0xc3, 0xff, 0xff, 0xef, 0x5, 0x26,
+ 0x0, 0x0, 0x0, 0x0, 0xd4, 0xa1, 0xff, 0xff,
+ 0xfd, 0x29, 0xe, 0x1c, 0x41, 0xff, 0xff, 0xff,
+ 0x41, 0x54, 0x0, 0x20, 0x5, 0xf1, 0xff, 0xe3,
+ 0xfe, 0x12, 0x0, 0x66, 0x51, 0xff, 0xff, 0xff,
+ 0x2b, 0x10, 0x0, 0x36, 0x63, 0xff, 0xff, 0xff,
+ 0xbf, 0xfc, 0x24, 0x0, 0x18, 0xf8, 0xad, 0xff,
+ 0xff, 0xff, 0x7b, 0x4c, 0x0, 0x90, 0xb7, 0xff,
+ 0xff, 0xfb, 0x35, 0x7e, 0x0, 0x0, 0x0, 0x4c,
+ 0xf, 0xeb, 0xff, 0xff, 0xdb, 0x7, 0x0, 0x1c,
+ 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x3c, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfe, 0xb4,
+ 0x44, 0x0, 0xbe, 0xd1, 0xff, 0xff, 0xb7, 0xf2,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c,
+ 0xdc, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x96, 0x55, 0xff, 0xff,
+ 0xcd, 0xfc, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x49, 0xce,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x60, 0x5, 0xb1,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xf1, 0x57, 0xde, 0x14, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xe9, 0x37, 0x9e, 0x0,
+ 0x0, 0x0, 0x0, 0x1a, 0xf4, 0x7f, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
+ 0xd, 0x5e, 0x0, 0x0, 0xac, 0x95, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xc7, 0xe0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0xae, 0x77, 0xff, 0xff, 0xff, 0x53, 0x7c,
+ 0x0, 0x0, 0x0, 0x16, 0xfe, 0xdf, 0xff, 0xff,
+ 0xc9, 0xfc, 0xe, 0x1a, 0xfe, 0xf3, 0xff, 0xff,
+ 0x75, 0x9a, 0x0, 0x6a, 0x49, 0xff, 0xff, 0xff,
+ 0x31, 0x52, 0x0, 0xac, 0x81, 0xff, 0xff, 0xe7,
+ 0xfe, 0xe, 0x0, 0x32, 0xfe, 0xbf, 0xff, 0xff,
+ 0xff, 0x4f, 0xa4, 0x0, 0x8e, 0x3b, 0xfb, 0xff,
+ 0xff, 0xd3, 0xfe, 0x46, 0x0, 0x8c, 0x39, 0xfb,
+ 0xff, 0xff, 0xab, 0xf2, 0xe, 0x0, 0x0, 0xd0,
+ 0x81, 0xff, 0xff, 0xff, 0x67, 0xc0, 0x0, 0x22,
+ 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x41, 0x3a, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0xbe, 0x7d, 0xff, 0xff, 0xf7, 0x1f,
+ 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0xc, 0xf6, 0xb7, 0xff, 0xff,
+ 0xff, 0x41, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad,
+ 0xad, 0xb3, 0xd5, 0xff, 0xff, 0xff, 0xe9, 0x17,
+ 0x50, 0x0, 0x0, 0x0, 0x12, 0xf4, 0x97, 0xff,
+ 0xff, 0xff, 0xd9, 0x91, 0x83, 0xad, 0xf9, 0xff,
+ 0xff, 0xf1, 0x35, 0x8e, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad, 0xad,
+ 0xb9, 0xe5, 0xff, 0xff, 0xff, 0xc7, 0xfc, 0xc,
+ 0x0, 0x0, 0x0, 0x70, 0x3f, 0xfb, 0xff, 0xff,
+ 0xef, 0x99, 0x75, 0x87, 0xd5, 0xff, 0xff, 0xff,
+ 0x95, 0xde, 0x0, 0x0, 0x7e, 0x65, 0xad, 0xad,
+ 0xad, 0xad, 0xb7, 0xff, 0xff, 0xff, 0xc7, 0xad,
+ 0xad, 0xad, 0xad, 0x87, 0xb6, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x48, 0x1b, 0xf9, 0xff, 0xff, 0x9b, 0xd4,
+ 0x0, 0x0, 0x0, 0x62, 0x39, 0xff, 0xff, 0xff,
+ 0x7f, 0xb8, 0x0, 0x0, 0xf6, 0xc9, 0xff, 0xff,
+ 0xa1, 0xd0, 0x0, 0xbe, 0x8b, 0xff, 0xff, 0xff,
+ 0x79, 0xa6, 0x0, 0xdc, 0xad, 0xff, 0xff, 0xbd,
+ 0xec, 0x0, 0x0, 0x0, 0x92, 0x33, 0xf7, 0xff,
+ 0xff, 0xc9, 0xfe, 0x46, 0xfc, 0xb9, 0xff, 0xff,
+ 0xfd, 0x4b, 0xb0, 0x0, 0x0, 0x16, 0xf6, 0xab,
+ 0xff, 0xff, 0xf9, 0x29, 0x70, 0x0, 0x40, 0x9,
+ 0xe3, 0xff, 0xff, 0xd1, 0xfe, 0x36, 0x0, 0x16,
+ 0x1b, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
+ 0xb7, 0xff, 0xff, 0xff, 0xb9, 0xfe, 0x1a, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x4c, 0x19, 0xf5, 0xff, 0xff, 0x83,
+ 0xc4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x60, 0x27, 0xf9, 0xff, 0xff,
+ 0xff, 0xa7, 0xec, 0x6, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8,
+ 0xd8, 0xe6, 0xfe, 0x87, 0xff, 0xff, 0xff, 0x81,
+ 0xa8, 0x0, 0x0, 0x0, 0x68, 0x31, 0xfb, 0xff,
+ 0xff, 0xc1, 0x9, 0xda, 0xc0, 0xf8, 0x51, 0xf9,
+ 0xff, 0xff, 0xb9, 0xf8, 0x8, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8, 0xda,
+ 0xee, 0xd, 0xc3, 0xff, 0xff, 0xff, 0x25, 0x2e,
+ 0x0, 0x0, 0x0, 0xb2, 0x97, 0xff, 0xff, 0xfb,
+ 0x3d, 0xea, 0xae, 0xd0, 0x5, 0xcf, 0xff, 0xff,
+ 0xeb, 0x5, 0xc, 0x0, 0x34, 0x92, 0xc4, 0xd6,
+ 0xd6, 0xe0, 0x35, 0xff, 0xff, 0xff, 0x6f, 0xec,
+ 0xd6, 0xd6, 0xcc, 0xa0, 0x50, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x8, 0xf6, 0xbf, 0xff, 0xff, 0xd9, 0xfe,
+ 0x10, 0x0, 0x0, 0xbe, 0x89, 0xff, 0xff, 0xfb,
+ 0x23, 0x50, 0x0, 0x0, 0xce, 0x9d, 0xff, 0xff,
+ 0xc7, 0xf2, 0x0, 0xf2, 0xc3, 0xff, 0xff, 0xff,
+ 0xb3, 0xe8, 0x0, 0xf8, 0xd3, 0xff, 0xff, 0x8d,
+ 0xbc, 0x0, 0x0, 0x0, 0x14, 0xee, 0x93, 0xff,
+ 0xff, 0xff, 0x59, 0xe2, 0x47, 0xff, 0xff, 0xff,
+ 0xab, 0xfa, 0x22, 0x0, 0x0, 0x0, 0x7c, 0x2d,
+ 0xf7, 0xff, 0xff, 0x9f, 0xec, 0x8, 0xc4, 0x75,
+ 0xff, 0xff, 0xff, 0x59, 0xb2, 0x0, 0x0, 0x8,
+ 0x7a, 0xb6, 0xd6, 0xd6, 0xd6, 0xd6, 0xde, 0xfe,
+ 0xad, 0xff, 0xff, 0xf1, 0x29, 0x8a, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x6, 0xf0, 0xb1, 0xff, 0xff, 0xd5,
+ 0xfe, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0xd8, 0x91, 0xff, 0xff, 0xd5,
+ 0xff, 0xf3, 0x17, 0x4e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x50, 0xfe, 0xe5, 0xff, 0xff, 0xb5,
+ 0xd6, 0x0, 0x0, 0x0, 0xbe, 0x93, 0xff, 0xff,
+ 0xfb, 0x37, 0x96, 0x0, 0x0, 0x26, 0xf6, 0xa9,
+ 0xff, 0xff, 0xfd, 0x1f, 0x3a, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x2, 0xb6, 0x63, 0xff, 0xff, 0xff, 0x4f, 0x44,
+ 0x0, 0x0, 0x0, 0xc8, 0xad, 0xff, 0xff, 0xe7,
+ 0xfe, 0x46, 0x0, 0x0, 0xb8, 0x7b, 0xf5, 0xf5,
+ 0xf5, 0x27, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0xa8, 0x71, 0xff, 0xff, 0xff, 0x2f,
+ 0x56, 0x0, 0x6, 0xf8, 0xc9, 0xff, 0xff, 0xc5,
+ 0xfa, 0xc, 0x0, 0x0, 0x8c, 0x69, 0xff, 0xff,
+ 0xeb, 0xfe, 0x30, 0x5, 0xf3, 0xff, 0xff, 0xff,
+ 0xe7, 0xfe, 0x2c, 0x5, 0xf5, 0xff, 0xff, 0x57,
+ 0x76, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xf, 0xe3,
+ 0xff, 0xff, 0xd1, 0xfe, 0xc3, 0xff, 0xff, 0xef,
+ 0x21, 0x7a, 0x0, 0x0, 0x0, 0x0, 0x10, 0xf0,
+ 0x9d, 0xff, 0xff, 0xf3, 0x1f, 0x82, 0xfe, 0xdb,
+ 0xff, 0xff, 0xc5, 0xfe, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xc4, 0x57,
+ 0xff, 0xff, 0xff, 0x7b, 0xe2, 0xe, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x90, 0x55, 0xff, 0xff, 0xff,
+ 0x43, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x34, 0x5, 0xe5, 0xff, 0xd5, 0x65,
+ 0xff, 0xff, 0x81, 0xc6, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x4, 0xfa, 0xcf, 0xff, 0xff, 0xc1,
+ 0xe0, 0x0, 0x0, 0x0, 0xe8, 0xc5, 0xff, 0xff,
+ 0xd3, 0xfc, 0x16, 0x0, 0x0, 0x0, 0x8e, 0x53,
+ 0xff, 0xff, 0xff, 0x65, 0x72, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0xa2, 0x5b, 0xff, 0xff, 0xff, 0x41, 0x3e,
+ 0x0, 0x0, 0x0, 0xb2, 0x97, 0xff, 0xff, 0xff,
+ 0x63, 0xfc, 0x9a, 0x2e, 0x44, 0xe6, 0xfc, 0xfe,
+ 0xfa, 0xde, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x42, 0x15, 0xf7, 0xff, 0xff, 0x81,
+ 0xb4, 0x0, 0x40, 0x19, 0xf9, 0xff, 0xff, 0x7b,
+ 0xb2, 0x0, 0x0, 0x0, 0x42, 0x29, 0xff, 0xff,
+ 0xff, 0x29, 0x90, 0x4d, 0xff, 0xff, 0xfb, 0xff,
+ 0xff, 0x37, 0x8c, 0x3d, 0xff, 0xff, 0xfb, 0x15,
+ 0x2e, 0x0, 0x0, 0x0, 0x0, 0x4, 0xca, 0x63,
+ 0xff, 0xff, 0xff, 0x9b, 0xff, 0xff, 0xff, 0x7d,
+ 0xe0, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6c,
+ 0x21, 0xf1, 0xff, 0xff, 0x93, 0xf6, 0x67, 0xff,
+ 0xff, 0xff, 0x49, 0xa0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0x11, 0xe1,
+ 0xff, 0xff, 0xc9, 0xfe, 0x44, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x28, 0xfe, 0xdf, 0xff, 0xff,
+ 0xa5, 0xe8, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0xa6, 0x65, 0xff, 0xff, 0x7f, 0x5,
+ 0xe7, 0xff, 0xd9, 0xfe, 0x26, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x6, 0x82, 0x11, 0xef, 0xff, 0xff, 0xad,
+ 0xd0, 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff,
+ 0xb7, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x32, 0x27,
+ 0xff, 0xff, 0xff, 0x7d, 0x9a, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xba, 0xbe,
+ 0xda, 0xfe, 0xab, 0xff, 0xff, 0xe7, 0xd, 0x1e,
+ 0x0, 0x0, 0x0, 0x6e, 0x3d, 0xfb, 0xff, 0xff,
+ 0xfd, 0xbb, 0x5d, 0x5, 0xe8, 0x88, 0x22, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x6, 0xf4, 0xbb, 0xff, 0xff, 0xc3,
+ 0xf6, 0x4, 0x9c, 0x6d, 0xff, 0xff, 0xf9, 0x1f,
+ 0x4a, 0x0, 0x0, 0x0, 0xe, 0xfe, 0xe5, 0xff,
+ 0xff, 0x63, 0xde, 0x8f, 0xff, 0xff, 0xad, 0xff,
+ 0xff, 0x7f, 0xdc, 0x71, 0xff, 0xff, 0xd9, 0xfc,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0xfe,
+ 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x5,
+ 0x48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa,
+ 0xe6, 0x91, 0xff, 0xff, 0xef, 0x15, 0xd1, 0xff,
+ 0xff, 0xbb, 0xfc, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x1e, 0xf6, 0x9b, 0xff,
+ 0xff, 0xf7, 0x39, 0xa0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xd2, 0x8f, 0xff, 0xff,
+ 0xef, 0xd, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x14, 0xfc, 0xc3, 0xff, 0xf5, 0x1b, 0xe6,
+ 0x97, 0xff, 0xff, 0x53, 0x94, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xfa,
+ 0xfa, 0xfe, 0x19, 0xb3, 0xff, 0xff, 0xff, 0x6d,
+ 0x96, 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff,
+ 0xad, 0xda, 0x0, 0x0, 0x0, 0x0, 0x10, 0xd,
+ 0xff, 0xff, 0xff, 0x87, 0xa8, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0x93, 0x91, 0x91,
+ 0x9f, 0xcf, 0xff, 0xff, 0xf7, 0x5f, 0xce, 0x2,
+ 0x0, 0x0, 0x0, 0x1a, 0xf4, 0x7b, 0xfb, 0xff,
+ 0xff, 0xff, 0xff, 0xed, 0xad, 0x4b, 0xfe, 0x96,
+ 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x0, 0xa2, 0x6d, 0xff, 0xff, 0xf7,
+ 0x11, 0x36, 0xea, 0xb1, 0xff, 0xff, 0xc1, 0xf8,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0xec, 0xbb, 0xff,
+ 0xff, 0x91, 0xfc, 0xc5, 0xff, 0xf9, 0x31, 0xff,
+ 0xff, 0xb7, 0xfa, 0x9d, 0xff, 0xff, 0xad, 0xde,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x94,
+ 0x35, 0xf7, 0xff, 0xff, 0xff, 0xfd, 0x4d, 0xb2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x15, 0xeb, 0xff, 0xff, 0xb9, 0xff, 0xff,
+ 0xfb, 0x3d, 0x90, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xb2, 0x47, 0xfb, 0xff,
+ 0xff, 0x8d, 0xee, 0x16, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x2b, 0xfb, 0xff,
+ 0xff, 0x6f, 0xac, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x32, 0x35, 0xfd, 0xff, 0xaf, 0xf0, 0x6e,
+ 0x31, 0xfd, 0xff, 0xb7, 0xb6, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xdf, 0xdf,
+ 0xdf, 0xe5, 0xfb, 0xff, 0xff, 0xff, 0xd1, 0x5,
+ 0x3a, 0x0, 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff,
+ 0xad, 0xd6, 0x0, 0x0, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x87, 0xac, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd1, 0x3d, 0xf4, 0x32, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x46, 0xf4, 0x49, 0xc7,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x31,
+ 0xd4, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x0, 0x3c, 0x11, 0xf3, 0xff, 0xff,
+ 0x63, 0xa0, 0xfe, 0xed, 0xff, 0xff, 0x75, 0xac,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xba, 0x8b, 0xff,
+ 0xff, 0xb9, 0x9, 0xf3, 0xff, 0xcb, 0xfe, 0xdb,
+ 0xff, 0xeb, 0xfe, 0xc5, 0xff, 0xff, 0x7b, 0xa6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36,
+ 0xfe, 0xc3, 0xff, 0xff, 0xff, 0xd9, 0xfe, 0x58,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6, 0xda, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xad, 0xf8, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x54, 0x9, 0xd5, 0xff, 0xff,
+ 0xd9, 0x9, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xe, 0xfa, 0xc1, 0xff,
+ 0xff, 0xc5, 0xfa, 0x10, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x32, 0x4b, 0x91, 0x91, 0x3d, 0x86, 0x12,
+ 0xf6, 0x7b, 0x91, 0x89, 0xa8, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xcb, 0x25, 0xa6,
+ 0x0, 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff,
+ 0xad, 0xda, 0x0, 0x0, 0x0, 0x0, 0x12, 0xd,
+ 0xff, 0xff, 0xff, 0x87, 0xa6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xb9, 0xf, 0x6e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0xa2, 0xfc,
+ 0x41, 0x9d, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xed,
+ 0x39, 0x9a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x0, 0x4, 0xf0, 0xb5, 0xff, 0xff,
+ 0xa9, 0xf0, 0x4f, 0xff, 0xff, 0xf7, 0x19, 0x46,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x55, 0xff,
+ 0xff, 0xdf, 0x51, 0xff, 0xff, 0x95, 0xf8, 0xa7,
+ 0xff, 0xff, 0x3d, 0xeb, 0xff, 0xff, 0x43, 0x5a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba,
+ 0x53, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0xda,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4e, 0xb, 0xe3, 0xff, 0xff, 0xff, 0xf9,
+ 0x2f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x16, 0xee, 0x8b, 0xff, 0xff, 0xfb,
+ 0x4b, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa6, 0x6b, 0xff,
+ 0xff, 0xfd, 0x2f, 0x66, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x20, 0x6e, 0xa0, 0x9e, 0x6a, 0x1a, 0x0,
+ 0x46, 0x86, 0xac, 0x8e, 0x52, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xdd, 0xdd,
+ 0xdd, 0xdb, 0xcf, 0xab, 0x5f, 0xfe, 0x9e, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff,
+ 0xbb, 0xe8, 0x0, 0x0, 0x0, 0x0, 0x36, 0x2b,
+ 0xff, 0xff, 0xff, 0x7b, 0x96, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0x4d, 0x49, 0x49,
+ 0x5b, 0xa5, 0xff, 0xff, 0xff, 0xa3, 0xe4, 0x0,
+ 0x0, 0x0, 0x6, 0x3a, 0x62, 0x80, 0x6a, 0x56,
+ 0x7e, 0xd8, 0xfe, 0x47, 0xb7, 0xff, 0xff, 0xff,
+ 0xc3, 0xf8, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd8,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfc, 0x0, 0x0, 0x0,
+ 0x0, 0x9c, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2a,
+ 0x0, 0x0, 0x0, 0x0, 0x9a, 0x67, 0xff, 0xff,
+ 0xe5, 0xfe, 0x9b, 0xff, 0xff, 0xbd, 0xf6, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0x13, 0xfb,
+ 0xff, 0xfb, 0x97, 0xff, 0xff, 0x55, 0xc4, 0x6b,
+ 0xff, 0xff, 0x93, 0xff, 0xff, 0xf3, 0x5, 0x1c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x50, 0x9,
+ 0xd9, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xeb, 0x1f,
+ 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2, 0xd2, 0x75, 0xff, 0xff, 0xff, 0xa1,
+ 0xf4, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x9e, 0x37, 0xf7, 0xff, 0xff, 0xa1,
+ 0xf8, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0xb, 0xed,
+ 0xff, 0xff, 0x93, 0xd6, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xf8,
+ 0xf8, 0xf6, 0xee, 0xd4, 0x8e, 0x30, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xe8, 0xc3, 0xff, 0xff,
+ 0xd5, 0xfe, 0x1a, 0x0, 0x0, 0x0, 0x92, 0x55,
+ 0xff, 0xff, 0xff, 0x5f, 0x6a, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x58, 0x5e,
+ 0x94, 0xfe, 0xb7, 0xff, 0xff, 0xef, 0xfe, 0x6,
+ 0x0, 0x0, 0xe, 0x15, 0x67, 0x67, 0x67, 0x2d,
+ 0x5e, 0x0, 0x1e, 0x90, 0xfe, 0xb3, 0xff, 0xff,
+ 0xfb, 0x13, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0,
+ 0xab, 0xff, 0xff, 0xeb, 0xfe, 0x8, 0x0, 0x0,
+ 0x0, 0xb2, 0x81, 0xff, 0xff, 0xff, 0x25, 0x1c,
+ 0x0, 0x0, 0x0, 0x0, 0x36, 0xd, 0xf1, 0xff,
+ 0xff, 0x41, 0xd9, 0xff, 0xff, 0x71, 0xa6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xfc, 0xd9,
+ 0xff, 0xff, 0xeb, 0xff, 0xf5, 0xb, 0x5c, 0x1f,
+ 0xfd, 0xff, 0xeb, 0xff, 0xff, 0xcb, 0xf6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xe6, 0x87,
+ 0xff, 0xff, 0xff, 0x75, 0xf9, 0xff, 0xff, 0xab,
+ 0xfa, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x68, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x44, 0xfe, 0xc7, 0xff, 0xff, 0xe3, 0x15,
+ 0x6c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xe4, 0xa1,
+ 0xff, 0xff, 0xe3, 0xfe, 0x2c, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xba, 0x8f, 0xff, 0xff,
+ 0xfd, 0x3f, 0xa2, 0x4, 0x0, 0x2a, 0xf8, 0xad,
+ 0xff, 0xff, 0xf7, 0x15, 0x34, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0xbc, 0x81, 0xff, 0xff, 0xff, 0x19, 0x14,
+ 0x0, 0x0, 0xe, 0x1d, 0xff, 0xff, 0xff, 0x8b,
+ 0xd0, 0x6, 0x0, 0x0, 0xcc, 0x77, 0xff, 0xff,
+ 0xff, 0x31, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb6,
+ 0x97, 0xff, 0xff, 0xff, 0x1d, 0x74, 0x0, 0x0,
+ 0x16, 0xf2, 0xa5, 0xff, 0xff, 0xf9, 0x5, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0xee, 0xb1, 0xff,
+ 0xff, 0x9f, 0xff, 0xff, 0xf7, 0x15, 0x40, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xde, 0xad,
+ 0xff, 0xff, 0xff, 0xff, 0xc5, 0xf6, 0xa, 0xfc,
+ 0xd5, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xce, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x84, 0x29, 0xf3,
+ 0xff, 0xff, 0xc3, 0xfe, 0xa5, 0xff, 0xff, 0xfd,
+ 0x51, 0xba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe, 0xe2, 0x79, 0xff, 0xff, 0xff, 0x5d, 0xca,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x41,
+ 0xff, 0xff, 0xff, 0x5b, 0x96, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x62, 0x2d, 0xf9, 0xff,
+ 0xff, 0xc9, 0x11, 0xe6, 0xce, 0xfa, 0x57, 0xfb,
+ 0xff, 0xff, 0xad, 0xf2, 0x6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x94, 0x73, 0xff, 0xff, 0xff, 0x29, 0x2a,
+ 0x0, 0x0, 0x8, 0xfe, 0xdf, 0xff, 0xff, 0xdd,
+ 0x15, 0xe8, 0xb4, 0xc8, 0xfe, 0xb1, 0xff, 0xff,
+ 0xfb, 0x11, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7a,
+ 0x59, 0xff, 0xff, 0xff, 0xa7, 0xfe, 0xd8, 0xc4,
+ 0xf4, 0x37, 0xf5, 0xff, 0xff, 0xcb, 0xf8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x94, 0x5f, 0xff,
+ 0xff, 0xf3, 0xff, 0xff, 0xb9, 0xf4, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa4, 0x7b,
+ 0xff, 0xff, 0xff, 0xff, 0x8d, 0xbe, 0x0, 0xd4,
+ 0x9f, 0xff, 0xff, 0xff, 0xff, 0x6b, 0x8e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2a, 0xfc, 0xb3, 0xff,
+ 0xff, 0xfd, 0x47, 0xca, 0x27, 0xf5, 0xff, 0xff,
+ 0xd9, 0x9, 0x54, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x8a, 0x27, 0xf1, 0xff, 0xff, 0xb3, 0xfe, 0xe4,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xcc, 0x98, 0x2e, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xfe,
+ 0xd1, 0xff, 0xff, 0xb5, 0xf4, 0x8, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x10, 0xee, 0x8f, 0xff,
+ 0xff, 0xff, 0xe3, 0x9f, 0x91, 0xb7, 0xfb, 0xff,
+ 0xff, 0xeb, 0x27, 0x7e, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x7e, 0x69, 0xff, 0xff, 0xff, 0x39, 0x52,
+ 0x0, 0x0, 0x0, 0xc8, 0x75, 0xff, 0xff, 0xff,
+ 0xe9, 0x9f, 0x81, 0x89, 0xc3, 0xff, 0xff, 0xff,
+ 0xbf, 0xf8, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a,
+ 0xfe, 0xd1, 0xff, 0xff, 0xff, 0xd1, 0x97, 0x89,
+ 0xab, 0xf7, 0xff, 0xff, 0xff, 0x5f, 0xac, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x9, 0xef,
+ 0xff, 0xff, 0xff, 0xff, 0x6b, 0xa0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0x41,
+ 0xff, 0xff, 0xff, 0xff, 0x49, 0x6a, 0x0, 0x86,
+ 0x61, 0xff, 0xff, 0xff, 0xff, 0x2b, 0x42, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xbc, 0x57, 0xff, 0xff,
+ 0xff, 0xb5, 0xfa, 0x2a, 0xec, 0x95, 0xff, 0xff,
+ 0xff, 0x8b, 0xec, 0x14, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+ 0xfe, 0xb9, 0xff, 0xff, 0xff, 0xc3, 0xb7, 0xb7,
+ 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x5d, 0x6c, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe,
+ 0x7d, 0xff, 0xff, 0xf7, 0x1d, 0x52, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0xfe, 0xa7,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x4f, 0xf2, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x58, 0x51, 0xff, 0xff, 0xff, 0x67, 0xba,
+ 0x0, 0x0, 0x0, 0x40, 0xfe, 0x91, 0xfd, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5,
+ 0x31, 0x92, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xaa, 0x31, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xfd, 0x8b, 0xfe, 0x30, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea, 0xad,
+ 0xff, 0xff, 0xff, 0xf3, 0x11, 0x3c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xfe,
+ 0xf3, 0xff, 0xff, 0xef, 0x5, 0x20, 0x0, 0x34,
+ 0x15, 0xf9, 0xff, 0xff, 0xe7, 0xfe, 0xe, 0x0,
+ 0x0, 0x0, 0x0, 0x52, 0x9, 0xdb, 0xff, 0xff,
+ 0xfb, 0x35, 0x8a, 0x0, 0x62, 0x19, 0xed, 0xff,
+ 0xff, 0xf7, 0x33, 0x94, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e,
+ 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0x98, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e,
+ 0x19, 0xf5, 0xff, 0xff, 0x81, 0xc4, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x86, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6e, 0xfe,
+ 0x69, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xdb, 0x33, 0xd6, 0x22, 0x0, 0x0, 0x0,
+ 0x86, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x0,
+ 0x0, 0x28, 0xf, 0xe9, 0xff, 0xff, 0xcf, 0xb4,
+ 0x0, 0x0, 0x0, 0x0, 0x5a, 0xf8, 0x49, 0xbb,
+ 0xf7, 0xff, 0xff, 0xff, 0xff, 0xed, 0xa1, 0x21,
+ 0xc6, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x26, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x68,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x12, 0xc0, 0x17, 0x97, 0xe7, 0xff, 0xff, 0xff,
+ 0xff, 0xf9, 0xc3, 0x55, 0xf8, 0x54, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8e, 0x5b,
+ 0xff, 0xff, 0xff, 0xb7, 0xee, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
+ 0xc9, 0xff, 0xff, 0xbf, 0xea, 0x0, 0x0, 0x6,
+ 0xf6, 0xcf, 0xff, 0xff, 0xbd, 0xe2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x52, 0x89, 0xff, 0xff, 0xff,
+ 0xa7, 0xf4, 0x14, 0x0, 0x6, 0xde, 0x87, 0xff,
+ 0xff, 0xff, 0xc1, 0x94, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x36, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e,
+ 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0x82, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
+ 0xf2, 0xb1, 0xff, 0xff, 0xd5, 0xfe, 0x1c, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36,
+ 0xb8, 0xfc, 0x23, 0x4d, 0x59, 0x3d, 0x63, 0xf5,
+ 0xff, 0xff, 0xeb, 0x4d, 0x50, 0x0, 0x0, 0x0,
+ 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2, 0x0,
+ 0x0, 0x4, 0xc8, 0xfe, 0xfe, 0xfe, 0xfe, 0xa0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x94, 0xf2,
+ 0x9, 0x43, 0x59, 0x55, 0x35, 0xfe, 0xe4, 0x70,
+ 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x14, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x3c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6, 0x64, 0xda, 0xfe, 0x31, 0x53, 0x59,
+ 0x47, 0xf, 0xf6, 0xa0, 0x28, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x80, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x98,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x8a, 0x0, 0x0, 0x0,
+ 0x9e, 0xfe, 0xfe, 0xfe, 0xfe, 0x88, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x6e, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x8c, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x1c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x4c, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfe, 0x96,
+ 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x90, 0x57, 0xff, 0xff, 0xff, 0x43, 0x3e, 0x64,
+ 0xca, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xc, 0x2e, 0x50, 0x5a, 0x66, 0xea, 0x4b,
+ 0xed, 0xff, 0xf5, 0x67, 0x50, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1c, 0x42, 0x60, 0x5a, 0x3a, 0x14, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x12, 0x36, 0x58, 0x60,
+ 0x48, 0x22, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xf3, 0xb1, 0x69,
+ 0x82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x2a, 0xfe, 0x8d, 0x95, 0x95, 0x51, 0x3e, 0xd6,
+ 0x9b, 0xbf, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xd8,
+ 0x35, 0xc9, 0x49, 0xe8, 0x34, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xda, 0xb3, 0xff, 0xff, 0xff, 0xff, 0x99,
+ 0xae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x56, 0x94, 0xbc, 0xa8, 0x76, 0x26, 0xf2,
+ 0xe3, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x6e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
+ 0xa0, 0xac, 0xa4, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xb8, 0xab, 0xf5, 0xf5, 0xf5, 0xf5, 0x91,
+ 0x98, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea,
+ 0xd9, 0xf5, 0xf5, 0xf5, 0xf5, 0x57, 0x4e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x74, 0xec, 0xfc, 0xfe, 0xfe, 0xfc, 0xe8,
+ 0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0xf4, 0xfe, 0xfe, 0xfe, 0xfc, 0xe2, 0x2a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x24, 0x52, 0x76, 0x76, 0x52, 0x26,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xa, 0x3e, 0x66, 0x80, 0x66, 0x3e, 0xa,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x54,
+ 0x98, 0xba, 0xb2, 0x80, 0x34, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x28, 0x56, 0x78, 0x74, 0x50, 0x22, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c, 0x30, 0x0,
+ 0x0, 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c, 0x32,
+ 0x0, 0x0, 0x0, 0x24, 0x52, 0x76, 0x78, 0x54,
+ 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c,
+ 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x3c,
+ 0x6e, 0x90, 0x86, 0x5e, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xa0, 0x4f, 0x67, 0x67, 0x51, 0xa8,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x32, 0x21, 0x67, 0x67, 0x67, 0x21, 0x32,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e, 0xf2, 0x2d,
+ 0x7f, 0x9b, 0x99, 0x67, 0xaa, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xb4, 0x55, 0x67, 0x67, 0x4d, 0x98, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x78, 0x41, 0x67, 0x67, 0x5f, 0xda, 0x0,
+ 0x0, 0x0, 0x74, 0x3f, 0x67, 0x67, 0x63, 0xe4,
+ 0x0, 0x0, 0x0, 0xa0, 0x4f, 0x67, 0x67, 0x51,
+ 0xac, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x78, 0x41, 0x67, 0x67, 0x5f,
+ 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x17,
+ 0x71, 0x73, 0x73, 0x57, 0xf0, 0x22, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xd4, 0xc3, 0xff, 0xff, 0xcb, 0xdc,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x54, 0x57, 0xff, 0xff, 0xff, 0x57, 0x54,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x28, 0xfc, 0x85, 0xfb,
+ 0xff, 0xff, 0xff, 0xc7, 0xd2, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe4, 0xd3, 0xff, 0xff, 0xbd, 0xce, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xae, 0x9f, 0xff, 0xff, 0xef, 0xf8, 0x0,
+ 0x0, 0x0, 0xaa, 0x9b, 0xff, 0xff, 0xf5, 0xfa,
+ 0x0, 0x0, 0x0, 0xd4, 0xc3, 0xff, 0xff, 0xcd,
+ 0xde, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xae, 0x9f, 0xff, 0xff, 0xef,
+ 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x6c,
+ 0x77, 0xfb, 0xff, 0xfb, 0x4d, 0xc8, 0x8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8e, 0x55, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xb1, 0xcc, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xae, 0x9f, 0xff, 0xff, 0xef, 0xf8, 0x0,
+ 0x0, 0x0, 0xaa, 0x9b, 0xff, 0xff, 0xf5, 0xfc,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40,
+ 0xf6, 0x6d, 0xfb, 0xff, 0xe3, 0x1d, 0x5e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xd2, 0xaf, 0xff, 0xff,
+ 0xfb, 0x7b, 0x45, 0x37, 0x86, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x78, 0x41, 0x67, 0x67, 0x5f, 0xda, 0x0,
+ 0x0, 0x0, 0x74, 0x3d, 0x63, 0x63, 0x5d, 0xe4,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x3a, 0xf2, 0x65, 0xd9, 0xd9, 0x95, 0x5e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xec, 0xcd, 0xff, 0xff,
+ 0xc9, 0xfe, 0x6a, 0x30, 0x16, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c, 0x30, 0x0,
+ 0x0, 0x0, 0x18, 0x46, 0x6a, 0x78, 0x58, 0x2e,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x34, 0xbe, 0xea, 0xee, 0xca, 0x58, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x3c, 0xa6, 0xe8, 0xfa,
+ 0xfc, 0xf8, 0xe4, 0x98, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xf8,
+ 0xea, 0xf8, 0xf8, 0xe2, 0x8e, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x8e, 0xde,
+ 0xf8, 0xfc, 0xf8, 0xe4, 0x98, 0x2a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xbc, 0xf0, 0xfa,
+ 0xf4, 0xe2, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x74, 0xd4,
+ 0xf6, 0xfa, 0xf8, 0xe6, 0x9e, 0x2e, 0x0, 0x0,
+ 0x0, 0x0, 0x56, 0xb6, 0xfe, 0xd3, 0xff, 0xff,
+ 0xbd, 0xfc, 0xd4, 0x9a, 0x18, 0x0, 0x0, 0x0,
+ 0x0, 0x46, 0xba, 0xf0, 0xfa, 0xf6, 0xd2, 0xa4,
+ 0xc0, 0xe2, 0xd4, 0x9e, 0x1e, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xf2, 0xe0, 0xf8,
+ 0xf8, 0xea, 0xa2, 0x28, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x44, 0xae, 0xdc, 0xe6, 0xc8, 0x80, 0x0,
+ 0x0, 0x0, 0x38, 0xa8, 0xd8, 0xea, 0xce, 0x90,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x0, 0x5c, 0xb8, 0xe0, 0xea, 0xd4, 0x9e,
+ 0x20, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0x5e, 0xb8, 0xe0, 0xdc,
+ 0xb2, 0x9c, 0xda, 0xf6, 0xf8, 0xee, 0xae, 0x34,
+ 0x60, 0xce, 0xf4, 0xfa, 0xf2, 0xc0, 0x48, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x68, 0xbe, 0xe2, 0xda,
+ 0xae, 0x92, 0xd6, 0xf6, 0xfa, 0xf0, 0xb6, 0x3c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
+ 0x78, 0xd4, 0xf6, 0xfa, 0xfa, 0xec, 0xb0, 0x44,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4, 0x8e, 0xfe, 0x6f, 0xbf, 0xe3,
+ 0xef, 0xe3, 0xb9, 0x57, 0xfc, 0x5c, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0x49,
+ 0xc3, 0xeb, 0xe5, 0xb7, 0x41, 0xea, 0x26, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x52, 0xfa, 0x4d, 0xb3,
+ 0xdf, 0xed, 0xe3, 0xb9, 0x57, 0xfc, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x7a, 0xfe, 0x7d, 0xd1, 0xeb,
+ 0xdd, 0x8f, 0x59, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x2a, 0xe2, 0x2f, 0xa3,
+ 0xdb, 0xed, 0xe3, 0xbd, 0x5d, 0xfe, 0x60, 0x0,
+ 0x0, 0x0, 0xae, 0x8d, 0xc3, 0xf3, 0xff, 0xff,
+ 0xeb, 0xc3, 0xc3, 0x3b, 0x38, 0x0, 0x0, 0x0,
+ 0x76, 0xfe, 0x7b, 0xcf, 0xeb, 0xdf, 0x97, 0xd,
+ 0xa5, 0xc3, 0xc3, 0x45, 0x44, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0x2d, 0xb1, 0xe5,
+ 0xe9, 0xc3, 0x55, 0xf2, 0x2e, 0x0, 0x0, 0x0,
+ 0x0, 0x90, 0x79, 0xc3, 0xc3, 0xb7, 0xe8, 0x0,
+ 0x0, 0x0, 0x78, 0x69, 0xc3, 0xc3, 0xc3, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x24, 0xfa, 0x93, 0xc3, 0xc3, 0xc3, 0x53,
+ 0x20, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xb8, 0x95, 0xc3, 0xc3,
+ 0x79, 0x27, 0xa9, 0xe1, 0xeb, 0xcb, 0x61, 0xfc,
+ 0x11, 0x95, 0xdb, 0xed, 0xd5, 0x7d, 0xfe, 0x5c,
+ 0x0, 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xc3, 0xc3,
+ 0x71, 0x1d, 0xa1, 0xdf, 0xeb, 0xcf, 0x71, 0xfe,
+ 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0xec,
+ 0x35, 0xa5, 0xd9, 0xeb, 0xe5, 0xc5, 0x79, 0x5,
+ 0x9e, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x62, 0x11, 0xc1, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x93, 0xfa, 0x22, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xe5, 0xf5,
+ 0xff, 0xff, 0xff, 0xff, 0xf7, 0x53, 0xc4, 0x2,
+ 0x0, 0x0, 0x0, 0x2c, 0xfa, 0x89, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xfe, 0x2e,
+ 0x0, 0x0, 0x38, 0xfe, 0xb1, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xd9, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0xe, 0xdc, 0x57, 0xf3, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x97, 0xfc, 0x2e,
+ 0x0, 0x0, 0xca, 0xbb, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x4d, 0x4a, 0x0, 0x0, 0x36,
+ 0xfe, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1,
+ 0xf1, 0xff, 0xff, 0x5b, 0x66, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xd1, 0xeb, 0xff, 0xff,
+ 0xff, 0xff, 0xfb, 0x5d, 0xbc, 0x0, 0x0, 0x0,
+ 0x0, 0xbc, 0x9f, 0xff, 0xff, 0xef, 0xfa, 0x0,
+ 0x0, 0x0, 0xa4, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0xb4, 0x4f, 0xff, 0xff, 0xff, 0xbf, 0xd4,
+ 0x20, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xe0, 0xc3, 0xff, 0xff,
+ 0xbf, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x61,
+ 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xee,
+ 0x8, 0x0, 0x0, 0x0, 0xea, 0xd1, 0xff, 0xff,
+ 0xb1, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83,
+ 0xe0, 0x2, 0x0, 0x0, 0x0, 0x1c, 0xec, 0x6b,
+ 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd,
+ 0x1d, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xd2, 0x99, 0xff, 0xff, 0xff, 0xcb,
+ 0xb7, 0xed, 0xff, 0xff, 0xff, 0x4b, 0x76, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xff,
+ 0xdb, 0xe1, 0xff, 0xff, 0xff, 0xe1, 0xb, 0x34,
+ 0x0, 0x0, 0x0, 0xac, 0x59, 0xff, 0xff, 0xff,
+ 0xef, 0xd1, 0xf3, 0xff, 0xff, 0xff, 0x5d, 0x9c,
+ 0x0, 0x0, 0xb0, 0x6b, 0xff, 0xff, 0xff, 0xf9,
+ 0xd5, 0xef, 0xff, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x70, 0x29, 0xef, 0xff, 0xff,
+ 0xf9, 0xd5, 0xed, 0xff, 0xff, 0xff, 0x5d, 0xa2,
+ 0x0, 0x0, 0xb0, 0x93, 0xcb, 0xf3, 0xff, 0xff,
+ 0xef, 0xcb, 0xcb, 0x3d, 0x38, 0x0, 0x0, 0xae,
+ 0x67, 0xff, 0xff, 0xff, 0xf9, 0xd5, 0xed, 0xff,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xff, 0xf9, 0xd7, 0xeb,
+ 0xff, 0xff, 0xff, 0xd9, 0xfe, 0x10, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf4, 0x5, 0xd5, 0xff, 0xff, 0xed, 0x27, 0x8e,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xff, 0xfb, 0xd7, 0xeb, 0xff, 0xff, 0xff, 0xf9,
+ 0xff, 0xe5, 0xdb, 0xff, 0xff, 0xff, 0xf9, 0x1f,
+ 0x3c, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xff, 0xfb, 0xd9, 0xe7, 0xff, 0xff, 0xff, 0xef,
+ 0xb, 0x22, 0x0, 0x0, 0x0, 0x92, 0x41, 0xf9,
+ 0xff, 0xff, 0xf9, 0xd1, 0xe3, 0xff, 0xff, 0xff,
+ 0xb9, 0xfe, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xd4, 0xdf, 0xff, 0xff, 0xbd, 0xfe,
+ 0xf6, 0x31, 0xf9, 0xff, 0xff, 0x9b, 0xb8, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xf7, 0x4f,
+ 0xfe, 0xfe, 0x8f, 0xff, 0xff, 0xff, 0x63, 0x88,
+ 0x0, 0x0, 0x8, 0xfa, 0xcb, 0xff, 0xff, 0xdb,
+ 0x19, 0xfc, 0x23, 0xdf, 0xff, 0xff, 0xbb, 0xe2,
+ 0x0, 0x4, 0xf8, 0xcb, 0xff, 0xff, 0xf1, 0x39,
+ 0xfe, 0x11, 0xbb, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0xda, 0xa1, 0xff, 0xff, 0xf9,
+ 0x49, 0xfe, 0x15, 0xd5, 0xff, 0xff, 0xc3, 0xf0,
+ 0x0, 0x0, 0x5a, 0xbc, 0xfe, 0xd3, 0xff, 0xff,
+ 0xbd, 0xfe, 0xda, 0xa2, 0x18, 0x0, 0x2, 0xf8,
+ 0xcb, 0xff, 0xff, 0xf1, 0x39, 0xfe, 0xb, 0xad,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xe3, 0x35, 0xfe, 0x9,
+ 0xbb, 0xff, 0xff, 0xff, 0x2d, 0x36, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xfe, 0x81, 0xff, 0xff, 0xff, 0x67, 0xda, 0xc,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xed, 0x43, 0xfe, 0xd, 0xcf, 0xff, 0xff, 0xff,
+ 0x8f, 0xfe, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0x67,
+ 0x78, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xeb, 0x43, 0xfe, 0xfe, 0xa7, 0xff, 0xff, 0xff,
+ 0x49, 0x50, 0x0, 0x0, 0x2, 0xf2, 0xbb, 0xff,
+ 0xff, 0xf1, 0x39, 0xfc, 0xfe, 0xa1, 0xff, 0xff,
+ 0xff, 0x49, 0x76, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xbc, 0x2b, 0x2f, 0x2f, 0x1d, 0xda,
+ 0xc0, 0xfe, 0xdf, 0xff, 0xff, 0xb1, 0xd4, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xfa,
+ 0x24, 0x5a, 0x11, 0xf7, 0xff, 0xff, 0xa1, 0xca,
+ 0x0, 0x0, 0x2a, 0x1b, 0xfd, 0xff, 0xff, 0x87,
+ 0xd4, 0x12, 0xd0, 0x89, 0xff, 0xff, 0xdd, 0xdc,
+ 0x0, 0x1e, 0xf, 0xfb, 0xff, 0xff, 0xa7, 0xee,
+ 0x1a, 0xaa, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x4, 0xfe, 0xe3, 0xff, 0xff, 0xb5,
+ 0xfe, 0xdc, 0xf8, 0x87, 0xff, 0xff, 0xf1, 0xfe,
+ 0x2, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x1c, 0xd,
+ 0xfb, 0xff, 0xff, 0xa7, 0xee, 0x18, 0x9c, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xf2, 0x14, 0xa4,
+ 0x5d, 0xff, 0xff, 0xff, 0x57, 0x60, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0x25, 0xf1, 0xff, 0xff, 0xaf, 0xfe, 0x36, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xf8, 0x1e, 0xce, 0x87, 0xff, 0xff, 0xff,
+ 0x25, 0x68, 0x4e, 0x1b, 0xff, 0xff, 0xff, 0x87,
+ 0xa4, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xf6, 0x1c, 0x8e, 0x4f, 0xff, 0xff, 0xff,
+ 0x67, 0x78, 0x0, 0x0, 0x1a, 0xb, 0xf7, 0xff,
+ 0xff, 0xa3, 0xee, 0x16, 0x6e, 0x1d, 0xf7, 0xff,
+ 0xff, 0x9b, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x14, 0x90, 0xfa, 0x2d, 0x6f, 0x8d,
+ 0x97, 0x99, 0xef, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x4, 0xfa, 0xd1, 0xff, 0xff, 0xc1, 0xe4,
+ 0x0, 0x0, 0x52, 0x4f, 0xff, 0xff, 0xff, 0x59,
+ 0x80, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xb4,
+ 0x0, 0x40, 0x41, 0xff, 0xff, 0xff, 0x6f, 0xa2,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x12, 0x11, 0xff, 0xff, 0xff, 0xd3,
+ 0xad, 0xad, 0xad, 0xc9, 0xff, 0xff, 0xff, 0xb,
+ 0x6, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x41,
+ 0xff, 0xff, 0xff, 0x6f, 0xa2, 0x0, 0x64, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x56,
+ 0x41, 0xff, 0xff, 0xff, 0x65, 0x78, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xfb,
+ 0xf3, 0xff, 0xff, 0xe5, 0x19, 0x7a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x9c, 0x75, 0xff, 0xff, 0xff,
+ 0x29, 0x26, 0x8, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb4, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x48, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x88, 0x0, 0x0, 0x3e, 0x3f, 0xff, 0xff,
+ 0xff, 0x6d, 0xa0, 0x0, 0x8, 0xfa, 0xd5, 0xff,
+ 0xff, 0xc1, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8c, 0x19, 0xb5, 0xfd, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0xee, 0xc3, 0xff, 0xff, 0xcd, 0xec,
+ 0x0, 0x0, 0x6a, 0x5f, 0xff, 0xff, 0xff, 0x47,
+ 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x58, 0x51, 0xff, 0xff, 0xff, 0x59, 0x7a,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x1c, 0x2b, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x15,
+ 0xa, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x58, 0x51,
+ 0xff, 0xff, 0xff, 0x59, 0x7a, 0x0, 0x64, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd3, 0x5, 0x54, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x54, 0x53, 0xff, 0xff,
+ 0xff, 0x57, 0x7a, 0x0, 0x0, 0xf0, 0xc3, 0xff,
+ 0xff, 0xcd, 0xec, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xc, 0xfc, 0xbd, 0xff, 0xff, 0xfb, 0xb5,
+ 0x91, 0x8d, 0xed, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0xf0, 0xc5, 0xff, 0xff, 0xcb, 0xec,
+ 0x0, 0x0, 0x5e, 0x57, 0xff, 0xff, 0xff, 0x51,
+ 0x6e, 0x0, 0x18, 0x54, 0x80, 0x92, 0x6c, 0x38,
+ 0x0, 0x52, 0x4f, 0xff, 0xff, 0xff, 0x5d, 0x82,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x18, 0x21, 0xff, 0xff, 0xff, 0xdb,
+ 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xf,
+ 0x8, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x52, 0x4f,
+ 0xff, 0xff, 0xff, 0x5d, 0x82, 0x0, 0x64, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xf1,
+ 0xcd, 0xff, 0xff, 0xff, 0x87, 0xea, 0x12, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x48, 0x49, 0xff, 0xff,
+ 0xff, 0x65, 0x8a, 0x0, 0x0, 0xf6, 0xcf, 0xff,
+ 0xff, 0xc7, 0xe8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2a, 0x27, 0xff, 0xff, 0xff, 0x91, 0xfc,
+ 0xc8, 0xfe, 0xdd, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xf4,
+ 0x4, 0x1c, 0xfe, 0xdb, 0xff, 0xff, 0xb9, 0xde,
+ 0x0, 0x0, 0x3a, 0x33, 0xff, 0xff, 0xff, 0x71,
+ 0xb2, 0x0, 0x82, 0x3b, 0x77, 0x77, 0x69, 0xb6,
+ 0x0, 0x34, 0x33, 0xff, 0xff, 0xff, 0x7d, 0xc4,
+ 0x0, 0x7c, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0xa, 0xfe, 0xf5, 0xff, 0xff, 0xab,
+ 0xfe, 0xea, 0xe8, 0xe8, 0xea, 0xea, 0xd0, 0x8e,
+ 0x4, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x34, 0x33,
+ 0xff, 0xff, 0xff, 0x7d, 0xc4, 0x0, 0x74, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xfe, 0xd1, 0xff, 0xff, 0xf5, 0x31, 0x96, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x26, 0x1f, 0xff, 0xff,
+ 0xff, 0x89, 0xd0, 0x0, 0x36, 0x5, 0xeb, 0xff,
+ 0xff, 0xab, 0xd2, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x32, 0x47, 0xff, 0xff, 0xff, 0x65, 0xe8,
+ 0xd4, 0x13, 0xe9, 0xff, 0xff, 0xb3, 0xe2, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xe1, 0xf,
+ 0xe2, 0xee, 0x43, 0xff, 0xff, 0xff, 0x8f, 0xb4,
+ 0x0, 0x0, 0x14, 0xfe, 0xe5, 0xff, 0xff, 0xbd,
+ 0xfe, 0xd8, 0xfe, 0xad, 0xff, 0xff, 0xd1, 0xce,
+ 0x0, 0x14, 0xfe, 0xef, 0xff, 0xff, 0xcd, 0x5,
+ 0xde, 0xfa, 0x7b, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0xf2, 0xc1, 0xff, 0xff, 0xf5,
+ 0x39, 0xf0, 0xbe, 0xd4, 0xfc, 0x3b, 0xf4, 0x10,
+ 0x0, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x14, 0xfe,
+ 0xed, 0xff, 0xff, 0xcd, 0x5, 0xdc, 0xf8, 0x71,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xfa, 0x47, 0xfb, 0xff, 0xff, 0xc3, 0xfe, 0x3e,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x8, 0xfc, 0xd5, 0xff,
+ 0xff, 0xd7, 0x5, 0xd6, 0xf2, 0x69, 0xff, 0xff,
+ 0xff, 0x6d, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x28, 0x21, 0xff, 0xff, 0xff, 0xd9, 0x73,
+ 0x81, 0xd9, 0xff, 0xff, 0xff, 0xbf, 0xec, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xd9,
+ 0x95, 0xa1, 0xed, 0xff, 0xff, 0xfb, 0x35, 0x64,
+ 0x0, 0x0, 0x0, 0xd4, 0x8b, 0xff, 0xff, 0xff,
+ 0xbf, 0x8d, 0xb5, 0xff, 0xff, 0xff, 0x8d, 0xc2,
+ 0x0, 0x0, 0xe6, 0xa7, 0xff, 0xff, 0xff, 0xcd,
+ 0x93, 0xaf, 0xfb, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x9e, 0x55, 0xff, 0xff, 0xff,
+ 0xf1, 0xa1, 0x87, 0x97, 0xcd, 0xfd, 0x2f, 0x5c,
+ 0x0, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe4,
+ 0xa5, 0xff, 0xff, 0xff, 0xcd, 0x93, 0xab, 0xf9,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf2, 0xf8, 0xa3, 0xff, 0xff, 0xff, 0x71, 0xdc,
+ 0xa, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x0, 0xba, 0x6f, 0xff,
+ 0xff, 0xff, 0xcd, 0x89, 0x9d, 0xf3, 0xff, 0xff,
+ 0xe1, 0x9, 0x3a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xa, 0xfc, 0xbb, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfb, 0xe5, 0xff, 0xff, 0xd7, 0xfc, 0x8,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xe3, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf6, 0x14,
+ 0x0, 0x0, 0x0, 0x54, 0xb, 0xcb, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf, 0x58,
+ 0x0, 0x0, 0x76, 0x27, 0xeb, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xe9, 0xfd, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x28, 0xfa, 0x91, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x64,
+ 0x0, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72,
+ 0x23, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+ 0xff, 0xff, 0xff, 0x5b, 0x6e, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x70, 0x19, 0xe9, 0xff, 0xff, 0xed, 0x21,
+ 0x80, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x0, 0x3c, 0xfe, 0xad,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3,
+ 0x4b, 0xc2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x8c, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8a, 0x1d, 0xb9, 0xff, 0xff, 0xff,
+ 0xe9, 0x67, 0x8b, 0xff, 0xff, 0xfd, 0x1f, 0x8,
+ 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff, 0x77, 0x97,
+ 0xf9, 0xff, 0xff, 0xf5, 0x99, 0x5, 0x66, 0x0,
+ 0x0, 0x0, 0x0, 0x2, 0x9a, 0x11, 0x9d, 0xf1,
+ 0xff, 0xff, 0xff, 0xf3, 0x9d, 0x13, 0xa2, 0x4,
+ 0x0, 0x0, 0xc, 0xd0, 0x3d, 0xcd, 0xff, 0xff,
+ 0xff, 0xd9, 0x3f, 0xe3, 0xff, 0xff, 0x57, 0x4c,
+ 0x0, 0x0, 0x0, 0x0, 0x58, 0xfe, 0x6d, 0xdb,
+ 0xff, 0xff, 0xff, 0xff, 0xeb, 0xa1, 0x23, 0x58,
+ 0x0, 0x0, 0x0, 0x0, 0xe0, 0xd3, 0xff, 0xff,
+ 0xbd, 0xc8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0xce, 0x39, 0xcb, 0xff, 0xff, 0xff, 0xdf, 0x81,
+ 0xff, 0xff, 0xff, 0x59, 0x64, 0x0, 0x0, 0x0,
+ 0xe0, 0xd3, 0xff, 0xff, 0xbd, 0xc8, 0x0, 0x30,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x60, 0x0, 0x0,
+ 0x0, 0xa4, 0x9f, 0xff, 0xff, 0xef, 0xf6, 0x0,
+ 0x0, 0x0, 0xb2, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff, 0xcd,
+ 0xd8, 0x6, 0xd4, 0x6d, 0xff, 0xff, 0xff, 0xb1,
+ 0x80, 0x0, 0x0, 0xa4, 0x9f, 0xff, 0xff, 0xef,
+ 0xf6, 0x0, 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff,
+ 0xcb, 0xd6, 0x0, 0x70, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x1c, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0x94, 0x0, 0x0, 0x0, 0xdc, 0xd1, 0xff, 0xff,
+ 0xc1, 0xcc, 0x0, 0x2a, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x68, 0x0, 0x0, 0x0, 0x0, 0x76, 0xfe,
+ 0x83, 0xe5, 0xff, 0xff, 0xff, 0xfb, 0xc1, 0x3f,
+ 0xe0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xfe, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xc1, 0xcc, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8, 0x88, 0xfa, 0x25, 0x53, 0x45,
+ 0x9, 0xe0, 0xfe, 0xfe, 0xfe, 0xfe, 0xf2, 0x8,
+ 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe, 0xfe, 0xf4,
+ 0x1d, 0x4f, 0x49, 0x11, 0xea, 0x60, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0x66, 0xe4, 0x5,
+ 0x3f, 0x55, 0x45, 0xb, 0xe8, 0x68, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x18, 0xa4, 0xfc, 0x2d, 0x53,
+ 0x3d, 0xfe, 0xec, 0xfe, 0xfe, 0xfe, 0xfe, 0x2a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a, 0xc2, 0xfe,
+ 0x2d, 0x51, 0x51, 0x31, 0xfe, 0xe2, 0x70, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0xa6, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1e, 0xa6, 0xfc, 0x2d, 0x53, 0x41, 0xfe, 0x73,
+ 0xff, 0xff, 0xff, 0x43, 0x42, 0x0, 0x0, 0x0,
+ 0xa6, 0xfe, 0xfe, 0xfe, 0xfe, 0x88, 0x0, 0x1a,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x36, 0x0, 0x0,
+ 0x0, 0x68, 0xfe, 0xfe, 0xfe, 0xfe, 0xd2, 0x0,
+ 0x0, 0x0, 0xc2, 0x8d, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x9c, 0x0, 0x3a, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x7c, 0x0, 0x0, 0x68, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xd2, 0x0, 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x98, 0x0, 0x40, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xe, 0x0, 0xec, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x5a, 0x0, 0x0, 0x0, 0xa2, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x8c, 0x0, 0x16, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c,
+ 0xd4, 0xfe, 0x35, 0x53, 0x49, 0x1b, 0xf8, 0x98,
+ 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xfe, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xc1, 0xda, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xc, 0x30, 0x48, 0x40,
+ 0x1e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8,
+ 0x2c, 0x46, 0x42, 0x24, 0x4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a,
+ 0x3e, 0x54, 0x42, 0x1e, 0x2, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x34, 0x48,
+ 0x3c, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
+ 0x32, 0x50, 0x52, 0x36, 0x12, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5a, 0x21, 0x15, 0xf6, 0xde, 0xe8, 0xb, 0xcf,
+ 0xff, 0xff, 0xf3, 0xb, 0x1e, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0xbe, 0xfe, 0xb1, 0xff, 0xff, 0xef, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x14, 0x38, 0x50, 0x48, 0x26, 0x8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf8, 0xa7, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
+ 0xa9, 0xa9, 0xa9, 0x7f, 0xac, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xba, 0x8d, 0xf3, 0xb9, 0x9b, 0x9d, 0xdb, 0xff,
+ 0xff, 0xff, 0xa1, 0xea, 0x2, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0x5, 0xb1, 0xb9, 0xfd, 0xff, 0xff, 0xbf, 0xee,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x70, 0xb0, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
+ 0xd4, 0xd4, 0xc8, 0x9a, 0x48, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc2, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xcd, 0x13, 0x6c, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+ 0x23, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x4d, 0x9a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa4, 0x55, 0xb1, 0xef, 0xff, 0xff, 0xfd, 0xdb,
+ 0x89, 0xb, 0x9e, 0x4, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+ 0x37, 0xff, 0xff, 0xff, 0xd5, 0x57, 0xf0, 0x22,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x28, 0x90, 0xea, 0xfe, 0x21, 0x2d, 0x11, 0xfc,
+ 0xc8, 0x52, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16,
+ 0xfa, 0x1b, 0x35, 0x1b, 0xfc, 0xb4, 0x2a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xa, 0x1a, 0x1c, 0x14, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x8, 0x1a, 0x22, 0x1a, 0x8, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26,
+ 0x86, 0x86, 0x72, 0x2, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x76,
+ 0x84, 0x80, 0x1e, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x7a, 0xfe,
+ 0x51, 0xa9, 0xd, 0x3a, 0x0, 0x0, 0x0, 0xa,
+ 0x16, 0x16, 0xc, 0x0, 0x0, 0x0, 0x4e, 0x1f,
+ 0xa7, 0x45, 0xfa, 0x68, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x62, 0xb, 0xb1,
+ 0xff, 0xff, 0x69, 0x4e, 0x0, 0x0, 0x0, 0xec,
+ 0x21, 0x23, 0x5, 0x10, 0x0, 0x0, 0x64, 0x7d,
+ 0xff, 0xff, 0x9f, 0xfe, 0x4c, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xaa,
+ 0xe2, 0xf6, 0xe8, 0xbc, 0x3a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x6, 0xe6, 0x99, 0xff,
+ 0xff, 0xd9, 0x3f, 0x4c, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x20, 0x0, 0x0, 0x60, 0x49,
+ 0xe1, 0xff, 0xff, 0x83, 0xd4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xb,
+ 0xd7, 0xd7, 0xd7, 0x6d, 0x76, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2c, 0x17, 0xf1, 0xff,
+ 0xff, 0x37, 0xba, 0x1a, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x20, 0xca,
+ 0x4f, 0xff, 0xff, 0xe7, 0x9, 0x16, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0x9e, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x53, 0xff, 0xff,
+ 0xdd, 0xfe, 0x16, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x24,
+ 0xfe, 0xed, 0xff, 0xff, 0x39, 0x40, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x5e, 0xb8, 0xe0, 0xdc, 0xb6, 0xb6, 0xea,
+ 0xf8, 0xf8, 0xe0, 0x88, 0x16, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xbc, 0xf0, 0xfa,
+ 0xf6, 0xd0, 0xa6, 0xc4, 0xe4, 0xd2, 0x9a, 0x16,
+ 0x0, 0x0, 0x0, 0x5e, 0xb8, 0xe0, 0xdc, 0xb8,
+ 0xbc, 0xec, 0xf0, 0xda, 0x46, 0x0, 0x0, 0x0,
+ 0x4, 0x54, 0xbe, 0xf0, 0xfa, 0xfc, 0xf6, 0xd6,
+ 0x80, 0x1a, 0x0, 0x0, 0x0, 0x64, 0xbc, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xf4, 0xb2, 0x4e, 0x0,
+ 0x0, 0x6a, 0xbe, 0xe2, 0xde, 0xb6, 0x56, 0x0,
+ 0x10, 0x98, 0xd2, 0xea, 0xd6, 0xa0, 0x24, 0x0,
+ 0x0, 0x5e, 0xba, 0xe0, 0xe6, 0xc4, 0x78, 0x0,
+ 0x0, 0x4e, 0xb2, 0xdc, 0xe8, 0xca, 0x86, 0x0,
+ 0x4c, 0xb2, 0xdc, 0xde, 0xb4, 0x52, 0x0, 0x38,
+ 0xa8, 0xd8, 0xd0, 0x92, 0x6, 0x2, 0x8e, 0xce,
+ 0xea, 0xd4, 0x9a, 0x18, 0x0, 0x3a, 0xaa, 0xda,
+ 0xea, 0xd8, 0xa4, 0x2e, 0xa, 0x92, 0xd0, 0xea,
+ 0xe2, 0xbe, 0x68, 0x0, 0x72, 0xc2, 0xe4, 0xe4,
+ 0xc2, 0x74, 0x0, 0x0, 0x4e, 0xb2, 0xde, 0xea,
+ 0xd0, 0x94, 0xa, 0x0, 0x86, 0xca, 0xe8, 0xea,
+ 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xd4, 0x9c,
+ 0x1c, 0x0, 0x0, 0x0, 0x88, 0x73, 0xff, 0xff,
+ 0xcb, 0xf2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xfa, 0xdb, 0xff, 0xff, 0x5d, 0x68, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xb8, 0x95, 0xc3, 0xc3, 0x75, 0x49, 0xc3,
+ 0xeb, 0xe3, 0xb3, 0x39, 0xe2, 0x20, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x7a, 0xfe, 0x7d, 0xd1, 0xeb,
+ 0xdf, 0x93, 0xb, 0xad, 0xc3, 0xc3, 0x37, 0x32,
+ 0x0, 0x0, 0x0, 0xb8, 0x95, 0xc3, 0xc3, 0x79,
+ 0x43, 0xc9, 0xeb, 0x7b, 0x74, 0x0, 0x0, 0xc,
+ 0xb2, 0x11, 0x89, 0xcf, 0xe9, 0xed, 0xd9, 0xa9,
+ 0x3f, 0xf2, 0x40, 0x0, 0x0, 0xc4, 0x9d, 0xc5,
+ 0xff, 0xff, 0xff, 0xdb, 0xc3, 0x83, 0xa0, 0x0,
+ 0x0, 0xca, 0xa1, 0xc3, 0xc3, 0x8d, 0xae, 0x0,
+ 0x28, 0x2f, 0xc3, 0xc3, 0xc3, 0x4f, 0x52, 0x0,
+ 0x0, 0x90, 0x97, 0xc3, 0xc3, 0xaf, 0xfc, 0xe,
+ 0x0, 0xc6, 0x83, 0xc3, 0xc3, 0xbb, 0xb, 0x0,
+ 0x7c, 0x83, 0xc3, 0xc3, 0x89, 0xc6, 0x0, 0xa6,
+ 0x6b, 0xc3, 0xc3, 0x17, 0x3c, 0x22, 0xb, 0xc1,
+ 0xc3, 0xc3, 0x3f, 0x1c, 0x0, 0x40, 0x73, 0xc3,
+ 0xc3, 0xc3, 0x5b, 0xb0, 0x64, 0x21, 0xc1, 0xc3,
+ 0xc3, 0xa1, 0x84, 0x0, 0xaa, 0xa9, 0xc3, 0xc3,
+ 0xab, 0xfc, 0x10, 0x0, 0xd0, 0x85, 0xc3, 0xc3,
+ 0xc3, 0x27, 0xa, 0x0, 0xee, 0xbb, 0xc3, 0xc3,
+ 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x41,
+ 0x40, 0x0, 0x0, 0x0, 0x98, 0x7b, 0xff, 0xff,
+ 0xc7, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf6, 0xd7, 0xff, 0xff, 0x67, 0x7c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xe0, 0xc3, 0xff, 0xff, 0xcf, 0xf7, 0xff,
+ 0xff, 0xff, 0xff, 0xf3, 0x49, 0xba, 0x0, 0x0,
+ 0x0, 0x0, 0x38, 0xfe, 0xb1, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xbb, 0xfb, 0xff, 0xff, 0x49, 0x4c,
+ 0x0, 0x0, 0x0, 0xe0, 0xc3, 0xff, 0xff, 0xb9,
+ 0xeb, 0xff, 0xff, 0x75, 0x8c, 0x0, 0x0, 0x7c,
+ 0x23, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xfb, 0x73, 0xec, 0x10, 0x0, 0xdc, 0xcd, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0xbe, 0x0,
+ 0x0, 0xec, 0xd3, 0xff, 0xff, 0xbb, 0xd8, 0x0,
+ 0x3e, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x76, 0x0,
+ 0x0, 0x98, 0x87, 0xff, 0xff, 0xff, 0x2b, 0x4e,
+ 0xc, 0xfc, 0xd9, 0xff, 0xff, 0xc1, 0xd6, 0x0,
+ 0x86, 0x7b, 0xff, 0xff, 0xd7, 0xfa, 0x6, 0xf4,
+ 0xc1, 0xff, 0xff, 0x69, 0x96, 0x64, 0x4b, 0xff,
+ 0xff, 0xf7, 0xf, 0x1c, 0x0, 0x40, 0x1d, 0xeb,
+ 0xff, 0xff, 0xcf, 0xfe, 0xe8, 0x97, 0xff, 0xff,
+ 0xff, 0x5d, 0x84, 0x0, 0xb4, 0x9f, 0xff, 0xff,
+ 0xff, 0x2d, 0x54, 0x1a, 0xfe, 0xe3, 0xff, 0xff,
+ 0xd7, 0xe6, 0xa, 0x0, 0xfc, 0xf5, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57,
+ 0x4c, 0x0, 0x0, 0x0, 0xa2, 0x7b, 0xff, 0xff,
+ 0xc7, 0xea, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xd7, 0xff, 0xff, 0x67, 0x86, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xfd, 0xd9,
+ 0xe5, 0xff, 0xff, 0xff, 0xdb, 0x5, 0x2e, 0x0,
+ 0x0, 0x0, 0xb0, 0x6b, 0xff, 0xff, 0xff, 0xf7,
+ 0xcf, 0xe9, 0xff, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x57, 0x64, 0x0, 0x0, 0xe2,
+ 0xad, 0xff, 0xff, 0xf7, 0xa7, 0x9b, 0xe5, 0xff,
+ 0xff, 0xf7, 0x2f, 0x54, 0x0, 0xc6, 0xa1, 0xcb,
+ 0xff, 0xff, 0xff, 0xdf, 0xcb, 0x89, 0xa2, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x5a, 0x2d, 0xfd, 0xff, 0xff, 0x79, 0xa6,
+ 0x48, 0x25, 0xff, 0xff, 0xff, 0x75, 0xaa, 0x0,
+ 0x52, 0x31, 0xff, 0xff, 0xf9, 0xf, 0x50, 0xd,
+ 0xf5, 0xff, 0xff, 0xad, 0xe6, 0xaa, 0x81, 0xff,
+ 0xff, 0xcb, 0xf8, 0x4, 0x0, 0x8, 0xd8, 0x73,
+ 0xff, 0xff, 0xff, 0x55, 0x19, 0xf1, 0xff, 0xff,
+ 0xb9, 0xfe, 0x2e, 0x0, 0x78, 0x45, 0xff, 0xff,
+ 0xff, 0x7d, 0xb0, 0x68, 0x3f, 0xff, 0xff, 0xff,
+ 0x8b, 0xca, 0x0, 0x0, 0xf8, 0xef, 0xfb, 0xfb,
+ 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xf3, 0x2d,
+ 0x38, 0x0, 0x0, 0x0, 0xc2, 0x87, 0xff, 0xff,
+ 0xbd, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xec, 0xcd, 0xff, 0xff, 0x73, 0xaa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xa6, 0xd0, 0xd0,
+ 0x9e, 0x42, 0x2, 0x0, 0x2, 0x18, 0x1a, 0x18,
+ 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xf3, 0x49, 0xfe,
+ 0xfe, 0xa5, 0xff, 0xff, 0xff, 0x5d, 0x82, 0x0,
+ 0x0, 0x4, 0xf8, 0xcb, 0xff, 0xff, 0xef, 0x33,
+ 0xfc, 0x9, 0xaf, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff,
+ 0xbb, 0x77, 0x75, 0x1d, 0x30, 0x0, 0x0, 0xf8,
+ 0xe9, 0xff, 0xff, 0x8f, 0xfc, 0xea, 0x39, 0xff,
+ 0xff, 0xff, 0x7d, 0x5c, 0x0, 0x6a, 0xc4, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xf4, 0xb8, 0x52, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x10, 0xfc, 0xcd, 0xff, 0xff, 0xb5, 0xea,
+ 0x9c, 0x73, 0xff, 0xff, 0xf7, 0x19, 0x44, 0x0,
+ 0x12, 0xfe, 0xe3, 0xff, 0xff, 0x4d, 0xb8, 0x5f,
+ 0xff, 0xff, 0xff, 0xe7, 0xfe, 0xe2, 0xad, 0xff,
+ 0xff, 0x93, 0xc8, 0x0, 0x0, 0x0, 0x3e, 0xfe,
+ 0xc9, 0xff, 0xff, 0xc3, 0x8d, 0xff, 0xff, 0xf3,
+ 0x2d, 0x8a, 0x0, 0x0, 0x1e, 0xfe, 0xdb, 0xff,
+ 0xff, 0xbf, 0xf4, 0xc6, 0x8f, 0xff, 0xff, 0xfd,
+ 0x2d, 0x60, 0x0, 0x0, 0xd2, 0xfc, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x97, 0xff, 0xff, 0xff, 0x6d, 0xe4,
+ 0x10, 0x0, 0x26, 0x98, 0xfe, 0xbb, 0xff, 0xff,
+ 0x95, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xce, 0xa7, 0xff, 0xff, 0xa9, 0xfc, 0x8c, 0x1e,
+ 0x0, 0x0, 0x0, 0x86, 0x9, 0x7d, 0xb7, 0xb1,
+ 0x77, 0xb, 0xbc, 0x1c, 0x26, 0xd, 0x39, 0xb,
+ 0xf2, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xfa, 0x20,
+ 0x74, 0x23, 0xfb, 0xff, 0xff, 0x9f, 0xc6, 0x0,
+ 0x0, 0x1e, 0xf, 0xfb, 0xff, 0xff, 0xa5, 0xec,
+ 0x14, 0xa6, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xd9,
+ 0xfe, 0xba, 0x74, 0x46, 0x8, 0x0, 0x0, 0xf8,
+ 0xeb, 0xff, 0xff, 0xb3, 0x5, 0xea, 0xfe, 0x41,
+ 0x43, 0x43, 0x25, 0x50, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0xbc, 0x83, 0xff, 0xff, 0xe9, 0xfe,
+ 0xe6, 0xaf, 0xff, 0xff, 0xbd, 0xf6, 0x6, 0x0,
+ 0x0, 0xe6, 0xb1, 0xff, 0xff, 0x83, 0xf4, 0xa5,
+ 0xff, 0xff, 0xff, 0xff, 0x41, 0xfc, 0xd7, 0xff,
+ 0xff, 0x55, 0x76, 0x0, 0x0, 0x0, 0x0, 0xa2,
+ 0x3d, 0xf9, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x89,
+ 0xe8, 0x10, 0x0, 0x0, 0x0, 0xd0, 0x91, 0xff,
+ 0xff, 0xf5, 0xd, 0xfc, 0xcf, 0xff, 0xff, 0xcb,
+ 0xfc, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
+ 0xda, 0x5d, 0xfd, 0xff, 0xff, 0xa7, 0xfe, 0x3a,
+ 0x0, 0x0, 0x70, 0x51, 0xbb, 0xff, 0xff, 0xef,
+ 0x2d, 0x68, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0x7e, 0x3d, 0xf5, 0xff, 0xff, 0xb3, 0x45, 0x5a,
+ 0x0, 0x0, 0x30, 0xfe, 0xbb, 0xff, 0xff, 0xff,
+ 0xff, 0xdd, 0x43, 0xee, 0xca, 0x4f, 0xff, 0xfb,
+ 0x5b, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+ 0xc, 0xfc, 0xd7, 0xff, 0xff, 0xbf, 0xe4, 0x0,
+ 0x0, 0x40, 0x41, 0xff, 0xff, 0xff, 0x6f, 0xa2,
+ 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xf2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2,
+ 0xad, 0xff, 0xff, 0xff, 0xe7, 0xb1, 0x7b, 0x2d,
+ 0xfc, 0xac, 0x38, 0xc, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x56, 0x27, 0xfb, 0xff, 0xff, 0x41,
+ 0xfe, 0xe3, 0xff, 0xff, 0x6f, 0xa4, 0x0, 0x0,
+ 0x0, 0xa2, 0x77, 0xff, 0xff, 0xb1, 0xfe, 0xdf,
+ 0xff, 0xd1, 0xff, 0xff, 0x8d, 0xf, 0xf9, 0xff,
+ 0xf5, 0xb, 0x28, 0x0, 0x0, 0x0, 0x0, 0x1a,
+ 0xf4, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xd9, 0x9,
+ 0x52, 0x0, 0x0, 0x0, 0x0, 0x64, 0x31, 0xff,
+ 0xff, 0xff, 0x5f, 0x21, 0xfb, 0xff, 0xff, 0x7f,
+ 0xba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa2,
+ 0x2d, 0xed, 0xff, 0xff, 0xd5, 0xf, 0x72, 0x0,
+ 0x0, 0x0, 0x9e, 0x8d, 0xff, 0xff, 0xeb, 0x43,
+ 0xea, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0x1a, 0xf2, 0x4d, 0xed, 0xff, 0xff, 0x7b, 0x84,
+ 0x0, 0x0, 0x92, 0x5f, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xf5, 0x85, 0x4d, 0xcb, 0xff, 0xff,
+ 0x39, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+ 0x0, 0xf0, 0xc5, 0xff, 0xff, 0xcd, 0xec, 0x0,
+ 0x0, 0x58, 0x51, 0xff, 0xff, 0xff, 0x59, 0x7a,
+ 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78,
+ 0x19, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
+ 0xbf, 0x33, 0xcc, 0x8, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0xc, 0xfa, 0xc9, 0xff, 0xff, 0x89,
+ 0x35, 0xff, 0xff, 0xf5, 0x13, 0x3e, 0x0, 0x0,
+ 0x0, 0x4e, 0x2d, 0xff, 0xff, 0xd9, 0x35, 0xff,
+ 0xff, 0x7d, 0xd5, 0xff, 0xcb, 0x4f, 0xff, 0xff,
+ 0xc7, 0xf6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x94, 0x17, 0xf7, 0xff, 0xff, 0xff, 0x6b, 0xe4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xfc, 0xcf,
+ 0xff, 0xff, 0xa5, 0x75, 0xff, 0xff, 0xf9, 0x21,
+ 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x9,
+ 0xcd, 0xff, 0xff, 0xf3, 0x37, 0xb0, 0x4, 0x0,
+ 0x0, 0x0, 0x8c, 0x89, 0xff, 0xff, 0xff, 0xa7,
+ 0xfe, 0x34, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0x46, 0x5, 0xb5, 0xff, 0xff, 0xff, 0x77, 0x74,
+ 0x0, 0x0, 0xc4, 0xaf, 0xff, 0xf9, 0x5d, 0x41,
+ 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3,
+ 0xfe, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+ 0x0, 0xf4, 0xcb, 0xff, 0xff, 0xcb, 0xec, 0x0,
+ 0x0, 0x52, 0x4f, 0xff, 0xff, 0xff, 0x5d, 0x82,
+ 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0x92, 0xfe, 0x4d, 0xa3, 0xd9, 0xff, 0xff, 0xff,
+ 0xff, 0xe9, 0x1f, 0x4c, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+ 0x0, 0xf2, 0xd3, 0xff, 0xff, 0xbb, 0xe6, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0xb6, 0x7d, 0xff, 0xff, 0xc3,
+ 0x7f, 0xff, 0xff, 0xb9, 0xf2, 0x4, 0x0, 0x0,
+ 0x0, 0x10, 0xfe, 0xe1, 0xff, 0xfb, 0x8b, 0xff,
+ 0xff, 0x29, 0x95, 0xff, 0xfb, 0x8d, 0xff, 0xff,
+ 0x8f, 0xc2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+ 0xe6, 0x83, 0xff, 0xff, 0xff, 0xff, 0xc5, 0xfe,
+ 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe, 0x81,
+ 0xff, 0xff, 0xe1, 0xb9, 0xff, 0xff, 0xbf, 0xf8,
+ 0xa, 0x0, 0x0, 0x0, 0x0, 0x30, 0xfa, 0x9b,
+ 0xff, 0xff, 0xff, 0x6d, 0xe4, 0x16, 0x0, 0x0,
+ 0x0, 0x0, 0x52, 0xfe, 0x43, 0xeb, 0xff, 0xff,
+ 0x67, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x7b, 0xff, 0xff, 0xdf, 0x37, 0xfe, 0x42,
+ 0x0, 0x0, 0xb6, 0xab, 0xef, 0xc1, 0xf8, 0x9e,
+ 0xfe, 0x7d, 0xf7, 0xff, 0xff, 0xff, 0xef, 0x43,
+ 0xae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xf2, 0x0,
+ 0x2a, 0xfe, 0xe3, 0xff, 0xff, 0xb7, 0xde, 0x0,
+ 0x0, 0x34, 0x33, 0xff, 0xff, 0xff, 0x7d, 0xc4,
+ 0x0, 0x82, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x9,
+ 0x15, 0x15, 0x13, 0xfc, 0xfe, 0x27, 0x9f, 0xff,
+ 0xff, 0xff, 0x7b, 0x8c, 0x0, 0x0, 0x4, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xac, 0x0, 0x0, 0x0,
+ 0x0, 0xee, 0xcf, 0xff, 0xff, 0xc3, 0xf2, 0x0,
+ 0x56, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0x50, 0x21, 0xfb, 0xff, 0xf3,
+ 0xb7, 0xff, 0xff, 0x6b, 0xa0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xe2, 0xad, 0xff, 0xff, 0xe9, 0xff,
+ 0xd3, 0xfe, 0x47, 0xff, 0xff, 0xe9, 0xff, 0xff,
+ 0x4f, 0x6e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88,
+ 0x29, 0xf3, 0xff, 0xff, 0xfb, 0xff, 0xff, 0x71,
+ 0xd8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x54, 0x23,
+ 0xfb, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x71, 0xa8,
+ 0x0, 0x0, 0x0, 0x0, 0x10, 0xdc, 0x61, 0xff,
+ 0xff, 0xff, 0xa7, 0xfc, 0x3a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x1c, 0xea, 0x99, 0xff, 0xff,
+ 0xb1, 0xd2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xe2, 0xc1, 0xff, 0xff, 0x85, 0xdc, 0x16, 0x0,
+ 0x0, 0x0, 0x74, 0xe6, 0xf4, 0x9, 0x8c, 0x0,
+ 0x48, 0xea, 0x2b, 0x87, 0xa3, 0x8d, 0x29, 0xda,
+ 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xdb, 0x5, 0xd8,
+ 0xf2, 0x59, 0xff, 0xff, 0xff, 0x8b, 0xb0, 0x0,
+ 0x0, 0x14, 0xfe, 0xef, 0xff, 0xff, 0xcb, 0x5,
+ 0xd6, 0xf8, 0x77, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x63,
+ 0xff, 0xff, 0xfb, 0x17, 0xae, 0xb4, 0xfe, 0xeb,
+ 0xff, 0xff, 0x91, 0xa0, 0x0, 0x0, 0x2, 0x5,
+ 0xff, 0xff, 0xff, 0x8d, 0xf2, 0x80, 0x30, 0x0,
+ 0x0, 0xe0, 0xbb, 0xff, 0xff, 0xe9, 0x9, 0xda,
+ 0xf6, 0x5b, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0xa, 0xfa, 0xc5, 0xff, 0xff,
+ 0xf3, 0xff, 0xf3, 0xf, 0x3a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x9c, 0x73, 0xff, 0xff, 0xff, 0xff,
+ 0x93, 0xd2, 0xfe, 0xe7, 0xff, 0xff, 0xff, 0xf3,
+ 0x9, 0x24, 0x0, 0x0, 0x0, 0x0, 0x2e, 0xfe,
+ 0xb7, 0xff, 0xff, 0xdd, 0x99, 0xff, 0xff, 0xeb,
+ 0x1d, 0x74, 0x0, 0x0, 0x0, 0x0, 0xc, 0xf8,
+ 0xc1, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x13, 0x40,
+ 0x0, 0x0, 0x0, 0x2, 0xa6, 0x2f, 0xef, 0xff,
+ 0xff, 0xd5, 0xf, 0xee, 0xe0, 0xe0, 0xcc, 0x9a,
+ 0x32, 0x0, 0x0, 0x0, 0xac, 0x7d, 0xff, 0xff,
+ 0xc5, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf2, 0xd5, 0xff, 0xff, 0x69, 0x92, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xe, 0x5a, 0x9e, 0xba, 0xa2, 0x5e, 0xe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xcf, 0x8b,
+ 0x9f, 0xf1, 0xff, 0xff, 0xfb, 0x2f, 0x5e, 0x0,
+ 0x0, 0x0, 0xe6, 0xa7, 0xff, 0xff, 0xff, 0xc7,
+ 0x8d, 0xa5, 0xf7, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x19,
+ 0xf3, 0xff, 0xff, 0xc1, 0x51, 0x3f, 0x8b, 0xff,
+ 0xff, 0xff, 0x67, 0x7c, 0x0, 0x0, 0x0, 0xfe,
+ 0xeb, 0xff, 0xff, 0xe9, 0x99, 0x5f, 0x8c, 0x0,
+ 0x0, 0xb2, 0x89, 0xff, 0xff, 0xff, 0xcb, 0x91,
+ 0xa9, 0xf5, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xb2, 0x79, 0xff, 0xff,
+ 0xff, 0xff, 0xb5, 0xf0, 0x4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4a, 0x29, 0xff, 0xff, 0xff, 0xff,
+ 0x45, 0x70, 0xe4, 0xab, 0xff, 0xff, 0xff, 0xc3,
+ 0xf4, 0x0, 0x0, 0x0, 0x0, 0x4, 0xc6, 0x5d,
+ 0xff, 0xff, 0xff, 0x73, 0x21, 0xf3, 0xff, 0xff,
+ 0xa7, 0xf8, 0x22, 0x0, 0x0, 0x0, 0x0, 0xaa,
+ 0x71, 0xff, 0xff, 0xff, 0xff, 0xb5, 0xf0, 0x4,
+ 0x0, 0x0, 0x0, 0x18, 0xb, 0xcf, 0xff, 0xff,
+ 0xff, 0xcd, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x63,
+ 0x74, 0x0, 0x0, 0x0, 0x9e, 0x7b, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf6, 0xd7, 0xff, 0xff, 0x67, 0x82, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xfb, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x95, 0xf4, 0x10, 0x0,
+ 0x0, 0x0, 0x76, 0x27, 0xeb, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xe4,
+ 0x73, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xc7, 0x5, 0x34, 0x0, 0x0, 0x0, 0xe4,
+ 0xad, 0xff, 0xff, 0xff, 0xff, 0xa9, 0xc8, 0x0,
+ 0x0, 0x5a, 0x25, 0xef, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xe7, 0xf7, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4a, 0x1d, 0xf9, 0xff,
+ 0xff, 0xff, 0x65, 0x9a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xe, 0xfe, 0xdd, 0xff, 0xff, 0xe5,
+ 0xfe, 0x1e, 0x90, 0x63, 0xff, 0xff, 0xff, 0x8b,
+ 0xbc, 0x0, 0x0, 0x0, 0x0, 0x60, 0xf, 0xe1,
+ 0xff, 0xff, 0xdf, 0x5, 0xf0, 0x9d, 0xff, 0xff,
+ 0xfd, 0x4b, 0xb2, 0x0, 0x0, 0x0, 0x0, 0x40,
+ 0x13, 0xf5, 0xff, 0xff, 0xff, 0x63, 0x98, 0x0,
+ 0x0, 0x0, 0x0, 0x2c, 0x39, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x89,
+ 0xa0, 0x0, 0x0, 0x0, 0x92, 0x7b, 0xff, 0xff,
+ 0xc7, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf8, 0xd7, 0xff, 0xff, 0x65, 0x74, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0x9f, 0xfb,
+ 0xff, 0xff, 0xf3, 0x8f, 0xfe, 0x5e, 0x0, 0x0,
+ 0x0, 0x0, 0xc, 0xd0, 0x3d, 0xcd, 0xff, 0xff,
+ 0xff, 0xdd, 0x87, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff, 0xcb,
+ 0xd6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40,
+ 0xfa, 0x5d, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xed,
+ 0x99, 0x11, 0x96, 0x0, 0x0, 0x0, 0x0, 0x7a,
+ 0x21, 0xbd, 0xff, 0xff, 0xff, 0xb9, 0xba, 0x0,
+ 0x0, 0xc, 0xd8, 0x4b, 0xdb, 0xff, 0xff, 0xff,
+ 0xcf, 0x39, 0xdb, 0xff, 0xff, 0x67, 0x60, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0xf4, 0xc1, 0xff,
+ 0xff, 0xf1, 0xd, 0x36, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xd6, 0xa9, 0xff, 0xff, 0xa7,
+ 0xdc, 0x0, 0x36, 0xf, 0xf5, 0xff, 0xff, 0x49,
+ 0x68, 0x0, 0x0, 0x0, 0x0, 0x60, 0x95, 0xff,
+ 0xff, 0xff, 0x77, 0xc8, 0x6c, 0x25, 0xf5, 0xff,
+ 0xff, 0xd5, 0x7, 0x0, 0x0, 0x0, 0x0, 0x4,
+ 0xf6, 0xb3, 0xff, 0xff, 0xed, 0x9, 0x32, 0x0,
+ 0x0, 0x0, 0x0, 0x2a, 0x39, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x89,
+ 0x8a, 0x0, 0x0, 0x0, 0x78, 0x65, 0xff, 0xff,
+ 0xd1, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x8,
+ 0xfc, 0xe3, 0xff, 0xff, 0x4d, 0x56, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xfe, 0x21,
+ 0x51, 0x49, 0xf, 0xe8, 0x58, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x18, 0xa4, 0xfc, 0x2d, 0x53,
+ 0x3f, 0xfe, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x98, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x2e, 0xb6, 0xfe, 0x25, 0x4f, 0x55, 0x39, 0xfe,
+ 0xe2, 0x64, 0x4, 0x0, 0x0, 0x0, 0x0, 0xa,
+ 0x8e, 0xfe, 0x25, 0x51, 0x43, 0x5, 0x84, 0x0,
+ 0x0, 0x0, 0x22, 0xbc, 0xfe, 0x39, 0x55, 0x33,
+ 0xfe, 0xe4, 0xfe, 0xfe, 0xfe, 0xfe, 0x36, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xd6, 0x2, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x72, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x70, 0x0, 0x4, 0xde, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x20, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x42, 0xc, 0xe0, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xa8, 0x0, 0x0, 0x0, 0x0, 0x1a,
+ 0xfc, 0xbb, 0xff, 0xff, 0xa7, 0xe8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x16, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x52, 0x0, 0x0, 0x0, 0x46, 0x39, 0xff, 0xff,
+ 0xf1, 0x9, 0x4e, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x66,
+ 0x1b, 0xfb, 0xff, 0xfd, 0x1f, 0x2a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x2e,
+ 0x48, 0x44, 0x22, 0x4, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x34, 0x48,
+ 0x3c, 0x84, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xc, 0x2e, 0x4e, 0x56, 0x3a, 0x16,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xc, 0x30, 0x46, 0x3e, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x16, 0x3a, 0x48, 0x38,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xa0, 0xee,
+ 0x3d, 0xfb, 0xff, 0xff, 0x51, 0x86, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x16, 0xfe, 0xcd, 0xff,
+ 0xff, 0x83, 0xfc, 0x40, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x50, 0xfe,
+ 0x99, 0xff, 0xff, 0xbb, 0xfa, 0x8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa8, 0x73, 0xb5,
+ 0xef, 0xff, 0xff, 0xd5, 0xfe, 0x26, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xaa, 0x4d, 0xf7,
+ 0xff, 0xff, 0x73, 0x50, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x22, 0x0, 0x0, 0x68, 0x87,
+ 0xff, 0xff, 0xef, 0x3b, 0x90, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xe6, 0xc3, 0xff, 0xff, 0xcb, 0xea, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x72, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x50,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2, 0xc1, 0xff,
+ 0xff, 0xff, 0xfb, 0x55, 0xb6, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0xe8, 0x41,
+ 0xc7, 0xfd, 0x37, 0x50, 0x0, 0x0, 0x0, 0xee,
+ 0x47, 0x49, 0xd, 0x12, 0x0, 0x0, 0x68, 0x4f,
+ 0xfd, 0xbd, 0x35, 0xda, 0x18, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xc6, 0xb1, 0xe9, 0xe9, 0xb7, 0xcc, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x52, 0x57, 0xe9, 0xe9, 0xe9, 0x41, 0x38,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xd8, 0xd7, 0xff,
+ 0xff, 0xdf, 0x63, 0xf2, 0x28, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x9e,
+ 0xfa, 0x29, 0xf6, 0x16, 0x0, 0x0, 0x0, 0x1e,
+ 0x3a, 0x3c, 0x22, 0x2, 0x0, 0x0, 0x24, 0xf4,
+ 0x29, 0xfa, 0x92, 0x14, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x7c, 0xe2, 0xf8, 0xf8, 0xe4, 0x82, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2a, 0xd0, 0xf4, 0xfc, 0xf4, 0xcc, 0x1c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xaa, 0x9, 0x2f,
+ 0x17, 0xfe, 0xc6, 0x32, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe, 0xe, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+ 0xe, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x16,
+ 0x16, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+};
+const uint16_t FontBitmap::glyphWidth[] = {
+ 8, 9, 10, 16, 16, 20, 18, 6,
+ 10, 10, 13, 15, 8, 11, 9, 11,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 9, 9, 14, 16, 14, 14,
+ 23, 17, 17, 17, 18, 16, 16, 18,
+ 19, 9, 16, 18, 15, 23, 19, 19,
+ 18, 19, 18, 17, 17, 18, 17, 23,
+ 17, 17, 16, 9, 12, 9, 13, 13,
+ 10, 15, 16, 14, 16, 15, 11, 16,
+ 16, 8, 8, 15, 8, 23, 16, 16,
+ 16, 16, 11, 14, 10, 16, 14, 20,
+ 14, 14, 14, 10, 8, 10, 18,
+};
+const uint16_t FontBitmap::yoffset[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136,
+ 170, 170, 170, 170, 170, 170, 170, 170,
+ 170, 170, 170, 170, 170, 170, 170,
+};
diff --git a/cmds/screenrecord/Overlay.cpp b/cmds/screenrecord/Overlay.cpp
new file mode 100644
index 0000000..96e25b8
--- /dev/null
+++ b/cmds/screenrecord/Overlay.cpp
@@ -0,0 +1,401 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include <gui/BufferQueue.h>
+#include <gui/GraphicBufferAlloc.h>
+#include <gui/Surface.h>
+#include <cutils/properties.h>
+#include <utils/misc.h>
+
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include <stdlib.h>
+#include <assert.h>
+
+#include "screenrecord.h"
+#include "Overlay.h"
+#include "TextRenderer.h"
+
+using namespace android;
+
+// System properties to look up and display on the info screen.
+const char* Overlay::kPropertyNames[] = {
+ "ro.build.description",
+ // includes ro.build.id, ro.build.product, ro.build.tags, ro.build.type,
+ // and ro.build.version.release
+ "ro.product.manufacturer",
+ "ro.product.model",
+ "ro.board.platform",
+ "ro.revision",
+ "dalvik.vm.heapgrowthlimit",
+ "dalvik.vm.heapsize",
+ "persist.sys.dalvik.vm.lib",
+ //"ro.product.cpu.abi",
+ //"ro.bootloader",
+ //"this-never-appears!",
+};
+
+
+status_t Overlay::start(const sp<IGraphicBufferProducer>& outputSurface,
+ sp<IGraphicBufferProducer>* pBufferProducer) {
+ ALOGV("Overlay::start");
+ mOutputSurface = outputSurface;
+
+ // Grab the current monotonic time and the current wall-clock time so we
+ // can map one to the other. This allows the overlay counter to advance
+ // by the exact delay between frames, but if the wall clock gets adjusted
+ // we won't track it, which means we'll gradually go out of sync with the
+ // times in logcat.
+ mStartMonotonicNsecs = systemTime(CLOCK_MONOTONIC);
+ mStartRealtimeNsecs = systemTime(CLOCK_REALTIME);
+
+ Mutex::Autolock _l(mMutex);
+
+ // Start the thread. Traffic begins immediately.
+ run("overlay");
+
+ mState = INIT;
+ while (mState == INIT) {
+ mStartCond.wait(mMutex);
+ }
+
+ if (mThreadResult != NO_ERROR) {
+ ALOGE("Failed to start overlay thread: err=%d", mThreadResult);
+ return mThreadResult;
+ }
+ assert(mState == RUNNING);
+
+ ALOGV("Overlay::start successful");
+ *pBufferProducer = mBufferQueue;
+ return NO_ERROR;
+}
+
+status_t Overlay::stop() {
+ ALOGV("Overlay::stop");
+ Mutex::Autolock _l(mMutex);
+ mState = STOPPING;
+ mEventCond.signal();
+ return NO_ERROR;
+}
+
+bool Overlay::threadLoop() {
+ Mutex::Autolock _l(mMutex);
+
+ mThreadResult = setup_l();
+
+ if (mThreadResult != NO_ERROR) {
+ ALOGW("Aborting overlay thread");
+ mState = STOPPED;
+ release_l();
+ mStartCond.broadcast();
+ return false;
+ }
+
+ ALOGV("Overlay thread running");
+ mState = RUNNING;
+ mStartCond.broadcast();
+
+ while (mState == RUNNING) {
+ mEventCond.wait(mMutex);
+ if (mFrameAvailable) {
+ ALOGV("Awake, frame available");
+ processFrame_l();
+ mFrameAvailable = false;
+ } else {
+ ALOGV("Awake, frame not available");
+ }
+ }
+
+ ALOGV("Overlay thread stopping");
+ release_l();
+ mState = STOPPED;
+ return false; // stop
+}
+
+status_t Overlay::setup_l() {
+ status_t err;
+
+ err = mEglWindow.createWindow(mOutputSurface);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ mEglWindow.makeCurrent();
+
+ int width = mEglWindow.getWidth();
+ int height = mEglWindow.getHeight();
+
+ glViewport(0, 0, width, height);
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_CULL_FACE);
+
+ // Shaders for rendering from different types of textures.
+ err = mTexProgram.setup(Program::PROGRAM_TEXTURE_2D);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ err = mExtTexProgram.setup(Program::PROGRAM_EXTERNAL_TEXTURE);
+ if (err != NO_ERROR) {
+ return err;
+ }
+
+ err = mTextRenderer.loadIntoTexture();
+ if (err != NO_ERROR) {
+ return err;
+ }
+ mTextRenderer.setScreenSize(width, height);
+
+ // Input side (buffers from virtual display).
+ glGenTextures(1, &mExtTextureName);
+ if (mExtTextureName == 0) {
+ ALOGE("glGenTextures failed: %#x", glGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ mBufferQueue = new BufferQueue(/*new GraphicBufferAlloc()*/);
+ mGlConsumer = new GLConsumer(mBufferQueue, mExtTextureName,
+ GL_TEXTURE_EXTERNAL_OES);
+ mGlConsumer->setName(String8("virtual display"));
+ mGlConsumer->setDefaultBufferSize(width, height);
+ mGlConsumer->setDefaultMaxBufferCount(5);
+ mGlConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_TEXTURE);
+
+ mGlConsumer->setFrameAvailableListener(this);
+
+ return NO_ERROR;
+}
+
+
+void Overlay::release_l() {
+ ALOGV("Overlay::release_l");
+ mOutputSurface.clear();
+ mGlConsumer.clear();
+ mBufferQueue.clear();
+
+ mTexProgram.release();
+ mExtTexProgram.release();
+ mEglWindow.release();
+}
+
+void Overlay::processFrame_l() {
+ float texMatrix[16];
+
+ mGlConsumer->updateTexImage();
+ mGlConsumer->getTransformMatrix(texMatrix);
+ nsecs_t monotonicNsec = mGlConsumer->getTimestamp();
+ nsecs_t frameNumber = mGlConsumer->getFrameNumber();
+ int64_t droppedFrames = 0;
+
+ if (mLastFrameNumber > 0) {
+ mTotalDroppedFrames += size_t(frameNumber - mLastFrameNumber) - 1;
+ }
+ mLastFrameNumber = frameNumber;
+
+ mTextRenderer.setProportionalScale(35);
+
+ if (false) { // DEBUG - full blue background
+ glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
+ glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+ }
+
+ int width = mEglWindow.getWidth();
+ int height = mEglWindow.getHeight();
+ if (false) { // DEBUG - draw inset
+ mExtTexProgram.blit(mExtTextureName, texMatrix,
+ 100, 100, width-200, height-200);
+ } else {
+ mExtTexProgram.blit(mExtTextureName, texMatrix,
+ 0, 0, width, height);
+ }
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+ if (false) { // DEBUG - show entire font bitmap
+ mTexProgram.blit(mTextRenderer.getTextureName(), Program::kIdentity,
+ 100, 100, width-200, height-200);
+ }
+
+ char textBuf[64];
+ getTimeString_l(monotonicNsec, textBuf, sizeof(textBuf));
+ String8 timeStr(String8::format("%s f=%lld (%zd)",
+ textBuf, frameNumber, mTotalDroppedFrames));
+ mTextRenderer.drawString(mTexProgram, Program::kIdentity, 0, 0, timeStr);
+
+ glDisable(GL_BLEND);
+
+ if (false) { // DEBUG - add red rectangle in lower-left corner
+ glEnable(GL_SCISSOR_TEST);
+ glScissor(0, 0, 200, 200);
+ glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glDisable(GL_SCISSOR_TEST);
+ }
+
+ mEglWindow.presentationTime(monotonicNsec);
+ mEglWindow.swapBuffers();
+}
+
+void Overlay::getTimeString_l(nsecs_t monotonicNsec, char* buf, size_t bufLen) {
+ //const char* format = "%m-%d %T"; // matches log output
+ const char* format = "%T";
+ struct tm tm;
+
+ // localtime/strftime is not the fastest way to do this, but a trivial
+ // benchmark suggests that the cost is negligible.
+ int64_t realTime = mStartRealtimeNsecs +
+ (monotonicNsec - mStartMonotonicNsecs);
+ time_t secs = (time_t) (realTime / 1000000000);
+ localtime_r(&secs, &tm);
+ strftime(buf, bufLen, format, &tm);
+
+ int32_t msec = (int32_t) ((realTime % 1000000000) / 1000000);
+ char tmpBuf[5];
+ snprintf(tmpBuf, sizeof(tmpBuf), ".%03d", msec);
+ strlcat(buf, tmpBuf, bufLen);
+}
+
+// Callback; executes on arbitrary thread.
+void Overlay::onFrameAvailable() {
+ ALOGV("Overlay::onFrameAvailable");
+ Mutex::Autolock _l(mMutex);
+ mFrameAvailable = true;
+ mEventCond.signal();
+}
+
+
+/*static*/ status_t Overlay::drawInfoPage(
+ const sp<IGraphicBufferProducer>& outputSurface) {
+ status_t err;
+
+ EglWindow window;
+ err = window.createWindow(outputSurface);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ window.makeCurrent();
+
+ int width = window.getWidth();
+ int height = window.getHeight();
+ glViewport(0, 0, width, height);
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_CULL_FACE);
+
+ // Shaders for rendering.
+ Program texProgram;
+ err = texProgram.setup(Program::PROGRAM_TEXTURE_2D);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ TextRenderer textRenderer;
+ err = textRenderer.loadIntoTexture();
+ if (err != NO_ERROR) {
+ return err;
+ }
+ textRenderer.setScreenSize(width, height);
+
+ doDrawInfoPage(window, texProgram, textRenderer);
+
+ // Destroy the surface. This causes a disconnect.
+ texProgram.release();
+ window.release();
+
+ return NO_ERROR;
+}
+
+/*static*/ void Overlay::doDrawInfoPage(const EglWindow& window,
+ const Program& texProgram, TextRenderer& textRenderer) {
+ const nsecs_t holdTime = 250000000LL;
+
+ glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ int width = window.getWidth();
+ int height = window.getHeight();
+
+ // Draw a thin border around the screen. Some players, e.g. browser
+ // plugins, make it hard to see where the edges are when the device
+ // is using a black background, so this gives the viewer a frame of
+ // reference.
+ //
+ // This is a clumsy way to do it, but we're only doing it for one frame,
+ // and it's easier than actually drawing lines.
+ const int lineWidth = 4;
+ glEnable(GL_SCISSOR_TEST);
+ glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
+ glScissor(0, 0, width, lineWidth);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glScissor(0, height - lineWidth, width, lineWidth);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glScissor(0, 0, lineWidth, height);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glScissor(width - lineWidth, 0, lineWidth, height);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glDisable(GL_SCISSOR_TEST);
+
+ //glEnable(GL_BLEND);
+ //glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+ textRenderer.setProportionalScale(30);
+
+ float xpos = 0;
+ float ypos = 0;
+ ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos,
+ String8::format("Android screenrecord v%d.%d",
+ kVersionMajor, kVersionMinor));
+
+ // Show date/time
+ time_t now = time(0);
+ struct tm tm;
+ localtime_r(&now, &tm);
+ char timeBuf[64];
+ strftime(timeBuf, sizeof(timeBuf), "%a, %d %b %Y %T %z", &tm);
+ String8 header("Started ");
+ header += timeBuf;
+ ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos, header);
+ ypos += 8 * textRenderer.getScale(); // slight padding
+
+ // Show selected system property values
+ for (int i = 0; i < NELEM(kPropertyNames); i++) {
+ char valueBuf[PROPERTY_VALUE_MAX];
+
+ property_get(kPropertyNames[i], valueBuf, "");
+ if (valueBuf[0] == '\0') {
+ continue;
+ }
+ String8 str(String8::format("%s: [%s]", kPropertyNames[i], valueBuf));
+ ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos, str);
+ }
+ ypos += 8 * textRenderer.getScale(); // slight padding
+
+ // Show GL info
+ String8 glStr("OpenGL: ");
+ glStr += (char*) glGetString(GL_VENDOR);
+ glStr += " / ";
+ glStr += (char*) glGetString(GL_RENDERER);
+ glStr += ", ";
+ glStr += (char*) glGetString(GL_VERSION);
+ ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos, glStr);
+
+ //glDisable(GL_BLEND);
+
+ // Set a presentation time slightly in the past. This will cause the
+ // player to hold the frame on screen.
+ window.presentationTime(systemTime(CLOCK_MONOTONIC) - holdTime);
+ window.swapBuffers();
+}
diff --git a/cmds/screenrecord/Overlay.h b/cmds/screenrecord/Overlay.h
new file mode 100644
index 0000000..b8473b4
--- /dev/null
+++ b/cmds/screenrecord/Overlay.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SCREENRECORD_OVERLAY_H
+#define SCREENRECORD_OVERLAY_H
+
+#include "Program.h"
+#include "TextRenderer.h"
+#include "EglWindow.h"
+
+#include <gui/BufferQueue.h>
+#include <gui/GLConsumer.h>
+#include <utils/Thread.h>
+
+#include <EGL/egl.h>
+
+namespace android {
+
+/*
+ * Overlay "filter". This sits between the virtual display and the video
+ * encoder.
+ *
+ * Most functions run on a thread created by start().
+ */
+class Overlay : public GLConsumer::FrameAvailableListener, Thread {
+public:
+ Overlay() : Thread(false),
+ mThreadResult(UNKNOWN_ERROR),
+ mState(UNINITIALIZED),
+ mFrameAvailable(false),
+ mExtTextureName(0),
+ mStartMonotonicNsecs(0),
+ mStartRealtimeNsecs(0),
+ mLastFrameNumber(-1),
+ mTotalDroppedFrames(0)
+ {}
+ virtual ~Overlay() { assert(mState == UNINITIALIZED || mState == STOPPED); }
+
+ // Creates a thread that performs the overlay. Pass in the surface that
+ // output will be sent to.
+ //
+ // This creates a dedicated thread for processing frames.
+ //
+ // Returns a reference to the producer side of a new BufferQueue that will
+ // be used by the virtual display.
+ status_t start(const sp<IGraphicBufferProducer>& outputSurface,
+ sp<IGraphicBufferProducer>* pBufferProducer);
+
+ // Stops the thread and releases resources. It's okay to call this even
+ // if start() was never called.
+ status_t stop();
+
+ // This creates an EGL context and window surface, draws some informative
+ // text on it, swaps the buffer, and then tears the whole thing down.
+ static status_t drawInfoPage(const sp<IGraphicBufferProducer>& outputSurface);
+
+private:
+ Overlay(const Overlay&);
+ Overlay& operator=(const Overlay&);
+
+ // Draw the initial info screen.
+ static void doDrawInfoPage(const EglWindow& window,
+ const Program& texRender, TextRenderer& textRenderer);
+
+ // (overrides GLConsumer::FrameAvailableListener method)
+ virtual void onFrameAvailable();
+
+ // (overrides Thread method)
+ virtual bool threadLoop();
+
+ // One-time setup (essentially object construction on the overlay thread).
+ status_t setup_l();
+
+ // Release all resources held.
+ void release_l();
+
+ // Release EGL display, context, surface.
+ void eglRelease_l();
+
+ // Process a frame received from the virtual display.
+ void processFrame_l();
+
+ // Convert a monotonic time stamp into a string with the current time.
+ void getTimeString_l(nsecs_t monotonicNsec, char* buf, size_t bufLen);
+
+ // Guards all fields below.
+ Mutex mMutex;
+
+ // Initialization gate.
+ Condition mStartCond;
+
+ // Thread status, mostly useful during startup.
+ status_t mThreadResult;
+
+ // Overlay thread state. States advance from left to right; object may
+ // not be restarted.
+ enum { UNINITIALIZED, INIT, RUNNING, STOPPING, STOPPED } mState;
+
+ // Event notification. Overlay thread sleeps on this until a frame
+ // arrives or it's time to shut down.
+ Condition mEventCond;
+
+ // Set by the FrameAvailableListener callback.
+ bool mFrameAvailable;
+
+ // The surface we send our output to, i.e. the video encoder's input
+ // surface.
+ sp<IGraphicBufferProducer> mOutputSurface;
+
+ // Our queue. The producer side is passed to the virtual display, the
+ // consumer side feeds into our GLConsumer.
+ sp<BufferQueue> mBufferQueue;
+
+ // This receives frames from the virtual display and makes them available
+ // as an external texture.
+ sp<GLConsumer> mGlConsumer;
+
+ // EGL display / context / surface.
+ EglWindow mEglWindow;
+
+ // GL rendering support.
+ Program mExtTexProgram;
+ Program mTexProgram;
+
+ // Text rendering.
+ TextRenderer mTextRenderer;
+
+ // External texture, updated by GLConsumer.
+ GLuint mExtTextureName;
+
+ // Start time, used to map monotonic to wall-clock time.
+ nsecs_t mStartMonotonicNsecs;
+ nsecs_t mStartRealtimeNsecs;
+
+ // Used for tracking dropped frames.
+ nsecs_t mLastFrameNumber;
+ size_t mTotalDroppedFrames;
+
+ static const char* kPropertyNames[];
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_OVERLAY_H*/
diff --git a/cmds/screenrecord/Program.cpp b/cmds/screenrecord/Program.cpp
new file mode 100644
index 0000000..a198204
--- /dev/null
+++ b/cmds/screenrecord/Program.cpp
@@ -0,0 +1,303 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include "Program.h"
+
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include <assert.h>
+
+using namespace android;
+
+// 4x4 identity matrix
+const float Program::kIdentity[] = {
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f
+};
+
+// Simple vertex shader. Texture coord calc includes matrix for GLConsumer
+// transform.
+static const char* kVertexShader =
+ "uniform mat4 uMVPMatrix;\n"
+ "uniform mat4 uGLCMatrix;\n"
+ "attribute vec4 aPosition;\n"
+ "attribute vec4 aTextureCoord;\n"
+ "varying vec2 vTextureCoord;\n"
+ "void main() {\n"
+ " gl_Position = uMVPMatrix * aPosition;\n"
+ " vTextureCoord = (uGLCMatrix * aTextureCoord).xy;\n"
+ "}\n";
+
+// Trivial fragment shader for external texture.
+static const char* kExtFragmentShader =
+ "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"
+ "varying vec2 vTextureCoord;\n"
+ "uniform samplerExternalOES uTexture;\n"
+ "void main() {\n"
+ " gl_FragColor = texture2D(uTexture, vTextureCoord);\n"
+ "}\n";
+
+// Trivial fragment shader for mundane texture.
+static const char* kFragmentShader =
+ "precision mediump float;\n"
+ "varying vec2 vTextureCoord;\n"
+ "uniform sampler2D uTexture;\n"
+ "void main() {\n"
+ " gl_FragColor = texture2D(uTexture, vTextureCoord);\n"
+ //" gl_FragColor = vec4(0.2, 1.0, 0.2, 1.0);\n"
+ "}\n";
+
+status_t Program::setup(ProgramType type) {
+ ALOGV("Program::setup type=%d", type);
+ status_t err;
+
+ mProgramType = type;
+
+ GLuint program;
+ if (type == PROGRAM_TEXTURE_2D) {
+ err = createProgram(&program, kVertexShader, kFragmentShader);
+ } else {
+ err = createProgram(&program, kVertexShader, kExtFragmentShader);
+ }
+ if (err != NO_ERROR) {
+ return err;
+ }
+ assert(program != 0);
+
+ maPositionLoc = glGetAttribLocation(program, "aPosition");
+ maTextureCoordLoc = glGetAttribLocation(program, "aTextureCoord");
+ muMVPMatrixLoc = glGetUniformLocation(program, "uMVPMatrix");
+ muGLCMatrixLoc = glGetUniformLocation(program, "uGLCMatrix");
+ muTextureLoc = glGetUniformLocation(program, "uTexture");
+ if ((maPositionLoc | maTextureCoordLoc | muMVPMatrixLoc |
+ muGLCMatrixLoc | muTextureLoc) == -1) {
+ ALOGE("Attrib/uniform lookup failed: %#x", glGetError());
+ glDeleteProgram(program);
+ return UNKNOWN_ERROR;
+ }
+
+ mProgram = program;
+ return NO_ERROR;
+}
+
+void Program::release() {
+ ALOGV("Program::release");
+ if (mProgram != 0) {
+ glDeleteProgram(mProgram);
+ mProgram = 0;
+ }
+}
+
+status_t Program::createProgram(GLuint* outPgm, const char* vertexShader,
+ const char* fragmentShader) {
+ GLuint vs, fs;
+ status_t err;
+
+ err = compileShader(GL_VERTEX_SHADER, vertexShader, &vs);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ err = compileShader(GL_FRAGMENT_SHADER, fragmentShader, &fs);
+ if (err != NO_ERROR) {
+ glDeleteShader(vs);
+ return err;
+ }
+
+ GLuint program;
+ err = linkShaderProgram(vs, fs, &program);
+ glDeleteShader(vs);
+ glDeleteShader(fs);
+ if (err == NO_ERROR) {
+ *outPgm = program;
+ }
+ return err;
+}
+
+status_t Program::compileShader(GLenum shaderType, const char* src,
+ GLuint* outShader) {
+ GLuint shader = glCreateShader(shaderType);
+ if (shader == 0) {
+ ALOGE("glCreateShader error: %#x", glGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ glShaderSource(shader, 1, &src, NULL);
+ glCompileShader(shader);
+
+ GLint compiled = 0;
+ glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
+ if (!compiled) {
+ ALOGE("Compile of shader type %d failed", shaderType);
+ GLint infoLen = 0;
+ glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+ if (infoLen) {
+ char* buf = new char[infoLen];
+ if (buf) {
+ glGetShaderInfoLog(shader, infoLen, NULL, buf);
+ ALOGE("Compile log: %s", buf);
+ delete[] buf;
+ }
+ }
+ glDeleteShader(shader);
+ return UNKNOWN_ERROR;
+ }
+ *outShader = shader;
+ return NO_ERROR;
+}
+
+status_t Program::linkShaderProgram(GLuint vs, GLuint fs, GLuint* outPgm) {
+ GLuint program = glCreateProgram();
+ if (program == 0) {
+ ALOGE("glCreateProgram error: %#x", glGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ glAttachShader(program, vs);
+ glAttachShader(program, fs);
+ glLinkProgram(program);
+ GLint linkStatus = GL_FALSE;
+ glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
+ if (linkStatus != GL_TRUE) {
+ ALOGE("glLinkProgram failed");
+ GLint bufLength = 0;
+ glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
+ if (bufLength) {
+ char* buf = new char[bufLength];
+ if (buf) {
+ glGetProgramInfoLog(program, bufLength, NULL, buf);
+ ALOGE("Link log: %s", buf);
+ delete[] buf;
+ }
+ }
+ glDeleteProgram(program);
+ return UNKNOWN_ERROR;
+ }
+
+ *outPgm = program;
+ return NO_ERROR;
+}
+
+
+
+status_t Program::blit(GLuint texName, const float* texMatrix,
+ int32_t x, int32_t y, int32_t w, int32_t h) const {
+ ALOGV("Program::blit %d xy=%d,%d wh=%d,%d", texName, x, y, w, h);
+
+ const float pos[] = {
+ float(x), float(y+h),
+ float(x+w), float(y+h),
+ float(x), float(y),
+ float(x+w), float(y),
+ };
+ const float uv[] = {
+ 0.0f, 0.0f,
+ 1.0f, 0.0f,
+ 0.0f, 1.0f,
+ 1.0f, 1.0f,
+ };
+ status_t err;
+
+ err = beforeDraw(texName, texMatrix, pos, uv);
+ if (err == NO_ERROR) {
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ err = afterDraw();
+ }
+ return err;
+}
+
+status_t Program::drawTriangles(GLuint texName, const float* texMatrix,
+ const float* vertices, const float* texes, size_t count) const {
+ ALOGV("Program::drawTriangles texName=%d", texName);
+
+ status_t err;
+
+ err = beforeDraw(texName, texMatrix, vertices, texes);
+ if (err == NO_ERROR) {
+ glDrawArrays(GL_TRIANGLES, 0, count);
+ err = afterDraw();
+ }
+ return err;
+}
+
+status_t Program::beforeDraw(GLuint texName, const float* texMatrix,
+ const float* vertices, const float* texes) const {
+ // Create an orthographic projection matrix based on viewport size.
+ GLint vp[4];
+ glGetIntegerv(GL_VIEWPORT, vp);
+ float screenToNdc[16] = {
+ 2.0f/float(vp[2]), 0.0f, 0.0f, 0.0f,
+ 0.0f, -2.0f/float(vp[3]), 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ -1.0f, 1.0f, 0.0f, 1.0f,
+ };
+
+ glUseProgram(mProgram);
+
+ glVertexAttribPointer(maPositionLoc, 2, GL_FLOAT, GL_FALSE, 0, vertices);
+ glVertexAttribPointer(maTextureCoordLoc, 2, GL_FLOAT, GL_FALSE, 0, texes);
+ glEnableVertexAttribArray(maPositionLoc);
+ glEnableVertexAttribArray(maTextureCoordLoc);
+
+ glUniformMatrix4fv(muMVPMatrixLoc, 1, GL_FALSE, screenToNdc);
+ glUniformMatrix4fv(muGLCMatrixLoc, 1, GL_FALSE, texMatrix);
+
+ glActiveTexture(GL_TEXTURE0);
+
+ switch (mProgramType) {
+ case PROGRAM_EXTERNAL_TEXTURE:
+ glBindTexture(GL_TEXTURE_EXTERNAL_OES, texName);
+ break;
+ case PROGRAM_TEXTURE_2D:
+ glBindTexture(GL_TEXTURE_2D, texName);
+ break;
+ default:
+ ALOGE("unexpected program type %d", mProgramType);
+ return UNKNOWN_ERROR;
+ }
+
+ glUniform1i(muTextureLoc, 0);
+
+ GLenum glErr;
+ if ((glErr = glGetError()) != GL_NO_ERROR) {
+ ALOGE("GL error before draw: %#x", glErr);
+ glDisableVertexAttribArray(maPositionLoc);
+ glDisableVertexAttribArray(maTextureCoordLoc);
+ return UNKNOWN_ERROR;
+ }
+
+ return NO_ERROR;
+}
+
+status_t Program::afterDraw() const {
+ glDisableVertexAttribArray(maPositionLoc);
+ glDisableVertexAttribArray(maTextureCoordLoc);
+
+ GLenum glErr;
+ if ((glErr = glGetError()) != GL_NO_ERROR) {
+ ALOGE("GL error after draw: %#x", glErr);
+ return UNKNOWN_ERROR;
+ }
+
+ return NO_ERROR;
+}
diff --git a/cmds/screenrecord/Program.h b/cmds/screenrecord/Program.h
new file mode 100644
index 0000000..e47bc0d
--- /dev/null
+++ b/cmds/screenrecord/Program.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SCREENRECORD_PROGRAM_H
+#define SCREENRECORD_PROGRAM_H
+
+#include <utils/Errors.h>
+
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
+
+namespace android {
+
+/*
+ * Utility class for GLES rendering.
+ *
+ * Not thread-safe.
+ */
+class Program {
+public:
+ enum ProgramType { PROGRAM_UNKNOWN=0, PROGRAM_EXTERNAL_TEXTURE,
+ PROGRAM_TEXTURE_2D };
+
+ Program() :
+ mProgramType(PROGRAM_UNKNOWN),
+ mProgram(0),
+ maPositionLoc(0),
+ maTextureCoordLoc(0),
+ muMVPMatrixLoc(0),
+ muGLCMatrixLoc(0),
+ muTextureLoc(0)
+ {}
+ ~Program() { release(); }
+
+ // Initialize the program for use with the specified texture type.
+ status_t setup(ProgramType type);
+
+ // Release the program and associated resources.
+ void release();
+
+ // Blit the specified texture to { x, y, x+w, y+h }.
+ status_t blit(GLuint texName, const float* texMatrix,
+ int32_t x, int32_t y, int32_t w, int32_t h) const;
+
+ // Draw a number of triangles.
+ status_t drawTriangles(GLuint texName, const float* texMatrix,
+ const float* vertices, const float* texes, size_t count) const;
+
+ static const float kIdentity[];
+
+private:
+ Program(const Program&);
+ Program& operator=(const Program&);
+
+ // Common code for draw functions.
+ status_t beforeDraw(GLuint texName, const float* texMatrix,
+ const float* vertices, const float* texes) const;
+ status_t afterDraw() const;
+
+ // GLES 2 shader utilities.
+ status_t createProgram(GLuint* outPgm, const char* vertexShader,
+ const char* fragmentShader);
+ static status_t compileShader(GLenum shaderType, const char* src,
+ GLuint* outShader);
+ static status_t linkShaderProgram(GLuint vs, GLuint fs, GLuint* outPgm);
+
+ ProgramType mProgramType;
+ GLuint mProgram;
+
+ GLint maPositionLoc;
+ GLint maTextureCoordLoc;
+ GLint muMVPMatrixLoc;
+ GLint muGLCMatrixLoc;
+ GLint muTextureLoc;
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_PROGRAM_H*/
diff --git a/cmds/screenrecord/TextRenderer.cpp b/cmds/screenrecord/TextRenderer.cpp
new file mode 100644
index 0000000..784055c
--- /dev/null
+++ b/cmds/screenrecord/TextRenderer.cpp
@@ -0,0 +1,358 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include "TextRenderer.h"
+
+#include <assert.h>
+
+namespace android {
+#include "FontBitmap.h"
+};
+
+using namespace android;
+
+const char TextRenderer::kWhitespace[] = " \t\n\r";
+
+bool TextRenderer::mInitialized = false;
+uint32_t TextRenderer::mXOffset[FontBitmap::numGlyphs];
+
+void TextRenderer::initOnce() {
+ if (!mInitialized) {
+ initXOffset();
+ mInitialized = true;
+ }
+}
+
+void TextRenderer::initXOffset() {
+ // Generate a table of X offsets. They start at zero and reset whenever
+ // we move down a line (i.e. the Y offset changes). The offset increases
+ // by one pixel more than the width because the generator left a gap to
+ // avoid reading pixels from adjacent glyphs in the texture filter.
+ uint16_t offset = 0;
+ uint16_t prevYOffset = (int16_t) -1;
+ for (unsigned int i = 0; i < FontBitmap::numGlyphs; i++) {
+ if (prevYOffset != FontBitmap::yoffset[i]) {
+ prevYOffset = FontBitmap::yoffset[i];
+ offset = 0;
+ }
+ mXOffset[i] = offset;
+ offset += FontBitmap::glyphWidth[i] + 1;
+ }
+}
+
+static bool isPowerOfTwo(uint32_t val) {
+ // a/k/a "is exactly one bit set"; note returns true for 0
+ return (val & (val -1)) == 0;
+}
+
+static uint32_t powerOfTwoCeil(uint32_t val) {
+ // drop it, smear the bits across, pop it
+ val--;
+ val |= val >> 1;
+ val |= val >> 2;
+ val |= val >> 4;
+ val |= val >> 8;
+ val |= val >> 16;
+ val++;
+
+ return val;
+}
+
+float TextRenderer::getGlyphHeight() const {
+ return FontBitmap::maxGlyphHeight;
+}
+
+status_t TextRenderer::loadIntoTexture() {
+ ALOGV("Font::loadIntoTexture");
+
+ glGenTextures(1, &mTextureName);
+ if (mTextureName == 0) {
+ ALOGE("glGenTextures failed: %#x", glGetError());
+ return UNKNOWN_ERROR;
+ }
+ glBindTexture(GL_TEXTURE_2D, mTextureName);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+ // The pixel data is stored as combined color+alpha, 8 bits per pixel.
+ // It's guaranteed to be a power-of-two wide, but we cut off the height
+ // where the data ends. We want to expand it to a power-of-two bitmap
+ // with ARGB data and hand that to glTexImage2D.
+
+ if (!isPowerOfTwo(FontBitmap::width)) {
+ ALOGE("npot glyph bitmap width %u", FontBitmap::width);
+ return UNKNOWN_ERROR;
+ }
+
+ uint32_t potHeight = powerOfTwoCeil(FontBitmap::height);
+ uint8_t* rgbaPixels = new uint8_t[FontBitmap::width * potHeight * 4];
+ memset(rgbaPixels, 0, FontBitmap::width * potHeight * 4);
+ uint8_t* pix = rgbaPixels;
+
+ for (unsigned int i = 0; i < FontBitmap::width * FontBitmap::height; i++) {
+ uint8_t alpha, color;
+ if ((FontBitmap::pixels[i] & 1) == 0) {
+ // black pixel with varying alpha
+ color = 0x00;
+ alpha = FontBitmap::pixels[i] & ~1;
+ } else {
+ // opaque grey pixel
+ color = FontBitmap::pixels[i] & ~1;
+ alpha = 0xff;
+ }
+ *pix++ = color;
+ *pix++ = color;
+ *pix++ = color;
+ *pix++ = alpha;
+ }
+
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, FontBitmap::width, potHeight, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, rgbaPixels);
+ delete[] rgbaPixels;
+ GLint glErr = glGetError();
+ if (glErr != 0) {
+ ALOGE("glTexImage2D failed: %#x", glErr);
+ return UNKNOWN_ERROR;
+ }
+ return NO_ERROR;
+}
+
+void TextRenderer::setProportionalScale(float linesPerScreen) {
+ if (mScreenWidth == 0 || mScreenHeight == 0) {
+ ALOGW("setFontScale: can't set scale for width=%d height=%d",
+ mScreenWidth, mScreenHeight);
+ return;
+ }
+ float tallest = mScreenWidth > mScreenHeight ? mScreenWidth : mScreenHeight;
+ setScale(tallest / (linesPerScreen * getGlyphHeight()));
+}
+
+float TextRenderer::computeScaledStringWidth(const String8& str8) const {
+ // String8.length() isn't documented, but I'm assuming it will return
+ // the number of characters rather than the number of bytes. Since
+ // we can only display ASCII we want to ignore anything else, so we
+ // just convert to char* -- but String8 doesn't document what it does
+ // with values outside 0-255. So just convert to char* and use strlen()
+ // to see what we get.
+ const char* str = str8.string();
+ return computeScaledStringWidth(str, strlen(str));
+}
+
+size_t TextRenderer::glyphIndex(char ch) const {
+ size_t chi = ch - FontBitmap::firstGlyphChar;
+ if (chi >= FontBitmap::numGlyphs) {
+ chi = '?' - FontBitmap::firstGlyphChar;
+ }
+ assert(chi < FontBitmap::numGlyphs);
+ return chi;
+}
+
+float TextRenderer::computeScaledStringWidth(const char* str,
+ size_t len) const {
+ float width = 0.0f;
+ for (size_t i = 0; i < len; i++) {
+ size_t chi = glyphIndex(str[i]);
+ float glyphWidth = FontBitmap::glyphWidth[chi];
+ width += (glyphWidth - 1 - FontBitmap::outlineWidth) * mScale;
+ }
+
+ return width;
+}
+
+void TextRenderer::drawString(const Program& program, const float* texMatrix,
+ float x, float y, const String8& str8) const {
+ ALOGV("drawString %.3f,%.3f '%s' (scale=%.3f)", x, y, str8.string(),mScale);
+ initOnce();
+
+ // We want to draw the entire string with a single GLES call. We
+ // generate two arrays, one with screen coordinates, one with texture
+ // coordinates. Need two triangles per character.
+ const char* str = str8.string();
+ size_t len = strlen(str); // again, unsure about String8 handling
+
+ const size_t quadCoords =
+ 2 /*triangles*/ * 3 /*vertex/tri*/ * 2 /*coord/vertex*/;
+ float vertices[len * quadCoords];
+ float texes[len * quadCoords];
+
+ float fullTexWidth = FontBitmap::width;
+ float fullTexHeight = powerOfTwoCeil(FontBitmap::height);
+ for (size_t i = 0; i < len; i++) {
+ size_t chi = glyphIndex(str[i]);
+ float glyphWidth = FontBitmap::glyphWidth[chi];
+ float glyphHeight = FontBitmap::maxGlyphHeight;
+
+ float vertLeft = x;
+ float vertRight = x + glyphWidth * mScale;
+ float vertTop = y;
+ float vertBottom = y + glyphHeight * mScale;
+
+ // Lowest-numbered glyph is in top-left of bitmap, which puts it at
+ // the bottom-left in texture coordinates.
+ float texLeft = mXOffset[chi] / fullTexWidth;
+ float texRight = (mXOffset[chi] + glyphWidth) / fullTexWidth;
+ float texTop = FontBitmap::yoffset[chi] / fullTexHeight;
+ float texBottom = (FontBitmap::yoffset[chi] + glyphHeight) /
+ fullTexHeight;
+
+ size_t off = i * quadCoords;
+ vertices[off + 0] = vertLeft;
+ vertices[off + 1] = vertBottom;
+ vertices[off + 2] = vertRight;
+ vertices[off + 3] = vertBottom;
+ vertices[off + 4] = vertLeft;
+ vertices[off + 5] = vertTop;
+ vertices[off + 6] = vertLeft;
+ vertices[off + 7] = vertTop;
+ vertices[off + 8] = vertRight;
+ vertices[off + 9] = vertBottom;
+ vertices[off + 10] = vertRight;
+ vertices[off + 11] = vertTop;
+ texes[off + 0] = texLeft;
+ texes[off + 1] = texBottom;
+ texes[off + 2] = texRight;
+ texes[off + 3] = texBottom;
+ texes[off + 4] = texLeft;
+ texes[off + 5] = texTop;
+ texes[off + 6] = texLeft;
+ texes[off + 7] = texTop;
+ texes[off + 8] = texRight;
+ texes[off + 9] = texBottom;
+ texes[off + 10] = texRight;
+ texes[off + 11] = texTop;
+
+ // We added 1-pixel padding in the texture, so we want to advance by
+ // one less. Also, each glyph is surrounded by a black outline, which
+ // we want to merge.
+ x += (glyphWidth - 1 - FontBitmap::outlineWidth) * mScale;
+ }
+
+ program.drawTriangles(mTextureName, texMatrix, vertices, texes,
+ len * quadCoords / 2);
+}
+
+float TextRenderer::drawWrappedString(const Program& texRender,
+ float xpos, float ypos, const String8& str) {
+ ALOGV("drawWrappedString %.3f,%.3f '%s'", xpos, ypos, str.string());
+ initOnce();
+
+ if (mScreenWidth == 0 || mScreenHeight == 0) {
+ ALOGW("drawWrappedString: can't wrap with width=%d height=%d",
+ mScreenWidth, mScreenHeight);
+ return ypos;
+ }
+
+ const float indentWidth = mIndentMult * getScale();
+ if (xpos < mBorderWidth) {
+ xpos = mBorderWidth;
+ }
+ if (ypos < mBorderWidth) {
+ ypos = mBorderWidth;
+ }
+
+ const size_t maxWidth = (mScreenWidth - mBorderWidth) - xpos;
+ if (maxWidth < 1) {
+ ALOGE("Unable to render text: xpos=%.3f border=%.3f width=%u",
+ xpos, mBorderWidth, mScreenWidth);
+ return ypos;
+ }
+ float stringWidth = computeScaledStringWidth(str);
+ if (stringWidth <= maxWidth) {
+ // Trivial case.
+ drawString(texRender, Program::kIdentity, xpos, ypos, str);
+ ypos += getScaledGlyphHeight();
+ } else {
+ // We need to break the string into pieces, ideally at whitespace
+ // boundaries.
+ char* mangle = strdup(str.string());
+ char* start = mangle;
+ while (start != NULL) {
+ float xposAdj = (start == mangle) ? xpos : xpos + indentWidth;
+ char* brk = breakString(start,
+ (float) (mScreenWidth - mBorderWidth - xposAdj));
+ if (brk == NULL) {
+ // draw full string
+ drawString(texRender, Program::kIdentity, xposAdj, ypos,
+ String8(start));
+ start = NULL;
+ } else {
+ // draw partial string
+ char ch = *brk;
+ *brk = '\0';
+ drawString(texRender, Program::kIdentity, xposAdj, ypos,
+ String8(start));
+ *brk = ch;
+ start = brk;
+ if (strchr(kWhitespace, ch) != NULL) {
+ // if we broke on whitespace, skip past it
+ start++;
+ }
+ }
+ ypos += getScaledGlyphHeight();
+ }
+ free(mangle);
+ }
+
+ return ypos;
+}
+
+char* TextRenderer::breakString(const char* str, float maxWidth) const {
+ // Ideally we'd do clever things like binary search. Not bothering.
+ ALOGV("breakString '%s' %.3f", str, maxWidth);
+
+ size_t len = strlen(str);
+ if (len == 0) {
+ // Caller should detect this and not advance ypos.
+ return NULL;
+ }
+
+ float stringWidth = computeScaledStringWidth(str, len);
+ if (stringWidth <= maxWidth) {
+ return NULL; // trivial -- use full string
+ }
+
+ // Find the longest string that will fit.
+ size_t goodPos = 0;
+ for (size_t i = 0; i < len; i++) {
+ stringWidth = computeScaledStringWidth(str, i);
+ if (stringWidth < maxWidth) {
+ goodPos = i;
+ } else {
+ break; // too big
+ }
+ }
+ if (goodPos == 0) {
+ // space is too small to hold any glyph; output a single char
+ ALOGW("Couldn't find a nonzero prefix that fit from '%s'", str);
+ goodPos = 1;
+ }
+
+ // Scan back for whitespace. If we can't find any we'll just have
+ // an ugly mid-word break.
+ for (size_t i = goodPos; i > 0; i--) {
+ if (strchr(kWhitespace, str[i]) != NULL) {
+ goodPos = i;
+ break;
+ }
+ }
+
+ ALOGV("goodPos=%d for str='%s'", goodPos, str);
+ return const_cast<char*>(str + goodPos);
+}
diff --git a/cmds/screenrecord/TextRenderer.h b/cmds/screenrecord/TextRenderer.h
new file mode 100644
index 0000000..03dd2fb
--- /dev/null
+++ b/cmds/screenrecord/TextRenderer.h
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SCREENRECORD_TEXT_RENDER_H
+#define SCREENRECORD_TEXT_RENDER_H
+
+#include "Program.h"
+
+#include <utils/String8.h>
+#include <utils/Errors.h>
+
+#include <GLES2/gl2.h>
+
+
+namespace android {
+
+/*
+ * Simple font representation.
+ *
+ * Not thread-safe.
+ */
+class TextRenderer {
+public:
+ TextRenderer() :
+ mTextureName(0),
+ mScale(1.0f),
+ mBorderWidth(10.0f),
+ mIndentMult(30.0f),
+ mScreenWidth(0),
+ mScreenHeight(0)
+ {}
+ ~TextRenderer() {}
+
+ // Load the glyph bitmap into a 2D texture in the current context.
+ status_t loadIntoTexture();
+
+ // Set the screen dimensions, used for scaling and line wrap.
+ void setScreenSize(uint32_t width, uint32_t height) {
+ mScreenWidth = width;
+ mScreenHeight = height;
+ }
+
+ // Get/set the font scaling.
+ float getScale() const { return mScale; }
+ void setScale(float scale) { mScale = scale; }
+
+ // Set the font scaling based on the desired number of lines per screen.
+ // The display's tallest axis is used, so if the device is in landscape
+ // the screen will fit fewer lines.
+ void setProportionalScale(float linesPerScreen);
+
+ // Render the text string at the specified coordinates. Pass in the
+ // upper-left corner in non-GL-flipped coordinates, i.e. to print text
+ // at the top left of the screen use (0,0).
+ //
+ // Set blend func (1, 1-srcAlpha) before calling if drawing onto
+ // something other than black.
+ void drawString(const Program& program, const float* texMatrix,
+ float x, float y, const String8& str) const;
+
+ // Draw a string, possibly wrapping it at the screen boundary. Top-left
+ // is at (0,0).
+ //
+ // Returns the updated Y position.
+ float drawWrappedString(const Program& texRender, float xpos, float ypos,
+ const String8& str);
+
+ // Returns the name of the texture the font was loaded into.
+ GLuint getTextureName() const { return mTextureName; }
+
+private:
+ TextRenderer(const TextRenderer&);
+ TextRenderer& operator=(const TextRenderer&);
+
+ // Perform one-time initialization.
+ static void initOnce();
+
+ // Populate the mXOffset array.
+ static void initXOffset();
+
+ // Find a good place to break the string. Returns NULL if the entire
+ // string will fit.
+ char* breakString(const char* str, float maxWidth) const;
+
+ // Computes the width of the string, in pixels.
+ float computeScaledStringWidth(const String8& str8) const;
+
+ // Computes the width of first N characters in the string.
+ float computeScaledStringWidth(const char* str, size_t len) const;
+
+ // Returns the font's glyph height. This is the full pixel height of the
+ // tallest glyph, both above and below the baseline, NOT adjusted by the
+ // current scale factor.
+ float getGlyphHeight() const;
+
+ // Like getGlyphHeight(), but result is scaled.
+ float getScaledGlyphHeight() const { return getGlyphHeight() * mScale; }
+
+ // Convert an ASCII character to a glyph index. Returns the glyph for
+ // '?' if we have no glyph for the specified character.
+ size_t glyphIndex(char ch) const;
+
+ GLuint mTextureName;
+ float mScale;
+
+ // Number of pixels preserved at the left/right edges of the screen by
+ // drawWrappedString(). Not scaled.
+ float mBorderWidth;
+
+ // Distance to indent a broken line. Used by drawWrappedString().
+ // Value will be adjusted by the current scale factor.
+ float mIndentMult;
+
+ // Screen dimensions.
+ uint32_t mScreenWidth;
+ uint32_t mScreenHeight;
+
+ // Static font info.
+ static bool mInitialized;
+ static uint32_t mXOffset[];
+
+ static const char kWhitespace[];
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_TEXT_RENDER_H*/
diff --git a/cmds/screenrecord/screenrecord.cpp b/cmds/screenrecord/screenrecord.cpp
index 49999b5..61f83e3 100644
--- a/cmds/screenrecord/screenrecord.cpp
+++ b/cmds/screenrecord/screenrecord.cpp
@@ -15,13 +15,14 @@
*/
#define LOG_TAG "ScreenRecord"
+#define ATRACE_TAG ATRACE_TAG_GRAPHICS
//#define LOG_NDEBUG 0
#include <utils/Log.h>
#include <binder/IPCThreadState.h>
#include <utils/Errors.h>
-#include <utils/Thread.h>
#include <utils/Timers.h>
+#include <utils/Trace.h>
#include <gui/Surface.h>
#include <gui/SurfaceComposerClient.h>
@@ -29,7 +30,6 @@
#include <ui/DisplayInfo.h>
#include <media/openmax/OMX_IVCommon.h>
#include <media/stagefright/foundation/ABuffer.h>
-#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/MediaCodec.h>
#include <media/stagefright/MediaErrors.h>
@@ -40,30 +40,37 @@
#include <unistd.h>
#include <string.h>
#include <stdio.h>
+#include <ctype.h>
#include <fcntl.h>
#include <signal.h>
#include <getopt.h>
#include <sys/wait.h>
+#include <assert.h>
+
+#include "screenrecord.h"
+#include "Overlay.h"
using namespace android;
static const uint32_t kMinBitRate = 100000; // 0.1Mbps
-static const uint32_t kMaxBitRate = 100 * 1000000; // 100Mbps
+static const uint32_t kMaxBitRate = 200 * 1000000; // 200Mbps
static const uint32_t kMaxTimeLimitSec = 180; // 3 minutes
static const uint32_t kFallbackWidth = 1280; // 720p
static const uint32_t kFallbackHeight = 720;
// Command-line parameters.
-static bool gVerbose = false; // chatty on stdout
-static bool gRotate = false; // rotate 90 degrees
-static bool gSizeSpecified = false; // was size explicitly requested?
-static uint32_t gVideoWidth = 0; // default width+height
+static bool gVerbose = false; // chatty on stdout
+static bool gRotate = false; // rotate 90 degrees
+static bool gSizeSpecified = false; // was size explicitly requested?
+static bool gWantInfoScreen = false; // do we want initial info screen?
+static bool gWantFrameTime = false; // do we want times on each frame?
+static uint32_t gVideoWidth = 0; // default width+height
static uint32_t gVideoHeight = 0;
-static uint32_t gBitRate = 4000000; // 4Mbps
+static uint32_t gBitRate = 4000000; // 4Mbps
static uint32_t gTimeLimitSec = kMaxTimeLimitSec;
// Set by signal handler to stop recording.
-static bool gStopRequested;
+static volatile bool gStopRequested;
// Previous signal handler state, restored after first hit.
static struct sigaction gOrigSigactionINT;
@@ -97,8 +104,7 @@
* when Ctrl-C is hit. If we're run from the host, the local adb process
* gets the signal, and we get a SIGHUP when the terminal disconnects.
*/
-static status_t configureSignals()
-{
+static status_t configureSignals() {
struct sigaction act;
memset(&act, 0, sizeof(act));
act.sa_handler = signalCatcher;
@@ -156,35 +162,30 @@
fprintf(stderr, "ERROR: unable to create video/avc codec instance\n");
return UNKNOWN_ERROR;
}
+
err = codec->configure(format, NULL, NULL,
MediaCodec::CONFIGURE_FLAG_ENCODE);
if (err != NO_ERROR) {
- codec->release();
- codec.clear();
-
fprintf(stderr, "ERROR: unable to configure codec (err=%d)\n", err);
+ codec->release();
return err;
}
- ALOGV("Creating buffer producer");
+ ALOGV("Creating encoder input surface");
sp<IGraphicBufferProducer> bufferProducer;
err = codec->createInputSurface(&bufferProducer);
if (err != NO_ERROR) {
- codec->release();
- codec.clear();
-
fprintf(stderr,
"ERROR: unable to create encoder input surface (err=%d)\n", err);
+ codec->release();
return err;
}
ALOGV("Starting codec");
err = codec->start();
if (err != NO_ERROR) {
- codec->release();
- codec.clear();
-
fprintf(stderr, "ERROR: unable to start codec (err=%d)\n", err);
+ codec->release();
return err;
}
@@ -195,12 +196,11 @@
}
/*
- * Configures the virtual display. When this completes, virtual display
- * frames will start being sent to the encoder's surface.
+ * Sets the display projection, based on the display dimensions, video size,
+ * and device orientation.
*/
-static status_t prepareVirtualDisplay(const DisplayInfo& mainDpyInfo,
- const sp<IGraphicBufferProducer>& bufferProducer,
- sp<IBinder>* pDisplayHandle) {
+static status_t setDisplayProjection(const sp<IBinder>& dpy,
+ const DisplayInfo& mainDpyInfo) {
status_t err;
// Set the region of the layer stack we're interested in, which in our
@@ -266,15 +266,25 @@
}
}
-
- sp<IBinder> dpy = SurfaceComposerClient::createDisplay(
- String8("ScreenRecorder"), false /* secure */);
-
- SurfaceComposerClient::openGlobalTransaction();
- SurfaceComposerClient::setDisplaySurface(dpy, bufferProducer);
SurfaceComposerClient::setDisplayProjection(dpy,
gRotate ? DISPLAY_ORIENTATION_90 : DISPLAY_ORIENTATION_0,
layerStackRect, displayRect);
+ return NO_ERROR;
+}
+
+/*
+ * Configures the virtual display. When this completes, virtual display
+ * frames will start arriving from the buffer producer.
+ */
+static status_t prepareVirtualDisplay(const DisplayInfo& mainDpyInfo,
+ const sp<IGraphicBufferProducer>& bufferProducer,
+ sp<IBinder>* pDisplayHandle) {
+ sp<IBinder> dpy = SurfaceComposerClient::createDisplay(
+ String8("ScreenRecorder"), false /*secure*/);
+
+ SurfaceComposerClient::openGlobalTransaction();
+ SurfaceComposerClient::setDisplaySurface(dpy, bufferProducer);
+ setDisplayProjection(dpy, mainDpyInfo);
SurfaceComposerClient::setDisplayLayerStack(dpy, 0); // default stack
SurfaceComposerClient::closeGlobalTransaction();
@@ -291,13 +301,15 @@
* The muxer must *not* have been started before calling.
*/
static status_t runEncoder(const sp<MediaCodec>& encoder,
- const sp<MediaMuxer>& muxer) {
+ const sp<MediaMuxer>& muxer, const sp<IBinder>& mainDpy,
+ const sp<IBinder>& virtualDpy, uint8_t orientation) {
static int kTimeout = 250000; // be responsive on signal
status_t err;
ssize_t trackIdx = -1;
uint32_t debugNumFrames = 0;
int64_t startWhenNsec = systemTime(CLOCK_MONOTONIC);
int64_t endWhenNsec = startWhenNsec + seconds_to_nanoseconds(gTimeLimitSec);
+ DisplayInfo mainDpyInfo;
Vector<sp<ABuffer> > buffers;
err = encoder->getOutputBuffers(&buffers);
@@ -338,10 +350,31 @@
if (size != 0) {
ALOGV("Got data in buffer %d, size=%d, pts=%lld",
bufIndex, size, ptsUsec);
- CHECK(trackIdx != -1);
+ assert(trackIdx != -1);
+
+ { // scope
+ ATRACE_NAME("orientation");
+ // Check orientation, update if it has changed.
+ //
+ // Polling for changes is inefficient and wrong, but the
+ // useful stuff is hard to get at without a Dalvik VM.
+ err = SurfaceComposerClient::getDisplayInfo(mainDpy,
+ &mainDpyInfo);
+ if (err != NO_ERROR) {
+ ALOGW("getDisplayInfo(main) failed: %d", err);
+ } else if (orientation != mainDpyInfo.orientation) {
+ ALOGD("orientation changed, now %d", mainDpyInfo.orientation);
+ SurfaceComposerClient::openGlobalTransaction();
+ setDisplayProjection(virtualDpy, mainDpyInfo);
+ SurfaceComposerClient::closeGlobalTransaction();
+ orientation = mainDpyInfo.orientation;
+ }
+ }
// If the virtual display isn't providing us with timestamps,
- // use the current time.
+ // use the current time. This isn't great -- we could get
+ // decoded data in clusters -- but we're not expecting
+ // to hit this anyway.
if (ptsUsec == 0) {
ptsUsec = systemTime(SYSTEM_TIME_MONOTONIC) / 1000;
}
@@ -349,12 +382,18 @@
// The MediaMuxer docs are unclear, but it appears that we
// need to pass either the full set of BufferInfo flags, or
// (flags & BUFFER_FLAG_SYNCFRAME).
- err = muxer->writeSampleData(buffers[bufIndex], trackIdx,
- ptsUsec, flags);
- if (err != NO_ERROR) {
- fprintf(stderr, "Failed writing data to muxer (err=%d)\n",
- err);
- return err;
+ //
+ // If this blocks for too long we could drop frames. We may
+ // want to queue these up and do them on a different thread.
+ { // scope
+ ATRACE_NAME("write sample");
+ err = muxer->writeSampleData(buffers[bufIndex], trackIdx,
+ ptsUsec, flags);
+ if (err != NO_ERROR) {
+ fprintf(stderr,
+ "Failed writing data to muxer (err=%d)\n", err);
+ return err;
+ }
}
debugNumFrames++;
}
@@ -366,8 +405,8 @@
}
if ((flags & MediaCodec::BUFFER_FLAG_EOS) != 0) {
// Not expecting EOS from SurfaceFlinger. Go with it.
- ALOGD("Received end-of-stream");
- gStopRequested = false;
+ ALOGI("Received end-of-stream");
+ gStopRequested = true;
}
break;
case -EAGAIN: // INFO_TRY_AGAIN_LATER
@@ -375,7 +414,7 @@
break;
case INFO_FORMAT_CHANGED: // INFO_OUTPUT_FORMAT_CHANGED
{
- // format includes CSD, which we must provide to muxer
+ // Format includes CSD, which we must provide to muxer.
ALOGV("Encoder format changed");
sp<AMessage> newFormat;
encoder->getOutputFormat(&newFormat);
@@ -389,7 +428,7 @@
}
break;
case INFO_OUTPUT_BUFFERS_CHANGED: // INFO_OUTPUT_BUFFERS_CHANGED
- // not expected for an encoder; handle it anyway
+ // Not expected for an encoder; handle it anyway.
ALOGV("Encoder buffers changed");
err = encoder->getOutputBuffers(&buffers);
if (err != NO_ERROR) {
@@ -399,7 +438,7 @@
}
break;
case INVALID_OPERATION:
- fprintf(stderr, "Request for encoder buffer failed\n");
+ ALOGW("dequeueOutputBuffer returned INVALID_OPERATION");
return err;
default:
fprintf(stderr,
@@ -411,8 +450,8 @@
ALOGV("Encoder stopping (req=%d)", gStopRequested);
if (gVerbose) {
printf("Encoder stopping; recorded %u frames in %lld seconds\n",
- debugNumFrames,
- nanoseconds_to_seconds(systemTime(CLOCK_MONOTONIC) - startWhenNsec));
+ debugNumFrames, nanoseconds_to_seconds(
+ systemTime(CLOCK_MONOTONIC) - startWhenNsec));
}
return NO_ERROR;
}
@@ -460,8 +499,8 @@
// Configure and start the encoder.
sp<MediaCodec> encoder;
- sp<IGraphicBufferProducer> bufferProducer;
- err = prepareEncoder(mainDpyInfo.fps, &encoder, &bufferProducer);
+ sp<IGraphicBufferProducer> encoderInputSurface;
+ err = prepareEncoder(mainDpyInfo.fps, &encoder, &encoderInputSurface);
if (err != NO_ERROR && !gSizeSpecified) {
// fallback is defined for landscape; swap if we're in portrait
@@ -474,11 +513,41 @@
gVideoWidth, gVideoHeight, newWidth, newHeight);
gVideoWidth = newWidth;
gVideoHeight = newHeight;
- err = prepareEncoder(mainDpyInfo.fps, &encoder, &bufferProducer);
+ err = prepareEncoder(mainDpyInfo.fps, &encoder,
+ &encoderInputSurface);
}
}
- if (err != NO_ERROR) {
- return err;
+ if (err != NO_ERROR) return err;
+
+ // From here on, we must explicitly release() the encoder before it goes
+ // out of scope, or we will get an assertion failure from stagefright
+ // later on in a different thread.
+
+
+ // Draw the "info" page by rendering a frame with GLES and sending
+ // it directly to the encoder.
+ // TODO: consider displaying this as a regular layer to avoid b/11697754
+ if (gWantInfoScreen) {
+ Overlay::drawInfoPage(encoderInputSurface);
+ }
+
+ // Configure optional overlay.
+ sp<IGraphicBufferProducer> bufferProducer;
+ sp<Overlay> overlay;
+ if (gWantFrameTime) {
+ // Send virtual display frames to an external texture.
+ overlay = new Overlay();
+ err = overlay->start(encoderInputSurface, &bufferProducer);
+ if (err != NO_ERROR) {
+ encoder->release();
+ return err;
+ }
+ if (gVerbose) {
+ printf("Bugreport overlay created\n");
+ }
+ } else {
+ // Use the encoder's input surface as the virtual display surface.
+ bufferProducer = encoderInputSurface;
}
// Configure virtual display.
@@ -486,25 +555,22 @@
err = prepareVirtualDisplay(mainDpyInfo, bufferProducer, &dpy);
if (err != NO_ERROR) {
encoder->release();
- encoder.clear();
-
return err;
}
- // Configure, but do not start, muxer.
+ // Configure muxer. We have to wait for the CSD blob from the encoder
+ // before we can start it.
sp<MediaMuxer> muxer = new MediaMuxer(fileName,
MediaMuxer::OUTPUT_FORMAT_MPEG_4);
if (gRotate) {
- muxer->setOrientationHint(90);
+ muxer->setOrientationHint(90); // TODO: does this do anything?
}
// Main encoder loop.
- err = runEncoder(encoder, muxer);
+ err = runEncoder(encoder, muxer, mainDpy, dpy, mainDpyInfo.orientation);
if (err != NO_ERROR) {
- encoder->release();
- encoder.clear();
-
- return err;
+ fprintf(stderr, "Encoder failed (err=%d)\n", err);
+ // fall through to cleanup
}
if (gVerbose) {
@@ -512,14 +578,18 @@
}
// Shut everything down, starting with the producer side.
- bufferProducer = NULL;
+ encoderInputSurface = NULL;
SurfaceComposerClient::destroyDisplay(dpy);
-
+ if (overlay != NULL) {
+ overlay->stop();
+ }
encoder->stop();
+ // If we don't stop muxer explicitly, i.e. let the destructor run,
+ // it may hang (b/11050628).
muxer->stop();
encoder->release();
- return 0;
+ return err;
}
/*
@@ -528,6 +598,28 @@
* This is optional, but nice to have.
*/
static status_t notifyMediaScanner(const char* fileName) {
+ // need to do allocations before the fork()
+ String8 fileUrl("file://");
+ fileUrl.append(fileName);
+
+ const char* kCommand = "/system/bin/am";
+ const char* const argv[] = {
+ kCommand,
+ "broadcast",
+ "-a",
+ "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
+ "-d",
+ fileUrl.string(),
+ NULL
+ };
+ if (gVerbose) {
+ printf("Executing:");
+ for (int i = 0; argv[i] != NULL; i++) {
+ printf(" %s", argv[i]);
+ }
+ putchar('\n');
+ }
+
pid_t pid = fork();
if (pid < 0) {
int err = errno;
@@ -539,34 +631,14 @@
int status;
pid_t actualPid = TEMP_FAILURE_RETRY(waitpid(pid, &status, 0));
if (actualPid != pid) {
- ALOGW("waitpid() returned %d (errno=%d)", actualPid, errno);
+ ALOGW("waitpid(%d) returned %d (errno=%d)", pid, actualPid, errno);
} else if (status != 0) {
ALOGW("'am broadcast' exited with status=%d", status);
} else {
ALOGV("'am broadcast' exited successfully");
}
} else {
- const char* kCommand = "/system/bin/am";
-
- // child; we're single-threaded, so okay to alloc
- String8 fileUrl("file://");
- fileUrl.append(fileName);
- const char* const argv[] = {
- kCommand,
- "broadcast",
- "-a",
- "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
- "-d",
- fileUrl.string(),
- NULL
- };
- if (gVerbose) {
- printf("Executing:");
- for (int i = 0; argv[i] != NULL; i++) {
- printf(" %s", argv[i]);
- }
- putchar('\n');
- } else {
+ if (!gVerbose) {
// non-verbose, suppress 'am' output
ALOGV("closing stdout/stderr in child");
int fd = open("/dev/null", O_WRONLY);
@@ -611,13 +683,37 @@
}
/*
+ * Accepts a string with a bare number ("4000000") or with a single-character
+ * unit ("4m").
+ *
+ * Returns an error if parsing fails.
+ */
+static status_t parseValueWithUnit(const char* str, uint32_t* pValue) {
+ long value;
+ char* endptr;
+
+ value = strtol(str, &endptr, 10);
+ if (*endptr == '\0') {
+ // bare number
+ *pValue = value;
+ return NO_ERROR;
+ } else if (toupper(*endptr) == 'M' && *(endptr+1) == '\0') {
+ *pValue = value * 1000000; // check for overflow?
+ return NO_ERROR;
+ } else {
+ fprintf(stderr, "Unrecognized value: %s\n", str);
+ return UNKNOWN_ERROR;
+ }
+}
+
+/*
* Dumps usage on stderr.
*/
static void usage() {
fprintf(stderr,
"Usage: screenrecord [options] <filename>\n"
"\n"
- "Records the device's display to a .mp4 file.\n"
+ "Android screenrecord v%d.%d. Records the device's display to a .mp4 file.\n"
"\n"
"Options:\n"
"--size WIDTHxHEIGHT\n"
@@ -625,11 +721,13 @@
" display resolution (if supported), 1280x720 if not. For best results,\n"
" use a size supported by the AVC encoder.\n"
"--bit-rate RATE\n"
- " Set the video bit rate, in megabits per second. Default %dMbps.\n"
+ " Set the video bit rate, in bits per second. Value may be specified as\n"
+ " bits or megabits, e.g. '4000000' is equivalent to '4M'. Default %dMbps.\n"
+ "--bugreport\n"
+ " Add additional information, such as a timestamp overlay, that is helpful\n"
+ " in videos captured to illustrate bugs.\n"
"--time-limit TIME\n"
" Set the maximum recording time, in seconds. Default / maximum is %d.\n"
- "--rotate\n"
- " Rotate the output 90 degrees.\n"
"--verbose\n"
" Display interesting information on stdout.\n"
"--help\n"
@@ -637,7 +735,7 @@
"\n"
"Recording continues until Ctrl-C is hit or the time limit is reached.\n"
"\n",
- gBitRate / 1000000, gTimeLimitSec
+ kVersionMajor, kVersionMinor, gBitRate / 1000000, gTimeLimitSec
);
}
@@ -646,13 +744,16 @@
*/
int main(int argc, char* const argv[]) {
static const struct option longOptions[] = {
- { "help", no_argument, NULL, 'h' },
- { "verbose", no_argument, NULL, 'v' },
- { "size", required_argument, NULL, 's' },
- { "bit-rate", required_argument, NULL, 'b' },
- { "time-limit", required_argument, NULL, 't' },
- { "rotate", no_argument, NULL, 'r' },
- { NULL, 0, NULL, 0 }
+ { "help", no_argument, NULL, 'h' },
+ { "verbose", no_argument, NULL, 'v' },
+ { "size", required_argument, NULL, 's' },
+ { "bit-rate", required_argument, NULL, 'b' },
+ { "time-limit", required_argument, NULL, 't' },
+ { "show-device-info", no_argument, NULL, 'i' },
+ { "show-frame-time", no_argument, NULL, 'f' },
+ { "bugreport", no_argument, NULL, 'u' },
+ { "rotate", no_argument, NULL, 'r' },
+ { NULL, 0, NULL, 0 }
};
while (true) {
@@ -684,7 +785,9 @@
gSizeSpecified = true;
break;
case 'b':
- gBitRate = atoi(optarg);
+ if (parseValueWithUnit(optarg, &gBitRate) != NO_ERROR) {
+ return 2;
+ }
if (gBitRate < kMinBitRate || gBitRate > kMaxBitRate) {
fprintf(stderr,
"Bit rate %dbps outside acceptable range [%d,%d]\n",
@@ -701,7 +804,18 @@
return 2;
}
break;
+ case 'i':
+ gWantInfoScreen = true;
+ break;
+ case 'f':
+ gWantFrameTime = true;
+ break;
+ case 'u':
+ gWantInfoScreen = true;
+ gWantFrameTime = true;
+ break;
case 'r':
+ // experimental feature
gRotate = true;
break;
default:
diff --git a/cmds/screenrecord/screenrecord.h b/cmds/screenrecord/screenrecord.h
new file mode 100644
index 0000000..95e8a68
--- /dev/null
+++ b/cmds/screenrecord/screenrecord.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SCREENRECORD_SCREENRECORD_H
+#define SCREENRECORD_SCREENRECORD_H
+
+#define kVersionMajor 1
+#define kVersionMinor 1
+
+#endif /*SCREENRECORD_SCREENRECORD_H*/
diff --git a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp
index 234aef2..f400732 100644
--- a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp
+++ b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp
@@ -316,6 +316,7 @@
if (-1 < fileDesc) {
if (FwdLockFile_attach(fileDesc) < 0) {
+ close(fileDesc);
return mimeString;
}
const char* pMimeType = FwdLockFile_GetContentType(fileDesc);
diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h
index 052064d..fb47448 100644
--- a/include/media/AudioRecord.h
+++ b/include/media/AudioRecord.h
@@ -60,7 +60,7 @@
size_t frameCount; // number of sample frames corresponding to size;
// on input it is the number of frames available,
// on output is the number of frames actually drained
- // (currently ignored, but will make the primary field in future)
+ // (currently ignored but will make the primary field in future)
size_t size; // input/output in bytes == frameCount * frameSize
// FIXME this is redundant with respect to frameCount,
@@ -446,7 +446,8 @@
// notification callback
uint32_t mNotificationFramesAct; // actual number of frames between each
// notification callback
- bool mRefreshRemaining; // processAudioBuffer() should refresh next 2
+ bool mRefreshRemaining; // processAudioBuffer() should refresh
+ // mRemainingFrames and mRetryOnPartialBuffer
// These are private to processAudioBuffer(), and are not protected by a lock
uint32_t mRemainingFrames; // number of frames to request in obtainBuffer()
diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h
index 225ef76..b96b8a1 100644
--- a/include/media/AudioSystem.h
+++ b/include/media/AudioSystem.h
@@ -155,7 +155,8 @@
class OutputDescriptor {
public:
OutputDescriptor()
- : samplingRate(0), format(AUDIO_FORMAT_DEFAULT), channelMask(0), frameCount(0), latency(0) {}
+ : samplingRate(0), format(AUDIO_FORMAT_DEFAULT), channelMask(0), frameCount(0), latency(0)
+ {}
uint32_t samplingRate;
audio_format_t format;
diff --git a/include/media/AudioTimestamp.h b/include/media/AudioTimestamp.h
index c29c7e5..99e9c3e 100644
--- a/include/media/AudioTimestamp.h
+++ b/include/media/AudioTimestamp.h
@@ -19,6 +19,8 @@
#include <time.h>
+namespace android {
+
class AudioTimestamp {
public:
AudioTimestamp() : mPosition(0) {
@@ -30,4 +32,6 @@
struct timespec mTime; // corresponding CLOCK_MONOTONIC when frame is expected to present
};
+} // namespace
+
#endif // ANDROID_AUDIO_TIMESTAMP_H
diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h
index f379ee5..e163f88 100644
--- a/include/media/AudioTrack.h
+++ b/include/media/AudioTrack.h
@@ -661,12 +661,11 @@
sp<AudioTrackThread> mAudioTrackThread;
float mVolume[2];
float mSendLevel;
- uint32_t mSampleRate;
+ mutable uint32_t mSampleRate; // mutable because getSampleRate() can update it.
size_t mFrameCount; // corresponds to current IAudioTrack
size_t mReqFrameCount; // frame count to request the next time a new
// IAudioTrack is needed
-
// constant after constructor or set()
audio_format_t mFormat; // as requested by client, not forced to 16-bit
audio_stream_type_t mStreamType;
@@ -705,7 +704,8 @@
uint32_t mNotificationFramesAct; // actual number of frames between each
// notification callback,
// at initial source sample rate
- bool mRefreshRemaining; // processAudioBuffer() should refresh next 2
+ bool mRefreshRemaining; // processAudioBuffer() should refresh
+ // mRemainingFrames and mRetryOnPartialBuffer
// These are private to processAudioBuffer(), and are not protected by a lock
uint32_t mRemainingFrames; // number of frames to request in obtainBuffer()
diff --git a/include/media/MediaPlayerInterface.h b/include/media/MediaPlayerInterface.h
index cc244f0..26d8729 100644
--- a/include/media/MediaPlayerInterface.h
+++ b/include/media/MediaPlayerInterface.h
@@ -100,6 +100,7 @@
virtual status_t getFramesWritten(uint32_t *frameswritten) const = 0;
virtual int getSessionId() const = 0;
virtual audio_stream_type_t getAudioStreamType() const = 0;
+ virtual uint32_t getSampleRate() const = 0;
// If no callback is specified, use the "write" API below to submit
// audio data.
diff --git a/include/media/stagefright/ACodec.h b/include/media/stagefright/ACodec.h
index 7395055..f1636e6 100644
--- a/include/media/stagefright/ACodec.h
+++ b/include/media/stagefright/ACodec.h
@@ -249,6 +249,8 @@
int32_t numChannels, int32_t sampleRate, int32_t bitRate,
int32_t aacProfile, bool isADTS);
+ status_t setupAC3Codec(bool encoder, int32_t numChannels, int32_t sampleRate);
+
status_t selectAudioPortFormat(
OMX_U32 portIndex, OMX_AUDIO_CODINGTYPE desiredFormat);
diff --git a/include/media/stagefright/AudioPlayer.h b/include/media/stagefright/AudioPlayer.h
index 912a43c..14afb85 100644
--- a/include/media/stagefright/AudioPlayer.h
+++ b/include/media/stagefright/AudioPlayer.h
@@ -129,7 +129,7 @@
void reset();
uint32_t getNumFramesPendingPlayout() const;
- int64_t getOutputPlayPositionUs_l() const;
+ int64_t getOutputPlayPositionUs_l();
bool allowDeepBuffering() const { return (mCreateFlags & ALLOW_DEEP_BUFFERING) != 0; }
bool useOffload() const { return (mCreateFlags & USE_OFFLOAD) != 0; }
diff --git a/include/media/stagefright/MediaDefs.h b/include/media/stagefright/MediaDefs.h
index 85693d4..cf5beda 100644
--- a/include/media/stagefright/MediaDefs.h
+++ b/include/media/stagefright/MediaDefs.h
@@ -44,6 +44,7 @@
extern const char *MEDIA_MIMETYPE_AUDIO_FLAC;
extern const char *MEDIA_MIMETYPE_AUDIO_AAC_ADTS;
extern const char *MEDIA_MIMETYPE_AUDIO_MSGSM;
+extern const char *MEDIA_MIMETYPE_AUDIO_AC3;
extern const char *MEDIA_MIMETYPE_CONTAINER_MPEG4;
extern const char *MEDIA_MIMETYPE_CONTAINER_WAV;
diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h
index daaf20f..5121c17 100644
--- a/include/media/stagefright/OMXCodec.h
+++ b/include/media/stagefright/OMXCodec.h
@@ -248,6 +248,8 @@
int32_t numChannels, int32_t sampleRate, int32_t bitRate,
int32_t aacProfile, bool isADTS);
+ status_t setAC3Format(int32_t numChannels, int32_t sampleRate);
+
void setG711Format(int32_t numChannels);
status_t setVideoPortFormatType(
diff --git a/include/media/stagefright/SkipCutBuffer.h b/include/media/stagefright/SkipCutBuffer.h
index 2653b53..098aa69 100644
--- a/include/media/stagefright/SkipCutBuffer.h
+++ b/include/media/stagefright/SkipCutBuffer.h
@@ -47,6 +47,7 @@
private:
void write(const char *src, size_t num);
size_t read(char *dst, size_t num);
+ int32_t mSkip;
int32_t mFrontPadding;
int32_t mBackPadding;
int32_t mWriteHead;
diff --git a/include/private/media/AudioTrackShared.h b/include/private/media/AudioTrackShared.h
index 7fd9379..85862a8 100644
--- a/include/private/media/AudioTrackShared.h
+++ b/include/private/media/AudioTrackShared.h
@@ -48,7 +48,7 @@
#define CBLK_STREAM_END_DONE 0x400 // set by server on render completion, cleared by client
//EL_FIXME 20 seconds may not be enough and must be reconciled with new obtainBuffer implementation
-#define MAX_RUN_OFFLOADED_TIMEOUT_MS 20000 //assuming upto a maximum of 20 seconds of offloaded
+#define MAX_RUN_OFFLOADED_TIMEOUT_MS 20000 // assuming up to a maximum of 20 seconds of offloaded
struct AudioTrackSharedStreaming {
// similar to NBAIO MonoPipe
diff --git a/libvideoeditor/lvpp/VideoEditorPlayer.cpp b/libvideoeditor/lvpp/VideoEditorPlayer.cpp
index 5aeba4f..8d656c4 100755
--- a/libvideoeditor/lvpp/VideoEditorPlayer.cpp
+++ b/libvideoeditor/lvpp/VideoEditorPlayer.cpp
@@ -585,4 +585,11 @@
return mSessionId;
}
+uint32_t VideoEditorPlayer::VeAudioOutput::getSampleRate() const {
+ if (mMsecsPerFrame == 0) {
+ return 0;
+ }
+ return (uint32_t)(1.e3 / mMsecsPerFrame);
+}
+
} // namespace android
diff --git a/libvideoeditor/lvpp/VideoEditorPlayer.h b/libvideoeditor/lvpp/VideoEditorPlayer.h
index 5862c08..b8c1254 100755
--- a/libvideoeditor/lvpp/VideoEditorPlayer.h
+++ b/libvideoeditor/lvpp/VideoEditorPlayer.h
@@ -48,6 +48,7 @@
virtual status_t getPosition(uint32_t *position) const;
virtual status_t getFramesWritten(uint32_t*) const;
virtual int getSessionId() const;
+ virtual uint32_t getSampleRate() const;
virtual status_t open(
uint32_t sampleRate, int channelCount, audio_channel_mask_t channelMask,
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index b8a89a0..4b93714 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -250,9 +250,6 @@
if (format == AUDIO_FORMAT_DEFAULT) {
format = AUDIO_FORMAT_PCM_16_BIT;
}
- if (channelMask == 0) {
- channelMask = AUDIO_CHANNEL_OUT_STEREO;
- }
// validate parameters
if (!audio_is_valid_format(format)) {
@@ -260,6 +257,11 @@
return BAD_VALUE;
}
+ if (!audio_is_output_channel(channelMask)) {
+ ALOGE("Invalid channel mask %#x", channelMask);
+ return BAD_VALUE;
+ }
+
// AudioFlinger does not currently support 8-bit data in shared memory
if (format == AUDIO_FORMAT_PCM_8_BIT && sharedBuffer != 0) {
ALOGE("8-bit data in shared memory is not supported");
@@ -282,10 +284,6 @@
flags = (audio_output_flags_t)(flags &~AUDIO_OUTPUT_FLAG_DEEP_BUFFER);
}
- if (!audio_is_output_channel(channelMask)) {
- ALOGE("Invalid channel mask %#x", channelMask);
- return BAD_VALUE;
- }
mChannelMask = channelMask;
uint32_t channelCount = popcount(channelMask);
mChannelCount = channelCount;
@@ -445,8 +443,7 @@
void AudioTrack::stop()
{
AutoMutex lock(mLock);
- // FIXME pause then stop should not be a nop
- if (mState != STATE_ACTIVE) {
+ if (mState != STATE_ACTIVE && mState != STATE_PAUSED) {
return;
}
@@ -603,6 +600,19 @@
}
AutoMutex lock(mLock);
+
+ // sample rate can be updated during playback by the offloaded decoder so we need to
+ // query the HAL and update if needed.
+// FIXME use Proxy return channel to update the rate from server and avoid polling here
+ if (isOffloaded()) {
+ if (mOutput != 0) {
+ uint32_t sampleRate = 0;
+ status_t status = AudioSystem::getSamplingRate(mOutput, mStreamType, &sampleRate);
+ if (status == NO_ERROR) {
+ mSampleRate = sampleRate;
+ }
+ }
+ }
return mSampleRate;
}
diff --git a/media/libmedia/IAudioFlinger.cpp b/media/libmedia/IAudioFlinger.cpp
index acfaea0..9df10f0 100644
--- a/media/libmedia/IAudioFlinger.cpp
+++ b/media/libmedia/IAudioFlinger.cpp
@@ -139,7 +139,7 @@
lStatus = reply.readInt32();
track = interface_cast<IAudioTrack>(reply.readStrongBinder());
}
- if (status) {
+ if (status != NULL) {
*status = lStatus;
}
return track;
@@ -198,7 +198,7 @@
}
}
}
- if (status) {
+ if (status != NULL) {
*status = lStatus;
}
return record;
@@ -415,15 +415,25 @@
audio_io_handle_t output = (audio_io_handle_t) reply.readInt32();
ALOGV("openOutput() returned output, %d", output);
devices = (audio_devices_t)reply.readInt32();
- if (pDevices != NULL) *pDevices = devices;
+ if (pDevices != NULL) {
+ *pDevices = devices;
+ }
samplingRate = reply.readInt32();
- if (pSamplingRate != NULL) *pSamplingRate = samplingRate;
+ if (pSamplingRate != NULL) {
+ *pSamplingRate = samplingRate;
+ }
format = (audio_format_t) reply.readInt32();
- if (pFormat != NULL) *pFormat = format;
+ if (pFormat != NULL) {
+ *pFormat = format;
+ }
channelMask = (audio_channel_mask_t)reply.readInt32();
- if (pChannelMask != NULL) *pChannelMask = channelMask;
+ if (pChannelMask != NULL) {
+ *pChannelMask = channelMask;
+ }
latency = reply.readInt32();
- if (pLatencyMs != NULL) *pLatencyMs = latency;
+ if (pLatencyMs != NULL) {
+ *pLatencyMs = latency;
+ }
return output;
}
@@ -487,13 +497,21 @@
remote()->transact(OPEN_INPUT, data, &reply);
audio_io_handle_t input = (audio_io_handle_t) reply.readInt32();
devices = (audio_devices_t)reply.readInt32();
- if (pDevices != NULL) *pDevices = devices;
+ if (pDevices != NULL) {
+ *pDevices = devices;
+ }
samplingRate = reply.readInt32();
- if (pSamplingRate != NULL) *pSamplingRate = samplingRate;
+ if (pSamplingRate != NULL) {
+ *pSamplingRate = samplingRate;
+ }
format = (audio_format_t) reply.readInt32();
- if (pFormat != NULL) *pFormat = format;
+ if (pFormat != NULL) {
+ *pFormat = format;
+ }
channelMask = (audio_channel_mask_t)reply.readInt32();
- if (pChannelMask != NULL) *pChannelMask = channelMask;
+ if (pChannelMask != NULL) {
+ *pChannelMask = channelMask;
+ }
return input;
}
@@ -535,11 +553,11 @@
status_t status = reply.readInt32();
if (status == NO_ERROR) {
uint32_t tmp = reply.readInt32();
- if (halFrames) {
+ if (halFrames != NULL) {
*halFrames = tmp;
}
tmp = reply.readInt32();
- if (dspFrames) {
+ if (dspFrames != NULL) {
*dspFrames = tmp;
}
}
@@ -657,7 +675,7 @@
if (pDesc == NULL) {
return effect;
- if (status) {
+ if (status != NULL) {
*status = BAD_VALUE;
}
}
@@ -675,7 +693,7 @@
} else {
lStatus = reply.readInt32();
int tmp = reply.readInt32();
- if (id) {
+ if (id != NULL) {
*id = tmp;
}
tmp = reply.readInt32();
@@ -685,7 +703,7 @@
effect = interface_cast<IEffect>(reply.readStrongBinder());
reply.read(pDesc, sizeof(effect_descriptor_t));
}
- if (status) {
+ if (status != NULL) {
*status = lStatus;
}
diff --git a/media/libmedia/IAudioRecord.cpp b/media/libmedia/IAudioRecord.cpp
index 4a7de65..9866d70 100644
--- a/media/libmedia/IAudioRecord.cpp
+++ b/media/libmedia/IAudioRecord.cpp
@@ -50,6 +50,9 @@
status_t status = remote()->transact(GET_CBLK, data, &reply);
if (status == NO_ERROR) {
cblk = interface_cast<IMemory>(reply.readStrongBinder());
+ if (cblk != 0 && cblk->pointer() == NULL) {
+ cblk.clear();
+ }
}
return cblk;
}
diff --git a/media/libmedia/IAudioTrack.cpp b/media/libmedia/IAudioTrack.cpp
index 3cd9cfd..ffc21fc 100644
--- a/media/libmedia/IAudioTrack.cpp
+++ b/media/libmedia/IAudioTrack.cpp
@@ -60,6 +60,9 @@
status_t status = remote()->transact(GET_CBLK, data, &reply);
if (status == NO_ERROR) {
cblk = interface_cast<IMemory>(reply.readStrongBinder());
+ if (cblk != 0 && cblk->pointer() == NULL) {
+ cblk.clear();
+ }
}
return cblk;
}
@@ -122,6 +125,9 @@
status = reply.readInt32();
if (status == NO_ERROR) {
*buffer = interface_cast<IMemory>(reply.readStrongBinder());
+ if (*buffer != 0 && (*buffer)->pointer() == NULL) {
+ (*buffer).clear();
+ }
}
}
return status;
diff --git a/media/libmedia/IEffect.cpp b/media/libmedia/IEffect.cpp
index a303a8f..b94012a 100644
--- a/media/libmedia/IEffect.cpp
+++ b/media/libmedia/IEffect.cpp
@@ -117,6 +117,9 @@
status_t status = remote()->transact(GET_CBLK, data, &reply);
if (status == NO_ERROR) {
cblk = interface_cast<IMemory>(reply.readStrongBinder());
+ if (cblk != 0 && cblk->pointer() == NULL) {
+ cblk.clear();
+ }
}
return cblk;
}
diff --git a/media/libmedia/SoundPool.cpp b/media/libmedia/SoundPool.cpp
index 22e9fad..b420c95 100644
--- a/media/libmedia/SoundPool.cpp
+++ b/media/libmedia/SoundPool.cpp
@@ -600,16 +600,15 @@
// wrong audio audio buffer size (mAudioBufferSize)
unsigned long toggle = mToggle ^ 1;
void *userData = (void *)((unsigned long)this | toggle);
- uint32_t channels = (numChannels == 2) ?
- AUDIO_CHANNEL_OUT_STEREO : AUDIO_CHANNEL_OUT_MONO;
+ audio_channel_mask_t channelMask = audio_channel_out_mask_from_count(numChannels);
// do not create a new audio track if current track is compatible with sample parameters
#ifdef USE_SHARED_MEM_BUFFER
newTrack = new AudioTrack(streamType, sampleRate, sample->format(),
- channels, sample->getIMemory(), AUDIO_OUTPUT_FLAG_FAST, callback, userData);
+ channelMask, sample->getIMemory(), AUDIO_OUTPUT_FLAG_FAST, callback, userData);
#else
newTrack = new AudioTrack(streamType, sampleRate, sample->format(),
- channels, frameCount, AUDIO_OUTPUT_FLAG_FAST, callback, userData,
+ channelMask, frameCount, AUDIO_OUTPUT_FLAG_FAST, callback, userData,
bufferFrames);
#endif
oldTrack = mAudioTrack;
diff --git a/media/libmediaplayerservice/HDCP.cpp b/media/libmediaplayerservice/HDCP.cpp
index c2ac1a3..afe3936 100644
--- a/media/libmediaplayerservice/HDCP.cpp
+++ b/media/libmediaplayerservice/HDCP.cpp
@@ -107,11 +107,7 @@
return NO_INIT;
}
- // TO-DO:
- // Only support HDCP_CAPS_ENCRYPT (byte-array to byte-array) for now.
- // use mHDCPModule->getCaps() when the HDCP libraries get updated.
- //return mHDCPModule->getCaps();
- return HDCPModule::HDCP_CAPS_ENCRYPT;
+ return mHDCPModule->getCaps();
}
status_t HDCP::encrypt(
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index cd052e6..9ac9105 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1813,6 +1813,12 @@
return mSessionId;
}
+uint32_t MediaPlayerService::AudioOutput::getSampleRate() const
+{
+ if (mTrack == 0) return 0;
+ return mTrack->getSampleRate();
+}
+
#undef LOG_TAG
#define LOG_TAG "AudioCache"
MediaPlayerService::AudioCache::AudioCache(const sp<IMemoryHeap>& heap) :
@@ -2015,6 +2021,14 @@
return 0;
}
+uint32_t MediaPlayerService::AudioCache::getSampleRate() const
+{
+ if (mMsecsPerFrame == 0) {
+ return 0;
+ }
+ return (uint32_t)(1.e3 / mMsecsPerFrame);
+}
+
void MediaPlayerService::addBatteryData(uint32_t params)
{
Mutex::Autolock lock(mLock);
diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h
index a486cb5..9c084e1 100644
--- a/media/libmediaplayerservice/MediaPlayerService.h
+++ b/media/libmediaplayerservice/MediaPlayerService.h
@@ -86,6 +86,7 @@
virtual status_t getPosition(uint32_t *position) const;
virtual status_t getFramesWritten(uint32_t *frameswritten) const;
virtual int getSessionId() const;
+ virtual uint32_t getSampleRate() const;
virtual status_t open(
uint32_t sampleRate, int channelCount, audio_channel_mask_t channelMask,
@@ -195,6 +196,7 @@
virtual status_t getPosition(uint32_t *position) const;
virtual status_t getFramesWritten(uint32_t *frameswritten) const;
virtual int getSessionId() const;
+ virtual uint32_t getSampleRate() const;
virtual status_t open(
uint32_t sampleRate, int channelCount, audio_channel_mask_t channelMask,
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp
index f9d9020..78dad19 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.cpp
+++ b/media/libmediaplayerservice/StagefrightRecorder.cpp
@@ -973,7 +973,7 @@
return err;
}
- err = setupVideoEncoder(mediaSource, mVideoBitRate, &source);
+ err = setupVideoEncoder(mediaSource, &source);
if (err != OK) {
return err;
}
@@ -1017,7 +1017,7 @@
}
sp<MediaSource> encoder;
- err = setupVideoEncoder(mediaSource, mVideoBitRate, &encoder);
+ err = setupVideoEncoder(mediaSource, &encoder);
if (err != OK) {
return err;
@@ -1383,12 +1383,11 @@
status_t StagefrightRecorder::setupVideoEncoder(
sp<MediaSource> cameraSource,
- int32_t videoBitRate,
sp<MediaSource> *source) {
source->clear();
sp<MetaData> enc_meta = new MetaData;
- enc_meta->setInt32(kKeyBitRate, videoBitRate);
+ enc_meta->setInt32(kKeyBitRate, mVideoBitRate);
enc_meta->setInt32(kKeyFrameRate, mFrameRate);
switch (mVideoEncoder) {
@@ -1495,16 +1494,11 @@
return OK;
}
-status_t StagefrightRecorder::setupMPEG4Recording(
- int outputFd,
- int32_t videoWidth, int32_t videoHeight,
- int32_t videoBitRate,
- int32_t *totalBitRate,
- sp<MediaWriter> *mediaWriter) {
- mediaWriter->clear();
+status_t StagefrightRecorder::setupMPEG4Recording(int32_t *totalBitRate) {
+ mWriter.clear();
*totalBitRate = 0;
status_t err = OK;
- sp<MediaWriter> writer = new MPEG4Writer(outputFd);
+ sp<MediaWriter> writer = new MPEG4Writer(mOutputFd);
if (mVideoSource < VIDEO_SOURCE_LIST_END) {
@@ -1515,13 +1509,13 @@
}
sp<MediaSource> encoder;
- err = setupVideoEncoder(mediaSource, videoBitRate, &encoder);
+ err = setupVideoEncoder(mediaSource, &encoder);
if (err != OK) {
return err;
}
writer->addSource(encoder);
- *totalBitRate += videoBitRate;
+ *totalBitRate += mVideoBitRate;
}
// Audio source is added at the end if it exists.
@@ -1555,7 +1549,7 @@
}
writer->setListener(mListener);
- *mediaWriter = writer;
+ mWriter = writer;
return OK;
}
@@ -1578,9 +1572,7 @@
status_t StagefrightRecorder::startMPEG4Recording() {
int32_t totalBitRate;
- status_t err = setupMPEG4Recording(
- mOutputFd, mVideoWidth, mVideoHeight,
- mVideoBitRate, &totalBitRate, &mWriter);
+ status_t err = setupMPEG4Recording(&totalBitRate);
if (err != OK) {
return err;
}
diff --git a/media/libmediaplayerservice/StagefrightRecorder.h b/media/libmediaplayerservice/StagefrightRecorder.h
index 31f09e0..bc43488 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.h
+++ b/media/libmediaplayerservice/StagefrightRecorder.h
@@ -124,12 +124,7 @@
// frame buffers will be queued and dequeued
sp<SurfaceMediaSource> mSurfaceMediaSource;
- status_t setupMPEG4Recording(
- int outputFd,
- int32_t videoWidth, int32_t videoHeight,
- int32_t videoBitRate,
- int32_t *totalBitRate,
- sp<MediaWriter> *mediaWriter);
+ status_t setupMPEG4Recording(int32_t *totalBitRate);
void setupMPEG4MetaData(int64_t startTimeUs, int32_t totalBitRate,
sp<MetaData> *meta);
status_t startMPEG4Recording();
@@ -151,10 +146,7 @@
status_t setupSurfaceMediaSource();
status_t setupAudioEncoder(const sp<MediaWriter>& writer);
- status_t setupVideoEncoder(
- sp<MediaSource> cameraSource,
- int32_t videoBitRate,
- sp<MediaSource> *source);
+ status_t setupVideoEncoder(sp<MediaSource> cameraSource, sp<MediaSource> *source);
// Encoding parameter handling utilities
status_t setParameter(const String8 &key, const String8 &value);
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 5d5220f..eb274a8 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -35,7 +35,9 @@
#include <media/hardware/HardwareAPI.h>
+#include <OMX_AudioExt.h>
#include <OMX_Component.h>
+#include <OMX_IndexExt.h>
#include "include/avc_utils.h"
@@ -977,6 +979,10 @@
"audio_decoder.flac", "audio_encoder.flac" },
{ MEDIA_MIMETYPE_AUDIO_MSGSM,
"audio_decoder.gsm", "audio_encoder.gsm" },
+ { MEDIA_MIMETYPE_VIDEO_MPEG2,
+ "video_decoder.mpeg2", "video_encoder.mpeg2" },
+ { MEDIA_MIMETYPE_AUDIO_AC3,
+ "audio_decoder.ac3", "audio_encoder.ac3" },
};
static const size_t kNumMimeToRole =
@@ -1268,6 +1274,15 @@
} else {
err = setupRawAudioFormat(kPortIndexInput, sampleRate, numChannels);
}
+ } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AC3)) {
+ int32_t numChannels;
+ int32_t sampleRate;
+ if (!msg->findInt32("channel-count", &numChannels)
+ || !msg->findInt32("sample-rate", &sampleRate)) {
+ err = INVALID_OPERATION;
+ } else {
+ err = setupAC3Codec(encoder, numChannels, sampleRate);
+ }
}
if (err != OK) {
@@ -1464,6 +1479,44 @@
mNode, OMX_IndexParamAudioAac, &profile, sizeof(profile));
}
+status_t ACodec::setupAC3Codec(
+ bool encoder, int32_t numChannels, int32_t sampleRate) {
+ status_t err = setupRawAudioFormat(
+ encoder ? kPortIndexInput : kPortIndexOutput, sampleRate, numChannels);
+
+ if (err != OK) {
+ return err;
+ }
+
+ if (encoder) {
+ ALOGW("AC3 encoding is not supported.");
+ return INVALID_OPERATION;
+ }
+
+ OMX_AUDIO_PARAM_ANDROID_AC3TYPE def;
+ InitOMXParams(&def);
+ def.nPortIndex = kPortIndexInput;
+
+ err = mOMX->getParameter(
+ mNode,
+ (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+ &def,
+ sizeof(def));
+
+ if (err != OK) {
+ return err;
+ }
+
+ def.nChannels = numChannels;
+ def.nSampleRate = sampleRate;
+
+ return mOMX->setParameter(
+ mNode,
+ (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+ &def,
+ sizeof(def));
+}
+
static OMX_AUDIO_AMRBANDMODETYPE pickModeFromBitRate(
bool isAMRWB, int32_t bps) {
if (isAMRWB) {
@@ -2558,7 +2611,7 @@
{
OMX_AUDIO_PORTDEFINITIONTYPE *audioDef = &def.format.audio;
- switch (audioDef->eEncoding) {
+ switch ((int)audioDef->eEncoding) {
case OMX_AUDIO_CodingPCM:
{
OMX_AUDIO_PARAM_PCMMODETYPE params;
@@ -2664,6 +2717,24 @@
break;
}
+ case OMX_AUDIO_CodingAndroidAC3:
+ {
+ OMX_AUDIO_PARAM_ANDROID_AC3TYPE params;
+ InitOMXParams(¶ms);
+ params.nPortIndex = kPortIndexOutput;
+
+ CHECK_EQ((status_t)OK, mOMX->getParameter(
+ mNode,
+ (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+ ¶ms,
+ sizeof(params)));
+
+ notify->setString("mime", MEDIA_MIMETYPE_AUDIO_AC3);
+ notify->setInt32("channel-count", params.nChannels);
+ notify->setInt32("sample-rate", params.nSampleRate);
+ break;
+ }
+
default:
TRESPASS();
}
@@ -3342,7 +3413,7 @@
sp<AMessage> reply =
new AMessage(kWhatOutputBufferDrained, mCodec->id());
- if (!mCodec->mSentFormat) {
+ if (!mCodec->mSentFormat && rangeLength > 0) {
mCodec->sendFormatChange(reply);
}
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp
index a8a8786..05ee34e 100644
--- a/media/libstagefright/AudioPlayer.cpp
+++ b/media/libstagefright/AudioPlayer.cpp
@@ -721,16 +721,27 @@
return result + diffUs;
}
-int64_t AudioPlayer::getOutputPlayPositionUs_l() const
+int64_t AudioPlayer::getOutputPlayPositionUs_l()
{
uint32_t playedSamples = 0;
+ uint32_t sampleRate;
if (mAudioSink != NULL) {
mAudioSink->getPosition(&playedSamples);
+ sampleRate = mAudioSink->getSampleRate();
} else {
mAudioTrack->getPosition(&playedSamples);
+ sampleRate = mAudioTrack->getSampleRate();
+ }
+ if (sampleRate != 0) {
+ mSampleRate = sampleRate;
}
- const int64_t playedUs = (static_cast<int64_t>(playedSamples) * 1000000 ) / mSampleRate;
+ int64_t playedUs;
+ if (mSampleRate != 0) {
+ playedUs = (static_cast<int64_t>(playedSamples) * 1000000 ) / mSampleRate;
+ } else {
+ playedUs = 0;
+ }
// HAL position is relative to the first buffer we sent at mStartPosUs
const int64_t renderedDuration = mStartPosUs + playedUs;
diff --git a/media/libstagefright/MediaDefs.cpp b/media/libstagefright/MediaDefs.cpp
index b5d4e44..340cba7 100644
--- a/media/libstagefright/MediaDefs.cpp
+++ b/media/libstagefright/MediaDefs.cpp
@@ -42,6 +42,7 @@
const char *MEDIA_MIMETYPE_AUDIO_FLAC = "audio/flac";
const char *MEDIA_MIMETYPE_AUDIO_AAC_ADTS = "audio/aac-adts";
const char *MEDIA_MIMETYPE_AUDIO_MSGSM = "audio/gsm";
+const char *MEDIA_MIMETYPE_AUDIO_AC3 = "audio/ac3";
const char *MEDIA_MIMETYPE_CONTAINER_MPEG4 = "video/mp4";
const char *MEDIA_MIMETYPE_CONTAINER_WAV = "audio/x-wav";
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 43736ad..625922f 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -40,7 +40,9 @@
#include <utils/Vector.h>
#include <OMX_Audio.h>
+#include <OMX_AudioExt.h>
#include <OMX_Component.h>
+#include <OMX_IndexExt.h>
#include "include/avc_utils.h"
@@ -528,6 +530,17 @@
sampleRate,
numChannels);
}
+ } else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_AC3, mMIME)) {
+ int32_t numChannels;
+ int32_t sampleRate;
+ CHECK(meta->findInt32(kKeyChannelCount, &numChannels));
+ CHECK(meta->findInt32(kKeySampleRate, &sampleRate));
+
+ status_t err = setAC3Format(numChannels, sampleRate);
+ if (err != OK) {
+ CODEC_LOGE("setAC3Format() failed (err = %d)", err);
+ return err;
+ }
} else if (!strcasecmp(MEDIA_MIMETYPE_AUDIO_G711_ALAW, mMIME)
|| !strcasecmp(MEDIA_MIMETYPE_AUDIO_G711_MLAW, mMIME)) {
// These are PCM-like formats with a fixed sample rate but
@@ -1394,6 +1407,10 @@
"audio_decoder.flac", "audio_encoder.flac" },
{ MEDIA_MIMETYPE_AUDIO_MSGSM,
"audio_decoder.gsm", "audio_encoder.gsm" },
+ { MEDIA_MIMETYPE_VIDEO_MPEG2,
+ "video_decoder.mpeg2", "video_encoder.mpeg2" },
+ { MEDIA_MIMETYPE_AUDIO_AC3,
+ "audio_decoder.ac3", "audio_encoder.ac3" },
};
static const size_t kNumMimeToRole =
@@ -3489,6 +3506,31 @@
return OK;
}
+status_t OMXCodec::setAC3Format(int32_t numChannels, int32_t sampleRate) {
+ OMX_AUDIO_PARAM_ANDROID_AC3TYPE def;
+ InitOMXParams(&def);
+ def.nPortIndex = kPortIndexInput;
+
+ status_t err = mOMX->getParameter(
+ mNode,
+ (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+ &def,
+ sizeof(def));
+
+ if (err != OK) {
+ return err;
+ }
+
+ def.nChannels = numChannels;
+ def.nSampleRate = sampleRate;
+
+ return mOMX->setParameter(
+ mNode,
+ (OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAc3,
+ &def,
+ sizeof(def));
+}
+
void OMXCodec::setG711Format(int32_t numChannels) {
CHECK(!mIsEncoder);
setRawAudioFormat(kPortIndexInput, 8000, numChannels);
@@ -4422,6 +4464,17 @@
mOutputFormat->setInt32(kKeyChannelCount, numChannels);
mOutputFormat->setInt32(kKeySampleRate, sampleRate);
mOutputFormat->setInt32(kKeyBitRate, bitRate);
+ } else if (audio_def->eEncoding ==
+ (OMX_AUDIO_CODINGTYPE)OMX_AUDIO_CodingAndroidAC3) {
+ mOutputFormat->setCString(
+ kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_AC3);
+ int32_t numChannels, sampleRate, bitRate;
+ inputFormat->findInt32(kKeyChannelCount, &numChannels);
+ inputFormat->findInt32(kKeySampleRate, &sampleRate);
+ inputFormat->findInt32(kKeyBitRate, &bitRate);
+ mOutputFormat->setInt32(kKeyChannelCount, numChannels);
+ mOutputFormat->setInt32(kKeySampleRate, sampleRate);
+ mOutputFormat->setInt32(kKeyBitRate, bitRate);
} else {
CHECK(!"Should not be here. Unknown audio encoding.");
}
diff --git a/media/libstagefright/SkipCutBuffer.cpp b/media/libstagefright/SkipCutBuffer.cpp
index 773854f..e2e6d79 100644
--- a/media/libstagefright/SkipCutBuffer.cpp
+++ b/media/libstagefright/SkipCutBuffer.cpp
@@ -25,7 +25,7 @@
namespace android {
SkipCutBuffer::SkipCutBuffer(int32_t skip, int32_t cut) {
- mFrontPadding = skip;
+ mFrontPadding = mSkip = skip;
mBackPadding = cut;
mWriteHead = 0;
mReadHead = 0;
@@ -94,6 +94,7 @@
void SkipCutBuffer::clear() {
mWriteHead = mReadHead = 0;
+ mFrontPadding = mSkip;
}
void SkipCutBuffer::write(const char *src, size_t num) {
diff --git a/media/libstagefright/codecs/aacdec/SoftAAC2.cpp b/media/libstagefright/codecs/aacdec/SoftAAC2.cpp
index 1b20cbb..f842e27 100644
--- a/media/libstagefright/codecs/aacdec/SoftAAC2.cpp
+++ b/media/libstagefright/codecs/aacdec/SoftAAC2.cpp
@@ -58,6 +58,8 @@
mIsADTS(false),
mInputBufferCount(0),
mSignalledError(false),
+ mSawInputEos(false),
+ mSignalledOutputEos(false),
mAnchorTimeUs(0),
mNumSamplesOutput(0),
mOutputPortSettingsChange(NONE) {
@@ -350,115 +352,83 @@
return;
}
- while (!inQueue.empty() && !outQueue.empty()) {
- BufferInfo *inInfo = *inQueue.begin();
- OMX_BUFFERHEADERTYPE *inHeader = inInfo->mHeader;
+ while ((!inQueue.empty() || (mSawInputEos && !mSignalledOutputEos)) && !outQueue.empty()) {
+ BufferInfo *inInfo = NULL;
+ OMX_BUFFERHEADERTYPE *inHeader = NULL;
+ if (!inQueue.empty()) {
+ inInfo = *inQueue.begin();
+ inHeader = inInfo->mHeader;
+ }
BufferInfo *outInfo = *outQueue.begin();
OMX_BUFFERHEADERTYPE *outHeader = outInfo->mHeader;
+ outHeader->nFlags = 0;
- if (inHeader->nFlags & OMX_BUFFERFLAG_EOS) {
- inQueue.erase(inQueue.begin());
- inInfo->mOwnedByUs = false;
- notifyEmptyBufferDone(inHeader);
+ if (inHeader) {
+ if (inHeader->nFlags & OMX_BUFFERFLAG_EOS) {
+ mSawInputEos = true;
+ }
- if (mDecoderHasData) {
- // flush out the decoder's delayed data by calling DecodeFrame
- // one more time, with the AACDEC_FLUSH flag set
- INT_PCM *outBuffer =
- reinterpret_cast<INT_PCM *>(
- outHeader->pBuffer + outHeader->nOffset);
+ if (inHeader->nOffset == 0 && inHeader->nFilledLen) {
+ mAnchorTimeUs = inHeader->nTimeStamp;
+ mNumSamplesOutput = 0;
+ }
- AAC_DECODER_ERROR decoderErr =
- aacDecoder_DecodeFrame(mAACDecoder,
- outBuffer,
- outHeader->nAllocLen,
- AACDEC_FLUSH);
- mDecoderHasData = false;
+ if (mIsADTS) {
+ size_t adtsHeaderSize = 0;
+ // skip 30 bits, aac_frame_length follows.
+ // ssssssss ssssiiip ppffffPc ccohCCll llllllll lll?????
- if (decoderErr != AAC_DEC_OK) {
+ const uint8_t *adtsHeader = inHeader->pBuffer + inHeader->nOffset;
+
+ bool signalError = false;
+ if (inHeader->nFilledLen < 7) {
+ ALOGE("Audio data too short to contain even the ADTS header. "
+ "Got %ld bytes.", inHeader->nFilledLen);
+ hexdump(adtsHeader, inHeader->nFilledLen);
+ signalError = true;
+ } else {
+ bool protectionAbsent = (adtsHeader[1] & 1);
+
+ unsigned aac_frame_length =
+ ((adtsHeader[3] & 3) << 11)
+ | (adtsHeader[4] << 3)
+ | (adtsHeader[5] >> 5);
+
+ if (inHeader->nFilledLen < aac_frame_length) {
+ ALOGE("Not enough audio data for the complete frame. "
+ "Got %ld bytes, frame size according to the ADTS "
+ "header is %u bytes.",
+ inHeader->nFilledLen, aac_frame_length);
+ hexdump(adtsHeader, inHeader->nFilledLen);
+ signalError = true;
+ } else {
+ adtsHeaderSize = (protectionAbsent ? 7 : 9);
+
+ inBuffer[0] = (UCHAR *)adtsHeader + adtsHeaderSize;
+ inBufferLength[0] = aac_frame_length - adtsHeaderSize;
+
+ inHeader->nOffset += adtsHeaderSize;
+ inHeader->nFilledLen -= adtsHeaderSize;
+ }
+ }
+
+ if (signalError) {
mSignalledError = true;
- notify(OMX_EventError, OMX_ErrorUndefined, decoderErr,
+ notify(OMX_EventError,
+ OMX_ErrorStreamCorrupt,
+ ERROR_MALFORMED,
NULL);
return;
}
-
- outHeader->nFilledLen =
- mStreamInfo->frameSize
- * sizeof(int16_t)
- * mStreamInfo->numChannels;
} else {
- // we never submitted any data to the decoder, so there's nothing to flush out
- outHeader->nFilledLen = 0;
- }
-
- outHeader->nFlags = OMX_BUFFERFLAG_EOS;
-
- outQueue.erase(outQueue.begin());
- outInfo->mOwnedByUs = false;
- notifyFillBufferDone(outHeader);
- return;
- }
-
- if (inHeader->nOffset == 0) {
- mAnchorTimeUs = inHeader->nTimeStamp;
- mNumSamplesOutput = 0;
- }
-
- size_t adtsHeaderSize = 0;
- if (mIsADTS) {
- // skip 30 bits, aac_frame_length follows.
- // ssssssss ssssiiip ppffffPc ccohCCll llllllll lll?????
-
- const uint8_t *adtsHeader = inHeader->pBuffer + inHeader->nOffset;
-
- bool signalError = false;
- if (inHeader->nFilledLen < 7) {
- ALOGE("Audio data too short to contain even the ADTS header. "
- "Got %ld bytes.", inHeader->nFilledLen);
- hexdump(adtsHeader, inHeader->nFilledLen);
- signalError = true;
- } else {
- bool protectionAbsent = (adtsHeader[1] & 1);
-
- unsigned aac_frame_length =
- ((adtsHeader[3] & 3) << 11)
- | (adtsHeader[4] << 3)
- | (adtsHeader[5] >> 5);
-
- if (inHeader->nFilledLen < aac_frame_length) {
- ALOGE("Not enough audio data for the complete frame. "
- "Got %ld bytes, frame size according to the ADTS "
- "header is %u bytes.",
- inHeader->nFilledLen, aac_frame_length);
- hexdump(adtsHeader, inHeader->nFilledLen);
- signalError = true;
- } else {
- adtsHeaderSize = (protectionAbsent ? 7 : 9);
-
- inBuffer[0] = (UCHAR *)adtsHeader + adtsHeaderSize;
- inBufferLength[0] = aac_frame_length - adtsHeaderSize;
-
- inHeader->nOffset += adtsHeaderSize;
- inHeader->nFilledLen -= adtsHeaderSize;
- }
- }
-
- if (signalError) {
- mSignalledError = true;
-
- notify(OMX_EventError,
- OMX_ErrorStreamCorrupt,
- ERROR_MALFORMED,
- NULL);
-
- return;
+ inBuffer[0] = inHeader->pBuffer + inHeader->nOffset;
+ inBufferLength[0] = inHeader->nFilledLen;
}
} else {
- inBuffer[0] = inHeader->pBuffer + inHeader->nOffset;
- inBufferLength[0] = inHeader->nFilledLen;
+ inBufferLength[0] = 0;
}
// Fill and decode
@@ -471,50 +441,66 @@
int prevNumChannels = mStreamInfo->numChannels;
AAC_DECODER_ERROR decoderErr = AAC_DEC_NOT_ENOUGH_BITS;
- while (bytesValid[0] > 0 && decoderErr == AAC_DEC_NOT_ENOUGH_BITS) {
+ while ((bytesValid[0] > 0 || mSawInputEos) && decoderErr == AAC_DEC_NOT_ENOUGH_BITS) {
+ mDecoderHasData |= (bytesValid[0] > 0);
aacDecoder_Fill(mAACDecoder,
inBuffer,
inBufferLength,
bytesValid);
- mDecoderHasData = true;
decoderErr = aacDecoder_DecodeFrame(mAACDecoder,
outBuffer,
outHeader->nAllocLen,
0 /* flags */);
-
if (decoderErr == AAC_DEC_NOT_ENOUGH_BITS) {
- ALOGW("Not enough bits, bytesValid %d", bytesValid[0]);
+ if (mSawInputEos && bytesValid[0] <= 0) {
+ if (mDecoderHasData) {
+ // flush out the decoder's delayed data by calling DecodeFrame
+ // one more time, with the AACDEC_FLUSH flag set
+ decoderErr = aacDecoder_DecodeFrame(mAACDecoder,
+ outBuffer,
+ outHeader->nAllocLen,
+ AACDEC_FLUSH);
+ mDecoderHasData = false;
+ }
+ outHeader->nFlags = OMX_BUFFERFLAG_EOS;
+ mSignalledOutputEos = true;
+ break;
+ } else {
+ ALOGW("Not enough bits, bytesValid %d", bytesValid[0]);
+ }
}
}
size_t numOutBytes =
mStreamInfo->frameSize * sizeof(int16_t) * mStreamInfo->numChannels;
- if (decoderErr == AAC_DEC_OK) {
- UINT inBufferUsedLength = inBufferLength[0] - bytesValid[0];
- inHeader->nFilledLen -= inBufferUsedLength;
- inHeader->nOffset += inBufferUsedLength;
- } else {
- ALOGW("AAC decoder returned error %d, substituting silence",
- decoderErr);
+ if (inHeader) {
+ if (decoderErr == AAC_DEC_OK) {
+ UINT inBufferUsedLength = inBufferLength[0] - bytesValid[0];
+ inHeader->nFilledLen -= inBufferUsedLength;
+ inHeader->nOffset += inBufferUsedLength;
+ } else {
+ ALOGW("AAC decoder returned error %d, substituting silence",
+ decoderErr);
- memset(outHeader->pBuffer + outHeader->nOffset, 0, numOutBytes);
+ memset(outHeader->pBuffer + outHeader->nOffset, 0, numOutBytes);
- // Discard input buffer.
- inHeader->nFilledLen = 0;
+ // Discard input buffer.
+ inHeader->nFilledLen = 0;
- aacDecoder_SetParam(mAACDecoder, AAC_TPDEC_CLEAR_BUFFER, 1);
+ aacDecoder_SetParam(mAACDecoder, AAC_TPDEC_CLEAR_BUFFER, 1);
- // fall through
- }
+ // fall through
+ }
- if (inHeader->nFilledLen == 0) {
- inInfo->mOwnedByUs = false;
- inQueue.erase(inQueue.begin());
- inInfo = NULL;
- notifyEmptyBufferDone(inHeader);
- inHeader = NULL;
+ if (inHeader->nFilledLen == 0) {
+ inInfo->mOwnedByUs = false;
+ inQueue.erase(inQueue.begin());
+ inInfo = NULL;
+ notifyEmptyBufferDone(inHeader);
+ inHeader = NULL;
+ }
}
/*
@@ -555,7 +541,6 @@
// we've previously decoded valid data, in the latter case
// (decode failed) we'll output a silent frame.
outHeader->nFilledLen = numOutBytes;
- outHeader->nFlags = 0;
outHeader->nTimeStamp =
mAnchorTimeUs
@@ -582,6 +567,12 @@
// depend on fragments from the last one decoded.
// drain all existing data
drainDecoder();
+ // force decoder loop to drop the first decoded buffer by resetting these state variables,
+ // but only if initialization has already happened.
+ if (mInputBufferCount != 0) {
+ mInputBufferCount = 1;
+ mStreamInfo->sampleRate = 0;
+ }
}
}
@@ -606,6 +597,8 @@
mStreamInfo->sampleRate = 0;
mSignalledError = false;
+ mSawInputEos = false;
+ mSignalledOutputEos = false;
mOutputPortSettingsChange = NONE;
}
diff --git a/media/libstagefright/codecs/aacdec/SoftAAC2.h b/media/libstagefright/codecs/aacdec/SoftAAC2.h
index 2d960ab..a7ea1e2 100644
--- a/media/libstagefright/codecs/aacdec/SoftAAC2.h
+++ b/media/libstagefright/codecs/aacdec/SoftAAC2.h
@@ -55,6 +55,8 @@
bool mDecoderHasData;
size_t mInputBufferCount;
bool mSignalledError;
+ bool mSawInputEos;
+ bool mSignalledOutputEos;
int64_t mAnchorTimeUs;
int64_t mNumSamplesOutput;
diff --git a/media/libstagefright/codecs/mp3dec/SoftMP3.cpp b/media/libstagefright/codecs/mp3dec/SoftMP3.cpp
index 7c382fb..877e3cb 100644
--- a/media/libstagefright/codecs/mp3dec/SoftMP3.cpp
+++ b/media/libstagefright/codecs/mp3dec/SoftMP3.cpp
@@ -49,6 +49,8 @@
mNumChannels(2),
mSamplingRate(44100),
mSignalledError(false),
+ mSawInputEos(false),
+ mSignalledOutputEos(false),
mOutputPortSettingsChange(NONE) {
initPorts();
initDecoder();
@@ -194,48 +196,36 @@
List<BufferInfo *> &inQueue = getPortQueue(0);
List<BufferInfo *> &outQueue = getPortQueue(1);
- while (!inQueue.empty() && !outQueue.empty()) {
- BufferInfo *inInfo = *inQueue.begin();
- OMX_BUFFERHEADERTYPE *inHeader = inInfo->mHeader;
+ while ((!inQueue.empty() || (mSawInputEos && !mSignalledOutputEos)) && !outQueue.empty()) {
+ BufferInfo *inInfo = NULL;
+ OMX_BUFFERHEADERTYPE *inHeader = NULL;
+ if (!inQueue.empty()) {
+ inInfo = *inQueue.begin();
+ inHeader = inInfo->mHeader;
+ }
BufferInfo *outInfo = *outQueue.begin();
OMX_BUFFERHEADERTYPE *outHeader = outInfo->mHeader;
+ outHeader->nFlags = 0;
- if (inHeader->nFlags & OMX_BUFFERFLAG_EOS) {
- inQueue.erase(inQueue.begin());
- inInfo->mOwnedByUs = false;
- notifyEmptyBufferDone(inHeader);
-
- if (!mIsFirst) {
- // pad the end of the stream with 529 samples, since that many samples
- // were trimmed off the beginning when decoding started
- outHeader->nFilledLen =
- kPVMP3DecoderDelay * mNumChannels * sizeof(int16_t);
-
- memset(outHeader->pBuffer, 0, outHeader->nFilledLen);
- } else {
- // Since we never discarded frames from the start, we won't have
- // to add any padding at the end either.
- outHeader->nFilledLen = 0;
+ if (inHeader) {
+ if (inHeader->nOffset == 0 && inHeader->nFilledLen) {
+ mAnchorTimeUs = inHeader->nTimeStamp;
+ mNumFramesOutput = 0;
}
- outHeader->nFlags = OMX_BUFFERFLAG_EOS;
+ if (inHeader->nFlags & OMX_BUFFERFLAG_EOS) {
+ mSawInputEos = true;
+ }
- outQueue.erase(outQueue.begin());
- outInfo->mOwnedByUs = false;
- notifyFillBufferDone(outHeader);
- return;
+ mConfig->pInputBuffer =
+ inHeader->pBuffer + inHeader->nOffset;
+
+ mConfig->inputBufferCurrentLength = inHeader->nFilledLen;
+ } else {
+ mConfig->pInputBuffer = NULL;
+ mConfig->inputBufferCurrentLength = 0;
}
-
- if (inHeader->nOffset == 0) {
- mAnchorTimeUs = inHeader->nTimeStamp;
- mNumFramesOutput = 0;
- }
-
- mConfig->pInputBuffer =
- inHeader->pBuffer + inHeader->nOffset;
-
- mConfig->inputBufferCurrentLength = inHeader->nFilledLen;
mConfig->inputBufferMaxLength = 0;
mConfig->inputBufferUsedLength = 0;
@@ -262,13 +252,28 @@
mConfig->outputFrameSize = kOutputBufferSize / sizeof(int16_t);
}
- // This is recoverable, just ignore the current frame and
- // play silence instead.
- memset(outHeader->pBuffer,
- 0,
- mConfig->outputFrameSize * sizeof(int16_t));
+ if (decoderErr == NO_ENOUGH_MAIN_DATA_ERROR && mSawInputEos) {
+ if (!mIsFirst) {
+ // pad the end of the stream with 529 samples, since that many samples
+ // were trimmed off the beginning when decoding started
+ outHeader->nOffset = 0;
+ outHeader->nFilledLen = kPVMP3DecoderDelay * mNumChannels * sizeof(int16_t);
- mConfig->inputBufferUsedLength = inHeader->nFilledLen;
+ memset(outHeader->pBuffer, 0, outHeader->nFilledLen);
+ }
+ outHeader->nFlags = OMX_BUFFERFLAG_EOS;
+ mSignalledOutputEos = true;
+ } else {
+ // This is recoverable, just ignore the current frame and
+ // play silence instead.
+ memset(outHeader->pBuffer,
+ 0,
+ mConfig->outputFrameSize * sizeof(int16_t));
+
+ if (inHeader) {
+ mConfig->inputBufferUsedLength = inHeader->nFilledLen;
+ }
+ }
} else if (mConfig->samplingRate != mSamplingRate
|| mConfig->num_channels != mNumChannels) {
mSamplingRate = mConfig->samplingRate;
@@ -289,7 +294,7 @@
outHeader->nFilledLen =
mConfig->outputFrameSize * sizeof(int16_t) - outHeader->nOffset;
- } else {
+ } else if (!mSignalledOutputEos) {
outHeader->nOffset = 0;
outHeader->nFilledLen = mConfig->outputFrameSize * sizeof(int16_t);
}
@@ -298,23 +303,24 @@
mAnchorTimeUs
+ (mNumFramesOutput * 1000000ll) / mConfig->samplingRate;
- outHeader->nFlags = 0;
+ if (inHeader) {
+ CHECK_GE(inHeader->nFilledLen, mConfig->inputBufferUsedLength);
- CHECK_GE(inHeader->nFilledLen, mConfig->inputBufferUsedLength);
+ inHeader->nOffset += mConfig->inputBufferUsedLength;
+ inHeader->nFilledLen -= mConfig->inputBufferUsedLength;
- inHeader->nOffset += mConfig->inputBufferUsedLength;
- inHeader->nFilledLen -= mConfig->inputBufferUsedLength;
+
+ if (inHeader->nFilledLen == 0) {
+ inInfo->mOwnedByUs = false;
+ inQueue.erase(inQueue.begin());
+ inInfo = NULL;
+ notifyEmptyBufferDone(inHeader);
+ inHeader = NULL;
+ }
+ }
mNumFramesOutput += mConfig->outputFrameSize / mNumChannels;
- if (inHeader->nFilledLen == 0) {
- inInfo->mOwnedByUs = false;
- inQueue.erase(inQueue.begin());
- inInfo = NULL;
- notifyEmptyBufferDone(inHeader);
- inHeader = NULL;
- }
-
outInfo->mOwnedByUs = false;
outQueue.erase(outQueue.begin());
outInfo = NULL;
@@ -362,6 +368,8 @@
pvmp3_InitDecoder(mConfig, mDecoderBuf);
mIsFirst = true;
mSignalledError = false;
+ mSawInputEos = false;
+ mSignalledOutputEos = false;
mOutputPortSettingsChange = NONE;
}
diff --git a/media/libstagefright/codecs/mp3dec/SoftMP3.h b/media/libstagefright/codecs/mp3dec/SoftMP3.h
index 4af91ea..f9e7b53 100644
--- a/media/libstagefright/codecs/mp3dec/SoftMP3.h
+++ b/media/libstagefright/codecs/mp3dec/SoftMP3.h
@@ -61,6 +61,8 @@
bool mIsFirst;
bool mSignalledError;
+ bool mSawInputEos;
+ bool mSignalledOutputEos;
enum {
NONE,
diff --git a/media/libstagefright/codecs/vorbis/dec/SoftVorbis.cpp b/media/libstagefright/codecs/vorbis/dec/SoftVorbis.cpp
index 51bb958..515e4d3 100644
--- a/media/libstagefright/codecs/vorbis/dec/SoftVorbis.cpp
+++ b/media/libstagefright/codecs/vorbis/dec/SoftVorbis.cpp
@@ -54,6 +54,8 @@
mAnchorTimeUs(0),
mNumFramesOutput(0),
mNumFramesLeftOnPage(-1),
+ mSawInputEos(false),
+ mSignalledOutputEos(false),
mOutputPortSettingsChange(NONE) {
initPorts();
CHECK_EQ(initDecoder(), (status_t)OK);
@@ -290,48 +292,47 @@
return;
}
- while (!inQueue.empty() && !outQueue.empty()) {
- BufferInfo *inInfo = *inQueue.begin();
- OMX_BUFFERHEADERTYPE *inHeader = inInfo->mHeader;
+ while ((!inQueue.empty() || (mSawInputEos && !mSignalledOutputEos)) && !outQueue.empty()) {
+ BufferInfo *inInfo = NULL;
+ OMX_BUFFERHEADERTYPE *inHeader = NULL;
+ if (!inQueue.empty()) {
+ inInfo = *inQueue.begin();
+ inHeader = inInfo->mHeader;
+ }
BufferInfo *outInfo = *outQueue.begin();
OMX_BUFFERHEADERTYPE *outHeader = outInfo->mHeader;
- if (inHeader->nFlags & OMX_BUFFERFLAG_EOS) {
- inQueue.erase(inQueue.begin());
- inInfo->mOwnedByUs = false;
- notifyEmptyBufferDone(inHeader);
+ int32_t numPageSamples = 0;
- outHeader->nFilledLen = 0;
- outHeader->nFlags = OMX_BUFFERFLAG_EOS;
+ if (inHeader) {
+ if (inHeader->nFlags & OMX_BUFFERFLAG_EOS) {
+ mSawInputEos = true;
+ }
- outQueue.erase(outQueue.begin());
- outInfo->mOwnedByUs = false;
- notifyFillBufferDone(outHeader);
- return;
+ if (inHeader->nFilledLen || !mSawInputEos) {
+ CHECK_GE(inHeader->nFilledLen, sizeof(numPageSamples));
+ memcpy(&numPageSamples,
+ inHeader->pBuffer
+ + inHeader->nOffset + inHeader->nFilledLen - 4,
+ sizeof(numPageSamples));
+
+ if (inHeader->nOffset == 0) {
+ mAnchorTimeUs = inHeader->nTimeStamp;
+ mNumFramesOutput = 0;
+ }
+
+ inHeader->nFilledLen -= sizeof(numPageSamples);;
+ }
}
- int32_t numPageSamples;
- CHECK_GE(inHeader->nFilledLen, sizeof(numPageSamples));
- memcpy(&numPageSamples,
- inHeader->pBuffer
- + inHeader->nOffset + inHeader->nFilledLen - 4,
- sizeof(numPageSamples));
-
if (numPageSamples >= 0) {
mNumFramesLeftOnPage = numPageSamples;
}
- if (inHeader->nOffset == 0) {
- mAnchorTimeUs = inHeader->nTimeStamp;
- mNumFramesOutput = 0;
- }
-
- inHeader->nFilledLen -= sizeof(numPageSamples);;
-
ogg_buffer buf;
- buf.data = inHeader->pBuffer + inHeader->nOffset;
- buf.size = inHeader->nFilledLen;
+ buf.data = inHeader ? inHeader->pBuffer + inHeader->nOffset : NULL;
+ buf.size = inHeader ? inHeader->nFilledLen : 0;
buf.refcount = 1;
buf.ptr.owner = NULL;
@@ -351,6 +352,7 @@
int numFrames = 0;
+ outHeader->nFlags = 0;
int err = vorbis_dsp_synthesis(mState, &pack, 1);
if (err != 0) {
ALOGW("vorbis_dsp_synthesis returned %d", err);
@@ -370,13 +372,16 @@
ALOGV("discarding %d frames at end of page",
numFrames - mNumFramesLeftOnPage);
numFrames = mNumFramesLeftOnPage;
+ if (mSawInputEos) {
+ outHeader->nFlags = OMX_BUFFERFLAG_EOS;
+ mSignalledOutputEos = true;
+ }
}
mNumFramesLeftOnPage -= numFrames;
}
outHeader->nFilledLen = numFrames * sizeof(int16_t) * mVi->channels;
outHeader->nOffset = 0;
- outHeader->nFlags = 0;
outHeader->nTimeStamp =
mAnchorTimeUs
@@ -384,11 +389,13 @@
mNumFramesOutput += numFrames;
- inInfo->mOwnedByUs = false;
- inQueue.erase(inQueue.begin());
- inInfo = NULL;
- notifyEmptyBufferDone(inHeader);
- inHeader = NULL;
+ if (inHeader) {
+ inInfo->mOwnedByUs = false;
+ inQueue.erase(inQueue.begin());
+ inInfo = NULL;
+ notifyEmptyBufferDone(inHeader);
+ inHeader = NULL;
+ }
outInfo->mOwnedByUs = false;
outQueue.erase(outQueue.begin());
@@ -425,6 +432,8 @@
mVi = NULL;
}
+ mSawInputEos = false;
+ mSignalledOutputEos = false;
mOutputPortSettingsChange = NONE;
}
diff --git a/media/libstagefright/codecs/vorbis/dec/SoftVorbis.h b/media/libstagefright/codecs/vorbis/dec/SoftVorbis.h
index cb628a0..1d00816 100644
--- a/media/libstagefright/codecs/vorbis/dec/SoftVorbis.h
+++ b/media/libstagefright/codecs/vorbis/dec/SoftVorbis.h
@@ -59,6 +59,8 @@
int64_t mAnchorTimeUs;
int64_t mNumFramesOutput;
int32_t mNumFramesLeftOnPage;
+ bool mSawInputEos;
+ bool mSignalledOutputEos;
enum {
NONE,
diff --git a/media/libstagefright/httplive/LiveSession.cpp b/media/libstagefright/httplive/LiveSession.cpp
index bd12ddc..233db44 100644
--- a/media/libstagefright/httplive/LiveSession.cpp
+++ b/media/libstagefright/httplive/LiveSession.cpp
@@ -632,9 +632,6 @@
// playlist unchanged
*unchanged = true;
- ALOGV("Playlist unchanged, refresh state is now %d",
- (int)mRefreshState);
-
return NULL;
}
diff --git a/media/libstagefright/mpeg2ts/ATSParser.cpp b/media/libstagefright/mpeg2ts/ATSParser.cpp
index 175a263..cb57a2f 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.cpp
+++ b/media/libstagefright/mpeg2ts/ATSParser.cpp
@@ -506,6 +506,11 @@
ElementaryStreamQueue::PCM_AUDIO);
break;
+ case STREAMTYPE_AC3:
+ mQueue = new ElementaryStreamQueue(
+ ElementaryStreamQueue::AC3);
+ break;
+
default:
break;
}
@@ -614,6 +619,7 @@
case STREAMTYPE_MPEG2_AUDIO:
case STREAMTYPE_MPEG2_AUDIO_ADTS:
case STREAMTYPE_PCM_AUDIO:
+ case STREAMTYPE_AC3:
return true;
default:
diff --git a/media/libstagefright/mpeg2ts/ATSParser.h b/media/libstagefright/mpeg2ts/ATSParser.h
index a10edc9..d4e30b4 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.h
+++ b/media/libstagefright/mpeg2ts/ATSParser.h
@@ -88,6 +88,10 @@
STREAMTYPE_MPEG2_AUDIO_ADTS = 0x0f,
STREAMTYPE_MPEG4_VIDEO = 0x10,
STREAMTYPE_H264 = 0x1b,
+
+ // From ATSC A/53 Part 3:2009, 6.7.1
+ STREAMTYPE_AC3 = 0x81,
+
STREAMTYPE_PCM_AUDIO = 0x83,
};
diff --git a/media/libstagefright/mpeg2ts/ESQueue.cpp b/media/libstagefright/mpeg2ts/ESQueue.cpp
index 8f9c9c8..ea79885 100644
--- a/media/libstagefright/mpeg2ts/ESQueue.cpp
+++ b/media/libstagefright/mpeg2ts/ESQueue.cpp
@@ -56,6 +56,122 @@
}
}
+// Parse AC3 header assuming the current ptr is start position of syncframe,
+// update metadata only applicable, and return the payload size
+static unsigned parseAC3SyncFrame(
+ const uint8_t *ptr, size_t size, sp<MetaData> *metaData) {
+ static const unsigned channelCountTable[] = {2, 1, 2, 3, 4, 4, 5, 6};
+ static const unsigned samplingRateTable[] = {48000, 44100, 32000};
+ static const unsigned rates[] = {32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256,
+ 320, 384, 448, 512, 576, 640};
+
+ static const unsigned frameSizeTable[19][3] = {
+ { 64, 69, 96 },
+ { 80, 87, 120 },
+ { 96, 104, 144 },
+ { 112, 121, 168 },
+ { 128, 139, 192 },
+ { 160, 174, 240 },
+ { 192, 208, 288 },
+ { 224, 243, 336 },
+ { 256, 278, 384 },
+ { 320, 348, 480 },
+ { 384, 417, 576 },
+ { 448, 487, 672 },
+ { 512, 557, 768 },
+ { 640, 696, 960 },
+ { 768, 835, 1152 },
+ { 896, 975, 1344 },
+ { 1024, 1114, 1536 },
+ { 1152, 1253, 1728 },
+ { 1280, 1393, 1920 },
+ };
+
+ ABitReader bits(ptr, size);
+ unsigned syncStartPos = 0; // in bytes
+ if (bits.numBitsLeft() < 16) {
+ return 0;
+ }
+ if (bits.getBits(16) != 0x0B77) {
+ return 0;
+ }
+
+ if (bits.numBitsLeft() < 16 + 2 + 6 + 5 + 3 + 3) {
+ ALOGV("Not enough bits left for further parsing");
+ return 0;
+ }
+ bits.skipBits(16); // crc1
+
+ unsigned fscod = bits.getBits(2);
+ if (fscod == 3) {
+ ALOGW("Incorrect fscod in AC3 header");
+ return 0;
+ }
+
+ unsigned frmsizecod = bits.getBits(6);
+ if (frmsizecod > 37) {
+ ALOGW("Incorrect frmsizecod in AC3 header");
+ return 0;
+ }
+
+ unsigned bsid = bits.getBits(5);
+ if (bsid > 8) {
+ ALOGW("Incorrect bsid in AC3 header. Possibly E-AC-3?");
+ return 0;
+ }
+
+ unsigned bsmod = bits.getBits(3);
+ unsigned acmod = bits.getBits(3);
+ unsigned cmixlev = 0;
+ unsigned surmixlev = 0;
+ unsigned dsurmod = 0;
+
+ if ((acmod & 1) > 0 && acmod != 1) {
+ if (bits.numBitsLeft() < 2) {
+ return 0;
+ }
+ cmixlev = bits.getBits(2);
+ }
+ if ((acmod & 4) > 0) {
+ if (bits.numBitsLeft() < 2) {
+ return 0;
+ }
+ surmixlev = bits.getBits(2);
+ }
+ if (acmod == 2) {
+ if (bits.numBitsLeft() < 2) {
+ return 0;
+ }
+ dsurmod = bits.getBits(2);
+ }
+
+ if (bits.numBitsLeft() < 1) {
+ return 0;
+ }
+ unsigned lfeon = bits.getBits(1);
+
+ unsigned samplingRate = samplingRateTable[fscod];
+ unsigned payloadSize = frameSizeTable[frmsizecod >> 1][fscod];
+ if (fscod == 1) {
+ payloadSize += frmsizecod & 1;
+ }
+ payloadSize <<= 1; // convert from 16-bit words to bytes
+
+ unsigned channelCount = channelCountTable[acmod] + lfeon;
+
+ if (metaData != NULL) {
+ (*metaData)->setCString(kKeyMIMEType, MEDIA_MIMETYPE_AUDIO_AC3);
+ (*metaData)->setInt32(kKeyChannelCount, channelCount);
+ (*metaData)->setInt32(kKeySampleRate, samplingRate);
+ }
+
+ return payloadSize;
+}
+
+static bool IsSeeminglyValidAC3Header(const uint8_t *ptr, size_t size) {
+ return parseAC3SyncFrame(ptr, size, NULL) > 0;
+}
+
static bool IsSeeminglyValidADTSHeader(const uint8_t *ptr, size_t size) {
if (size < 3) {
// Not enough data to verify header.
@@ -224,6 +340,33 @@
break;
}
+ case AC3:
+ {
+ uint8_t *ptr = (uint8_t *)data;
+
+ ssize_t startOffset = -1;
+ for (size_t i = 0; i < size; ++i) {
+ if (IsSeeminglyValidAC3Header(&ptr[i], size - i)) {
+ startOffset = i;
+ break;
+ }
+ }
+
+ if (startOffset < 0) {
+ return ERROR_MALFORMED;
+ }
+
+ if (startOffset > 0) {
+ ALOGI("found something resembling an AC3 syncword at "
+ "offset %d",
+ startOffset);
+ }
+
+ data = &ptr[startOffset];
+ size -= startOffset;
+ break;
+ }
+
case MPEG_AUDIO:
{
uint8_t *ptr = (uint8_t *)data;
@@ -328,6 +471,8 @@
return dequeueAccessUnitH264();
case AAC:
return dequeueAccessUnitAAC();
+ case AC3:
+ return dequeueAccessUnitAC3();
case MPEG_VIDEO:
return dequeueAccessUnitMPEGVideo();
case MPEG4_VIDEO:
@@ -340,6 +485,51 @@
}
}
+sp<ABuffer> ElementaryStreamQueue::dequeueAccessUnitAC3() {
+ unsigned syncStartPos = 0; // in bytes
+ unsigned payloadSize = 0;
+ sp<MetaData> format = new MetaData;
+ while (true) {
+ if (syncStartPos + 2 >= mBuffer->size()) {
+ return NULL;
+ }
+
+ payloadSize = parseAC3SyncFrame(
+ mBuffer->data() + syncStartPos,
+ mBuffer->size() - syncStartPos,
+ &format);
+ if (payloadSize > 0) {
+ break;
+ }
+ ++syncStartPos;
+ }
+
+ if (mBuffer->size() < syncStartPos + payloadSize) {
+ ALOGV("Not enough buffer size for AC3");
+ return NULL;
+ }
+
+ if (mFormat == NULL) {
+ mFormat = format;
+ }
+
+ sp<ABuffer> accessUnit = new ABuffer(syncStartPos + payloadSize);
+ memcpy(accessUnit->data(), mBuffer->data(), syncStartPos + payloadSize);
+
+ int64_t timeUs = fetchTimestamp(syncStartPos + payloadSize);
+ CHECK_GE(timeUs, 0ll);
+ accessUnit->meta()->setInt64("timeUs", timeUs);
+
+ memmove(
+ mBuffer->data(),
+ mBuffer->data() + syncStartPos + payloadSize,
+ mBuffer->size() - syncStartPos - payloadSize);
+
+ mBuffer->setRange(0, mBuffer->size() - syncStartPos - payloadSize);
+
+ return accessUnit;
+}
+
sp<ABuffer> ElementaryStreamQueue::dequeueAccessUnitPCMAudio() {
if (mBuffer->size() < 4) {
return NULL;
diff --git a/media/libstagefright/mpeg2ts/ESQueue.h b/media/libstagefright/mpeg2ts/ESQueue.h
index 66a8087..a2cca77 100644
--- a/media/libstagefright/mpeg2ts/ESQueue.h
+++ b/media/libstagefright/mpeg2ts/ESQueue.h
@@ -32,6 +32,7 @@
enum Mode {
H264,
AAC,
+ AC3,
MPEG_AUDIO,
MPEG_VIDEO,
MPEG4_VIDEO,
@@ -67,6 +68,7 @@
sp<ABuffer> dequeueAccessUnitH264();
sp<ABuffer> dequeueAccessUnitAAC();
+ sp<ABuffer> dequeueAccessUnitAC3();
sp<ABuffer> dequeueAccessUnitMPEGAudio();
sp<ABuffer> dequeueAccessUnitMPEGVideo();
sp<ABuffer> dequeueAccessUnitMPEG4Video();
diff --git a/media/libstagefright/timedtext/test/Android.mk b/media/libstagefright/timedtext/test/Android.mk
index a5e7ba2..9a9fde2 100644
--- a/media/libstagefright/timedtext/test/Android.mk
+++ b/media/libstagefright/timedtext/test/Android.mk
@@ -2,7 +2,6 @@
# ================================================================
# Unit tests for libstagefright_timedtext
-# See also /development/testrunner/test_defs.xml
# ================================================================
# ================================================================
@@ -18,10 +17,13 @@
LOCAL_C_INCLUDES := \
$(TOP)/external/expat/lib \
- $(TOP)/frameworks/base/media/libstagefright/timedtext
+ $(TOP)/frameworks/av/media/libstagefright/timedtext
LOCAL_SHARED_LIBRARIES := \
+ libbinder \
libexpat \
- libstagefright
+ libstagefright \
+ libstagefright_foundation \
+ libutils
include $(BUILD_NATIVE_TEST)
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 3132e54..5cf6ef3 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -162,12 +162,15 @@
(void) property_get("af.tee", value, "0");
teeEnabled = atoi(value);
}
- if (teeEnabled & 1)
+ if (teeEnabled & 1) {
mTeeSinkInputEnabled = true;
- if (teeEnabled & 2)
+ }
+ if (teeEnabled & 2) {
mTeeSinkOutputEnabled = true;
- if (teeEnabled & 4)
+ }
+ if (teeEnabled & 4) {
mTeeSinkTrackEnabled = true;
+ }
#endif
}
@@ -473,6 +476,12 @@
goto Exit;
}
+ if (sharedBuffer != 0 && sharedBuffer->pointer() == NULL) {
+ ALOGE("createTrack() sharedBuffer is non-0 but has NULL pointer()");
+ lStatus = BAD_VALUE;
+ goto Exit;
+ }
+
{
Mutex::Autolock _l(mLock);
PlaybackThread *thread = checkPlaybackThread_l(output);
@@ -513,10 +522,12 @@
track = thread->createTrack_l(client, streamType, sampleRate, format,
channelMask, frameCount, sharedBuffer, lSessionId, flags, tid, clientUid, &lStatus);
+ // we don't abort yet if lStatus != NO_ERROR; there is still work to be done regardless
// move effect chain to this output thread if an effect on same session was waiting
// for a track to be created
if (lStatus == NO_ERROR && effectThread != NULL) {
+ // no risk of deadlock because AudioFlinger::mLock is held
Mutex::Autolock _dl(thread->mLock);
Mutex::Autolock _sl(effectThread->mLock);
moveEffectChain_l(lSessionId, effectThread, thread, true);
@@ -536,7 +547,9 @@
}
}
}
+
}
+
if (lStatus == NO_ERROR) {
// s for server's pid, n for normal mixer name, f for fast index
name = String8::format("s:%d;n:%d;f:%d", getpid_cached, track->name() - AudioMixer::TRACK0,
@@ -550,9 +563,7 @@
}
Exit:
- if (status != NULL) {
- *status = lStatus;
- }
+ *status = lStatus;
return trackHandle;
}
@@ -1293,6 +1304,7 @@
flags, tid, &lStatus);
LOG_ALWAYS_FATAL_IF((recordTrack != 0) != (lStatus == NO_ERROR));
}
+
if (lStatus != NO_ERROR) {
// remove local strong reference to Client before deleting the RecordTrack so that the
// Client destructor is called by the TrackBase destructor with mLock held
@@ -1301,14 +1313,11 @@
goto Exit;
}
- // return to handle to client
+ // return handle to client
recordHandle = new RecordHandle(recordTrack);
- lStatus = NO_ERROR;
Exit:
- if (status) {
- *status = lStatus;
- }
+ *status = lStatus;
return recordHandle;
}
@@ -1449,18 +1458,15 @@
audio_output_flags_t flags,
const audio_offload_info_t *offloadInfo)
{
- PlaybackThread *thread = NULL;
struct audio_config config;
+ memset(&config, 0, sizeof(config));
config.sample_rate = (pSamplingRate != NULL) ? *pSamplingRate : 0;
config.channel_mask = (pChannelMask != NULL) ? *pChannelMask : 0;
config.format = (pFormat != NULL) ? *pFormat : AUDIO_FORMAT_DEFAULT;
- if (offloadInfo) {
+ if (offloadInfo != NULL) {
config.offload_info = *offloadInfo;
}
- audio_stream_out_t *outStream = NULL;
- AudioHwDevice *outHwDev;
-
ALOGV("openOutput(), module %d Device %x, SamplingRate %d, Format %#08x, Channels %x, flags %x",
module,
(pDevices != NULL) ? *pDevices : 0,
@@ -1469,7 +1475,7 @@
config.channel_mask,
flags);
ALOGV("openOutput(), offloadInfo %p version 0x%04x",
- offloadInfo, offloadInfo == NULL ? -1 : offloadInfo->version );
+ offloadInfo, offloadInfo == NULL ? -1 : offloadInfo->version);
if (pDevices == NULL || *pDevices == 0) {
return 0;
@@ -1477,15 +1483,17 @@
Mutex::Autolock _l(mLock);
- outHwDev = findSuitableHwDev_l(module, *pDevices);
- if (outHwDev == NULL)
+ AudioHwDevice *outHwDev = findSuitableHwDev_l(module, *pDevices);
+ if (outHwDev == NULL) {
return 0;
+ }
audio_hw_device_t *hwDevHal = outHwDev->hwDevice();
audio_io_handle_t id = nextUniqueId();
mHardwareStatus = AUDIO_HW_OUTPUT_OPEN;
+ audio_stream_out_t *outStream = NULL;
status_t status = hwDevHal->open_output_stream(hwDevHal,
id,
*pDevices,
@@ -1505,6 +1513,7 @@
if (status == NO_ERROR && outStream != NULL) {
AudioStreamOut *output = new AudioStreamOut(outHwDev, outStream, flags);
+ PlaybackThread *thread;
if (flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) {
thread = new OffloadThread(this, output, id, *pDevices);
ALOGV("openOutput() created offload output: ID %d thread %p", id, thread);
@@ -1672,18 +1681,15 @@
audio_format_t *pFormat,
audio_channel_mask_t *pChannelMask)
{
- status_t status;
- RecordThread *thread = NULL;
struct audio_config config;
+ memset(&config, 0, sizeof(config));
config.sample_rate = (pSamplingRate != NULL) ? *pSamplingRate : 0;
config.channel_mask = (pChannelMask != NULL) ? *pChannelMask : 0;
config.format = (pFormat != NULL) ? *pFormat : AUDIO_FORMAT_DEFAULT;
uint32_t reqSamplingRate = config.sample_rate;
audio_format_t reqFormat = config.format;
- audio_channel_mask_t reqChannels = config.channel_mask;
- audio_stream_in_t *inStream = NULL;
- AudioHwDevice *inHwDev;
+ audio_channel_mask_t reqChannelMask = config.channel_mask;
if (pDevices == NULL || *pDevices == 0) {
return 0;
@@ -1691,14 +1697,16 @@
Mutex::Autolock _l(mLock);
- inHwDev = findSuitableHwDev_l(module, *pDevices);
- if (inHwDev == NULL)
+ AudioHwDevice *inHwDev = findSuitableHwDev_l(module, *pDevices);
+ if (inHwDev == NULL) {
return 0;
+ }
audio_hw_device_t *inHwHal = inHwDev->hwDevice();
audio_io_handle_t id = nextUniqueId();
- status = inHwHal->open_input_stream(inHwHal, id, *pDevices, &config,
+ audio_stream_in_t *inStream = NULL;
+ status_t status = inHwHal->open_input_stream(inHwHal, id, *pDevices, &config,
&inStream);
ALOGV("openInput() openInputStream returned input %p, SamplingRate %d, Format %d, Channels %x, "
"status %d",
@@ -1714,10 +1722,12 @@
if (status == BAD_VALUE &&
reqFormat == config.format && config.format == AUDIO_FORMAT_PCM_16_BIT &&
(config.sample_rate <= 2 * reqSamplingRate) &&
- (popcount(config.channel_mask) <= FCC_2) && (popcount(reqChannels) <= FCC_2)) {
+ (popcount(config.channel_mask) <= FCC_2) && (popcount(reqChannelMask) <= FCC_2)) {
+ // FIXME describe the change proposed by HAL (save old values so we can log them here)
ALOGV("openInput() reopening with proposed sampling rate and channel mask");
inStream = NULL;
status = inHwHal->open_input_stream(inHwHal, id, *pDevices, &config, &inStream);
+ // FIXME log this new status; HAL should not propose any further changes
}
if (status == NO_ERROR && inStream != NULL) {
@@ -1776,10 +1786,10 @@
// Start record thread
// RecordThread requires both input and output device indication to forward to audio
// pre processing modules
- thread = new RecordThread(this,
+ RecordThread *thread = new RecordThread(this,
input,
reqSamplingRate,
- reqChannels,
+ reqChannelMask,
id,
primaryOutputDevice_l(),
*pDevices
@@ -1796,7 +1806,7 @@
*pFormat = config.format;
}
if (pChannelMask != NULL) {
- *pChannelMask = reqChannels;
+ *pChannelMask = reqChannelMask;
}
// notify client processes of the new input creation
@@ -1954,7 +1964,7 @@
}
}
if (!found) {
- Mutex::Autolock _l (t->mLock);
+ Mutex::Autolock _l(t->mLock);
// remove all effects from the chain
while (ec->mEffects.size()) {
sp<EffectModule> effect = ec->mEffects[0];
@@ -2249,9 +2259,7 @@
}
Exit:
- if (status != NULL) {
- *status = lStatus;
- }
+ *status = lStatus;
return handle;
}
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 53e238e..9137040 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -110,7 +110,7 @@
int *sessionId,
String8& name,
int clientUid,
- status_t *status);
+ status_t *status /*non-NULL*/);
virtual sp<IAudioRecord> openRecord(
audio_io_handle_t input,
@@ -121,7 +121,7 @@
IAudioFlinger::track_flags_t *flags,
pid_t tid,
int *sessionId,
- status_t *status);
+ status_t *status /*non-NULL*/);
virtual uint32_t sampleRate(audio_io_handle_t output) const;
virtual int channelCount(audio_io_handle_t output) const;
@@ -210,7 +210,7 @@
int32_t priority,
audio_io_handle_t io,
int sessionId,
- status_t *status,
+ status_t *status /*non-NULL*/,
int *id,
int *enabled);
@@ -499,7 +499,7 @@
private:
const char * const mModuleName;
audio_hw_device_t * const mHwDevice;
- Flags mFlags;
+ const Flags mFlags;
};
// AudioStreamOut and AudioStreamIn are immutable, so their fields are const.
@@ -509,7 +509,7 @@
struct AudioStreamOut {
AudioHwDevice* const audioHwDev;
audio_stream_out_t* const stream;
- audio_output_flags_t flags;
+ const audio_output_flags_t flags;
audio_hw_device_t* hwDev() const { return audioHwDev->hwDevice(); }
diff --git a/services/audioflinger/AudioMixer.cpp b/services/audioflinger/AudioMixer.cpp
index df4e029..8bea752 100644
--- a/services/audioflinger/AudioMixer.cpp
+++ b/services/audioflinger/AudioMixer.cpp
@@ -58,7 +58,7 @@
status_t AudioMixer::DownmixerBufferProvider::getNextBuffer(AudioBufferProvider::Buffer *pBuffer,
int64_t pts) {
//ALOGV("DownmixerBufferProvider::getNextBuffer()");
- if (this->mTrackBufferProvider != NULL) {
+ if (mTrackBufferProvider != NULL) {
status_t res = mTrackBufferProvider->getNextBuffer(pBuffer, pts);
if (res == OK) {
mDownmixConfig.inputCfg.buffer.frameCount = pBuffer->frameCount;
@@ -81,7 +81,7 @@
void AudioMixer::DownmixerBufferProvider::releaseBuffer(AudioBufferProvider::Buffer *pBuffer) {
//ALOGV("DownmixerBufferProvider::releaseBuffer()");
- if (this->mTrackBufferProvider != NULL) {
+ if (mTrackBufferProvider != NULL) {
mTrackBufferProvider->releaseBuffer(pBuffer);
} else {
ALOGE("DownmixerBufferProvider::releaseBuffer() error: NULL track buffer provider");
@@ -90,9 +90,9 @@
// ----------------------------------------------------------------------------
-bool AudioMixer::isMultichannelCapable = false;
+bool AudioMixer::sIsMultichannelCapable = false;
-effect_descriptor_t AudioMixer::dwnmFxDesc;
+effect_descriptor_t AudioMixer::sDwnmFxDesc;
// Ensure mConfiguredNames bitmask is initialized properly on all architectures.
// The value of 1 << x is undefined in C when x >= 32.
@@ -113,8 +113,6 @@
// AudioMixer is not yet capable of multi-channel output beyond stereo
ALOG_ASSERT(2 == MAX_NUM_CHANNELS, "bad MAX_NUM_CHANNELS %d", MAX_NUM_CHANNELS);
- LocalClock lc;
-
pthread_once(&sOnceControl, &sInitRoutine);
mState.enabledTracks= 0;
@@ -136,27 +134,6 @@
t++;
}
- // find multichannel downmix effect if we have to play multichannel content
- uint32_t numEffects = 0;
- int ret = EffectQueryNumberEffects(&numEffects);
- if (ret != 0) {
- ALOGE("AudioMixer() error %d querying number of effects", ret);
- return;
- }
- ALOGV("EffectQueryNumberEffects() numEffects=%d", numEffects);
-
- for (uint32_t i = 0 ; i < numEffects ; i++) {
- if (EffectQueryEffect(i, &dwnmFxDesc) == 0) {
- ALOGV("effect %d is called %s", i, dwnmFxDesc.name);
- if (memcmp(&dwnmFxDesc.type, EFFECT_UIID_DOWNMIX, sizeof(effect_uuid_t)) == 0) {
- ALOGI("found effect \"%s\" from %s",
- dwnmFxDesc.name, dwnmFxDesc.implementor);
- isMultichannelCapable = true;
- break;
- }
- }
- }
- ALOGE_IF(!isMultichannelCapable, "unable to find downmix effect");
}
AudioMixer::~AudioMixer()
@@ -229,7 +206,7 @@
void AudioMixer::invalidateState(uint32_t mask)
{
- if (mask) {
+ if (mask != 0) {
mState.needsChanged |= mask;
mState.hook = process__validate;
}
@@ -276,13 +253,13 @@
DownmixerBufferProvider* pDbp = new DownmixerBufferProvider();
int32_t status;
- if (!isMultichannelCapable) {
+ if (!sIsMultichannelCapable) {
ALOGE("prepareTrackForDownmix(%d) fails: mixer doesn't support multichannel content",
trackName);
goto noDownmixForActiveTrack;
}
- if (EffectCreate(&dwnmFxDesc.uuid,
+ if (EffectCreate(&sDwnmFxDesc.uuid,
pTrack->sessionId /*sessionId*/, -2 /*ioId not relevant here, using random value*/,
&pDbp->mDownmixHandle/*pHandle*/) != 0) {
ALOGE("prepareTrackForDownmix(%d) fails: error creating downmixer effect", trackName);
@@ -566,7 +543,7 @@
resampler = AudioResampler::create(
format,
// the resampler sees the number of channels after the downmixer, if any
- downmixerBufferProvider != NULL ? MAX_NUM_CHANNELS : channelCount,
+ (int) (downmixerBufferProvider != NULL ? MAX_NUM_CHANNELS : channelCount),
devSampleRate, quality);
resampler->setLocalTimeFreq(sLocalTimeFreq);
}
@@ -667,27 +644,29 @@
countActiveTracks++;
track_t& t = state->tracks[i];
uint32_t n = 0;
+ // FIXME can overflow (mask is only 3 bits)
n |= NEEDS_CHANNEL_1 + t.channelCount - 1;
- n |= NEEDS_FORMAT_16;
- n |= t.doesResample() ? NEEDS_RESAMPLE_ENABLED : NEEDS_RESAMPLE_DISABLED;
+ if (t.doesResample()) {
+ n |= NEEDS_RESAMPLE;
+ }
if (t.auxLevel != 0 && t.auxBuffer != NULL) {
- n |= NEEDS_AUX_ENABLED;
+ n |= NEEDS_AUX;
}
if (t.volumeInc[0]|t.volumeInc[1]) {
volumeRamp = true;
} else if (!t.doesResample() && t.volumeRL == 0) {
- n |= NEEDS_MUTE_ENABLED;
+ n |= NEEDS_MUTE;
}
t.needs = n;
- if ((n & NEEDS_MUTE__MASK) == NEEDS_MUTE_ENABLED) {
+ if (n & NEEDS_MUTE) {
t.hook = track__nop;
} else {
- if ((n & NEEDS_AUX__MASK) == NEEDS_AUX_ENABLED) {
+ if (n & NEEDS_AUX) {
all16BitsStereoNoResample = false;
}
- if ((n & NEEDS_RESAMPLE__MASK) == NEEDS_RESAMPLE_ENABLED) {
+ if (n & NEEDS_RESAMPLE) {
all16BitsStereoNoResample = false;
resampling = true;
t.hook = track__genericResample;
@@ -709,7 +688,7 @@
// select the processing hooks
state->hook = process__nop;
- if (countActiveTracks) {
+ if (countActiveTracks > 0) {
if (resampling) {
if (!state->outputTemp) {
state->outputTemp = new int32_t[MAX_NUM_CHANNELS * state->frameCount];
@@ -745,16 +724,15 @@
// Now that the volume ramp has been done, set optimal state and
// track hooks for subsequent mixer process
- if (countActiveTracks) {
+ if (countActiveTracks > 0) {
bool allMuted = true;
uint32_t en = state->enabledTracks;
while (en) {
const int i = 31 - __builtin_clz(en);
en &= ~(1<<i);
track_t& t = state->tracks[i];
- if (!t.doesResample() && t.volumeRL == 0)
- {
- t.needs |= NEEDS_MUTE_ENABLED;
+ if (!t.doesResample() && t.volumeRL == 0) {
+ t.needs |= NEEDS_MUTE;
t.hook = track__nop;
} else {
allMuted = false;
@@ -1124,8 +1102,9 @@
t.in = t.buffer.raw;
// t.in == NULL can happen if the track was flushed just after having
// been enabled for mixing.
- if (t.in == NULL)
+ if (t.in == NULL) {
enabledTracks &= ~(1<<i);
+ }
}
e0 = enabledTracks;
@@ -1157,12 +1136,12 @@
track_t& t = state->tracks[i];
size_t outFrames = BLOCKSIZE;
int32_t *aux = NULL;
- if (CC_UNLIKELY((t.needs & NEEDS_AUX__MASK) == NEEDS_AUX_ENABLED)) {
+ if (CC_UNLIKELY(t.needs & NEEDS_AUX)) {
aux = t.auxBuffer + numFrames;
}
while (outFrames) {
size_t inFrames = (t.frameCount > outFrames)?outFrames:t.frameCount;
- if (inFrames) {
+ if (inFrames > 0) {
t.hook(&t, outTemp + (BLOCKSIZE-outFrames)*MAX_NUM_CHANNELS, inFrames,
state->resampleTemp, aux);
t.frameCount -= inFrames;
@@ -1238,14 +1217,14 @@
e1 &= ~(1<<i);
track_t& t = state->tracks[i];
int32_t *aux = NULL;
- if (CC_UNLIKELY((t.needs & NEEDS_AUX__MASK) == NEEDS_AUX_ENABLED)) {
+ if (CC_UNLIKELY(t.needs & NEEDS_AUX)) {
aux = t.auxBuffer;
}
// this is a little goofy, on the resampling case we don't
// acquire/release the buffers because it's done by
// the resampler.
- if ((t.needs & NEEDS_RESAMPLE__MASK) == NEEDS_RESAMPLE_ENABLED) {
+ if (t.needs & NEEDS_RESAMPLE) {
t.resampler->setPTS(pts);
t.hook(&t, outTemp, numFrames, state->resampleTemp, aux);
} else {
@@ -1445,8 +1424,9 @@
int64_t AudioMixer::calculateOutputPTS(const track_t& t, int64_t basePTS,
int outputFrameIndex)
{
- if (AudioBufferProvider::kInvalidPTS == basePTS)
+ if (AudioBufferProvider::kInvalidPTS == basePTS) {
return AudioBufferProvider::kInvalidPTS;
+ }
return basePTS + ((outputFrameIndex * sLocalTimeFreq) / t.sampleRate);
}
@@ -1458,6 +1438,28 @@
{
LocalClock lc;
sLocalTimeFreq = lc.getLocalFreq();
+
+ // find multichannel downmix effect if we have to play multichannel content
+ uint32_t numEffects = 0;
+ int ret = EffectQueryNumberEffects(&numEffects);
+ if (ret != 0) {
+ ALOGE("AudioMixer() error %d querying number of effects", ret);
+ return;
+ }
+ ALOGV("EffectQueryNumberEffects() numEffects=%d", numEffects);
+
+ for (uint32_t i = 0 ; i < numEffects ; i++) {
+ if (EffectQueryEffect(i, &sDwnmFxDesc) == 0) {
+ ALOGV("effect %d is called %s", i, sDwnmFxDesc.name);
+ if (memcmp(&sDwnmFxDesc.type, EFFECT_UIID_DOWNMIX, sizeof(effect_uuid_t)) == 0) {
+ ALOGI("found effect \"%s\" from %s",
+ sDwnmFxDesc.name, sDwnmFxDesc.implementor);
+ sIsMultichannelCapable = true;
+ break;
+ }
+ }
+ }
+ ALOGW_IF(!sIsMultichannelCapable, "unable to find downmix effect");
}
// ----------------------------------------------------------------------------
diff --git a/services/audioflinger/AudioMixer.h b/services/audioflinger/AudioMixer.h
index 43aeb86..d5c9da7 100644
--- a/services/audioflinger/AudioMixer.h
+++ b/services/audioflinger/AudioMixer.h
@@ -120,27 +120,19 @@
private:
enum {
+ // FIXME this representation permits up to 8 channels
NEEDS_CHANNEL_COUNT__MASK = 0x00000007,
- NEEDS_FORMAT__MASK = 0x000000F0,
- NEEDS_MUTE__MASK = 0x00000100,
- NEEDS_RESAMPLE__MASK = 0x00001000,
- NEEDS_AUX__MASK = 0x00010000,
};
enum {
- NEEDS_CHANNEL_1 = 0x00000000,
- NEEDS_CHANNEL_2 = 0x00000001,
+ NEEDS_CHANNEL_1 = 0x00000000, // mono
+ NEEDS_CHANNEL_2 = 0x00000001, // stereo
- NEEDS_FORMAT_16 = 0x00000010,
+ // sample format is not explicitly specified, and is assumed to be AUDIO_FORMAT_PCM_16_BIT
- NEEDS_MUTE_DISABLED = 0x00000000,
- NEEDS_MUTE_ENABLED = 0x00000100,
-
- NEEDS_RESAMPLE_DISABLED = 0x00000000,
- NEEDS_RESAMPLE_ENABLED = 0x00001000,
-
- NEEDS_AUX_DISABLED = 0x00000000,
- NEEDS_AUX_ENABLED = 0x00010000,
+ NEEDS_MUTE = 0x00000100,
+ NEEDS_RESAMPLE = 0x00001000,
+ NEEDS_AUX = 0x00010000,
};
struct state_t;
@@ -256,9 +248,9 @@
state_t mState __attribute__((aligned(32)));
// effect descriptor for the downmixer used by the mixer
- static effect_descriptor_t dwnmFxDesc;
+ static effect_descriptor_t sDwnmFxDesc;
// indicates whether a downmix effect has been found and is usable by this mixer
- static bool isMultichannelCapable;
+ static bool sIsMultichannelCapable;
// Call after changing either the enabled status of a track, or parameters of an enabled track.
// OK to call more often than that, but unnecessary.
diff --git a/services/audioflinger/AudioPolicyService.cpp b/services/audioflinger/AudioPolicyService.cpp
index 35e816b..c5ad2c0 100644
--- a/services/audioflinger/AudioPolicyService.cpp
+++ b/services/audioflinger/AudioPolicyService.cpp
@@ -77,24 +77,28 @@
mOutputCommandThread = new AudioCommandThread(String8("ApmOutput"), this);
/* instantiate the audio policy manager */
rc = hw_get_module(AUDIO_POLICY_HARDWARE_MODULE_ID, &module);
- if (rc)
+ if (rc) {
return;
+ }
rc = audio_policy_dev_open(module, &mpAudioPolicyDev);
ALOGE_IF(rc, "couldn't open audio policy device (%s)", strerror(-rc));
- if (rc)
+ if (rc) {
return;
+ }
rc = mpAudioPolicyDev->create_audio_policy(mpAudioPolicyDev, &aps_ops, this,
&mpAudioPolicy);
ALOGE_IF(rc, "couldn't create audio policy (%s)", strerror(-rc));
- if (rc)
+ if (rc) {
return;
+ }
rc = mpAudioPolicy->init_check(mpAudioPolicy);
ALOGE_IF(rc, "couldn't init_check the audio policy (%s)", strerror(-rc));
- if (rc)
+ if (rc) {
return;
+ }
ALOGI("Loaded audio policy from %s (%s)", module->name, module->id);
@@ -126,10 +130,12 @@
}
mInputs.clear();
- if (mpAudioPolicy != NULL && mpAudioPolicyDev != NULL)
+ if (mpAudioPolicy != NULL && mpAudioPolicyDev != NULL) {
mpAudioPolicyDev->destroy_audio_policy(mpAudioPolicyDev, mpAudioPolicy);
- if (mpAudioPolicyDev != NULL)
+ }
+ if (mpAudioPolicyDev != NULL) {
audio_policy_dev_close(mpAudioPolicyDev);
+ }
}
status_t AudioPolicyService::setDeviceConnectionState(audio_devices_t device,
@@ -1114,11 +1120,13 @@
int AudioPolicyService::startTone(audio_policy_tone_t tone,
audio_stream_type_t stream)
{
- if (tone != AUDIO_POLICY_TONE_IN_CALL_NOTIFICATION)
+ if (tone != AUDIO_POLICY_TONE_IN_CALL_NOTIFICATION) {
ALOGE("startTone: illegal tone requested (%d)", tone);
- if (stream != AUDIO_STREAM_VOICE_CALL)
+ }
+ if (stream != AUDIO_STREAM_VOICE_CALL) {
ALOGE("startTone: illegal stream (%d) requested for tone %d", stream,
tone);
+ }
mTonePlaybackThread->startToneCommand(ToneGenerator::TONE_SUP_CALL_WAITING,
AUDIO_STREAM_VOICE_CALL);
return 0;
@@ -1509,8 +1517,9 @@
static int aps_close_output(void *service, audio_io_handle_t output)
{
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
- if (af == 0)
+ if (af == 0) {
return PERMISSION_DENIED;
+ }
return af->closeOutput(output);
}
@@ -1573,8 +1582,9 @@
static int aps_close_input(void *service, audio_io_handle_t input)
{
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
- if (af == 0)
+ if (af == 0) {
return PERMISSION_DENIED;
+ }
return af->closeInput(input);
}
@@ -1583,8 +1593,9 @@
audio_io_handle_t output)
{
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
- if (af == 0)
+ if (af == 0) {
return PERMISSION_DENIED;
+ }
return af->setStreamOutput(stream, output);
}
@@ -1594,8 +1605,9 @@
audio_io_handle_t dst_output)
{
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
- if (af == 0)
+ if (af == 0) {
return PERMISSION_DENIED;
+ }
return af->moveEffects(session, src_output, dst_output);
}
diff --git a/services/audioflinger/AudioResampler.cpp b/services/audioflinger/AudioResampler.cpp
index 2c3c719..323f1a4 100644
--- a/services/audioflinger/AudioResampler.cpp
+++ b/services/audioflinger/AudioResampler.cpp
@@ -339,8 +339,9 @@
out[outputIndex++] += vl * Interp(mX0L, in[0], phaseFraction);
out[outputIndex++] += vr * Interp(mX0R, in[1], phaseFraction);
Advance(&inputIndex, &phaseFraction, phaseIncrement);
- if (outputIndex == outputSampleCount)
+ if (outputIndex == outputSampleCount) {
break;
+ }
}
// process input samples
@@ -434,8 +435,9 @@
out[outputIndex++] += vl * sample;
out[outputIndex++] += vr * sample;
Advance(&inputIndex, &phaseFraction, phaseIncrement);
- if (outputIndex == outputSampleCount)
+ if (outputIndex == outputSampleCount) {
break;
+ }
}
// process input samples
diff --git a/services/audioflinger/AudioResamplerCubic.cpp b/services/audioflinger/AudioResamplerCubic.cpp
index 18e59e9..1f9714b 100644
--- a/services/audioflinger/AudioResamplerCubic.cpp
+++ b/services/audioflinger/AudioResamplerCubic.cpp
@@ -66,8 +66,9 @@
if (mBuffer.frameCount == 0) {
mBuffer.frameCount = inFrameCount;
provider->getNextBuffer(&mBuffer, mPTS);
- if (mBuffer.raw == NULL)
+ if (mBuffer.raw == NULL) {
return;
+ }
// ALOGW("New buffer: offset=%p, frames=%dn", mBuffer.raw, mBuffer.frameCount);
}
int16_t *in = mBuffer.i16;
@@ -97,8 +98,9 @@
mBuffer.frameCount = inFrameCount;
provider->getNextBuffer(&mBuffer,
calculateOutputPTS(outputIndex / 2));
- if (mBuffer.raw == NULL)
+ if (mBuffer.raw == NULL) {
goto save_state; // ugly, but efficient
+ }
in = mBuffer.i16;
// ALOGW("New buffer: offset=%p, frames=%d", mBuffer.raw, mBuffer.frameCount);
}
@@ -132,8 +134,9 @@
if (mBuffer.frameCount == 0) {
mBuffer.frameCount = inFrameCount;
provider->getNextBuffer(&mBuffer, mPTS);
- if (mBuffer.raw == NULL)
+ if (mBuffer.raw == NULL) {
return;
+ }
// ALOGW("New buffer: offset=%p, frames=%d", mBuffer.raw, mBuffer.frameCount);
}
int16_t *in = mBuffer.i16;
@@ -163,8 +166,9 @@
mBuffer.frameCount = inFrameCount;
provider->getNextBuffer(&mBuffer,
calculateOutputPTS(outputIndex / 2));
- if (mBuffer.raw == NULL)
+ if (mBuffer.raw == NULL) {
goto save_state; // ugly, but efficient
+ }
// ALOGW("New buffer: offset=%p, frames=%dn", mBuffer.raw, mBuffer.frameCount);
in = mBuffer.i16;
}
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp
index a8a5169..59b4770 100644
--- a/services/audioflinger/Effects.cpp
+++ b/services/audioflinger/Effects.cpp
@@ -116,8 +116,9 @@
continue;
}
// first non destroyed handle is considered in control
- if (controlHandle == NULL)
+ if (controlHandle == NULL) {
controlHandle = h;
+ }
if (h->priority() <= priority) {
break;
}
@@ -911,18 +912,15 @@
}
int bufOffset = ((sizeof(effect_param_cblk_t) - 1) / sizeof(int) + 1) * sizeof(int);
mCblkMemory = client->heap()->allocate(EFFECT_PARAM_BUFFER_SIZE + bufOffset);
- if (mCblkMemory != 0) {
- mCblk = static_cast<effect_param_cblk_t *>(mCblkMemory->pointer());
-
- if (mCblk != NULL) {
- new(mCblk) effect_param_cblk_t();
- mBuffer = (uint8_t *)mCblk + bufOffset;
- }
- } else {
+ if (mCblkMemory == 0 ||
+ (mCblk = static_cast<effect_param_cblk_t *>(mCblkMemory->pointer())) == NULL) {
ALOGE("not enough memory for Effect size=%u", EFFECT_PARAM_BUFFER_SIZE +
sizeof(effect_param_cblk_t));
+ mCblkMemory.clear();
return;
}
+ new(mCblk) effect_param_cblk_t();
+ mBuffer = (uint8_t *)mCblk + bufOffset;
}
AudioFlinger::EffectHandle::~EffectHandle()
@@ -939,6 +937,11 @@
disconnect(false);
}
+status_t AudioFlinger::EffectHandle::initCheck()
+{
+ return mClient == 0 || mCblkMemory != 0 ? OK : NO_MEMORY;
+}
+
status_t AudioFlinger::EffectHandle::enable()
{
ALOGV("enable %p", this);
diff --git a/services/audioflinger/Effects.h b/services/audioflinger/Effects.h
index b717857..50535a2 100644
--- a/services/audioflinger/Effects.h
+++ b/services/audioflinger/Effects.h
@@ -169,6 +169,7 @@
const sp<IEffectClient>& effectClient,
int32_t priority);
virtual ~EffectHandle();
+ virtual status_t initCheck();
// IEffect
virtual status_t enable();
diff --git a/services/audioflinger/FastMixer.cpp b/services/audioflinger/FastMixer.cpp
index f27ea17..7126e92 100644
--- a/services/audioflinger/FastMixer.cpp
+++ b/services/audioflinger/FastMixer.cpp
@@ -459,8 +459,9 @@
}
int64_t pts;
- if (outputSink == NULL || (OK != outputSink->getNextWriteTimestamp(&pts)))
+ if (outputSink == NULL || (OK != outputSink->getNextWriteTimestamp(&pts))) {
pts = AudioBufferProvider::kInvalidPTS;
+ }
// process() is CPU-bound
mixer->process(pts);
diff --git a/services/audioflinger/PlaybackTracks.h b/services/audioflinger/PlaybackTracks.h
index 43b77f3..4b6c74d 100644
--- a/services/audioflinger/PlaybackTracks.h
+++ b/services/audioflinger/PlaybackTracks.h
@@ -34,6 +34,7 @@
int uid,
IAudioFlinger::track_flags_t flags);
virtual ~Track();
+ virtual status_t initCheck() const;
static void appendDumpHeader(String8& result);
void dump(char* buffer, size_t size);
diff --git a/services/audioflinger/RecordTracks.h b/services/audioflinger/RecordTracks.h
index 57de568..5ef6f58 100644
--- a/services/audioflinger/RecordTracks.h
+++ b/services/audioflinger/RecordTracks.h
@@ -59,5 +59,4 @@
// releaseBuffer() not overridden
bool mOverflow; // overflow on most recent attempt to fill client buffer
- AudioRecordServerProxy* mAudioRecordServerProxy;
};
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index bf85b51..c8ba6f6 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -269,8 +269,8 @@
: Thread(false /*canCallJava*/),
mType(type),
mAudioFlinger(audioFlinger),
- // mSampleRate, mFrameCount, mChannelMask, mChannelCount, mFrameSize, and mFormat are
- // set by PlaybackThread::readOutputParameters() or RecordThread::readInputParameters()
+ // mSampleRate, mFrameCount, mChannelMask, mChannelCount, mFrameSize, mFormat, mBufferSize
+ // are set by PlaybackThread::readOutputParameters() or RecordThread::readInputParameters()
mParamStatus(NO_ERROR),
//FIXME: mStandby should be true here. Is this some kind of hack?
mStandby(false), mOutDevice(outDevice), mInDevice(inDevice),
@@ -297,6 +297,17 @@
}
}
+status_t AudioFlinger::ThreadBase::readyToRun()
+{
+ status_t status = initCheck();
+ if (status == NO_ERROR) {
+ ALOGI("AudioFlinger's thread %p ready to run", this);
+ } else {
+ ALOGE("No working audio driver found.");
+ }
+ return status;
+}
+
void AudioFlinger::ThreadBase::exit()
{
ALOGV("ThreadBase::exit");
@@ -369,7 +380,13 @@
void AudioFlinger::ThreadBase::processConfigEvents()
{
- mLock.lock();
+ Mutex::Autolock _l(mLock);
+ processConfigEvents_l();
+}
+
+// post condition: mConfigEvents.isEmpty()
+void AudioFlinger::ThreadBase::processConfigEvents_l()
+{
while (!mConfigEvents.isEmpty()) {
ALOGV("processConfigEvents() remaining events %d", mConfigEvents.size());
ConfigEvent *event = mConfigEvents[0];
@@ -377,32 +394,31 @@
// release mLock before locking AudioFlinger mLock: lock order is always
// AudioFlinger then ThreadBase to avoid cross deadlock
mLock.unlock();
- switch(event->type()) {
- case CFG_EVENT_PRIO: {
- PrioConfigEvent *prioEvent = static_cast<PrioConfigEvent *>(event);
- // FIXME Need to understand why this has be done asynchronously
- int err = requestPriority(prioEvent->pid(), prioEvent->tid(), prioEvent->prio(),
- true /*asynchronous*/);
- if (err != 0) {
- ALOGW("Policy SCHED_FIFO priority %d is unavailable for pid %d tid %d; "
- "error %d",
- prioEvent->prio(), prioEvent->pid(), prioEvent->tid(), err);
- }
- } break;
- case CFG_EVENT_IO: {
- IoConfigEvent *ioEvent = static_cast<IoConfigEvent *>(event);
- mAudioFlinger->mLock.lock();
+ switch (event->type()) {
+ case CFG_EVENT_PRIO: {
+ PrioConfigEvent *prioEvent = static_cast<PrioConfigEvent *>(event);
+ // FIXME Need to understand why this has be done asynchronously
+ int err = requestPriority(prioEvent->pid(), prioEvent->tid(), prioEvent->prio(),
+ true /*asynchronous*/);
+ if (err != 0) {
+ ALOGW("Policy SCHED_FIFO priority %d is unavailable for pid %d tid %d; error %d",
+ prioEvent->prio(), prioEvent->pid(), prioEvent->tid(), err);
+ }
+ } break;
+ case CFG_EVENT_IO: {
+ IoConfigEvent *ioEvent = static_cast<IoConfigEvent *>(event);
+ {
+ Mutex::Autolock _l(mAudioFlinger->mLock);
audioConfigChanged_l(ioEvent->event(), ioEvent->param());
- mAudioFlinger->mLock.unlock();
- } break;
- default:
- ALOGE("processConfigEvents() unknown event type %d", event->type());
- break;
+ }
+ } break;
+ default:
+ ALOGE("processConfigEvents() unknown event type %d", event->type());
+ break;
}
delete event;
mLock.lock();
}
- mLock.unlock();
}
void AudioFlinger::ThreadBase::dumpBase(int fd, const Vector<String16>& args)
@@ -427,6 +443,8 @@
result.append(buffer);
snprintf(buffer, SIZE, "HAL frame count: %d\n", mFrameCount);
result.append(buffer);
+ snprintf(buffer, SIZE, "HAL buffer size: %u bytes\n", mBufferSize);
+ result.append(buffer);
snprintf(buffer, SIZE, "Channel Count: %u\n", mChannelCount);
result.append(buffer);
snprintf(buffer, SIZE, "Channel Mask: 0x%08x\n", mChannelMask);
@@ -739,8 +757,7 @@
int sessionId,
effect_descriptor_t *desc,
int *enabled,
- status_t *status
- )
+ status_t *status)
{
sp<EffectModule> effect;
sp<EffectHandle> handle;
@@ -829,7 +846,10 @@
}
// create effect handle and connect it to effect module
handle = new EffectHandle(effect, client, effectClient, priority);
- lStatus = effect->addHandle(handle.get());
+ lStatus = handle->initCheck();
+ if (lStatus == OK) {
+ lStatus = effect->addHandle(handle.get());
+ }
if (enabled != NULL) {
*enabled = (int)effect->isEnabled();
}
@@ -850,9 +870,7 @@
handle.clear();
}
- if (status != NULL) {
- *status = lStatus;
- }
+ *status = lStatus;
return handle;
}
@@ -1002,7 +1020,7 @@
type_t type)
: ThreadBase(audioFlinger, id, device, AUDIO_DEVICE_NONE, type),
mNormalFrameCount(0), mMixBuffer(NULL),
- mAllocMixBuffer(NULL), mSuspended(0), mBytesWritten(0),
+ mSuspended(0), mBytesWritten(0),
mActiveTracksGeneration(0),
// mStreamTypes[] initialized in constructor body
mOutput(output),
@@ -1060,7 +1078,7 @@
AudioFlinger::PlaybackThread::~PlaybackThread()
{
mAudioFlinger->unregisterWriter(mNBLogWriter);
- delete [] mAllocMixBuffer;
+ delete[] mMixBuffer;
}
void AudioFlinger::PlaybackThread::dump(int fd, const Vector<String16>& args)
@@ -1150,16 +1168,6 @@
}
// Thread virtuals
-status_t AudioFlinger::PlaybackThread::readyToRun()
-{
- status_t status = initCheck();
- if (status == NO_ERROR) {
- ALOGI("AudioFlinger's thread %p ready to run", this);
- } else {
- ALOGE("No working audio driver found.");
- }
- return status;
-}
void AudioFlinger::PlaybackThread::onFirstRef()
{
@@ -1326,8 +1334,12 @@
track = TimedTrack::create(this, client, streamType, sampleRate, format,
channelMask, frameCount, sharedBuffer, sessionId, uid);
}
- if (track == 0 || track->getCblk() == NULL || track->name() < 0) {
- lStatus = NO_MEMORY;
+
+ // new Track always returns non-NULL,
+ // but TimedTrack::create() is a factory that could fail by returning NULL
+ lStatus = track != 0 ? track->initCheck() : (status_t) NO_MEMORY;
+ if (lStatus != NO_ERROR) {
+ track.clear();
goto Exit;
}
@@ -1352,9 +1364,7 @@
lStatus = NO_ERROR;
Exit:
- if (status) {
- *status = lStatus;
- }
+ *status = lStatus;
return track;
}
@@ -1642,7 +1652,8 @@
mFormat);
}
mFrameSize = audio_stream_frame_size(&mOutput->stream->common);
- mFrameCount = mOutput->stream->common.get_buffer_size(&mOutput->stream->common) / mFrameSize;
+ mBufferSize = mOutput->stream->common.get_buffer_size(&mOutput->stream->common);
+ mFrameCount = mBufferSize / mFrameSize;
if (mFrameCount & 15) {
ALOGW("HAL output buffer size is %u frames but AudioMixer requires multiples of 16 frames",
mFrameCount);
@@ -1699,11 +1710,11 @@
ALOGI("HAL output buffer size %u frames, normal mix buffer size %u frames", mFrameCount,
mNormalFrameCount);
- delete[] mAllocMixBuffer;
- size_t align = (mFrameSize < sizeof(int16_t)) ? sizeof(int16_t) : mFrameSize;
- mAllocMixBuffer = new int8_t[mNormalFrameCount * mFrameSize + align - 1];
- mMixBuffer = (int16_t *) ((((size_t)mAllocMixBuffer + align - 1) / align) * align);
- memset(mMixBuffer, 0, mNormalFrameCount * mFrameSize);
+ delete[] mMixBuffer;
+ size_t normalBufferSize = mNormalFrameCount * mFrameSize;
+ // For historical reasons mMixBuffer is int16_t[], but mFrameSize can be odd (such as 1)
+ mMixBuffer = new int16_t[(normalBufferSize + 1) >> 1];
+ memset(mMixBuffer, 0, normalBufferSize);
// force reconfiguration of effect chains and engines to take new buffer size and audio
// parameters into account
@@ -1837,7 +1848,7 @@
const Vector< sp<Track> >& tracksToRemove)
{
size_t count = tracksToRemove.size();
- if (count) {
+ if (count > 0) {
for (size_t i = 0 ; i < count ; i++) {
const sp<Track>& track = tracksToRemove.itemAt(i);
if (!track->isOutputTrack()) {
@@ -1913,7 +1924,7 @@
// otherwise use the HAL / AudioStreamOut directly
} else {
// Direct output and offload threads
- size_t offset = (mCurrentWriteLength - mBytesRemaining) / sizeof(int16_t);
+ size_t offset = (mCurrentWriteLength - mBytesRemaining);
if (mUseAsyncWrite) {
ALOGW_IF(mWriteAckSequence & 1, "threadLoop_write(): out of sequence write request");
mWriteAckSequence += 2;
@@ -1924,7 +1935,7 @@
// FIXME We should have an implementation of timestamps for direct output threads.
// They are used e.g for multichannel PCM playback over HDMI.
bytesWritten = mOutput->stream->write(mOutput->stream,
- mMixBuffer + offset, mBytesRemaining);
+ (char *)mMixBuffer + offset, mBytesRemaining);
if (mUseAsyncWrite &&
((bytesWritten < 0) || (bytesWritten == (ssize_t)mBytesRemaining))) {
// do not wait for async callback in case of error of full write
@@ -2405,7 +2416,7 @@
void AudioFlinger::PlaybackThread::removeTracks_l(const Vector< sp<Track> >& tracksToRemove)
{
size_t count = tracksToRemove.size();
- if (count) {
+ if (count > 0) {
for (size_t i=0 ; i<count ; i++) {
const sp<Track>& track = tracksToRemove.itemAt(i);
mActiveTracks.remove(track);
@@ -2798,7 +2809,7 @@
sleepTime = idleSleepTime;
}
} else if (mBytesWritten != 0 || (mMixerStatus == MIXER_TRACKS_ENABLED)) {
- memset (mMixBuffer, 0, mixBufferSize);
+ memset(mMixBuffer, 0, mixBufferSize);
sleepTime = 0;
ALOGV_IF(mBytesWritten == 0 && (mMixerStatus == MIXER_TRACKS_ENABLED),
"anticipated start");
@@ -3024,7 +3035,7 @@
// +1 for rounding and +1 for additional sample needed for interpolation
desiredFrames = (mNormalFrameCount * sr) / mSampleRate + 1 + 1;
// add frames already consumed but not yet released by the resampler
- // because cblk->framesReady() will include these frames
+ // because mAudioTrackServerProxy->framesReady() will include these frames
desiredFrames += mAudioMixer->getUnreleasedFrames(track->name());
// the minimum track buffer size is normally twice the number of frames necessary
// to fill one buffer and the resampler should not leave more than one buffer worth
@@ -3362,6 +3373,7 @@
if ((audio_format_t) value != AUDIO_FORMAT_PCM_16_BIT) {
status = BAD_VALUE;
} else {
+ // no need to save value, since it's constant
reconfig = true;
}
}
@@ -3369,6 +3381,7 @@
if ((audio_channel_mask_t) value != AUDIO_CHANNEL_OUT_STEREO) {
status = BAD_VALUE;
} else {
+ // no need to save value, since it's constant
reconfig = true;
}
}
@@ -4163,15 +4176,15 @@
// must be called with thread mutex locked
bool AudioFlinger::OffloadThread::shouldStandby_l()
{
- bool TrackPaused = false;
+ bool trackPaused = false;
// do not put the HAL in standby when paused. AwesomePlayer clear the offloaded AudioTrack
// after a timeout and we will enter standby then.
if (mTracks.size() > 0) {
- TrackPaused = mTracks[mTracks.size() - 1]->isPaused();
+ trackPaused = mTracks[mTracks.size() - 1]->isPaused();
}
- return !mStandby && !TrackPaused;
+ return !mStandby && !trackPaused;
}
@@ -4379,7 +4392,9 @@
) :
ThreadBase(audioFlinger, id, outDevice, inDevice, RECORD),
mInput(input), mResampler(NULL), mRsmpOutBuffer(NULL), mRsmpInBuffer(NULL),
- // mRsmpInIndex and mBufferSize set by readInputParameters()
+ // mRsmpInFrames, mRsmpInFramesP2, mRsmpInUnrel, mRsmpInFront, and mRsmpInRear
+ // are set by readInputParameters()
+ // mRsmpInIndex LEGACY
mReqChannelCount(popcount(channelMask)),
mReqSampleRate(sampleRate)
// mBytesRead is only meaningful while active, and so is cleared in start()
@@ -4406,22 +4421,12 @@
run(mName, PRIORITY_URGENT_AUDIO);
}
-status_t AudioFlinger::RecordThread::readyToRun()
-{
- status_t status = initCheck();
- ALOGW_IF(status != NO_ERROR,"RecordThread %p could not initialize", this);
- return status;
-}
-
bool AudioFlinger::RecordThread::threadLoop()
{
- AudioBufferProvider::Buffer buffer;
- sp<RecordTrack> activeTrack;
- Vector< sp<EffectChain> > effectChains;
-
nsecs_t lastWarning = 0;
inputStandBy();
+ sp<RecordTrack> activeTrack;
{
Mutex::Autolock _l(mLock);
activeTrack = mActiveTrack;
@@ -4431,27 +4436,38 @@
// used to verify we've read at least once before evaluating how many bytes were read
bool readOnce = false;
- // start recording
- while (!exitPending()) {
+ // used to request a deferred sleep, to be executed later while mutex is unlocked
+ bool doSleep = false;
- processConfigEvents();
+ // start recording
+ for (;;) {
+ TrackBase::track_state activeTrackState;
+ Vector< sp<EffectChain> > effectChains;
+
+ // sleep with mutex unlocked
+ if (doSleep) {
+ doSleep = false;
+ usleep(kRecordThreadSleepUs);
+ }
{ // scope for mLock
Mutex::Autolock _l(mLock);
- checkForNewParameters_l();
+ if (exitPending()) {
+ break;
+ }
+ processConfigEvents_l();
+ // return value 'reconfig' is currently unused
+ bool reconfig = checkForNewParameters_l();
if (mActiveTrack != 0 && activeTrack != mActiveTrack) {
SortedVector<int> tmp;
tmp.add(mActiveTrack->uid());
updateWakeLockUids_l(tmp);
}
+ // make a stable copy of mActiveTrack
activeTrack = mActiveTrack;
- if (mActiveTrack == 0 && mConfigEvents.isEmpty()) {
- standby();
-
- if (exitPending()) {
- break;
- }
-
+ if (activeTrack == 0) {
+ standbyIfNotAlreadyInStandby();
+ // exitPending() can't become true here
releaseWakeLock_l();
ALOGV("RecordThread: loop stopping");
// go to sleep
@@ -4460,176 +4476,238 @@
acquireWakeLock_l(mActiveTrack != 0 ? mActiveTrack->uid() : -1);
continue;
}
- if (mActiveTrack != 0) {
- if (mActiveTrack->isTerminated()) {
- removeTrack_l(mActiveTrack);
- mActiveTrack.clear();
- } else if (mActiveTrack->mState == TrackBase::PAUSING) {
- standby();
+
+ if (activeTrack->isTerminated()) {
+ removeTrack_l(activeTrack);
+ mActiveTrack.clear();
+ continue;
+ }
+
+ activeTrackState = activeTrack->mState;
+ switch (activeTrackState) {
+ case TrackBase::PAUSING:
+ standbyIfNotAlreadyInStandby();
+ mActiveTrack.clear();
+ mStartStopCond.broadcast();
+ doSleep = true;
+ continue;
+
+ case TrackBase::RESUMING:
+ mStandby = false;
+ if (mReqChannelCount != activeTrack->channelCount()) {
mActiveTrack.clear();
mStartStopCond.broadcast();
- } else if (mActiveTrack->mState == TrackBase::RESUMING) {
- if (mReqChannelCount != mActiveTrack->channelCount()) {
- mActiveTrack.clear();
- mStartStopCond.broadcast();
- } else if (readOnce) {
- // record start succeeds only if first read from audio input
- // succeeds
- if (mBytesRead >= 0) {
- mActiveTrack->mState = TrackBase::ACTIVE;
- } else {
- mActiveTrack.clear();
- }
- mStartStopCond.broadcast();
- }
- mStandby = false;
+ continue;
}
+ if (readOnce) {
+ mStartStopCond.broadcast();
+ // record start succeeds only if first read from audio input succeeds
+ if (mBytesRead < 0) {
+ mActiveTrack.clear();
+ continue;
+ }
+ activeTrack->mState = TrackBase::ACTIVE;
+ }
+ break;
+
+ case TrackBase::ACTIVE:
+ break;
+
+ case TrackBase::IDLE:
+ doSleep = true;
+ continue;
+
+ default:
+ LOG_FATAL("Unexpected activeTrackState %d", activeTrackState);
}
lockEffectChains_l(effectChains);
}
- if (mActiveTrack != 0) {
- if (mActiveTrack->mState != TrackBase::ACTIVE &&
- mActiveTrack->mState != TrackBase::RESUMING) {
- unlockEffectChains(effectChains);
- usleep(kRecordThreadSleepUs);
- continue;
- }
- for (size_t i = 0; i < effectChains.size(); i ++) {
- effectChains[i]->process_l();
- }
+ // thread mutex is now unlocked, mActiveTrack unknown, activeTrack != 0, kept, immutable
+ // activeTrack->mState unknown, activeTrackState immutable and is ACTIVE or RESUMING
- buffer.frameCount = mFrameCount;
- status_t status = mActiveTrack->getNextBuffer(&buffer);
- if (status == NO_ERROR) {
- readOnce = true;
- size_t framesOut = buffer.frameCount;
- if (mResampler == NULL) {
- // no resampling
- while (framesOut) {
- size_t framesIn = mFrameCount - mRsmpInIndex;
- if (framesIn) {
- int8_t *src = (int8_t *)mRsmpInBuffer + mRsmpInIndex * mFrameSize;
- int8_t *dst = buffer.i8 + (buffer.frameCount - framesOut) *
- mActiveTrack->mFrameSize;
- if (framesIn > framesOut)
- framesIn = framesOut;
- mRsmpInIndex += framesIn;
- framesOut -= framesIn;
- if (mChannelCount == mReqChannelCount) {
- memcpy(dst, src, framesIn * mFrameSize);
- } else {
- if (mChannelCount == 1) {
- upmix_to_stereo_i16_from_mono_i16((int16_t *)dst,
- (int16_t *)src, framesIn);
- } else {
- downmix_to_mono_i16_from_stereo_i16((int16_t *)dst,
- (int16_t *)src, framesIn);
- }
- }
- }
- if (framesOut && mFrameCount == mRsmpInIndex) {
- void *readInto;
- if (framesOut == mFrameCount && mChannelCount == mReqChannelCount) {
- readInto = buffer.raw;
- framesOut = 0;
- } else {
- readInto = mRsmpInBuffer;
- mRsmpInIndex = 0;
- }
- mBytesRead = mInput->stream->read(mInput->stream, readInto,
- mBufferSize);
- if (mBytesRead <= 0) {
- if ((mBytesRead < 0) && (mActiveTrack->mState == TrackBase::ACTIVE))
- {
- ALOGE("Error reading audio input");
- // Force input into standby so that it tries to
- // recover at next read attempt
- inputStandBy();
- usleep(kRecordThreadSleepUs);
- }
- mRsmpInIndex = mFrameCount;
- framesOut = 0;
- buffer.frameCount = 0;
- }
-#ifdef TEE_SINK
- else if (mTeeSink != 0) {
- (void) mTeeSink->write(readInto,
- mBytesRead >> Format_frameBitShift(mTeeSink->format()));
- }
-#endif
- }
- }
- } else {
- // resampling
-
- // resampler accumulates, but we only have one source track
- memset(mRsmpOutBuffer, 0, framesOut * FCC_2 * sizeof(int32_t));
- // alter output frame count as if we were expecting stereo samples
- if (mChannelCount == 1 && mReqChannelCount == 1) {
- framesOut >>= 1;
- }
- mResampler->resample(mRsmpOutBuffer, framesOut,
- this /* AudioBufferProvider* */);
- // ditherAndClamp() works as long as all buffers returned by
- // mActiveTrack->getNextBuffer() are 32 bit aligned which should be always true.
- if (mChannelCount == 2 && mReqChannelCount == 1) {
- // temporarily type pun mRsmpOutBuffer from Q19.12 to int16_t
- ditherAndClamp(mRsmpOutBuffer, mRsmpOutBuffer, framesOut);
- // the resampler always outputs stereo samples:
- // do post stereo to mono conversion
- downmix_to_mono_i16_from_stereo_i16(buffer.i16, (int16_t *)mRsmpOutBuffer,
- framesOut);
- } else {
- ditherAndClamp((int32_t *)buffer.raw, mRsmpOutBuffer, framesOut);
- }
- // now done with mRsmpOutBuffer
-
- }
- if (mFramestoDrop == 0) {
- mActiveTrack->releaseBuffer(&buffer);
- } else {
- if (mFramestoDrop > 0) {
- mFramestoDrop -= buffer.frameCount;
- if (mFramestoDrop <= 0) {
- clearSyncStartEvent();
- }
- } else {
- mFramestoDrop += buffer.frameCount;
- if (mFramestoDrop >= 0 || mSyncStartEvent == 0 ||
- mSyncStartEvent->isCancelled()) {
- ALOGW("Synced record %s, session %d, trigger session %d",
- (mFramestoDrop >= 0) ? "timed out" : "cancelled",
- mActiveTrack->sessionId(),
- (mSyncStartEvent != 0) ? mSyncStartEvent->triggerSession() : 0);
- clearSyncStartEvent();
- }
- }
- }
- mActiveTrack->clearOverflow();
- }
- // client isn't retrieving buffers fast enough
- else {
- if (!mActiveTrack->setOverflow()) {
- nsecs_t now = systemTime();
- if ((now - lastWarning) > kWarningThrottleNs) {
- ALOGW("RecordThread: buffer overflow");
- lastWarning = now;
- }
- }
- // Release the processor for a while before asking for a new buffer.
- // This will give the application more chance to read from the buffer and
- // clear the overflow.
- usleep(kRecordThreadSleepUs);
- }
+ for (size_t i = 0; i < effectChains.size(); i ++) {
+ // thread mutex is not locked, but effect chain is locked
+ effectChains[i]->process_l();
}
+
+ AudioBufferProvider::Buffer buffer;
+ buffer.frameCount = mFrameCount;
+ status_t status = activeTrack->getNextBuffer(&buffer);
+ if (status == NO_ERROR) {
+ readOnce = true;
+ size_t framesOut = buffer.frameCount;
+ if (mResampler == NULL) {
+ // no resampling
+ while (framesOut) {
+ size_t framesIn = mFrameCount - mRsmpInIndex;
+ if (framesIn > 0) {
+ int8_t *src = (int8_t *)mRsmpInBuffer + mRsmpInIndex * mFrameSize;
+ int8_t *dst = buffer.i8 + (buffer.frameCount - framesOut) *
+ activeTrack->mFrameSize;
+ if (framesIn > framesOut) {
+ framesIn = framesOut;
+ }
+ mRsmpInIndex += framesIn;
+ framesOut -= framesIn;
+ if (mChannelCount == mReqChannelCount) {
+ memcpy(dst, src, framesIn * mFrameSize);
+ } else {
+ if (mChannelCount == 1) {
+ upmix_to_stereo_i16_from_mono_i16((int16_t *)dst,
+ (int16_t *)src, framesIn);
+ } else {
+ downmix_to_mono_i16_from_stereo_i16((int16_t *)dst,
+ (int16_t *)src, framesIn);
+ }
+ }
+ }
+ if (framesOut > 0 && mFrameCount == mRsmpInIndex) {
+ void *readInto;
+ if (framesOut == mFrameCount && mChannelCount == mReqChannelCount) {
+ readInto = buffer.raw;
+ framesOut = 0;
+ } else {
+ readInto = mRsmpInBuffer;
+ mRsmpInIndex = 0;
+ }
+ mBytesRead = mInput->stream->read(mInput->stream, readInto,
+ mBufferSize);
+ if (mBytesRead <= 0) {
+ // TODO: verify that it's benign to use a stale track state
+ if ((mBytesRead < 0) && (activeTrackState == TrackBase::ACTIVE))
+ {
+ ALOGE("Error reading audio input");
+ // Force input into standby so that it tries to
+ // recover at next read attempt
+ inputStandBy();
+ doSleep = true;
+ }
+ mRsmpInIndex = mFrameCount;
+ framesOut = 0;
+ buffer.frameCount = 0;
+ }
+#ifdef TEE_SINK
+ else if (mTeeSink != 0) {
+ (void) mTeeSink->write(readInto,
+ mBytesRead >> Format_frameBitShift(mTeeSink->format()));
+ }
+#endif
+ }
+ }
+ } else {
+ // resampling
+
+ // avoid busy-waiting if client doesn't keep up
+ bool madeProgress = false;
+
+ // keep mRsmpInBuffer full so resampler always has sufficient input
+ for (;;) {
+ int32_t rear = mRsmpInRear;
+ ssize_t filled = rear - mRsmpInFront;
+ ALOG_ASSERT(0 <= filled && (size_t) filled <= mRsmpInFramesP2);
+ // exit once there is enough data in buffer for resampler
+ if ((size_t) filled >= mRsmpInFrames) {
+ break;
+ }
+ size_t avail = mRsmpInFramesP2 - filled;
+ // Only try to read full HAL buffers.
+ // But if the HAL read returns a partial buffer, use it.
+ if (avail < mFrameCount) {
+ ALOGE("insufficient space to read: avail %d < mFrameCount %d",
+ avail, mFrameCount);
+ break;
+ }
+ // If 'avail' is non-contiguous, first read past the nominal end of buffer, then
+ // copy to the right place. Permitted because mRsmpInBuffer was over-allocated.
+ rear &= mRsmpInFramesP2 - 1;
+ mBytesRead = mInput->stream->read(mInput->stream,
+ &mRsmpInBuffer[rear * mChannelCount], mBufferSize);
+ if (mBytesRead <= 0) {
+ ALOGE("read failed: mBytesRead=%d < %u", mBytesRead, mBufferSize);
+ break;
+ }
+ ALOG_ASSERT((size_t) mBytesRead <= mBufferSize);
+ size_t framesRead = mBytesRead / mFrameSize;
+ ALOG_ASSERT(framesRead > 0);
+ madeProgress = true;
+ // If 'avail' was non-contiguous, we now correct for reading past end of buffer.
+ size_t part1 = mRsmpInFramesP2 - rear;
+ if (framesRead > part1) {
+ memcpy(mRsmpInBuffer, &mRsmpInBuffer[mRsmpInFramesP2 * mChannelCount],
+ (framesRead - part1) * mFrameSize);
+ }
+ mRsmpInRear += framesRead;
+ }
+
+ if (!madeProgress) {
+ ALOGV("Did not make progress");
+ usleep(((mFrameCount * 1000) / mSampleRate) * 1000);
+ }
+
+ // resampler accumulates, but we only have one source track
+ memset(mRsmpOutBuffer, 0, framesOut * FCC_2 * sizeof(int32_t));
+ mResampler->resample(mRsmpOutBuffer, framesOut,
+ this /* AudioBufferProvider* */);
+ // ditherAndClamp() works as long as all buffers returned by
+ // activeTrack->getNextBuffer() are 32 bit aligned which should be always true.
+ if (mReqChannelCount == 1) {
+ // temporarily type pun mRsmpOutBuffer from Q19.12 to int16_t
+ ditherAndClamp(mRsmpOutBuffer, mRsmpOutBuffer, framesOut);
+ // the resampler always outputs stereo samples:
+ // do post stereo to mono conversion
+ downmix_to_mono_i16_from_stereo_i16(buffer.i16, (int16_t *)mRsmpOutBuffer,
+ framesOut);
+ } else {
+ ditherAndClamp((int32_t *)buffer.raw, mRsmpOutBuffer, framesOut);
+ }
+ // now done with mRsmpOutBuffer
+
+ }
+ if (mFramestoDrop == 0) {
+ activeTrack->releaseBuffer(&buffer);
+ } else {
+ if (mFramestoDrop > 0) {
+ mFramestoDrop -= buffer.frameCount;
+ if (mFramestoDrop <= 0) {
+ clearSyncStartEvent();
+ }
+ } else {
+ mFramestoDrop += buffer.frameCount;
+ if (mFramestoDrop >= 0 || mSyncStartEvent == 0 ||
+ mSyncStartEvent->isCancelled()) {
+ ALOGW("Synced record %s, session %d, trigger session %d",
+ (mFramestoDrop >= 0) ? "timed out" : "cancelled",
+ activeTrack->sessionId(),
+ (mSyncStartEvent != 0) ? mSyncStartEvent->triggerSession() : 0);
+ clearSyncStartEvent();
+ }
+ }
+ }
+ activeTrack->clearOverflow();
+ }
+ // client isn't retrieving buffers fast enough
+ else {
+ if (!activeTrack->setOverflow()) {
+ nsecs_t now = systemTime();
+ if ((now - lastWarning) > kWarningThrottleNs) {
+ ALOGW("RecordThread: buffer overflow");
+ lastWarning = now;
+ }
+ }
+ // Release the processor for a while before asking for a new buffer.
+ // This will give the application more chance to read from the buffer and
+ // clear the overflow.
+ doSleep = true;
+ }
+
// enable changes in effect chain
unlockEffectChains(effectChains);
- effectChains.clear();
+ // effectChains doesn't need to be cleared, since it is cleared by destructor at scope end
}
- standby();
+ standbyIfNotAlreadyInStandby();
{
Mutex::Autolock _l(mLock);
@@ -4647,7 +4725,7 @@
return false;
}
-void AudioFlinger::RecordThread::standby()
+void AudioFlinger::RecordThread::standbyIfNotAlreadyInStandby()
{
if (!mStandby) {
inputStandBy();
@@ -4660,7 +4738,7 @@
mInput->stream->common.standby(&mInput->stream->common);
}
-sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRecordTrack_l(
+sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createRecordTrack_l(
const sp<AudioFlinger::Client>& client,
uint32_t sampleRate,
audio_format_t format,
@@ -4739,9 +4817,9 @@
track = new RecordTrack(this, client, sampleRate,
format, channelMask, frameCount, sessionId, uid);
- if (track->getCblk() == 0) {
- ALOGE("createRecordTrack_l() no control block");
- lStatus = NO_MEMORY;
+ lStatus = track->initCheck();
+ if (lStatus != NO_ERROR) {
+ ALOGE("createRecordTrack_l() initCheck failed %d; no control block?", lStatus);
track.clear();
goto Exit;
}
@@ -4763,9 +4841,7 @@
lStatus = NO_ERROR;
Exit:
- if (status) {
- *status = lStatus;
- }
+ *status = lStatus;
return track;
}
@@ -4796,6 +4872,7 @@
}
{
+ // This section is a rendezvous between binder thread executing start() and RecordThread
AutoMutex lock(mLock);
if (mActiveTrack != 0) {
if (recordTrack != mActiveTrack.get()) {
@@ -4806,21 +4883,29 @@
return status;
}
+ // FIXME why? already set in constructor, 'STARTING_1' would be more accurate
recordTrack->mState = TrackBase::IDLE;
mActiveTrack = recordTrack;
mLock.unlock();
status_t status = AudioSystem::startInput(mId);
mLock.lock();
+ // FIXME should verify that mActiveTrack is still == recordTrack
if (status != NO_ERROR) {
mActiveTrack.clear();
clearSyncStartEvent();
return status;
}
+ // FIXME LEGACY
mRsmpInIndex = mFrameCount;
+ mRsmpInFront = 0;
+ mRsmpInRear = 0;
+ mRsmpInUnrel = 0;
mBytesRead = 0;
if (mResampler != NULL) {
mResampler->reset();
}
+ // FIXME hijacking a playback track state name which was intended for start after pause;
+ // here 'STARTING_2' would be more accurate
mActiveTrack->mState = TrackBase::RESUMING;
// signal thread to start
ALOGV("Signal record thread");
@@ -4831,6 +4916,7 @@
status = INVALID_OPERATION;
goto startError;
}
+ // FIXME incorrect usage of wait: no explicit predicate or loop
mStartStopCond.wait(mLock);
if (mActiveTrack == 0) {
ALOGV("Record failed to start");
@@ -4881,11 +4967,13 @@
if (recordTrack != mActiveTrack.get() || recordTrack->mState == TrackBase::PAUSING) {
return false;
}
+ // note that threadLoop may still be processing the track at this point [without lock]
recordTrack->mState = TrackBase::PAUSING;
// do not wait for mStartStopCond if exiting
if (exitPending()) {
return true;
}
+ // FIXME incorrect usage of wait: no explicit predicate or loop
mStartStopCond.wait(mLock);
// if we have been restarted, recordTrack == mActiveTrack.get() here
if (exitPending() || recordTrack != mActiveTrack.get()) {
@@ -5009,46 +5097,47 @@
// AudioBufferProvider interface
status_t AudioFlinger::RecordThread::getNextBuffer(AudioBufferProvider::Buffer* buffer, int64_t pts)
{
- size_t framesReq = buffer->frameCount;
- size_t framesReady = mFrameCount - mRsmpInIndex;
- int channelCount;
-
- if (framesReady == 0) {
- mBytesRead = mInput->stream->read(mInput->stream, mRsmpInBuffer, mBufferSize);
- if (mBytesRead <= 0) {
- if ((mBytesRead < 0) && (mActiveTrack->mState == TrackBase::ACTIVE)) {
- ALOGE("RecordThread::getNextBuffer() Error reading audio input");
- // Force input into standby so that it tries to
- // recover at next read attempt
- inputStandBy();
- usleep(kRecordThreadSleepUs);
- }
- buffer->raw = NULL;
- buffer->frameCount = 0;
- return NOT_ENOUGH_DATA;
- }
- mRsmpInIndex = 0;
- framesReady = mFrameCount;
+ int32_t rear = mRsmpInRear;
+ int32_t front = mRsmpInFront;
+ ssize_t filled = rear - front;
+ ALOG_ASSERT(0 <= filled && (size_t) filled <= mRsmpInFramesP2);
+ // 'filled' may be non-contiguous, so return only the first contiguous chunk
+ front &= mRsmpInFramesP2 - 1;
+ size_t part1 = mRsmpInFramesP2 - front;
+ if (part1 > (size_t) filled) {
+ part1 = filled;
+ }
+ size_t ask = buffer->frameCount;
+ ALOG_ASSERT(ask > 0);
+ if (part1 > ask) {
+ part1 = ask;
+ }
+ if (part1 == 0) {
+ // Higher-level should keep mRsmpInBuffer full, and not call resampler if empty
+ ALOGE("RecordThread::getNextBuffer() starved");
+ buffer->raw = NULL;
+ buffer->frameCount = 0;
+ mRsmpInUnrel = 0;
+ return NOT_ENOUGH_DATA;
}
- if (framesReq > framesReady) {
- framesReq = framesReady;
- }
-
- if (mChannelCount == 1 && mReqChannelCount == 2) {
- channelCount = 1;
- } else {
- channelCount = 2;
- }
- buffer->raw = mRsmpInBuffer + mRsmpInIndex * channelCount;
- buffer->frameCount = framesReq;
+ buffer->raw = mRsmpInBuffer + front * mChannelCount;
+ buffer->frameCount = part1;
+ mRsmpInUnrel = part1;
return NO_ERROR;
}
// AudioBufferProvider interface
void AudioFlinger::RecordThread::releaseBuffer(AudioBufferProvider::Buffer* buffer)
{
- mRsmpInIndex += buffer->frameCount;
+ size_t stepCount = buffer->frameCount;
+ if (stepCount == 0) {
+ return;
+ }
+ ALOG_ASSERT(stepCount <= mRsmpInUnrel);
+ mRsmpInUnrel -= stepCount;
+ mRsmpInFront += stepCount;
+ buffer->raw = NULL;
buffer->frameCount = 0;
}
@@ -5063,7 +5152,7 @@
int value;
audio_format_t reqFormat = mFormat;
uint32_t reqSamplingRate = mReqSampleRate;
- uint32_t reqChannelCount = mReqChannelCount;
+ audio_channel_mask_t reqChannelMask = audio_channel_in_mask_from_count(mReqChannelCount);
if (param.getInt(String8(AudioParameter::keySamplingRate), value) == NO_ERROR) {
reqSamplingRate = value;
@@ -5078,8 +5167,13 @@
}
}
if (param.getInt(String8(AudioParameter::keyChannels), value) == NO_ERROR) {
- reqChannelCount = popcount(value);
- reconfig = true;
+ audio_channel_mask_t mask = (audio_channel_mask_t) value;
+ if (mask != AUDIO_CHANNEL_IN_MONO && mask != AUDIO_CHANNEL_IN_STEREO) {
+ status = BAD_VALUE;
+ } else {
+ reqChannelMask = mask;
+ reconfig = true;
+ }
}
if (param.getInt(String8(AudioParameter::keyFrameCount), value) == NO_ERROR) {
// do not accept frame count changes if tracks are open as the track buffer
@@ -5128,6 +5222,7 @@
}
mAudioSource = (audio_source_t)value;
}
+
if (status == NO_ERROR) {
status = mInput->stream->common.set_parameters(&mInput->stream->common,
keyValuePair.string());
@@ -5144,7 +5239,8 @@
<= (2 * reqSamplingRate)) &&
popcount(mInput->stream->common.get_channels(&mInput->stream->common))
<= FCC_2 &&
- (reqChannelCount <= FCC_2)) {
+ (reqChannelMask == AUDIO_CHANNEL_IN_MONO ||
+ reqChannelMask == AUDIO_CHANNEL_IN_STEREO)) {
status = NO_ERROR;
}
if (status == NO_ERROR) {
@@ -5180,7 +5276,7 @@
void AudioFlinger::RecordThread::audioConfigChanged_l(int event, int param) {
AudioSystem::OutputDescriptor desc;
- void *param2 = NULL;
+ const void *param2 = NULL;
switch (event) {
case AudioSystem::INPUT_OPENED:
@@ -5219,29 +5315,22 @@
mFrameSize = audio_stream_frame_size(&mInput->stream->common);
mBufferSize = mInput->stream->common.get_buffer_size(&mInput->stream->common);
mFrameCount = mBufferSize / mFrameSize;
- mRsmpInBuffer = new int16_t[mFrameCount * mChannelCount];
+ // With 3 HAL buffers, we can guarantee ability to down-sample the input by ratio of 2:1 to
+ // 1 full output buffer, regardless of the alignment of the available input.
+ mRsmpInFrames = mFrameCount * 3;
+ mRsmpInFramesP2 = roundup(mRsmpInFrames);
+ // Over-allocate beyond mRsmpInFramesP2 to permit a HAL read past end of buffer
+ mRsmpInBuffer = new int16_t[(mRsmpInFramesP2 + mFrameCount - 1) * mChannelCount];
+ mRsmpInFront = 0;
+ mRsmpInRear = 0;
+ mRsmpInUnrel = 0;
- if (mSampleRate != mReqSampleRate && mChannelCount <= FCC_2 && mReqChannelCount <= FCC_2)
- {
- int channelCount;
- // optimization: if mono to mono, use the resampler in stereo to stereo mode to avoid
- // stereo to mono post process as the resampler always outputs stereo.
- if (mChannelCount == 1 && mReqChannelCount == 2) {
- channelCount = 1;
- } else {
- channelCount = 2;
- }
- mResampler = AudioResampler::create(16, channelCount, mReqSampleRate);
+ if (mSampleRate != mReqSampleRate && mChannelCount <= FCC_2 && mReqChannelCount <= FCC_2) {
+ mResampler = AudioResampler::create(16, (int) mChannelCount, mReqSampleRate);
mResampler->setSampleRate(mSampleRate);
mResampler->setVolume(AudioMixer::UNITY_GAIN, AudioMixer::UNITY_GAIN);
+ // resampler always outputs stereo
mRsmpOutBuffer = new int32_t[mFrameCount * FCC_2];
-
- // optmization: if mono to mono, alter input frame count as if we were inputing
- // stereo samples
- if (mChannelCount == 1 && mReqChannelCount == 1) {
- mFrameCount >>= 1;
- }
-
}
mRsmpInIndex = mFrameCount;
}
diff --git a/services/audioflinger/Threads.h b/services/audioflinger/Threads.h
index 207f1eb..d31009e 100644
--- a/services/audioflinger/Threads.h
+++ b/services/audioflinger/Threads.h
@@ -36,6 +36,8 @@
audio_devices_t outDevice, audio_devices_t inDevice, type_t type);
virtual ~ThreadBase();
+ virtual status_t readyToRun();
+
void dumpBase(int fd, const Vector<String16>& args);
void dumpEffectChains(int fd, const Vector<String16>& args);
@@ -141,6 +143,7 @@
void sendIoConfigEvent_l(int event, int param = 0);
void sendPrioConfigEvent_l(pid_t pid, pid_t tid, int32_t prio);
void processConfigEvents();
+ void processConfigEvents_l();
// see note at declaration of mStandby, mOutDevice and mInDevice
bool standby() const { return mStandby; }
@@ -156,7 +159,7 @@
int sessionId,
effect_descriptor_t *desc,
int *enabled,
- status_t *status);
+ status_t *status /*non-NULL*/);
void disconnectEffect(const sp< EffectModule>& effect,
EffectHandle *handle,
bool unpinIfLast);
@@ -275,6 +278,7 @@
uint32_t mChannelCount;
size_t mFrameSize;
audio_format_t mFormat;
+ size_t mBufferSize; // HAL buffer size for read() or write()
// Parameter sequence by client: binder thread calling setParameters():
// 1. Lock mLock
@@ -358,7 +362,6 @@
void dump(int fd, const Vector<String16>& args);
// Thread virtuals
- virtual status_t readyToRun();
virtual bool threadLoop();
// RefBase
@@ -425,7 +428,7 @@
IAudioFlinger::track_flags_t *flags,
pid_t tid,
int uid,
- status_t *status);
+ status_t *status /*non-NULL*/);
AudioStreamOut* getOutput() const;
AudioStreamOut* clearOutput();
@@ -479,7 +482,6 @@
size_t mNormalFrameCount; // normal mixer and effects
int16_t* mMixBuffer; // frame size aligned mix buffer
- int8_t* mAllocMixBuffer; // mixer buffer allocation address
// suspend count, > 0 means suspended. While suspended, the thread continues to pull from
// tracks and mix, but doesn't write to HAL. A2DP and SCO HAL implementations can't handle
@@ -867,12 +869,12 @@
// Thread virtuals
virtual bool threadLoop();
- virtual status_t readyToRun();
// RefBase
virtual void onFirstRef();
virtual status_t initCheck() const { return (mInput == NULL) ? NO_INIT : NO_ERROR; }
+
sp<AudioFlinger::RecordThread::RecordTrack> createRecordTrack_l(
const sp<AudioFlinger::Client>& client,
uint32_t sampleRate,
@@ -883,7 +885,7 @@
int uid,
IAudioFlinger::track_flags_t *flags,
pid_t tid,
- status_t *status);
+ status_t *status /*non-NULL*/);
status_t start(RecordTrack* recordTrack,
AudioSystem::sync_event_t event,
@@ -926,13 +928,13 @@
bool hasFastRecorder() const { return false; }
private:
- void clearSyncStartEvent();
+ void clearSyncStartEvent();
// Enter standby if not already in standby, and set mStandby flag
- void standby();
+ void standbyIfNotAlreadyInStandby();
// Call the HAL standby method unconditionally, and don't change mStandby flag
- void inputStandBy();
+ void inputStandBy();
AudioStreamIn *mInput;
SortedVector < sp<RecordTrack> > mTracks;
@@ -945,11 +947,22 @@
AudioResampler *mResampler;
// interleaved stereo pairs of fixed-point signed Q19.12
int32_t *mRsmpOutBuffer;
- int16_t *mRsmpInBuffer; // [mFrameCount * mChannelCount]
- size_t mRsmpInIndex;
- size_t mBufferSize; // stream buffer size for read()
+
+ // resampler converts input at HAL Hz to output at AudioRecord client Hz
+ int16_t *mRsmpInBuffer; // see new[] for details on the size
+ size_t mRsmpInFrames; // size of resampler input in frames
+ size_t mRsmpInFramesP2;// size rounded up to a power-of-2
+ size_t mRsmpInUnrel; // unreleased frames remaining from
+ // most recent getNextBuffer
+ // these are rolling counters that are never cleared
+ int32_t mRsmpInFront; // next available frame
+ int32_t mRsmpInRear; // last filled frame + 1
+ size_t mRsmpInIndex; // FIXME legacy
+
+ // client's requested configuration, which may differ from the HAL configuration
const uint32_t mReqChannelCount;
const uint32_t mReqSampleRate;
+
ssize_t mBytesRead;
// sync event triggering actual audio capture. Frames read before this event will
// be dropped and therefore not read by the application.
diff --git a/services/audioflinger/TrackBase.h b/services/audioflinger/TrackBase.h
index cd201d9..05fde7c 100644
--- a/services/audioflinger/TrackBase.h
+++ b/services/audioflinger/TrackBase.h
@@ -48,6 +48,7 @@
int uid,
bool isOut);
virtual ~TrackBase();
+ virtual status_t initCheck() const { return getCblk() != 0 ? NO_ERROR : NO_MEMORY; }
virtual status_t start(AudioSystem::sync_event_t event,
int triggerSession) = 0;
@@ -78,15 +79,6 @@
virtual uint32_t sampleRate() const { return mSampleRate; }
- // Return a pointer to the start of a contiguous slice of the track buffer.
- // Parameter 'offset' is the requested start position, expressed in
- // monotonically increasing frame units relative to the track epoch.
- // Parameter 'frames' is the requested length, also in frame units.
- // Always returns non-NULL. It is the caller's responsibility to
- // verify that this will be successful; the result of calling this
- // function with invalid 'offset' or 'frames' is undefined.
- void* getBuffer(uint32_t offset, uint32_t frames) const;
-
bool isStopped() const {
return (mState == STOPPED || mState == FLUSHED);
}
diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp
index af04ce7..53196c8 100644
--- a/services/audioflinger/Tracks.cpp
+++ b/services/audioflinger/Tracks.cpp
@@ -116,12 +116,11 @@
if (client != 0) {
mCblkMemory = client->heap()->allocate(size);
- if (mCblkMemory != 0) {
- mCblk = static_cast<audio_track_cblk_t *>(mCblkMemory->pointer());
- // can't assume mCblk != NULL
- } else {
+ if (mCblkMemory == 0 ||
+ (mCblk = static_cast<audio_track_cblk_t *>(mCblkMemory->pointer())) == NULL) {
ALOGE("not enough memory for AudioTrack size=%u", size);
client->heap()->dump("AudioTrack");
+ mCblkMemory.clear();
return;
}
} else {
@@ -275,6 +274,11 @@
if (!mTrack->isTimedTrack())
return INVALID_OPERATION;
+ if (buffer == 0 || buffer->pointer() == NULL) {
+ ALOGE("queueTimedBuffer() buffer is 0 or has NULL pointer()");
+ return BAD_VALUE;
+ }
+
PlaybackThread::TimedTrack* tt =
reinterpret_cast<PlaybackThread::TimedTrack*>(mTrack.get());
return tt->queueTimedBuffer(buffer, pts);
@@ -396,6 +400,15 @@
}
}
+status_t AudioFlinger::PlaybackThread::Track::initCheck() const
+{
+ status_t status = TrackBase::initCheck();
+ if (status == NO_ERROR && mName < 0) {
+ status = NO_MEMORY;
+ }
+ return status;
+}
+
void AudioFlinger::PlaybackThread::Track::destroy()
{
// NOTE: destroyTrack_l() can remove a strong reference to this Track
@@ -1045,15 +1058,14 @@
mTimedMemoryDealer = new MemoryDealer(kTimedBufferHeapSize,
"AudioFlingerTimed");
- if (mTimedMemoryDealer == NULL)
+ if (mTimedMemoryDealer == NULL) {
return NO_MEMORY;
+ }
}
sp<IMemory> newBuffer = mTimedMemoryDealer->allocate(size);
- if (newBuffer == NULL) {
- newBuffer = mTimedMemoryDealer->allocate(size);
- if (newBuffer == NULL)
- return NO_MEMORY;
+ if (newBuffer == 0 || newBuffer->pointer() == NULL) {
+ return NO_MEMORY;
}
*buffer = newBuffer;
@@ -1764,9 +1776,7 @@
{
ALOGV("RecordTrack constructor");
if (mCblk != NULL) {
- mAudioRecordServerProxy = new AudioRecordServerProxy(mCblk, mBuffer, frameCount,
- mFrameSize);
- mServerProxy = mAudioRecordServerProxy;
+ mServerProxy = new AudioRecordServerProxy(mCblk, mBuffer, frameCount, mFrameSize);
}
}
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index 3dbc1b0..edb77aa 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -100,8 +100,10 @@
camera3_device_t *device;
+ ATRACE_BEGIN("camera3->open");
res = module->common.methods->open(&module->common, deviceName.string(),
reinterpret_cast<hw_device_t**>(&device));
+ ATRACE_END();
if (res != OK) {
SET_ERR_L("Could not open camera: %s (%d)", strerror(-res), res);
@@ -269,7 +271,9 @@
mStatusTracker.clear();
if (mHal3Device != NULL) {
+ ATRACE_BEGIN("camera3->close");
mHal3Device->common.close(&mHal3Device->common);
+ ATRACE_END();
mHal3Device = NULL;
}
@@ -1664,8 +1668,10 @@
return;
}
- // Check if everything has arrived for this result (buffers and metadata)
- if (request.haveResultMetadata && request.numBuffersLeft == 0) {
+ // Check if everything has arrived for this result (buffers and metadata), remove it from
+ // InFlightMap if both arrived or HAL reports error for this request (i.e. during flush).
+ if ((request.requestStatus != OK) ||
+ (request.haveResultMetadata && request.numBuffersLeft == 0)) {
ATRACE_ASYNC_END("frame capture", frameNumber);
mInFlightMap.removeItemsAt(idx, 1);
}
diff --git a/services/camera/libcameraservice/device3/Camera3InputStream.cpp b/services/camera/libcameraservice/device3/Camera3InputStream.cpp
index 5aa9a3e..e1c492b 100644
--- a/services/camera/libcameraservice/device3/Camera3InputStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3InputStream.cpp
@@ -199,13 +199,33 @@
assert(mMaxSize == 0);
assert(camera3_stream::format != HAL_PIXEL_FORMAT_BLOB);
- mTotalBufferCount = BufferQueue::MIN_UNDEQUEUED_BUFFERS +
- camera3_stream::max_buffers;
mDequeuedBufferCount = 0;
mFrameCount = 0;
if (mConsumer.get() == 0) {
sp<BufferQueue> bq = new BufferQueue();
+
+ int minUndequeuedBuffers = 0;
+ res = bq->query(NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS, &minUndequeuedBuffers);
+ if (res != OK || minUndequeuedBuffers < 0) {
+ ALOGE("%s: Stream %d: Could not query min undequeued buffers (error %d, bufCount %d)",
+ __FUNCTION__, mId, res, minUndequeuedBuffers);
+ return res;
+ }
+ size_t minBufs = static_cast<size_t>(minUndequeuedBuffers);
+ /*
+ * We promise never to 'acquire' more than camera3_stream::max_buffers
+ * at any one time.
+ *
+ * Boost the number up to meet the minimum required buffer count.
+ *
+ * (Note that this sets consumer-side buffer count only,
+ * and not the sum of producer+consumer side as in other camera streams).
+ */
+ mTotalBufferCount = camera3_stream::max_buffers > minBufs ?
+ camera3_stream::max_buffers : minBufs;
+ // TODO: somehow set the total buffer count when producer connects?
+
mConsumer = new BufferItemConsumer(bq, camera3_stream::usage,
mTotalBufferCount);
mConsumer->setName(String8::format("Camera3-InputStream-%d", mId));
diff --git a/services/camera/libcameraservice/device3/Camera3InputStream.h b/services/camera/libcameraservice/device3/Camera3InputStream.h
index 681d684..ae49467 100644
--- a/services/camera/libcameraservice/device3/Camera3InputStream.h
+++ b/services/camera/libcameraservice/device3/Camera3InputStream.h
@@ -44,6 +44,8 @@
virtual void dump(int fd, const Vector<String16> &args) const;
+ // TODO: expose an interface to get the IGraphicBufferProducer
+
private:
typedef BufferItemConsumer::BufferItem BufferItem;
diff --git a/services/camera/libcameraservice/device3/Camera3ZslStream.cpp b/services/camera/libcameraservice/device3/Camera3ZslStream.cpp
index 04f5dc5..5f63a6e 100644
--- a/services/camera/libcameraservice/device3/Camera3ZslStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3ZslStream.cpp
@@ -109,14 +109,14 @@
} // namespace anonymous
Camera3ZslStream::Camera3ZslStream(int id, uint32_t width, uint32_t height,
- int depth) :
+ int bufferCount) :
Camera3OutputStream(id, CAMERA3_STREAM_BIDIRECTIONAL,
width, height,
HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED),
- mDepth(depth) {
+ mDepth(bufferCount) {
sp<BufferQueue> bq = new BufferQueue();
- mProducer = new RingBufferConsumer(bq, GRALLOC_USAGE_HW_CAMERA_ZSL, depth);
+ mProducer = new RingBufferConsumer(bq, GRALLOC_USAGE_HW_CAMERA_ZSL, bufferCount);
mConsumer = new Surface(bq);
}
diff --git a/services/camera/libcameraservice/device3/Camera3ZslStream.h b/services/camera/libcameraservice/device3/Camera3ZslStream.h
index c7f4490..6721832 100644
--- a/services/camera/libcameraservice/device3/Camera3ZslStream.h
+++ b/services/camera/libcameraservice/device3/Camera3ZslStream.h
@@ -37,10 +37,10 @@
public Camera3OutputStream {
public:
/**
- * Set up a ZSL stream of a given resolution. Depth is the number of buffers
+ * Set up a ZSL stream of a given resolution. bufferCount is the number of buffers
* cached within the stream that can be retrieved for input.
*/
- Camera3ZslStream(int id, uint32_t width, uint32_t height, int depth);
+ Camera3ZslStream(int id, uint32_t width, uint32_t height, int bufferCount);
~Camera3ZslStream();
virtual void dump(int fd, const Vector<String16> &args) const;
diff --git a/services/camera/libcameraservice/gui/RingBufferConsumer.h b/services/camera/libcameraservice/gui/RingBufferConsumer.h
index b4ad824..a03736d 100644
--- a/services/camera/libcameraservice/gui/RingBufferConsumer.h
+++ b/services/camera/libcameraservice/gui/RingBufferConsumer.h
@@ -64,7 +64,7 @@
// bufferCount parameter specifies how many buffers can be pinned for user
// access at the same time.
RingBufferConsumer(const sp<IGraphicBufferConsumer>& consumer, uint32_t consumerUsage,
- int bufferCount = BufferQueue::MIN_UNDEQUEUED_BUFFERS);
+ int bufferCount);
virtual ~RingBufferConsumer();