Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2009-07-10 05:57:55 +0400
committerJoshua Leung <aligorith@gmail.com>2009-07-10 05:57:55 +0400
commit0051f1be8ea6e329649d4a476e6c4cb5d1d101ef (patch)
treeb96dd939058d529f88a990876e2ec002ea6a0c8f
parentd7a7081e633f458d3c68f6ccff5376c0340fe42e (diff)
parent9241559ab4c223d30a949f2e06c776642b69715c (diff)
NLA SoC: Merge from 2.5
21330 to 21469
-rw-r--r--CMakeLists.txt4
-rw-r--r--config/win32-mingw-config.py10
-rw-r--r--intern/ghost/GHOST_C-api.h11
-rw-r--r--intern/ghost/GHOST_IWindow.h8
-rw-r--r--intern/ghost/intern/GHOST_C-api.cpp8
-rw-r--r--intern/ghost/intern/GHOST_SystemX11.cpp15
-rw-r--r--intern/ghost/intern/GHOST_Window.cpp15
-rw-r--r--intern/ghost/intern/GHOST_Window.h16
-rw-r--r--intern/ghost/intern/GHOST_WindowX11.cpp15
-rw-r--r--intern/ghost/intern/GHOST_WindowX11.h9
-rw-r--r--projectfiles_vc9/blender/blender.sln1
-rw-r--r--projectfiles_vc9/blender/editors/ED_editors.vcproj32
-rw-r--r--projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj14
-rw-r--r--projectfiles_vc9/blender/makesrna/RNA_rna.vcproj104
-rw-r--r--release/ui/buttons_data_armature.py23
-rw-r--r--release/ui/buttons_data_bone.py65
-rw-r--r--release/ui/buttons_data_camera.py69
-rw-r--r--release/ui/buttons_data_curve.py46
-rw-r--r--release/ui/buttons_data_lamp.py20
-rw-r--r--release/ui/buttons_data_lattice.py46
-rw-r--r--release/ui/buttons_data_mesh.py80
-rw-r--r--release/ui/buttons_data_modifier.py11
-rw-r--r--release/ui/buttons_data_text.py53
-rw-r--r--release/ui/buttons_material.py47
-rw-r--r--release/ui/buttons_objects.py15
-rw-r--r--release/ui/buttons_particle.py37
-rw-r--r--release/ui/buttons_physic_cloth.py3
-rw-r--r--release/ui/buttons_physics_field.py24
-rw-r--r--release/ui/buttons_physics_fluid.py173
-rw-r--r--release/ui/buttons_physics_softbody.py182
-rw-r--r--release/ui/buttons_scene.py2
-rw-r--r--release/ui/buttons_texture.py39
-rw-r--r--release/ui/buttons_world.py21
-rw-r--r--release/ui/space_filebrowser.py6
-rw-r--r--release/ui/space_image.py6
-rw-r--r--release/ui/space_sequencer.py8
-rw-r--r--release/ui/space_view3d_toolbar.py4
-rw-r--r--source/Makefile3
-rw-r--r--source/blender/blenkernel/BKE_particle.h5
-rw-r--r--source/blender/blenkernel/BKE_pointcache.h1
-rw-r--r--source/blender/blenkernel/intern/anim.c13
-rw-r--r--source/blender/blenkernel/intern/cloth.c9
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c4
-rw-r--r--source/blender/blenkernel/intern/fluidsim.c2
-rw-r--r--source/blender/blenkernel/intern/lattice.c105
-rw-r--r--source/blender/blenkernel/intern/modifier.c95
-rw-r--r--source/blender/blenkernel/intern/packedFile.c2
-rw-r--r--source/blender/blenkernel/intern/particle.c547
-rw-r--r--source/blender/blenkernel/intern/particle_system.c42
-rw-r--r--source/blender/blenkernel/intern/pointcache.c30
-rw-r--r--source/blender/blenkernel/intern/sequence.c4
-rw-r--r--source/blender/blenkernel/intern/subsurf_ccg.c1
-rw-r--r--source/blender/blenlib/BLI_graph.h1
-rw-r--r--source/blender/blenlib/intern/storage.c2
-rw-r--r--source/blender/blenlib/intern/util.c6
-rw-r--r--source/blender/blenloader/intern/readfile.c22
-rw-r--r--source/blender/editors/armature/BIF_retarget.h2
-rw-r--r--source/blender/editors/armature/armature_intern.h5
-rw-r--r--source/blender/editors/armature/armature_ops.c13
-rw-r--r--source/blender/editors/armature/editarmature.c50
-rw-r--r--source/blender/editors/armature/editarmature_generate.c25
-rw-r--r--source/blender/editors/armature/editarmature_retarget.c2
-rw-r--r--source/blender/editors/armature/editarmature_sketch.c1138
-rw-r--r--source/blender/editors/armature/poseobject.c73
-rw-r--r--source/blender/editors/armature/reeb.c3
-rw-r--r--source/blender/editors/armature/reeb.h1
-rw-r--r--source/blender/editors/curve/curve_intern.h2
-rw-r--r--source/blender/editors/curve/curve_ops.c7
-rw-r--r--source/blender/editors/curve/editcurve.c21
-rw-r--r--source/blender/editors/datafiles/blenderbuttons.c11029
-rw-r--r--source/blender/editors/include/BIF_gl.h27
-rw-r--r--source/blender/editors/include/BIF_glutil.h4
-rw-r--r--source/blender/editors/include/BIF_transform.h165
-rw-r--r--source/blender/editors/include/ED_armature.h15
-rw-r--r--source/blender/editors/include/ED_fileselect.h2
-rw-r--r--source/blender/editors/include/ED_mesh.h23
-rw-r--r--source/blender/editors/include/ED_retopo.h (renamed from source/blender/editors/include/BIF_retopo.h)5
-rw-r--r--source/blender/editors/include/ED_screen.h1
-rw-r--r--source/blender/editors/include/ED_transform.h144
-rw-r--r--source/blender/editors/include/UI_icons.h2
-rw-r--r--source/blender/editors/include/UI_interface.h12
-rw-r--r--source/blender/editors/include/UI_view2d.h4
-rw-r--r--source/blender/editors/interface/interface.c20
-rw-r--r--source/blender/editors/interface/interface_handlers.c3
-rw-r--r--source/blender/editors/interface/interface_icons.c23
-rw-r--r--source/blender/editors/interface/interface_intern.h1
-rw-r--r--source/blender/editors/interface/interface_layout.c8
-rw-r--r--source/blender/editors/interface/interface_panel.c53
-rw-r--r--source/blender/editors/interface/interface_templates.c14
-rw-r--r--source/blender/editors/interface/interface_widgets.c58
-rw-r--r--source/blender/editors/interface/keyval.c540
-rw-r--r--source/blender/editors/interface/view2d.c32
-rw-r--r--source/blender/editors/interface/view2d_ops.c14
-rw-r--r--source/blender/editors/mesh/editmesh.c33
-rw-r--r--source/blender/editors/mesh/editmesh_add.c74
-rw-r--r--source/blender/editors/mesh/editmesh_loop.c15
-rw-r--r--source/blender/editors/mesh/editmesh_mods.c473
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c752
-rw-r--r--source/blender/editors/mesh/mesh_intern.h21
-rw-r--r--source/blender/editors/mesh/mesh_ops.c223
-rw-r--r--source/blender/editors/object/editkey.c116
-rw-r--r--source/blender/editors/object/editlattice.c174
-rw-r--r--source/blender/editors/object/object_edit.c184
-rw-r--r--source/blender/editors/object/object_intern.h7
-rw-r--r--source/blender/editors/object/object_modifier.c61
-rw-r--r--source/blender/editors/object/object_ops.c15
-rw-r--r--source/blender/editors/physics/ed_pointcache.c5
-rw-r--r--source/blender/editors/physics/editparticle.c2
-rw-r--r--source/blender/editors/screen/area.c22
-rw-r--r--source/blender/editors/screen/screen_ops.c9
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex.c19
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c4
-rw-r--r--source/blender/editors/space_action/action_edit.c3
-rw-r--r--source/blender/editors/space_action/action_ops.c2
-rw-r--r--source/blender/editors/space_buttons/buttons_context.c19
-rw-r--r--source/blender/editors/space_buttons/buttons_ops.c1
-rw-r--r--source/blender/editors/space_file/file_intern.h6
-rw-r--r--source/blender/editors/space_file/file_ops.c117
-rw-r--r--source/blender/editors/space_file/file_panels.c7
-rw-r--r--source/blender/editors/space_file/filelist.c88
-rw-r--r--source/blender/editors/space_file/filelist.h6
-rw-r--r--source/blender/editors/space_file/filesel.c38
-rw-r--r--source/blender/editors/space_file/space_file.c96
-rw-r--r--source/blender/editors/space_graph/graph_edit.c3
-rw-r--r--source/blender/editors/space_graph/graph_ops.c3
-rw-r--r--source/blender/editors/space_image/image_header.c531
-rw-r--r--source/blender/editors/space_image/image_ops.c2
-rw-r--r--source/blender/editors/space_image/space_image.c20
-rw-r--r--source/blender/editors/space_node/node_edit.c43
-rw-r--r--source/blender/editors/space_node/node_intern.h1
-rw-r--r--source/blender/editors/space_node/node_ops.c7
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c9
-rw-r--r--source/blender/editors/space_sequencer/sequencer_intern.h4
-rw-r--r--source/blender/editors/space_sequencer/sequencer_ops.c11
-rw-r--r--source/blender/editors/space_sequencer/sequencer_select.c10
-rw-r--r--source/blender/editors/space_text/text_draw.c55
-rw-r--r--source/blender/editors/space_view3d/drawarmature.c4
-rw-r--r--source/blender/editors/space_view3d/drawobject.c600
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c7
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c7
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c3
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c277
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c1239
-rw-r--r--source/blender/editors/space_view3d/view3d_intern.h8
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c20
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c3
-rw-r--r--source/blender/editors/space_view3d/view3d_toolbar.c2
-rw-r--r--source/blender/editors/transform/transform.c4
-rw-r--r--source/blender/editors/transform/transform.h9
-rw-r--r--source/blender/editors/transform/transform_conversions.c9
-rw-r--r--source/blender/editors/transform/transform_generics.c9
-rw-r--r--source/blender/editors/transform/transform_input.c58
-rw-r--r--source/blender/editors/transform/transform_manipulator.c1074
-rw-r--r--source/blender/editors/transform/transform_ndofinput.c10
-rw-r--r--source/blender/editors/transform/transform_ops.c105
-rw-r--r--source/blender/editors/transform/transform_orientations.c4
-rw-r--r--source/blender/editors/transform/transform_snap.c3
-rw-r--r--source/blender/editors/util/undo.c20
-rw-r--r--source/blender/editors/uvedit/uvedit_draw.c5
-rw-r--r--source/blender/editors/uvedit/uvedit_ops.c13
-rw-r--r--source/blender/editors/uvedit/uvedit_unwrap_ops.c2
-rw-r--r--source/blender/makesdna/DNA_modifier_types.h5
-rw-r--r--source/blender/makesdna/DNA_particle_types.h8
-rw-r--r--source/blender/makesdna/DNA_screen_types.h1
-rw-r--r--source/blender/makesdna/DNA_space_types.h35
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h3
-rw-r--r--source/blender/makesdna/DNA_windowmanager_types.h19
-rw-r--r--source/blender/makesdna/intern/dna_genfile.c5
-rw-r--r--source/blender/makesdna/intern/makesdna.c5
-rw-r--r--source/blender/makesrna/RNA_define.h1
-rw-r--r--source/blender/makesrna/RNA_types.h4
-rw-r--r--source/blender/makesrna/intern/makesrna.c8
-rw-r--r--source/blender/makesrna/intern/rna_define.c6
-rw-r--r--source/blender/makesrna/intern/rna_key.c59
-rw-r--r--source/blender/makesrna/intern/rna_lattice.c115
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c35
-rw-r--r--source/blender/makesrna/intern/rna_object.c22
-rw-r--r--source/blender/makesrna/intern/rna_object_force.c2
-rw-r--r--source/blender/makesrna/intern/rna_particle.c75
-rw-r--r--source/blender/makesrna/intern/rna_rna.c25
-rw-r--r--source/blender/makesrna/intern/rna_scene.c4
-rw-r--r--source/blender/makesrna/intern/rna_sequence.c30
-rw-r--r--source/blender/makesrna/intern/rna_space.c21
-rw-r--r--source/blender/makesrna/intern/rna_ui.c4
-rw-r--r--source/blender/makesrna/intern/rna_wm.c48
-rw-r--r--source/blender/makesrna/intern/rna_world.c2
-rw-r--r--source/blender/python/BPY_extern.h2
-rw-r--r--source/blender/python/generic/euler.c37
-rw-r--r--source/blender/python/generic/quat.c24
-rw-r--r--source/blender/python/generic/vector.c2
-rw-r--r--source/blender/python/intern/bpy_compat.h6
-rw-r--r--source/blender/python/intern/bpy_interface.c71
-rw-r--r--source/blender/python/intern/bpy_operator.c8
-rw-r--r--source/blender/python/intern/bpy_operator_wrap.c7
-rw-r--r--source/blender/python/intern/bpy_rna.c167
-rw-r--r--source/blender/render/intern/source/convertblender.c163
-rw-r--r--source/blender/render/intern/source/pipeline.c13
-rw-r--r--source/blender/render/intern/source/zbuf.c30
-rw-r--r--source/blender/windowmanager/WM_api.h4
-rw-r--r--source/blender/windowmanager/intern/wm_cursors.c5
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c17
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c13
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.cpp12
203 files changed, 11969 insertions, 11617 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 714ec4095af..a4796c2eee9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -87,7 +87,7 @@ INCLUDE(CMake/macros.cmake)
#-----------------------------------------------------------------------------
#Platform specifics
-IF(UNIX)
+IF(UNIX AND NOT APPLE)
IF(WITH_OPENAL)
FIND_PACKAGE(OpenAL)
IF(OPENAL_FOUND)
@@ -177,7 +177,7 @@ IF(UNIX)
SET(C_WARNINGS "-Wall -Wno-char-subscripts -Wpointer-arith -Wcast-align -Wnested-externs -Wdeclaration-after-statement")
INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR} ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
-ENDIF(UNIX)
+ENDIF(UNIX AND NOT APPLE)
IF(WIN32)
diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py
index 42e56417f54..eab373d2553 100644
--- a/config/win32-mingw-config.py
+++ b/config/win32-mingw-config.py
@@ -3,12 +3,16 @@ LIBDIR = "${LCGDIR}"
BF_PYTHON = LIBDIR + '/python'
BF_PYTHON_VERSION = '2.5'
+#BF_PYTHON_VERSION = '2.6'
WITH_BF_STATICPYTHON = False
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
BF_PYTHON_BINARY = 'python'
-BF_PYTHON_LIB = 'python25'
-BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib/lib25_vs2005'
-BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/lib25_vs2005/libpython25.a'
+#BF_PYTHON_LIB = 'python25'
+#BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib/lib25_vs2005'
+#BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/lib25_vs2005/libpython25.a'
+BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}'
+BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
+BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}.a'
WITH_BF_OPENAL = True
WITH_BF_STATICOPENAL = False
diff --git a/intern/ghost/GHOST_C-api.h b/intern/ghost/GHOST_C-api.h
index c3158214830..c0b7077fb53 100644
--- a/intern/ghost/GHOST_C-api.h
+++ b/intern/ghost/GHOST_C-api.h
@@ -367,6 +367,17 @@ extern GHOST_TSuccess GHOST_SetCursorPosition(GHOST_SystemHandle systemhandle,
GHOST_TInt32 x,
GHOST_TInt32 y);
+/**
+ * Grabs the cursor for a modal operation, to keep receiving
+ * events when the mouse is outside the window. X11 only, others
+ * do this automatically.
+ * @param windowhandle The handle to the window
+ * @param grab The new grab state of the cursor.
+ * @return Indication of success.
+ */
+extern GHOST_TSuccess GHOST_SetCursorGrab(GHOST_WindowHandle windowhandle,
+ int grab);
+
/***************************************************************************************
** Access to mouse button and keyboard states.
***************************************************************************************/
diff --git a/intern/ghost/GHOST_IWindow.h b/intern/ghost/GHOST_IWindow.h
index 0861d8b8946..d91995e35ec 100644
--- a/intern/ghost/GHOST_IWindow.h
+++ b/intern/ghost/GHOST_IWindow.h
@@ -252,6 +252,14 @@ public:
* @return Indication of success.
*/
virtual GHOST_TSuccess setCursorVisibility(bool visible) = 0;
+
+ /**
+ * Grabs the cursor for a modal operation.
+ * @param grab The new grab state of the cursor.
+ * @return Indication of success.
+ */
+ virtual GHOST_TSuccess setCursorGrab(bool grab) { return GHOST_kSuccess; };
+
};
#endif // _GHOST_IWINDOW_H_
diff --git a/intern/ghost/intern/GHOST_C-api.cpp b/intern/ghost/intern/GHOST_C-api.cpp
index 401dba8d240..5c23b6c42a3 100644
--- a/intern/ghost/intern/GHOST_C-api.cpp
+++ b/intern/ghost/intern/GHOST_C-api.cpp
@@ -354,6 +354,14 @@ GHOST_TSuccess GHOST_SetCursorPosition(GHOST_SystemHandle systemhandle,
}
+GHOST_TSuccess GHOST_SetCursorGrab(GHOST_WindowHandle windowhandle,
+ int grab)
+{
+ GHOST_IWindow* window = (GHOST_IWindow*) windowhandle;
+
+ return window->setCursorGrab(grab?true:false);
+}
+
GHOST_TSuccess GHOST_GetModifierKeyState(GHOST_SystemHandle systemhandle,
GHOST_TModifierKeyMask mask,
diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp
index a975322e9ce..fcf78d9ad20 100644
--- a/intern/ghost/intern/GHOST_SystemX11.cpp
+++ b/intern/ghost/intern/GHOST_SystemX11.cpp
@@ -550,11 +550,26 @@ GHOST_SystemX11::processEvent(XEvent *xe)
// We're not interested in the following things.(yet...)
case NoExpose :
case GraphicsExpose :
+ break;
case EnterNotify:
case LeaveNotify:
+ {
// XCrossingEvents pointer leave enter window.
+ // also do cursor move here, MotionNotify only
+ // happens when motion starts & ends inside window
+ XCrossingEvent &xce = xe->xcrossing;
+
+ g_event = new
+ GHOST_EventCursor(
+ getMilliSeconds(),
+ GHOST_kEventCursorMove,
+ window,
+ xce.x_root,
+ xce.y_root
+ );
break;
+ }
case MapNotify:
/*
* From ICCCM:
diff --git a/intern/ghost/intern/GHOST_Window.cpp b/intern/ghost/intern/GHOST_Window.cpp
index a35680d1586..dee890830a1 100644
--- a/intern/ghost/intern/GHOST_Window.cpp
+++ b/intern/ghost/intern/GHOST_Window.cpp
@@ -50,6 +50,7 @@ GHOST_Window::GHOST_Window(
:
m_drawingContextType(type),
m_cursorVisible(true),
+ m_cursorGrabbed(true),
m_cursorShape(GHOST_kStandardCursorDefault),
m_stereoVisual(stereoVisual)
{
@@ -93,6 +94,20 @@ GHOST_TSuccess GHOST_Window::setCursorVisibility(bool visible)
}
}
+GHOST_TSuccess GHOST_Window::setCursorGrab(bool grab)
+{
+ if(m_cursorGrabbed == grab)
+ return GHOST_kSuccess;
+
+ if (setWindowCursorGrab(grab)) {
+ m_cursorGrabbed = grab;
+ return GHOST_kSuccess;
+ }
+ else {
+ return GHOST_kFailure;
+ }
+}
+
GHOST_TSuccess GHOST_Window::setCursorShape(GHOST_TStandardCursor cursorShape)
{
if (setWindowCursorShape(cursorShape)) {
diff --git a/intern/ghost/intern/GHOST_Window.h b/intern/ghost/intern/GHOST_Window.h
index 06318613b14..88178bae5b3 100644
--- a/intern/ghost/intern/GHOST_Window.h
+++ b/intern/ghost/intern/GHOST_Window.h
@@ -167,6 +167,13 @@ public:
virtual GHOST_TSuccess setCursorVisibility(bool visible);
/**
+ * Sets the cursor grab.
+ * @param grab The new grab state of the cursor.
+ * @return Indication of success.
+ */
+ virtual GHOST_TSuccess setCursorGrab(bool grab);
+
+ /**
* Returns the type of drawing context used in this window.
* @return The current type of drawing context.
*/
@@ -218,6 +225,12 @@ protected:
* native window system calls.
*/
virtual GHOST_TSuccess setWindowCursorVisibility(bool visible) = 0;
+
+ /**
+ * Sets the cursor grab on the window using
+ * native window system calls.
+ */
+ virtual GHOST_TSuccess setWindowCursorGrab(bool grab) { return GHOST_kSuccess; };
/**
* Sets the cursor shape on the window using
@@ -242,6 +255,9 @@ protected:
/** The current visibility of the cursor */
bool m_cursorVisible;
+
+ /** The current grabbed state of the cursor */
+ bool m_cursorGrabbed;
/** The current shape of the cursor */
GHOST_TStandardCursor m_cursorShape;
diff --git a/intern/ghost/intern/GHOST_WindowX11.cpp b/intern/ghost/intern/GHOST_WindowX11.cpp
index 2cc30aaa5bc..1525b4eb16d 100644
--- a/intern/ghost/intern/GHOST_WindowX11.cpp
+++ b/intern/ghost/intern/GHOST_WindowX11.cpp
@@ -1271,6 +1271,21 @@ setWindowCursorVisibility(
GHOST_TSuccess
GHOST_WindowX11::
+setWindowCursorGrab(
+ bool grab
+){
+ if(grab)
+ XGrabPointer(m_display, m_window, True, ButtonPressMask| ButtonReleaseMask|PointerMotionMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime);
+ else
+ XUngrabPointer(m_display, CurrentTime);
+
+ XFlush(m_display);
+
+ return GHOST_kSuccess;
+}
+
+ GHOST_TSuccess
+GHOST_WindowX11::
setWindowCursorShape(
GHOST_TStandardCursor shape
){
diff --git a/intern/ghost/intern/GHOST_WindowX11.h b/intern/ghost/intern/GHOST_WindowX11.h
index 1392e2c19a6..6f8940bdcbb 100644
--- a/intern/ghost/intern/GHOST_WindowX11.h
+++ b/intern/ghost/intern/GHOST_WindowX11.h
@@ -250,6 +250,15 @@ protected:
);
/**
+ * Sets the cursor grab on the window using
+ * native window system calls.
+ */
+ GHOST_TSuccess
+ setWindowCursorGrab(
+ bool grab
+ );
+
+ /**
* Sets the cursor shape on the window using
* native window system calls.
*/
diff --git a/projectfiles_vc9/blender/blender.sln b/projectfiles_vc9/blender/blender.sln
index 21610cb3df5..b8a47867115 100644
--- a/projectfiles_vc9/blender/blender.sln
+++ b/projectfiles_vc9/blender/blender.sln
@@ -294,7 +294,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ED_editors", "editors\ED_ed
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RNA_makesrna", "makesrna\RNA_makesrna.vcproj", "{8C2BCCF8-4D9E-46D3-BABF-C1545A332CE6}"
ProjectSection(ProjectDependencies) = postProject
- {FB88301F-F725-401B-ACD7-D2ABBF333B71} = {FB88301F-F725-401B-ACD7-D2ABBF333B71}
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284} = {7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}
EndProjectSection
EndProject
diff --git a/projectfiles_vc9/blender/editors/ED_editors.vcproj b/projectfiles_vc9/blender/editors/ED_editors.vcproj
index e2ddfe0584e..da998311b7b 100644
--- a/projectfiles_vc9/blender/editors/ED_editors.vcproj
+++ b/projectfiles_vc9/blender/editors/ED_editors.vcproj
@@ -182,14 +182,6 @@
>
</File>
<File
- RelativePath="..\..\..\source\blender\editors\include\BIF_retopo.h"
- >
- </File>
- <File
- RelativePath="..\..\..\source\blender\editors\include\BIF_transform.h"
- >
- </File>
- <File
RelativePath="..\..\..\source\blender\editors\include\ED_anim_api.h"
>
</File>
@@ -262,6 +254,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\editors\include\ED_physics.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\include\ED_pointcache.h"
>
</File>
@@ -270,6 +266,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\editors\include\ED_retopo.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\include\ED_screen.h"
>
</File>
@@ -427,10 +427,6 @@
>
</File>
<File
- RelativePath="..\..\..\source\blender\editors\interface\keyval.c"
- >
- </File>
- <File
RelativePath="..\..\..\source\blender\editors\interface\resources.c"
>
</File>
@@ -1062,6 +1058,10 @@
RelativePath="..\..\..\source\blender\editors\object\object_ops.c"
>
</File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\object\object_vgroup.c"
+ >
+ </File>
</Filter>
<Filter
Name="transform"
@@ -1119,10 +1119,6 @@
Name="mesh"
>
<File
- RelativePath="..\..\..\source\blender\editors\mesh\editdeform.c"
- >
- </File>
- <File
RelativePath="..\..\..\source\blender\editors\mesh\editface.c"
>
</File>
@@ -1155,6 +1151,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\editors\mesh\mesh_layers.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\mesh\mesh_ops.c"
>
</File>
diff --git a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj
index a19c6dce8b0..35f71c51df4 100644
--- a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj
+++ b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj
@@ -27,6 +27,7 @@
>
<Tool
Name="VCPreBuildEventTool"
+ CommandLine="DEL ..\..\..\source\blender\makesrna\intern\*_gen.c"
/>
<Tool
Name="VCCustomBuildTool"
@@ -121,6 +122,7 @@
>
<Tool
Name="VCPreBuildEventTool"
+ CommandLine="DEL ..\..\..\source\blender\makesrna\intern\*_gen.c"
/>
<Tool
Name="VCCustomBuildTool"
@@ -199,7 +201,7 @@
<Tool
Name="VCPostBuildEventTool"
Description="Building RNA"
- CommandLine="CD ..\..\..\source\blender\makesrna\intern&#x0D;&#x0A;RNA_makesrna.exe rna.c&#x0D;&#x0A;"
+ CommandLine="CD ..\..\..\source\blender\makesrna\intern\&#x0D;&#x0A;RNA_makesrna.exe .\&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@@ -214,6 +216,7 @@
>
<Tool
Name="VCPreBuildEventTool"
+ CommandLine="DEL ..\..\..\source\blender\makesrna\intern\*_gen.c"
/>
<Tool
Name="VCCustomBuildTool"
@@ -307,6 +310,7 @@
>
<Tool
Name="VCPreBuildEventTool"
+ CommandLine="del ..\..\..\source\blender\makesrna\intern\rna_*_gen.c"
/>
<Tool
Name="VCCustomBuildTool"
@@ -388,7 +392,7 @@
<Tool
Name="VCPostBuildEventTool"
Description="Building RNA"
- CommandLine="CD ..\..\..\source\blender\makesrna\intern&#x0D;&#x0A;RNA_makesrna.exe rna.c&#x0D;&#x0A;"
+ CommandLine="CD ..\..\..\source\blender\makesrna\intern\&#x0D;&#x0A;RNA_makesrna.exe .\&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@@ -403,6 +407,7 @@
>
<Tool
Name="VCPreBuildEventTool"
+ CommandLine="DEL ..\..\..\source\blender\makesrna\intern\*_gen.c"
/>
<Tool
Name="VCCustomBuildTool"
@@ -484,7 +489,7 @@
<Tool
Name="VCPostBuildEventTool"
Description="Building RNA"
- CommandLine="CD ..\..\..\source\blender\makesrna\intern&#x0D;&#x0A;RNA_makesrna.exe rna.c&#x0D;&#x0A;"
+ CommandLine="CD ..\..\..\source\blender\makesrna\intern\&#x0D;&#x0A;RNA_makesrna.exe .\&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
@@ -499,6 +504,7 @@
>
<Tool
Name="VCPreBuildEventTool"
+ CommandLine=""
/>
<Tool
Name="VCCustomBuildTool"
@@ -577,7 +583,7 @@
<Tool
Name="VCPostBuildEventTool"
Description="Building RNA"
- CommandLine="CD ..\..\..\source\blender\makesrna\intern&#x0D;&#x0A;RNA_makesrna.exe rna.c&#x0D;&#x0A;"
+ CommandLine="CD ..\..\..\source\blender\makesrna\intern\&#x0D;&#x0A;RNA_makesrna.exe .\&#x0D;&#x0A;"
/>
</Configuration>
</Configurations>
diff --git a/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj
index 19e47f19d3c..af23842b15d 100644
--- a/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj
+++ b/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj
@@ -167,207 +167,203 @@
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_action_gen.c"
- >
- </File>
- <File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_actuator_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_access.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_animation_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_action_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_armature_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_actuator_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.cRNA_blender_cpp.h"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_animation_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_brush_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_armature_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_camera_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_brush_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_cloth_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_camera_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_color_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_cloth_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_constraint_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_color_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_context_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_constraint_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_controller_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_context_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_curve_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_controller_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_fcurve_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_curve_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_fluidsim_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_fcurve_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_group_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_fluidsim_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_ID_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_group_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_image_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_ID_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_key_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_image_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_lamp_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_key_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_lattice_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_lamp_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_main_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_lattice_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_material_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_main_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_mesh_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_material_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_meta_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_mesh_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_modifier_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_meta_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_nodetree_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_modifier_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_object_force_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_nodetree_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_object_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_object_force_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_packedfile_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_object_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_particle_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_packedfile_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_pose_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_particle_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_property_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_pose_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_rna_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_property_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_scene_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_rna_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_screen_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_scene_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_scriptlink_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_screen_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_sensor_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_scriptlink_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_sequence_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_sensor_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_sound_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_sequence_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_space_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_sound_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_text_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_space_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_texture_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_text_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_timeline_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_texture_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_ui_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_timeline_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_userdef_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_ui_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_vfont_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_userdef_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_vpaint_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_vfont_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_wm_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_vpaint_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna.crna_world_gen.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_wm_gen.c"
>
</File>
<File
- RelativePath="..\..\..\source\blender\makesrna\intern\rna_access.c"
+ RelativePath="..\..\..\source\blender\makesrna\intern\rna_world_gen.c"
>
</File>
</Filter>
diff --git a/release/ui/buttons_data_armature.py b/release/ui/buttons_data_armature.py
index 112724bea91..adca70e90dd 100644
--- a/release/ui/buttons_data_armature.py
+++ b/release/ui/buttons_data_armature.py
@@ -9,13 +9,10 @@ class DataButtonsPanel(bpy.types.Panel):
def poll(self, context):
return (context.armature != None)
-class DATA_PT_skeleton(DataButtonsPanel):
- __idname__ = "DATA_PT_skeleton"
- __label__ = "Skeleton"
+class DATA_PT_context_arm(DataButtonsPanel):
+ __idname__ = "DATA_PT_context_arm"
+ __no_header__ = True
- def poll(self, context):
- return ((context.object and context.object.type == 'ARMATURE') or context.armature)
-
def draw(self, context):
layout = self.layout
@@ -32,8 +29,19 @@ class DATA_PT_skeleton(DataButtonsPanel):
split.template_ID(space, "pin_id")
split.itemS()
+class DATA_PT_skeleton(DataButtonsPanel):
+ __idname__ = "DATA_PT_skeleton"
+ __label__ = "Skeleton"
+
+ def draw(self, context):
+ layout = self.layout
+
+ ob = context.object
+ arm = context.armature
+ space = context.space_data
+
+
if arm:
- layout.itemS()
layout.itemR(arm, "rest_position")
split = layout.split()
@@ -124,6 +132,7 @@ class DATA_PT_ghost(DataButtonsPanel):
sub = split.column()
sub.itemR(arm, "ghost_only_selected", text="Selected Only")
+bpy.types.register(DATA_PT_context_arm)
bpy.types.register(DATA_PT_skeleton)
bpy.types.register(DATA_PT_display)
bpy.types.register(DATA_PT_paths)
diff --git a/release/ui/buttons_data_bone.py b/release/ui/buttons_data_bone.py
index 044f7b93806..98c7f2f8e54 100644
--- a/release/ui/buttons_data_bone.py
+++ b/release/ui/buttons_data_bone.py
@@ -9,10 +9,25 @@ class BoneButtonsPanel(bpy.types.Panel):
def poll(self, context):
return (context.bone or context.edit_bone)
+class BONE_PT_context_bone(BoneButtonsPanel):
+ __idname__ = "BONE_PT_context_bone"
+ __no_header__ = True
+
+ def draw(self, context):
+ layout = self.layout
+ bone = context.bone
+ if not bone:
+ bone = context.edit_bone
+
+ split = layout.split(percentage=0.06)
+ split.itemL(text="", icon="ICON_BONE_DATA")
+ split.itemR(bone, "name", text="")
+
class BONE_PT_bone(BoneButtonsPanel):
__idname__ = "BONE_PT_bone"
__label__ = "Bone"
+
def draw(self, context):
layout = self.layout
bone = context.bone
@@ -22,28 +37,53 @@ class BONE_PT_bone(BoneButtonsPanel):
split = layout.split()
sub = split.column()
- sub.itemR(bone, "name")
sub.itemR(bone, "parent")
sub.itemR(bone, "connected")
- sub.itemR(bone, "deform")
+
+ sub.itemL(text="Layers:")
+ sub.template_layers(bone, "layer")
+
+ sub = split.column()
sub.itemL(text="Inherit:")
- sub.itemR(bone, "hinge")
- sub.itemR(bone, "inherit_scale")
+ sub.itemR(bone, "hinge", text="Rotation")
+ sub.itemR(bone, "inherit_scale", text="Scale")
+
+ sub.itemL(text="Display:")
+ sub.itemR(bone, "draw_wire", text="Wireframe")
+ sub.itemR(bone, "hidden", text="Hide")
+
+
+class BONE_PT_deform(BoneButtonsPanel):
+ __idname__ = "BONE_PT_deform"
+ __label__ = "Deform"
+
+ def draw_header(self, context):
+ layout = self.layout
+ bone = context.bone
+ if not bone:
+ bone = context.edit_bone
+
+ layout.itemR(bone, "deform", text="")
+
+ def draw(self, context):
+ layout = self.layout
+ bone = context.bone
+ if not bone:
+ bone = context.edit_bone
+
+ layout.active = bone.deform
+
+ split = layout.split()
+
+ sub = split.column()
sub.itemL(text="Envelope:")
sub.itemR(bone, "envelope_distance", text="Distance")
sub.itemR(bone, "envelope_weight", text="Weight")
sub.itemR(bone, "multiply_vertexgroup_with_envelope", text="Multiply")
-
sub = split.column()
- sub.itemL(text="Layers:")
- sub.template_layers(bone, "layer")
- sub.itemL(text="Display:")
- sub.itemR(bone, "draw_wire", text="Wireframe")
- sub.itemR(bone, "hidden", text="Hide")
-
sub.itemL(text="Curved Bones:")
sub.itemR(bone, "bbone_segments", text="Segments")
sub.itemR(bone, "bbone_in", text="Ease In")
@@ -51,4 +91,7 @@ class BONE_PT_bone(BoneButtonsPanel):
sub.itemR(bone, "cyclic_offset")
+
+bpy.types.register(BONE_PT_context_bone)
bpy.types.register(BONE_PT_bone)
+bpy.types.register(BONE_PT_deform)
diff --git a/release/ui/buttons_data_camera.py b/release/ui/buttons_data_camera.py
index 9f3a062b429..f583f9679bc 100644
--- a/release/ui/buttons_data_camera.py
+++ b/release/ui/buttons_data_camera.py
@@ -9,13 +9,10 @@ class DataButtonsPanel(bpy.types.Panel):
def poll(self, context):
return (context.camera != None)
-class DATA_PT_camera(DataButtonsPanel):
- __idname__ = "DATA_PT_camera"
- __label__ = "Lens"
+class DATA_PT_context_camera(DataButtonsPanel):
+ __idname__ = "DATA_PT_context_camera"
+ __no_header__ = True
- def poll(self, context):
- return (context.object and context.object.type == 'CAMERA')
-
def draw(self, context):
layout = self.layout
@@ -28,40 +25,48 @@ class DATA_PT_camera(DataButtonsPanel):
if ob:
split.template_ID(ob, "data")
split.itemS()
- elif arm:
+ elif cam:
split.template_ID(space, "pin_id")
split.itemS()
- if cam:
- layout.itemS()
- layout.itemR(cam, "type", expand=True)
+class DATA_PT_camera(DataButtonsPanel):
+ __idname__ = "DATA_PT_camera"
+ __label__ = "Lens"
+
+ def draw(self, context):
+ layout = self.layout
+
+ cam = context.camera
+
+ layout.itemS()
+ layout.itemR(cam, "type", expand=True)
- row = layout.row(align=True)
- if cam.type == 'PERSP':
- row.itemR(cam, "lens_unit", text="")
- if cam.lens_unit == 'MILLIMETERS':
- row.itemR(cam, "lens", text="Angle")
- elif cam.lens_unit == 'DEGREES':
- row.itemR(cam, "angle")
+ row = layout.row(align=True)
+ if cam.type == 'PERSP':
+ row.itemR(cam, "lens_unit", text="")
+ if cam.lens_unit == 'MILLIMETERS':
+ row.itemR(cam, "lens", text="Angle")
+ elif cam.lens_unit == 'DEGREES':
+ row.itemR(cam, "angle")
- elif cam.type == 'ORTHO':
- row.itemR(cam, "ortho_scale")
+ elif cam.type == 'ORTHO':
+ row.itemR(cam, "ortho_scale")
- split = layout.split()
+ split = layout.split()
- sub = split.column(align=True)
- sub.itemL(text="Shift:")
- sub.itemR(cam, "shift_x", text="X")
- sub.itemR(cam, "shift_y", text="Y")
+ sub = split.column(align=True)
+ sub.itemL(text="Shift:")
+ sub.itemR(cam, "shift_x", text="X")
+ sub.itemR(cam, "shift_y", text="Y")
- sub = split.column(align=True)
- sub.itemL(text="Clipping:")
- sub.itemR(cam, "clip_start", text="Start")
- sub.itemR(cam, "clip_end", text="End")
+ sub = split.column(align=True)
+ sub.itemL(text="Clipping:")
+ sub.itemR(cam, "clip_start", text="Start")
+ sub.itemR(cam, "clip_end", text="End")
- row = layout.row()
- row.itemR(cam, "dof_object")
- row.itemR(cam, "dof_distance")
+ row = layout.row()
+ row.itemR(cam, "dof_object")
+ row.itemR(cam, "dof_distance")
class DATA_PT_camera_display(DataButtonsPanel):
__idname__ = "DATA_PT_camera_display"
@@ -86,5 +91,7 @@ class DATA_PT_camera_display(DataButtonsPanel):
colsub.itemR(cam, "passepartout_alpha", text="Alpha", slider=True)
col.itemR(cam, "draw_size", text="Size")
+bpy.types.register(DATA_PT_context_camera)
bpy.types.register(DATA_PT_camera)
bpy.types.register(DATA_PT_camera_display)
+
diff --git a/release/ui/buttons_data_curve.py b/release/ui/buttons_data_curve.py
index e60f9591d29..04c4cd6d01e 100644
--- a/release/ui/buttons_data_curve.py
+++ b/release/ui/buttons_data_curve.py
@@ -9,13 +9,10 @@ class DataButtonsPanel(bpy.types.Panel):
def poll(self, context):
return (context.object and context.object.type == 'CURVE' and context.curve)
-class DATA_PT_shape_curve(DataButtonsPanel):
- __idname__ = "DATA_PT_shape_curve"
- __label__ = "Shape"
+class DATA_PT_context_curve(DataButtonsPanel):
+ __idname__ = "DATA_PT_context_curve"
+ __no_header__ = True
- def poll(self, context):
- return (context.object and context.object.type == 'CURVE')
-
def draw(self, context):
layout = self.layout
@@ -32,8 +29,19 @@ class DATA_PT_shape_curve(DataButtonsPanel):
split.template_ID(space, "pin_id")
split.itemS()
+
+class DATA_PT_shape_curve(DataButtonsPanel):
+ __idname__ = "DATA_PT_shape_curve"
+ __label__ = "Shape"
+
+ def draw(self, context):
+ layout = self.layout
+
+ ob = context.object
+ curve = context.curve
+ space = context.space_data
+
if curve:
- layout.itemS()
layout.itemR(curve, "curve_2d")
split = layout.split()
@@ -46,7 +54,7 @@ class DATA_PT_shape_curve(DataButtonsPanel):
colsub.itemR(curve, "back")
col.itemL(text="Textures:")
- col.itemR(curve, "uv_orco")
+# col.itemR(curve, "uv_orco")
col.itemR(curve, "auto_texspace")
sub = split.column()
@@ -56,14 +64,14 @@ class DATA_PT_shape_curve(DataButtonsPanel):
sub.itemR(curve, "render_resolution_u", text="Render U")
sub.itemR(curve, "render_resolution_v", text="Render V")
- sub.itemL(text="Display:")
- sub.itemL(text="HANDLES")
- sub.itemL(text="NORMALS")
- sub.itemR(curve, "vertex_normal_flip")
+# sub.itemL(text="Display:")
+# sub.itemL(text="HANDLES")
+# sub.itemL(text="NORMALS")
+# sub.itemR(curve, "vertex_normal_flip")
-class DATA_PT_geometry(DataButtonsPanel):
- __idname__ = "DATA_PT_geometry"
- __label__ = "Geometry"
+class DATA_PT_geometry_curve(DataButtonsPanel):
+ __idname__ = "DATA_PT_geometry_curve"
+ __label__ = "Geometry "
def draw(self, context):
layout = self.layout
@@ -75,13 +83,13 @@ class DATA_PT_geometry(DataButtonsPanel):
sub.itemL(text="Modification:")
sub.itemR(curve, "width")
sub.itemR(curve, "extrude")
- sub.itemR(curve, "taper_object")
+ sub.itemR(curve, "taper_object", icon="ICON_OUTLINER_OB_CURVE")
sub = split.column()
sub.itemL(text="Bevel:")
sub.itemR(curve, "bevel_depth", text="Depth")
sub.itemR(curve, "bevel_resolution", text="Resolution")
- sub.itemR(curve, "bevel_object")
+ sub.itemR(curve, "bevel_object", icon="ICON_OUTLINER_OB_CURVE")
class DATA_PT_pathanim(DataButtonsPanel):
__idname__ = "DATA_PT_pathanim"
@@ -141,7 +149,9 @@ class DATA_PT_current_curve(DataButtonsPanel):
sub.itemR(currentcurve, "radius_interpolation", text="Tilt")
sub.itemR(currentcurve, "smooth")
+bpy.types.register(DATA_PT_context_curve)
bpy.types.register(DATA_PT_shape_curve)
-bpy.types.register(DATA_PT_geometry)
+bpy.types.register(DATA_PT_geometry_curve)
bpy.types.register(DATA_PT_pathanim)
bpy.types.register(DATA_PT_current_curve)
+
diff --git a/release/ui/buttons_data_lamp.py b/release/ui/buttons_data_lamp.py
index a556aceb98d..e56f19b1dec 100644
--- a/release/ui/buttons_data_lamp.py
+++ b/release/ui/buttons_data_lamp.py
@@ -19,13 +19,10 @@ class DATA_PT_preview(DataButtonsPanel):
lamp = context.lamp
layout.template_preview(lamp)
-class DATA_PT_lamp(DataButtonsPanel):
- __idname__ = "DATA_PT_lamp"
- __label__ = "Lamp"
+class DATA_PT_context_lamp(DataButtonsPanel):
+ __idname__ = "DATA_PT_context_lamp"
+ __no_header__ = True
- def poll(self, context):
- return ((context.object and context.object.type == 'LAMP') or context.lamp)
-
def draw(self, context):
layout = self.layout
@@ -42,7 +39,14 @@ class DATA_PT_lamp(DataButtonsPanel):
split.template_ID(space, "pin_id")
split.itemS()
- layout.itemS()
+class DATA_PT_lamp(DataButtonsPanel):
+ __idname__ = "DATA_PT_lamp"
+ __label__ = "Lamp"
+
+ def draw(self, context):
+ layout = self.layout
+
+ lamp = context.lamp
layout.itemR(lamp, "type", expand=True)
@@ -244,9 +248,11 @@ class DATA_PT_falloff_curve(DataButtonsPanel):
layout.template_curve_mapping(lamp.falloff_curve)
+bpy.types.register(DATA_PT_context_lamp)
bpy.types.register(DATA_PT_preview)
bpy.types.register(DATA_PT_lamp)
bpy.types.register(DATA_PT_shadow)
bpy.types.register(DATA_PT_sunsky)
bpy.types.register(DATA_PT_spot)
bpy.types.register(DATA_PT_falloff_curve)
+
diff --git a/release/ui/buttons_data_lattice.py b/release/ui/buttons_data_lattice.py
index bf2aaad5a97..dfb429af29d 100644
--- a/release/ui/buttons_data_lattice.py
+++ b/release/ui/buttons_data_lattice.py
@@ -9,13 +9,10 @@ class DataButtonsPanel(bpy.types.Panel):
def poll(self, context):
return (context.lattice != None)
-class DATA_PT_lattice(DataButtonsPanel):
- __idname__ = "DATA_PT_lattice"
- __label__ = "Lattice"
+class DATA_PT_context_lattice(DataButtonsPanel):
+ __idname__ = "DATA_PT_context_lattice"
+ __no_header__ = True
- def poll(self, context):
- return (context.object and context.object.type == 'LATTICE')
-
def draw(self, context):
layout = self.layout
@@ -32,23 +29,32 @@ class DATA_PT_lattice(DataButtonsPanel):
split.template_ID(space, "pin_id")
split.itemS()
- if lat:
- layout.itemS()
- row = layout.row()
- row.itemR(lat, "points_u")
- row.itemR(lat, "interpolation_type_u", expand=True)
+class DATA_PT_lattice(DataButtonsPanel):
+ __idname__ = "DATA_PT_lattice"
+ __label__ = "Lattice"
+
+ def draw(self, context):
+ layout = self.layout
+
+ lat = context.lattice
+
+ row = layout.row()
+ row.itemR(lat, "points_u")
+ row.itemR(lat, "interpolation_type_u", expand=True)
- row = layout.row()
- row.itemR(lat, "points_v")
- row.itemR(lat, "interpolation_type_v", expand=True)
+ row = layout.row()
+ row.itemR(lat, "points_v")
+ row.itemR(lat, "interpolation_type_v", expand=True)
- row = layout.row()
- row.itemR(lat, "points_w")
- row.itemR(lat, "interpolation_type_w", expand=True)
+ row = layout.row()
+ row.itemR(lat, "points_w")
+ row.itemR(lat, "interpolation_type_w", expand=True)
- row = layout.row()
- row.itemR(lat, "outside")
- row.itemR(lat, "shape_keys")
+ row = layout.row()
+ row.itemO("LATTICE_OT_make_regular")
+ row.itemR(lat, "outside")
+bpy.types.register(DATA_PT_context_lattice)
bpy.types.register(DATA_PT_lattice)
+
diff --git a/release/ui/buttons_data_mesh.py b/release/ui/buttons_data_mesh.py
index c7e253d5084..85ce15ef970 100644
--- a/release/ui/buttons_data_mesh.py
+++ b/release/ui/buttons_data_mesh.py
@@ -9,13 +9,10 @@ class DataButtonsPanel(bpy.types.Panel):
def poll(self, context):
return (context.mesh != None)
-class DATA_PT_mesh(DataButtonsPanel):
- __idname__ = "DATA_PT_mesh"
- __label__ = "Mesh"
+class DATA_PT_context_mesh(DataButtonsPanel):
+ __idname__ = "DATA_PT_context_mesh"
+ __no_header__ = True
- def poll(self, context):
- return (context.object and context.object.type == 'MESH')
-
def draw(self, context):
layout = self.layout
@@ -32,22 +29,28 @@ class DATA_PT_mesh(DataButtonsPanel):
split.template_ID(space, "pin_id")
split.itemS()
- if mesh:
- layout.itemS()
+class DATA_PT_mesh(DataButtonsPanel):
+ __idname__ = "DATA_PT_mesh"
+ __label__ = "Mesh"
- split = layout.split()
+ def draw(self, context):
+ layout = self.layout
+
+ mesh = context.mesh
- col = split.column()
- col.itemR(mesh, "autosmooth")
- colsub = col.column()
- colsub.active = mesh.autosmooth
- colsub.itemR(mesh, "autosmooth_angle", text="Angle")
- sub = split.column()
- sub.itemR(mesh, "vertex_normal_flip")
- sub.itemR(mesh, "double_sided")
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(mesh, "autosmooth")
+ colsub = col.column()
+ colsub.active = mesh.autosmooth
+ colsub.itemR(mesh, "autosmooth_angle", text="Angle")
+ sub = split.column()
+ sub.itemR(mesh, "vertex_normal_flip")
+ sub.itemR(mesh, "double_sided")
- layout.itemR(mesh, "texco_mesh")
-
+ layout.itemS()
+ layout.itemR(mesh, "texco_mesh")
class DATA_PT_materials(DataButtonsPanel):
__idname__ = "DATA_PT_materials"
@@ -131,16 +134,44 @@ class DATA_PT_shape_keys(DataButtonsPanel):
def draw(self, context):
layout = self.layout
ob = context.object
+ key = ob.data.shape_keys
+ kb = ob.active_shape_key
row = layout.row()
+ row.template_list(key, "keys", ob, "active_shape_key_index")
- key = ob.data.shape_keys
+ col = row.column()
- row.template_list(key, "keys", ob, "active_shape_key_index")
+ subcol = col.column(align=True)
+ subcol.itemO("OBJECT_OT_shape_key_add", icon="ICON_ZOOMIN", text="")
+ subcol.itemO("OBJECT_OT_shape_key_remove", icon="ICON_ZOOMOUT", text="")
- col = row.column(align=True)
- col.itemO("OBJECT_OT_shape_key_add", icon="ICON_ZOOMIN", text="")
- col.itemO("OBJECT_OT_shape_key_remove", icon="ICON_ZOOMOUT", text="")
+ if kb:
+ col.itemS()
+
+ subcol = col.column(align=True)
+ subcol.itemR(ob, "shape_key_lock", icon="ICON_PINNED", text="")
+ subcol.itemR(kb, "mute", icon="ICON_MUTE_IPO_ON", text="")
+
+ if key.relative:
+ row = layout.row()
+ row.itemR(key, "relative")
+ row.itemL()
+
+ if ob.active_shape_key_index != 0:
+ if not ob.shape_key_lock:
+ row = layout.row(align=True)
+ row.itemR(kb, "value", text="")
+ row.itemR(kb, "slider_min", text="Min")
+ row.itemR(kb, "slider_max", text="Max")
+
+ row = layout.row()
+ row.item_pointerR(kb, "vertex_group", ob, "vertex_groups", text="")
+ row.item_pointerR(kb, "relative_key", key, "keys", text="")
+ else:
+ row = layout.row()
+ row.itemR(key, "relative")
+ row.itemR(key, "slurph")
if context.edit_object:
layout.enabled = False
@@ -177,6 +208,7 @@ class DATA_PT_vertex_colors(DataButtonsPanel):
col.itemO("MESH_OT_vertex_color_add", icon="ICON_ZOOMIN", text="")
col.itemO("MESH_OT_vertex_color_remove", icon="ICON_ZOOMOUT", text="")
+bpy.types.register(DATA_PT_context_mesh)
bpy.types.register(DATA_PT_mesh)
bpy.types.register(DATA_PT_materials)
bpy.types.register(DATA_PT_vertex_groups)
diff --git a/release/ui/buttons_data_modifier.py b/release/ui/buttons_data_modifier.py
index 42def1ee764..2f0f56de06c 100644
--- a/release/ui/buttons_data_modifier.py
+++ b/release/ui/buttons_data_modifier.py
@@ -299,10 +299,21 @@ class DATA_PT_modifiers(DataButtonsPanel):
col = layout.column_flow()
col.itemR(md, "normal")
col.itemR(md, "children")
+ col.itemR(md, "size")
col.itemR(md, "path")
+ if md.path:
+ col.itemR(md, "keep_shape")
col.itemR(md, "unborn")
col.itemR(md, "alive")
col.itemR(md, "dead")
+ col.itemL(md, "")
+ if md.path:
+ col.itemR(md, "axis", text="")
+
+ if md.path:
+ row = layout.row()
+ row.itemR(md, "position", slider=True)
+ row.itemR(md, "random_position", text = "Random", slider=True)
def particlesystem(self, layout, ob, md):
layout.itemL(text="See Particle panel.")
diff --git a/release/ui/buttons_data_text.py b/release/ui/buttons_data_text.py
index 5f4cdd3f838..81d54af0ef7 100644
--- a/release/ui/buttons_data_text.py
+++ b/release/ui/buttons_data_text.py
@@ -8,14 +8,10 @@ class DataButtonsPanel(bpy.types.Panel):
def poll(self, context):
return (context.object and context.object.type == 'TEXT' and context.curve)
-
-class DATA_PT_shape_text(DataButtonsPanel):
- __idname__ = "DATA_PT_shape_text"
- __label__ = "Shape Text"
-
- def poll(self, context):
- ob = context.object
- return (context.object and context.object.type == 'TEXT')
+
+class DATA_PT_context_text(DataButtonsPanel):
+ __idname__ = "DATA_PT_context_text"
+ __no_header__ = True
def draw(self, context):
layout = self.layout
@@ -33,8 +29,18 @@ class DATA_PT_shape_text(DataButtonsPanel):
split.template_ID(space, "pin_id")
split.itemS()
+class DATA_PT_shape_text(DataButtonsPanel):
+ __idname__ = "DATA_PT_shape_text"
+ __label__ = "Shape Text"
+
+ def draw(self, context):
+ layout = self.layout
+
+ ob = context.object
+ curve = context.curve
+ space = context.space_data
+
if curve:
- layout.itemS()
layout.itemR(curve, "curve_2d")
split = layout.split()
@@ -57,7 +63,29 @@ class DATA_PT_shape_text(DataButtonsPanel):
sub.itemL(text="Display:")
sub.itemR(curve, "fast")
-
+
+class DATA_PT_geometry_text(DataButtonsPanel):
+ __idname__ = "DATA_PT_geometry_text"
+ __label__ = "Geometry"
+
+ def draw(self, context):
+ layout = self.layout
+ curve = context.curve
+
+ split = layout.split()
+
+ sub = split.column()
+ sub.itemL(text="Modification:")
+ sub.itemR(curve, "width")
+ sub.itemR(curve, "extrude")
+ sub.itemR(curve, "taper_object")
+
+ sub = split.column()
+ sub.itemL(text="Bevel:")
+ sub.itemR(curve, "bevel_depth", text="Depth")
+ sub.itemR(curve, "bevel_resolution", text="Resolution")
+ sub.itemR(curve, "bevel_object")
+
class DATA_PT_font(DataButtonsPanel):
__idname__ = "DATA_PT_font"
__label__ = "Font"
@@ -112,7 +140,7 @@ class DATA_PT_paragraph(DataButtonsPanel):
sub.itemL(text="Offset:")
sub.itemR(text, "x_offset", text="X")
sub.itemR(text, "y_offset", text="Y")
- sub.itemR(text, "wrap")
+ #sub.itemR(text, "wrap")
"""
class DATA_PT_textboxes(DataButtonsPanel):
@@ -124,7 +152,10 @@ class DATA_PT_textboxes(DataButtonsPanel):
text = context.curve
"""
+bpy.types.register(DATA_PT_context_text)
bpy.types.register(DATA_PT_shape_text)
+bpy.types.register(DATA_PT_geometry_text)
bpy.types.register(DATA_PT_font)
bpy.types.register(DATA_PT_paragraph)
#bpy.types.register(DATA_PT_textboxes)
+
diff --git a/release/ui/buttons_material.py b/release/ui/buttons_material.py
index 8b0ef82b628..9298b2d2248 100644
--- a/release/ui/buttons_material.py
+++ b/release/ui/buttons_material.py
@@ -13,21 +13,18 @@ class MATERIAL_PT_preview(MaterialButtonsPanel):
__idname__= "MATERIAL_PT_preview"
__label__ = "Preview"
- def poll(self, context):
- return (context.material or context.material_slot)
-
def draw(self, context):
layout = self.layout
mat = context.material
layout.template_preview(mat)
-
-class MATERIAL_PT_material(MaterialButtonsPanel):
- __idname__= "MATERIAL_PT_material"
- __label__ = "Material"
+
+class MATERIAL_PT_context_material(MaterialButtonsPanel):
+ __idname__= "MATERIAL_PT_context_material"
+ __no_header__ = True
def poll(self, context):
- return (context.material or context.material_slot)
+ return (context.object)
def draw(self, context):
layout = self.layout
@@ -37,18 +34,38 @@ class MATERIAL_PT_material(MaterialButtonsPanel):
slot = context.material_slot
space = context.space_data
+ if ob:
+ row = layout.row()
+
+ row.template_list(ob, "materials", ob, "active_material_index")
+
+ col = row.column(align=True)
+ col.itemO("OBJECT_OT_material_slot_add", icon="ICON_ZOOMIN", text="")
+ col.itemO("OBJECT_OT_material_slot_remove", icon="ICON_ZOOMOUT", text="")
+
split = layout.split(percentage=0.65)
if ob and slot:
split.template_ID(slot, "material", new="MATERIAL_OT_new")
- split.itemR(ob, "active_material_index", text="Active")
+ #split.itemR(ob, "active_material_index", text="Active")
elif mat:
split.template_ID(space, "pin_id")
split.itemS()
- if mat:
- layout.itemS()
+
+class MATERIAL_PT_material(MaterialButtonsPanel):
+ __idname__= "MATERIAL_PT_material"
+ __label__ = "Material"
+
+ def draw(self, context):
+ layout = self.layout
+ mat = context.material
+ ob = context.object
+ slot = context.material_slot
+ space = context.space_data
+
+ if mat:
layout.itemR(mat, "type", expand=True)
layout.itemR(mat, "alpha", slider=True)
@@ -172,11 +189,9 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel):
split.active = mat.shadeless== False
sub = split.column()
if mat.diffuse_shader == 'OREN_NAYAR':
- sub.itemR(mat, "roughness")
- sub = split.column()
+ sub.itemR(mat, "roughness")
if mat.diffuse_shader == 'MINNAERT':
sub.itemR(mat, "darkness")
- sub = split.column()
if mat.diffuse_shader == 'TOON':
sub.itemR(mat, "diffuse_toon_size", text="Size")
sub = split.column()
@@ -216,13 +231,13 @@ class MATERIAL_PT_specular(MaterialButtonsPanel):
sub = split.column()
if mat.spec_shader in ('COOKTORR', 'PHONG'):
sub.itemR(mat, "specular_hardness", text="Hardness")
- sub = split.column()
if mat.spec_shader == 'BLINN':
sub.itemR(mat, "specular_hardness", text="Hardness")
sub = split.column()
sub.itemR(mat, "specular_ior", text="IOR")
if mat.spec_shader == 'WARDISO':
sub.itemR(mat, "specular_slope", text="Slope")
+ sub = split.column()
sub.itemR(mat, "specular_hardness", text="Hardness")
if mat.spec_shader == 'TOON':
sub.itemR(mat, "specular_toon_size", text="Size")
@@ -413,6 +428,8 @@ class MATERIAL_PT_halo(MaterialButtonsPanel):
colsub.itemR(halo, "flare_seed", text="Seed")
colsub.itemR(halo, "flares_sub", text="Sub")
+
+bpy.types.register(MATERIAL_PT_context_material)
bpy.types.register(MATERIAL_PT_preview)
bpy.types.register(MATERIAL_PT_material)
bpy.types.register(MATERIAL_PT_diffuse)
diff --git a/release/ui/buttons_objects.py b/release/ui/buttons_objects.py
index 3138f447ad2..59e19d05959 100644
--- a/release/ui/buttons_objects.py
+++ b/release/ui/buttons_objects.py
@@ -6,6 +6,18 @@ class ObjectButtonsPanel(bpy.types.Panel):
__region_type__ = "WINDOW"
__context__ = "object"
+class OBJECT_PT_context_object(ObjectButtonsPanel):
+ __idname__ = "OBJECT_PT_context_object"
+ __no_header__ = True
+
+ def draw(self, context):
+ layout = self.layout
+ ob = context.object
+
+ split = layout.split(percentage=0.06)
+ split.itemL(text="", icon="ICON_OBJECT_DATA")
+ split.itemR(ob, "name", text="")
+
class OBJECT_PT_transform(ObjectButtonsPanel):
__idname__ = "OBJECT_PT_transform"
__label__ = "Transform"
@@ -124,8 +136,9 @@ class OBJECT_PT_animation(ObjectButtonsPanel):
sub.itemR(ob, "up_axis", text="Up Axis")
sub.itemR(ob, "track_rotation", text="Rotation")
+bpy.types.register(OBJECT_PT_context_object)
bpy.types.register(OBJECT_PT_transform)
bpy.types.register(OBJECT_PT_groups)
bpy.types.register(OBJECT_PT_display)
bpy.types.register(OBJECT_PT_duplication)
-bpy.types.register(OBJECT_PT_animation) \ No newline at end of file
+bpy.types.register(OBJECT_PT_animation)
diff --git a/release/ui/buttons_particle.py b/release/ui/buttons_particle.py
index 49ceaf6aae1..652f46d9675 100644
--- a/release/ui/buttons_particle.py
+++ b/release/ui/buttons_particle.py
@@ -20,7 +20,7 @@ class ParticleButtonsPanel(bpy.types.Panel):
class PARTICLE_PT_particles(ParticleButtonsPanel):
__idname__= "PARTICLE_PT_particles"
- __label__ = "Particle System"
+ __label__ = " "
def poll(self, context):
return (context.particle_system or context.object)
@@ -353,19 +353,14 @@ class PARTICLE_PT_render(ParticleButtonsPanel):
colsub.itemR(part, "adaptive_pix")
sub.itemR(part, "hair_bspline")
sub.itemR(part, "render_step", text="Steps")
- sub = split.column()
- sub.itemL(text="Length:")
- sub.itemR(part, "abs_length", text="Absolute")
- sub.itemR(part, "absolute_length", text="Maximum")
+ sub = split.column()
+
+ sub.itemL(text="Timing:")
+ sub.itemR(part, "abs_path_time")
+ sub.itemR(part, "path_start", text="Start", slider= not part.abs_path_time)
+ sub.itemR(part, "path_end", text="End", slider= not part.abs_path_time)
sub.itemR(part, "random_length", text="Random", slider=True)
- #row = layout.row()
- #row.itemR(part, "timed_path")
- #col = row.column(align=True)
- #col.active = part.timed_path == True
- #col.itemR(part, "line_length_tail", text="Start")
- #col.itemR(part, "line_length_head", text="End")
-
row = layout.row()
col = row.column()
@@ -384,7 +379,6 @@ class PARTICLE_PT_render(ParticleButtonsPanel):
elif part.ren_as == 'OBJECT':
- #sub = split.column()
sub.itemR(part, "dupli_object")
elif part.ren_as == 'GROUP':
sub.itemR(part, "dupli_group")
@@ -428,7 +422,19 @@ class PARTICLE_PT_render(ParticleButtonsPanel):
row.itemR(part, "billboard_animation", expand=True)
row.itemL(text="Offset:")
row.itemR(part, "billboard_split_offset", expand=True)
-
+ if part.ren_as == 'HALO' or part.ren_as == 'LINE' or part.ren_as=='BILLBOARD':
+ row = layout.row()
+ col = row.column()
+ col.itemR(part, "trail_count")
+ if part.trail_count > 1:
+ col.itemR(part, "abs_path_time", text="Length in frames")
+ col = row.column()
+ col.itemR(part, "path_end", text="Length", slider=not part.abs_path_time)
+ col.itemR(part, "random_length", text="Random", slider=True)
+ else:
+ col = row.column()
+ col.itemL(text="")
+
class PARTICLE_PT_draw(ParticleButtonsPanel):
__idname__= "PARTICLE_PT_draw"
__label__ = "Display"
@@ -475,11 +481,12 @@ class PARTICLE_PT_draw(ParticleButtonsPanel):
col.itemR(part, "draw_health")
col = row.column()
+ col.itemR(part, "material_color", text="Use material color")
+
if (path):
box = col.box()
box.itemR(part, "draw_step")
else:
- col.itemR(part, "material_color", text="Use material color")
subcol = col.column()
subcol.active = part.material_color==False
#subcol.itemL(text="color")
diff --git a/release/ui/buttons_physic_cloth.py b/release/ui/buttons_physic_cloth.py
index ecb5e48569a..edb778b4dce 100644
--- a/release/ui/buttons_physic_cloth.py
+++ b/release/ui/buttons_physic_cloth.py
@@ -7,7 +7,8 @@ class PhysicButtonsPanel(bpy.types.Panel):
__context__ = "physics"
def poll(self, context):
- return (context.object != None)
+ ob = context.object
+ return (ob and ob.type == 'MESH')
class PHYSICS_PT_cloth(PhysicButtonsPanel):
__idname__ = "PHYSICS_PT_cloth"
diff --git a/release/ui/buttons_physics_field.py b/release/ui/buttons_physics_field.py
index 3204ab4709d..696de5e6d56 100644
--- a/release/ui/buttons_physics_field.py
+++ b/release/ui/buttons_physics_field.py
@@ -30,6 +30,11 @@ class PHYSICS_PT_field(PhysicButtonsPanel):
class PHYSICS_PT_collision(PhysicButtonsPanel):
__idname__ = "PHYSICS_PT_collision"
__label__ = "Collision"
+ __default_closed__ = True
+
+ def poll(self, context):
+ ob = context.object
+ return (ob and ob.type == 'MESH')
def draw_header(self, context):
settings = context.object.collision
@@ -40,9 +45,22 @@ class PHYSICS_PT_collision(PhysicButtonsPanel):
md = context.collision
settings = context.object.collision
- if settings.enabled:
- pass
+ layout.active = settings.enabled
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemL(text="Damping:")
+ col.itemR(settings, "damping_factor", text="Factor");
+ col.itemR(settings, "random_damping", text="Random");
+
+ col = split.column()
+ col.itemL(text="Friction:")
+ col.itemR(settings, "friction_factor", text="Factor");
+ col.itemR(settings, "random_friction", text="Random");
+
+ layout.itemR(settings, "permeability");
+ layout.itemR(settings, "kill_particles");
bpy.types.register(PHYSICS_PT_field)
bpy.types.register(PHYSICS_PT_collision)
-
diff --git a/release/ui/buttons_physics_fluid.py b/release/ui/buttons_physics_fluid.py
index 57e3d910f30..2ab33b4a416 100644
--- a/release/ui/buttons_physics_fluid.py
+++ b/release/ui/buttons_physics_fluid.py
@@ -49,14 +49,175 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel):
row.item_enumR(fluid, "type", "PARTICLE")
row.item_enumR(fluid, "type", "CONTROL")
- if fluid.type == "DOMAIN":
+ if fluid.type == 'DOMAIN':
layout.itemO("FLUID_OT_bake", text="BAKE")
+ layout.itemL(text="Required Memory: " + fluid.memory_estimate)
+
+ layout.itemL(text="Resolution:")
+
+ split = layout.split()
+
+ col = split.column()
+ colsub = col.column(align=True)
+ colsub.itemR(fluid, "resolution", text="Final")
+ colsub.itemR(fluid, "render_display_mode", text="")
+ colsub = col.column(align=True)
+ colsub.itemL(text="Time:")
+ colsub.itemR(fluid, "start_time", text="Start")
+ colsub.itemR(fluid, "end_time", text="End")
+
+ col = split.column()
+ colsub = col.column(align=True)
+ colsub.itemR(fluid, "preview_resolution", text="Preview", slider=True)
+ colsub.itemR(fluid, "viewport_display_mode", text="")
+ colsub = col.column()
+ colsub.itemR(fluid, "reverse_frames")
+ colsub.itemR(fluid, "generate_speed_vectors")
+ colsub.itemR(fluid, "path", text="")
+
+ if fluid.type in ('FLUID', 'OBSTACLE', 'INFLOW', 'OUTFLOW'):
+ layout.itemR(fluid, "volume_initialization")
+
+ if fluid.type == 'FLUID':
+ row = layout.row()
+ row.column().itemR(fluid, "initial_velocity")
+ row.itemR(fluid, "export_animated_mesh")
+
+ if fluid.type == 'OBSTACLE':
+ row = layout.row()
+ row.itemL()
+ row.itemR(fluid, "export_animated_mesh")
+ layout.itemR(fluid, "slip_type", expand=True)
+ if fluid.slip_type == 'PARTIALSLIP':
+ layout.itemR(fluid, "partial_slip_amount", text="Amount")
+
+ layout.itemR(fluid, "impact_factor")
+
+ if fluid.type == 'INFLOW':
+ row = layout.row()
+ row.column().itemR(fluid, "inflow_velocity")
+ row.itemR(fluid, "export_animated_mesh")
+ layout.itemR(fluid, "local_coordinates")
+
+ if fluid.type == 'OUTFLOW':
+ row = layout.row()
+ row.itemL()
+ row.itemR(fluid, "export_animated_mesh")
+
+ if fluid.type == 'PARTICLE':
+ split = layout.split()
+
+ col = split.column()
+ col.itemL(text="Type:")
+ col.itemR(fluid, "drops")
+ col.itemR(fluid, "floats")
+ col.itemR(fluid, "tracer")
+
+ col = split.column()
+ col.itemL(text="Influence:")
+ col.itemR(fluid, "particle_influence", text="Particle")
+ col.itemR(fluid, "alpha_influence", text="Alpha")
+
+ layout.itemR(fluid, "path")
+
+ if fluid.type == 'CONTROL':
+ split = layout.split()
+
+ col = split.column()
+ col.itemL(text="Time:")
+ col.itemR(fluid, "start_time", text="Start")
+ col.itemR(fluid, "end_time", text="End")
+
+ col = split.column()
+ col.itemR(fluid, "quality", slider=True)
+ col.itemR(fluid, "reverse_frames")
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemL(text="Attraction:")
+ col.itemR(fluid, "attraction_strength", text="Strength")
+ col.itemR(fluid, "attraction_radius", text="Radius")
+
+ col = split.column()
+ col.itemL(text="Velocity:")
+ col.itemR(fluid, "velocity_strength", text="Strength")
+ col.itemR(fluid, "velocity_radius", text="Radius")
- col = layout.column(align=True)
+class PHYSICS_PT_domain_gravity(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_domain_gravity"
+ __label__ = "Domain World/Gravity"
+ __default_closed__ = True
+
+ def poll(self, context):
+ md = context.fluid
+ if md:
+ return (md.settings.type == 'DOMAIN')
- col.itemL(text="Req. Mem.: " + fluid.memory_estimate)
- col.itemR(fluid, "resolution")
- col.itemR(fluid, "preview_resolution")
+ def draw(self, context):
+ layout = self.layout
+ fluid = context.fluid.settings
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemR(fluid, "gravity")
+
+ col = split.column(align=True)
+ col.itemL(text="Viscosity:")
+ col.itemR(fluid, "viscosity_preset", text="")
+ if fluid.viscosity_preset == 'MANUAL':
+ col.itemR(fluid, "viscosity_base", text="Base")
+ col.itemR(fluid, "viscosity_exponent", text="Exponent")
-bpy.types.register(PHYSICS_PT_fluid)
+ col = layout.column_flow()
+ col.itemR(fluid, "real_world_size")
+ col.itemR(fluid, "grid_levels")
+ col.itemR(fluid, "compressibility")
+
+class PHYSICS_PT_domain_boundary(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_domain_boundary"
+ __label__ = "Domain Boundary"
+ __default_closed__ = True
+
+ def poll(self, context):
+ md = context.fluid
+ if md:
+ return (md.settings.type == 'DOMAIN')
+
+ def draw(self, context):
+ layout = self.layout
+ fluid = context.fluid.settings
+
+ layout.itemL(text="Slip:")
+
+ layout.itemR(fluid, "slip_type", expand=True)
+ if fluid.slip_type == 'PARTIALSLIP':
+ layout.itemR(fluid, "partial_slip_amount", text="Amount")
+
+ layout.itemL(text="Surface:")
+ row = layout.row()
+ row.itemR(fluid, "surface_smoothing", text="Smoothing")
+ row.itemR(fluid, "surface_subdivisions", text="Subdivisions")
+
+class PHYSICS_PT_domain_particles(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_domain_particles"
+ __label__ = "Domain Particles"
+ __default_closed__ = True
+
+ def poll(self, context):
+ md = context.fluid
+ if md:
+ return (md.settings.type == 'DOMAIN')
+ def draw(self, context):
+ layout = self.layout
+ fluid = context.fluid.settings
+
+ layout.itemR(fluid, "tracer_particles")
+ layout.itemR(fluid, "generate_particles")
+
+bpy.types.register(PHYSICS_PT_fluid)
+bpy.types.register(PHYSICS_PT_domain_gravity)
+bpy.types.register(PHYSICS_PT_domain_boundary)
+bpy.types.register(PHYSICS_PT_domain_particles)
diff --git a/release/ui/buttons_physics_softbody.py b/release/ui/buttons_physics_softbody.py
index 389d91bafa7..774f7f67979 100644
--- a/release/ui/buttons_physics_softbody.py
+++ b/release/ui/buttons_physics_softbody.py
@@ -7,7 +7,8 @@ class PhysicButtonsPanel(bpy.types.Panel):
__context__ = "physics"
def poll(self, context):
- return (context.object != None)
+ ob = context.object
+ return (ob and ob.type == 'MESH')
class PHYSICS_PT_softbody(PhysicButtonsPanel):
__idname__ = "PHYSICS_PT_softbody"
@@ -32,12 +33,187 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel):
else:
# add modifier
split.item_enumO("OBJECT_OT_modifier_add", "type", "SOFTBODY", text="Add")
- split.itemL()
+ split.itemL("")
+
+ if md:
+ softbody = md.settings
+
+ # General
+ split = layout.split()
+
+ col = split.column()
+ col.itemL(text="Object:")
+ col.itemR(softbody, "mass")
+ col.itemR(softbody, "friction")
+
+ col = split.column()
+ col.itemL(text="Simulation:")
+ col.itemR(softbody, "gravity")
+ col.itemR(softbody, "speed")
+
+
+class PHYSICS_PT_softbody_goal(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_softbody_goal"
+ __label__ = "Soft Body Goal"
+
+ def poll(self, context):
+ return (context.soft_body != None)
+
+ def draw_header(self, context):
+ layout = self.layout
+ softbody = context.soft_body.settings
+
+ layout.itemR(softbody, "use_goal", text="")
+
+ def draw(self, context):
+ layout = self.layout
+ md = context.soft_body
+ ob = context.object
+ split = layout.split()
+
if md:
softbody = md.settings
+ layout.active = softbody.use_goal
+ # Goal
split = layout.split()
+
+ col = split.column()
+ col.itemL(text="Goal Strengths:")
+ col.itemR(softbody, "goal_default", text="Default")
+ subcol = col.column(align=True)
+ subcol.itemR(softbody, "goal_min", text="Minimum")
+ subcol.itemR(softbody, "goal_max", text="Maximum")
-bpy.types.register(PHYSICS_PT_softbody)
+ col = split.column()
+ col.itemL(text="Goal Settings:")
+ col.itemR(softbody, "goal_spring", text="Stiffness")
+ col.itemR(softbody, "goal_friction", text="Damping")
+ layout.item_pointerR(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group")
+class PHYSICS_PT_softbody_edge(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_softbody_edge"
+ __label__ = "Soft Body Edges"
+
+ def poll(self, context):
+ return (context.soft_body != None)
+
+ def draw_header(self, context):
+ layout = self.layout
+ softbody = context.soft_body.settings
+
+ layout.itemR(softbody, "use_edges", text="")
+
+ def draw(self, context):
+ layout = self.layout
+ md = context.soft_body
+ ob = context.object
+
+ split = layout.split()
+
+ if md:
+ softbody = md.settings
+
+ layout.active = softbody.use_edges
+
+ split = layout.split()
+
+ col = split.column()
+ col.itemL(text="Springs:")
+ col.itemR(softbody, "pull")
+ col.itemR(softbody, "push")
+ col.itemR(softbody, "damp")
+ col.itemR(softbody, "plastic")
+ col.itemR(softbody, "bending")
+ col.itemR(softbody, "spring_length", text="Length")
+
+ col = split.column()
+ col.itemR(softbody, "stiff_quads")
+ subcol = col.column()
+ subcol.active = softbody.stiff_quads
+ subcol.itemR(softbody, "shear")
+
+ col.itemR(softbody, "new_aero", text="Aero")
+ subcol = col.column()
+ subcol.active = softbody.new_aero
+ subcol.itemR(softbody, "aero", text="Factor", enabled=softbody.new_aero)
+
+ col.itemL(text="Collision:")
+ col.itemR(softbody, "edge_collision", text="Edge")
+ col.itemR(softbody, "face_collision", text="Face")
+
+class PHYSICS_PT_softbody_collision(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_softbody_collision"
+ __label__ = "Soft Body Collision"
+
+ def poll(self, context):
+ return (context.soft_body != None)
+
+ def draw_header(self, context):
+ layout = self.layout
+ softbody = context.soft_body.settings
+
+ layout.itemR(softbody, "self_collision", text="")
+
+ def draw(self, context):
+ layout = self.layout
+ md = context.soft_body
+ ob = context.object
+
+ split = layout.split()
+
+ if md:
+ softbody = md.settings
+
+ layout.active = softbody.self_collision
+ layout.itemL(text="Collision Type:")
+ layout.itemR(softbody, "collision_type", expand=True)
+
+ col = layout.column(align=True)
+ col.itemL(text="Ball:")
+ col.itemR(softbody, "ball_size", text="Size")
+ col.itemR(softbody, "ball_stiff", text="Stiffness")
+ col.itemR(softbody, "ball_damp", text="Dampening")
+
+class PHYSICS_PT_softbody_solver(PhysicButtonsPanel):
+ __idname__ = "PHYSICS_PT_softbody_solver"
+ __label__ = "Soft Body Solver"
+
+ def poll(self, context):
+ return (context.soft_body != None)
+
+ def draw(self, context):
+ layout = self.layout
+ md = context.soft_body
+ ob = context.object
+
+ split = layout.split()
+
+ if md:
+ softbody = md.settings
+
+ # Solver
+ split = layout.split()
+
+ col = split.column(align=True)
+ col.itemL(text="Step Size:")
+ col.itemR(softbody, "minstep")
+ col.itemR(softbody, "maxstep")
+ col.itemR(softbody, "auto_step", text="Auto-Step")
+
+ col = split.column()
+ col.itemR(softbody, "error_limit")
+
+ col.itemL(text="Helpers:")
+ col.itemR(softbody, "choke")
+ col.itemR(softbody, "fuzzy")
+
+ layout.itemL(text="Diagnostics:")
+ layout.itemR(softbody, "diagnose")
+
+bpy.types.register(PHYSICS_PT_softbody)
+bpy.types.register(PHYSICS_PT_softbody_goal)
+bpy.types.register(PHYSICS_PT_softbody_edge)
+bpy.types.register(PHYSICS_PT_softbody_collision)
+bpy.types.register(PHYSICS_PT_softbody_solver)
diff --git a/release/ui/buttons_scene.py b/release/ui/buttons_scene.py
index df172ea8298..7e1f05d774e 100644
--- a/release/ui/buttons_scene.py
+++ b/release/ui/buttons_scene.py
@@ -274,4 +274,4 @@ bpy.types.register(RENDER_PT_dimensions)
bpy.types.register(RENDER_PT_antialiasing)
bpy.types.register(RENDER_PT_shading)
bpy.types.register(RENDER_PT_output)
-bpy.types.register(RENDER_PT_stamp) \ No newline at end of file
+bpy.types.register(RENDER_PT_stamp)
diff --git a/release/ui/buttons_texture.py b/release/ui/buttons_texture.py
index 31908d5ec9c..2aea2b478be 100644
--- a/release/ui/buttons_texture.py
+++ b/release/ui/buttons_texture.py
@@ -13,25 +13,22 @@ class TEXTURE_PT_preview(TextureButtonsPanel):
__idname__= "TEXTURE_PT_preview"
__label__ = "Preview"
- def poll(self, context):
- return (context.material or context.world or context.lamp or context.texture)
-
def draw(self, context):
layout = self.layout
tex = context.texture
layout.template_preview(tex)
-class TEXTURE_PT_texture(TextureButtonsPanel):
- __idname__= "TEXTURE_PT_texture"
- __label__ = "Texture"
+class TEXTURE_PT_context_texture(TextureButtonsPanel):
+ __idname__= "TEXTURE_PT_context_texture"
+ __no_header__ = True
def poll(self, context):
- return (context.material or context.world or context.lamp or context.texture)
+ return (context.material or context.world or context.lamp)
def draw(self, context):
layout = self.layout
-
+
tex = context.texture
ma = context.material
la = context.lamp
@@ -39,6 +36,20 @@ class TEXTURE_PT_texture(TextureButtonsPanel):
space = context.space_data
slot = context.texture_slot
+ if ma or la or wo:
+ row = layout.row()
+ if ma:
+ row.template_list(ma, "textures", ma, "active_texture_index")
+ elif la:
+ row.template_list(la, "textures", la, "active_texture_index")
+ elif wo:
+ row.template_list(wo, "textures", wo, "active_texture_index")
+ """if ma or la or wo:
+ col = row.column(align=True)
+ col.itemO("TEXTURE_OT_new", icon="ICON_ZOOMIN", text="")
+ #col.itemO("OBJECT_OT_material_slot_remove", icon="ICON_ZOOMOUT", text="")
+ """
+
split = layout.split(percentage=0.65)
if ma or la or wo:
@@ -47,17 +58,11 @@ class TEXTURE_PT_texture(TextureButtonsPanel):
else:
split.itemS()
- if ma:
- split.itemR(ma, "active_texture_index", text="Active")
- elif la:
- split.itemR(la, "active_texture_index", text="Active")
- elif wo:
- split.itemR(wo, "active_texture_index", text="Active")
elif tex:
split.template_ID(space, "pin_id")
split.itemS()
-
- layout.itemS()
+
+ layout.itemS()
if tex:
split = layout.split(percentage=0.2)
@@ -511,8 +516,8 @@ class TEXTURE_PT_distortednoise(TextureButtonsPanel):
sub = split.column()
sub.itemR(tex, "nabla")
+bpy.types.register(TEXTURE_PT_context_texture)
bpy.types.register(TEXTURE_PT_preview)
-bpy.types.register(TEXTURE_PT_texture)
bpy.types.register(TEXTURE_PT_clouds)
bpy.types.register(TEXTURE_PT_wood)
bpy.types.register(TEXTURE_PT_marble)
diff --git a/release/ui/buttons_world.py b/release/ui/buttons_world.py
index 39b5eca04ff..e8b2656dea1 100644
--- a/release/ui/buttons_world.py
+++ b/release/ui/buttons_world.py
@@ -12,17 +12,14 @@ class WorldButtonsPanel(bpy.types.Panel):
class WORLD_PT_preview(WorldButtonsPanel):
__label__ = "Preview"
- def poll(self, context):
- return (context.scene or context.world)
-
def draw(self, context):
layout = self.layout
world = context.world
layout.template_preview(world)
-class WORLD_PT_world(WorldButtonsPanel):
- __label__ = "World"
+class WORLD_PT_context_world(WorldButtonsPanel):
+ __no_header__ = True
def poll(self, context):
return (context.scene != None)
@@ -41,11 +38,16 @@ class WORLD_PT_world(WorldButtonsPanel):
elif world:
split.template_ID(space, "pin_id")
- split.itemS()
+class WORLD_PT_world(WorldButtonsPanel):
+ __label__ = "World"
+
+ def draw(self, context):
+ layout = self.layout
+
+ world = context.world
if world:
- layout.itemS()
-
+
row = layout.row()
row.itemR(world, "blend_sky")
row.itemR(world, "paper_sky")
@@ -173,7 +175,8 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
col.row().itemR(ao, "blend_mode", expand=True)
col.row().itemR(ao, "color", expand=True)
col.itemR(ao, "energy")
-
+
+bpy.types.register(WORLD_PT_context_world)
bpy.types.register(WORLD_PT_preview)
bpy.types.register(WORLD_PT_world)
bpy.types.register(WORLD_PT_ambient_occlusion)
diff --git a/release/ui/space_filebrowser.py b/release/ui/space_filebrowser.py
index 820134d3e87..0c37e8c0816 100644
--- a/release/ui/space_filebrowser.py
+++ b/release/ui/space_filebrowser.py
@@ -17,11 +17,13 @@ class FILEBROWSER_HT_header(bpy.types.Header):
row = layout.row()
row.itemM("FILEBROWSER_MT_directory")
row.itemM("FILEBROWSER_MT_bookmarks")
-
+
row = layout.row(align=True)
row.itemO("FILE_OT_parent", text="", icon='ICON_FILE_PARENT')
row.itemO("FILE_OT_refresh", text="", icon='ICON_FILE_REFRESH')
-
+ row.itemO("FILE_OT_previous", text="", icon='ICON_PREV_KEYFRAME')
+ row.itemO("FILE_OT_next", text="", icon='ICON_NEXT_KEYFRAME')
+
layout.itemR(params, "display", expand=True, text="")
layout.itemR(params, "sort", expand=True, text="")
diff --git a/release/ui/space_image.py b/release/ui/space_image.py
index 49ef18705c4..ce8257203dc 100644
--- a/release/ui/space_image.py
+++ b/release/ui/space_image.py
@@ -13,7 +13,7 @@ class IMAGE_MT_view(bpy.types.Menu):
show_uvedit = sima.show_uvedit
- layout.itemO("IMAGE_OT_properties") # icon
+ layout.itemO("IMAGE_OT_properties", icon="ICON_MENU_PANEL")
layout.itemS()
@@ -55,7 +55,7 @@ class IMAGE_MT_select(bpy.types.Menu):
layout.itemS()
layout.itemO("UV_OT_select_all_toggle")
- layout.itemO("UV_OT_select_invert")
+ layout.itemO("UV_OT_select_inverse")
layout.itemO("UV_OT_unlink_selection")
layout.itemS()
@@ -257,8 +257,6 @@ class IMAGE_HT_header(bpy.types.Header):
if show_uvedit:
uvedit = sima.uv_editor
- layout.itemS()
-
layout.itemR(uvedit, "pivot", text="")
layout.itemR(settings, "uv_sync_selection", text="")
diff --git a/release/ui/space_sequencer.py b/release/ui/space_sequencer.py
index b64e7d8e0c4..ae668926582 100644
--- a/release/ui/space_sequencer.py
+++ b/release/ui/space_sequencer.py
@@ -90,6 +90,10 @@ class SEQUENCER_MT_view(bpy.types.Menu):
"""
layout.itemR(st, "draw_frames")
+ if st.display_mode == 'IMAGE':
+ layout.itemR(st, "draw_safe_margin")
+ if st.display_mode == 'WAVEFORM':
+ layout.itemR(st, "seperate_color_preview")
"""
if(!sa->full) uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0,0, "");
@@ -115,7 +119,7 @@ class SEQUENCER_MT_select(bpy.types.Menu):
layout.itemS()
layout.itemO("SEQUENCER_OT_select_linked")
layout.itemO("SEQUENCER_OT_select_all_toggle")
- layout.itemO("SEQUENCER_OT_select_invert")
+ layout.itemO("SEQUENCER_OT_select_inverse")
class SEQUENCER_MT_marker(bpy.types.Menu):
__space_type__ = "SEQUENCE_EDITOR"
@@ -198,7 +202,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
layout.itemO("SEQUENCER_OT_images_separate")
layout.itemS()
- layout.itemO("SEQUENCER_OT_duplicate_add")
+ layout.itemO("SEQUENCER_OT_duplicate")
layout.itemO("SEQUENCER_OT_delete")
strip = act_strip(context)
diff --git a/release/ui/space_view3d_toolbar.py b/release/ui/space_view3d_toolbar.py
index a866b219b9d..990ba1eb6b6 100644
--- a/release/ui/space_view3d_toolbar.py
+++ b/release/ui/space_view3d_toolbar.py
@@ -15,7 +15,7 @@ class VIEW3D_PT_tools_objectmode(View3DPanel):
def draw(self, context):
layout = self.layout
- layout.row().itemO("OBJECT_OT_duplicate_add")
+ layout.row().itemO("OBJECT_OT_duplicate")
layout.row().itemO("OBJECT_OT_delete")
layout.row().itemO("OBJECT_OT_mesh_add")
layout.row().itemO("OBJECT_OT_curve_add")
@@ -36,7 +36,7 @@ class VIEW3D_PT_tools_editmode_mesh(View3DPanel):
def draw(self, context):
layout = self.layout
- layout.row().itemO("MESH_OT_duplicate_add")
+ layout.row().itemO("MESH_OT_duplicate")
layout.row().itemO("MESH_OT_delete")
layout.row().itemO("MESH_OT_spin")
layout.row().itemO("MESH_OT_screw")
diff --git a/source/Makefile b/source/Makefile
index 62eb25acbc1..de0b144ed71 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -83,7 +83,6 @@ GRPLIB += $(NAN_SOUNDSYSTEM)/lib/$(DEBUG_DIR)libSoundSystem.a
GRPLIB += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a
GRPLIB += $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a
GRPLIB += $(OCGDIR)/blender/render/$(DEBUG_DIR)librender.a
-GRPLIB += $(OCGDIR)/blender/radiosity/$(DEBUG_DIR)libradiosity.a
# nlin: the reason that some libraries appear more than once below is
# to handle circular dependencies in linking among libraries... some
@@ -221,8 +220,8 @@ PULIB += $(OCGDIR)/blender/ed_sequencer/$(DEBUG_DIR)libed_sequencer.a
PULIB += $(OCGDIR)/blender/ed_file/$(DEBUG_DIR)libed_file.a
PULIB += $(OCGDIR)/blender/ed_info/$(DEBUG_DIR)libed_info.a
PULIB += $(OCGDIR)/blender/ed_buttons/$(DEBUG_DIR)libed_buttons.a
-PULIB += $(OCGDIR)/blender/ed_node/$(DEBUG_DIR)libed_node.a
PULIB += $(OCGDIR)/blender/ed_graph/$(DEBUG_DIR)libed_graph.a
+PULIB += $(OCGDIR)/blender/ed_node/$(DEBUG_DIR)libed_node.a
PULIB += $(OCGDIR)/blender/ed_outliner/$(DEBUG_DIR)libed_outliner.a
PULIB += $(OCGDIR)/blender/ed_time/$(DEBUG_DIR)libed_time.a
PULIB += $(OCGDIR)/blender/ed_preview/$(DEBUG_DIR)libed_preview.a
diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h
index 73f0195d1d8..aa24706077d 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -91,7 +91,8 @@ typedef struct ParticleTexture{
float ivel; /* used in reset */
float time, life, exist, size; /* used in init */
float pvel[3]; /* used in physics */
- float length, clump, kink, rough; /* used in path caching */
+ float length, clump, kink, effector;/* used in path caching */
+ float rough1, rough2, roughe; /* used in path caching */
} ParticleTexture;
typedef struct BoidVecFunc{
@@ -270,7 +271,7 @@ void psys_update_world_cos(struct Object *ob, struct ParticleSystem *psys);
int do_guide(struct Scene *scene, struct ParticleKey *state, int pa_num, float time, struct ListBase *lb);
float psys_get_size(struct Object *ob, struct Material *ma, struct ParticleSystemModifierData *psmd, struct IpoCurve *icu_size, struct ParticleSystem *psys, struct ParticleSettings *part, struct ParticleData *pa, float *vg_size);
float psys_get_timestep(struct ParticleSettings *part);
-float psys_get_child_time(struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra);
+float psys_get_child_time(struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *birthtime, float *dietime);
float psys_get_child_size(struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *pa_time);
void psys_get_particle_on_path(struct Scene *scene, struct Object *ob, struct ParticleSystem *psys, int pa_num, struct ParticleKey *state, int vel);
int psys_get_particle_state(struct Scene *scene, struct Object *ob, struct ParticleSystem *psys, int p, struct ParticleKey *state, int always);
diff --git a/source/blender/blenkernel/BKE_pointcache.h b/source/blender/blenkernel/BKE_pointcache.h
index 3f1c45d28ec..c5d423c13ba 100644
--- a/source/blender/blenkernel/BKE_pointcache.h
+++ b/source/blender/blenkernel/BKE_pointcache.h
@@ -114,6 +114,7 @@ typedef struct PTCacheBaker {
struct Scene *scene;
int bake;
int render;
+ int anim_init;
int quick_step;
struct PTCacheID *pid;
int (*break_test)(void *data);
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c
index 1aceca454d2..6c1b8eb9000 100644
--- a/source/blender/blenkernel/intern/anim.c
+++ b/source/blender/blenkernel/intern/anim.c
@@ -786,8 +786,9 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
BLI_srandom(31415926 + psys->seed);
lay= scene->lay;
- if((part->draw_as == PART_DRAW_OB && part->dup_ob) ||
- (part->draw_as == PART_DRAW_GR && part->dup_group && part->dup_group->gobject.first)) {
+ if((psys->renderdata || part->draw_as==PART_DRAW_REND) &&
+ ((part->ren_as == PART_DRAW_OB && part->dup_ob) ||
+ (part->ren_as == PART_DRAW_GR && part->dup_group && part->dup_group->gobject.first))) {
/* if we have a hair particle system, use the path cache */
if(part->type == PART_HAIR) {
@@ -804,7 +805,7 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
psys->lattice = psys_get_lattice(scene, par, psys);
/* gather list of objects or single object */
- if(part->draw_as==PART_DRAW_GR) {
+ if(part->ren_as==PART_DRAW_GR) {
group_handle_recalc_and_update(scene, par, part->dup_group);
for(go=part->dup_group->gobject.first; go; go=go->next)
@@ -850,7 +851,7 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
size = psys_get_child_size(psys, cpa, ctime, 0);
}
- if(part->draw_as==PART_DRAW_GR) {
+ if(part->ren_as==PART_DRAW_GR) {
/* for groups, pick the object based on settings */
if(part->draw&PART_DRAW_RAND_GR)
b= BLI_rand() % totgroup;
@@ -894,7 +895,7 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
pamat[3][3]= 1.0f;
}
- if(part->draw_as==PART_DRAW_GR && psys->part->draw & PART_DRAW_WHOLE_GR) {
+ if(part->ren_as==PART_DRAW_GR && psys->part->draw & PART_DRAW_WHOLE_GR) {
for(go= part->dup_group->gobject.first, b=0; go; go= go->next, b++) {
Mat4MulMat4(tmat, oblist[b]->obmat, pamat);
Mat4MulFloat3((float *)tmat, size*scale);
@@ -930,7 +931,7 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
}
/* restore objects since they were changed in where_is_object_time */
- if(part->draw_as==PART_DRAW_GR) {
+ if(part->ren_as==PART_DRAW_GR) {
for(a=0; a<totgroup; a++)
*(oblist[a])= obcopylist[a];
}
diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index 08caea565aa..089dafeb8c7 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -341,24 +341,27 @@ void bvhselftree_update_from_cloth(ClothModifierData *clmd, int moving)
}
int modifiers_indexInObject(Object *ob, ModifierData *md_seek);
-static void cloth_write_state(int index, Cloth *cloth, float *data)
+static void cloth_write_state(int index, void *cloth_v, float *data)
{
+ Cloth *cloth= cloth_v;
ClothVertex *vert = cloth->verts + index;
memcpy(data, vert->x, 3 * sizeof(float));
memcpy(data + 3, vert->xconst, 3 * sizeof(float));
memcpy(data + 6, vert->v, 3 * sizeof(float));
}
-static void cloth_read_state(int index, Cloth *cloth, float *data)
+static void cloth_read_state(int index, void *cloth_v, float *data)
{
+ Cloth *cloth= cloth_v;
ClothVertex *vert = cloth->verts + index;
memcpy(vert->x, data, 3 * sizeof(float));
memcpy(vert->xconst, data + 3, 3 * sizeof(float));
memcpy(vert->v, data + 6, 3 * sizeof(float));
}
-static void cloth_cache_interpolate(int index, Cloth *cloth, float frs_sec, float cfra, float cfra1, float cfra2, float *data1, float *data2)
+static void cloth_cache_interpolate(int index, void *cloth_v, float frs_sec, float cfra, float cfra1, float cfra2, float *data1, float *data2)
{
+ Cloth *cloth= cloth_v;
ClothVertex *vert = cloth->verts + index;
ParticleKey keys[4];
float dfra;
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index a36b825293e..de036e25d82 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -568,14 +568,14 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O
dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA, "Particle Keyed Physics");
}
- if(part->draw_as == PART_DRAW_OB && part->dup_ob) {
+ if(part->ren_as == PART_DRAW_OB && part->dup_ob) {
node2 = dag_get_node(dag, part->dup_ob);
dag_add_relation(dag, node, node2, DAG_RL_OB_OB, "Particle Object Visualisation");
if(part->dup_ob->type == OB_MBALL)
dag_add_relation(dag, node, node2, DAG_RL_DATA_DATA, "Particle Object Visualisation");
}
- if(part->draw_as == PART_DRAW_GR && part->dup_group) {
+ if(part->ren_as == PART_DRAW_GR && part->dup_group) {
for(go=part->dup_group->gobject.first; go; go=go->next) {
node2 = dag_get_node(dag, go->ob);
dag_add_relation(dag, node, node2, DAG_RL_OB_OB, "Particle Group Visualisation");
diff --git a/source/blender/blenkernel/intern/fluidsim.c b/source/blender/blenkernel/intern/fluidsim.c
index 6eba64cf33d..2b4032af503 100644
--- a/source/blender/blenkernel/intern/fluidsim.c
+++ b/source/blender/blenkernel/intern/fluidsim.c
@@ -114,7 +114,7 @@ void fluidsim_init(FluidsimModifierData *fluidmd)
// no bounding box needed
// todo - reuse default init from elbeem!
- fss->typeFlags = 0;
+ fss->typeFlags = OB_FSBND_NOSLIP;
fss->domainNovecgen = 0;
fss->volumeInitType = 1; // volume
fss->partSlipValue = 0.0;
diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c
index 5cf52d09314..67d63d527cb 100644
--- a/source/blender/blenkernel/intern/lattice.c
+++ b/source/blender/blenkernel/intern/lattice.c
@@ -232,8 +232,8 @@ void free_lattice(Lattice *lt)
if(lt->def) MEM_freeN(lt->def);
if(lt->dvert) free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
if(lt->editlatt) {
- if(lt->def) MEM_freeN(lt->def);
- if(lt->dvert) free_dverts(lt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
+ if(lt->editlatt->def) MEM_freeN(lt->editlatt->def);
+ if(lt->editlatt->dvert) free_dverts(lt->editlatt->dvert, lt->pntsu*lt->pntsv*lt->pntsw);
MEM_freeN(lt->editlatt);
}
}
@@ -817,59 +817,68 @@ void outside_lattice(Lattice *lt)
int u, v, w;
float fac1, du=0.0, dv=0.0, dw=0.0;
- bp= lt->def;
+ if(lt->flag & LT_OUTSIDE) {
+ bp= lt->def;
- if(lt->pntsu>1) du= 1.0f/((float)lt->pntsu-1);
- if(lt->pntsv>1) dv= 1.0f/((float)lt->pntsv-1);
- if(lt->pntsw>1) dw= 1.0f/((float)lt->pntsw-1);
-
- for(w=0; w<lt->pntsw; w++) {
-
- for(v=0; v<lt->pntsv; v++) {
-
- for(u=0; u<lt->pntsu; u++, bp++) {
- if(u==0 || v==0 || w==0 || u==lt->pntsu-1 || v==lt->pntsv-1 || w==lt->pntsw-1);
- else {
-
- bp->hide= 1;
- bp->f1 &= ~SELECT;
-
- /* u extrema */
- bp1= latt_bp(lt, 0, v, w);
- bp2= latt_bp(lt, lt->pntsu-1, v, w);
-
- fac1= du*u;
- bp->vec[0]= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
- bp->vec[1]= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
- bp->vec[2]= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
-
- /* v extrema */
- bp1= latt_bp(lt, u, 0, w);
- bp2= latt_bp(lt, u, lt->pntsv-1, w);
-
- fac1= dv*v;
- bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
- bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
- bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
-
- /* w extrema */
- bp1= latt_bp(lt, u, v, 0);
- bp2= latt_bp(lt, u, v, lt->pntsw-1);
-
- fac1= dw*w;
- bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
- bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
- bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
-
- VecMulf(bp->vec, 0.3333333f);
+ if(lt->pntsu>1) du= 1.0f/((float)lt->pntsu-1);
+ if(lt->pntsv>1) dv= 1.0f/((float)lt->pntsv-1);
+ if(lt->pntsw>1) dw= 1.0f/((float)lt->pntsw-1);
+
+ for(w=0; w<lt->pntsw; w++) {
+
+ for(v=0; v<lt->pntsv; v++) {
+
+ for(u=0; u<lt->pntsu; u++, bp++) {
+ if(u==0 || v==0 || w==0 || u==lt->pntsu-1 || v==lt->pntsv-1 || w==lt->pntsw-1);
+ else {
+ bp->hide= 1;
+ bp->f1 &= ~SELECT;
+
+ /* u extrema */
+ bp1= latt_bp(lt, 0, v, w);
+ bp2= latt_bp(lt, lt->pntsu-1, v, w);
+
+ fac1= du*u;
+ bp->vec[0]= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
+ bp->vec[1]= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
+ bp->vec[2]= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
+
+ /* v extrema */
+ bp1= latt_bp(lt, u, 0, w);
+ bp2= latt_bp(lt, u, lt->pntsv-1, w);
+
+ fac1= dv*v;
+ bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
+ bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
+ bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
+
+ /* w extrema */
+ bp1= latt_bp(lt, u, v, 0);
+ bp2= latt_bp(lt, u, v, lt->pntsw-1);
+
+ fac1= dw*w;
+ bp->vec[0]+= (1.0f-fac1)*bp1->vec[0] + fac1*bp2->vec[0];
+ bp->vec[1]+= (1.0f-fac1)*bp1->vec[1] + fac1*bp2->vec[1];
+ bp->vec[2]+= (1.0f-fac1)*bp1->vec[2] + fac1*bp2->vec[2];
+
+ VecMulf(bp->vec, 0.3333333f);
+
+ }
}
+
}
}
-
}
-
+ else {
+ bp= lt->def;
+
+ for(w=0; w<lt->pntsw; w++)
+ for(v=0; v<lt->pntsv; v++)
+ for(u=0; u<lt->pntsu; u++, bp++)
+ bp->hide= 0;
+ }
}
float (*lattice_getVertexCos(struct Object *ob, int *numVerts_r))[3]
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 9ecf3a32c2b..046dfcc9f87 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -6390,6 +6390,7 @@ static void particleSystemModifier_deformVerts(
}
if(psys){
+ psmd->flag &= ~eParticleSystemFlag_psys_updated;
particle_system_update(md->scene, ob, psys);
psmd->flag |= eParticleSystemFlag_psys_updated;
psmd->flag &= ~eParticleSystemFlag_DM_changed;
@@ -6421,6 +6422,8 @@ static void particleInstanceModifier_initData(ModifierData *md)
pimd->flag = eParticleInstanceFlag_Parents|eParticleInstanceFlag_Unborn|
eParticleInstanceFlag_Alive|eParticleInstanceFlag_Dead;
pimd->psys = 1;
+ pimd->position = 1.0f;
+ pimd->axis = 2;
}
static void particleInstanceModifier_copyData(ModifierData *md, ModifierData *target)
@@ -6431,6 +6434,8 @@ static void particleInstanceModifier_copyData(ModifierData *md, ModifierData *ta
tpimd->ob = pimd->ob;
tpimd->psys = pimd->psys;
tpimd->flag = pimd->flag;
+ tpimd->position = pimd->position;
+ tpimd->random_position = pimd->random_position;
}
static int particleInstanceModifier_dependsOnTime(ModifierData *md)
@@ -6470,8 +6475,9 @@ static DerivedMesh * particleInstanceModifier_applyModifier(
MFace *mface, *orig_mface;
MVert *mvert, *orig_mvert;
int i,totvert, totpart=0, totface, maxvert, maxface, first_particle=0;
- short track=ob->trackflag%3, trackneg;
+ short track=ob->trackflag%3, trackneg, axis = pimd->axis;
float max_co=0.0, min_co=0.0, temp_co[3], cross[3];
+ float *size=NULL;
trackneg=((ob->trackflag>2)?1:0);
@@ -6498,6 +6504,25 @@ static DerivedMesh * particleInstanceModifier_applyModifier(
if(totpart==0)
return derivedData;
+ if(pimd->flag & eParticleInstanceFlag_UseSize) {
+ int p;
+ float *si;
+ si = size = MEM_callocN(totpart * sizeof(float), "particle size array");
+
+ if(pimd->flag & eParticleInstanceFlag_Parents) {
+ for(p=0, pa= psys->particles; p<psys->totpart; p++, pa++, si++)
+ *si = pa->size;
+ }
+
+ if(pimd->flag & eParticleInstanceFlag_Children) {
+ ChildParticle *cpa = psys->child;
+
+ for(p=0; p<psys->totchild; p++, cpa++, si++) {
+ *si = psys_get_child_size(psys, cpa, 0.0f, NULL);
+ }
+ }
+ }
+
pars=psys->particles;
totvert=dm->getNumVerts(dm);
@@ -6508,7 +6533,7 @@ static DerivedMesh * particleInstanceModifier_applyModifier(
psys->lattice=psys_get_lattice(md->scene, ob, psys);
- if(psys->flag & (PSYS_HAIR_DONE|PSYS_KEYED)){
+ if(psys->flag & (PSYS_HAIR_DONE|PSYS_KEYED) || psys->pointcache->flag & PTCACHE_BAKED){
float min_r[3], max_r[3];
INIT_MINMAX(min_r, max_r);
@@ -6533,40 +6558,59 @@ static DerivedMesh * particleInstanceModifier_applyModifier(
/*change orientation based on object trackflag*/
VECCOPY(temp_co,mv->co);
- mv->co[0]=temp_co[track];
- mv->co[1]=temp_co[(track+1)%3];
- mv->co[2]=temp_co[(track+2)%3];
-
- if(psys->flag & (PSYS_HAIR_DONE|PSYS_KEYED) && pimd->flag & eParticleInstanceFlag_Path){
- state.time=(mv->co[0]-min_co)/(max_co-min_co);
- if(trackneg)
- state.time=1.0f-state.time;
- psys_get_particle_on_path(md->scene, pimd->ob, psys,first_particle + i/totvert, &state,1);
+ mv->co[axis]=temp_co[track];
+ mv->co[(axis+1)%3]=temp_co[(track+1)%3];
+ mv->co[(axis+2)%3]=temp_co[(track+2)%3];
+
+ if((psys->flag & (PSYS_HAIR_DONE|PSYS_KEYED) || psys->pointcache->flag & PTCACHE_BAKED) && pimd->flag & eParticleInstanceFlag_Path){
+ float ran = 0.0f;
+ if(pimd->random_position != 0.0f) {
+ /* just use some static collection of random numbers */
+ /* TODO: use something else that's unique to each instanced object */
+ pa = psys->particles + (i/totvert)%totpart;
+ ran = pimd->random_position * 0.5 * (1.0f + pa->r_ave[0]);
+ }
- mv->co[0] = 0.0;
+ if(pimd->flag & eParticleInstanceFlag_KeepShape) {
+ state.time = pimd->position * (1.0f - ran);
+ }
+ else {
+ state.time=(mv->co[axis]-min_co)/(max_co-min_co) * pimd->position * (1.0f - ran);
+
+ if(trackneg)
+ state.time=1.0f-state.time;
+
+ mv->co[axis] = 0.0;
+ }
+
+ psys_get_particle_on_path(md->scene, pimd->ob, psys,first_particle + i/totvert, &state,1);
Normalize(state.vel);
- if(state.vel[0] < -0.9999 || state.vel[0] > 0.9999) {
- state.rot[0] = 1.0;
+ /* TODO: incremental rotations somehow */
+ if(state.vel[axis] < -0.9999 || state.vel[axis] > 0.9999) {
+ state.rot[0] = 1;
state.rot[1] = state.rot[2] = state.rot[3] = 0.0f;
}
else {
- /* a cross product of state.vel and a unit vector in x-direction */
- cross[0] = 0.0f;
- cross[1] = -state.vel[2];
- cross[2] = state.vel[1];
+ float temp[3] = {0.0f,0.0f,0.0f};
+ temp[axis] = 1.0f;
+
+ Crossf(cross, temp, state.vel);
- /* state.vel[0] is the only component surviving from a dot product with a vector in x-direction*/
- VecRotToQuat(cross,saacos(state.vel[0]),state.rot);
+ /* state.vel[axis] is the only component surviving from a dot product with the axis */
+ VecRotToQuat(cross,saacos(state.vel[axis]),state.rot);
}
+
}
else{
state.time=-1.0;
- psys_get_particle_state(md->scene, pimd->ob, psys, i/totvert, &state,1);
+ psys_get_particle_state(md->scene, pimd->ob, psys, first_particle + i/totvert, &state,1);
}
QuatMulVecf(state.rot,mv->co);
+ if(pimd->flag & eParticleInstanceFlag_UseSize)
+ VecMulf(mv->co, size[i/totvert]);
VECADD(mv->co,mv->co,state.co);
}
@@ -6619,6 +6663,9 @@ static DerivedMesh * particleInstanceModifier_applyModifier(
psys->lattice= NULL;
}
+ if(size)
+ MEM_freeN(size);
+
return result;
}
static DerivedMesh *particleInstanceModifier_applyModifierEM(
@@ -7257,10 +7304,10 @@ static DerivedMesh * explodeModifier_explodeMesh(ExplodeModifierData *emd,
timestep= psys_get_timestep(part);
- if(part->flag & PART_GLOB_TIME)
+ //if(part->flag & PART_GLOB_TIME)
cfra=bsystem_time(scene, 0,(float)scene->r.cfra,0.0);
- else
- cfra=bsystem_time(scene, ob,(float)scene->r.cfra,0.0);
+ //else
+ // cfra=bsystem_time(scene, ob,(float)scene->r.cfra,0.0);
/* hash table for vertice <-> particle relations */
vertpahash= BLI_edgehash_new();
diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c
index 4d88556d8bf..02b0f6a45a0 100644
--- a/source/blender/blenkernel/intern/packedFile.c
+++ b/source/blender/blenkernel/intern/packedFile.c
@@ -377,8 +377,6 @@ there was an error or when the user desides to cancel the operation.
char *unpackFile(ReportList *reports, char *abs_name, char *local_name, PackedFile *pf, int how)
{
- char menu[6 *(FILE_MAXDIR + FILE_MAXFILE + 100)];
- char line[FILE_MAXDIR + FILE_MAXFILE + 100];
char *newname = NULL, *temp = NULL;
// char newabs[FILE_MAXDIR + FILE_MAXFILE];
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 5bf9335d211..4488f8cdffd 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -81,6 +81,10 @@
static void key_from_object(Object *ob, ParticleKey *key);
static void get_cpa_texture(DerivedMesh *dm, Material *ma, int face_index,
float *fuv, float *orco, ParticleTexture *ptex, int event);
+static void get_child_modifier_parameters(ParticleSettings *part, ParticleThreadContext *ctx,
+ ChildParticle *cpa, short cpa_from, int cpa_num, float *cpa_fuv, float *orco, ParticleTexture *ptex);
+static void do_child_modifiers(Scene *scene, Object *ob, ParticleSystem *psys, ParticleSettings *part,
+ ParticleTexture *ptex, ParticleKey *par, float *par_rot, ChildParticle *cpa, float *orco, ParticleKey *state, float t);
/* few helpers for countall etc. */
int count_particles(ParticleSystem *psys){
@@ -452,7 +456,7 @@ void psys_free(Object *ob, ParticleSystem * psys)
for(tpsys=ob->particlesystem.first; tpsys; tpsys=tpsys->next){
if(tpsys->part)
{
- if(ELEM(tpsys->part->draw_as,PART_DRAW_OB,PART_DRAW_GR))
+ if(ELEM(tpsys->part->ren_as,PART_DRAW_OB,PART_DRAW_GR))
{
nr++;
break;
@@ -491,6 +495,7 @@ typedef struct ParticleRenderData {
ChildParticle *child;
ParticleCacheKey **pathcache;
ParticleCacheKey **childcache;
+ ListBase pathcachebufs, childcachebufs;
int totchild, totcached, totchildcache;
DerivedMesh *dm;
int totdmvert, totdmedge, totdmface;
@@ -577,8 +582,12 @@ void psys_render_set(Object *ob, ParticleSystem *psys, float viewmat[][4], float
data->child= psys->child;
data->totchild= psys->totchild;
data->pathcache= psys->pathcache;
+ data->pathcachebufs.first = psys->pathcachebufs.first;
+ data->pathcachebufs.last = psys->pathcachebufs.last;
data->totcached= psys->totcached;
data->childcache= psys->childcache;
+ data->childcachebufs.first = psys->childcachebufs.first;
+ data->childcachebufs.last = psys->childcachebufs.last;
data->totchildcache= psys->totchildcache;
if(psmd->dm)
@@ -591,6 +600,8 @@ void psys_render_set(Object *ob, ParticleSystem *psys, float viewmat[][4], float
psys->pathcache= NULL;
psys->childcache= NULL;
psys->totchild= psys->totcached= psys->totchildcache= 0;
+ psys->pathcachebufs.first = psys->pathcachebufs.last = NULL;
+ psys->childcachebufs.first = psys->childcachebufs.last = NULL;
Mat4CpyMat4(data->winmat, winmat);
Mat4MulMat4(data->viewmat, ob->obmat, viewmat);
@@ -631,8 +642,12 @@ void psys_render_restore(Object *ob, ParticleSystem *psys)
psys->child= data->child;
psys->totchild= data->totchild;
psys->pathcache= data->pathcache;
+ psys->pathcachebufs.first = data->pathcachebufs.first;
+ psys->pathcachebufs.last = data->pathcachebufs.last;
psys->totcached= data->totcached;
psys->childcache= data->childcache;
+ psys->childcachebufs.first = data->childcachebufs.first;
+ psys->childcachebufs.last = data->childcachebufs.last;
psys->totchildcache= data->totchildcache;
psmd->dm= data->dm;
@@ -663,7 +678,7 @@ int psys_render_simplify_distribution(ParticleThreadContext *ctx, int tot)
int *origindex, *facetotvert;
int a, b, totorigface, totface, newtot, skipped;
- if(part->draw_as!=PART_DRAW_PATH || !(part->draw & PART_DRAW_REN_STRAND))
+ if(part->ren_as!=PART_DRAW_PATH || !(part->draw & PART_DRAW_REN_STRAND))
return tot;
if(!ctx->psys->renderdata)
return tot;
@@ -1992,13 +2007,11 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
ParticleData *pa=NULL;
ParticleTexture ptex;
float *cpa_fuv=0, *par_rot=0;
- float co[3], orco[3], ornor[3], t, rough_t, cpa_1st[3], dvec[3];
- float branch_begin, branch_end, branch_prob, branchfac, rough_rand;
- float pa_rough1, pa_rough2, pa_roughe;
- float length, pa_length, pa_clump, pa_kink, pa_effector;
- float max_length = 1.0f, cur_length = 0.0f;
+ float co[3], orco[3], ornor[3], t, cpa_1st[3], dvec[3];
+ float branch_begin, branch_end, branch_prob, rough_rand;
+ float length, max_length = 1.0f, cur_length = 0.0f;
float eff_length, eff_vec[3];
- int k, cpa_num, guided = 0;
+ int k, cpa_num;
short cpa_from;
if(part->flag & PART_BRANCHING) {
@@ -2059,9 +2072,11 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
psys_particle_on_emitter(ctx->psmd,cpa_from,cpa_num,DMCACHE_ISCHILD,cpa->fuv,foffset,co,ornor,0,0,orco,0);
- /* we need to save the actual root position of the child for positioning it accurately to the surface of the emitter */
- VECCOPY(cpa_1st,co);
- Mat4MulVecfl(ob->obmat,cpa_1st);
+ if(part->path_start==0.0f) {
+ /* we need to save the actual root position of the child for positioning it accurately to the surface of the emitter */
+ VECCOPY(cpa_1st,co);
+ Mat4MulVecfl(ob->obmat,cpa_1st);
+ }
pa=0;
}
@@ -2098,43 +2113,13 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
#endif // XXX old animation system
/* get different child parameters from textures & vgroups */
- ptex.length=part->length*(1.0f - part->randlength*cpa->rand[0]);
- ptex.clump=1.0;
- ptex.kink=1.0;
- ptex.rough= 1.0;
- ptex.exist= 1.0;
-
- get_cpa_texture(ctx->dm,ctx->ma,cpa_num,cpa_fuv,orco,&ptex,
- MAP_PA_DENS|MAP_PA_LENGTH|MAP_PA_CLUMP|MAP_PA_KINK|MAP_PA_ROUGH);
-
- pa_length=ptex.length;
- pa_clump=ptex.clump;
- pa_kink=ptex.kink;
- pa_rough1=ptex.rough;
- pa_rough2=ptex.rough;
- pa_roughe=ptex.rough;
- pa_effector= 1.0f;
+ get_child_modifier_parameters(part, ctx, cpa, cpa_from, cpa_num, cpa_fuv, orco, &ptex);
if(ptex.exist < cpa->rand[1]) {
keys->steps = -1;
return;
}
- if(ctx->vg_length)
- pa_length*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_length);
- if(ctx->vg_clump)
- pa_clump*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_clump);
- if(ctx->vg_kink)
- pa_kink*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_kink);
- if(ctx->vg_rough1)
- pa_rough1*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_rough1);
- if(ctx->vg_rough2)
- pa_rough2*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_rough2);
- if(ctx->vg_roughe)
- pa_roughe*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_roughe);
- if(ctx->vg_effector)
- pa_effector*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_effector);
-
/* create the child path */
for(k=0,state=keys; k<=ctx->steps; k++,state++){
if(ctx->between){
@@ -2158,12 +2143,14 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
key[w]++;
w++;
}
- if(k==0){
- /* calculate the offset between actual child root position and first position interpolated from parents */
- VECSUB(cpa_1st,cpa_1st,state->co);
+ if(part->path_start==0.0f) {
+ if(k==0){
+ /* calculate the offset between actual child root position and first position interpolated from parents */
+ VECSUB(cpa_1st,cpa_1st,state->co);
+ }
+ /* apply offset for correct positioning */
+ VECADD(state->co,state->co,cpa_1st);
}
- /* apply offset for correct positioning */
- VECADD(state->co,state->co,cpa_1st);
}
else{
/* offset the child from the parent position */
@@ -2177,7 +2164,7 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
if(part->flag & PART_CHILD_EFFECT) {
for(k=0,state=keys; k<=ctx->steps; k++,state++) {
if(k) {
- do_path_effectors(ctx->scene, ob, psys, cpa->pa[0], state, k, ctx->steps, keys->co, pa_effector, 0.0f, ctx->cfra, &eff_length, eff_vec);
+ do_path_effectors(ctx->scene, ob, psys, cpa->pa[0], state, k, ctx->steps, keys->co, ptex.effector, 0.0f, ctx->cfra, &eff_length, eff_vec);
}
else {
VecSubf(eff_vec,(state+1)->co,state->co);
@@ -2203,67 +2190,50 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
}
/* apply different deformations to the child path */
- if(part->flag & PART_CHILD_EFFECT)
- /* state is safe to cast, since only co and vel are used */
- guided = do_guide(ctx->scene, (ParticleKey*)state, cpa->parent, t, &(psys->effectors));
-
- if(guided==0){
- if(part->kink)
- do_prekink((ParticleKey*)state, (ParticleKey*)par, par_rot, t,
- part->kink_freq * pa_kink, part->kink_shape, part->kink_amp, part->kink, part->kink_axis, ob->obmat);
-
- do_clump((ParticleKey*)state, (ParticleKey*)par, t, part->clumpfac, part->clumppow, pa_clump);
- }
-
- if(part->flag & PART_BRANCHING && ctx->between == 0 && part->flag & PART_ANIM_BRANCHING)
- rough_t = t * rough_rand;
- else
- rough_t = t;
+ do_child_modifiers(ctx->scene, ob, psys, part, &ptex, (ParticleKey *)par, par_rot, cpa, orco, (ParticleKey *)state, t);
- if(part->rough1 != 0.0 && pa_rough1 != 0.0)
- do_rough(orco, rough_t, pa_rough1*part->rough1, part->rough1_size, 0.0, (ParticleKey*)state);
-
- if(part->rough2 != 0.0 && pa_rough2 != 0.0)
- do_rough(cpa->rand, rough_t, pa_rough2*part->rough2, part->rough2_size, part->rough2_thres, (ParticleKey*)state);
-
- if(part->rough_end != 0.0 && pa_roughe != 0.0)
- do_rough_end(cpa->rand, rough_t, pa_roughe*part->rough_end, part->rough_end_shape, (ParticleKey*)state, (ParticleKey*)par);
-
- if(part->flag & PART_BRANCHING && ctx->between==0){
- if(branch_prob > part->branch_thres){
- branchfac=0.0f;
- }
- else{
- if(part->flag & PART_SYMM_BRANCHING){
- if(t < branch_begin || t > branch_end)
- branchfac=0.0f;
- else{
- if((t-branch_begin)/(branch_end-branch_begin)<0.5)
- branchfac=2.0f*(t-branch_begin)/(branch_end-branch_begin);
- else
- branchfac=2.0f*(branch_end-t)/(branch_end-branch_begin);
+ /* TODO: better branching */
+ //if(part->flag & PART_BRANCHING && ctx->between == 0 && part->flag & PART_ANIM_BRANCHING)
+ // rough_t = t * rough_rand;
+ //else
+ // rough_t = t;
- CLAMP(branchfac,0.0f,1.0f);
- }
- }
- else{
- if(t < branch_begin){
- branchfac=0.0f;
- }
- else{
- branchfac=(t-branch_begin)/((1.0f-branch_begin)*0.5f);
- CLAMP(branchfac,0.0f,1.0f);
- }
- }
- }
+ /* TODO: better branching */
+ //if(part->flag & PART_BRANCHING && ctx->between==0){
+ // if(branch_prob > part->branch_thres){
+ // branchfac=0.0f;
+ // }
+ // else{
+ // if(part->flag & PART_SYMM_BRANCHING){
+ // if(t < branch_begin || t > branch_end)
+ // branchfac=0.0f;
+ // else{
+ // if((t-branch_begin)/(branch_end-branch_begin)<0.5)
+ // branchfac=2.0f*(t-branch_begin)/(branch_end-branch_begin);
+ // else
+ // branchfac=2.0f*(branch_end-t)/(branch_end-branch_begin);
+
+ // CLAMP(branchfac,0.0f,1.0f);
+ // }
+ // }
+ // else{
+ // if(t < branch_begin){
+ // branchfac=0.0f;
+ // }
+ // else{
+ // branchfac=(t-branch_begin)/((1.0f-branch_begin)*0.5f);
+ // CLAMP(branchfac,0.0f,1.0f);
+ // }
+ // }
+ // }
- if(i<psys->totpart)
- VecLerpf(state->co, (pcache[i] + k)->co, state->co, branchfac);
- else
- /* this is not threadsafe, but should only happen for
- * branching particles particles, which are not threaded */
- VecLerpf(state->co, (cache[i - psys->totpart] + k)->co, state->co, branchfac);
- }
+ // if(i<psys->totpart)
+ // VecLerpf(state->co, (pcache[i] + k)->co, state->co, branchfac);
+ // else
+ // /* this is not threadsafe, but should only happen for
+ // * branching particles particles, which are not threaded */
+ // VecLerpf(state->co, (cache[i - psys->totpart] + k)->co, state->co, branchfac);
+ //}
/* we have to correct velocity because of kink & clump */
if(k>1){
@@ -2287,9 +2257,9 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
else{
/* initialize length calculation */
if(part->flag&PART_ABS_LENGTH)
- max_length= part->abslength*pa_length;
+ max_length= part->abslength*ptex.length;
else
- max_length= pa_length;
+ max_length= ptex.length;
cur_length= 0.0f;
}
@@ -2383,7 +2353,36 @@ void psys_cache_child_paths(Scene *scene, Object *ob, ParticleSystem *psys, floa
psys_threads_free(pthreads);
}
+static void get_pointcache_keys_for_time(ParticleSystem *psys, int index, float t, ParticleKey *key1, ParticleKey *key2)
+{
+ PointCache *cache = psys->pointcache;
+ static PTCacheMem *pm = NULL;
+
+ if(cache->flag & PTCACHE_DISK_CACHE) {
+ /* TODO */
+ }
+ else {
+ if(index < 0) { /* initialize */
+ pm = cache->mem_cache.first;
+ if(pm)
+ pm = pm->next;
+ }
+ else {
+ if(pm) {
+ while(pm && pm->next && (float)pm->frame < t)
+ pm = pm->next;
+ copy_particle_key(key2, ((ParticleKey *)pm->data) + index, 1);
+ copy_particle_key(key1, ((ParticleKey *)(pm->prev)->data) + index, 1);
+ }
+ else if(cache->mem_cache.first) {
+ pm = cache->mem_cache.first;
+ copy_particle_key(key2, ((ParticleKey *)pm->data) + index, 1);
+ copy_particle_key(key1, ((ParticleKey *)pm->data) + index, 1);
+ }
+ }
+ }
+}
/* Calculates paths ready for drawing/rendering. */
/* -Usefull for making use of opengl vertex arrays for super fast strand drawing. */
/* -Makes child strands possible and creates them too into the cache. */
@@ -2409,7 +2408,7 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
float birthtime = 0.0, dietime = 0.0;
float t, time = 0.0, keytime = 0.0, dfra = 1.0, frs_sec = scene->r.frs_sec;
- float col[3] = {0.5f, 0.5f, 0.5f};
+ float col[4] = {0.5f, 0.5f, 0.5f, 1.0f};
float prev_tangent[3], hairmat[4][4];
int k,i;
int steps = (int)pow(2.0, (double)psys->part->draw_step);
@@ -2418,13 +2417,18 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
float nosel_col[3];
float length, vec[3];
float *vg_effector= NULL, effector=0.0f;
- float *vg_length= NULL, pa_length=1.0f, max_length=1.0f, cur_length=0.0f;
- float len, dvec[3];
+ float *vg_length= NULL, pa_length=1.0f;
+ int keyed, baked;
/* we don't have anything valid to create paths from so let's quit here */
- if((psys->flag & PSYS_HAIR_DONE)==0 && (psys->flag & PSYS_KEYED)==0)
+ if((psys->flag & PSYS_HAIR_DONE)==0 && (psys->flag & PSYS_KEYED)==0 && (psys->pointcache->flag & PTCACHE_BAKED)==0)
return;
+ BLI_srandom(psys->seed);
+
+ keyed = psys->flag & PSYS_KEYED;
+ baked = psys->pointcache->flag & PTCACHE_BAKED;
+
if(psys->renderdata) {
steps = (int)pow(2.0, (double)psys->part->ren_step);
}
@@ -2488,7 +2492,8 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
else memset(cache[i], 0, sizeof(*cache[i])*(steps+1));
if(!edit && !psys->totchild) {
- pa_length = part->length * (1.0f - part->randlength*pa->r_ave[0]);
+ //pa_length = part->length * (1.0f - part->randlength*pa->r_ave[0]);
+ pa_length = 1.0f - part->randlength * 0.5 * (1.0f + pa->r_ave[0]);
if(vg_length)
pa_length *= psys_particle_value_from_verts(psmd->dm,part->from,pa,vg_length);
}
@@ -2499,13 +2504,19 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
ekey = edit->keys[i];
/*--get the first data points--*/
- if(psys->flag & PSYS_KEYED) {
+ if(keyed) {
kkey[0] = pa->keys;
kkey[1] = kkey[0] + 1;
birthtime = kkey[0]->time;
dietime = kkey[0][pa->totkey-1].time;
}
+ else if(baked) {
+ get_pointcache_keys_for_time(psys, -1, 0.0f, NULL, NULL);
+
+ birthtime = pa->time;
+ dietime = pa->dietime;
+ }
else {
hkey[0] = pa->hair;
hkey[1] = hkey[0] + 1;
@@ -2516,6 +2527,25 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, hairmat);
}
+ if(!edit) {
+ if(part->draw & PART_ABS_PATH_TIME) {
+ birthtime = MAX2(birthtime, part->path_start);
+ dietime = MIN2(dietime, part->path_end);
+ }
+ else {
+ float tb = birthtime;
+ birthtime = tb + part->path_start * (dietime - tb);
+ dietime = tb + part->path_end * (dietime - tb);
+ }
+
+ if(birthtime >= dietime) {
+ cache[i]->steps = -1;
+ continue;
+ }
+
+ dietime = birthtime + pa_length * (dietime - birthtime);
+ }
+
if(soft){
bp[0] = soft->bpoint + pa->bpi;
bp[1] = bp[0] + 1;
@@ -2527,13 +2557,16 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
t = birthtime + time * (dietime - birthtime);
- if(psys->flag & PSYS_KEYED) {
+ if(keyed) {
while(kkey[1]->time < t) {
kkey[1]++;
}
kkey[0] = kkey[1] - 1;
}
+ else if(baked) {
+ get_pointcache_keys_for_time(psys, i, t, keys+1, keys+2);
+ }
else {
while(hkey[1]->time < t) {
hkey[1]++;
@@ -2548,17 +2581,19 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
bp_to_particle(keys + 1, bp[0], hkey[0]);
bp_to_particle(keys + 2, bp[1], hkey[1]);
}
- else if(psys->flag & PSYS_KEYED) {
+ else if(keyed) {
memcpy(keys + 1, kkey[0], sizeof(ParticleKey));
memcpy(keys + 2, kkey[1], sizeof(ParticleKey));
}
+ else if(baked)
+ ; /* keys already set */
else {
hair_to_particle(keys + 1, hkey[0]);
hair_to_particle(keys + 2, hkey[1]);
}
- if((psys->flag & PSYS_KEYED)==0) {
+ if(!keyed && !baked) {
if(soft) {
if(hkey[0] != pa->hair)
bp_to_particle(keys, bp[0] - 1, hkey[0] - 1);
@@ -2591,18 +2626,18 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
keytime = (t - keys[1].time) / dfra;
/* convert velocity to timestep size */
- if(psys->flag & PSYS_KEYED){
+ if(keyed || baked){
VecMulf(keys[1].vel, dfra / frs_sec);
VecMulf(keys[2].vel, dfra / frs_sec);
}
/* now we should have in chronologiacl order k1<=k2<=t<=k3<=k4 with keytime between [0,1]->[k2,k3] (k1 & k4 used for cardinal & bspline interpolation)*/
- psys_interpolate_particle((psys->flag & PSYS_KEYED) ? -1 /* signal for cubic interpolation */
+ psys_interpolate_particle((keyed || baked) ? -1 /* signal for cubic interpolation */
: ((psys->part->flag & PART_HAIR_BSPLINE) ? KEY_BSPLINE : KEY_CARDINAL)
,keys, keytime, &result, 0);
/* the velocity needs to be converted back from cubic interpolation */
- if(psys->flag & PSYS_KEYED){
+ if(keyed || baked){
VecMulf(result.vel, frs_sec / dfra);
}
else if(soft==NULL) { /* softbody and keyed are allready in global space */
@@ -2717,28 +2752,6 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
}
}
-
- if(!edit && !psys->totchild) {
- /* check if path needs to be cut before actual end of data points */
- if(k){
- VECSUB(dvec,ca->co,(ca-1)->co);
- if(part->flag&PART_ABS_LENGTH)
- len=VecLength(dvec);
- else
- len=1.0f/(float)steps;
-
- k=check_path_length(k,cache[i],ca,max_length,&cur_length,len,dvec);
- }
- else{
- /* initialize length calculation */
- if(part->flag&PART_ABS_LENGTH)
- max_length= part->abslength*pa_length;
- else
- max_length= pa_length;
-
- cur_length= 0.0f;
- }
- }
}
}
@@ -2990,7 +3003,8 @@ static void default_particle_settings(ParticleSettings *part)
part->type= PART_EMITTER;
part->distr= PART_DISTR_JIT;
- part->draw_as=PART_DRAW_DOT;
+ part->draw_as = PART_DRAW_REND;
+ part->ren_as = PART_DRAW_HALO;
part->bb_uv_split=1;
part->bb_align=PART_BB_VIEW;
part->bb_split_offset=PART_BB_OFF_LINEAR;
@@ -3046,6 +3060,8 @@ static void default_particle_settings(ParticleSettings *part)
part->rough_end_shape=1.0;
part->draw_line[0]=0.5;
+ part->path_start = 0.0f;
+ part->path_end = 1.0f;
part->banking=1.0;
part->max_bank=1.0;
@@ -3282,7 +3298,7 @@ static void get_cpa_texture(DerivedMesh *dm, Material *ma, int face_index, float
if((event & mtex->pmapto) & MAP_PA_KINK)
ptex->kink= texture_value_blend(def,ptex->kink,value,var,blend,neg & MAP_PA_KINK);
if((event & mtex->pmapto) & MAP_PA_ROUGH)
- ptex->rough= texture_value_blend(def,ptex->rough,value,var,blend,neg & MAP_PA_ROUGH);
+ ptex->rough1= ptex->rough2= ptex->roughe= texture_value_blend(def,ptex->rough1,value,var,blend,neg & MAP_PA_ROUGH);
if((event & mtex->pmapto) & MAP_PA_DENS)
ptex->exist= texture_value_blend(def,ptex->exist,value,var,blend,neg & MAP_PA_DENS);
}
@@ -3291,7 +3307,11 @@ static void get_cpa_texture(DerivedMesh *dm, Material *ma, int face_index, float
if(event & MAP_PA_LENGTH) { CLAMP(ptex->length,0.0,1.0); }
if(event & MAP_PA_CLUMP) { CLAMP(ptex->clump,0.0,1.0); }
if(event & MAP_PA_KINK) { CLAMP(ptex->kink,0.0,1.0); }
- if(event & MAP_PA_ROUGH) { CLAMP(ptex->rough,0.0,1.0); }
+ if(event & MAP_PA_ROUGH) {
+ CLAMP(ptex->rough1,0.0,1.0);
+ CLAMP(ptex->rough2,0.0,1.0);
+ CLAMP(ptex->roughe,0.0,1.0);
+ }
if(event & MAP_PA_DENS) { CLAMP(ptex->exist,0.0,1.0); }
}
void psys_get_texture(Object *ob, Material *ma, ParticleSystemModifierData *psmd, ParticleSystem *psys, ParticleData *pa, ParticleTexture *ptex, int event)
@@ -3392,12 +3412,12 @@ float psys_get_size(Object *ob, Material *ma, ParticleSystemModifierData *psmd,
return size*part->size;
}
-float psys_get_child_time(ParticleSystem *psys, ChildParticle *cpa, float cfra)
+float psys_get_child_time(ParticleSystem *psys, ChildParticle *cpa, float cfra, float *birthtime, float *dietime)
{
ParticleSettings *part = psys->part;
+ float time, life;
if(part->childtype==PART_CHILD_FACES){
- float time;
int w=0;
time=0.0;
while(w<4 && cpa->pa[w]>=0){
@@ -3405,12 +3425,21 @@ float psys_get_child_time(ParticleSystem *psys, ChildParticle *cpa, float cfra)
w++;
}
- return (cfra-time)/(part->lifetime*(1.0f-part->randlife*cpa->rand[1]));
+ life = part->lifetime*(1.0f-part->randlife*cpa->rand[1]);
}
else{
ParticleData *pa = psys->particles + cpa->parent;
- return (cfra-pa->time)/pa->lifetime;
+
+ time = pa->time;
+ life = pa->lifetime;
}
+
+ if(birthtime)
+ *birthtime = time;
+ if(dietime)
+ *dietime = time+life;
+
+ return (cfra-time)/life;
}
float psys_get_child_size(ParticleSystem *psys, ChildParticle *cpa, float cfra, float *pa_time)
{
@@ -3427,7 +3456,7 @@ float psys_get_child_size(ParticleSystem *psys, ChildParticle *cpa, float cfra,
if(pa_time)
time=*pa_time;
else
- time=psys_get_child_time(psys,cpa,cfra);
+ time=psys_get_child_time(psys,cpa,cfra,NULL,NULL);
/* correction for lifetime */
calc_ipo(part->ipo, 100*time);
@@ -3449,6 +3478,64 @@ float psys_get_child_size(ParticleSystem *psys, ChildParticle *cpa, float cfra,
return size;
}
+static void get_child_modifier_parameters(ParticleSettings *part, ParticleThreadContext *ctx, ChildParticle *cpa, short cpa_from, int cpa_num, float *cpa_fuv, float *orco, ParticleTexture *ptex)
+{
+ ptex->length=part->length*(1.0f - part->randlength*cpa->rand[0]);
+ ptex->clump=1.0;
+ ptex->kink=1.0;
+ ptex->rough1= 1.0;
+ ptex->rough2= 1.0;
+ ptex->roughe= 1.0;
+ ptex->exist= 1.0;
+ ptex->effector= 1.0;
+
+ get_cpa_texture(ctx->dm,ctx->ma,cpa_num,cpa_fuv,orco,ptex,
+ MAP_PA_DENS|MAP_PA_LENGTH|MAP_PA_CLUMP|MAP_PA_KINK|MAP_PA_ROUGH);
+
+
+ if(ptex->exist < cpa->rand[1])
+ return;
+
+ if(ctx->vg_length)
+ ptex->length*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_length);
+ if(ctx->vg_clump)
+ ptex->clump*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_clump);
+ if(ctx->vg_kink)
+ ptex->kink*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_kink);
+ if(ctx->vg_rough1)
+ ptex->rough1*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_rough1);
+ if(ctx->vg_rough2)
+ ptex->rough2*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_rough2);
+ if(ctx->vg_roughe)
+ ptex->roughe*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_roughe);
+ if(ctx->vg_effector)
+ ptex->effector*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_effector);
+}
+static void do_child_modifiers(Scene *scene, Object *ob, ParticleSystem *psys, ParticleSettings *part, ParticleTexture *ptex, ParticleKey *par, float *par_rot, ChildParticle *cpa, float *orco, ParticleKey *state, float t)
+{
+ int guided = 0;
+
+ if(part->flag & PART_CHILD_EFFECT)
+ /* state is safe to cast, since only co and vel are used */
+ guided = do_guide(scene, (ParticleKey*)state, cpa->parent, t, &(psys->effectors));
+
+ if(guided==0){
+ if(part->kink)
+ do_prekink(state, par, par_rot, t, part->kink_freq * ptex->kink, part->kink_shape,
+ part->kink_amp, part->kink, part->kink_axis, ob->obmat);
+
+ do_clump(state, par, t, part->clumpfac, part->clumppow, ptex->clump);
+ }
+
+ if(part->rough1 != 0.0 && ptex->rough1 != 0.0)
+ do_rough(orco, t, ptex->rough1*part->rough1, part->rough1_size, 0.0, state);
+
+ if(part->rough2 != 0.0 && ptex->rough2 != 0.0)
+ do_rough(cpa->rand, t, ptex->rough2*part->rough2, part->rough2_size, part->rough2_thres, state);
+
+ if(part->rough_end != 0.0 && ptex->roughe != 0.0)
+ do_rough_end(cpa->rand, t, ptex->roughe*part->rough_end, part->rough_end_shape, state, par);
+}
/* get's hair (or keyed) particles state at the "path time" specified in state->time */
void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, int p, ParticleKey *state, int vel)
{
@@ -3460,17 +3547,20 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
ParticleTexture ptex;
ParticleKey *kkey[2] = {NULL, NULL};
HairKey *hkey[2] = {NULL, NULL};
- ParticleKey *par=0, keys[4];
+ ParticleKey *par=0, keys[4], tstate;
+ ParticleThreadContext ctx; /* fake thread context for child modifiers */
float t, real_t, dfra, keytime, frs_sec = scene->r.frs_sec;
float co[3], orco[3];
float hairmat[4][4];
- float pa_clump = 0.0, pa_kink = 0.0;
int totparent = 0;
int totpart = psys->totpart;
int totchild = psys->totchild;
short between = 0, edit = 0;
+ int keyed = psys->flag & PSYS_KEYED;
+ int cached = !keyed && part->type != PART_HAIR;
+
float *cpa_fuv; int cpa_num; short cpa_from;
//if(psys_in_edit_mode(scene, psys)){
@@ -3479,12 +3569,6 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
// edit=1;
//}
- /* user want's cubic interpolation but only without sb it possible */
- //if(interpolation==PART_INTER_CUBIC && baked && psys->softflag==OB_SB_ENABLE)
- // interpolation=PART_INTER_BSPLINE;
- //else if(baked==0) /* it doesn't make sense to use other types for keyed */
- // interpolation=PART_INTER_CUBIC;
-
t=state->time;
CLAMP(t, 0.0, 1.0);
@@ -3497,20 +3581,29 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
return;
}
- if(psys->flag & PSYS_KEYED) {
+ if(keyed) {
kkey[0] = pa->keys;
kkey[1] = kkey[0] + 1;
- real_t = kkey[0]->time + t * (kkey[0][pa->totkey-1].time - kkey[0]->time);
+ if(state->time < 0.0f)
+ real_t = -state->time;
+ else
+ real_t = kkey[0]->time + t * (kkey[0][pa->totkey-1].time - kkey[0]->time);
+ }
+ else if(cached) {
+ get_pointcache_keys_for_time(psys, -1, 0.0f, NULL, NULL);
}
else {
hkey[0] = pa->hair;
hkey[1] = pa->hair + 1;
- real_t = hkey[0]->time + (hkey[0][pa->totkey-1].time - hkey[0]->time) * t;
+ if(state->time < 0.0f)
+ real_t = -state->time;
+ else
+ real_t = hkey[0]->time + t * (hkey[0][pa->totkey-1].time - hkey[0]->time);
}
- if(psys->flag & PSYS_KEYED) {
+ if(keyed) {
while(kkey[1]->time < real_t) {
kkey[1]++;
}
@@ -3519,6 +3612,14 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
memcpy(keys + 1, kkey[0], sizeof(ParticleKey));
memcpy(keys + 2, kkey[1], sizeof(ParticleKey));
}
+ else if(cached) {
+ if(state->time < 0.0f) /* flag for time in frames */
+ real_t = -state->time;
+ else
+ real_t = pa->time + t * (pa->dietime - pa->time);
+
+ get_pointcache_keys_for_time(psys, p, real_t, keys+1, keys+2);
+ }
else {
while(hkey[1]->time < real_t)
hkey[1]++;
@@ -3529,63 +3630,35 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
hair_to_particle(keys + 2, hkey[1]);
}
- if((psys->flag & PSYS_KEYED)==0) {
- //if(soft){
- // if(key[0] != sbel.keys)
- // DB_copy_key(&k1,key[0]-1);
- // else
- // DB_copy_key(&k1,&k2);
- //}
- //else{
+ if(!keyed && !cached) {
if(hkey[0] != pa->hair)
hair_to_particle(keys, hkey[0] - 1);
else
hair_to_particle(keys, hkey[0]);
- //}
- //if(soft){
- // if(key[1] != sbel.keys + sbel.totkey-1)
- // DB_copy_key(&k4,key[1]+1);
- // else
- // DB_copy_key(&k4,&k3);
- //}
- //else {
if(hkey[1] != pa->hair + pa->totkey - 1)
hair_to_particle(keys + 3, hkey[1] + 1);
else
hair_to_particle(keys + 3, hkey[1]);
}
- //}
-
- //psys_get_particle_on_path(scene, bsys,p,t,bkey,ckey[0]);
-
- //if(part->rotfrom==PART_ROT_KEYS)
- // QuatInterpol(state->rot,k2.rot,k3.rot,keytime);
- //else{
- // /* TODO: different rotations */
- // float nvel[3];
- // VECCOPY(nvel,state->vel);
- // VecMulf(nvel,-1.0f);
- // vectoquat(nvel, OB_POSX, OB_POSZ, state->rot);
- //}
dfra = keys[2].time - keys[1].time;
keytime = (real_t - keys[1].time) / dfra;
/* convert velocity to timestep size */
- if(psys->flag & PSYS_KEYED){
+ if(keyed || cached){
VecMulf(keys[1].vel, dfra / frs_sec);
VecMulf(keys[2].vel, dfra / frs_sec);
QuatInterpol(state->rot,keys[1].rot,keys[2].rot,keytime);
}
- psys_interpolate_particle((psys->flag & PSYS_KEYED) ? -1 /* signal for cubic interpolation */
+ psys_interpolate_particle((keyed || cached) ? -1 /* signal for cubic interpolation */
: ((psys->part->flag & PART_HAIR_BSPLINE) ? KEY_BSPLINE : KEY_CARDINAL)
,keys, keytime, state, 1);
/* the velocity needs to be converted back from cubic interpolation */
- if(psys->flag & PSYS_KEYED){
+ if(keyed || cached){
VecMulf(state->vel, frs_sec / dfra);
}
else {
@@ -3606,8 +3679,11 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
}
else if(totchild){
//Mat4Invert(imat,ob->obmat);
-
+
cpa=psys->child+p-totpart;
+
+ if(state->time < 0.0f)
+ t = psys_get_child_time(psys, cpa, -state->time, NULL, NULL);
if(totchild && part->from!=PART_FROM_PARTICLE && part->childtype==PART_CHILD_FACES){
totparent=(int)(totchild*part->parents*0.3);
@@ -3624,7 +3700,7 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
/* get parent states */
while(w<4 && cpa->pa[w]>=0){
- keys[w].time = t;
+ keys[w].time = state->time;
psys_get_particle_on_path(scene, ob, psys, cpa->pa[w], keys+w, 1);
w++;
}
@@ -3650,7 +3726,7 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
else{
/* get the parent state */
- keys->time = t;
+ keys->time = state->time;
psys_get_particle_on_path(scene, ob, psys, cpa->parent, keys,1);
/* get the original coordinates (orco) for texture usage */
@@ -3672,15 +3748,11 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
#endif // XXX old animation system
/* get different child parameters from textures & vgroups */
- ptex.clump=1.0;
- ptex.kink=1.0;
-
- get_cpa_texture(psmd->dm,ma,cpa_num,cpa_fuv,orco,&ptex,MAP_PA_CLUMP|MAP_PA_KINK);
-
- pa_clump=ptex.clump;
- pa_kink=ptex.kink;
-
- /* TODO: vertex groups */
+ memset(&ctx, 0, sizeof(ParticleThreadContext));
+ ctx.dm = psmd->dm;
+ ctx.ma = ma;
+ /* TODO: assign vertex groups */
+ get_child_modifier_parameters(part, &ctx, cpa, cpa_from, cpa_num, cpa_fuv, orco, &ptex);
if(between){
int w=0;
@@ -3708,46 +3780,33 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
}
par = keys;
- //if(totparent){
- // if(p-totpart>=totparent){
- // key.time=t;
- // psys_get_particle_on_path(ob,psys,totpart+cpa->parent,&key,1);
- // bti->convert_dynamic_key(bsys,&key,par,cpar);
- // }
- // else
- // par=0;
- //}
- //else
- // DB_get_key_on_path(bsys,cpa->parent,t,par,cpar);
-
- /* apply different deformations to the child path */
- if(part->kink)
- do_prekink(state, par, par->rot, t, part->kink_freq * pa_kink, part->kink_shape,
- part->kink_amp, part->kink, part->kink_axis, ob->obmat);
-
- do_clump(state, par, t, part->clumpfac, part->clumppow, 1.0f);
-
- if(part->rough1 != 0.0)
- do_rough(orco, t, part->rough1, part->rough1_size, 0.0, state);
- if(part->rough2 != 0.0)
- do_rough(cpa->rand, t, part->rough2, part->rough2_size, part->rough2_thres, state);
+ if(vel)
+ copy_particle_key(&tstate, state, 1);
- if(part->rough_end != 0.0)
- do_rough_end(cpa->rand, t, part->rough_end, part->rough_end_shape, state, par);
+ /* apply different deformations to the child path */
+ do_child_modifiers(scene, ob, psys, part, &ptex, par, par->rot, cpa, orco, state, t);
+
+ /* try to estimate correct velocity */
+ if(vel){
+ ParticleKey tstate;
+ float length = VecLength(state->vel);
+
+ if(t>=0.001f){
+ tstate.time=t-0.001f;
+ psys_get_particle_on_path(scene,ob,psys,p,&tstate,0);
+ VECSUB(state->vel,state->co,tstate.co);
+ Normalize(state->vel);
+ }
+ else{
+ tstate.time=t+0.001f;
+ psys_get_particle_on_path(scene, ob,psys,p,&tstate,0);
+ VECSUB(state->vel,tstate.co,state->co);
+ Normalize(state->vel);
+ }
- //if(vel){
- // if(t>=0.001f){
- // tstate.time=t-0.001f;
- // psys_get_particle_on_path(scene,ob,psys,p,&tstate,0);
- // VECSUB(state->vel,state->co,tstate.co);
- // }
- // else{
- // tstate.time=t+0.001f;
- // psys_get_particle_on_path(scene, ob,psys,p,&tstate,0);
- // VECSUB(state->vel,tstate.co,state->co);
- // }
- //}
+ VecMulf(state->vel, length);
+ }
}
}
/* gets particle's state at a time, returns 1 if particle exists and can be seen and 0 if not */
@@ -3774,7 +3833,7 @@ int psys_get_particle_state(struct Scene *scene, Object *ob, ParticleSystem *psy
pa=psys->particles+p;
if(between){
- state->time = psys_get_child_time(psys,&psys->child[p-totpart],cfra);
+ state->time = psys_get_child_time(psys,&psys->child[p-totpart],cfra,NULL,NULL);
if(always==0)
if((state->time<0.0 && (part->flag & PART_UNBORN)==0)
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 591b6ca9be5..07e0e82a86d 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -2205,8 +2205,10 @@ void psys_get_pointcache_start_end(Scene *scene, ParticleSystem *psys, int *sfra
*sfra = MAX2(1, (int)part->sta);
*efra = MIN2((int)(part->end + part->lifetime + 1.0), scene->r.efra);
}
-static void particle_write_state(int index, ParticleSystem *psys, float *data)
+static void particle_write_state(int index, void *psys_ptr, float *data)
{
+ ParticleSystem *psys= psys_ptr;
+
memcpy(data, (float *)(&(psys->particles+index)->state), sizeof(ParticleKey));
}
static void particle_read_state(int index, void *psys_ptr, float *data)
@@ -2225,7 +2227,7 @@ static void particle_cache_interpolate(int index, void *psys_ptr, float frs_sec,
ParticleSystem *psys= psys_ptr;
ParticleData *pa = psys->particles + index;
ParticleKey keys[4];
- float dfra, cfra1f = (float)cfra1, cfra2f(float);
+ float dfra;
cfra = MIN2(cfra, pa->dietime);
cfra1 = MIN2(cfra1, pa->dietime);
@@ -4254,7 +4256,7 @@ static void psys_update_path_cache(Scene *scene, Object *ob, ParticleSystemModif
}
}
- if((part->type==PART_HAIR || psys->flag&PSYS_KEYED) && ( psys_in_edit_mode(scene, psys) || (part->type==PART_HAIR
+ if((part->type==PART_HAIR || psys->flag&PSYS_KEYED || psys->pointcache->flag & PTCACHE_BAKED) && ( psys_in_edit_mode(scene, psys) || (part->type==PART_HAIR
|| (part->ren_as == PART_DRAW_PATH && (part->draw_as == PART_DRAW_REND || psys->renderdata))))){
psys_cache_paths(scene, ob, psys, cfra, 0);
@@ -4371,8 +4373,10 @@ static void cached_step(Scene *scene, Object *ob, ParticleSystemModifierData *ps
dietime = birthtime + (1 + pa->loop) * (pa->dietime - pa->time);
/* update alive status and push events */
- if(pa->time > cfra)
+ if(pa->time > cfra) {
pa->alive = PARS_UNBORN;
+ reset_particle(scene, pa, psys, psmd, ob, 0.0f, cfra, NULL, NULL, NULL);
+ }
else if(dietime <= cfra){
if(dietime > psys->cfra){
state.time = dietime;
@@ -4406,6 +4410,8 @@ static void cached_step(Scene *scene, Object *ob, ParticleSystemModifierData *ps
distribute_particles(scene, ob, psys, PART_FROM_CHILD);
}
+ psys_update_path_cache(scene, ob,psmd,psys,cfra);
+
if(vg_size)
MEM_freeN(vg_size);
}
@@ -4433,10 +4439,17 @@ void psys_changed_type(ParticleSystem *psys)
if(ELEM3(part->draw_as, PART_DRAW_NOT, PART_DRAW_REND, PART_DRAW_PATH)==0)
part->draw_as = PART_DRAW_REND;
+
+ CLAMP(part->path_start, 0.0f, 100.0f);
+ CLAMP(part->path_end, 0.0f, 100.0f);
}
- else
+ else {
free_hair(psys, 1);
+ CLAMP(part->path_start, part->sta, part->end + part->lifetime);
+ CLAMP(part->path_end, part->sta, part->end + part->lifetime);
+ }
+
psys->softflag= 0;
psys_reset(psys, PSYS_RESET_ALL);
@@ -4629,9 +4642,8 @@ static void system_step(Scene *scene, Object *ob, ParticleSystem *psys, Particle
totpart = psys->part->totpart;
totchild = get_psys_tot_child(scene, psys);
- if(oldtotpart != totpart || (psys->part->childtype && oldtotchild != totchild)) {
+ if(oldtotpart != totpart || oldtotchild != totchild) {
only_children_changed = (oldtotpart == totpart);
- realloc_particles(ob, psys, totpart);
alloc = 1;
distr= 1;
init= 1;
@@ -4647,11 +4659,12 @@ static void system_step(Scene *scene, Object *ob, ParticleSystem *psys, Particle
if(alloc) {
realloc_particles(ob, psys, totpart);
- if(usecache)
+ if(usecache && !only_children_changed)
BKE_ptcache_id_clear(&pid, PTCACHE_CLEAR_ALL, 0);
}
- distribute_particles(scene, ob, psys, part->from);
+ if(!only_children_changed)
+ distribute_particles(scene, ob, psys, part->from);
if((psys->part->type == PART_HAIR) && !(psys->flag & PSYS_HAIR_DONE))
/* don't generate children while growing hair - waste of time */
@@ -4660,7 +4673,7 @@ static void system_step(Scene *scene, Object *ob, ParticleSystem *psys, Particle
distribute_particles(scene, ob, psys, PART_FROM_CHILD);
}
- if(only_children_changed==0) {
+ if(!only_children_changed) {
free_keyed_keys(psys);
initialize_all_particles(ob, psys, psmd);
@@ -4680,19 +4693,10 @@ static void system_step(Scene *scene, Object *ob, ParticleSystem *psys, Particle
int result = get_particles_from_cache(scene, ob, psys, (float)framenr, &old_framenr);
if(result == PTCACHE_READ_EXACT || result == PTCACHE_READ_INTERPOLATED) {
- //if(part->phystype==PART_PHYS_KEYED && psys->flag&PSYS_FIRST_KEYED) {
- // psys_count_keyed_targets(ob,psys);
- // set_keyed_keys(scene, ob, psys);
- //}
-
cached_step(scene, ob, psmd, psys, cfra);
psys->cfra=cfra;
psys->recalc = 0;
- //if(part->phystype==PART_PHYS_KEYED && psys->flag&PSYS_FIRST_KEYED) {
- // psys_update_path_cache(scene, ob, psmd, psys, framenr);
- //}
-
cache->simframe= framenr;
cache->flag |= PTCACHE_SIMULATION_VALID;
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index 64473d07151..2fe46be7a89 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -643,8 +643,8 @@ int BKE_ptcache_write_cache(PTCacheWriter *writer)
return 0;
for(i=0; i<writer->totelem; i++) {
- writer->set_elem(i, writer->calldata, &temp);
- BKE_ptcache_file_write_floats(pf, &temp, incr);
+ writer->set_elem(i, writer->calldata, temp);
+ BKE_ptcache_file_write_floats(pf, temp, incr);
}
}
}
@@ -677,8 +677,8 @@ int BKE_ptcache_write_cache(PTCacheWriter *writer)
pmdata = pm->data;
for(i=0; i<writer->totelem; i++, pmdata+=incr) {
- writer->set_elem(i, writer->calldata, &temp);
- memcpy(pmdata, &temp, elemsize);
+ writer->set_elem(i, writer->calldata, temp);
+ memcpy(pmdata, temp, elemsize);
}
pm->frame = writer->cfra;
@@ -689,8 +689,8 @@ int BKE_ptcache_write_cache(PTCacheWriter *writer)
pmdata = pm->data;
for(i=0; i<writer->totelem; i++, pmdata+=incr) {
- writer->set_elem(i, writer->calldata, &temp);
- memcpy(pmdata, &temp, elemsize);
+ writer->set_elem(i, writer->calldata, temp);
+ memcpy(pmdata, temp, elemsize);
}
pm->frame = writer->cfra;
@@ -1154,6 +1154,7 @@ void BKE_ptcache_quick_cache_all(Scene *scene)
baker.progressbar=NULL;
baker.progresscontext=NULL;
baker.render=0;
+ baker.anim_init = 0;
baker.scene=scene;
if(count_quick_cache(scene, &baker.quick_step))
@@ -1171,7 +1172,7 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
float frameleno = scene->r.framelen;
int cfrao = CFRA;
int startframe = MAXFRAME;
- int endframe = CFRA;
+ int endframe = baker->anim_init ? scene->r.sfra : CFRA;
int bake = baker->bake;
int render = baker->render;
int step = baker->quick_step;
@@ -1209,8 +1210,13 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
for(pid=pidlist.first; pid; pid=pid->next) {
cache = pid->cache;
if((cache->flag & PTCACHE_BAKED)==0) {
- if(pid->type==PTCACHE_TYPE_PARTICLES)
+ if(pid->type==PTCACHE_TYPE_PARTICLES) {
+ /* skip hair particles */
+ if(((ParticleSystem*)pid->data)->part->type == PART_HAIR)
+ continue;
+
psys_get_pointcache_start_end(scene, pid->data, &cache->startframe, &cache->endframe);
+ }
if((cache->flag & PTCACHE_REDO_NEEDED || (cache->flag & PTCACHE_SIMULATION_VALID)==0)
&& ((cache->flag & PTCACHE_QUICK_CACHE)==0 || render || bake))
@@ -1265,6 +1271,10 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
BKE_ptcache_ids_from_object(&pidlist, base->object);
for(pid=pidlist.first; pid; pid=pid->next) {
+ /* skip hair particles */
+ if(pid->type==PTCACHE_TYPE_PARTICLES && ((ParticleSystem*)pid->data)->part->type == PART_HAIR)
+ continue;
+
cache = pid->cache;
if(step > 1)
@@ -1282,7 +1292,9 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
scene->r.framelen = frameleno;
CFRA = cfrao;
- scene_update_for_newframe(scene, scene->lay);
+
+ if(bake) /* already on cfra unless baking */
+ scene_update_for_newframe(scene, scene->lay);
/* TODO: call redraw all windows somehow */
}
diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c
index 7fc262b4796..c8d95929027 100644
--- a/source/blender/blenkernel/intern/sequence.c
+++ b/source/blender/blenkernel/intern/sequence.c
@@ -184,11 +184,11 @@ void seq_free_sequence(Editing *ed, Sequence *seq)
if(seq->anim) IMB_free_anim(seq->anim);
//XXX if(seq->hdaudio) sound_close_hdaudio(seq->hdaudio);
- /* XXX if (seq->type & SEQ_EFFECT) {
+ if (seq->type & SEQ_EFFECT) {
struct SeqEffectHandle sh = get_sequence_effect(seq);
sh.free(seq);
- }*/
+ }
if (ed->act_seq==seq)
ed->act_seq= NULL;
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 15969fc9ab9..6e95fe7ebc7 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -60,6 +60,7 @@
#include "BLI_edgehash.h"
#include "BIF_gl.h"
+#include "BIF_glutil.h"
#include "GPU_draw.h"
#include "GPU_extensions.h"
diff --git a/source/blender/blenlib/BLI_graph.h b/source/blender/blenlib/BLI_graph.h
index f4fccfcbb2c..1dd439468f7 100644
--- a/source/blender/blenlib/BLI_graph.h
+++ b/source/blender/blenlib/BLI_graph.h
@@ -88,6 +88,7 @@ typedef struct BArcIterator {
StoppedFct stopped;
float *p, *no;
+ float size;
int length;
int index;
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c
index 3204d5f74e1..7af383e2356 100644
--- a/source/blender/blenlib/intern/storage.c
+++ b/source/blender/blenlib/intern/storage.c
@@ -218,7 +218,7 @@ void BLI_builddir(char *dirname, char *relname)
{
struct dirent *fname;
struct dirlink *dlink;
- int rellen, newnum = 0, ignore;
+ int rellen, newnum = 0;
char buf[256];
DIR *dir;
diff --git a/source/blender/blenlib/intern/util.c b/source/blender/blenlib/intern/util.c
index b9d4daaf5b2..838648ebfd7 100644
--- a/source/blender/blenlib/intern/util.c
+++ b/source/blender/blenlib/intern/util.c
@@ -738,9 +738,9 @@ void BLI_splitdirstring(char *di, char *fi)
void BLI_getlastdir(const char* dir, char *last, int maxlen)
{
- char *s = dir;
- char *lslash = NULL;
- char *prevslash = NULL;
+ const char *s = dir;
+ const char *lslash = NULL;
+ const char *prevslash = NULL;
while (*s) {
if ((*s == '\\') || (*s == '/')) {
prevslash = lslash;
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 956c8e0042e..c475ed5a949 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -4551,13 +4551,10 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene)
SpaceFile *sfile= (SpaceFile *)sl;
sfile->files= NULL;
+ sfile->folders_prev= NULL;
+ sfile->folders_next= NULL;
sfile->params= NULL;
sfile->op= NULL;
- /* XXX needs checking - best solve in filesel itself
- if(sfile->libfiledata)
- BLO_blendhandle_close(sfile->libfiledata);
- sfile->libfiledata= 0;
- */
}
else if(sl->spacetype==SPACE_IMASEL) {
SpaceImaSel *simasel= (SpaceImaSel *)sl;
@@ -9096,14 +9093,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
//do_versions_ipos_to_animato(main);
/* toolsettings */
- for(scene= main->scene.first; scene; scene= scene->id.next) {
+ for(scene= main->scene.first; scene; scene= scene->id.next)
scene->r.audio = scene->audio;
-
- if(!scene->toolsettings->uv_selectmode) {
- scene->toolsettings->uv_selectmode= UV_SELECT_VERTEX;
- scene->toolsettings->vgroup_weight= 1.0f;
- }
- }
/* shader, composit and texture node trees have id.name empty, put something in
* to have them show in RNA viewer and accessible otherwise.
@@ -9143,6 +9134,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
part->draw_as = PART_DRAW_REND;
}
}
+ part->path_end = 1.0f;
}
/* set old pointcaches to have disk cache flag */
for(ob = main->object.first; ob; ob= ob->id.next) {
@@ -9172,7 +9164,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
void *olddata = ob->data;
ob->data = me;
- if(me && me->mr) {
+ if(me && me->id.lib==NULL && me->mr) { /* XXX - library meshes crash on loading most yoFrankie levels, the multires pointer gets invalid - Campbell */
MultiresLevel *lvl;
ModifierData *md;
MultiresModifierData *mmd;
@@ -9238,7 +9230,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
for(sce = main->scene.first; sce; sce = sce->id.next) {
ts= sce->toolsettings;
- if(ts->normalsize == 0.0) {
+ if(ts->normalsize == 0.0 || !ts->uv_selectmode || ts->vgroup_weight == 0.0) {
ts->normalsize= 0.1f;
ts->selectmode= SCE_SELECT_VERTEX;
@@ -9249,6 +9241,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
ts->autokey_mode= U.autokey_mode;
if (ts->autokey_mode == 0)
ts->autokey_mode= 2; /* 'add/replace' but not on */
+ ts->uv_selectmode= UV_SELECT_VERTEX;
+ ts->vgroup_weight= 1.0f;
}
}
}
diff --git a/source/blender/editors/armature/BIF_retarget.h b/source/blender/editors/armature/BIF_retarget.h
index c39f410424a..d950f073cf0 100644
--- a/source/blender/editors/armature/BIF_retarget.h
+++ b/source/blender/editors/armature/BIF_retarget.h
@@ -152,7 +152,7 @@ typedef struct RigControl {
} RigControl;
void BIF_retargetArc(struct bContext *C, ReebArc *earc, RigGraph *template_rigg);
-RigGraph *RIG_graphFromArmature(struct bContext *C, struct Object *ob, struct bArmature *arm);
+RigGraph *RIG_graphFromArmature(const struct bContext *C, struct Object *ob, struct bArmature *arm);
int RIG_nbJoints(RigGraph *rg);
char *RIG_nameBone(RigGraph *rg, int arc_index, int bone_index);
void RIG_freeRigGraph(BGraph *rg);
diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h
index 646c75f50bf..d5ad63ca21b 100644
--- a/source/blender/editors/armature/armature_intern.h
+++ b/source/blender/editors/armature/armature_intern.h
@@ -42,7 +42,7 @@ void ARMATURE_OT_subdivide_multi(struct wmOperatorType *ot);
void ARMATURE_OT_parent_set(struct wmOperatorType *ot);
void ARMATURE_OT_parent_clear(struct wmOperatorType *ot);
void ARMATURE_OT_select_all_toggle(struct wmOperatorType *ot);
-void ARMATURE_OT_select_invert(struct wmOperatorType *ot);
+void ARMATURE_OT_select_inverse(struct wmOperatorType *ot);
void ARMATURE_OT_select_hierarchy(struct wmOperatorType *ot);
void ARMATURE_OT_select_linked(struct wmOperatorType *ot);
void ARMATURE_OT_delete(struct wmOperatorType *ot);
@@ -56,10 +56,11 @@ void POSE_OT_rot_clear(struct wmOperatorType *ot);
void POSE_OT_loc_clear(struct wmOperatorType *ot);
void POSE_OT_scale_clear(struct wmOperatorType *ot);
void POSE_OT_select_all_toggle(struct wmOperatorType *ot);
-void POSE_OT_select_invert(struct wmOperatorType *ot);
+void POSE_OT_select_inverse(struct wmOperatorType *ot);
void POSE_OT_select_parent(struct wmOperatorType *ot);
void POSE_OT_select_hierarchy(struct wmOperatorType *ot);
void POSE_OT_select_linked(struct wmOperatorType *ot);
+void POSE_OT_select_constraint_target(struct wmOperatorType *ot);
void SKETCH_OT_gesture(struct wmOperatorType *ot);
void SKETCH_OT_delete(struct wmOperatorType *ot);
diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c
index 5c31883834c..df32f452a38 100644
--- a/source/blender/editors/armature/armature_ops.c
+++ b/source/blender/editors/armature/armature_ops.c
@@ -121,7 +121,7 @@ void ED_operatortypes_armature(void)
WM_operatortype_append(ARMATURE_OT_parent_clear);
WM_operatortype_append(ARMATURE_OT_select_all_toggle);
- WM_operatortype_append(ARMATURE_OT_select_invert);
+ WM_operatortype_append(ARMATURE_OT_select_inverse);
WM_operatortype_append(ARMATURE_OT_select_hierarchy);
WM_operatortype_append(ARMATURE_OT_select_linked);
@@ -148,11 +148,12 @@ void ED_operatortypes_armature(void)
WM_operatortype_append(POSE_OT_scale_clear);
WM_operatortype_append(POSE_OT_select_all_toggle);
- WM_operatortype_append(POSE_OT_select_invert);
+ WM_operatortype_append(POSE_OT_select_inverse);
WM_operatortype_append(POSE_OT_select_parent);
WM_operatortype_append(POSE_OT_select_hierarchy);
WM_operatortype_append(POSE_OT_select_linked);
+ WM_operatortype_append(POSE_OT_select_constraint_target);
/* POSELIB */
WM_operatortype_append(POSELIB_OT_browse_interactive);
@@ -188,20 +189,18 @@ void ED_keymap_armature(wmWindowManager *wm)
WM_keymap_add_item(keymap, "ARMATURE_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "ARMATURE_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "ARMATURE_OT_test", TKEY, KM_PRESS, 0, 0); // XXX temp test for context iterators... to be removed
kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0);
RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT);
- RNA_boolean_set(kmi->ptr, "extend", 0);
kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0);
RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT);
RNA_boolean_set(kmi->ptr, "extend", 1);
kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, 0, 0);
RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD);
- RNA_boolean_set(kmi->ptr, "extend", 0);
kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0);
RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD);
RNA_boolean_set(kmi->ptr, "extend", 1);
@@ -234,20 +233,18 @@ void ED_keymap_armature(wmWindowManager *wm)
WM_keymap_add_item(keymap, "POSE_OT_scale_clear", SKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "POSE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "POSE_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "POSE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "POSE_OT_select_parent", PKEY, KM_PRESS, KM_SHIFT, 0);
kmi= WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0);
RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT);
- RNA_boolean_set(kmi->ptr, "extend", 0);
kmi= WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0);
RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT);
RNA_boolean_set(kmi->ptr, "extend", 1);
kmi= WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, 0, 0);
RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD);
- RNA_boolean_set(kmi->ptr, "extend", 0);
kmi= WM_keymap_add_item(keymap, "POSE_OT_select_hierarchy", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0);
RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_CHILD);
RNA_boolean_set(kmi->ptr, "extend", 1);
diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c
index 7155bdd6850..4312838cba5 100644
--- a/source/blender/editors/armature/editarmature.c
+++ b/source/blender/editors/armature/editarmature.c
@@ -72,7 +72,6 @@
#include "PIL_time.h"
#include "BIF_gl.h"
-#include "BIF_transform.h"
#include "BIF_generate.h"
#include "RNA_access.h"
@@ -85,6 +84,7 @@
#include "ED_mesh.h"
#include "ED_object.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_util.h"
#include "ED_view3d.h"
@@ -110,7 +110,7 @@ static void adduplicate() {}
/* **************** tools on Editmode Armature **************** */
/* Sync selection to parent for connected children */
-static void armature_sync_selection(ListBase *edbo)
+void ED_armature_sync_selection(ListBase *edbo)
{
EditBone *ebo;
@@ -1435,7 +1435,7 @@ static int armature_select_linked_invoke(bContext *C, wmOperator *op, wmEvent *e
}
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
/* BIF_undo_push("Select connected"); */
@@ -1668,7 +1668,7 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *op)
}
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
WM_event_add_notifier(C, NC_OBJECT, obedit);
@@ -1742,7 +1742,7 @@ void deselectall_armature(Object *obedit, int toggle, int doundo)
}
}
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
if (doundo) {
if (sel==1) BIF_undo_push("Select All");
else BIF_undo_push("Deselect All");
@@ -1814,7 +1814,7 @@ void mouse_armature(bContext *C, short mval[2], int extend)
nearBone->flag |= selmask;
}
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
if(nearBone) {
/* then now check for active status */
@@ -2246,7 +2246,7 @@ static int armature_click_extrude_exec(bContext *C, wmOperator *op)
}
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, obedit);
@@ -2508,7 +2508,7 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *op)
if (CTX_DATA_COUNT(C, selected_bones) == 0)
return OPERATOR_CANCELLED;
- armature_sync_selection(arm->edbo); // XXX why is this needed?
+ ED_armature_sync_selection(arm->edbo); // XXX why is this needed?
preEditBoneDuplicate(arm->edbo);
@@ -3058,7 +3058,7 @@ void merge_armature(Scene *scene)
}
/* undo + updates */
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
BIF_undo_push("Merge Bones");
}
@@ -3080,7 +3080,7 @@ void hide_selected_armature_bones(Scene *scene)
}
}
}
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
BIF_undo_push("Hide Bones");
}
@@ -3100,7 +3100,7 @@ void hide_unselected_armature_bones(Scene *scene)
}
}
}
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
BIF_undo_push("Hide Unselected Bones");
}
@@ -3118,7 +3118,7 @@ void show_all_armature_bones(Scene *scene)
}
}
}
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
BIF_undo_push("Reveal Bones");
}
@@ -3251,7 +3251,7 @@ static int armature_extrude_exec(bContext *C, wmOperator *op)
if (totbone==0) return OPERATOR_CANCELLED;
/* Transform the endpoints */
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
return OPERATOR_FINISHED;
}
@@ -3812,7 +3812,7 @@ static int armature_parent_clear_exec(bContext *C, wmOperator *op)
}
CTX_DATA_END;
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
/* note, notifier might evolve */
WM_event_add_notifier(C, NC_OBJECT, ob);
@@ -3839,7 +3839,7 @@ void ARMATURE_OT_parent_clear(wmOperatorType *ot)
/* **************** Selections ******************/
-static int armature_select_invert_exec(bContext *C, wmOperator *op)
+static int armature_select_inverse_exec(bContext *C, wmOperator *op)
{
/* Set the flags */
CTX_DATA_BEGIN(C, EditBone *, ebone, visible_bones) {
@@ -3854,15 +3854,15 @@ static int armature_select_invert_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void ARMATURE_OT_select_invert(wmOperatorType *ot)
+void ARMATURE_OT_select_inverse(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Invert Selection";
- ot->idname= "ARMATURE_OT_select_invert";
+ ot->name= "Select Inverse";
+ ot->idname= "ARMATURE_OT_select_inverse";
/* api callbacks */
- ot->exec= armature_select_invert_exec;
+ ot->exec= armature_select_inverse_exec;
ot->poll= ED_operator_editarmature;
/* flags */
@@ -3963,7 +3963,7 @@ static int armature_select_hierarchy_exec(bContext *C, wmOperator *op)
}
}
- armature_sync_selection(arm->edbo);
+ ED_armature_sync_selection(arm->edbo);
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, ob);
@@ -4823,7 +4823,7 @@ void POSE_OT_rot_clear(wmOperatorType *ot)
/* ***************** selections ********************** */
-static int pose_select_invert_exec(bContext *C, wmOperator *op)
+static int pose_select_inverse_exec(bContext *C, wmOperator *op)
{
/* Set the flags */
@@ -4838,15 +4838,15 @@ static int pose_select_invert_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void POSE_OT_select_invert(wmOperatorType *ot)
+void POSE_OT_select_inverse(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Invert Selection";
- ot->idname= "POSE_OT_select_invert";
+ ot->name= "Select Inverse";
+ ot->idname= "POSE_OT_select_inverse";
/* api callbacks */
- ot->exec= pose_select_invert_exec;
+ ot->exec= pose_select_inverse_exec;
ot->poll= ED_operator_posemode;
/* flags */
diff --git a/source/blender/editors/armature/editarmature_generate.c b/source/blender/editors/armature/editarmature_generate.c
index 6d271375c64..6c0eab16af0 100644
--- a/source/blender/editors/armature/editarmature_generate.c
+++ b/source/blender/editors/armature/editarmature_generate.c
@@ -285,6 +285,8 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *
EditBone *lastBone = NULL;
EditBone *child = NULL;
EditBone *parent = NULL;
+ float *normal = NULL;
+ float size_buffer = 1.2;
int bone_start = 0;
int end = iter->length;
int index;
@@ -294,6 +296,13 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *
parent = addEditBone(arm, "Bone");
VECCOPY(parent->head, iter->p);
+ if (iter->size > 0)
+ {
+ parent->rad_head = iter->size * size_buffer;
+ }
+
+ normal = iter->no;
+
index = next_subdividion(toolsettings, iter, bone_start, end, parent->head, parent->tail);
while (index != -1)
{
@@ -304,21 +313,33 @@ EditBone * subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *
child->parent = parent;
child->flag |= BONE_CONNECTED;
+ if (iter->size > 0)
+ {
+ child->rad_head = iter->size * size_buffer;
+ parent->rad_tail = iter->size * size_buffer;
+ }
+
/* going to next bone, fix parent */
Mat4MulVecfl(invmat, parent->tail);
Mat4MulVecfl(invmat, parent->head);
- setBoneRollFromNormal(parent, iter->no, invmat, tmat);
+ setBoneRollFromNormal(parent, normal, invmat, tmat);
parent = child; // new child is next parent
bone_start = index; // start next bone from current index
+ normal = iter->no; /* use normal at head, not tail */
+
index = next_subdividion(toolsettings, iter, bone_start, end, parent->head, parent->tail);
}
iter->tail(iter);
VECCOPY(parent->tail, iter->p);
-
+ if (iter->size > 0)
+ {
+ parent->rad_tail = iter->size * size_buffer;
+ }
+
/* fix last bone */
Mat4MulVecfl(invmat, parent->tail);
Mat4MulVecfl(invmat, parent->head);
diff --git a/source/blender/editors/armature/editarmature_retarget.c b/source/blender/editors/armature/editarmature_retarget.c
index 68e8b45e7d2..6f5692dbf4c 100644
--- a/source/blender/editors/armature/editarmature_retarget.c
+++ b/source/blender/editors/armature/editarmature_retarget.c
@@ -1538,7 +1538,7 @@ void RIG_printGraph(RigGraph *rg)
/*******************************************************************************************************/
-RigGraph *RIG_graphFromArmature(bContext *C, Object *ob, bArmature *arm)
+RigGraph *RIG_graphFromArmature(const bContext *C, Object *ob, bArmature *arm)
{
Object *obedit = CTX_data_edit_object(C);
Scene *scene = CTX_data_scene(C);
diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c
index fb030b91ce1..33351c99828 100644
--- a/source/blender/editors/armature/editarmature_sketch.c
+++ b/source/blender/editors/armature/editarmature_sketch.c
@@ -65,7 +65,7 @@
#include "BIF_generate.h"
//#include "BIF_interface.h"
-#include "BIF_transform.h"
+#include "ED_transform.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -90,6 +90,7 @@ typedef struct SK_Point
{
float p[3];
float no[3];
+ float size;
SK_PType type;
SK_PMode mode;
} SK_Point;
@@ -136,6 +137,7 @@ typedef struct SK_Intersection
typedef struct SK_Sketch
{
ListBase strokes;
+ ListBase depth_peels;
SK_Stroke *active_stroke;
SK_Stroke *gesture;
SK_Point next_point;
@@ -150,9 +152,10 @@ typedef struct SK_StrokeIterator {
NextNFct nextN;
PreviousFct previous;
StoppedFct stopped;
-
+
float *p, *no;
-
+ float size;
+
int length;
int index;
/*********************************/
@@ -239,7 +242,7 @@ int TEMPLATES_CURRENT = 0;
GHash *TEMPLATES_HASH = NULL;
RigGraph *TEMPLATE_RIGG = NULL;
-void BIF_makeListTemplates(bContext *C)
+void BIF_makeListTemplates(const bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
Scene *scene = CTX_data_scene(C);
@@ -251,19 +254,19 @@ void BIF_makeListTemplates(bContext *C)
{
BLI_ghash_free(TEMPLATES_HASH, NULL, NULL);
}
-
+
TEMPLATES_HASH = BLI_ghash_new(BLI_ghashutil_inthash, BLI_ghashutil_intcmp);
TEMPLATES_CURRENT = 0;
for ( base = FIRSTBASE; base; base = base->next )
{
Object *ob = base->object;
-
+
if (ob != obedit && ob->type == OB_ARMATURE)
{
index++;
BLI_ghash_insert(TEMPLATES_HASH, SET_INT_IN_POINTER(index), ob);
-
+
if (ob == ts->skgen_template)
{
TEMPLATES_CURRENT = index;
@@ -272,39 +275,39 @@ void BIF_makeListTemplates(bContext *C)
}
}
-char *BIF_listTemplates(bContext *C)
+char *BIF_listTemplates(const bContext *C)
{
GHashIterator ghi;
char menu_header[] = "Template%t|None%x0|";
char *p;
-
+
if (TEMPLATES_MENU != NULL)
{
MEM_freeN(TEMPLATES_MENU);
}
-
+
TEMPLATES_MENU = MEM_callocN(sizeof(char) * (BLI_ghash_size(TEMPLATES_HASH) * 32 + 30), "skeleton template menu");
-
+
p = TEMPLATES_MENU;
-
+
p += sprintf(TEMPLATES_MENU, "%s", menu_header);
-
+
BLI_ghashIterator_init(&ghi, TEMPLATES_HASH);
-
+
while (!BLI_ghashIterator_isDone(&ghi))
{
Object *ob = BLI_ghashIterator_getValue(&ghi);
int key = GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&ghi));
-
+
p += sprintf(p, "|%s%%x%i", ob->id.name+2, key);
-
+
BLI_ghashIterator_step(&ghi);
}
-
+
return TEMPLATES_MENU;
}
-int BIF_currentTemplate(bContext *C)
+int BIF_currentTemplate(const bContext *C)
{
ToolSettings *ts = CTX_data_tool_settings(C);
@@ -312,33 +315,33 @@ int BIF_currentTemplate(bContext *C)
{
GHashIterator ghi;
BLI_ghashIterator_init(&ghi, TEMPLATES_HASH);
-
+
while (!BLI_ghashIterator_isDone(&ghi))
{
Object *ob = BLI_ghashIterator_getValue(&ghi);
int key = GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&ghi));
-
+
if (ob == ts->skgen_template)
{
TEMPLATES_CURRENT = key;
break;
}
-
+
BLI_ghashIterator_step(&ghi);
}
}
-
+
return TEMPLATES_CURRENT;
}
-RigGraph* sk_makeTemplateGraph(bContext *C, Object *ob)
+RigGraph* sk_makeTemplateGraph(const bContext *C, Object *ob)
{
Object *obedit = CTX_data_edit_object(C);
if (ob == obedit)
{
return NULL;
}
-
+
if (ob != NULL)
{
if (TEMPLATE_RIGG && TEMPLATE_RIGG->ob != ob)
@@ -346,36 +349,36 @@ RigGraph* sk_makeTemplateGraph(bContext *C, Object *ob)
RIG_freeRigGraph((BGraph*)TEMPLATE_RIGG);
TEMPLATE_RIGG = NULL;
}
-
+
if (TEMPLATE_RIGG == NULL)
{
bArmature *arm;
arm = ob->data;
-
+
TEMPLATE_RIGG = RIG_graphFromArmature(C, ob, arm);
}
}
-
+
return TEMPLATE_RIGG;
}
-int BIF_nbJointsTemplate(bContext *C)
+int BIF_nbJointsTemplate(const bContext *C)
{
ToolSettings *ts = CTX_data_tool_settings(C);
RigGraph *rg = sk_makeTemplateGraph(C, ts->skgen_template);
-
+
if (rg)
{
return RIG_nbJoints(rg);
}
else
{
- return -1;
+ return -1;
}
}
-char * BIF_nameBoneTemplate(bContext *C)
+char * BIF_nameBoneTemplate(const bContext *C)
{
ToolSettings *ts = CTX_data_tool_settings(C);
SK_Sketch *stk = GLOBAL_sketch;
@@ -386,9 +389,9 @@ char * BIF_nameBoneTemplate(bContext *C)
{
index = stk->active_stroke->nb_points;
}
-
+
rg = sk_makeTemplateGraph(C, ts->skgen_template);
-
+
if (rg == NULL)
{
return "";
@@ -404,13 +407,13 @@ void BIF_freeTemplates(bContext *C)
MEM_freeN(TEMPLATES_MENU);
TEMPLATES_MENU = NULL;
}
-
+
if (TEMPLATES_HASH != NULL)
{
BLI_ghash_free(TEMPLATES_HASH, NULL, NULL);
TEMPLATES_HASH = NULL;
}
-
+
if (TEMPLATE_RIGG != NULL)
{
RIG_freeRigGraph((BGraph*)TEMPLATE_RIGG);
@@ -428,14 +431,14 @@ void BIF_setTemplate(bContext *C, int index)
else
{
ts->skgen_template = NULL;
-
+
if (TEMPLATE_RIGG != NULL)
{
RIG_freeRigGraph((BGraph*)TEMPLATE_RIGG);
}
TEMPLATE_RIGG = NULL;
}
-}
+}
/*********************** CONVERSION ***************************/
@@ -456,7 +459,7 @@ void sk_autoname(bContext *C, ReebArc *arc)
char *side = ts->skgen_side_string;
int valid = 0;
int caps = 0;
-
+
if (BLI_streq(side, ""))
{
valid = 1;
@@ -471,7 +474,7 @@ void sk_autoname(bContext *C, ReebArc *arc)
valid = 1;
caps = 0;
}
-
+
if (valid)
{
if (arc->head->p[0] < 0)
@@ -490,14 +493,14 @@ void sk_autoname(bContext *C, ReebArc *arc)
ReebNode *sk_pointToNode(SK_Point *pt, float imat[][4], float tmat[][3])
{
ReebNode *node;
-
+
node = MEM_callocN(sizeof(ReebNode), "reeb node");
VECCOPY(node->p, pt->p);
Mat4MulVecfl(imat, node->p);
-
+
VECCOPY(node->no, pt->no);
Mat3MulVecfl(tmat, node->no);
-
+
return node;
}
@@ -505,14 +508,14 @@ ReebArc *sk_strokeToArc(SK_Stroke *stk, float imat[][4], float tmat[][3])
{
ReebArc *arc;
int i;
-
+
arc = MEM_callocN(sizeof(ReebArc), "reeb arc");
arc->head = sk_pointToNode(stk->points, imat, tmat);
arc->tail = sk_pointToNode(sk_lastStrokePoint(stk), imat, tmat);
-
+
arc->bcount = stk->nb_points - 2; /* first and last are nodes, don't count */
arc->buckets = MEM_callocN(sizeof(EmbedBucket) * arc->bcount, "Buckets");
-
+
for (i = 0; i < arc->bcount; i++)
{
VECCOPY(arc->buckets[i].p, stk->points[i + 1].p);
@@ -521,7 +524,7 @@ ReebArc *sk_strokeToArc(SK_Stroke *stk, float imat[][4], float tmat[][3])
VECCOPY(arc->buckets[i].no, stk->points[i + 1].no);
Mat3MulVecfl(tmat, arc->buckets[i].no);
}
-
+
return arc;
}
@@ -533,22 +536,22 @@ void sk_retargetStroke(bContext *C, SK_Stroke *stk)
float tmat[3][3];
ReebArc *arc;
RigGraph *rg;
-
+
Mat4Invert(imat, obedit->obmat);
-
+
Mat3CpyMat4(tmat, obedit->obmat);
Mat3Transp(tmat);
arc = sk_strokeToArc(stk, imat, tmat);
-
+
sk_autoname(C, arc);
-
+
rg = sk_makeTemplateGraph(C, ts->skgen_template);
BIF_retargetArc(C, arc, rg);
-
+
sk_autoname(C, NULL);
-
+
MEM_freeN(arc->head);
MEM_freeN(arc->tail);
REEB_freeArc((BArc*)arc);
@@ -559,29 +562,31 @@ void sk_retargetStroke(bContext *C, SK_Stroke *stk)
void sk_freeSketch(SK_Sketch *sketch)
{
SK_Stroke *stk, *next;
-
+
for (stk = sketch->strokes.first; stk; stk = next)
{
next = stk->next;
-
+
sk_freeStroke(stk);
}
-
+
+ BLI_freelistN(&sketch->depth_peels);
+
MEM_freeN(sketch);
}
SK_Sketch* sk_createSketch()
{
SK_Sketch *sketch;
-
+
sketch = MEM_callocN(sizeof(SK_Sketch), "SK_Sketch");
-
+
sketch->active_stroke = NULL;
sketch->gesture = NULL;
sketch->strokes.first = NULL;
sketch->strokes.last = NULL;
-
+
return sketch;
}
@@ -614,15 +619,15 @@ void sk_freeStroke(SK_Stroke *stk)
SK_Stroke* sk_createStroke()
{
SK_Stroke *stk;
-
+
stk = MEM_callocN(sizeof(SK_Stroke), "SK_Stroke");
-
+
stk->selected = 0;
stk->nb_points = 0;
stk->buf_size = SK_Stroke_BUFFER_INIT_SIZE;
-
+
sk_allocStrokeBuffer(stk);
-
+
return stk;
}
@@ -631,13 +636,13 @@ void sk_shrinkStrokeBuffer(SK_Stroke *stk)
if (stk->nb_points < stk->buf_size)
{
SK_Point *old_points = stk->points;
-
+
stk->buf_size = stk->nb_points;
- sk_allocStrokeBuffer(stk);
-
+ sk_allocStrokeBuffer(stk);
+
memcpy(stk->points, old_points, sizeof(SK_Point) * stk->nb_points);
-
+
MEM_freeN(old_points);
}
}
@@ -647,13 +652,13 @@ void sk_growStrokeBuffer(SK_Stroke *stk)
if (stk->nb_points == stk->buf_size)
{
SK_Point *old_points = stk->points;
-
+
stk->buf_size *= 2;
-
+
sk_allocStrokeBuffer(stk);
-
+
memcpy(stk->points, old_points, sizeof(SK_Point) * stk->nb_points);
-
+
MEM_freeN(old_points);
}
}
@@ -663,16 +668,16 @@ void sk_growStrokeBufferN(SK_Stroke *stk, int n)
if (stk->nb_points + n > stk->buf_size)
{
SK_Point *old_points = stk->points;
-
+
while (stk->nb_points + n > stk->buf_size)
{
stk->buf_size *= 2;
}
-
+
sk_allocStrokeBuffer(stk);
-
+
memcpy(stk->points, old_points, sizeof(SK_Point) * stk->nb_points);
-
+
MEM_freeN(old_points);
}
}
@@ -686,52 +691,52 @@ void sk_replaceStrokePoint(SK_Stroke *stk, SK_Point *pt, int n)
void sk_insertStrokePoint(SK_Stroke *stk, SK_Point *pt, int n)
{
int size = stk->nb_points - n;
-
+
sk_growStrokeBuffer(stk);
-
+
memmove(stk->points + n + 1, stk->points + n, size * sizeof(SK_Point));
-
+
memcpy(stk->points + n, pt, sizeof(SK_Point));
-
+
stk->nb_points++;
}
void sk_appendStrokePoint(SK_Stroke *stk, SK_Point *pt)
{
sk_growStrokeBuffer(stk);
-
+
memcpy(stk->points + stk->nb_points, pt, sizeof(SK_Point));
-
+
stk->nb_points++;
}
void sk_insertStrokePoints(SK_Stroke *stk, SK_Point *pts, int len, int start, int end)
{
int size = end - start + 1;
-
+
sk_growStrokeBufferN(stk, len - size);
-
+
if (len != size)
{
int tail_size = stk->nb_points - end + 1;
-
+
memmove(stk->points + start + len, stk->points + end + 1, tail_size * sizeof(SK_Point));
}
-
+
memcpy(stk->points + start, pts, len * sizeof(SK_Point));
-
+
stk->nb_points += len - size;
}
void sk_trimStroke(SK_Stroke *stk, int start, int end)
{
int size = end - start + 1;
-
+
if (start > 0)
{
memmove(stk->points, stk->points + start, size * sizeof(SK_Point));
}
-
+
stk->nb_points = size;
}
@@ -741,27 +746,27 @@ void sk_straightenStroke(SK_Stroke *stk, int start, int end, float p_start[3], f
SK_Point *prev, *next;
float delta_p[3];
int i, total;
-
+
total = end - start;
VecSubf(delta_p, p_end, p_start);
-
+
prev = stk->points + start;
next = stk->points + end;
-
+
VECCOPY(pt1.p, p_start);
VECCOPY(pt1.no, prev->no);
pt1.mode = prev->mode;
pt1.type = prev->type;
-
+
VECCOPY(pt2.p, p_end);
VECCOPY(pt2.no, next->no);
pt2.mode = next->mode;
pt2.type = next->type;
-
+
sk_insertStrokePoint(stk, &pt1, start + 1); /* insert after start */
sk_insertStrokePoint(stk, &pt2, end + 1); /* insert before end (since end was pushed back already) */
-
+
for (i = 1; i < total; i++)
{
float delta = (float)i / (float)total;
@@ -770,14 +775,14 @@ void sk_straightenStroke(SK_Stroke *stk, int start, int end, float p_start[3], f
VECCOPY(p, delta_p);
VecMulf(p, delta);
VecAddf(p, p, p_start);
- }
+ }
}
void sk_polygonizeStroke(SK_Stroke *stk, int start, int end)
{
int offset;
int i;
-
+
/* find first exact points outside of range */
for (;start > 0; start--)
{
@@ -786,7 +791,7 @@ void sk_polygonizeStroke(SK_Stroke *stk, int start, int end)
break;
}
}
-
+
for (;end < stk->nb_points - 1; end++)
{
if (stk->points[end].type == PT_EXACT)
@@ -794,9 +799,9 @@ void sk_polygonizeStroke(SK_Stroke *stk, int start, int end)
break;
}
}
-
+
offset = start + 1;
-
+
for (i = start + 1; i < end; i++)
{
if (stk->points[i].type == PT_EXACT)
@@ -809,7 +814,7 @@ void sk_polygonizeStroke(SK_Stroke *stk, int start, int end)
offset++;
}
}
-
+
/* some points were removes, move end of array */
if (offset < end)
{
@@ -824,15 +829,15 @@ void sk_flattenStroke(SK_Stroke *stk, int start, int end)
float normal[3], distance[3];
float limit;
int i, total;
-
+
total = end - start + 1;
-
+
VECCOPY(normal, stk->points[start].no);
-
+
VecSubf(distance, stk->points[end].p, stk->points[start].p);
Projf(normal, distance, normal);
limit = Normalize(normal);
-
+
for (i = 1; i < total - 1; i++)
{
float d = limit * i / total;
@@ -841,13 +846,13 @@ void sk_flattenStroke(SK_Stroke *stk, int start, int end)
VecSubf(distance, p, stk->points[start].p);
Projf(distance, distance, normal);
-
+
VECCOPY(offset, normal);
VecMulf(offset, d);
-
+
VecSubf(p, p, distance);
VecAddf(p, p, offset);
- }
+ }
}
void sk_removeStroke(SK_Sketch *sketch, SK_Stroke *stk)
@@ -856,7 +861,7 @@ void sk_removeStroke(SK_Sketch *sketch, SK_Stroke *stk)
{
sketch->active_stroke = NULL;
}
-
+
BLI_remlink(&sketch->strokes, stk);
sk_freeStroke(stk);
}
@@ -865,14 +870,14 @@ void sk_reverseStroke(SK_Stroke *stk)
{
SK_Point *old_points = stk->points;
int i = 0;
-
+
sk_allocStrokeBuffer(stk);
-
+
for (i = 0; i < stk->nb_points; i++)
{
sk_copyPoint(stk->points + i, old_points + stk->nb_points - 1 - i);
}
-
+
MEM_freeN(old_points);
}
@@ -893,9 +898,9 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end)
SK_Point *old_points = stk->points;
int nb_points = stk->nb_points;
int i, j;
-
+
return;
-
+
if (start == -1)
{
start = 0;
@@ -904,30 +909,30 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end)
sk_allocStrokeBuffer(stk);
stk->nb_points = 0;
-
+
/* adding points before range */
for (i = 0; i < start; i++)
{
sk_appendStrokePoint(stk, old_points + i);
}
-
+
for (i = start, j = start; i <= end; i++)
{
if (i - j == 3)
{
SK_Point pt;
float vec[3];
-
+
sk_copyPoint(&pt, &old_points[j+1]);
pt.p[0] = 0;
pt.p[1] = 0;
pt.p[2] = 0;
-
+
VECCOPY(vec, old_points[j].p);
VecMulf(vec, -0.25);
VecAddf(pt.p, pt.p, vec);
-
+
VECCOPY(vec, old_points[j+1].p);
VecMulf(vec, 0.75);
VecAddf(pt.p, pt.p, vec);
@@ -939,20 +944,22 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end)
VECCOPY(vec, old_points[j+3].p);
VecMulf(vec, -0.25);
VecAddf(pt.p, pt.p, vec);
-
+
+ pt.size = -0.25 * old_points[j].size + 0.75 * old_points[j+1].size + 0.75 * old_points[j+2].size - 0.25 * old_points[j+3].size;
+
sk_appendStrokePoint(stk, &pt);
j += 2;
}
-
+
/* this might be uneeded when filtering last continuous stroke */
if (old_points[i].type == PT_EXACT)
{
sk_appendStrokePoint(stk, old_points + i);
j = i;
}
- }
-
+ }
+
/* adding points after range */
for (i = end + 1; i < nb_points; i++)
{
@@ -967,14 +974,14 @@ void sk_filterStroke(SK_Stroke *stk, int start, int end)
void sk_filterLastContinuousStroke(SK_Stroke *stk)
{
int start, end;
-
+
end = stk->nb_points -1;
-
+
for (start = end - 1; start > 0 && stk->points[start].type == PT_CONTINUOUS; start--)
{
/* nothing to do here*/
}
-
+
if (end - start > 1)
{
sk_filterStroke(stk, start, end);
@@ -984,46 +991,118 @@ void sk_filterLastContinuousStroke(SK_Stroke *stk)
SK_Point *sk_lastStrokePoint(SK_Stroke *stk)
{
SK_Point *pt = NULL;
-
+
if (stk->nb_points > 0)
{
pt = stk->points + (stk->nb_points - 1);
}
-
+
return pt;
}
+float sk_clampPointSize(SK_Point *pt, float size)
+{
+ return MAX2(size * pt->size, size / 2);
+}
+
+void sk_drawPoint(GLUquadric *quad, SK_Point *pt, float size)
+{
+ glTranslatef(pt->p[0], pt->p[1], pt->p[2]);
+ gluSphere(quad, sk_clampPointSize(pt, size), 8, 8);
+}
+
+void sk_drawEdge(GLUquadric *quad, SK_Point *pt0, SK_Point *pt1, float size)
+{
+ float vec1[3], vec2[3] = {0, 0, 1}, axis[3];
+ float angle, length;
+
+ VecSubf(vec1, pt1->p, pt0->p);
+ length = Normalize(vec1);
+ Crossf(axis, vec2, vec1);
+
+ if (VecIsNull(axis))
+ {
+ axis[1] = 1;
+ }
+
+ angle = NormalizedVecAngle2(vec2, vec1);
+
+ glRotatef(angle * 180 / M_PI + 180, axis[0], axis[1], axis[2]);
+
+ gluCylinder(quad, sk_clampPointSize(pt1, size), sk_clampPointSize(pt0, size), length, 8, 8);
+}
+
+void sk_drawNormal(GLUquadric *quad, SK_Point *pt, float size, float height)
+{
+ float vec2[3] = {0, 0, 1}, axis[3];
+ float angle;
+
+ glPushMatrix();
+
+ Crossf(axis, vec2, pt->no);
+
+ if (VecIsNull(axis))
+ {
+ axis[1] = 1;
+ }
+
+ angle = NormalizedVecAngle2(vec2, pt->no);
+
+ glRotatef(angle * 180 / M_PI, axis[0], axis[1], axis[2]);
+
+ glColor3f(0, 1, 1);
+ gluCylinder(quad, sk_clampPointSize(pt, size), 0, sk_clampPointSize(pt, height), 10, 2);
+
+ glPopMatrix();
+}
+
void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int end)
{
float rgb[3];
int i;
-
+ GLUquadric *quad = gluNewQuadric();
+ gluQuadricNormals(quad, GLU_SMOOTH);
+
if (id != -1)
{
glLoadName(id);
-
- glBegin(GL_LINE_STRIP);
-
+
for (i = 0; i < stk->nb_points; i++)
{
- glVertex3fv(stk->points[i].p);
+ glPushMatrix();
+
+ sk_drawPoint(quad, stk->points + i, 0.1);
+
+ if (i > 0)
+ {
+ sk_drawEdge(quad, stk->points + i - 1, stk->points + i, 0.1);
+ }
+
+ glPopMatrix();
}
-
- glEnd();
-
+
}
else
{
float d_rgb[3] = {1, 1, 1};
-
+
VECCOPY(rgb, color);
VecSubf(d_rgb, d_rgb, rgb);
VecMulf(d_rgb, 1.0f / (float)stk->nb_points);
-
- glBegin(GL_LINE_STRIP);
for (i = 0; i < stk->nb_points; i++)
{
+ SK_Point *pt = stk->points + i;
+
+ glPushMatrix();
+
+ if (pt->type == PT_EXACT)
+ {
+ glColor3f(0, 0, 0);
+ sk_drawPoint(quad, pt, 0.15);
+ sk_drawNormal(quad, pt, 0.05, 0.9);
+ }
+
if (i >= start && i <= end)
{
glColor3f(0.3, 0.3, 0.3);
@@ -1032,99 +1111,78 @@ void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int end)
{
glColor3fv(rgb);
}
- glVertex3fv(stk->points[i].p);
- VecAddf(rgb, rgb, d_rgb);
- }
-
- glEnd();
-#if 0
- glColor3f(0, 0, 1);
- glBegin(GL_LINES);
+ if (pt->type != PT_EXACT)
+ {
- for (i = 0; i < stk->nb_points; i++)
- {
- float *p = stk->points[i].p;
- float *no = stk->points[i].no;
- glVertex3fv(p);
- glVertex3f(p[0] + no[0], p[1] + no[1], p[2] + no[2]);
- }
-
- glEnd();
-#endif
+ sk_drawPoint(quad, pt, 0.1);
+ }
- glColor3f(0, 0, 0);
- glBegin(GL_POINTS);
-
- for (i = 0; i < stk->nb_points; i++)
- {
- if (stk->points[i].type == PT_EXACT)
+ if (i > 0)
{
- glVertex3fv(stk->points[i].p);
+ sk_drawEdge(quad, pt - 1, pt, 0.1);
}
+
+ glPopMatrix();
+
+ VecAddf(rgb, rgb, d_rgb);
}
-
- glEnd();
}
-// glColor3f(1, 1, 1);
-// glBegin(GL_POINTS);
-//
-// for (i = 0; i < stk->nb_points; i++)
-// {
-// if (stk->points[i].type == PT_CONTINUOUS)
-// {
-// glVertex3fv(stk->points[i].p);
-// }
-// }
-//
-// glEnd();
+ gluDeleteQuadric(quad);
}
void drawSubdividedStrokeBy(ToolSettings *toolsettings, BArcIterator *iter, NextSubdivisionFunc next_subdividion)
{
+ SK_Stroke *stk = ((SK_StrokeIterator*)iter)->stroke;
float head[3], tail[3];
int bone_start = 0;
int end = iter->length;
int index;
+ GLUquadric *quad = gluNewQuadric();
+ gluQuadricNormals(quad, GLU_SMOOTH);
iter->head(iter);
VECCOPY(head, iter->p);
-
- glColor3f(0, 1, 0);
- glPointSize(UI_GetThemeValuef(TH_VERTEX_SIZE) * 2);
- glBegin(GL_POINTS);
-
+
index = next_subdividion(toolsettings, iter, bone_start, end, head, tail);
while (index != -1)
{
- glVertex3fv(tail);
-
+ SK_Point *pt = stk->points + index;
+
+ glPushMatrix();
+
+ glColor3f(0, 1, 0);
+ sk_drawPoint(quad, pt, 0.15);
+
+ sk_drawNormal(quad, pt, 0.05, 0.9);
+
+ glPopMatrix();
+
VECCOPY(head, tail);
bone_start = index; // start next bone from current index
index = next_subdividion(toolsettings, iter, bone_start, end, head, tail);
}
-
- glEnd();
- glPointSize(UI_GetThemeValuef(TH_VERTEX_SIZE));
+
+ gluDeleteQuadric(quad);
}
void sk_drawStrokeSubdivision(ToolSettings *toolsettings, SK_Stroke *stk)
{
int head_index = -1;
int i;
-
+
if (toolsettings->bone_sketching_convert == SK_CONVERT_RETARGET)
{
return;
}
-
+
for (i = 0; i < stk->nb_points; i++)
{
SK_Point *pt = stk->points + i;
-
+
if (pt->type == PT_EXACT || i == stk->nb_points - 1) /* stop on exact or on last point */
{
if (head_index == -1)
@@ -1137,7 +1195,7 @@ void sk_drawStrokeSubdivision(ToolSettings *toolsettings, SK_Stroke *stk)
{
SK_StrokeIterator sk_iter;
BArcIterator *iter = (BArcIterator*)&sk_iter;
-
+
initStrokeIterator(iter, stk, head_index, i);
if (toolsettings->bone_sketching_convert == SK_CONVERT_CUT_ADAPTATIVE)
@@ -1152,13 +1210,13 @@ void sk_drawStrokeSubdivision(ToolSettings *toolsettings, SK_Stroke *stk)
{
drawSubdividedStrokeBy(toolsettings, iter, nextFixedSubdivision);
}
-
+
}
head_index = i;
}
}
- }
+ }
}
SK_Point *sk_snapPointStroke(bContext *C, SK_Stroke *stk, short mval[2], int *dist, int *index, int all_pts)
@@ -1166,23 +1224,23 @@ SK_Point *sk_snapPointStroke(bContext *C, SK_Stroke *stk, short mval[2], int *di
ARegion *ar = CTX_wm_region(C);
SK_Point *pt = NULL;
int i;
-
+
for (i = 0; i < stk->nb_points; i++)
{
if (all_pts || stk->points[i].type == PT_EXACT)
{
short pval[2];
int pdist;
-
+
project_short_noclip(ar, stk->points[i].p, pval);
-
+
pdist = ABS(pval[0] - mval[0]) + ABS(pval[1] - mval[1]);
-
+
if (pdist < *dist)
{
*dist = pdist;
pt = stk->points + i;
-
+
if (index != NULL)
{
*index = i;
@@ -1190,7 +1248,7 @@ SK_Point *sk_snapPointStroke(bContext *C, SK_Stroke *stk, short mval[2], int *di
}
}
}
-
+
return pt;
}
@@ -1199,21 +1257,21 @@ SK_Point *sk_snapPointArmature(bContext *C, Object *ob, ListBase *ebones, short
ARegion *ar = CTX_wm_region(C);
SK_Point *pt = NULL;
EditBone *bone;
-
+
for (bone = ebones->first; bone; bone = bone->next)
{
float vec[3];
short pval[2];
int pdist;
-
+
if ((bone->flag & BONE_CONNECTED) == 0)
{
VECCOPY(vec, bone->head);
Mat4MulVecfl(ob->obmat, vec);
project_short_noclip(ar, vec, pval);
-
+
pdist = ABS(pval[0] - mval[0]) + ABS(pval[1] - mval[1]);
-
+
if (pdist < *dist)
{
*dist = pdist;
@@ -1222,14 +1280,14 @@ SK_Point *sk_snapPointArmature(bContext *C, Object *ob, ListBase *ebones, short
pt->type = PT_EXACT;
}
}
-
-
+
+
VECCOPY(vec, bone->tail);
Mat4MulVecfl(ob->obmat, vec);
project_short_noclip(ar, vec, pval);
-
+
pdist = ABS(pval[0] - mval[0]) + ABS(pval[1] - mval[1]);
-
+
if (pdist < *dist)
{
*dist = pdist;
@@ -1238,7 +1296,7 @@ SK_Point *sk_snapPointArmature(bContext *C, Object *ob, ListBase *ebones, short
pt->type = PT_EXACT;
}
}
-
+
return pt;
}
@@ -1265,21 +1323,21 @@ void sk_updateOverdraw(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawDa
SK_Stroke *target;
int closest_index = -1;
int dist = SNAP_MIN_DISTANCE * 2;
-
+
// /* If snapping, don't start overdraw */ Can't do that, snap is embed too now
// if (sk_lastStrokePoint(stk)->mode == PT_SNAP)
// {
// return;
// }
-
+
for (target = sketch->strokes.first; target; target = target->next)
{
if (target != stk)
{
int index;
-
+
SK_Point *spt = sk_snapPointStroke(C, target, dd->mval, &dist, &index, 1);
-
+
if (spt != NULL)
{
sketch->over.target = target;
@@ -1287,7 +1345,7 @@ void sk_updateOverdraw(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawDa
}
}
}
-
+
if (sketch->over.target != NULL)
{
if (closest_index > -1)
@@ -1319,7 +1377,7 @@ void sk_updateOverdraw(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawDa
int index;
closest_pt = sk_snapPointStroke(C, sketch->over.target, dd->mval, &dist, &index, 1);
-
+
if (closest_pt != NULL)
{
if (sk_lastStrokePoint(stk)->type == PT_EXACT)
@@ -1330,7 +1388,7 @@ void sk_updateOverdraw(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawDa
{
sketch->over.count++;
}
-
+
sketch->over.end = index;
}
else
@@ -1347,17 +1405,17 @@ int sk_adjustIndexes(SK_Sketch *sketch, int *start, int *end)
*start = sketch->over.start;
*end = sketch->over.end;
-
+
if (*start == -1)
{
*start = 0;
}
-
+
if (*end == -1)
{
*end = sketch->over.target->nb_points - 1;
}
-
+
if (*end < *start)
{
int tmp = *start;
@@ -1365,34 +1423,34 @@ int sk_adjustIndexes(SK_Sketch *sketch, int *start, int *end)
*end = tmp;
retval = 1;
}
-
+
return retval;
}
void sk_endOverdraw(SK_Sketch *sketch)
{
SK_Stroke *stk = sketch->active_stroke;
-
+
if (sk_hasOverdraw(sketch, NULL))
{
int start;
int end;
-
+
if (sk_adjustIndexes(sketch, &start, &end))
{
sk_reverseStroke(stk);
}
-
+
if (stk->nb_points > 1)
{
stk->points->type = sketch->over.target->points[start].type;
sk_lastStrokePoint(stk)->type = sketch->over.target->points[end].type;
}
-
+
sk_insertStrokePoints(sketch->over.target, stk->points, stk->nb_points, start, end);
-
+
sk_removeStroke(sketch, stk);
-
+
sk_resetOverdraw(sketch);
}
}
@@ -1401,11 +1459,11 @@ void sk_endOverdraw(SK_Sketch *sketch)
void sk_startStroke(SK_Sketch *sketch)
{
SK_Stroke *stk = sk_createStroke();
-
+
BLI_addtail(&sketch->strokes, stk);
sketch->active_stroke = stk;
- sk_resetOverdraw(sketch);
+ sk_resetOverdraw(sketch);
}
void sk_endStroke(bContext *C, SK_Sketch *sketch)
@@ -1424,7 +1482,7 @@ void sk_endStroke(bContext *C, SK_Sketch *sketch)
void sk_updateDrawData(SK_DrawData *dd)
{
dd->type = PT_CONTINUOUS;
-
+
dd->previous_mval[0] = dd->mval[0];
dd->previous_mval[1] = dd->mval[1];
}
@@ -1435,19 +1493,19 @@ float sk_distanceDepth(bContext *C, float p1[3], float p2[3])
RegionView3D *rv3d = ar->regiondata;
float vec[3];
float distance;
-
+
VecSubf(vec, p1, p2);
-
+
Projf(vec, vec, rv3d->viewinv[2]);
-
+
distance = VecLength(vec);
-
+
if (Inpf(rv3d->viewinv[2], vec) > 0)
{
distance *= -1;
}
-
- return distance;
+
+ return distance;
}
void sk_interpolateDepth(bContext *C, SK_Stroke *stk, int start, int end, float length, float distance)
@@ -1458,18 +1516,18 @@ void sk_interpolateDepth(bContext *C, SK_Stroke *stk, int start, int end, float
float progress = 0;
int i;
-
+
progress = VecLenf(stk->points[start].p, stk->points[start - 1].p);
-
+
for (i = start; i <= end; i++)
{
float ray_start[3], ray_normal[3];
float delta = VecLenf(stk->points[i].p, stk->points[i + 1].p);
short pval[2];
-
+
project_short_noclip(ar, stk->points[i].p, pval);
viewray(ar, v3d, pval, ray_start, ray_normal);
-
+
VecMulf(ray_normal, distance * progress / length);
VecAddf(stk->points[i].p, stk->points[i].p, ray_normal);
@@ -1480,19 +1538,19 @@ void sk_interpolateDepth(bContext *C, SK_Stroke *stk, int start, int end, float
void sk_projectDrawPoint(bContext *C, float vec[3], SK_Stroke *stk, SK_DrawData *dd)
{
ARegion *ar = CTX_wm_region(C);
- /* copied from grease pencil, need fixing */
+ /* copied from grease pencil, need fixing */
SK_Point *last = sk_lastStrokePoint(stk);
short cval[2];
float fp[3] = {0, 0, 0};
float dvec[3];
-
+
if (last != NULL)
{
VECCOPY(fp, last->p);
}
-
+
initgrabz(ar->regiondata, fp[0], fp[1], fp[2]);
-
+
/* method taken from editview.c - mouse_cursor() */
project_short_noclip(ar, fp, cval);
window_to_3d_delta(ar, dvec, cval[0] - dd->mval[0], cval[1] - dd->mval[1]);
@@ -1504,20 +1562,20 @@ int sk_getStrokeDrawPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
pt->type = dd->type;
pt->mode = PT_PROJECT;
sk_projectDrawPoint(C, pt->p, stk, dd);
-
+
return 1;
}
int sk_addStrokeDrawPoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawData *dd)
{
SK_Point pt;
-
+
sk_initPoint(C, &pt);
-
+
sk_getStrokeDrawPoint(C, &pt, sketch, stk, dd);
sk_appendStrokePoint(stk, &pt);
-
+
return 1;
}
@@ -1528,16 +1586,16 @@ int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
if (ts->snap_mode == SCE_SNAP_MODE_VOLUME)
{
- ListBase depth_peels;
DepthPeel *p1, *p2;
float *last_p = NULL;
float dist = FLT_MAX;
float p[3];
-
- depth_peels.first = depth_peels.last = NULL;
-
- peelObjectsContext(C, &depth_peels, dd->mval);
-
+ float size = 0;
+
+ sketch->depth_peels.first = sketch->depth_peels.last = NULL;
+
+ peelObjectsContext(C, &sketch->depth_peels, dd->mval);
+
if (stk->nb_points > 0 && stk->points[stk->nb_points - 1].type == PT_CONTINUOUS)
{
last_p = stk->points[stk->nb_points - 1].p;
@@ -1546,19 +1604,20 @@ int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
{
last_p = LAST_SNAP_POINT;
}
-
-
- for (p1 = depth_peels.first; p1; p1 = p1->next)
+
+
+ for (p1 = sketch->depth_peels.first; p1; p1 = p1->next)
{
if (p1->flag == 0)
{
float vec[3];
float new_dist;
-
+ float new_size = 0;
+
p2 = NULL;
p1->flag = 1;
-
- /* if peeling objects, take the first and last from each object */
+
+ /* if peeling objects, take the first and last from each object */
if (ts->snap_flag & SCE_SNAP_PEEL_OBJECT)
{
DepthPeel *peel;
@@ -1579,46 +1638,50 @@ int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
/* nothing to do here */
}
}
-
+
if (p2)
{
p2->flag = 1;
-
+
VecAddf(vec, p1->p, p2->p);
VecMulf(vec, 0.5f);
+ new_size = VecLenf(p1->p, p2->p);
}
else
{
VECCOPY(vec, p1->p);
}
-
+
if (last_p == NULL)
{
VECCOPY(p, vec);
+ size = new_size;
dist = 0;
break;
}
-
+
new_dist = VecLenf(last_p, vec);
-
+
if (new_dist < dist)
{
VECCOPY(p, vec);
dist = new_dist;
+ size = new_size;
}
}
}
-
+
if (dist != FLT_MAX)
{
pt->type = dd->type;
pt->mode = PT_SNAP;
+ pt->size = size / 2;
VECCOPY(pt->p, p);
-
+
point_added = 1;
}
-
- BLI_freelistN(&depth_peels);
+
+ //BLI_freelistN(&depth_peels);
}
else
{
@@ -1641,7 +1704,7 @@ int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
{
spt = sk_snapPointStroke(C, snap_stk, dd->mval, &dist, NULL, 1);
}
-
+
if (spt != NULL)
{
VECCOPY(pt->p, spt->p);
@@ -1656,11 +1719,11 @@ int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Strok
pt->type = dd->type;
pt->mode = PT_SNAP;
VECCOPY(pt->p, vec);
-
+
point_added = 1;
}
}
-
+
return point_added;
}
@@ -1668,23 +1731,23 @@ int sk_addStrokeSnapPoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_Dra
{
int point_added;
SK_Point pt;
-
+
sk_initPoint(C, &pt);
point_added = sk_getStrokeSnapPoint(C, &pt, sketch, stk, dd);
-
+
if (point_added)
{
float final_p[3];
float length, distance;
int total;
int i;
-
+
VECCOPY(final_p, pt.p);
-
+
sk_projectDrawPoint(C, pt.p, stk, dd);
sk_appendStrokePoint(stk, &pt);
-
+
/* update all previous point to give smooth Z progresion */
total = 0;
length = 0;
@@ -1697,19 +1760,19 @@ int sk_addStrokeSnapPoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_Dra
break;
}
}
-
+
if (total > 1)
{
distance = sk_distanceDepth(C, final_p, stk->points[i].p);
-
+
sk_interpolateDepth(C, stk, i + 1, stk->nb_points - 2, length, distance);
}
-
+
VECCOPY(stk->points[stk->nb_points - 1].p, final_p);
-
+
point_added = 1;
}
-
+
return point_added;
}
@@ -1717,17 +1780,17 @@ void sk_addStrokePoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawDa
{
ToolSettings *ts = CTX_data_tool_settings(C);
int point_added = 0;
-
+
if (snap)
{
point_added = sk_addStrokeSnapPoint(C, sketch, stk, dd);
}
-
+
if (point_added == 0)
{
point_added = sk_addStrokeDrawPoint(C, sketch, stk, dd);
}
-
+
if (stk == sketch->active_stroke && ts->bone_sketching & BONE_SKETCHING_ADJUST)
{
sk_updateOverdraw(C, sketch, stk, dd);
@@ -1737,7 +1800,7 @@ void sk_addStrokePoint(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawDa
void sk_getStrokePoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawData *dd, short snap)
{
int point_added = 0;
-
+
if (snap)
{
point_added = sk_getStrokeSnapPoint(C, pt, sketch, stk, dd);
@@ -1748,11 +1811,11 @@ void sk_getStrokePoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, SK_Stroke *
{
LAST_SNAP_POINT_VALID = 0;
}
-
+
if (point_added == 0)
{
point_added = sk_getStrokeDrawPoint(C, pt, sketch, stk, dd);
- }
+ }
}
void sk_endContinuousStroke(SK_Stroke *stk)
@@ -1775,7 +1838,7 @@ int sk_stroke_filtermval(SK_DrawData *dd)
{
retval = 1;
}
-
+
return retval;
}
@@ -1805,25 +1868,27 @@ static void initIteratorFct(SK_StrokeIterator *iter)
iter->next = nextPoint;
iter->nextN = nextNPoint;
iter->previous = previousPoint;
- iter->stopped = iteratorStopped;
+ iter->stopped = iteratorStopped;
}
static SK_Point* setIteratorValues(SK_StrokeIterator *iter, int index)
{
SK_Point *pt = NULL;
-
+
if (index >= 0 && index < iter->length)
{
pt = &(iter->stroke->points[iter->start + (iter->stride * index)]);
iter->p = pt->p;
iter->no = pt->no;
+ iter->size = pt->size;
}
else
{
iter->p = NULL;
iter->no = NULL;
+ iter->size = 0;
}
-
+
return pt;
}
@@ -1833,7 +1898,7 @@ void initStrokeIterator(BArcIterator *arg, SK_Stroke *stk, int start, int end)
initIteratorFct(iter);
iter->stroke = stk;
-
+
if (start < end)
{
iter->start = start + 1;
@@ -1846,9 +1911,9 @@ void initStrokeIterator(BArcIterator *arg, SK_Stroke *stk, int start, int end)
iter->end = end + 1;
iter->stride = -1;
}
-
+
iter->length = iter->stride * (iter->end - iter->start + 1);
-
+
iter->index = -1;
}
@@ -1857,11 +1922,12 @@ static void* headPoint(void *arg)
{
SK_StrokeIterator *iter = (SK_StrokeIterator*)arg;
SK_Point *result = NULL;
-
+
result = &(iter->stroke->points[iter->start - iter->stride]);
iter->p = result->p;
iter->no = result->no;
-
+ iter->size = result->size;
+
return result;
}
@@ -1869,11 +1935,12 @@ static void* tailPoint(void *arg)
{
SK_StrokeIterator *iter = (SK_StrokeIterator*)arg;
SK_Point *result = NULL;
-
+
result = &(iter->stroke->points[iter->end + iter->stride]);
iter->p = result->p;
iter->no = result->no;
-
+ iter->size = result->size;
+
return result;
}
@@ -1881,7 +1948,7 @@ static void* nextPoint(void *arg)
{
SK_StrokeIterator *iter = (SK_StrokeIterator*)arg;
SK_Point *result = NULL;
-
+
iter->index++;
if (iter->index < iter->length)
{
@@ -1895,7 +1962,7 @@ static void* nextNPoint(void *arg, int n)
{
SK_StrokeIterator *iter = (SK_StrokeIterator*)arg;
SK_Point *result = NULL;
-
+
iter->index += n;
/* check if passed end */
@@ -1926,7 +1993,7 @@ static void* previousPoint(void *arg)
{
SK_StrokeIterator *iter = (SK_StrokeIterator*)arg;
SK_Point *result = NULL;
-
+
if (iter->index > 0)
{
iter->index--;
@@ -1961,18 +2028,18 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
float tmat[3][3];
int head_index = 0;
int i;
-
+
head = NULL;
-
+
Mat4Invert(invmat, obedit->obmat);
-
+
Mat3CpyMat4(tmat, obedit->obmat);
Mat3Transp(tmat);
-
+
for (i = 0; i < stk->nb_points; i++)
{
SK_Point *pt = stk->points + i;
-
+
if (pt->type == PT_EXACT)
{
if (head == NULL)
@@ -1984,14 +2051,14 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
{
EditBone *bone = NULL;
EditBone *new_parent;
-
+
if (i - head_index > 1)
{
SK_StrokeIterator sk_iter;
BArcIterator *iter = (BArcIterator*)&sk_iter;
initStrokeIterator(iter, stk, head_index, i);
-
+
if (ts->bone_sketching_convert == SK_CONVERT_CUT_ADAPTATIVE)
{
bone = subdivideArcBy(ts, arm, arm->edbo, iter, invmat, tmat, nextAdaptativeSubdivision);
@@ -2005,11 +2072,11 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
bone = subdivideArcBy(ts, arm, arm->edbo, iter, invmat, tmat, nextFixedSubdivision);
}
}
-
+
if (bone == NULL)
{
bone = addEditBone(arm, "Bone");
-
+
VECCOPY(bone->head, head->p);
VECCOPY(bone->tail, pt->p);
@@ -2017,10 +2084,10 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
Mat4MulVecfl(invmat, bone->tail);
setBoneRollFromNormal(bone, head->no, invmat, tmat);
}
-
+
new_parent = bone;
bone->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL;
-
+
/* move to end of chain */
while (bone->parent != NULL)
{
@@ -2031,9 +2098,9 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
if (parent != NULL)
{
bone->parent = parent;
- bone->flag |= BONE_CONNECTED;
+ bone->flag |= BONE_CONNECTED;
}
-
+
parent = new_parent;
head_index = i;
head = pt;
@@ -2046,7 +2113,7 @@ void sk_convert(bContext *C, SK_Sketch *sketch)
{
ToolSettings *ts = CTX_data_tool_settings(C);
SK_Stroke *stk;
-
+
for (stk = sketch->strokes.first; stk; stk = stk->next)
{
if (stk->selected == 1)
@@ -2079,7 +2146,7 @@ int sk_getSelfIntersections(bContext *C, ListBase *list, SK_Stroke *gesture)
float s_p1[3] = {0, 0, 0};
float s_p2[3] = {0, 0, 0};
int g_i;
-
+
project_float(ar, gesture->points[s_i].p, s_p1);
project_float(ar, gesture->points[s_i + 1].p, s_p2);
@@ -2090,37 +2157,37 @@ int sk_getSelfIntersections(bContext *C, ListBase *list, SK_Stroke *gesture)
float g_p2[3] = {0, 0, 0};
float vi[3];
float lambda;
-
+
project_float(ar, gesture->points[g_i].p, g_p1);
project_float(ar, gesture->points[g_i + 1].p, g_p2);
-
+
if (LineIntersectLineStrict(s_p1, s_p2, g_p1, g_p2, vi, &lambda))
{
SK_Intersection *isect = MEM_callocN(sizeof(SK_Intersection), "Intersection");
-
+
isect->gesture_index = g_i;
isect->before = s_i;
isect->after = s_i + 1;
isect->stroke = gesture;
-
+
VecSubf(isect->p, gesture->points[s_i + 1].p, gesture->points[s_i].p);
VecMulf(isect->p, lambda);
VecAddf(isect->p, isect->p, gesture->points[s_i].p);
-
+
BLI_addtail(list, isect);
added++;
}
}
}
-
+
return added;
}
int cmpIntersections(void *i1, void *i2)
{
SK_Intersection *isect1 = i1, *isect2 = i2;
-
+
if (isect1->stroke == isect2->stroke)
{
if (isect1->before < isect2->before)
@@ -2143,7 +2210,7 @@ int cmpIntersections(void *i1, void *i2)
}
}
}
-
+
return 0;
}
@@ -2161,13 +2228,13 @@ int sk_getIntersections(bContext *C, ListBase *list, SK_Sketch *sketch, SK_Strok
{
int s_added = 0;
int s_i;
-
+
for (s_i = 0; s_i < stk->nb_points - 1; s_i++)
{
float s_p1[3] = {0, 0, 0};
float s_p2[3] = {0, 0, 0};
int g_i;
-
+
project_float(ar, stk->points[s_i].p, s_p1);
project_float(ar, stk->points[s_i + 1].p, s_p2);
@@ -2177,45 +2244,45 @@ int sk_getIntersections(bContext *C, ListBase *list, SK_Sketch *sketch, SK_Strok
float g_p2[3] = {0, 0, 0};
float vi[3];
float lambda;
-
+
project_float(ar, gesture->points[g_i].p, g_p1);
project_float(ar, gesture->points[g_i + 1].p, g_p2);
-
+
if (LineIntersectLineStrict(s_p1, s_p2, g_p1, g_p2, vi, &lambda))
{
SK_Intersection *isect = MEM_callocN(sizeof(SK_Intersection), "Intersection");
float ray_start[3], ray_end[3];
short mval[2];
-
+
isect->gesture_index = g_i;
isect->before = s_i;
isect->after = s_i + 1;
isect->stroke = stk;
isect->lambda = lambda;
-
+
mval[0] = (short)(vi[0]);
mval[1] = (short)(vi[1]);
viewline(ar, v3d, mval, ray_start, ray_end);
-
+
LineIntersectLine( stk->points[s_i].p,
stk->points[s_i + 1].p,
ray_start,
ray_end,
isect->p,
vi);
-
+
BLI_addtail(list, isect);
s_added++;
}
}
}
-
+
added = MAX2(s_added, added);
}
-
+
BLI_sortlist(list, cmpIntersections);
-
+
return added;
}
@@ -2223,23 +2290,23 @@ int sk_getSegments(SK_Stroke *segments, SK_Stroke *gesture)
{
SK_StrokeIterator sk_iter;
BArcIterator *iter = (BArcIterator*)&sk_iter;
-
+
float CORRELATION_THRESHOLD = 0.99f;
float *vec;
int i, j;
-
+
sk_appendStrokePoint(segments, &gesture->points[0]);
vec = segments->points[segments->nb_points - 1].p;
initStrokeIterator(iter, gesture, 0, gesture->nb_points - 1);
for (i = 1, j = 0; i < gesture->nb_points; i++)
- {
+ {
float n[3];
-
+
/* Calculate normal */
VecSubf(n, gesture->points[i].p, vec);
-
+
if (calcArcCorrelation(iter, j, i, vec, n) < CORRELATION_THRESHOLD)
{
j = i - 1;
@@ -2250,7 +2317,7 @@ int sk_getSegments(SK_Stroke *segments, SK_Stroke *gesture)
}
sk_appendStrokePoint(segments, &gesture->points[gesture->nb_points - 1]);
-
+
return segments->nb_points - 1;
}
@@ -2267,16 +2334,16 @@ int sk_detectCutGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
void sk_applyCutGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
SK_Intersection *isect;
-
+
for (isect = gest->intersections.first; isect; isect = isect->next)
{
SK_Point pt;
-
+
pt.type = PT_EXACT;
pt.mode = PT_PROJECT; /* take mode from neighbouring points */
VECCOPY(pt.p, isect->p);
VECCOPY(pt.no, isect->stroke->points[isect->before].no);
-
+
sk_insertStrokePoint(isect->stroke, &pt, isect->after);
}
}
@@ -2287,12 +2354,12 @@ int sk_detectTrimGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
float s1[3], s2[3];
float angle;
-
+
VecSubf(s1, gest->segments->points[1].p, gest->segments->points[0].p);
VecSubf(s2, gest->segments->points[2].p, gest->segments->points[1].p);
-
+
angle = VecAngle2(s1, s2);
-
+
if (angle > 60 && angle < 120)
{
return 1;
@@ -2306,21 +2373,21 @@ void sk_applyTrimGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
SK_Intersection *isect;
float trim_dir[3];
-
+
VecSubf(trim_dir, gest->segments->points[2].p, gest->segments->points[1].p);
-
+
for (isect = gest->intersections.first; isect; isect = isect->next)
{
SK_Point pt;
float stroke_dir[3];
-
+
pt.type = PT_EXACT;
pt.mode = PT_PROJECT; /* take mode from neighbouring points */
VECCOPY(pt.p, isect->p);
VECCOPY(pt.no, isect->stroke->points[isect->before].no);
-
+
VecSubf(stroke_dir, isect->stroke->points[isect->after].p, isect->stroke->points[isect->before].p);
-
+
/* same direction, trim end */
if (Inpf(stroke_dir, trim_dir) > 0)
{
@@ -2333,7 +2400,7 @@ void sk_applyTrimGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
sk_replaceStrokePoint(isect->stroke, &pt, isect->before);
sk_trimStroke(isect->stroke, isect->before, isect->stroke->nb_points - 1);
}
-
+
}
}
@@ -2342,7 +2409,7 @@ int sk_detectCommandGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
if (gest->nb_segments > 2 && gest->nb_intersections == 2 && gest->nb_self_intersections == 1)
{
SK_Intersection *isect, *self_isect;
-
+
/* get the the last intersection of the first pair */
for( isect = gest->intersections.first; isect; isect = isect->next )
{
@@ -2352,15 +2419,15 @@ int sk_detectCommandGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
break;
}
}
-
+
self_isect = gest->self_intersections.first;
-
+
if (isect && isect->gesture_index < self_isect->gesture_index)
{
return 1;
}
}
-
+
return 0;
}
@@ -2368,7 +2435,7 @@ void sk_applyCommandGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
SK_Intersection *isect;
int command = 1;
-
+
// XXX
// command = pupmenu("Action %t|Flatten %x1|Straighten %x2|Polygonize %x3");
if(command < 1) return;
@@ -2376,9 +2443,9 @@ void sk_applyCommandGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
for (isect = gest->intersections.first; isect; isect = isect->next)
{
SK_Intersection *i2;
-
+
i2 = isect->next;
-
+
if (i2 && i2->stroke == isect->stroke)
{
switch (command)
@@ -2405,32 +2472,32 @@ int sk_detectDeleteGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
float s1[3], s2[3];
float angle;
-
+
VecSubf(s1, gest->segments->points[1].p, gest->segments->points[0].p);
VecSubf(s2, gest->segments->points[2].p, gest->segments->points[1].p);
-
+
angle = VecAngle2(s1, s2);
-
+
if (angle > 120)
{
return 1;
}
}
-
+
return 0;
}
void sk_applyDeleteGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
SK_Intersection *isect;
-
+
for (isect = gest->intersections.first; isect; isect = isect->next)
{
/* only delete strokes that are crossed twice */
if (isect->next && isect->next->stroke == isect->stroke)
{
isect = isect->next;
-
+
sk_removeStroke(sketch, isect->stroke);
}
}
@@ -2443,17 +2510,17 @@ int sk_detectMergeGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
short start_val[2], end_val[2];
short dist;
-
+
project_short_noclip(ar, gest->stk->points[0].p, start_val);
project_short_noclip(ar, sk_lastStrokePoint(gest->stk)->p, end_val);
-
+
dist = MAX2(ABS(start_val[0] - end_val[0]), ABS(start_val[1] - end_val[1]));
-
+
/* if gesture is a circle */
if ( dist <= 20 )
{
SK_Intersection *isect;
-
+
/* check if it circled around an exact point */
for (isect = gest->intersections.first; isect; isect = isect->next)
{
@@ -2462,10 +2529,10 @@ int sk_detectMergeGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
int start_index, end_index;
int i;
-
+
start_index = MIN2(isect->after, isect->next->after);
end_index = MAX2(isect->before, isect->next->before);
-
+
for (i = start_index; i <= end_index; i++)
{
if (isect->stroke->points[i].type == PT_EXACT)
@@ -2473,21 +2540,21 @@ int sk_detectMergeGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
return 1; /* at least one exact point found, stop detect here */
}
}
-
- /* skip next */
+
+ /* skip next */
isect = isect->next;
}
}
}
}
-
+
return 0;
}
void sk_applyMergeGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
SK_Intersection *isect;
-
+
/* check if it circled around an exact point */
for (isect = gest->intersections.first; isect; isect = isect->next)
{
@@ -2496,7 +2563,7 @@ void sk_applyMergeGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
int start_index, end_index;
int i;
-
+
start_index = MIN2(isect->after, isect->next->after);
end_index = MAX2(isect->before, isect->next->before);
@@ -2509,7 +2576,7 @@ void sk_applyMergeGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
}
}
- /* skip next */
+ /* skip next */
isect = isect->next;
}
}
@@ -2520,7 +2587,7 @@ int sk_detectReverseGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
if (gest->nb_segments > 2 && gest->nb_intersections == 2 && gest->nb_self_intersections == 0)
{
SK_Intersection *isect;
-
+
/* check if it circled around an exact point */
for (isect = gest->intersections.first; isect; isect = isect->next)
{
@@ -2529,7 +2596,7 @@ int sk_detectReverseGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
float start_v[3], end_v[3];
float angle;
-
+
if (isect->gesture_index < isect->next->gesture_index)
{
VecSubf(start_v, isect->p, gest->stk->points[0].p);
@@ -2540,27 +2607,27 @@ int sk_detectReverseGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
VecSubf(start_v, isect->next->p, gest->stk->points[0].p);
VecSubf(end_v, sk_lastStrokePoint(gest->stk)->p, isect->p);
}
-
+
angle = VecAngle2(start_v, end_v);
-
+
if (angle > 120)
{
return 1;
}
-
- /* skip next */
+
+ /* skip next */
isect = isect->next;
}
}
}
-
+
return 0;
}
void sk_applyReverseGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
SK_Intersection *isect;
-
+
for (isect = gest->intersections.first; isect; isect = isect->next)
{
/* only reverse strokes that are crossed twice */
@@ -2568,7 +2635,7 @@ void sk_applyReverseGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
sk_reverseStroke(isect->stroke);
- /* skip next */
+ /* skip next */
isect = isect->next;
}
}
@@ -2592,7 +2659,7 @@ static void sk_initGesture(bContext *C, SK_Gesture *gest, SK_Sketch *sketch)
{
gest->intersections.first = gest->intersections.last = NULL;
gest->self_intersections.first = gest->self_intersections.last = NULL;
-
+
gest->segments = sk_createStroke();
gest->stk = sketch->gesture;
@@ -2612,9 +2679,9 @@ void sk_applyGesture(bContext *C, SK_Sketch *sketch)
{
SK_Gesture gest;
SK_GestureAction *act;
-
+
sk_initGesture(C, &gest, sketch);
-
+
/* detect and apply */
for (act = GESTURE_ACTIONS; act->apply != NULL; act++)
{
@@ -2624,7 +2691,7 @@ void sk_applyGesture(bContext *C, SK_Sketch *sketch)
break;
}
}
-
+
sk_freeGesture(&gest);
}
@@ -2633,11 +2700,11 @@ void sk_applyGesture(bContext *C, SK_Sketch *sketch)
void sk_deleteSelectedStrokes(SK_Sketch *sketch)
{
SK_Stroke *stk, *next;
-
+
for (stk = sketch->strokes.first; stk; stk = next)
{
next = stk->next;
-
+
if (stk->selected == 1)
{
sk_removeStroke(sketch, stk);
@@ -2648,7 +2715,7 @@ void sk_deleteSelectedStrokes(SK_Sketch *sketch)
void sk_selectAllSketch(SK_Sketch *sketch, int mode)
{
SK_Stroke *stk = NULL;
-
+
if (mode == -1)
{
for (stk = sketch->strokes.first; stk; stk = stk->next)
@@ -2666,12 +2733,12 @@ void sk_selectAllSketch(SK_Sketch *sketch, int mode)
else if (mode == 1)
{
int selected = 1;
-
+
for (stk = sketch->strokes.first; stk; stk = stk->next)
{
selected &= stk->selected;
}
-
+
selected ^= 1;
for (stk = sketch->strokes.first; stk; stk = stk->next)
@@ -2687,20 +2754,20 @@ void sk_selectStroke(bContext *C, SK_Sketch *sketch, short mval[2], int extend)
rcti rect;
unsigned int buffer[MAXPICKBUF];
short hits;
-
+
view3d_set_viewcontext(C, &vc);
-
+
rect.xmin= mval[0]-5;
rect.xmax= mval[0]+5;
rect.ymin= mval[1]-5;
rect.ymax= mval[1]+5;
-
+
hits = view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect);
if (hits>0)
{
int besthitresult = -1;
-
+
if(hits == 1) {
besthitresult = buffer[3];
}
@@ -2708,23 +2775,23 @@ void sk_selectStroke(bContext *C, SK_Sketch *sketch, short mval[2], int extend)
besthitresult = buffer[3];
/* loop and get best hit */
}
-
+
if (besthitresult > 0)
{
SK_Stroke *selected_stk = BLI_findlink(&sketch->strokes, besthitresult - 1);
-
+
if (extend == 0)
{
sk_selectAllSketch(sketch, -1);
-
+
selected_stk->selected = 1;
}
else
{
selected_stk->selected ^= 1;
}
-
-
+
+
}
}
}
@@ -2734,7 +2801,7 @@ void sk_queueRedrawSketch(SK_Sketch *sketch)
if (sketch->active_stroke != NULL)
{
SK_Point *last = sk_lastStrokePoint(sketch->active_stroke);
-
+
if (last != NULL)
{
// XXX
@@ -2743,16 +2810,14 @@ void sk_queueRedrawSketch(SK_Sketch *sketch)
}
}
-void sk_drawSketch(Scene *scene, SK_Sketch *sketch, int with_names)
+void sk_drawSketch(Scene *scene, View3D *v3d, SK_Sketch *sketch, int with_names)
{
ToolSettings *ts= scene->toolsettings;
SK_Stroke *stk;
-
- glDisable(GL_DEPTH_TEST);
- glLineWidth(UI_GetThemeValuef(TH_VERTEX_SIZE));
- glPointSize(UI_GetThemeValuef(TH_VERTEX_SIZE));
-
+ glClear(GL_DEPTH_BUFFER_BIT);
+ glEnable(GL_DEPTH_TEST);
+
if (with_names)
{
int id;
@@ -2760,61 +2825,51 @@ void sk_drawSketch(Scene *scene, SK_Sketch *sketch, int with_names)
{
sk_drawStroke(stk, id, NULL, -1, -1);
}
-
+
glLoadName(-1);
}
else
{
float selected_rgb[3] = {1, 0, 0};
float unselected_rgb[3] = {1, 0.5, 0};
-
+
for (stk = sketch->strokes.first; stk; stk = stk->next)
{
int start = -1;
int end = -1;
-
+
if (sk_hasOverdraw(sketch, stk))
{
sk_adjustIndexes(sketch, &start, &end);
}
-
+
sk_drawStroke(stk, -1, (stk->selected==1?selected_rgb:unselected_rgb), start, end);
-
+
if (stk->selected == 1)
{
sk_drawStrokeSubdivision(ts, stk);
}
}
-
- /* only draw gesture in active area */
- if (sketch->gesture != NULL /*&& area_is_active_area(G.vd->area)*/)
- {
- float gesture_rgb[3] = {0, 0.5, 1};
- sk_drawStroke(sketch->gesture, -1, gesture_rgb, -1, -1);
- }
-
+
if (sketch->active_stroke != NULL)
{
SK_Point *last = sk_lastStrokePoint(sketch->active_stroke);
-
+
if (ts->bone_sketching & BONE_SKETCHING_QUICK)
{
sk_drawStrokeSubdivision(ts, sketch->active_stroke);
}
-
+
if (last != NULL)
{
- glEnable(GL_LINE_STIPPLE);
- glColor3fv(selected_rgb);
- glBegin(GL_LINE_STRIP);
-
- glVertex3fv(last->p);
- glVertex3fv(sketch->next_point.p);
-
- glEnd();
-
- glDisable(GL_LINE_STIPPLE);
-
+ GLUquadric *quad = gluNewQuadric();
+ gluQuadricNormals(quad, GLU_SMOOTH);
+
+ glPushMatrix();
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
switch (sketch->next_point.mode)
{
case PT_SNAP:
@@ -2824,20 +2879,63 @@ void sk_drawSketch(Scene *scene, SK_Sketch *sketch, int with_names)
glColor3f(0, 0, 0);
break;
}
-
- glBegin(GL_POINTS);
-
- glVertex3fv(sketch->next_point.p);
-
- glEnd();
+
+ sk_drawPoint(quad, &sketch->next_point, 0.1);
+
+ glColor4f(selected_rgb[0], selected_rgb[1], selected_rgb[2], 0.3);
+
+ sk_drawEdge(quad, last, &sketch->next_point, 0.1);
+
+ glDisable(GL_BLEND);
+
+ glPopMatrix();
+
+ gluDeleteQuadric(quad);
}
}
}
-
- glLineWidth(1.0);
- glPointSize(1.0);
- glEnable(GL_DEPTH_TEST);
+#if 0
+ if (sketch->depth_peels.first != NULL)
+ {
+ float colors[8][3] = {
+ {1, 0, 0},
+ {0, 1, 0},
+ {0, 0, 1},
+ {1, 1, 0},
+ {1, 0, 1},
+ {0, 1, 1},
+ {1, 1, 1},
+ {0, 0, 0}
+ };
+ DepthPeel *p;
+ GLUquadric *quad = gluNewQuadric();
+ gluQuadricNormals(quad, GLU_SMOOTH);
+
+ for (p = sketch->depth_peels.first; p; p = p->next)
+ {
+ int index = (int)(p->ob);
+ index = (index >> 5) & 7;
+
+ glColor3fv(colors[index]);
+ glPushMatrix();
+ glTranslatef(p->p[0], p->p[1], p->p[2]);
+ gluSphere(quad, 0.02, 8, 8);
+ glPopMatrix();
+ }
+
+ gluDeleteQuadric(quad);
+ }
+#endif
+
+ glDisable(GL_DEPTH_TEST);
+
+ /* only draw gesture in active area */
+ if (sketch->gesture != NULL /*&& area_is_active_area(G.vd->area)*/)
+ {
+ float gesture_rgb[3] = {0, 0.5, 1};
+ sk_drawStroke(sketch->gesture, -1, gesture_rgb, -1, -1);
+ }
}
int sk_finish_stroke(bContext *C, SK_Sketch *sketch)
@@ -2847,9 +2945,9 @@ int sk_finish_stroke(bContext *C, SK_Sketch *sketch)
if (sketch->active_stroke != NULL)
{
SK_Stroke *stk = sketch->active_stroke;
-
+
sk_endStroke(C, sketch);
-
+
if (ts->bone_sketching & BONE_SKETCHING_QUICK)
{
if (ts->bone_sketching_convert == SK_CONVERT_RETARGET)
@@ -2867,11 +2965,11 @@ int sk_finish_stroke(bContext *C, SK_Sketch *sketch)
// allqueue(REDRAWBUTSEDIT, 0);
}
-// XXX
+// XXX
// allqueue(REDRAWVIEW3D, 0);
return 1;
}
-
+
return 0;
}
@@ -2881,7 +2979,7 @@ void sk_start_draw_stroke(SK_Sketch *sketch)
{
sk_startStroke(sketch);
sk_selectAllSketch(sketch, -1);
-
+
sketch->active_stroke->selected = 1;
}
}
@@ -2900,7 +2998,7 @@ int sk_draw_stroke(bContext *C, SK_Sketch *sketch, SK_Stroke *stk, SK_DrawData *
sk_updateNextPoint(sketch, stk);
return 1;
}
-
+
return 0;
}
@@ -2908,9 +3006,9 @@ static int ValidSketchViewContext(ViewContext *vc)
{
Object *obedit = vc->obedit;
Scene *scene= vc->scene;
-
- if (obedit &&
- obedit->type == OB_ARMATURE &&
+
+ if (obedit &&
+ obedit->type == OB_ARMATURE &&
scene->toolsettings->bone_sketching & BONE_SKETCHING)
{
return 1;
@@ -2927,21 +3025,21 @@ int BDR_drawSketchNames(ViewContext *vc)
{
if (GLOBAL_sketch != NULL)
{
- sk_drawSketch(vc->scene, GLOBAL_sketch, 1);
+ sk_drawSketch(vc->scene, vc->v3d, GLOBAL_sketch, 1);
return 1;
}
}
-
+
return 0;
}
-void BDR_drawSketch(bContext *C)
+void BDR_drawSketch(const bContext *C)
{
if (ED_operator_sketch_mode(C))
{
if (GLOBAL_sketch != NULL)
{
- sk_drawSketch(CTX_data_scene(C), GLOBAL_sketch, 0);
+ sk_drawSketch(CTX_data_scene(C), CTX_wm_view3d(C), GLOBAL_sketch, 0);
}
}
}
@@ -3045,14 +3143,14 @@ static int sketch_select(bContext *C, wmOperator *op, wmEvent *event)
sk_selectStroke(C, GLOBAL_sketch, event->mval, extend);
ED_area_tag_redraw(CTX_wm_area(C));
}
-
+
return OPERATOR_FINISHED;
}
static int sketch_draw_stroke_cancel(bContext *C, wmOperator *op)
{
sk_cancelStroke(GLOBAL_sketch);
- MEM_freeN(op->customdata);
+ MEM_freeN(op->customdata);
return OPERATOR_CANCELLED;
}
@@ -3060,19 +3158,19 @@ static int sketch_draw_stroke(bContext *C, wmOperator *op, wmEvent *event)
{
short snap = RNA_boolean_get(op->ptr, "snap");
SK_DrawData *dd;
-
+
if (GLOBAL_sketch == NULL)
{
GLOBAL_sketch = sk_createSketch();
}
-
+
op->customdata = dd = MEM_callocN(sizeof("SK_DrawData"), "SketchDrawData");
sk_initDrawData(dd, event->mval);
-
+
sk_start_draw_stroke(GLOBAL_sketch);
-
+
sk_draw_stroke(C, GLOBAL_sketch, GLOBAL_sketch->active_stroke, dd, snap);
-
+
WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
return OPERATOR_RUNNING_MODAL;
@@ -3081,7 +3179,7 @@ static int sketch_draw_stroke(bContext *C, wmOperator *op, wmEvent *event)
static int sketch_draw_gesture_cancel(bContext *C, wmOperator *op)
{
sk_cancelStroke(GLOBAL_sketch);
- MEM_freeN(op->customdata);
+ MEM_freeN(op->customdata);
return OPERATOR_CANCELLED;
}
@@ -3089,18 +3187,18 @@ static int sketch_draw_gesture(bContext *C, wmOperator *op, wmEvent *event)
{
short snap = RNA_boolean_get(op->ptr, "snap");
SK_DrawData *dd;
-
+
if (GLOBAL_sketch == NULL)
{
GLOBAL_sketch = sk_createSketch();
}
-
+
op->customdata = dd = MEM_callocN(sizeof("SK_DrawData"), "SketchDrawData");
sk_initDrawData(dd, event->mval);
-
+
sk_start_draw_gesture(GLOBAL_sketch);
sk_draw_stroke(C, GLOBAL_sketch, GLOBAL_sketch->gesture, dd, snap);
-
+
WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
return OPERATOR_RUNNING_MODAL;
@@ -3111,7 +3209,7 @@ static int sketch_draw_modal(bContext *C, wmOperator *op, wmEvent *event, short
short snap = RNA_boolean_get(op->ptr, "snap");
SK_DrawData *dd = op->customdata;
int retval = OPERATOR_RUNNING_MODAL;
-
+
switch (event->type)
{
case LEFTCTRLKEY:
@@ -3139,31 +3237,31 @@ static int sketch_draw_modal(bContext *C, wmOperator *op, wmEvent *event, short
sk_filterLastContinuousStroke(stk);
sk_updateNextPoint(GLOBAL_sketch, stk);
ED_area_tag_redraw(CTX_wm_area(C));
- MEM_freeN(op->customdata);
+ MEM_freeN(op->customdata);
retval = OPERATOR_FINISHED;
}
else
{
sk_endContinuousStroke(stk);
sk_filterLastContinuousStroke(stk);
-
- if (stk->nb_points > 1)
+
+ if (stk->nb_points > 1)
{
/* apply gesture here */
sk_applyGesture(C, GLOBAL_sketch);
}
-
+
sk_freeStroke(stk);
GLOBAL_sketch->gesture = NULL;
-
+
ED_area_tag_redraw(CTX_wm_area(C));
- MEM_freeN(op->customdata);
+ MEM_freeN(op->customdata);
retval = OPERATOR_FINISHED;
}
}
break;
}
-
+
return retval;
}
@@ -3180,17 +3278,17 @@ static int sketch_draw_gesture_modal(bContext *C, wmOperator *op, wmEvent *event
static int sketch_draw_preview(bContext *C, wmOperator *op, wmEvent *event)
{
short snap = RNA_boolean_get(op->ptr, "snap");
-
+
if (GLOBAL_sketch != NULL)
{
SK_Sketch *sketch = GLOBAL_sketch;
SK_DrawData dd;
-
+
sk_initDrawData(&dd, event->mval);
sk_getStrokePoint(C, &sketch->next_point, sketch, sketch->active_stroke, &dd, snap);
ED_area_tag_redraw(CTX_wm_area(C));
}
-
+
return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH;
}
@@ -3200,9 +3298,9 @@ int ED_operator_sketch_mode_active_stroke(bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
ToolSettings *ts = CTX_data_tool_settings(C);
-
- if (obedit &&
- obedit->type == OB_ARMATURE &&
+
+ if (obedit &&
+ obedit->type == OB_ARMATURE &&
ts->bone_sketching & BONE_SKETCHING &&
GLOBAL_sketch != NULL &&
GLOBAL_sketch->active_stroke != NULL)
@@ -3219,9 +3317,9 @@ int ED_operator_sketch_mode_gesture(bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
ToolSettings *ts = CTX_data_tool_settings(C);
-
- if (obedit &&
- obedit->type == OB_ARMATURE &&
+
+ if (obedit &&
+ obedit->type == OB_ARMATURE &&
ts->bone_sketching & BONE_SKETCHING &&
(ts->bone_sketching & BONE_SKETCHING_QUICK) == 0 &&
GLOBAL_sketch != NULL &&
@@ -3239,10 +3337,10 @@ int ED_operator_sketch_full_mode(bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
ToolSettings *ts = CTX_data_tool_settings(C);
-
- if (obedit &&
- obedit->type == OB_ARMATURE &&
- ts->bone_sketching & BONE_SKETCHING &&
+
+ if (obedit &&
+ obedit->type == OB_ARMATURE &&
+ ts->bone_sketching & BONE_SKETCHING &&
(ts->bone_sketching & BONE_SKETCHING_QUICK) == 0)
{
return 1;
@@ -3253,13 +3351,13 @@ int ED_operator_sketch_full_mode(bContext *C)
}
}
-int ED_operator_sketch_mode(bContext *C)
+int ED_operator_sketch_mode(const bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
ToolSettings *ts = CTX_data_tool_settings(C);
-
- if (obedit &&
- obedit->type == OB_ARMATURE &&
+
+ if (obedit &&
+ obedit->type == OB_ARMATURE &&
ts->bone_sketching & BONE_SKETCHING)
{
return 1;
@@ -3277,12 +3375,12 @@ void SKETCH_OT_delete(wmOperatorType *ot)
/* identifiers */
ot->name= "delete";
ot->idname= "SKETCH_OT_delete";
-
+
/* api callbacks */
ot->invoke= sketch_delete;
-
+
ot->poll= ED_operator_sketch_full_mode;
-
+
/* flags */
// ot->flag= OPTYPE_UNDO;
}
@@ -3292,12 +3390,12 @@ void SKETCH_OT_select(wmOperatorType *ot)
/* identifiers */
ot->name= "select";
ot->idname= "SKETCH_OT_select";
-
+
/* api callbacks */
ot->invoke= sketch_select;
-
+
ot->poll= ED_operator_sketch_full_mode;
-
+
/* flags */
// ot->flag= OPTYPE_UNDO;
}
@@ -3307,12 +3405,12 @@ void SKETCH_OT_cancel_stroke(wmOperatorType *ot)
/* identifiers */
ot->name= "cancel stroke";
ot->idname= "SKETCH_OT_cancel_stroke";
-
+
/* api callbacks */
ot->invoke= sketch_cancel;
-
+
ot->poll= ED_operator_sketch_mode_active_stroke;
-
+
/* flags */
// ot->flag= OPTYPE_UNDO;
}
@@ -3322,12 +3420,12 @@ void SKETCH_OT_finish_stroke(wmOperatorType *ot)
/* identifiers */
ot->name= "end stroke";
ot->idname= "SKETCH_OT_finish_stroke";
-
+
/* api callbacks */
ot->invoke= sketch_finish;
-
+
ot->poll= ED_operator_sketch_mode_active_stroke;
-
+
/* flags */
// ot->flag= OPTYPE_UNDO;
}
@@ -3337,12 +3435,12 @@ void SKETCH_OT_draw_preview(wmOperatorType *ot)
/* identifiers */
ot->name= "draw preview";
ot->idname= "SKETCH_OT_draw_preview";
-
+
/* api callbacks */
ot->invoke= sketch_draw_preview;
-
+
ot->poll= ED_operator_sketch_mode_active_stroke;
-
+
RNA_def_boolean(ot->srna, "snap", 0, "Snap", "");
/* flags */
@@ -3354,16 +3452,16 @@ void SKETCH_OT_draw_stroke(wmOperatorType *ot)
/* identifiers */
ot->name= "draw stroke";
ot->idname= "SKETCH_OT_draw_stroke";
-
+
/* api callbacks */
ot->invoke = sketch_draw_stroke;
ot->modal = sketch_draw_stroke_modal;
ot->cancel = sketch_draw_stroke_cancel;
-
- ot->poll= ED_operator_sketch_mode;
-
+
+ ot->poll= (int (*)(bContext *))ED_operator_sketch_mode;
+
RNA_def_boolean(ot->srna, "snap", 0, "Snap", "");
-
+
/* flags */
// ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
@@ -3373,16 +3471,16 @@ void SKETCH_OT_gesture(wmOperatorType *ot)
/* identifiers */
ot->name= "gesture";
ot->idname= "SKETCH_OT_gesture";
-
+
/* api callbacks */
ot->invoke = sketch_draw_gesture;
ot->modal = sketch_draw_gesture_modal;
ot->cancel = sketch_draw_gesture_cancel;
-
+
ot->poll= ED_operator_sketch_mode_gesture;
-
+
RNA_def_boolean(ot->srna, "snap", 0, "Snap", "");
-
+
/* flags */
// ot->flag= OPTYPE_UNDO;
}
diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c
index 281f314a546..2913d1d13d9 100644
--- a/source/blender/editors/armature/poseobject.c
+++ b/source/blender/editors/armature/poseobject.c
@@ -64,7 +64,6 @@
#include "BKE_object.h"
#include "BKE_utildefines.h"
-#include "BIF_transform.h" /* for autokey TFM_TRANSLATION, etc */
#include "BIF_gl.h"
#include "RNA_access.h"
@@ -79,6 +78,7 @@
#include "ED_object.h"
#include "ED_mesh.h"
#include "ED_screen.h"
+#include "ED_transform.h" /* for autokey TFM_TRANSLATION, etc */
#include "ED_view3d.h"
#include "armature_intern.h"
@@ -443,6 +443,65 @@ void pose_select_constraint_target(Scene *scene)
}
+static int pose_select_constraint_target_exec(bContext *C, wmOperator *op)
+{
+ Object *ob= CTX_data_active_object(C);
+ bArmature *arm= ob->data;
+ bPoseChannel *pchan;
+ bConstraint *con;
+ int found= 0;
+
+ for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+ if (arm->layer & pchan->bone->layer) {
+ if (pchan->bone->flag & (BONE_ACTIVE|BONE_SELECTED)) {
+ for (con= pchan->constraints.first; con; con= con->next) {
+ bConstraintTypeInfo *cti= constraint_get_typeinfo(con);
+ ListBase targets = {NULL, NULL};
+ bConstraintTarget *ct;
+
+ if (cti && cti->get_constraint_targets) {
+ cti->get_constraint_targets(con, &targets);
+
+ for (ct= targets.first; ct; ct= ct->next) {
+ if ((ct->tar == ob) && (ct->subtarget[0])) {
+ bPoseChannel *pchanc= get_pose_channel(ob->pose, ct->subtarget);
+ if(pchanc) {
+ pchanc->bone->flag |= BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL;
+ found= 1;
+ }
+ }
+ }
+
+ if (cti->flush_constraint_targets)
+ cti->flush_constraint_targets(con, &targets, 1);
+ }
+ }
+ }
+ }
+ }
+
+ if(!found)
+ return OPERATOR_CANCELLED;
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, ob);
+
+ return OPERATOR_FINISHED;
+}
+
+void POSE_OT_select_constraint_target(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Select Constraint Target";
+ ot->idname= "POSE_OT_select_constraint_target";
+
+ /* api callbacks */
+ ot->exec= pose_select_constraint_target_exec;
+ ot->poll= ED_operator_posemode;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
/* ******************* select hierarchy operator ************* */
static int pose_select_hierarchy_exec(bContext *C, wmOperator *op)
@@ -453,6 +512,7 @@ static int pose_select_hierarchy_exec(bContext *C, wmOperator *op)
Bone *curbone, *pabone, *chbone;
int direction = RNA_enum_get(op->ptr, "direction");
int add_to_sel = RNA_boolean_get(op->ptr, "extend");
+ int found= 0;
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
curbone= pchan->bone;
@@ -469,8 +529,8 @@ static int pose_select_hierarchy_exec(bContext *C, wmOperator *op)
if (!add_to_sel) curbone->flag &= ~BONE_SELECTED;
curbone->flag &= ~BONE_ACTIVE;
pabone->flag |= (BONE_ACTIVE|BONE_SELECTED);
-
- // XXX notifiers need to be sent to other editors to update
+
+ found= 1;
break;
}
} else { // BONE_SELECT_CHILD
@@ -483,8 +543,8 @@ static int pose_select_hierarchy_exec(bContext *C, wmOperator *op)
if (!add_to_sel) curbone->flag &= ~BONE_SELECTED;
curbone->flag &= ~BONE_ACTIVE;
chbone->flag |= (BONE_ACTIVE|BONE_SELECTED);
-
- // XXX notifiers need to be sent to other editors to update
+
+ found= 1;
break;
}
}
@@ -492,6 +552,9 @@ static int pose_select_hierarchy_exec(bContext *C, wmOperator *op)
}
}
+ if(!found)
+ return OPERATOR_CANCELLED;
+
WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, ob);
return OPERATOR_FINISHED;
diff --git a/source/blender/editors/armature/reeb.c b/source/blender/editors/armature/reeb.c
index ea794b2c7c1..132d9edf8d0 100644
--- a/source/blender/editors/armature/reeb.c
+++ b/source/blender/editors/armature/reeb.c
@@ -3179,6 +3179,7 @@ static void setIteratorValues(ReebArcIterator *iter, EmbedBucket *bucket)
iter->p = NULL;
iter->no = NULL;
}
+ iter->size = 0;
}
void initArcIterator(BArcIterator *arg, ReebArc *arc, ReebNode *head)
@@ -3276,6 +3277,7 @@ static void* headNode(void *arg)
iter->p = node->p;
iter->no = node->no;
+ iter->size = 0;
return node;
}
@@ -3296,6 +3298,7 @@ static void* tailNode(void *arg)
iter->p = node->p;
iter->no = node->no;
+ iter->size = 0;
return node;
}
diff --git a/source/blender/editors/armature/reeb.h b/source/blender/editors/armature/reeb.h
index 3bdd55509ad..6a3a261cb10 100644
--- a/source/blender/editors/armature/reeb.h
+++ b/source/blender/editors/armature/reeb.h
@@ -126,6 +126,7 @@ typedef struct ReebArcIterator {
StoppedFct stopped;
float *p, *no;
+ float size;
int length;
int index;
diff --git a/source/blender/editors/curve/curve_intern.h b/source/blender/editors/curve/curve_intern.h
index 2146855a75e..34e81b60a16 100644
--- a/source/blender/editors/curve/curve_intern.h
+++ b/source/blender/editors/curve/curve_intern.h
@@ -84,7 +84,7 @@ void CURVE_OT_smooth_radius(struct wmOperatorType *ot);
void CURVE_OT_de_select_first(struct wmOperatorType *ot);
void CURVE_OT_de_select_last(struct wmOperatorType *ot);
void CURVE_OT_select_all_toggle(struct wmOperatorType *ot);
-void CURVE_OT_select_invert(struct wmOperatorType *ot);
+void CURVE_OT_select_inverse(struct wmOperatorType *ot);
void CURVE_OT_select_linked(struct wmOperatorType *ot);
void CURVE_OT_select_row(struct wmOperatorType *ot);
void CURVE_OT_select_next(struct wmOperatorType *ot);
diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c
index 66cde772f3e..45dc76d5488 100644
--- a/source/blender/editors/curve/curve_ops.c
+++ b/source/blender/editors/curve/curve_ops.c
@@ -53,10 +53,9 @@
#include "WM_api.h"
#include "WM_types.h"
-#include "ED_screen.h"
#include "ED_object.h"
-
-#include "BIF_transform.h"
+#include "ED_screen.h"
+#include "ED_transform.h"
#include "UI_interface.h"
@@ -140,7 +139,7 @@ void ED_operatortypes_curve(void)
WM_operatortype_append(CURVE_OT_de_select_first);
WM_operatortype_append(CURVE_OT_de_select_last);
WM_operatortype_append(CURVE_OT_select_all_toggle);
- WM_operatortype_append(CURVE_OT_select_invert);
+ WM_operatortype_append(CURVE_OT_select_inverse);
WM_operatortype_append(CURVE_OT_select_linked);
WM_operatortype_append(CURVE_OT_select_row);
WM_operatortype_append(CURVE_OT_select_next);
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index 5283aacf39e..c437f35c484 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -73,14 +73,13 @@
#include "ED_keyframes_edit.h"
#include "ED_object.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_types.h"
#include "ED_util.h"
#include "ED_view3d.h"
#include "UI_interface.h"
-#include "BIF_transform.h"
-
#include "RNA_access.h"
#include "RNA_define.h"
@@ -1067,7 +1066,7 @@ void CURVE_OT_spline_weight_set(wmOperatorType *ot)
/* api callbacks */
ot->exec= set_weight_exec;
- ot->invoke= WM_operator_redo;
+ ot->invoke= WM_operator_props_popup;
ot->poll= ED_operator_editsurfcurve;
/* flags */
@@ -1118,7 +1117,7 @@ void CURVE_OT_radius_set(wmOperatorType *ot)
/* api callbacks */
ot->exec= set_radius_exec;
- ot->invoke= WM_operator_redo;
+ ot->invoke= WM_operator_props_popup;
ot->poll= ED_operator_editsurfcurve;
/* flags */
@@ -1737,7 +1736,7 @@ void CURVE_OT_reveal(wmOperatorType *ot)
/********************** select invert operator *********************/
-static int select_invert_exec(bContext *C, wmOperator *op)
+static int select_inverse_exec(bContext *C, wmOperator *op)
{
Object *obedit= CTX_data_edit_object(C);
ListBase *editnurb= curve_get_editcurve(obedit);
@@ -1776,14 +1775,14 @@ static int select_invert_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void CURVE_OT_select_invert(wmOperatorType *ot)
+void CURVE_OT_select_inverse(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Select Invert";
- ot->idname= "CURVE_OT_select_invert";
+ ot->name= "Select Inverse";
+ ot->idname= "CURVE_OT_select_inverse";
/* api callbacks */
- ot->exec= select_invert_exec;
+ ot->exec= select_inverse_exec;
ot->poll= ED_operator_editsurfcurve;
/* flags */
@@ -4145,7 +4144,7 @@ void CURVE_OT_select_random(wmOperatorType *ot)
/* api callbacks */
ot->exec= select_random_exec;
- ot->invoke= WM_operator_redo;
+ ot->invoke= WM_operator_props_popup;
ot->poll= ED_operator_editsurfcurve;
/* flags */
@@ -4179,7 +4178,7 @@ void CURVE_OT_select_every_nth(wmOperatorType *ot)
/* api callbacks */
ot->exec= select_every_nth_exec;
- ot->invoke= WM_operator_redo;
+ ot->invoke= WM_operator_props_popup;
ot->poll= ED_operator_editsurfcurve;
/* flags */
diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c
index fa000034caf..d2668d21e52 100644
--- a/source/blender/editors/datafiles/blenderbuttons.c
+++ b/source/blender/editors/datafiles/blenderbuttons.c
@@ -1,5538 +1,5501 @@
/* DataToC output of file <blenderbuttons> */
-int datatoc_blenderbuttons_size= 177005;
+int datatoc_blenderbuttons_size= 175808;
char datatoc_blenderbuttons[]= {
-137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73,
- 72, 68, 82, 0, 0, 2, 88, 0, 0, 2,128, 8, 6, 0, 0, 0, 64, 11, 6,158, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215,
- 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 10, 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,
-114,111,102,105,108,101, 0, 0,120,218,157, 83,103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32,
- 82, 66,139,128, 20,145, 38, 42, 33, 9, 16, 74,136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140,
- 21, 81, 44, 12,138, 10,216, 7,228, 33,162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,
-172,243,157,179,207, 7,192, 8, 12,150, 72, 51, 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,
-112, 0, 16, 8,179,100, 33,115,253, 35, 1, 0,248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192,
- 48, 28,135,255, 15,234, 66,153, 92, 1,128,132, 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,
-157,152, 38, 83, 0,160, 4, 0, 96,203, 99, 98,227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148,
- 33, 21, 1,160,145, 0, 32, 19,101,136, 68, 0,104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45,
- 0, 48, 73, 87,102, 72, 0,176,183, 0,192,206, 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,
-120, 0,132,153, 0, 20, 70,242, 87, 60,241, 43,174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7,
- 87, 87, 46, 30, 40,206, 73, 23, 43, 20, 54, 97, 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145,
- 21, 17,224,131,243,253,120,206, 14,174,206,206, 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64,
- 0, 0,225,116,126,209,254, 44, 47,179, 26,128, 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,
-181, 0,160,233,218, 87,243,112,248,126, 60, 60, 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,
-194, 95,192, 87,253,108,249,126, 60,252,247,245,224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146,
- 9,132, 98,220,230,143, 71,252,183, 11,255,252, 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,
-165, 34,137, 66,146, 41,197, 37,210,255,100,226,223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246,
- 75, 39, 16, 88,116,192,226,247, 0, 0,242,187,111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,
-128,102, 73,146,113, 0, 0, 94, 68, 36, 46, 84,202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6,
- 28,193, 5,220,193, 11,252, 96, 54,132, 66, 36,196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29,
- 42, 96, 47,212, 64, 29, 52,192, 81,104,134,147,112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4,
- 65,200, 8, 19, 97, 33,218,136, 1, 98,138, 88, 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34,
- 75,145, 53, 72, 49, 82,138, 84, 32, 85, 72, 29,242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,
-148,129,178, 81, 61,212, 12,181, 67,185,168, 55, 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140,
- 54,161,231,208,171,104, 15,218,143, 62, 67,199, 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,
-177, 34,172, 12,171,198, 26,176, 86,172, 3,187,137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65,
- 72, 88, 76, 88, 78,216, 72,168, 32, 28, 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196,
- 24, 98, 50, 49,135, 88, 72, 44, 35,214, 18,143, 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164,
- 84,210, 18,210, 70,210,110, 82, 35,233, 44,169,155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,
-157,228,195,228, 51,228, 27,228, 33,242, 91, 10,157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,
-101,152, 50, 65, 85,163,154, 82,221,168,161, 84, 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131,
- 22, 73, 75,165,173,162,149,211, 26,104, 23,104,247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,
-232, 3,244,119, 12, 13,134, 21,131,199,136,103, 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84,
- 48, 55, 49,235,152,231,153, 15,153,111, 85, 88, 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,
-170,222,170, 11, 85,243, 85,203, 84,143,169, 94, 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27,
- 83,103,169, 59,168,135,170,103,168,111, 84, 63,164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198,
- 32, 11, 99, 25,179,120, 44, 33,107, 13,171,134,117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,
-161, 57, 67, 51, 74, 51, 87,179, 82,243,148,102, 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239,
- 41,226, 41, 27,166, 52, 76,185, 49,101, 92,107,170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189,
- 69,187, 89,251,129, 14, 65,199, 74, 39, 92, 39, 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174,
- 46,170,107,165, 27,161,187, 68,119,191,110,167,238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,
-253,109,250,167,245, 71, 12, 88, 6,179, 12, 36, 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195,
- 64, 67,165, 97,149, 97,151,225,132,145,185,209, 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38,
- 6, 38, 33, 38, 75, 77,234, 77,238,154, 82, 77,185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,
-215, 50,231,155,231,155,215,155,223,183, 96, 90,120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90,
- 57, 89,165, 88, 85, 90, 93,179, 70,173,157,173, 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,
-201,182,169,183, 25,176,229,216, 6,219,174,182,109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,
-253, 61, 7, 13,135,217, 14,171, 29, 90, 29,126,115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103,
- 88,207, 16,207,216, 51,227,182, 19,203, 41,196,105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,
-151, 62, 46,155, 27,198,221,200,189,228, 74,116,245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,
-238,135,220,159,204, 52,159, 41,158, 89, 51,115,208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,
-129,103,181,231, 35, 47, 99, 47,145, 87,173,215,176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222,
- 50,222, 89, 95,204, 55,192,183,200,183,203, 79,195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,
-103, 3,137,129, 65,129, 91, 2,251,248,122,124, 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,
-173,130,229,193,173, 33,104,200,236,144,173, 33,247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,
-126, 12, 39,133,135,133, 87,134, 63,142,112,136, 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103,
- 49, 79, 57,175, 45, 74, 53, 42, 62,170, 46,106, 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28,
- 57, 46, 42,174, 54,110,108,190,223,252,237,243,135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167,
- 22,169, 46, 18, 44, 58,150, 64, 76,136, 78, 56,148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103,
- 34, 47,209, 54,209,136,216, 67, 92, 42, 30, 78,242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,
-169,144,188, 76, 13, 76,221,155, 58,158, 22,154,118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,
-234,103,230,102,118,203,172,101,133,178,254,197,110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232,
- 84, 90, 40,215, 42, 7,178,103,101, 87,102,191,205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,
-237, 18,194, 18,225,146,182,165,134, 75, 87, 45, 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,
-172, 60,184,138,182, 42,109,213, 79,171,237, 87,151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85,
- 10,229,133,125,235,220,215,237, 93, 79, 88, 47, 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216,
- 40,220,120,229, 27,135,111,202,191,153,220,148,180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,
-230,151, 14,110, 13,217,218,180, 13,223, 86,180,237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,
-101,167,201,206,205, 59, 63, 84,164, 84,244, 84,250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,
-219, 91,188,247,253, 62,201,190,219, 85, 1, 85, 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,
-173, 78,109,113,237,199, 3,210, 3,253, 7, 35, 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,
-254,157,239,119, 45, 13, 54, 13, 85,141,156,198,226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225,
- 7,211, 31,118, 29,103, 29, 47,106, 66,154,242,154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,
-219, 31, 15,156, 52, 60, 89,121, 74,243, 84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,
-162,182,123,231, 99,206,223,106, 15,111,239,186, 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229,
- 19, 87,184, 87,154,175, 58, 95,109,234,116,234, 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,
-102,247,233, 27,158, 55,206,221,244,189,121,241, 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,
-114, 39,253,206,203,187,217,119, 39,238,173,188, 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,
-106,192,119,160,243,209,220, 71,247, 6,133,131,207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57,
- 57,226, 63,114,253,233,252,167, 67,207,100,207, 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,
-161,151,242,151,147,191,109,124,165,253,234,192,235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,
-220,119, 29,239,163,223, 15, 79,228,124, 32,127, 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252,
- 99, 51, 45,219, 0, 0, 0, 4,103, 65, 77, 65, 0, 0,177,142,124,251, 81,147, 0, 0, 0, 32, 99, 72, 82, 77, 0, 0,122, 37,
- 0, 0,128,131, 0, 0,249,255, 0, 0,128,233, 0, 0,117, 48, 0, 0,234, 96, 0, 0, 58,152, 0, 0, 23,111,146, 95,197, 70,
- 0, 2,168,136, 73, 68, 65, 84,120,218,236,157,119,120, 20,197, 31,198,223,217,221,235,119,233, 36, 33,133, 22, 58,132,150, 4,
-148, 94,165, 73, 17, 4, 5, 4, 21, 27,168,232, 15, 21, 1, 11, 2, 42, 96, 65,138, 10, 40, 22, 20, 4, 20,149,166, 72,147,222,
- 9, 82, 66,111,129, 52, 66, 18,210,175,223,238,252,254,200,221,121, 57, 46,185, 11,132,234,124,158,231,158, 43,187,251,222,236,
-238,204,236,187,223, 41, 75, 40,165, 96, 48, 24, 12, 6,131,193, 96, 84, 30, 28, 59, 4, 12, 6,131,193, 96, 48, 24,247,144,193,
- 34,132, 52, 97,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 6,203,251, 65,165,183,224, 68, 81,251,171,227,221,174,121,
- 11,247,157, 86,162,102, 71,187,230,228,123, 36,157, 29,239, 86, 77,199,254, 86,166,174,235, 49,172,172,227,233,146, 78, 90,217,
-233,188, 85,154,149, 93, 46, 43, 51,143,122, 56,239,147,239,145,116,118,188,219, 52,221,243, 79,101,232,122,202,147, 55,123, 60,
- 61,164,147, 86,118, 58,111,149,102,101, 95, 47, 43, 43,143,150,115,238, 43,237,218,116, 55, 35,220,105,131, 1, 0,148, 82,226,
-162, 79,238, 86, 77,215,227,224,208,175,204,180, 86, 34, 91, 43, 91,211,237,120, 86, 22,147, 41,165,132, 16,178, 13, 64,199,202,
-220,247,202, 56,239,110,251, 90, 41,186,183,210, 92, 85,102,190,191,213,154,149, 85,150,220, 53, 43, 35,223,123, 58,239,183,240,
- 28, 85, 86, 58, 43,165, 44,221,138, 60,239, 33,255,220,180,174,187,102,101,148, 37,119,205,202,200,247,183, 67,179, 50,202,146,
- 39,205,202,200,247,101,157,123, 22,193,186, 61, 70,192,189, 96,119,186,155,141,208, 45,142, 98,117,188, 23, 52, 43,249, 28, 77,
-182,107, 86,230,221, 76,167,202, 58, 71,238,121,167, 50,238,186, 92, 53, 43, 43,111,122, 72,231, 77,159, 39, 79,154, 55,155,222,
- 50,210, 89,233,251,126,179,249,254,118,105, 86,242, 57,170,148,178,228,166,217,169,146,111, 2, 58, 85,102, 89,114,213,172,172,
-178,228, 33,157, 55,125,158, 60,105,222,108,122,203, 72,103,165,239,123, 37, 70, 68, 43, 93,247,190,139, 96,221, 74,115,117, 43,
-204,155,227, 46,169,178, 47,100,149,105,178,110, 85,164,173,178,162, 56, 30,116,183, 85,162,220,214,202, 78,167, 61,125,228, 86,
- 24, 97, 74,233,100, 66,200,123,119,115,129,102,101,137,149,165,187,173, 44,121,202, 55, 55, 91,150,110,213,205,179,171,102,101,
- 25, 33, 15,251,126, 83,101,201,125,219,202, 40, 75, 94, 52,201,173,216,255,202, 46, 79,119, 35,119,205, 40,194, 91,208,191,135,
-222,138,168,216, 45,220,239,202, 76,103,167,123, 97,223,111, 69, 58, 9, 33,147,111,209,190,223, 43,199,148,149, 37, 86,150,238,
-186,178,228,150, 39, 59, 85, 86,100,168,178,111,164,220, 53, 43,179, 31, 82,101,230,209, 91,189,239,149, 89,150,110,197,185,191,
- 87,168,112, 4,235, 86,221, 29,223, 11,154,183, 66,251, 22,237,251,182, 91,113,119,112, 11,250,117, 85,122, 58, 41,165,147, 81,
-137, 77,142,142,125,174,204,180,222,202,102,194, 91,145, 55,111,101,126,175,204,126, 30,183,104,223,239,149,243, 94,233,233,172,
-172,178,228,225,156,223,116, 90, 61, 29,191,202,110,194,174,204,188,121, 43, 53, 43, 67,251, 86,164,243, 86,157,251,123, 9,194,
- 38, 26,101, 48, 24, 12, 6,131,193,168, 92,202,140, 96,197,197,197,173, 85,169, 84,117,202, 90,174,215,235, 51, 14, 31, 62,220,
-153, 29, 66, 6,131,225,245, 78,142, 16, 14,255,118, 73,144, 74,110,102,217,221, 29,131,193,248, 15, 26, 44,185, 92, 30,179,125,
-251,246,122,146, 36,193,102,179, 65, 20, 69,136,162, 8,155,205, 6,179,217,140, 71, 31,125,180,194,205,139,205,155, 55,223,206,
-113, 92,205,138,108, 35,138,226,229, 35, 71,142,180, 43,107,121,120,120,248,110, 0, 49,132, 16,215,202, 28,142,239,174,191,115,
-156,179,203, 89,122, 74, 74, 74, 92,121,154,132,144, 24, 87, 61,119, 45, 15,186,229,106, 54,104,208,224,160, 32, 8,209,158,182,
- 47, 75, 91,146,164, 11,199,142, 29,107,195,178,233,237,161,121,243,230,219,121,158,175,112,254, 60,124,248,112,153,249,179, 73,
-147, 38,255,112, 28, 23,233,233, 28,151,145,159,120, 81, 20, 79, 31, 57,114,164, 93, 89, 6, 36, 34, 34, 98, 55,165, 52,198,199,
-124,233, 32, 53, 37, 37, 37,193, 91, 57, 42, 47,157, 30,180,203,213,116, 53, 87, 81, 81, 81, 51, 66, 67, 67, 71,235,245,122, 35,
- 0,202,113, 28,109,212,168, 81, 41,125, 81, 20,179, 78,158, 60,201, 38, 47,100, 48, 24,247,183,193,146, 36,137, 51,153, 76, 56,
-115,230, 12, 60,213,243, 28,199,137, 21,253, 51, 74,105,189,205, 75, 23,135,169, 67,195, 33, 90,204, 80, 86, 9,115,106,231,157,
- 56, 6,209, 98,129,100,181,160, 74,194,131,142, 52,160, 83,167, 78,188, 23,217,232,177, 99,199,134,249,249,249,193,104, 52,194,
-104, 52,194,100, 50,193,100, 50,193,108, 54,195,108, 54,195, 98,177,192, 98,177,192,106,181,194,100, 50,225,216,177, 99,162,151,
- 11, 66,244, 43,175,188,226,212, 52,153, 76, 48, 26,141, 78, 45,147,201,228,212, 52,155,205, 48,153, 76, 56,126,252,120,185,154,
-130, 32, 68, 31, 58,116, 40, 76, 46,151,131, 82, 10, 73,146, 64, 41, 45,245,114, 59, 86,104,219,182,173,133,101,209,219, 74,189,
-149, 31,125, 24,166, 12,169, 2,201,106, 69, 72,243,120,231,185, 72,219,252, 23, 36,171, 21,146,213,138, 26,125, 7, 58,127,239,
-216,177,163,183,252, 89,227,215, 73, 19, 3,229,126,126,176, 25,141,168,213,103,128,115, 65,210,252, 89,160, 86, 43,168,205,130,
-166,175,189, 3, 0,200,206,206, 54, 52,108,216, 48, 29, 37,253, 20,202,138,240, 68, 95,188,120, 49,204,145, 6,119,163,206,113,
- 92,169,215,206,157, 59, 49,124,248,112,111,251, 30,253,246,219,111,135, 57,202,136,107, 94,183, 90,173,206,242, 99,179,217, 96,
-181, 90, 97, 54,155,241,207, 63,255,248, 20,185,138,136,136,248,168,125,251,246, 35,151, 44, 89,162,253,253,247,223,181,181,106,
-213,130, 92, 46, 7,207,243,224,121, 30, 28,199,129,231,121,244,239,223,159,176, 44,200, 96, 48,238,123,131,101,177, 88, 46,118,
-239,222,157, 2,128,217,108,142, 82, 40, 20,114, 55, 3, 22,217,182,109,219,211,238,219,121,107, 58, 84,135,134,227,187, 90,193,
- 0,128,193,231,115,156, 23,133, 21, 29, 90, 56,215, 25,122, 41,191,100, 93,181, 26, 28,199, 17, 47, 21, 56,116, 58, 29,186,119,
-239, 14,133, 66,129,248,248,120,200,229,114,200,100,178, 50, 95,190,160,213,106, 49,101,202, 20,135, 57,130, 86,165,196,139,237,
- 31,132,138, 80,124,119,228, 20, 76,162, 4, 65, 16, 32, 8, 2,100, 50,217,117, 17, 41, 79,200,229,114, 28, 59,118, 12, 60,207,
- 67, 16,132, 82,239, 60,207, 99,205,154, 53, 24, 52,104, 16,120,158,135, 70,163, 1,254, 67,157, 1,239, 22,148, 33, 85,240,107,
-199,146, 64,228, 19, 41,133,206,223,255, 26,210,215,249,121, 68, 90, 49, 8, 33,144,203,229,190,157,119, 63, 63,252, 57,168, 23,
- 0, 96,224,153,171,206, 60,115,116,214,135,144, 41, 20, 16,100,114, 52, 25,251, 54,178,179,179, 13, 3, 7, 14,220,169, 82,169,
-214,251,112,179,130,203,151, 47, 59,181,100, 50,217,117,249,158,227, 56,124,255,253,247,184,116,233,146, 79,251,110, 48, 24, 48,
-109,218, 52,231,190,121,210,117,253,236,109,223, 9, 33, 92,213,170, 85, 63,104,223,190,253,240, 37, 75,150, 4, 17, 66, 48,111,
-222, 60, 8,130,128,135, 31,126, 24, 33, 33, 33,216,176, 97, 3,228,114, 57,198,141, 27,199, 50, 31,131,193,248,111, 24,172,195,
-135, 15,247,114,124,126,240,193, 7, 79,238,220,185,179,129, 75, 40, 31, 54,155, 77,110,179,217,234, 57,154, 13,109, 54, 27, 76,
- 38, 19,134, 14, 29, 90,238, 29,189,104, 49, 95,103,144,202, 50, 78,190, 98, 54,155, 49,120,240, 96,167,137, 41,207, 92,249,120,
- 97,128,201,100,130, 32, 8,168, 93, 61, 20,239, 12, 78, 64, 91,158,194,144, 3, 32,187, 24, 79, 69, 8, 56, 28, 93, 15,159, 95,
-206,193,165,130, 34, 8,130,111,173,165,146, 36,149, 50, 84,238,159, 23, 44, 88,128, 33, 67,134,128,231,249,235,154,144, 24,183,
- 7,201,106,245,154, 15, 43,122,110,108, 70, 35, 0,128,119, 49,228, 50,153, 12, 10,149, 10,188, 76, 6, 65, 33, 71,118,118,182,
-225,161,135, 30,218,171, 86,171,127,168, 90,181,106, 90,106,106,106,185,249,147, 82, 10,153, 76, 6, 65, 16,202,204,243,223,127,
-255, 61, 22, 47, 94,140, 86,173, 90,249,148,231,205,102, 51,228,114, 57, 62,252,240,195,235,150,207,159, 63,255, 58,131,229, 69,
-143, 0,224,194,195,195, 95, 92,186,116,169,191,227,255, 67, 66, 66, 32,147,201, 16, 27, 27, 11, 63, 63, 63,236,220,185, 19,162,
- 40,250,108, 86, 25, 12,198,127, 22, 25,128,230, 0, 66, 1,136, 0, 10, 1, 4,186, 44,207,178,191,135,186,124, 63,224, 65,167,
-165,125, 29,199,114,199,119, 51, 0,133,135,223,115, 0,168,237, 47, 19,128,221, 0, 98, 93,254,199,177, 29,220,255, 87,176, 87,
-134, 29, 1,108, 5,208,201,211,228,119,142,230,194, 83,167, 78,193, 91,191, 84,111,195, 59,149, 85,194,156,145,171, 95,106,135,
- 56,127, 31,146,156,231,172, 96,255,108, 85, 23, 74,157, 22, 9,147, 63,241,122,196, 29, 23,134,171, 87,175, 94,119,231,125,163,
- 6, 11, 0,172, 86, 43,212,106, 37,182,124,213, 1, 25, 23,108,248,112,109, 10, 86,237,191, 8, 65, 16,208,167, 65, 93, 60,106,
- 3,102, 4,171,240,130, 77,132, 69,162, 62, 93,192, 40,165,215,153, 43, 87,147, 69, 8,113,254,198, 46, 54,119,134,144,230,241,
-206,200,213,146,106,126,215, 69,173, 0, 96, 85,139,154, 80,249,233, 16,251,234, 4,159,242,103,173, 62, 3,156,145,171, 63,226,
- 99, 32,200,229,144, 41, 21,120,244, 72, 10,128,146,102,193, 46, 77, 27,109,203,227, 21,139,158,124,242,201, 11,155, 55,111,214,
-248,146, 86,185, 92, 94,202,176,121, 50, 87,130, 32,192,234,102, 26,203,187,169, 40,203, 56, 57,202, 85, 69, 34, 88, 0,160,215,
-235,205,171, 86,173,194,231,159,127,142,144,144, 16,116,239,222, 29, 85,171, 86,197,138, 21, 43, 64, 41,197,203, 47,191, 12,181,
- 90, 13,181, 90,205,242, 60,131,241, 31,199,139, 23,233, 48,113,226,196,132, 25, 51,102, 76,107,221,186,245,178,221,187,119, 47,
- 37,132,172,117,241, 30,125,236, 26,107, 93,190,183,116, 51, 89, 50, 0,161,132,144,181,142,245, 93,191,187,252,222, 13,128,194,
-241,125,226,196,137,177, 51,102,204,152, 54, 97,194,132,183,166, 79,159, 46,159, 56,113, 98,211, 25, 51,102, 76,115,252,143,167,
-116,184, 70,176,202,157, 5,216, 98,177, 92,236,214,173,155, 79, 35,126, 12, 6,195, 21, 47, 6,204, 99,100,192, 53, 42,160,244,
-211, 65,237,231, 7,194,249, 86,225, 90,173, 86, 8,130, 0,142,227,176,113,227, 70,168,213,106,244,238,221,251,134,155, 8, 29,
-166, 77,161,144, 67, 8,228,240,228,103, 7,145,149,171,119, 54, 9,110, 74, 78,193,126,181, 26,239, 52,106, 10, 93, 81, 50, 10,
- 76,230,155,138, 96, 13, 25, 50, 4, 70,163, 17, 28,199, 57,127,227, 56, 14,255,165,103, 54,221,133, 5,221,227,119, 66, 8, 84,
-254,126, 80,233,116,224, 5,222, 39, 45, 74,233,191, 70, 72,161,128, 76,169,128, 32,151, 59,205,213, 67, 15, 61,180, 55,143, 87,
- 44, 74, 75, 75,219, 11, 64,229,171,193,114, 68,176,202, 51, 87,130, 32,192, 98,177,248,100, 94, 76, 38, 19,228,242,127,123, 2,
- 92,190,124,185, 92,131,229,101,159, 41, 33, 68, 34,132, 72, 49, 49, 49,206,109,194,195,195, 17, 24, 24, 8, 73,146, 32, 73, 18,
- 84, 42, 21,212,106,117,169,255,101, 48, 24,255, 89,202,243, 34,202, 25, 51,102, 76,115, 53, 48,238,134,198,213, 56,185,153, 40,
- 87,147, 22,235,165,238, 95,235,110,154, 28,255, 75, 8, 89, 59,125,250,244, 62, 94,210,145,229,110,176,202,157,102,223,181,185,
-176,178, 46, 94,229, 93,192,212, 1,254, 80,104,181,176,119,191,162,222,180, 44, 22,139,179,207,201,232,209,163,203,188,171,119,
-237,155,226, 13,179,217, 12,158,227, 1,101, 45, 72,216,231,188, 88, 57, 95,114, 57,146,171, 55, 3,185,146, 6, 65,240,173,191,
-191, 35,130,229, 48, 81, 47,191,252, 50, 22, 46, 92,232,236,152, 12, 0, 60,207,163,126,253,250, 56,127,254, 60, 43,106,119, 0,
- 74,169,215,102,107,149,191, 31,148, 58, 29,120, 31, 34,141,142,229,206, 62, 76, 42, 37,120,185, 28,130,188,164, 89,176, 95,191,
-126,219,242,242,242, 22, 53,110,220,248, 44, 74,166, 49, 32,190,150, 31, 79,249,124,209,162, 69,165,204, 85, 69, 34, 88,142,114,
-228,138,167,230,194,129, 3, 7,250, 26,193,162,132, 16, 42,147,201,208,173, 91, 55, 52,109,218, 20,171, 86,173,130, 36, 73,120,
-233,165,151,160, 86,171, 49,123,246,108,216,108, 54,204,152, 49,131, 69,176, 24, 12, 70,121, 94,196, 48, 97,194,132,183, 8, 33,
-107,237,145,164,164,114,140,148, 39, 90,186,153,180,172, 50,174, 1,125, 60,153, 44,215,207, 14, 38, 78,156, 24,235, 33, 29, 7,
-174, 51, 88, 46,174,241,150,146,119,226,152,179, 67,187,163, 89,144, 16,130,191,218, 52,128, 66,167,133, 74,167, 67,187,149, 59,
-156,119,205,248, 96,166, 79, 17, 44,135,113,202,201,201,241,218, 68,232,107, 84,140,151,203,176, 87, 39, 3,149,241,165, 46, 88,
- 50,153, 12,156, 32, 67,114,104, 61, 16, 97, 3, 4,209,230,211,197,193, 17,201,112, 29, 61,245,228,147, 79,130,227, 56,167,201,
-106,209,162, 69,169,188,198,138,219,237, 37,253,239,245, 88,247,120, 73, 89,117,109, 22, 92,219,170, 14,148,126, 58, 40,181, 90,
-116, 92,179,219,217,156,139,217, 95,123,213, 60,245,237,151, 72,154, 51, 29,130, 76,134, 1,135,146,157,145,171,182, 13,234,238,
- 53,107,253, 23, 93,190,124,121, 47, 0,238,241,199, 31, 15,140,139,139,227,125,172,132, 74,117, 60, 23, 4,193,163,185, 18, 4,
- 1, 54,155,205,167,125,183, 88, 44, 62, 69,146, 28, 81, 44, 31,242, 59,109,216,176, 33,120,158, 71, 64, 64, 0,252,252,252,156,
- 35,104, 29,145, 43, 71,255, 77, 95,203, 37,131,193,184,239,111,114,203,242, 34,166,233,211,167, 39, 77,159, 62,221, 25, 73,114,
-143, 96,149,193,195,118, 51, 21,234, 48,103, 40,233, 75,117,160,156, 52,244, 41,203,120,185,254, 54, 99,198,140,105, 30,210,225,
-108,150,244,216, 59,187,121,243,230,235, 52, 26, 77, 45, 95, 15, 72, 69, 38, 29, 21, 45,150,235,238,196, 9, 33, 80,233,116, 80,
-248,233,160,212,233,202,140,114,149,117,161,113, 52, 17,242, 60,239,188,232,252,240,195, 15,208,233,116,120,250,233,167,111,168,
-147,123,137,193,226,177, 90,126, 6,144, 11,215, 93,180,120,153, 12,151, 3,170,129,147,201, 32,136,190, 69, 8,242,243,243,193,
-243, 60,222,123,239, 61,204,152, 49,195, 57,140,222,117,104,189,107,212,131,113,251,113,237,228, 94, 42,170,234,231,231,204,159,
-174,191,123,235,147, 72, 8, 1, 68, 91,201,104, 65,165,194,105,174,250,245,235,183,205,172,245, 95,212,160, 65, 3, 71,228,138,
-211,104, 52, 94, 71,205,186,150, 13,135,209,113, 55, 87,142, 40,169,227,179,213,106,245, 41,207, 59, 12,214,194,133, 11,203,189,
- 25,113,252,175,175,249,148,227, 56,108,223,190, 29,135, 14, 29,194,232,209,163,161, 86,171, 49,119,238, 92,216,108, 54, 76,157,
- 58, 21,106,181, 26, 10,133,130,101, 62, 6,131, 81, 30, 65, 14,131, 99, 55, 73,165, 34, 75,148,210, 62,174, 38,168,172,166, 66,
-123,196,105,187,151,255,250,195,110,204, 60,226,136,164,185,213,161,107,221,205,153,224,112,140,174,239, 10,133,162,214,174, 93,
-187,234, 73,146, 4, 81, 20, 81,222,187,217,108,198, 99,143, 61,230,243,164,163,146,181,196, 96,113,110, 35,229,148,254,126, 80,
-232,254,189,128,185, 92,196,188,214,226,142, 8,150,171,193,122,239,189,247, 32, 8, 2, 22, 46, 92, 8, 0,120,227,141, 55, 42,
- 28,193,162, 18,176, 91,220,138,200,121,205, 64, 23,169,144,185,253, 36,100, 50, 25,170,182,122, 8, 82,194,163,200, 81,248, 67,
-107,239, 87,229, 75,179, 99, 78, 78, 14, 46, 93,186, 4, 66, 8, 94,123,237,181,114,205,213,198,141, 27, 89, 31,172, 59,104,176,
- 56,158, 47,117, 62, 92,243,167,155,249,242,222, 78,102,179, 65,166, 84,150, 26, 45,152,151,151,183,232,242,229,203,251, 0,144,
-225,195,135, 7,106, 52, 26,124,251,237,183,122, 0,242,149, 43, 87,170,189,105,186,246,227,115,143, 92,185, 27, 44, 81,244,222,
-132,237,184,169,240, 37,218, 91, 17,131,229,200,223,132, 16,136,162,232,140, 92, 89,173, 86,231,119,165, 82,201, 50, 30,131,193,
-240,246, 92,209, 44,183,126, 78,196, 45,210,148,229,201, 88,185, 54, 7,186,124,182,122,208, 53,187, 53, 29,186,255,238,120,207,
-153, 62,125,250, 22, 71,228,202,229,247, 82,233, 40, 51,130,197,113, 28, 76, 38, 19, 78,156, 56,225,235, 29,170,207,147,142,134,
-196, 63,128,161,151,242, 65, 8,193,134,246,141,161,210,233, 32,215,105,209,230,215,173,206, 10, 59,121,198, 56,200,181, 58,132,
-180,123,200,167, 10, 92, 20,197,235, 12, 86, 94, 94, 30,100, 50, 25, 62,248,224, 3,112, 28,135,143, 62,250, 8, 81, 81, 81,200,
-200,200, 64,199,142, 29,125,186,216,112, 18, 7,213, 83,193, 80,189,224, 7,110,116, 29,196,246,125, 1,249,133, 53,113,212,172,
- 69,195,226, 51, 8,250,123, 50, 44,146,205,167,105, 26, 8, 33,176,217,108,216,178,101, 11,100, 50, 25,108, 54,155,243,226, 67,
- 41,117,206,146,239,152,212,241,163,143, 62, 98,165,237, 14, 80,237,225, 71,240,100,186, 30, 0,176,174, 77, 3, 40,181, 90, 40,
-252,116,104,247,251,118,103,254,188, 48,237,117,200,181, 58, 4,182,108,239,147,102,163,151,222, 64,195, 23, 95, 71,118,118,182,
-161, 91,139,216,237,249,188,242,251, 38, 77,154, 56,251, 92,105, 52, 26,168, 84, 42,226,136,100,249,106, 90, 56,142,243,106,174,
- 28,159,125,189,169,112, 31,133, 91,158,193,242, 21,142,227,240,244,211, 79, 35, 34, 34, 2,159,127,254,121,169,200,213, 91,111,
-189, 5,171,213,138,217,179,103,179,204,199, 96, 48,202,227, 64, 5,214,109,233, 98,150, 14,220,160,238,129,155, 77,176,199,154,
-215,100, 50, 37,119,237,218, 21,101, 44,139, 82, 42,149,165,106, 87,199,164,163,238, 77,133,132,144, 38,148,210, 99,110, 14,245,
-223,102, 65,123,103, 97,133, 91,179,139, 66,231, 7,153, 86, 7,206, 67, 37,238, 73,211, 83, 4,203,209,116,146,159,159, 15,153,
- 76,134,207, 63,255, 28,254,254,254, 48,153, 76,158, 58,216,123,212,228,121, 30,250, 75,122, 92,124,247, 40,148,218,115,168,255,
-144, 31,252,100,231, 81,119,199, 74,216,108,102,192,165,201,208, 23,205,250,245,235,227,189,247,222,187,110,122,134,178,136,143,
-143,247,170,121,179, 48, 77,207,154,132, 16, 40,253,116, 80,249,249,149,153, 63, 5, 15,115, 55,185,107, 58,150, 59, 34, 87, 69,
-114,205,247,151, 47, 94,220, 7,128, 27, 62,124,120,128, 70,163,193,130, 5, 11,244, 0,184,247,223,127, 95, 83,163, 70, 13,222,
-151,116,114, 28,135, 31,126,248,225,186, 62, 87,101, 25, 44, 95,210,105,179,217,174, 51, 88,131, 7, 15,190,110,162,209,178, 34,
- 88,158,210,233,232,171, 86,165, 74, 21,104, 52, 26,231, 99,183, 84, 42, 21, 84, 42,149,115,118,248,178,154, 90, 89,254,100,154,
- 76,243,191,163,121,135,204,216, 45,195,163,193,250,231,159,127,122,150,181, 65,219,182,109,207,236,218,181,171,174,235,179, 9,
-109, 54,155,220,100, 50,213,235,223,191,191,215, 91,101, 73,146,160, 84, 42, 65, 41, 69,243,119,102,148,220,194,115,255, 54, 9,
- 82, 74, 17,216,182, 27, 8,207, 67, 20, 37, 88,173, 86,175,163, 8,141, 70, 99,169, 14,232,158,134,175, 23, 21, 21,149, 59,207,
-143,187,166,193, 96, 40,213,175,139,136, 20, 23, 54,173,184,126, 52,161,253,127,124, 69,165, 82,149,106, 54,241,150, 20,118,211,
-114,123,113, 76,224, 73, 41, 69,236, 43, 19, 74, 34, 69, 60, 87,106,121, 64,203,246, 32,130, 12, 82, 73,191, 37,111, 3, 67, 72,
- 86, 86,150,161, 95,191,126,219, 40,165,223,245,239,223,255, 52, 74, 58, 88, 82,157, 78,167,148,201,100, 18,128,107, 0,104,110,
-110,110, 64, 90, 90,154,100, 52, 26,171,123, 75,231,246,237,219,113,238,220, 57,196,197,197, 57, 35,159,142,151,163,249,254, 70,
- 34, 88,158,102,132, 47,107, 38,247,138, 68,176, 2, 2, 2,160, 80, 40,240,193, 7, 31, 64, 46,151, 67,173, 46,105, 5,157, 61,
-123,182,243,152, 51, 24, 12,198,253, 68,133, 31,216, 44, 73, 18, 95, 86,243,161,183,166, 66, 81, 20, 83, 31,120,224,129,138,254,
- 95,166,151, 11, 98,234,142, 29, 59,228,238, 15,164,245,244, 0, 92,151,223,188,106, 30, 56,112, 64, 94,206,246,158, 62,103, 86,
-100,223,125,233,191, 98,179,217,210, 88, 22,189,125,216,108,182,212, 86,173, 90,121, 94,248,222, 71,101,157,215, 76, 47,166,229,
-108,189,122,245,210,117, 58,221, 31,225,225,225, 57,187,118,237, 10,105,217,178,101,136,235, 58, 45, 91,182,140,112,219,204,140,
-114,166, 39, 33,132,164, 62,249,228,147,114, 47,249,209,253,115,170,151,155,138,212,164,164, 36,185,167,252, 94,214, 59,165, 52,
-213,135,195,122,169, 87,175, 94,156,167, 50,228,225, 88,102,177, 92,200, 96, 48,254,179, 6,203,104, 52,166,116,237,218,213,227,
-184,111,189, 94,127,185,188,109,147,146,146, 18, 42,123, 7, 82, 83, 83,219,220, 11,154,183, 98,223, 25,119,255, 57, 74, 74, 74,
-106, 85,217,154,151, 47, 95,110,115, 47,104, 2,192,241,227,199, 91,179,156,197, 96, 48,152,193,242, 1, 95,167, 99, 96, 48, 24,
- 12, 6,131,193,248,175,194,177, 67,192, 96, 48, 24, 12, 6,131, 81,185, 16, 0, 77, 60, 45,168,200,232, 0, 66, 72,147,138,254,
-177, 55,125,166,201, 52,153, 38,211,100,154, 76,147,105,222,127,154,222,180,239,226,209,137, 21, 51, 88,222,102,162,190, 41,113,
- 54,132,149,105, 50, 77,166,201, 52,153, 38,211,100,154,255, 65, 88, 19, 33,131,193, 96, 48, 24, 12, 70, 37, 35,176, 67,112,103,
- 32,132,240,148, 82,177, 18, 37, 3, 1,148,245, 64, 55, 51,128,188, 27,212, 85, 0,144,217, 95, 64,201, 35, 6,172,118, 77, 6,
-131,113, 31,145,144,144, 48,146, 82,250, 97, 73, 21, 69, 62, 56,120,240,224, 23,236,168, 48, 24,149,108,176,234,212,169,115,144,
-227,184,104, 79, 15, 32, 46,107, 94, 28, 81, 20, 83, 79,158, 60,233,211, 80,119, 66,136, 16, 17, 17, 49, 88,171,213,118,230,121,
-190,173,125,251, 93,197,197,197, 91, 50, 50, 50,126,161,148,218,110,100,135, 98, 98, 98,252,141, 70,227, 99,132,144, 97, 0, 64,
- 41,253, 73,165, 82,253,124,225,194,133,130, 27, 52, 66,117,170, 86,173,250,147, 76, 38,227, 83, 82, 82, 58, 3, 64,181,106,213,
-182,152,205,102,241,234,213,171,195, 40,165,231, 42,168,199,201,229,242, 25,237,219,183,111, 71, 8,249,145, 82, 58,191,146,206,
-165,146,227,184, 75,158, 22, 72,146, 84,227, 6,244,228, 0, 2,102,207,158, 29,188,120,241,226, 22, 25, 25, 25, 77, 1, 32, 34,
- 34,226,232,240,225,195,255,249,223,255,254,119, 13, 64, 62, 0, 11, 43, 70,247, 54,245,234,213, 59,200,113, 92,116, 69,230,146,
-179, 63,162, 42,245,248,241,227, 9,101,105,242, 60, 31,237,101, 62,186,235, 62, 75,146,116, 33, 41, 41,201,227,148, 17,245,235,
-215,223,195,243,124, 45,111,105,243,148,206,178,166,224,168, 95,191,254, 65,158,231,163, 43,170, 41, 73,210,133, 99,199,142,181,
-169, 76,205,219,157, 78, 0,232,212,169,147,178,184,184,248, 39,157, 78,215,172,184,184,120, 36,165,116,210,214,173, 91,195, 57,
-142, 67,183,110,221, 38, 37, 36, 36, 92, 84, 42,149,243,140, 70,227, 63, 58,157,110,232,214,173, 91, 77,172,196, 48, 24, 55,105,
-176, 56,142,139, 62,116,232, 80,152, 86,171,133,221,168,192, 49,123,187, 36, 73,206, 23,165, 20,148, 82,216,108, 54,116,234,212,
-201,167, 63,141,142,142,110, 82,191,126,253, 21, 47,191,252,114,245,190,125,251, 42,194,195,195, 65, 8,193,149, 43, 87,234,173,
- 93,187,246,137,207, 63,255,252,189,232,232,232, 65,169,169,169,190,118,148,227, 34, 34, 34,186, 2,120,170, 73,147, 38, 3,223,
-120,227, 13,121,219,182,109, 33,138, 34,254,254,251,239,246,179,102,205,250, 60, 50, 50,242, 55, 0,139, 50, 50, 50, 54, 83, 74,
- 37, 31,117, 91,212,170, 85,235,231,237,219,183,215, 74, 78, 78, 22, 7, 12, 24,240, 35, 0,236,218,181,171, 25,165,148,180,109,
-219,118, 29, 33,228, 49, 74,233, 63, 21, 56,230,253,199,140, 25, 51,232,165,151, 94, 10, 29, 57,114,228,112, 0,243,237,255,229,
-120,200,101, 69, 59,197, 57, 35, 87,148, 82,121, 57,235,133, 87, 32,146,165,189,112,225, 66, 96,219,182,109, 95,186,122,245,234,
- 88, 87,221,204,204, 76, 28, 62,124,216,242,209, 71, 31,205,218,181,107,215,151, 49, 49, 49,121, 0,138, 89, 81,186,119,225,121,
- 62,234,224,193,131, 97, 26,141,198,249, 32,119,215,114,238, 40,227,174, 89,147, 82,138, 14, 29, 58,148,167, 25,157,152,152, 24,
-166, 86,171,157,117, 71,121,122, 46,154,150,114,234,164, 26, 7, 14, 28, 8,211,104, 52,160,148,122,213, 35,132,128, 82, 90,238,
-179, 71, 29,233, 84,169, 84, 62,105, 58,104,219,182,173, 88, 89,154,142,116,182,110,221,154,150,167,121,232,208,161, 48,199, 83,
- 48, 42,144,206,114,111,128,138,139,139,127,250,229,151, 95, 6,132,135,135,163,127,255,254, 27, 26, 55,110,172,208,104, 52, 88,
-183,110, 29,162,163,163,171,248,251,251,255, 57,125,250,116,204,156, 57,179,250,198,141, 27,151, 2, 24,192, 74, 12,131,113,243,
- 6, 11, 90,173, 22,203,150, 45,243,248,248, 25,247,207, 53,106,248, 22, 36,169, 90,181,106, 66,205,154, 53,183,173, 92,185, 82,
- 29, 22, 22,230,252,221, 98,177,192,223,223, 31, 79, 63,253,180,162, 91,183,110,117,159,120,226,137,189, 85,171, 86,237,120,229,
-202,149,131,229,233, 69, 68, 68, 12,140,141,141,253, 98,236,216,177,225,253,250,245, 67, 80, 80, 80,169,229,125,250,244, 65,239,
-222,189,229, 23, 46, 92, 24,242,203, 47,191, 12,249,241,199, 31,175, 68, 68, 68,140,201,200,200,248,173, 92,135,161,213,118,107,
-222,188,249,183,155, 55,111,142, 14, 12, 12, 68,100,100, 36,247,238,187,239, 54,169, 93,187,182, 58, 34, 34,130, 75, 79, 79,199,
-111,191,253, 86,123,248,240,225,171, 84, 42,213, 72,163,209,184,217, 7,195,166, 8, 14, 14, 30,247,194, 11, 47,132, 20, 22, 22,
-218, 14, 29, 58,116,206,241,187, 82,169,156,244,224,131, 15,198, 17, 66,150, 83, 74, 23,221, 72,228,138, 82, 90,128,127,155,242,
- 28, 88, 29,203,125,140,100, 41, 14, 29, 58, 20,212,182,109,219,223, 77, 38, 83,220,179,207, 62,155,246,201, 39,159, 40,252,253,
-253,253, 1,144,188,188,188,220, 41, 83,166,136,115,231,206, 29,223,184,113,227,174,187,118,237, 26, 16, 23, 23,199,154, 12,239,
-113, 52, 26, 13,214,172, 89,227,241, 49, 83,158,202,124, 96, 96,160,215,167, 17,168,213,106,108,220,184,209,185,157,235,163,165,
- 60,125, 14, 12, 12, 4,165,180, 92, 81,149, 74,133,157, 59,119, 58, 31, 3, 84, 86,189,228,120,215,104, 52, 32,132,112,222, 52,
-183,109,219,230, 85,203,241,174,211,233, 0,128,247, 37,157,222,246,217,241, 89,171,213,122, 61,158, 74,165,210,169,233,170, 81,
-214,119,251,205, 49,241,114,142,154,133,135,135, 99,223,190,125,152, 60,121,178, 34, 54, 54, 22,103,206,156, 1,199,113, 24, 57,
-114, 36, 26, 55,110,140, 43, 87,174,160,113,227,198,216,185,115,103, 11, 86, 82, 24,140, 74, 48, 88, 14,202,170, 96,221, 63, 59,
-238,196,220,238, 72, 75, 69,160,106,214,172,169,212,233,116,191,174, 89,179, 70, 29, 18,242,239,211, 66,204,102, 51, 10, 11, 11,
- 81, 84, 84,132,194,194, 66,104,181, 90,204,155, 55, 79, 61,108,216,176, 95,107,214,172, 89, 47, 57, 57,217, 84,150, 38, 33,100,
-214,225,195,135,195,109, 54, 27, 20, 10, 69,153,102,177, 78,157, 58, 24, 51,102, 12,218,181,107, 87,117,200,144, 33,179, 0,252,
- 86,150,166,221,184,125,185,107,215,174,104,133, 66,129, 51,103,206, 32, 53, 53, 21,163, 70,141,170, 33, 73, 18, 82, 82, 82,112,
-230,204, 25,164,167,167,227,235,175,191,142, 30, 54,108,216, 60, 0,117,203,219,119, 59,207,189,246,218,107,117,131,130,130,184,
- 79, 62,249, 36,191,168,168,232,107,251,239, 19,103,207,158, 61,180, 99,199,142,161,207, 62,251, 44, 37,132, 44,163,148, 94,103,
- 88,220, 52, 61, 69,174, 68, 74,233, 73,183,205, 26,186, 69,182,194, 81,242, 44,188,124, 15,154, 4,128,127,207,158, 61, 95, 55,
-153, 76,113, 59,118,236, 56,215,174, 93,187, 26, 0, 50, 40,165, 89, 0, 16, 20, 20,164,157, 51,103, 78,120,159, 62,125, 78,119,
-235,214, 45,174,103,207,158,175,103,101,101,125, 8, 32, 27,246,199,187,220,138,145, 37, 76,243,214,105,218,155,146, 32, 8, 2,
-122,245,234, 5, 66,136,199,231,109,238,217,179, 7, 93,187,118,133, 76, 38,195, 51,207, 60,227,179,102,143, 30, 61, 96,179,217,
-174,211,115, 55, 32,142,103,116,150,183,239,148,210, 82,207, 8,245,100, 46, 92, 95,238,122,158, 52, 37, 73,242,168, 85,150,201,
-114, 60,172,222,151,125,247,213, 92,122, 75,167,171,166, 76, 38, 67,155, 54,109,112,232,208,161,114,205,150,183,116,218, 35, 88,
- 79,245,239,223,127,195,168, 81,163, 84, 0,144,157,157, 93,234, 65,244,167, 78,157,130,201,100,194,146, 37, 75, 96, 50,153, 70,
-179,114,196, 52,111,165,166, 55, 59, 2,160, 57,128, 80, 0, 34,128, 66,251,117,208,108,191, 22,230, 0, 80,219, 95, 38, 0, 69,
- 0,170,216,183,205,182, 95,223, 92, 31, 83,150,133,210, 15,133,110,105,215,118, 60,178, 43,212,101,153,227, 63,220,191,187,191,
-151,210,230,236,133,151,218, 95, 29,221,195,214,190,152, 43, 71,229,232,195, 9,121,121,226,196,137,225,174,230,202,100, 50,161,
-160,160, 0,133,133,133,206,247, 51,103,206, 64,161, 80, 96,240,224,193,225,148,210,151,189,200,202,121,158,199,161, 67,135,176,
-114,229, 74, 92,188,120,241,186, 21,206,159, 63,143, 57,115,230, 96,230,204,153, 40, 40, 40, 0, 74,250, 23,121,164,121,243,230,
-147,135, 13, 27,182,183, 83,167, 78, 74, 65, 16,112,248,240, 97,212,171, 87, 15,187,119,239,198,229,203,151,145,155,155,139, 83,
-167, 78,161, 73,147, 38, 56,119,238, 28, 10, 10, 10, 16, 27, 27,171,140,143,143,223, 81,179,102,205,201,229, 68,175,228, 81, 81,
- 81,111,189,240,194, 11,202,140,140, 12,233,135, 31,126,216, 69, 41,221, 77, 8, 25,245,246,219,111,143,232,209,163, 71,232,201,
-147, 39, 11, 14, 28, 56,112,208,147,185, 42, 35,114,117,153,227,184, 75,148,210, 2, 74,169, 1, 37,157,207, 75, 93,140,108, 54,
-155,201, 96, 48,228,231,228,228,100,115, 28,119,137,227,184, 51, 0,148,101,105, 14, 31, 62,188,118,118,118,246, 75,255,251,223,
-255, 46,182,107,215,174, 6,165,244, 20,165, 52,199,158, 97, 77, 54,155, 45, 39, 47, 47,239,116,219,182,109, 35,134, 14, 29,122,
- 46, 59, 59,251,165,225,195,135,215, 46, 71,147,113,247, 67, 69, 81,132, 76, 38,195,214,173, 91,177,115,231, 78,236,220,185, 19,
-187,118,237,194,238,221,187,177,103,207, 30,236,217,179, 7,130, 32, 96,247,238,221,216,189,123, 55,198,140, 25,227,181,204,139,
-162, 8, 65, 16,176,109,219, 54,236,223,191,223,249, 58,112,224, 0,246,239,223, 15,181, 90,237,213, 12,185,149, 33,167,166,167,
-215,151, 95,126,233, 52,135,142,186,137,227,184,114,163, 98,238,198,197,221,176,212,168, 89,243,186,101,222,210,233, 48,109,130,
- 32,224,155,111,190, 65, 90, 90, 26, 62,255,252,115,156, 63,127, 30, 31,127,252, 49,146,146,146, 48,117,234, 84, 28, 56,112, 0,
- 19, 39, 78,196,142, 29, 59, 28, 15,127,167,222, 52, 29,230,202, 98,177, 56,211,115,234,212, 41, 76,155, 54, 13,135, 15, 31,198,
-164, 73,147,176,103,207, 30,140, 27, 55, 14, 60, 95,110,144, 13, 9, 9, 9, 35, 9, 33,191,212,175, 95, 95,217,165, 75, 23, 8,
-130,128,105,211,166, 73,147, 38, 77,186,250,246,219,111, 95, 93,187,118, 45,173, 93,187, 54,204,102, 51,252,252,252, 64, 41, 93,
-148,144,144,240, 50, 43, 46,140, 91,133, 39, 47,226, 66,135,137, 19, 39,118, 33,132,172,109,211,166,205,112, 0,129,132,144,181,
- 0, 20,246,247,144,137, 19, 39,182, 34,132,172,157, 56,113, 98, 2,128, 42,132,144,181,246,239,157, 1,132, 56,190,219,215, 15,
-117, 51,111,161, 46,191,135,186,173,171,240,244,221,253,221, 93, 91,112,185, 24, 19,123, 1, 39,174, 21,100, 69, 12,150,183, 10,
- 87,167,211,245,238,217,179,167,220,213, 92,185, 70,174, 28,239,133,133,133, 56,125,250, 52,154, 52,105, 34,215,233,116,189, 1,
-124,234, 53, 20, 39, 8,136,140,140, 68,118,118, 54,142, 29, 59,134, 26, 53,106,192,106,181, 98,253,250,245,200,203,203,131, 92,
- 46,135, 92, 46,135,217, 92,190,119,105,216,176, 97,175,197,139, 23, 39,252,248,227,143,185,130, 32,224,212,169, 83,248,233,167,
-159, 64, 41, 69,149, 42, 85,160,215,235,113,245,234, 85,204,154, 53, 11, 22,139, 5, 58,157, 14, 81, 81, 81,170,151, 95,126,185,
-221,148, 41, 83,100, 0,202, 50, 89, 15, 12, 28, 56,208,223,207,207, 15,175,190,250,170,100,177, 88,102, 18, 66, 30, 28, 56,112,
-224, 91, 99,198,140, 9, 78, 78, 78, 54, 63,247,220,115, 7, 45, 22,203, 44,123, 70,147, 81, 74,173, 94, 12,107,153,145, 43,155,
-205,230, 56,166, 23, 11, 11, 11, 17, 22, 22, 86,157, 82, 42,247,114,142,228,187,119,239,110, 3,128,127,255,253,247, 85,148,210,
- 76, 87,211,102,177, 88, 28,154,182,252,252,252,171,227,198,141,179, 45, 93,186,148,183,111,115, 2,128,145, 85, 17,247,100,165,
-230, 44,235,189,122,245, 42,101, 40,182,111,223,142,158, 61,123, 58,203,187, 92, 46,119,174,231, 77,211, 53, 42,230,136, 60, 57,
-116,183,108,217,114, 93,228,197,199,155, 52,103,132,197,147,241,113, 55, 93,142, 27, 69, 95,204,144, 39,147,229,168, 91,220, 35,
- 67,190,164, 83, 38,147, 97,204,152, 49, 16, 4, 1,227,198,141,131, 76, 38, 67,243,230,205, 33, 8, 2, 90,183,110, 13, 65, 16,
-208,185,115,103,159,111, 80, 29,233,220,179,103, 15,226,227,227,157,233,105,222,188, 57, 90,182,108, 9, 65, 16,208,190,125,123,
- 8,130,128,238,221,187,123,213,116,116,104,215,233,116, 56,125,250, 52,120,158, 7, 33, 36, 39, 49, 49, 49, 28, 0, 38, 79,158,
-156,109, 52, 26, 67,140, 70, 35,186,118,237,138, 54,109,218,132, 46, 93,186,244, 93, 0,108,100, 33,227,214,221,237,121,240, 34,
-142, 0,192,140, 25, 51,166, 81, 74,251,148,181,173, 99, 57, 33,100,237,244,233,211,251,216,245,174,251,238, 18,101,114, 53,111,
-177,174, 17, 40,199,118,174,255, 87,222,127,187,173,159, 85,202, 96,217,119,168,147,167, 74,215, 83,168,220,253,179, 47, 21,132,
-209,104,108,238,136, 94, 25,141,198, 82,134,170,168,168,168,148,209, 50,155,205,136,137,137,129,209,104,108, 94,209,139, 69, 68,
- 68, 4, 44, 22, 11, 22, 46, 92,232, 52, 86,174, 38,161, 60,142, 31, 63,126,113,239,222,189,113,241,241,241, 65,191,255,254,123,
- 86,183,110,221, 66,123,244,232, 1,149, 74, 5,163,209, 8,155,205,134, 7, 30,120, 0, 13, 27, 54,196,213,171, 87,177,110,221,
-186,236,122,245,234, 85,217,183,111,159,116,229,202,149, 75,229, 72,119,237,218,181, 43, 8, 33, 88,183,110,221, 53, 74,105,162,
- 90,173,254,109,218,180,105,129, 38,147, 73, 26, 49, 98, 68,202,181,107,215,198, 1,176, 42,149,202, 79, 31,122,232,161, 7,120,
-158, 95, 46,138, 98,133, 43, 51,147,201, 84,234,216, 22, 22, 22, 66,163,209,248, 50, 37,132, 44, 47, 47,175, 41, 0,104, 52,154,
- 96, 0,206, 17,146, 6,131,193,121,142,236,231,199, 24, 28, 28,172, 5, 0,251, 54, 50, 86, 53,220,187, 56, 46,222, 91,183,110,
- 45, 85,190, 29, 17, 40,247, 50,175, 80, 40,176,102,205, 26,159, 52, 93,205,148, 15,205,121,229, 70,155, 28, 6, 75, 16, 4,124,
-253,117, 73, 11,251,171,175,190,234,220,222,253, 63,124,169, 47, 28,102, 72, 16, 4, 52,124, 79, 2, 96, 65,234,103, 42,200,100,
- 37, 89,218, 61,205,142,139,128, 47,230,242,243,207, 63, 71,159, 62,125,176,118,237,218,114,223,123,247,238,237, 83, 58, 5, 65,
-128, 82,169, 44,101,252, 14, 31, 62,236, 81,119,193,130, 5, 94,251,180, 73,146,132, 63,254,248, 3, 28,199,149,138,120,189,251,
-238,187, 47,248,251,251,235,182,109,219,134,204,204, 76, 20, 23, 23,163,168,168, 8, 65, 65, 65,129,221,186,117, 59,124,229,202,
-149,228,227,199,143,179, 14,239,140, 91, 18,197,114,245, 34, 46, 24, 38, 76,152,240, 22, 33,100,237,132, 9, 19,222,154, 62,125,
-122,146,125,253,181,110,219,175,245,162,239, 48, 65,142,230,193,150,110,230,205,209,116,248,112, 57,219,154,221, 12,149,123, 19,
-225, 1,175, 17, 44,247,190, 9,229,125,182,135,184,189, 85,184, 2, 33,228, 58, 3,224, 41,130,101,181, 90,145,147,147, 3, 73,
-146, 42,117,174, 46,111, 6,235,216,177, 99, 79,143, 28, 57, 50, 61, 32, 32,160, 89, 78, 78, 78,134, 82,169,108,191,125,251,246,
-106, 86,171, 21,254,254,254,240,247,247,199,159,127,254,137,128,128, 0,252,239,127,255,187,108, 48, 24,118,107,181,218,112,131,
-193,112,228,202,149, 43,239,148,233, 92,100,178,174,237,219,183, 71, 98, 98, 34,242,242,242,254, 38,132, 52,123,246,217,103,187,
- 87,171, 86,141,124,248,225,135,198,115,231,206,125, 1, 32, 75,171,213,126,179,120,241,226,142,113,113,113,186, 17, 35, 70,128,
- 16,242, 45,165,212,231,200,144, 94,175, 47,101,172, 28,199,212,207,207,207,167, 57,183,236,199,155, 18, 66,156, 3, 26, 93,141,
-149,139, 1,166, 60,207, 75, 0,104,101,159, 35,198,237,143, 96, 57,202,122,223,190,125,175,235,220, 46,151,203,177, 97,195, 6,
- 60,242,200, 35,206, 27,150,248,248,120,159,163, 77,253,250,245,115, 26,130, 13, 27, 54,148,105,176,188, 53,105,185, 71,155, 94,
-121,229, 21,200,100, 50,124,241,197, 23, 24, 59,118, 44,120,158,199,103,159,125, 6,142,227,240,238,187,239, 86,216, 92,202,100,
- 50, 92,252,168,228, 61,250,181, 2,228,204, 15, 7, 0,248,249,251,151,236,143, 36,249,172,233,216,119,111,145, 43, 87, 99,229,
-173,137,208, 53, 10,120,230,204, 25,231,231,214,173, 91,151,138, 92, 9,130,224,213,176,217,255,111,106,151, 46, 93, 62,140,142,
-142, 14, 27, 53,106, 20, 17, 4, 1, 9, 9, 9, 85, 38, 77,154,148, 47,147,201, 84,111,188,241,134,167,174, 20, 50, 0,205, 26,
- 53,106,164,101, 37,135,113,155, 35, 88,166,233,211,167, 39, 77,159, 62,221, 99,132,202, 61,146, 84, 94,164,201,197, 88, 29,128,
-189, 57,112,194,132, 9,111,161,164, 43,204, 1, 31,182, 85, 56,204,149,123,148,203, 21,247, 8,214, 20,247,138,199, 23,131,229,
- 75,255, 9,123, 84,228,104,118,118,118,107,165, 82,137,130,130,130,235, 46,218,174,166,128,231,121, 92,189,122, 21, 26,141,230,
-104,101,158, 60,111, 77,132,118, 51,243,186,203,113,105, 57,120,240,224,165,203,151, 47,143,217,180,105, 19,246,237,219,135, 42,
- 85,170, 96,218,180,105, 23,146,147,147,135, 82, 74, 15,248,242,191,181,107,215,110,172,211,233,176,107,215, 46, 0,216, 1,224,
-169, 23, 95,124,145, 88, 44, 22,204,155, 55, 79, 15, 96, 83, 64, 64,192,111, 43, 86,172,104,214,172, 89, 51,229,166, 77,155, 10,
-247,237,219,183,213, 71,115, 37, 82, 74, 61, 26,171,194,194, 66, 20, 23, 23, 67,167,211,249, 98,176,108,254,254,254,199, 10, 11,
- 11, 31, 51, 24, 12, 5, 74,165,210,175,160,160,192,228, 26, 97, 44, 42, 42, 66,113,113, 49, 4, 65,144,157, 57,115, 38, 29, 64,
-109,127,127,255, 99, 0,108,172,106,184, 55,225, 56,142, 58, 76,198,166, 77,155, 60,150,117,153, 76,134,245,235,215,151, 42,239,
-235,214,173,243,106,218, 4, 65,112,142, 36,244, 22,193,114,108,234, 53,204, 42,147,129,231,121,204,159, 63, 31,148, 82,103,228,
-138,227, 56, 76,152, 48, 1, 74,165, 18, 31,124,240, 1, 38, 76,152,224, 83, 20,203, 53, 42, 86,107,188,225,223,202,209,190,173,
-197,108, 46,137,210,115,156,171,201,242, 41,210,230,173,131,123, 69, 76,176,107,164, 77,169, 84,150,217,185,221,125,211,178, 52,
- 15, 30, 60,248, 93, 92, 92,220,185,208,208,208,141,109,218,180, 81, 30, 60,120, 16, 99,198,140, 33, 38,147,201,127,211,166, 77,
-206,255,245,116,188,138,139,139, 85,172,228, 48,110, 97, 4,107,138,135, 69, 65, 14,227,100, 55, 67,190,234,173,117, 93,223,161,
-225,110,138,236, 17,177,237,222,180, 60,109, 91, 22, 66, 89,225,110,247, 74,194,155,209,242,229,238,211, 96, 48,108,222,186,117,
-107,203, 71, 30,121, 68, 40,175,121,176,168,168, 8,225,225,225, 56,127,254,188,205, 96, 48,120,157,254, 64, 20,125,159, 16,221,
- 91, 4,203, 67,101,114, 32, 54, 54,214,102,177, 88, 80,183,110, 93, 68, 69, 69,193, 96, 48, 96,206,156, 57, 54, 95,205, 21, 33,
- 68,158,144,144,192, 3, 64,126,126, 62, 80, 50,218,161, 94,189,122,245,144,152,152,136,220,220,220, 85, 0,186, 78,153, 50,165,
-197,131, 15, 62, 40, 95,190,124,185,126,244,232,209,171,172, 86,235,135, 62,222,129,155,109, 54, 91, 45,142,227, 44,121,121,121,
-105,174,198, 42, 60, 60, 60, 72,167,211,113, 87,175, 94,181,250,114,120,154, 54,109,186, 63, 53, 53, 21,239,191,255,126,214,180,
-105,211,234, 21, 22, 22,230,230,231,231,219, 28,198,170,160,160, 0, 6,131,129, 11, 13, 13, 85, 46, 88,176, 64, 3, 0, 77,155,
- 54,221, 15, 54,225,232,189,126,215,120, 93,211,160,167,105, 26,124,189,153,114, 53, 46,253,251,247,191, 46, 34,230,120,173, 88,
-177,162, 84,191, 38,111, 77,111, 14,205, 47,191,252, 18,175,190,250, 42,148, 74, 37,102,207,158, 93,170, 15,150,167, 77,203,211,
-116,152,182, 90,227, 13,184, 50, 55, 24, 50,153, 12, 33,163, 51, 75, 53, 17,122,186,203,246,197, 8, 78,155, 54,173, 82,154, 8,
- 93, 77,159, 99, 74,156,133, 11, 23, 98,240,224,193,216,177, 99,199, 13, 55, 17,214,170, 85,107,241,156, 57,115,148, 39, 78,156,
- 64, 65, 65, 1,178,178,178, 96, 52, 26,145,146,146,226, 60,135,101, 68,202,213,172,212, 48,110, 69,244,170,156,197, 89,110,253,
-167,136,107,115, 93, 57,239,238,235,195,229, 55, 87,221, 44,148, 30, 40,230,250,187,187,169,114,255, 15,215,117,178,174,139, 96,
-149,113,225,246,121,154, 6,123, 7, 73,111, 70, 96,214,123,239,189,247, 82,187,118,237,130,253,253,253,145,158,158,238, 49,130,
-229,239,239, 15,139,197,130,173, 91,183, 22, 72,146, 52,203,203, 57,177, 90,173, 86,132,133,133, 33, 59, 59, 27, 82, 25, 97,124,
-142,227,160, 86,171, 81, 84, 84, 4,183,131,232,211,133,194,106,181,194, 98,177,192, 98,177,192,106,181, 86, 52,223,168, 29, 19,
-182, 22, 23, 23, 3, 64,113,100,100,100,109,149, 74,229, 24,245,120, 6, 64,151, 30, 61,122,200,114,114,114,232,115,207, 61,183,
-135, 82, 58,198,203,108,246,230,173, 91,183,214, 4, 0,181, 90,125, 6, 0, 82, 82, 82,172,121,121,121, 40, 42, 42,114, 70, 8,
-213,106, 53, 6, 12, 24, 80,149, 82,138,173, 91,183,214,148,203,229,180, 28, 51,100, 90,187,118,237,241,128,128,128,165, 51,102,
-204, 24,250,240,195, 15, 39, 53,109,218,180, 86, 81, 81,209, 85,189, 94,111, 48, 24, 12, 84, 16, 4,121, 72, 72,136,114,227,198,
-141,231,246,236,217,243,144,191,191,255,210,181,107,215, 30,183,135, 86, 25,247,230, 29, 99,169, 40,142, 39, 83, 85,145, 17,116,
-174,198, 69, 16, 4,172, 95,191,190,220, 40,142,175,154,174, 38,227,245,215, 95,199,220,185,115,175,139, 96,125,248, 97,201, 61,
-201,219,111,191, 93,161, 8,145, 32, 8,184, 50, 55, 24, 85, 95,185,118, 93, 4,139,216,211, 87,145, 38, 66,199,246, 83,167, 78,
-133, 76, 38,115, 54,225, 61,244,208, 67,165,154, 6,125, 53, 86,174,154, 87,175, 94,133, 32, 8, 8, 14, 14,198,208,161, 67,209,
-189,123,247,235,244,124,213, 77, 73, 73,249,103,230,204,153,213,163,162,162,176,124,249,114,179, 86,171, 85,116,233,210,133,230,
-231,231,147,242, 34, 88, 6,131,129, 69,176, 24,183,155, 3,183, 89,247,166,255, 79,240, 86,233,222,204, 52, 13,238, 79,219, 78,
- 78, 78,206,143,136,136, 24, 54,100,200,144,223,231,207,159,175,174, 93,187, 54, 78,157, 58,133,220,220, 92, 88, 44, 22,200,229,
-114, 68, 70, 70,162,168,168, 8,191,254,250,171, 94,175,215, 15,203,200,200,200, 47, 79,147, 16,242,118,175, 94,189, 22,188,243,
-206, 59,170,198,141, 27, 35, 55, 55, 23, 69, 69, 69,206, 59, 47, 66, 8,252,253,253,161,209,104,112,236,216, 49,236,217,179,199,
- 64, 8,121,187, 60, 77, 79, 70,211, 97,172, 28, 70,203,219,200, 36, 55, 77,173, 70,163,113,220,249, 1,128,173,122,245,234,225,
- 0, 28, 6,235, 82, 76, 76,204, 59,117,234,212, 33,139, 23, 47,166,148,210, 77,158,204,149,155,102,110,199,142, 29,243, 0,132,
-155,205,102, 57, 0, 20, 20, 20, 88, 66, 66, 66,194,148, 74,165,164, 84, 42, 37,149, 74, 37,101,100,100,216,108, 54,155, 28, 0,
- 58,118,236,104, 6,144, 9,251,124, 85, 30, 52, 37, 0,133,243,230,205,155,252,212, 83, 79,181,110,219,182,109,236,115,207, 61,
-119, 98,244,232,209,136,138,138, 10, 42, 42, 42, 50,158, 57,115, 38,111,254,252,249,198,253,251,247, 63, 36,147,201, 46,205,155,
- 55,111, 50, 74,230, 35,145,124, 61,158, 55,104, 2,152,230, 45,210,116,244,253,241,100,172, 92,191,251, 48,141, 66,169,116, 58,
- 76,219, 99,143, 61,230, 28,125,232, 30,185,170,168, 38, 0,231, 8,194, 55,223,124,179, 84,250,222,121,167,204, 46,144,164,156,
-125,119, 70,155, 4, 65, 64,254,194,168, 82,230,207, 87, 83,229, 73, 83, 16, 4, 76,154, 52,201,231, 8,150,123, 31,172,242,210,
-217,177, 99, 71, 20, 23, 23, 67, 38,147, 97,195,134, 13,101, 70,176,188, 29, 79,181, 90, 61,116,213,170, 85, 63, 41,149,202,166,
-102,179,249,153,236,236,236, 31,244,122,125,245,188,188,188,114, 35, 88, 70,163, 81,201,202, 17,211,188, 3,115, 97,221, 83,148,
-123,139,103,179,217, 80,173, 90,181, 82,207,182,114,116,102,231,121,222, 57,242,196,151, 17,132, 14, 50, 50, 50, 54, 68, 68, 68,
- 12, 28, 48, 96,192,146,167,158,122,202,175, 97,195,134,178, 26, 53,106,192, 96, 48, 32, 57, 57, 25,201,201,201,182,191,255,254,
-187, 64,175,215, 63,145,145,145,177,193,155, 94, 90, 90,218,143,225,225,225,235,135, 15, 31, 62,169, 69,139, 22,163,198,142, 29,
-203,199,196,196, 32, 63, 63, 31, 65, 65, 65, 8, 13, 13, 69,114,114, 50,126,253,245, 87, 49, 47, 47,111,129, 40,138, 83, 51, 51,
- 51,179, 42,114,144,108, 54, 27,111,181, 90, 49,100,200, 16, 72,146,132,217,179,103,195,102,179,241, 21,144,176, 88, 44, 22, 10,
-128,100,103,103, 3,128,222, 97,184,206,158, 61, 11, 0,151,107,214,172,169, 3,128,205,155, 55, 19, 0,187,125, 13,174,185, 70,
-178, 26, 54,108,152,236, 94, 41, 58, 34, 87,142,168,151,171,185, 42, 3,227,208,161, 67,179, 76, 38, 83,143,215, 94,123,109,210,
-194,133, 11,135, 46, 92,184,240,186,149,252,253,253,151,126,246,217,103, 83,135, 14, 29,154, 5, 54, 61,195,253, 81, 25,184, 69,
-171, 42,218, 5,160, 44,205,213,171, 87,251, 60,185,166,183,168, 24, 33,196,227,136,196,242,234, 32, 95,158, 62, 85,214,132,162,
- 55, 19, 21, 20, 4, 1,159,124,242,137, 51,114,229,218,249,252, 70, 34, 88, 14,205,224,224,224,146,187, 54,173, 22,146, 36,161,
-119,239,222, 55,172,107,127,182,224, 64,199,247,132,132,132,169,203,150, 45,251,144, 82, 26, 2, 64,112, 61, 6, 21,127,138, 23,
-131,193, 12,150, 71, 68, 81, 76,117, 60, 91,208,151,135,192,218,141, 72,170,143, 38,107,125, 76, 76, 76,204,194,133, 11, 95,213,
-106,181,221,140, 70, 99, 83, 0, 80,169, 84, 71,139,139,139, 55,113, 28, 55, 39, 35, 35,195,231,135, 51,219, 13,211,203,209,209,
-209,179,135, 15, 31,254, 97,155, 54,109, 6, 61,247,220,115, 68, 16, 4,252,242,203, 47, 52, 45, 45,109, 5,199,113,111,167,167,
-167,159,191,145,131,164,209,104, 78,175, 88,177,162,246,234,213,171, 97,181, 90,177, 96,193, 2, 40,149,202,211,190,110, 79, 41,
-205, 18, 4, 97, 73,219,182,109,135,238,217,179,103, 41,165,244,152, 82,169,252,169, 67,135, 14,195,118,239,222,253, 51,165,244,
-132, 32, 8, 63,181,105,211,102,216,254,253,251,127,163,148, 30,169, 64,242,156,145, 44,155,205,115,139,162,167,200,149, 23, 10,
- 70,142, 28,105, 25, 57,114,228,107,131, 6, 13, 90,152,152,152,248,128, 99,250,134,192,192,192,163,241,241,241,251, 86,172, 88,
-113,202, 30,185, 98,230,234, 30,199,209, 33, 61, 40, 40, 8, 28,199, 57, 95,142,217,188, 43,106,132, 28,154,148, 82, 4, 5, 5,
-121,188, 49, 43, 71,147,120, 41, 75,208,233,116, 78, 77, 31, 71, 47,123, 13, 67,233,116,186, 82,105,244,241,230,166,220,125,119,
- 79,167, 47,199,204,155,166, 86,171,133,197, 98,241, 89, 19, 62, 12, 26,112,229,224,193,131,223, 1,248,174,110,221,186,103, 1,
-212, 97,166,138,193,184, 5, 6,235,228,201,147, 9,183,242,143, 47, 92,184, 80, 0, 96,170,253, 85, 41,164,166,166,158, 7,240,
- 88,213,170, 85, 63,221,189,123,247,187,246,202,245,125,111,207, 51,244,198,145, 35, 71, 30,145,201,100,243, 22, 45, 90,212,134,
- 82,138,128,128,128,221,231,206,157,123,177,130, 81,176, 81,132,144,177,142, 81,129, 38,147,105, 20, 33,228, 13, 74,105,177,203,
-114,231,247, 10, 66, 81,210,217, 46,162,140,229,190, 68,174,174,139,100, 1, 48,175, 88,177,162, 8,192, 97,252, 59,207,149,213,
-254, 50,193,165, 89,144,113,239, 98,179,217,210, 58,117,234, 36,120,187,129,242,176, 93,106,121, 55,104,237,219,183,199, 13,104,
-166,149,147,212, 75,109,218,180,225,124,213,114, 96,181, 90,175,150, 99,190, 82, 91,183,110,237, 49,157, 94,142, 89,185,251,222,
-186,117,235, 10,165,209,158,150,180,202,214,244,114, 60,203,196, 96, 48,228,134,134,134, 22, 25,141, 70,153,201,100,146,185, 71,
-236,213,106,117, 22, 43, 57, 12,198, 13, 26,172,123, 25,187,161,234, 91, 89,122,246,254, 80,207, 87,130,142,209,237,123,113,121,
-223, 43, 72,238, 45, 56,148, 18, 0, 3, 43, 38,247, 55,199,142, 29,123,160,178, 53,143, 31, 63,158,112, 11,210,217,186,178, 53,
-147,146,146, 18,254,171,154,229,145,150,150,246, 0, 43, 25, 12,198,205,193,177, 67,192, 96, 48, 24, 12, 6,131, 81,185, 16, 0,
- 77, 60, 45,168,200,232, 0, 66, 72,147,138,254,177, 55,125,166,201, 52,153, 38,211,100,154, 76,147,105,222,127,154,222,180,239,
-151,209,137,228, 86,118, 98,100, 67, 88,153, 38,211,100,154, 76,147,105, 50, 77,166,249, 95,132, 53, 17, 50, 24, 12, 6,131,193,
- 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24, 55, 10, 33,
-132, 68, 71, 71,119,140,140,140,108,253, 95, 61, 6, 2,203, 6, 12, 6,131,193, 96, 48, 42,131,234,213,171, 7,138,162,248, 84,
-100,100,228,139,181,107,215,174, 13, 0, 81, 81, 81,199, 40,165,115,212,106,245, 79,231,206,157, 51,255,103, 76, 38,123, 20, 2,
-131,193, 96, 48, 24,140,155, 33, 50, 50,178, 5,128, 23,213,106,245, 19, 15, 60,240,128,162, 75,151, 46, 8, 10, 10,130,205,102,
- 67, 70, 70, 6,254,254,251,111, 28, 62,124,248,154,213,106,157,103,181, 90,231,101,101,101,101,254,103, 12, 22, 33,100, 27, 0,
- 80, 74, 59,178,172,194, 96, 48, 24, 12, 6,195, 23, 34, 34, 34,102,246,236,217,243,181,160,160, 32,212,173, 91, 23, 85,171, 86,
-133,201,100,130,193, 96, 0,165, 20,130, 32,128, 82,138,194,194, 66, 28, 60,120, 16,251,246,237,179, 21, 20, 20, 44, 37,132,204,
- 73, 79, 79,255,167,148, 41,185,143,188, 8,161,148,130, 16, 66, 1,116,178,239,212, 54,150, 93, 24, 12, 6,131,193, 96,248, 66,
-100,100,100,230,230,205,155,195, 68, 81, 68,118,118, 54, 76, 38, 19,244,122,189,211, 96,241, 60, 15, 74, 41,108, 54, 27, 0, 64,
-146, 36,156, 56,113, 2,123,246,236, 65, 74, 74,202,103, 25, 25, 25,175,219,205,213,125,229, 69,156,157,220, 41,165,219,152,185,
- 98, 48, 24, 12, 6,131, 81, 81, 76, 38, 19, 22, 47, 94,140,236,236,108, 84,171, 86, 13, 81, 81, 81, 8, 8, 8,128, 74,165, 2,
- 0,167,185, 2, 0,142,227, 16, 27, 27,139, 97,195,134,129, 16, 50,204, 85,231,126,242, 34,172,147, 59,131,193, 96, 48, 24,140,
-155,193,106,177, 88,144,144,144,128,139, 23, 47, 34, 49, 49, 17,113,113,113,104,212,168, 17,178,179,179,145,158,158, 94,106,229,
-253,251,247,227,208,161, 67,232,208,161,195,125,125, 80, 28, 77,132,147, 1,116,180,187,199,142, 44,175, 48, 24, 12, 6,131,193,
-240,133,168,168,168, 17,161,161,161,243,135, 15, 31,174,110,222,188, 57, 82, 83, 83,145,150,150,134,220,220, 92,180,104,209, 2,
-177,177,177, 56,127,254, 60,214,175, 95,143, 67,135, 14, 65,169, 84, 34, 58, 58, 26,186,165,203,240, 71,100, 68, 90,122,122,122,
- 52,128,251,206,139,184,118,114,119,236,212, 54,150, 93, 24, 12, 6,131,193, 96,248, 74,100,100,100, 8, 33,228,237,200,200,200,
-151,158,120,226, 9, 89,157, 58,117,144,154,154,138,236,236,108,228,230,230, 98,239,222,189, 14, 51,134,168,168, 40, 36, 39, 39,
-227,216,177, 99, 6,147,201, 52, 58, 45, 45,237, 71,167, 41,185,143,188, 8,155,166,129,193, 96, 48, 24, 12, 70,101, 25,173,106,
- 0,166,212,169, 83,103,196,224,193,131,185,200,200, 72,164,165,165,225,239,191,255, 70,237,218,181,113,245,234, 85, 28, 60,120,
- 80, 44, 40, 40, 88, 32,138,226,212,204,204,204,172,251,245, 88,220,210,153,220, 9, 33, 77,152, 38,211,100,154, 76,147,105, 50,
- 77,166,249,223,208, 76, 79, 79, 79, 73, 79, 79,127,250,204,153, 51,177, 31,126,248,225,170,249,243,231,131,231,121, 68, 70, 70,
- 98,203,150, 45,116,243,230,205, 43,138,138,138,234,167,167,167,191,124, 63,155, 43,128,117,114,103, 48, 24, 12, 6,131, 81,201,
- 92,185,114,229, 36,128, 71,162,162,162, 30, 72, 74, 74,122, 11, 0, 36, 73,122,255,202,149, 43, 7,255, 43,199,128, 25, 44, 6,
-131,193, 96, 48, 24,183,132,180,180,180,125, 0,250,254, 23,247,157, 61,236,153,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193,
- 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,254, 83, 16, 0, 30, 71, 2, 80, 74,143,249, 44,114, 3, 35, 20,188,233, 51,
- 77,166,201, 52,153, 38,211,100,154, 76,243,254,211,244,166, 93, 17,255,113, 87, 27, 44, 95,230,193, 34,132, 16,122, 3, 19,102,
- 17, 66,154, 84,246,129, 98,154, 76,147,105, 50, 77,166,121,107, 52,111,164,174,247,164, 73, 8, 33, 46, 55,241, 0, 64,237, 23,
- 78,122, 55,165,243, 94,217,247,255,138,230,253,134,224,229, 0,114, 40,105, 70, 36,132, 16, 9,128, 84, 25, 7,202,126, 18,184,
-202,210, 99,220, 2,231, 93,114,142,200,191, 55, 20,236, 60, 49, 24,247,113,121,175,180,186,222,165,238,224, 29,154, 0, 68, 0,
- 34, 33,228,166, 46,182,183,226,154,116,183,239,251,127, 89,243,190, 52, 88,142, 3, 21, 26, 26,186, 33, 44, 44,172,115,118,118,
-182,100,255, 29, 81, 81, 81,224, 56, 14,130, 32, 24, 46, 94,188,232, 95,209, 63, 12, 15, 15,255, 54, 54, 54,246,169,156,156, 28,
-137,227, 56, 84,171, 86, 13,132, 16,240, 60, 15,158,231, 13,231,206,157,243,191,211, 7, 37, 62, 62, 62,215,108, 54,235,220,127,
- 87, 40, 20,198,196,196, 68,191,255, 64,101, 43,212,171, 87,239,113,141, 70,163,118,252, 22, 23, 23,231,186, 10, 61,116,232,208,
- 66, 95,245,106,213,170,181, 95,173, 86, 7, 10,130, 0,158,231, 33, 8, 2,138,139,139,243, 78,156, 56,209,202,190,124,151, 90,
-173, 14,225,121,222,145,183, 96, 52, 26,115,142, 31, 63,222,150, 93,250,174,167, 83,167, 78, 2, 42, 62,197,138,109,235,214,173,
-182,219,152, 76,206,156,232, 87,135,216, 12,205, 8, 71, 3,168, 68,242,169,160, 62,162,136, 47, 60,231,227,246,210, 29, 46, 3,
-213, 1,216, 40,165,233, 55,178,177,135,138,182,167, 8, 12,177,127, 53,114, 64, 14, 1,206,132, 0,191,102, 2,134, 82, 43,223,
-198, 11,145,163,174,143,142,142,158, 19, 30, 30,254,116, 97, 97,161,158,231,121, 16, 66,104,108,108,236,117,187, 67, 8,129, 36,
- 73,169, 73, 73, 73, 9, 94, 46,178,178,234,213,171,127, 22, 26, 26,250,164, 94,175,215, 19, 66, 64, 8,161,132, 16, 52,109,218,
-212,169,233,120, 23, 69, 49,245,216,177, 99, 9,183, 43,157,119,106,223,155, 52,105,226,212,114,104, 75,146, 84,230,190,187,106,
- 70, 71, 71,127, 22, 30, 30,254,100, 81, 81,145,158,227, 56,167,102,108,108,236, 13,167,243,110,214,188,159, 35, 88, 92, 88, 88,
-216,170, 86,173, 90,117, 90,189,122, 53,119,242,228, 73,174, 97,195,134, 16, 69, 17,146, 36,129, 82,138,248,248,120, 77, 69,255,
-172,106,213,170, 63,180,108,217,114,200,154, 53,107,184, 85,171, 86,113, 45, 91,182, 4, 33, 4,162, 40, 66, 20, 69,116,237,218,
- 85,125,147,149,133, 78, 16,132,177, 10,133,162,163,205,102,107, 4, 0, 50,153,236,132,201,100,218,102,179,217,102, 81, 74,139,
-124,209,177, 90,173,154,164,164,164,235,142, 77,171, 86,173, 20, 55,154,182,122,245,234,237,230, 56, 46,198,181,208,122,123,167,
-148, 94, 72, 74, 74,106, 83,150,102,131, 6, 13,188,106,186,255, 38, 73,210,133, 99,199,142,181, 41,207, 92,213,173, 91,119, 72,
-227,198,141, 85,191,252,242, 11, 82, 82, 82,160,213,106, 33, 73, 18, 68, 81,132,213,106,197, 35,143, 60, 66, 42,178,239,106,181,
-218,255,239,191,255,174, 19, 22, 22,134,171, 87,175, 34, 59, 59, 27,163, 70,141, 58,227,178, 60,100,203,150, 45,245,130,131,131,
-161,215,235,145,159,159,143, 97,195,134,221,243,133,171,123,135,218, 31, 16, 32,216,241, 93,148,112,109,211,206,243,239,220,172,
-174,201,100,202, 16, 69, 49,200,203, 53,189, 20, 60,207,231, 2, 8,245, 82,126,106, 2,232,203,243,124, 93,153, 76,214,128, 82,
- 90,211,102,179,133, 3,128, 92, 46,207,228,121, 62,217,106,181,158, 50,155,205,103, 1,172,161,148, 38,151,165,101, 78,244,171,
- 35,154,244,131,138, 77, 82,111,137,162, 42, 71,112, 69,171,212,255,105, 78,244, 91, 81, 1,147,117,167,204, 85,173,200,200,200,
- 79,236,159,199, 81, 74, 47,222,172,166, 8, 12,161,148, 6, 0, 64,126,126,126, 64, 74, 74, 74,213, 53,107,214,196, 78,155, 54,
-173,139,194,104,252,216, 12,156, 40,111,251,135, 58,214, 57, 40, 16, 18,237,116,203, 84, 74,221,184,237,124,101, 92,152,184,168,
-168,168, 57,189,122,245, 26,190, 96,193, 2,205,190,125,251, 52, 77,155, 54, 69,201,133, 17,206,250,158, 82,234,204, 99, 15, 62,
-216,186,220,195, 7, 64,136,140,140,156,221,171, 87,175,161,243,230,205,211,156, 58,117, 74, 83,171, 86, 45,167,166,107,158,181,
- 95,128,209,188,121,139,219,157,206, 91,186,239, 61,122,244, 24,186, 96,193, 2,205,209,163, 71, 53,245,234,213,115,106,186,123,
-103,142,227,144,144,208,210, 39,205,158, 61,123, 14,253,234,171,175, 52,137,137,137,154, 70,141, 26,217, 77, 26,156,105,188,145,
-116,222,229,154,247,159,193, 34,132,112,161,161,161,139, 19, 18, 18,122,172, 94,189,154, 7,128,196,196, 68,228,228,228, 32, 42,
- 42, 10, 58,157, 14, 42,149, 10, 70,163,177, 66,119, 89,225,225,225,223,182,106,213,106,200,234,213,171,101, 0,240,219, 19,143,
-224,130, 12, 24,115,213, 12,185, 92,142,115,231,206,129,231,249,155, 9, 29,119,240,243,243,251,113,229,202,149, 65,113,113,113,
- 92,118,118, 54,106,213,170,133,107,215,174,181,218,190,125,123,252, 51,207, 60,243, 12, 33,100, 4,165,116,187,175,154,127,252,
-241, 7,180, 90,173,243,101,177, 88,200,141,166,143,231,249,232,125,251,246,133,233,116, 58,136,162, 8, 74,105,169, 2,236, 94,
-240, 36, 73, 66,251,246,237, 45,229,158, 60, 65,136,222,183,111, 95,152, 90,173,190, 78, 75, 20, 69, 40, 20, 10,112, 28,231,184,
- 67,132,205,102, 67,155, 54,109, 44,229,221,209,213,171, 87,239,113,135,185,226, 56, 14,203,151, 47, 71,213,170, 85, 17, 22, 22,
- 6,173, 86, 11,181,186,226, 30, 88, 16, 4,132,132,132,224,165,151, 94,194,227,143, 63,142, 37, 75,150, 64, 38,147,149, 90, 30,
- 28, 28,140,191,254,250, 11,254,254,254,168, 81,163, 70,169,229,247,108, 36, 16, 8, 94,191,253,188, 51, 34, 59,168, 79,115,161,
- 91,251,152,121,206,202,181,100, 37, 42,149,172, 75, 37, 81,204,221,188,235,210, 36, 31,110, 0,170,236,218,181, 11, 74,165,210,
-183,139,187, 40,162, 85,171, 86, 85,188,148,159,222, 77,154, 52,249,237,165,151, 94,146,215,169, 83,135,200,100, 50, 8,130, 0,
- 65, 16, 28,249,177, 6,165,180,134, 36, 73,157, 50, 51, 51,233,231,159,127,254, 49, 33,100, 0,165,244, 79,143,122, 54, 67,179,
- 98,147,212,155, 82, 84, 13,239, 70,171, 95,221, 68, 80,108,146,122, 7, 8,134,115, 0,238, 90,131, 69, 8,241, 87,171,213,239,
-254,242,203, 47,114, 0,232,214,173,219,187,132,144,255, 81, 74, 11, 42,235, 63, 2, 2, 2, 16, 16, 16,128, 38, 77,154, 96,224,
-192,129,129, 45, 90,180,120,163,166,201, 52, 42, 25, 48,151, 89,134, 56, 46,122,221,150, 51, 97,142,239, 67, 31,137,147,247,232,
- 84, 39,179,164,131,139,251,218, 20,146, 72, 83, 55,237,188,144,224,101, 95,185,170, 85,171,126,218,179,103,207,199, 22, 44, 88,
-224, 7, 0,223,126,251, 45,122,247,238,141,170, 85,171, 66,173, 86, 67, 46,151, 67, 46,151, 67, 38,147, 57,223,189, 68,132,248,
-170, 85,171,126,252,240,195, 15, 15,154, 55,111,158, 31, 0,252,240,195, 15,232,211,167, 15, 66, 66, 66,224,239,239, 15,165, 82,
- 9,133, 66, 97,215, 34,240, 22,175,243,148,206,231,186,119, 65,140, 90,137,190, 31,126,130,192,192, 64,252,253,250,139,144,113,
- 28, 94,252,107, 27,252,253,253,189,214, 31,158, 52, 19, 19, 19,145,153,153,233,113,223,121,158, 47,183,188,185,238,123,239,222,
-189, 7, 57, 52,127,248,225, 7,244,232,209, 3, 33, 33, 33,208,233,116,206,125,255, 87,155,243, 73,179, 71,143, 30,131,190,250,
-234, 43,167,102,215,174, 93, 17, 28, 28, 12, 63, 63, 63,200,229,114,231,241,172,200, 57,186,155, 53,239, 75,131,229,232, 27, 21,
- 22, 22,246,216,218,181,107,157,103, 94, 38,147, 65,169, 84, 58, 51,135,235,133,219,215, 48,116,108,108,236, 83,171, 87,175,118,
-110,100,118, 43, 84, 42,149,170, 66,154,110,250,221, 58,119,238,188,108,237,218,181, 42,185, 92, 14,131,193,128,164,164, 36, 4,
- 4, 4, 64,161, 80,160,127,255,254,124,155, 54,109, 66, 58,119,238,252, 43, 33,100, 40,165,116,147, 55, 77, 74, 41,116, 58, 93,
- 41,131,117, 51,145,123, 66, 8,212,106, 53, 86,173, 90, 5, 65, 16, 74,101, 50, 79,149, 88,120,120,184,215,168, 4, 0, 40,149,
- 74,236,222,189, 27, 28,199, 65, 38,147, 57, 95,127,252,241, 7, 94,127,253,117,100,102,102, 58,151,249,249,121,109,221, 36, 26,
-141, 70,237, 48, 87,142,115,175, 86,171, 33,147,201,136, 32, 8,132,231,121, 0,160, 21,233, 16, 42, 8, 2,146,147,147,241,196,
- 19, 79, 96,209,162, 69,120,255,253,247, 49,116,232,208, 82,203, 11, 10, 10, 16, 20, 20,132,192,192, 64, 40,149,202, 27,206, 11,
-119, 19,146,219,209,153,250,254,199,154,146, 14, 30, 18, 32, 1, 20,212,249, 57, 35,227, 28,102,126, 58,151,247, 85, 91,169, 84,
- 98,215,174, 93,112,109,118,229, 56, 14,114,185,188,212,111,130, 32, 32, 34, 34,194, 23,189, 41, 43, 87,174, 84, 44, 95,190, 28,
-191,255,254, 59, 68, 81,132, 76, 38,131, 74,165,130,191,191, 63,130,131,131,157,175, 26, 53,106,144,239,190,251, 78,222,172, 89,
-179, 41, 0, 60, 27, 44,142, 6, 72,118,115, 5, 0, 97,221,104,245,243,171,249,160, 64,191,146, 40,206, 93,106,174, 4, 0, 19,
-191,248,226,139,144,248,248,120, 0,192, 23, 95,124, 17, 50,114,228,200,137,132,144,119, 40,165, 55,220,196,202, 3,203, 8, 33,
- 67,236, 17, 91,213, 67, 15, 61,164,248,242,203, 47,209,160, 65, 3,188,242,202, 43,193, 51, 63,254,184, 47,128, 21,101,231,165,
-210,153,105,250, 39,115, 3, 93,111,168,254,125, 1,215,178,146,241,238,187, 31,120,173,147, 1,112,145,145,145,207,124,253,245,
-215,206,238, 16,193,193,193,206, 58,200,189,142,114,188,151, 83, 47, 17,123, 84,104,228,130, 5, 11,156,154,161,161,161,165, 52,
-100, 50, 25,146, 79,252,131,117,223,206,128, 54, 36, 2,195, 94,159, 94,225,116, 70, 41, 21,136, 86, 43,208,172, 89, 51,168,213,
-106, 36,202, 74, 46,101, 14,115, 85, 94, 58,203,210,228,121,222,153, 70, 74, 41,140, 70, 35, 10, 11, 11, 33,138, 34,204,102, 51,
-226,227,227,125,218,247,175,190,250,202,169, 89,165, 74, 21,103,253,238, 90,207, 59, 94,142, 27,152,242, 52, 35, 35, 35, 71,126,
-243,205, 55, 78,205,144,144, 16,167,150, 32, 8,144,203,229,248,225,135, 31,224, 99, 68,219,103,205,138,158,119,119,205,139, 23,
- 47, 98,218,180,105,144,203,229,142, 46, 64,206,136,101, 84, 84, 20, 62,255,252,115,159,174,113,247, 85, 4, 11, 0,201,206,206,
-150, 78,158, 60,201, 29, 60,120, 16,114,185, 28,161,161,161,104,213,170, 21, 0,192, 98,177, 64, 16, 4,168,213,106, 82,175, 94,
-189, 76,199, 65,115,188,187,182,165,187,140, 48,224,174, 93,187, 38,109,216,176,129, 91, 50,176, 7,204, 20,104,241,238,116,244,
-232,211, 7,235,163, 20,224, 1,180, 58,153, 13,133, 66, 33, 68, 68, 68, 88, 29, 39,193,161,235,218, 55,203,195,168, 5, 63,173,
- 86,251,221,154, 53,107, 84, 28,199,161,176,176, 16,146, 36,161,109,219,182, 32,132,224,232,209,163,120,231,157,119,240,219,111,
-191, 97,229,202,149,234,184,184,184,239, 8, 33,141, 40,165,133, 46,102,234,152,167,204,233,239,239, 15,181, 90,237, 52, 88,106,
-181,154, 52,104,208, 32,211,209,126,238,214, 28,151,150,148,148, 20, 95,150,166, 35,146, 48, 96,192, 0,103,159, 51,199, 5,208,
-181,176, 57, 62, 39, 37, 37,121, 50,125,215,105, 74,146,132,118,237,218, 1, 0,180, 90, 45,116, 58, 29,182,108,217,226, 92, 30,
- 23, 23, 7,179,217,140, 42, 85,170,224,196,137, 19, 62,105, 94,185,114, 5,139, 23, 47,134, 76, 38, 67, 72, 72, 8,100, 50,153,
-124,211,166, 77,239,107,181,218, 0,158,231, 17, 24, 24,136, 62,125,250, 44,232,219,183,175, 35, 13,226, 31,127,252, 33,148,165,
-201,243, 60, 84, 42, 21,126,248,225, 7, 76,155, 54, 13,111,189,245,150,123,116, 15, 70,163, 17, 33, 33, 33, 8, 10, 10, 66, 80,
- 80,144, 79,233,188, 89,110,181, 38, 5, 69,210,161,245, 56,126,120, 19, 68, 42, 66, 18, 37, 80,137, 66,148, 36, 28,218,184,191,
- 94,198,133,244, 40, 10,234,236,109, 36, 22, 21,219, 58, 85, 81, 54, 0,176,106,107,182,105,182,183,116,242, 60, 15,139,197,130,
-245,235,215,227,220,185,115,216,176, 97, 3, 12, 6, 3,170, 84,169,130,192,192, 64,180,105,211, 6, 35, 71,142,244,104,176,220,
- 53, 69, 81,252, 33, 45, 45,173, 69,155, 54,109, 72,126,126, 62,178,179,179, 81, 88, 88, 8,139,197, 2,139,197,226, 60,135, 90,
-173, 22, 85,171, 86,133,193, 96,160, 38,147,233,135, 50,247, 93, 34,249, 28,193,149,243,171,132, 42,181,251,219,212,153, 91, 66,
- 76, 6,179,220, 54,127,149,102,228, 31,227,107,119,231, 40, 71,129,146, 93, 39, 4, 84, 18,197,236, 77, 59, 46,188,116,135,207,
-251,168,177, 99,199, 54,114,109,158, 30, 54,108, 24,146,146,146, 26,205,154, 53,107, 20,128, 47, 42,170,169, 6,162, 0,192, 6,
-252,133,146, 23,166, 24, 12,228,253, 85,171, 6, 0,120,114,229,202,149, 24, 58,116, 40, 62,253,248,227, 38,238, 6,171,212,241,
-164, 20,201,103,182,227,226,153, 93,144, 36,201,254,162,101,126,166,190,165,147, 20, 21, 21, 25,247,237,219,167,251,254,251,239,
- 17, 28, 28,140,154, 53,107,194,207,207, 15, 74,165,242, 58, 51,224,120,121,219,119,189, 94,111, 60,121,242,164,110,217,178,101,
- 8, 9, 9, 65,141, 26, 53,160,213,106,161, 82,169,156, 55,232,251, 54,172,196,168, 17,253,145,115,249, 20,230,254,239,113,159,
-211,249,220, 67, 93, 16,173, 86,160,255,212,233,104,212,168, 17, 86, 60,222, 15, 28, 1, 70,255,189, 23, 50,153, 12,223,247,238,
- 0,165, 82,129,209,127, 31,240, 89,243,192,129, 3,160,148,162, 70,141, 26, 48, 24, 12,206, 40,155, 92, 46,199,166, 77,155,208,
-175, 95, 63, 44, 89,178, 4, 15, 62,248,160,215,125, 47, 42, 42, 50, 30, 61,122, 84,247,211, 79, 63, 33, 56, 56, 24,213,170, 85,
-131, 70,163,113,234,185,154,152,152,152, 24,228,229,229,161,118,237,218,229,106, 22, 23, 23, 27, 19, 19, 19,117, 75,150, 44, 65,
-112,112, 48,162,163,163,161,209,104, 74, 69,194,166, 76,153, 82, 74,163, 89,179,102, 55,173, 89,209,243,238,174, 57,112,224, 64,
-212,174, 93, 27,254,254,254,206, 99,224,110,180, 43, 72, 75,148,238,230, 96, 6,160,112,121,207, 2,112,192,195,122,142,223,101,
- 0,154,219,151,137, 0, 10, 1, 4,122,208, 43, 75, 39,219, 30, 47, 14,117, 91,223,253,127, 74, 27, 44, 66,136,163, 60,118, 2,
-176, 19, 0, 26, 54,108,136,156,156, 28, 40,149, 74,180,106,213, 10, 89, 89, 89,206, 48,159, 36, 73, 24, 60,120, 48, 63,126,252,
-248, 48,142,227, 96,181, 90, 65, 41, 5,207,243,112,220,249,185,251, 0,142,227,208,166, 77, 27, 28,183, 31,211, 30,125,250, 32,
- 58, 58, 26,201, 46,119,228, 67,135, 14, 37,175,191,254,186,224,136, 94, 80, 74, 97, 48, 24,208,172, 89, 51,117, 57,209,145,255,
-253,250,235,175, 1, 10,133,194,105,174, 28,105, 57,121,242, 36,102,206,156,137, 39,159,124, 18,151, 47, 95, 70, 68, 68, 4,222,
-120,227, 13,221,140, 25, 51,254, 7, 96,170,183,179,169,211,233, 74, 25,172, 17, 35, 70, 8,109,218,180, 9,211,104, 52,206,232,
-150,221, 84,162, 77,155, 54,196, 91, 4, 75,146, 36,252,245,215, 95, 30,239, 14,221,239, 24,236,163, 46,124,210,220,183,111,159,
-211,156, 57,162, 23,142,229, 73, 73, 73,206, 8,150,221, 8,150,167, 73, 29, 70,205, 17, 38,151,201,100,242,125,251,246,125, 24,
- 17, 17,161, 27, 49, 98, 4, 10, 11, 11, 17, 25, 25,137,238,221,187, 67,146, 36, 88, 44, 22,140, 25, 51,166,220,200,139, 76, 38,
-195,254,253,251, 49, 99,198, 12,140, 31, 63, 30, 11, 22, 44, 64,183,110,221, 74, 69,176, 28,119,186,254,254,119,124,140, 67, 37,
-134,176, 0,139,205, 10,189,222, 0, 74, 69,136, 18,133, 36, 74, 56,186,245, 80,189, 11,135,207,197,174, 93,186, 88, 6, 0,198,
-109, 43, 93,183,138, 24, 56,239,231,250,157,130,229,251,182, 94,179,236,243,210,236,140, 23, 95,124, 17,147, 38, 77,194, 99,143,
- 61,134,141, 27, 55,226,237,183,223,198, 51,207, 60,227, 52,239,142,188,224, 67,179,227,215,195,134, 13,123, 97,197,138, 21, 13,
- 94,123,237, 53,206, 81, 38, 53, 26, 13, 8, 33, 48, 26,141,206,215,201,147, 39,165,231,159,127,254,180,217,108,254,186,204,140,
- 36,168,143,104,149,250, 63, 51,114,184,186, 87,254, 14,230,136,224,111, 9,173,209, 41,255,225,122,221,104,183,199,107, 6, 81,
-169, 36,194, 71, 65, 97, 50, 22,227,173,241,227,248, 59,121,170, 8, 33,189, 31,122,232,161,238, 31,126,248,225,117,203, 62,252,
-240, 67,156, 56,113,162, 59, 33, 36,185,172, 38,209, 50,204, 85,116, 64,213,170,179, 0, 64,125,229,202, 88, 3,144, 10, 0,239,
- 3, 61, 68,160,223,198,141, 27, 1, 0,213,171, 87,135, 4, 52, 38,192,143, 60,176,204, 6,172,243, 20, 81,183, 88,109, 48, 24,
-140,144,104, 73, 62,146,168, 4, 73, 44,137,130,186,155, 44,111,237,110,148, 82, 74, 8,145,120,158, 71,147, 38, 77,208,163, 71,
- 15, 40, 20, 10,232,116, 58,103, 61,239, 94, 39,249,112, 81,164, 0, 36, 66, 8, 98, 98, 98,208,189,123,119,200,229,114,104,181,
- 90,248,251,251, 59, 13, 22,207,243,104,210,166, 11,150, 45,249, 4,195,123,196, 98, 68,135,112,252,122, 52,219,167,116,214,208,
- 40, 80, 67,173, 68,195,134, 13,225,231,231, 7, 66, 0,158,231,156,233,212,106, 84,144, 59,155, 31,125,219,247, 43, 87,174, 32,
- 57, 57, 25,201,201,201,224, 56, 14,109,219,182,133, 66,161,128, 32, 8, 56,115,230, 12,166, 78,157, 10,179,217,236,211,190,115,
- 28,135,186,117,235,162, 75,151, 46, 80, 40, 20,112, 92, 43, 92,155, 6,101, 50, 25, 10, 11, 11, 81,167, 78, 29,172, 90,181, 10,
-237,219,183,247,170,217,168, 81, 35,116,234,212, 9,114,185, 28,106,181,218,217, 85, 71,225,178,175, 69, 69, 69,206,227,208,162,
- 69,139, 10,105,110,216,127, 25, 11, 55,108,129,201, 44,161, 64,111, 45,181, 65, 68, 21,127,236,252,105,188, 79,251,238,208,252,
-250,235,175,145,151,151,231,172,135, 56,142,115,190, 8, 33,136,142,142,198, 87, 95,125,229,169, 28, 58,189, 8,165,116,155,219,
-226, 80, 66,200, 90,151,243,216,135, 16,178,214,245,189,172,245,236, 31, 59, 76,156, 56, 49, 97,198,140, 25,211, 90,183,110,189,
-108,247,238,221, 75,203,210, 43, 75,103,226,196,137,177, 51,102,204,152,230,186,190,135,255,185, 62,130, 85,146,231, 8, 5,192,
- 57, 34, 51, 81, 81, 81,206,118,103,157, 78, 7,185, 92,238,220,208,102,179,225,187,239,190, 67, 88, 88, 24,194,195,195,157,239,
-101,101,232,234,213,171,131, 82,138, 87,178, 74,186, 0,253, 21, 41, 71, 50,128,135,179,168, 83, 79, 20, 69,172, 88,177, 2,126,
-126,126,206,130,174,211,233,202,109, 46, 82, 40, 20,157, 90,182,108,201,153, 76, 38,103,152,156,227, 56,156, 60,121, 18, 51,102,
-204,192,208,161, 67, 81,191,126,125,136,162,136,226,226, 98,116,238,220, 89, 54,119,238,220, 78,190, 26, 44,141, 70,227,236,119,
-100, 50,153,176,121,243,102, 4, 6, 6, 34, 40, 40, 8, 33, 33, 33, 8, 14, 14,134, 82,169,116,205, 24,229, 54, 59, 14, 24, 48,
-160, 84,228,202, 53,106,229, 90,161, 57,154,253,124,209,124,240,193, 7,157,209, 43,157, 78,135,117,235,254,173,159, 91,181,106,
- 5, 74, 41, 66, 67, 67,177,103,207, 30,175,149,110, 92, 92, 28, 36, 73, 66, 88, 88, 24,100, 50, 25,217,180,105,211,251,118,115,
- 69,100, 50, 25,254,249,231, 31, 36, 37, 37, 33, 52, 52,212,121, 87,234,141,226,226,226,140,185,115,231,138, 95,126,249, 37, 0,
-160,107,215,174,200,207,207,191,234,178, 60,103,248,240,225,165,246, 55, 55, 55, 55,231, 62,240, 87,176, 89,108,208, 27,140, 40,
- 42, 44,134, 85, 18, 97,181,137,184,154,150, 21, 56,254,245,177,178, 79,199,140, 4, 0,188, 62,251, 11, 20,126,245,111, 5,246,
-251,235, 67,194, 6,204, 92, 62, 1, 64,255,242,244,245,122, 61,140, 70, 35,170, 87,175,142, 3, 7, 14,160,176,176, 16,221,186,
-117, 43, 21,253,245,210, 4,225,122,238,205,132,144,182,125,250,244, 57,240,217,103,159,213,110,220,184, 49, 41, 46, 46, 70,113,
-113, 49,244,122, 61, 28,159,143, 29, 59, 70,151, 46, 93,122, 65,175,215,183,161,148,150,217,103, 72, 17, 95,120,206,156,232,183,
- 98,199, 17,121,159, 71, 7,246, 11, 72, 77, 75,177,229, 24, 84, 69,249,134,211, 38,145,158, 0, 21, 41, 68, 74, 65, 69, 9, 34,
-149,112, 39,199,111, 19, 66,162,235,213,171,247,252,146, 37, 75, 60, 26, 82,158,231,177,100,201, 18,180,107,215,238,121, 66,200,
-201,242, 58,247, 59,168, 9, 40,108, 50,217,248,159,127,254, 89, 14, 0, 93,186,116, 25, 95,211,106,125, 61, 25, 48, 55,110,218,
-116,208,238,221,187, 3, 52,154,146,113, 66, 1, 1, 1,160,148,242,122,189, 62,160, 77,155, 54,131,224,201, 96, 73, 20, 86,171,
- 13, 6,163, 9,121,249, 69,176,154,173,176, 73, 54,136, 54, 9, 54,169, 36, 58,106, 19, 69, 72, 54, 17, 54, 73, 4, 47,240,126,
-157, 30,172, 94, 84, 18,203, 34,121,219,246, 94,174,230, 41,139,150,140,240, 2,170, 86,173,234,108, 18,118,237, 43,227, 45,138,
-225, 1,177,164, 46,164,206,186,241,200,214,181,184,122, 98, 39,228,132, 66, 18,173,144,108, 22,136, 86, 11,120, 72, 56,113, 62,
- 13,141, 35,189,214, 33,206,116,246,124,247, 3,180,106,213, 10,191, 14,233, 15, 66,128,209,155,247, 64, 46,151, 99,233, 35,221,
-160, 80, 41,240,236,134,189,190,166,179,212,190, 39, 38, 38,226,149, 87, 94,193, 71, 31,125, 4,181, 90,237,188, 57, 57,117,234,
- 20,150, 47, 95,142,135, 30,122,200,231,125, 39,164,164,169,213,113, 12, 39, 78,156,136,244,244,116,204,154, 53, 11, 9, 9, 9,
-144,201,100,200,203,203, 67,155, 54,109,144,153,153,233,147, 38,165, 18,130,131,131,157,221,117,220,251,136, 57,110,100, 43,114,
-142, 92, 53,159,126, 36, 2,171,119, 45, 5, 1,193,222,159,198,150,186, 30,205, 95,190,163,194,154,147, 38, 77, 42,149,206,138,
- 68,175, 92,188, 8, 41, 99,121, 31, 31,235, 52,199,122,142,131,172,156, 49, 99,198, 52,247,237,189,233,185, 46,119,219,222,236,
-102,202, 50,189, 54, 17, 82, 74,105, 84, 84, 20, 36, 73,130, 78,167,131, 66, 81, 18, 1,115,191,144,106,181,218, 82,142,220, 91,
-123, 50,207,243,160,148, 58, 15, 44,239, 97,249,158, 61,123,174, 51, 1,223,124,243, 77,185,237,180, 54,155,173,145,159,159, 31,
- 10, 11, 11,157,125,164, 20, 10, 5, 38, 76,152,128,225,195,135, 59,205,149, 66,161,192,162, 69,139, 16, 31, 31, 15,179,217,220,
-168,188, 3, 42,151,203,245, 77,155, 54,229, 28, 81, 32,181, 90, 77,134, 14, 29,202, 91, 44, 22,168, 84,170, 82, 81, 39, 71,223,
- 52,111,102,200, 17,109, 90,191,126,189, 79, 17, 44, 95,251, 32, 81, 74,113,232,208,161, 82, 70,205, 62,212, 24, 0,112,248,240,
- 97,231,133,214,215,246,110, 81, 20,161, 86,171,137, 92, 46, 39, 90,173, 54, 96,196,136, 17, 78, 93,199, 57,119,236,183, 47, 29,
-173,143, 28, 57,210,185,188,229, 71,143, 30,189, 47,167, 99,144, 36, 9, 22,171, 21, 6,131, 17,133,197,122, 76,153,110,111, 81,
-155,130,125, 0,246,181, 29,245, 10, 94,236,241, 80, 23,120, 25,221, 87, 22,193,193,193,248,237,183,223, 32,147,201,176,106,213,
- 42,248,251,251,163, 95,191,126,240,247,247,199,248,241,227,241,248,227,143,251,108,176,236,121, 41,159, 16,210,118,236,216,177,
- 7, 62,254,248,227,234,213,171, 87,135,197, 98,129,217,108,134,197, 98,193,249,243,231,177,116,233,210, 20,189, 94,223,150, 82,
-154,239, 77, 79, 17, 95,120,110,237,107,181, 51,218, 13,124,196,120,226,202, 6,100, 94,201,130, 77, 76,133, 77, 20, 97,179,218,
- 74, 12,129, 36,193,102,177,129,231, 57,255,206,173,107,108, 42,233,240, 79,204, 91,247, 36,247,186,141,167,138,158, 57,115, 38,
- 39, 52, 52,212,113, 7,233,111, 54,155,137,189, 46,161, 0, 28, 29,220,139, 1, 88,124, 17, 76, 1, 70,125,250,209, 71,213, 28,
-205,247, 31,125,244, 81,181, 55, 94,123,109, 20,128, 57, 39,142, 30, 93,252,244,211, 79,143,253,229,151, 95, 74,109,243,244,211,
- 79,227,196,209,163,139,203, 10, 17, 88,173, 86, 24, 12, 38,100,103, 95,195,115,163,223,253, 55,228, 12,234,236,232,110,159,213,
- 17, 0, 84, 0,144,157,121, 22, 99, 94,121, 67, 89,214, 13, 85,227,198,141, 29,229, 29, 50,153,236,186, 78,200,174,245,187,183,
-250,195, 30, 25, 42,213,197, 66, 46,151,227,220,238,181, 24, 59,106, 16, 32,218, 0, 75, 49, 96,209,131, 90,244,160,230, 98, 16,
-133, 26,212,106,244,170,235, 72,167,163,219,134,192,115, 80, 42,254,173, 55, 53, 26, 53, 20, 42,133, 79,233,244,180,239,151, 46,
- 93,194, 75, 47,189, 4,179,217,140,129, 3, 7,194,104, 52,194,100, 50,193,104, 52, 34, 38, 38, 6, 6,131,193,231,125,151, 36,
-201, 25, 5, 28, 59,118, 44, 18, 18, 18, 48,117,234, 84,188,249,230,155,136,137,137,193,168, 81,163,176,108,217, 50,196,198,198,
- 66,175,215,123,213,116,212, 37, 58,157, 14,130, 32, 56,235, 96,215,115,229, 48, 88,190,158, 35, 79,154, 37,211,129,225,186,243,
-254,234,136,174, 21,214,156, 54,109, 26,178,179,179,175,139, 92,185, 70,176,230,205,155,119,163, 55, 68,107,125, 49, 89, 46,235,
- 37,218,127, 50, 76,152, 48,225, 45, 66,200,218, 9, 19, 38,188, 53,125,250,244, 36, 95,244,202, 88,254,135,253,253, 97,151,223,
- 18,189, 26, 44,160,100,232, 40,165,212, 25,214,116, 28, 56,199, 50, 0,208,104, 52, 88,187,118, 45, 86,172, 88, 81,234,130, 82,
- 22, 28,199, 65,146, 36,252, 25, 90,114, 34,122,219, 35, 87,142,239,189,174, 74,232,211,167, 15, 98, 98, 98, 74, 69,175,212,106,
-117,185,102, 67,146, 36, 92,186,116, 9,199,142, 29, 67,235,214,173,145,159,159, 15, 1,192,235, 71,143,162,241,136, 17, 48,217,
-141,159, 66,161,192,243,207, 63,239,211, 9, 60,112,224, 64,169, 78, 64,141, 27, 55, 78,109,211,166, 77,212,158, 61,123,156, 17,
- 45,165, 82, 9,149, 74,229, 52, 25, 62, 22,106, 12, 26, 52,168,148, 25,114, 55, 88,142,194,243,215, 95,127,249,212, 68, 72, 41,
- 69,199,142, 29,157,209, 43, 63, 63, 63,252,254,251,239,206,117, 58,116,232, 0, 66, 8,194,194,194,176,110,221, 58,175,154,142,
- 99,234, 56,247, 60,207,163,184,184, 24,137,137,137, 80, 40, 20,206,254, 25,106,181,218,185,255,140,178, 78,184, 4,179,213, 10,
-189,193,136,194,194,146,138,244,220,177, 95, 75,173, 98, 49,221,248,224, 52, 71, 36,180,160,160, 0,155, 55,111,198,111,191,253,
-134,132,132,132, 82,205,131,190, 54, 17,186,228,209, 44, 66, 72,187, 55,223,124,115,239,251,239,191, 31, 25, 18, 18, 2,139,197,
-130, 75,151, 46,225,187,239,190, 75,215,235,245,237, 40,165, 89, 21, 16,132,205,106,131, 81,111, 64,126, 97, 49, 38,127,184,168,
-204, 42, 2, 0, 44,230, 66,244,233,213, 81,113, 91, 79, 19,165,105, 0,158,113, 41, 87,139, 1, 4,216,191, 22, 80, 74,135, 87,
- 68, 79, 6,116, 26, 56,104, 80,151,177, 99,199, 58,127, 27, 59,118, 44,246,238,221,219, 69,182, 98,197, 49, 43,176,149, 95,177,
-162,201,172, 89,179,156,235,204,154, 53, 11,191,173, 88,241,183, 8,108, 45,235, 56, 90,237, 77,132, 69,197, 6,248, 7, 70, 32,
-237,226, 54,175,105,145,243, 38,208,114,234,101, 71, 29, 82, 86,191, 27, 95,205,149,235,197,182,105,211,166,112, 52, 49,203,229,
-114, 52,233, 50, 8,159,205,249, 6, 74,142, 98, 64,151,198, 8, 85, 75, 32,154, 96,200, 59, 78, 0, 9,172, 81,178,225,228,230,
-240,165,174,219,246,246,235, 56,175, 85,225,249,141,187, 32,147,201,240,219,144,222,144, 43,228,120,242,143,237, 37,131,123, 70,
- 14,128, 92,169, 64,247,249,203,125,185, 80, 59,247,253,220,185,115,216,181,107, 23, 26, 54,108,136,179,103,207, 58,251,216, 58,
-174, 91, 62,182, 38, 80,199, 60, 87,142,122,252,202,149, 43,232,211,167, 15,228,114, 57, 22, 45, 90,132,109,219,182,225,205, 55,
-223,196,211, 79, 63,141,206,157, 59,123,236, 23,235,174, 25, 27, 27, 91,234, 28,149,213, 63,170, 34,231,200,147,166, 51,255,222,
-224,121,119,213,116,116,110,247,100,214,111,182, 99,187, 75,180,200, 83,147,217,195, 30, 34, 79, 45, 81,210, 55,202, 52,125,250,
-244,164,233,211,167,247, 33,132,172,157, 62,125,122,159,114, 34, 88, 15,123,137,112, 61,140,146, 62, 87,229,215,209,110,109,159,
-157, 92, 77,148,162,156,182,108,173, 86,139,103,158,121, 6,227,199,143,119,118,100, 44, 15,135,115, 45,143,181,107,215, 94,247,
-219,170, 85,171,188, 53, 17,158, 12, 8, 8, 72,232,210,165, 11,242,243,243,113,249,242,101,232,116, 58, 52,158, 57, 19, 71, 95,
-124, 17,205, 23, 44, 0,215,165,139,179,192, 31, 61,122, 20, 74,165,242,100, 69, 79,170, 78,167, 67, 80, 80, 16, 84, 42, 21,252,
-252,252,224,231,231, 7,173, 86,235, 52, 90,222,154, 8, 29,133,249,143, 63,254, 40, 55,114,229, 26,242,245,197, 12, 81, 74,177,
-103,207,158,235, 34, 88,142,255,116, 44,115, 68, 50,124,209,180, 71, 44,169, 82,169, 4,207,243,208,104, 52,206,112,191, 74,165,
-114,190,124,141, 96,121,155, 72,180,102,205,154,165, 38, 34,149,201,100,165, 38, 34,189,247,155, 8, 77, 40, 46, 42,174,116,125,
-179,217, 12, 65, 16,240,219,111,191,225,129, 7, 30,112,154, 43,135,177,114, 61,239, 21,172,192, 82, 9, 33,157,230,206,157,187,
-239,179,207, 62, 11, 42, 42, 42,194,162, 69,139,242,139,138,138, 58, 81, 74, 83, 43,164, 5,192,106,177, 65,111, 50,161,168,176,
-228, 24,156, 79,250,213,171, 41,187,151,105,212,180,233,240,239,191,255,254,186,223,191,255,254,123,156, 61,123,118, 56,142, 30,
-221, 90, 13, 88, 48,126,252,248, 58,241,241,241,213, 0, 96,252,248,241, 41,213,128, 5,229,149,115, 71, 19, 97,145,221,172, 27,
-139,179, 43, 45,210,234,126,195,119,179, 23, 68, 66,136,211,100, 60,244,216, 51, 72,191,112, 10, 13, 53,217, 8, 11,212, 66, 42,
- 76,135,188,235,100, 28,189,166,193,236, 5,235, 43,148, 78,141, 66, 14,149,250,223,230, 38,149, 90, 5,165,189, 85,129, 16, 2,
-149, 70, 13,153, 66, 81,225,125, 63,117,234, 20, 52, 26, 13, 68, 81,188,238,122, 83,209, 17,205,148, 82,231,181,243,179,207, 62,
-195,184,113,227,176,104,209, 34, 28, 61,122, 20,205,155, 55, 71,183,110,221,112,245,234, 85, 28, 57,114, 4, 38,147,201,231,116,
-186, 94, 47, 78,156, 56,129, 77,155, 54,225,244,233,211, 72, 73, 73,185,225,243,238,222,204,104,111,193, 41, 49,175,155,254,193,
-163, 15,197,221,144,230,228,201,147,113,245,234,213,235, 34, 87,174,221,143,202,138, 96,185,122,145,114, 72,116,139, 30,193,209,
- 31,202, 97,136,220,191, 3, 8,114,252, 54, 97,194,132,183,124,221,206,245,187, 35, 2,230,107, 83,165,224,233,162,235,104, 98,
-114, 28,116,215,200,148,227,179, 70,163,113, 70,153,106,212,168, 81,110,244,202, 81,224,120,158, 71,251, 11,133, 80, 40, 20,206,
-230,188, 94, 87,165, 82, 33,242,152,152,152, 82,125,176, 92, 79,138, 39, 76, 38,211,214,173, 91,183,182,232,215,175, 31,127,226,
-196, 9, 8,130, 0, 73,146, 96,122,240, 65, 52, 95,176, 0,199,198,142, 69,135,139, 23, 97,178, 90,161, 82,169,240,215, 95,127,
- 89,244,122,253,214,138,100, 26,142,227,136,195, 96, 41,149, 74,248,249,249,193,223,223,223, 25,205,169, 72, 37, 84,214, 29,162,
-235,171, 34, 5,218,209,161,223,245,194,234, 56,127, 6,131,161,148,225,242, 21,215, 38, 3,135, 41, 10, 8, 8, 40,213, 44,234,
-136,226,249, 98,176,188, 77, 36,170, 84, 42,253,183,111,223, 94,199,223,223, 31,148, 82,100,103,103, 99,200,144, 33,103,238,249,
- 0, 22,104, 73, 39,119,131, 17, 69, 6, 99,165,235,255,244,211, 79, 56,119,238, 28, 44, 22, 11,166, 79,159,126,157,177,186,145,
- 8,150, 75,190, 58, 23, 23, 23, 39,245,236,217, 19,123,246,236,129, 82,169,180, 82, 74, 43, 60,127, 21,149, 36, 88,172, 54, 24,
- 13, 38, 20, 21, 23,227,191,192,241,163, 71, 87,104,181,218, 33, 0,116,121,121,121,124, 64, 64, 0, 52, 26, 13, 12, 6, 67, 62,
-111, 31, 41,152, 12,152,213, 86,235, 71,143, 61,246,216, 44, 0, 16,172,214,143,202,155, 7,203,105,176, 42,249, 56, 58,234,173,
-178,162, 87, 55,106,174, 8, 33, 37,195,243, 57, 14,139,166,143, 67, 67, 77, 22,226,106,105, 97,188,122, 14, 74,255, 42, 32,129,
- 53, 49,123,193,122,156, 72,190, 86,161,116, 14, 93,252, 43,170, 85,171,134,181, 79,246,135, 82,169,196,144, 95, 55,149,116,210,
- 30,245, 56,228, 42, 37,186,126,241,211, 13,237,187, 94,175, 47, 51, 82,229,107, 4,203, 85,211, 97, 0,227,226,226, 80,183,110,
- 93,108,221,186, 21,113,113,113, 56,123,246, 44,206,158, 61,139,228,228,100, 28, 61,122, 20,185,185,185, 21, 62, 71,203,151, 47,
- 71, 86, 86, 22,228,114, 57, 10, 10, 10,112,241,226,197, 50,251, 63, 87,228,188, 59,104,240,240,100, 0, 64,100,104, 64,133, 12,
-150,171,230, 39,159,124, 82,145,105, 30, 92,243,121,121, 43,101,187,245,117,114,124, 55,187,153, 29,247,239,238,235, 3,192, 85,
- 0,188,151,237,220,191,103, 79,159, 62,125,171, 35,242,101,215,229,203,234,127, 85, 42,130,229,102, 2, 12, 13, 26, 52, 80,187,
-182,159,114, 28, 7, 63, 63, 63,242,198, 27,111,240,132, 16,232,116, 58, 4, 4, 4,160, 94,189,122,176, 88,188,119, 75,144,203,
-229,134, 86,173, 90,169, 93, 67,175,132, 16,104,181, 90,254,205, 55,223, 36,223,124,243,141,199,237, 86,175, 94, 93,110,230,182,
-217,108,179, 70,140, 24,241,108,106,106,106, 80,120,120, 56, 50, 50, 50, 32,151,203, 75,102,139,237,220, 25,237, 47, 92,128,197,
-110, 24, 78,157, 58,133,133, 11, 23, 22, 91, 44,150, 89, 55, 18,193, 10, 9, 9,129, 82,169, 44, 53, 42,198, 37,180,234, 83, 4,
-171, 50,205,149, 67,211,245,194,234,248, 60,106,212, 40,231,247,138, 84,146,114,185,156, 62,252,240,195,206,103, 16, 6, 6, 6,
-162, 74,149, 42,200,204,204,252,119,164,142, 61,114,231,171,193,242, 54,145,168, 76, 38,131,197, 98,113, 54,103,126,241,197, 23,
- 55,108, 12,238, 42,131,101,147,136, 78, 23,138,200,200,250, 8, 13, 51, 66,146,196, 74,211,182,217,108, 24, 61,122,116,169, 57,
-175, 28, 23, 98,199, 36,182,142, 17,190,174,225,255,138,222,137,223,116,116,132, 2, 86,155, 61,138,167, 55,223,115,231,176, 70,
-141, 26,254,246, 38, 67,119,150, 81, 74,215,121, 60, 55,246, 41, 25,120,224,131,203,151, 47, 55, 9, 8, 8, 64,247,238,221,177,
-102,229,202,213,239, 2,206,144,141, 1, 72, 85, 95,185,242, 63,251,231, 52,111, 65, 61, 71, 19, 97,177,190,178,205, 58,185, 46,
-122,117,179, 77, 57, 28, 87,114, 99,246,251, 87, 31,161,161, 58, 19,205,171, 43,177,107,239, 17, 60, 80,141,130,154,228, 55,156,
- 78,157, 78, 87,210, 25, 95,163,129, 82,249,111,159, 43,165, 70, 13,185, 66,121,195,251,238, 26,169,186,217, 8, 22, 33, 92,169,
-227,248,236,179,207, 98,252,248,241,232,222,189, 59,206,158, 61,139,237,219,183,227,204,153, 51,120,229,149, 87, 16, 27, 27,139,
- 30, 61,122, 84,232, 28,253,254,251,239,200,207,207, 7,165, 20, 89, 89, 89, 48, 26,141,152, 52,105,210, 77,159,119, 7, 23, 54,
- 78, 3, 0,252,186,241,208, 13,107, 78,156, 56,209, 57, 7,163,227,154, 95, 94,212,202, 71,246,123,249, 94,209,237,111, 57, 30,
- 13,214,233,211,167, 61,142,149,111,212,168, 81,102,215,174, 93,195, 78,159, 62, 13,157, 78,135,122,245,234,193,100, 50,149,217,
- 12,225,250,180,237,164,164, 36,143,154,181,107,215,182, 60,244,208, 67,178,170, 85,171,150,138, 92, 57, 70,216,184, 58, 99,119,
- 77,251, 69,160,144, 16,242,124,219,182,109,127, 92,183,110,157,186, 94,189,122,200,207,207, 7, 0, 44, 90,180, 8, 47,191,252,
- 50,212,106, 53, 78,159, 62,141,254,253,251,235,245,122,253,243,174,115, 96,121,210,244,100,100,228,114,185,179,153,204,209, 84,
-166, 40, 39, 20, 93,198,147,198, 49,119,238, 92,143,115, 65,185,179, 96,193,130,146,220,234, 67, 58, 63,253,244,211, 74,211,220,
-187,119,111,169,103, 12,246,237,219,247,171, 30, 61,122, 32, 37, 37,165, 84,179, 96,121, 6,203, 93,211,219, 68,162, 60,207, 35,
- 60, 60, 28,239,191,255, 62,170, 84,169,130,170, 85,171, 94,103,176,188,157,163, 27,188,123,191,165,154,148,163,137,115, 62,155,
-220,238,171,111,127,149, 41, 21, 28,246,108,255, 21, 5,185, 87, 74, 71, 96, 45,255, 14,137, 86,196,117,133,249,208,102,159,210,
-105, 50,153,240,241,199, 31, 99,242,228,201,152, 60,121,114,185,105, 42, 99, 56,180,215,125,119, 53, 88,190,152, 45, 79,154,146,
- 36, 18,149, 38, 8, 26,109, 36, 98, 99,131, 32,249, 48, 87,167,116,231,207,187, 62, 37, 37, 37,160, 90,181,106, 56,115,230, 12,
-193,191,253,177,254, 61, 87, 10,197, 16,184,140,246,243, 88,222,129,163, 75,151, 46,109,210,180,105, 83,124,241,197, 23, 0,240,
-228,199, 27, 54, 60, 62,217, 80, 18,206,180, 79,201,240,151, 47,233, 20,169, 72, 84,154, 64,168,117,246,227, 40,249, 62,231, 41,
- 45,103,223, 29, 23,191,155,188,209,187, 78,211,177,253,249, 61,127,224,225, 94,209,216,189,239, 40, 54,167,106, 81, 77,153,142,
- 8,125, 22,164,172,147,248,223,160, 56,204, 94, 81,114, 17, 63,122,208,187, 38, 33, 4, 59,223,120, 30, 58,149, 18,143, 46,253,
- 19, 50,153, 12, 91,199, 62, 5,185, 92,142,142,159,149, 52,201, 30,251,120, 34, 4,165, 2, 13, 95,153,236, 83, 58,221, 91,106,
- 28,125,174, 92,205, 85,121, 17,172,242,246,189,168,168, 8,185,185,185,248,241,199, 31, 49,114,228, 72, 92,189,122, 21, 23, 47,
- 94,196,233,211,167,177,108,217,178, 82,215, 56, 84,224, 28, 77,152, 48, 1,175,191,254, 58, 56,142, 67,147, 38, 77, 48,121,242,
-100,180,110,221,186,194,231,200,253,188,187,227, 45,122, 85,158,230,156, 57,115, 42, 60, 96,235,126,164, 66, 29, 52, 28,145,172,
- 42, 85,170, 64,171,213, 2, 64,169, 11,172,183,102,194,178, 52,109, 54, 27,212,106, 53,212,106,117,169,105, 17,250,245,235,231,
- 53,130,101,175,252,255, 34,132, 12,107,220,184,241,119,147, 39, 79,214,118,234,212, 73, 22, 25, 25,137,248,248,120,156, 62,125,
- 26,127,252,241,135,101,222,188,121,122,189, 94, 63,146, 82,186,241, 70,234,100, 71,199,111,215, 25,237, 43,130, 40,138, 41, 23,
- 47, 94,140,248,244,211, 79,121, 66, 8,102,205,154, 85,106,130, 86,247,125,220,187,119,175,205, 91,147,140,205,102, 75,185,120,
-241, 98,196,204,153, 51, 75,105, 58, 94,238, 38,197, 23,205,178,112,236,179,251, 49,240,165,240,120,155, 72, 84, 16, 4,156, 58,
-117, 10,239,189,247, 30, 8, 33,165, 6, 78,220,203,236,218,159,254, 77,155,132,200,160, 33,131,186, 52, 37,224, 96,246, 16,233,
-229,115,242,156,230,106,192,204,229,248,253,245,199,125, 57, 23, 23,183,109,219, 86,125,218,180,105, 60,207,243,248,228,147, 79,
- 74,229, 37,247,243,254,247,223,127,139,106,181,250,242,141,238,135,197, 98,241, 58,138,170,156, 2,190,107,238, 39,239,117,255,
-234,251, 53, 50, 66,204,216,179,237, 87,228,231,121, 30,154,174,144, 9, 88,188,116,181, 77,224,185,148, 59,124,234,190,234,214,
-173,219,164, 77,155, 54, 9,213,170, 85,187, 97,145,104, 96,205,220,185,115,123,141, 24, 49, 34,184, 81,163, 70,142,193, 39, 10,
-251, 11,246,153,221,255,242,209, 36,173,154,253,233,123, 79,126,253,253, 26, 5, 71, 44,216,179,253, 87,228,187,153,245,235,163,
-209, 50, 44, 89,186,202, 34, 8,252, 41,111,117,240,141,140, 96,246,133, 22, 15,143,196,151,127, 46, 68, 88,211, 94, 24,220,183,
- 29,118,126,241, 36, 30,107,100,128,229,231,161,104, 50,120, 49, 22, 77, 44,137,222, 52,255,101,162, 79,215, 10,127,221,191, 19,
- 86,114, 28, 7,165, 74, 13,153,226,223,232,139, 66,163, 1, 95,129,136,173, 99,223,203,139, 84, 85,244,120,240, 60,143,152,152,
- 24,212,174, 93, 27,109,219,182, 69,139, 22, 45,208,185,115,103, 28, 57,114, 4, 71,142, 28,193, 43,175,188, 82,166,185,242,229,
- 28,117,239,222, 29, 61,123,246,188,233,115,227,126,222, 43, 3, 95,242,210,139, 47,190, 8, 0, 55, 27,205,186,127, 13, 86,104,
-104, 40, 20, 10,197, 13, 25, 42, 79,154,102,179,217,105,172,212,106,181, 51, 98,181,122,245,106,159, 51, 56,165,116, 35, 33, 36,
-246,157,119,222,121, 85,173, 86,119, 54, 24, 12, 13, 1, 64,163,209,156,212,235,245, 91, 44, 22,203, 28, 74,105,222,205,164,213,
-213, 96,120,112,243,229,222,226,103,101,101,245, 24, 62,124,248, 70,142,227,106,149,247, 96,102, 23,179,154,156,153,153,217,203,
-155,230, 19, 79, 60,225, 81,211,147,174, 47,154,101,152,195, 82,166,202,117,132,161, 79,153,204,203, 68,162, 50,153, 12, 58,157,
- 14, 43, 87,174, 68, 72, 72,200,125, 85,192,118, 31, 76,255,184,188,229,157,170, 40,183, 1, 8, 29, 48,115,249,229,173,217,230,
- 26,157,170, 40, 46,253,254,250,227,213,189, 24,158, 54, 51,102,204,216,105,181, 90,107,248,152,111, 47,153, 76,166,118, 21, 77,
- 59,165, 20,167, 78,157,146,158,125,246,217,236,172,172,172,193, 55,178,255,219,247, 92,250,172, 93,171,200, 42,131,250,183,107,
- 9, 66, 96, 54,155,202,106, 89,160,148, 82, 42,240, 92,202,182,189, 41,207,222,201,115, 70, 41, 61, 76, 8,153, 90,167, 78,157,
- 23, 0,148,117, 37, 92,230, 77, 39, 25, 48, 43, 76,166, 79, 19, 18, 18,222,124,235,173,183, 2,251,246,237,139,106,213,170, 33,
- 32, 32,160,194,105,218,185, 47,245,133,214, 9, 17,209,143,246,107,215,131, 35,132,154,204, 38, 47,209, 5,251,241, 20,248, 83,
-219,246,166, 52, 43, 47, 58,239, 48,229,183, 34,218,208,117,208,211,232, 58,232,105,103,126,218,188,162, 19, 18,211, 54, 32,158,
- 75,131,233,235,118, 32,254,142,172,238,125,154, 27,142,227,208,247,251,149,144,203,229,206,116,182,153, 81,122, 92, 64,189,151,
-124,127,150,186,235,190,187, 70,176, 60,212,197, 21,234,131,197,243, 60,178,179,179,113,250,244,105,100,102,102, 66,175,215,227,
-196,137, 19, 48,155,205,200,205,205,133, 99,164,225,141,164,179,178,206,209,157,212,252, 47, 24,171, 27, 50, 88,148,210,212, 7,
- 30,120,192,219,197,184, 66,163,140, 4, 65, 48,182,107,215,142,120, 26,109,224,248,172, 86,171, 13, 62,166, 47, 15,192,100, 0,
-147,237,207,155,130,217,108,190,233,142, 36,162, 40,166,183,106,213,138, 47,175, 79,130, 36, 73,153, 94,204, 80, 49,128, 74,125,
-116,248,173,208,244, 80,104,196, 23, 94,120,161, 92, 39,165,213,106,203,237, 92,228,109, 34, 81,189, 94,159, 49,124,248,112,209,
-181,169,217,117, 34,210,251, 26, 66, 47,245, 30,242, 76,141,173,217,230, 26, 0,224, 48, 89,160,244, 82, 89,155, 28, 56,112, 32,
- 19, 64,157, 91,157,180, 11, 23, 46,152, 31,120,224,129, 37,133,133,133, 47, 82, 74,245, 55,170,179,115,127,250,196,123,237,180,
- 80, 74, 15, 3, 24,117,179, 58,102,224, 68,184,209, 56,122,242,187,239, 62,250,222,187,239,214,147,128, 16,216,231,168,226,125,
- 48,105,174,236, 57,152, 81,233,115,131,137,162,152,218,166, 77,155, 10,111,227,109,121, 57, 51,137,227, 39, 84, 3, 14, 86, 92,
-243, 86,164,211,161,217,180,105, 83, 52,111,222,220,249,238,192,245,247, 22, 45, 90,248,164, 25, 23, 23,135, 70,141, 26,149, 57,
- 67,187,123,159,171, 59,189,239, 14, 28,183,190, 45, 90,172,175, 52,205,155, 77,231,189, 95,189,223,194, 33,209,247, 98,191, 25,
-166,201, 52,153,166,115, 29,158, 82, 42,178,227,201, 52,153, 38,211,188, 29,154,247, 27, 28, 59, 4, 12, 6,163,140, 40,142,200,
-142, 2,131,193, 96,220,160, 9, 5,208,164,140,202,213,103,103, 74, 8,105, 82,209, 63,246,225,238,153,105, 50, 77,166,201, 52,
-153, 38,211,100,154,247,153,166, 55,237,251, 37, 50,198,154, 8,153, 38,211,100,154, 76,147,105, 50, 77,166,121,199, 53,239, 55,
- 88, 19, 33,131,193, 96, 48, 24, 12, 70, 37, 35,176, 67,192, 96,252,183,153, 66,200, 77,221,104,189, 71,169,196,210,201, 96, 48,
- 24,165, 97, 17, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193,248, 79,
-113, 75, 71, 17, 50, 24,140,187, 31,214, 7,139,193, 96, 48, 42, 31, 22,193, 98, 48, 24, 12, 6,131,193,168,100, 4,160,244,131,
-138, 41,165,132, 29, 22, 6,131,193, 96, 48, 24,183,147,251,205,139, 8,204, 88, 49, 24, 12, 6,131,193,184, 27,184,159,188, 8,
-231,201, 57, 50, 24, 12, 6,131,193, 96,220,110,238, 39, 47,194,221,143,174,145,193, 96, 48, 24, 12,198,189,199,125, 27,193, 98,
- 81, 44, 6,131,193, 96, 48, 24,119,138,251,201,139, 8,247,155, 99,100, 48, 24, 12, 6,131,113,239,113,191,121,145, 91, 58, 77,
- 3, 33,164, 9,211,100,154, 76,147,105, 50, 77,166,201, 52,153,230,127, 13, 54, 15, 22,131,193, 96, 48, 24, 12, 6, 51, 88, 12,
- 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96,252,167, 16,216, 33, 96, 48,254,219,220, 43,207,232, 99,207, 18,100,
- 48, 24,247, 18, 44,130,197, 96, 48, 24, 12, 6,131, 81,201, 16, 0, 30, 71, 2, 80, 74,143,249, 44,114, 3,163, 9,188,233, 51,
- 77,166,201, 52,153, 38,211,100,154, 76,243,254,211,244,166, 93, 17,255,113, 87, 27, 44, 74,111,221,124, 94,132,144, 38,149,125,
-160,152, 38,211,100,154, 76,147,105, 50, 77,166,121,255,105,222,111,176, 38, 66,134,123,161, 17, 8, 33,194,141, 46,191, 93,154,
- 12, 6,131,193, 96,220,205,176,139, 26,195,213,232,180, 6,208,199,254,121, 45,165,116, 79, 69,150,223, 46,205, 59, 69,124,124,
-188, 90,165, 82,117,255,251,239,191,229,167, 78,157,194,222,189,123,233, 79, 63,253,100, 53, 26,141, 27, 18, 19, 19, 13, 44, 7,
-221, 31,196,197,197,245, 32,132,140, 7, 0, 74,233, 71,135, 14, 29, 90,127, 19,101,138,212,169, 83,231, 21,133, 66,209, 91, 38,
-147, 69,138,162, 72, 76, 38, 83,186,193, 96,216,152,150,150, 54,147,222, 64,199,125, 66, 72,203, 42, 85,170,140,138,141,141,173,
-119,225,194,133,148,203,151, 47, 47, 6,176, 30, 64,143,234,213,171, 15,143,137,137,169,150,148,148,116, 38, 59, 59,123, 1,165,
-244,192,157, 74, 39,131,193, 12,150,111,133,143, 11, 10, 10,122, 72,173, 86,191, 90, 84, 84, 20,231,239,239,159,100,179,217,230,
-102,100,100,172,101, 5,239,190, 49, 87, 2,128, 62,148, 82, 25, 0,240, 60,223,191,117,235,214, 53, 8, 33, 18, 33,132, 82, 74,
- 9,199,113, 45, 68, 81,228,236,235,247, 33,132, 28,160,148,218,110, 84,211,102,179, 85, 88,243, 86, 17, 27, 27, 59,141, 82, 26,
- 89,222, 58, 90,173, 54, 97,243,230,205, 13, 86,173, 90,101, 91,188,120,113,222,227,143, 63,174,123,234,169,167,132, 69,139, 22,
-125, 9,224,127,238,235, 55,110,220,248, 51,142,227,170,248,242,255,146, 36,101, 31, 63,126,252, 53,150, 19,239,138,178, 48,254,
-153, 25, 91, 59, 72, 20,248,110, 66, 71,206,110, 94,110,136, 22, 45, 90,252,240,200, 35,143, 12,169, 95,191,190, 32, 73, 18,172,
- 86, 43, 76, 38, 83,131, 67,135, 14,117, 90,191,126,125, 2,128,193, 21, 76, 91,159, 9, 19, 38, 44,156, 58,117,106,168, 76, 38,
- 35, 86,171,245,193,159,127,254,185,231,168, 81,163, 14, 47, 88,176,160,249, 99,143, 61,230,231,248,253,189,247,222,235, 69, 8,
- 25, 75, 41, 93,118,187,211,201, 96, 48,188, 24, 44, 63, 63,191,186,161,161,161,175,135,132,132,244, 74, 72, 72,200,127,254,249,
-231,207, 31, 57,114,228, 68,108,108,108,209,247,223,127,255,161,213,106,157, 87,191,126,253, 13, 5, 5, 5, 51,175, 92,185,114,
-162,130, 21, 69, 93, 0,207, 3,232, 5, 32, 26, 64, 58,128,117, 0, 22, 82, 74, 79,221,200,206, 68, 69, 69, 53,213,106,181,111,
- 18, 66, 30, 44, 46, 46,142,214,106,181,233,148,210,125,133,133,133,159,100,100,100, 28,186, 17,205,232,232,232,218, 0,198, 8,
-130,208, 94, 20,197, 90, 60,207, 95, 18, 69,113,135, 40,138, 95,164,167,167,159,185, 17,205,182,213,252,250, 74, 58,255,153, 86,
- 94, 93,173,200,104,147,235,148,130, 85, 38, 25, 83,164,226,188, 9,251, 46, 23,253,122, 55,100, 12,133, 66,193, 45, 94,188,184,
-185, 66,161, 0, 0,152,205,102,196,198,198,222,212,115,162,100, 50, 25,247,201, 39,159, 52,151,203,229, 0, 0,139,197,130, 46,
- 93,186,220, 21,207,158, 34,132, 68, 39, 38, 38, 6, 56,210,230,142, 40,138,232,223,191,127, 77,133, 66,129, 5, 11, 22,216,178,
-179,179,227,190,251,238,187,196, 47,191,252,178,202, 15, 63,252, 48,200,147,193,226, 56,174, 74, 89,154,162, 40,194, 98,177,192,
-102,179,193,108, 54,163,115,231,206,172, 54,186, 75,160,148,214,160, 0,214, 29, 49, 2, 64,200,205,104,169,213,234,134, 3, 6,
- 12, 16,178,178,178, 32,147,201, 96,177, 88,112,229,202, 21,212,174, 93,155, 55,155,205,245, 43,170,215,160, 65,131, 81,211,167,
- 79, 15,251,243,207, 63, 45, 75,150, 44, 49,117,235,214, 77, 62,114,228, 72,255, 14, 29, 58,180,143,142,142,230,190,251,238, 59,
-211,166, 77,155, 44, 79, 60,241,132,114,218,180,105, 97,235,214,173, 27, 2, 96,217,237, 78, 39,131,193, 40,199, 96,249,249,249,
-109,211,233,116,117,158,123,238,185, 83, 47,190,248,226, 6,157, 78, 39, 2,192,149, 43, 87,148,253,251,247,207, 26, 56,112,224,
- 85,189, 94,207,207,155, 55,175,250,231,159,127,190,209,207,207, 47,173,176,176,176,149, 15, 23, 50, 2,224, 85,142,227,198,116,
-239,222,125,155,213,106,205, 90,185,114,229, 47,131, 6, 13,106, 39, 73,146,246,239,191,255,254,131, 16,242, 21,128, 79,125,141,
-142, 17, 66,248,152,152,152,201,209,209,209,111,204,159, 63, 95, 89,171, 86, 45,104, 52, 26, 20, 22, 22, 86, 63,115,230, 76,181,
- 87, 95,125,181, 95,237,218,181,231, 6, 4, 4,188,147,152,152,104,245, 81,147, 68, 70, 70,254,207,223,223,255,131, 15, 63,252,
- 80,213,184,113, 99,162,209,104,144,156,156,220,100,207,158, 61,177,223,126,251,237,200,232,232,232, 41,105,105,105, 62,167,179,
- 19, 33,130,169, 78,232,250,192, 6,173, 58, 47, 88,248, 45,169,162,213, 64, 32, 4, 86,139, 69,150,169, 55,196,188, 60,250,133,
- 95, 90,215,171,186,171, 80,150,217,245,248,113,106,185,205, 23, 21, 27, 33,100, 45,207,243,253, 21, 10, 5,215,191,127,127,108,
-218,180,137, 24,141, 70, 1, 0, 84, 42,149,173,127,255,254, 80,171,213, 48,155,205, 18,128,181,246,109,148,246,237, 77,229,105,
-202,100, 50,174,115,231,206,250,131, 7, 15,230,232,245,122,153, 67,179,115,231,206,193, 74,165, 82, 99,181, 90,125,210,188,197,
-166, 18,231,206,157,187,206, 8, 93,189,122, 21, 57, 57, 57, 48,153, 76, 36, 55, 55, 23,162, 40,194,100, 50,101,137,162, 8,142,
- 43, 9,190,149,165, 41,151,203,113,250,244,233,235,126,183, 88, 44, 48, 24, 12,176, 90,173, 40, 40, 40, 80,171, 84,170, 58,237,
-219,183, 79, 5,176,170,168,168,104,230,225,195,135, 47,177,234,233,142,113,249,143,127,140,213, 1, 88, 0, 92,184, 73,227, 46,
- 1,192,142, 29, 59,144,153,153,137,172,172, 44,100,101,101,161, 90,181,106,184,145,232,255,169, 83,167,230,180,104,209,130, 28,
- 62,124,120, 13,128,133,203,151, 47, 31,112,237,218,181,249,227,198,141, 11,254,228,147, 79,174,189,249,230,155,163, 1,252,190,
-124,249,242,167,155, 54,109,218,247,232,209,163,179,239, 68, 58, 25, 12, 70, 57,157,220, 41,165,145,117,235,214,189, 54,107,214,
-172, 6, 19, 38, 76, 8, 41, 42, 42,226, 1, 32, 50, 50,210, 8, 0,122,189,158, 31, 63,126,124,232,140, 25, 51, 26, 40,149,202,
- 92,155,205, 22,234, 65,195,211, 8,131, 49,254,254,254,253,206,159, 63,191,188, 65,131, 6,193,211,167, 79,255, 71,171,213,210,
-217,179,103, 31,170, 93,187,118,196,165, 75,151,126,244,247,247,239, 2,224,141, 50,210,117,157,102,205,154, 53,223, 27, 52,104,
-208, 27,187,118,237, 82, 54,107,214, 12,126,126,126,224,121, 30,129,129,129,120,224,129, 7,200,246,237,219,149,189,123,247,126,
- 37, 63, 63,255, 19, 95, 53,163,162,162,222,232,217,179,231,135, 7, 15, 30, 84,119,237,218,149, 40, 20, 10,228,229,229, 65,161,
- 80,160,117,235,214,100,254,151, 95,168,155, 52,110,244, 94,116,116,244, 84, 95, 53, 77,117,171,108,124,252,197,241, 93,214,174,
- 91, 79,194,195,195,113,254,211,169,216,209, 33, 22,103,223,159,128,136,136, 8,172,249,243, 47,210,103,196,139,237,252,173,225,
-127,251,170, 89, 9,198,234,152,203,231, 61,177,177,177,137, 39, 78,156, 64,251,246,237,241,203, 47,191, 52, 27, 55,110,220,139,
-227,198,141,123,241,151, 95,126,105,214,190,125,123,156, 56,113, 2,177,177,177,137,148,210, 61,132,144, 23, 1, 92, 3,112,205,
-254,185, 76,205,109,219,182,161, 75,151, 46,185,203,151, 47,175, 61,105,210,164,105,147, 38, 77,154,246,203, 47,191,196,116,233,
-210, 37,119,219,182,109, 21,210,188, 21,251,238,106,168,220, 95,148, 82, 72,146,132,176,176,176,171,127,254,249, 39,237,211,167,
- 15, 95,181,106,213,244,254,253,251, 43,247,237,219, 71, 9, 33,107, 43,146, 78, 74, 41, 12, 6, 3, 12, 6, 3, 46, 92,184,160,
-158, 59,119,110,187, 55,222,120,163,238,207, 63,255, 28,245,202, 43,175,140,246,247,247, 63,212,188,121,243, 26,183,123,223,153,
-166, 51,242,120,197,110,174,138, 57,142,187,124,163,154,143, 62,250,104,147, 26, 53,106,132,255,156, 20,132, 92,121, 3,136,178,
- 0, 72,242, 64,136, 33, 45,113, 86,222, 19,145,145,145,225, 53,106,212,104, 93, 17, 77, 74,233,198,127,254,249,167, 23,165,116,
- 1,165, 84,164,148,174,120,243,205, 55,159, 37,132,252,250,230,155,111,190, 64, 41, 93, 97,255,253,155, 35, 71,142,244,165,148,
-110,185, 19,233,100,121,137,105,222, 2, 90, 2,120,216,254,106, 5,224, 1,183,239, 10,183,245,186,149,241,254,176,219,247,150,
-110,219,181,172, 84,131, 69, 8,161,142,151,203, 29,141,245,227,143, 63,222,251,237,183,223,110,202,200,200,136,136,137,137,121,
-120,192,128, 1, 53, 10, 10, 10,184,129, 3, 7,214,140,136,136,232,179,101,203,150,170, 3, 7, 14,252,123,208,160, 65,123, 8,
- 33, 94,251,205, 16, 66,106,243, 60, 63,246,240,225,195, 59,107,214,172,105, 73, 79, 79,247,107,209,162, 69, 33, 0,212,171, 87,
- 79,159,147,147,163,246,243,243,195,159,127,254,185,159, 16,242, 60, 33,164,129, 55,205,200,200,200, 22, 85,170, 84,121,227,131,
- 15, 62, 80,242, 60,239,113, 29,165, 82,137, 15, 62,248, 64,233,239,239,255, 92, 84, 84,212,131,222, 52,171, 86,173,218,208,207,
-207,111,242,220,185,115, 85,102,179, 25, 22,139, 5,225,225,225,208,233,116,200,200,200, 64,218,197,139,184,154,156,140, 87,158,
-121, 70,173, 85,171,199, 70, 70, 70, 54,247,166,217,190,166, 95,127, 93, 84,163, 78, 47,143,121, 21,199, 95,125, 6,155,162, 20,
-168, 58,102, 60,154,109, 61,134,232, 41, 51,177, 37,198, 31,137,131, 31,194,216,177,175, 67, 30, 22,211,166, 77, 53,221,227,119,
- 36,164, 41, 8, 84,169, 84,194,104, 52, 10, 59,118,236,104,111,179,217,100, 54,155, 77,182,125,251,246, 78, 27, 54,108,232, 53,
-125,250,244, 30,106,181,122,116,235,214,173,127, 32,132,204,161,148,170, 41,165,106, 0,159, 56, 34, 79,158, 52,101, 50, 25, 12,
- 6,131,236,224,193,131, 47,136,162,168, 16, 69, 81,113,240,224,193,151,182,108,217, 50,124,193,130, 5, 21,214,188, 93,240, 60,
- 15, 65, 16, 32,147,201,208,188,121,243,243, 75,151, 46,181, 70, 70, 70, 10, 95,127,253,117, 80, 88, 88,152,246,135, 31,126,200,
-203,205,205,253,184, 34,154,102,179, 25, 38,147, 9, 6,131, 1, 59,118,236,168,245,220,115,207, 9,102,179, 89, 28, 49, 98,196,
- 53,171,213,106,122,233,165,151,252,117, 58,221,235,236,254,239,206, 64, 41, 21, 1, 20, 3, 40,114, 68, 81,107,214,172,169,140,
-138,138,106, 90,179,102, 77,159,243, 99, 81, 81,209, 87,159,125,246, 89, 52,167, 12,196, 78,115,111, 44,167, 83,177, 49,240, 75,
-100,213, 28,135,240,106,117,209,179,103,207, 48, 66,200, 23,149,144,222, 85,148,210, 65,148,210,223,110,100,251, 91,157,206,150,
- 45, 91,182, 79, 72, 72, 56, 24, 31, 31,159,145,144,144,112,176,101,203,150,237,111,118,159,167,142, 34,221, 62, 26,195,167,190,
- 63,154,208,143,198,240,169, 83, 71,145,110, 44,231,222,251,120,242, 34, 46,132, 18, 66,214, 18, 66,214, 78,156, 56,177, 51,128,
- 16,183,239,109, 92,215, 3,160,240,244,238,120,185,252, 30,106, 55, 86,161, 46,223, 43,231,122,234, 82, 72, 61, 54,115,132,134,
-134,154,223,122,235,173,195, 70,163,241,216, 15, 63,252, 80,231,197, 23, 95,108, 81,163, 70,141,211, 3, 7, 14,252, 67,163,209,
-216, 28,125,116,124,228,153,222,189,123,255, 25, 28, 28, 76,178,179,179,229,102,179, 89,184,114,229,138, 92, 20, 69,194,243, 60,
-213,235,245,194,217,179,103,101, 22,139, 69,122,240,193, 7, 87,239,217,179,231,121, 0, 99,203, 19,212,104, 52, 47,125,253,245,
-215,170,178,204,149, 40,138, 40, 42, 42,130,205,102,195,148, 41, 83, 84,111,188,241,198,171, 0,246,150,167, 41,147,201, 94,153,
- 53,107,150,202,209, 4, 36, 73, 18, 14, 29, 58,132,236,171, 87, 97, 42, 44,128,185,176, 0,230,252, 92,112, 69,249, 24,222,171,
-135,106,193,111, 43, 95, 3, 48,188,220,139,170, 82, 55,227,135,133,223, 66, 20, 69,164,175,244,220, 37,226,218,174,173, 16,109,
- 86, 76,251,232, 19, 50,246,153,199,166, 3, 88,126,183,100,124,133, 66,193,125,250,233,167, 13, 20, 10, 5, 8, 33,212,108, 54,
-163,113,227,198,228, 38, 53,249, 57,115,230,180,144,203,229,196,161,217,164, 73, 19,114,183, 21,122,185, 92, 14,181, 90,141,154,
- 53,107, 26,250,246,237,187,103,206,156, 57,213,121,158,215, 8,130,240, 87,126,126,254,244,164,164,164, 10, 53, 35,153, 76, 38,
- 24,141, 70, 24,141, 70, 92,190,124,185,106,157, 58,117,200,255,254,247, 63,177,184,184, 56,230,155,111,190, 57,183,124,249,114,
-205, 23, 95,124, 49, 16,192, 24, 86,229,222, 94,234,212,169,163,240,247,247, 15,168, 30, 34, 20,203,120, 20,103,216,108,225,209,
-209,209,227, 1, 36,212,171, 87, 47,232,236,217,179,185, 81, 81, 81,123, 57,142, 91,150,146,146,146,225,197,248, 16,155,205,134,
- 23, 90,229, 97,244,131, 28,108, 54, 27,242,242,242,112,249,242,101, 36, 37, 37, 97,223,190,164, 27, 74, 99,173, 90,181,158, 81,
-169, 84,221, 21, 10, 69, 77, 81, 20, 57,189, 94,127,201,100, 50,109, 74, 79, 79,255,138,222,192,196,134,183, 42,157, 46,250, 51,
- 7, 12, 24, 16, 25, 16, 16,128,127,254,249, 39,242,200,145, 35, 51, 1, 36,220, 84,221, 33,227,190, 27,241,236, 23, 81,193,129,
-129, 72, 62,177, 38,106,213,186,159,191, 67, 73, 95, 94,198,189,127,131, 83,214, 53, 32,139, 82,234, 28,113, 62,125,250,244, 62,
-246,245,251,184,126,247, 65,191,143, 7, 99,183,214,211,239,149,102,176, 28, 35,197,202, 90, 81,165, 82,137,163, 70,141, 58,189,
-122,245,234,154, 9, 9, 9, 39,203,234, 12,236,133,182, 13, 26, 52,184,180,127,255,126, 26, 26, 26,106,150, 36,137,104, 52, 26,
- 81,173, 86, 75,249,249,249,176, 90,173,244,210,165, 75,194,229,203,151,229, 85,170, 84,145,251, 18,170,147,201,100,173,107,213,
-170, 85,102,164,160,168,168, 8,133,133,133, 48,153, 76, 8, 15, 15, 39, 28,199, 61,224, 53,172,199,113,237, 26, 52,104, 64,114,
-115,115, 17, 25, 25,137,157, 59,119,162, 40, 63, 15,166,194, 66,152,242,243, 96, 41,200,135, 88,144,135,188,171, 25,168, 25, 17,
- 77,236, 83, 13,148,139,141, 87,215, 8,211,105,113,118,234,120,180, 60,116, 9, 68, 38,199,254, 38, 17,160,214,146,174, 86,173,
-142,166,131,200, 21, 56,249,202, 83,168, 58,236, 57, 88, 57,101,212,157,200,220, 54,155,141,152, 76, 38,168, 84, 42, 91,251,246,
-237,119,240, 60,223, 73,161, 80,112,163, 71,143,198,149, 43, 87,156,217, 5, 0, 70,143, 30, 13,181, 90, 13,147,201,100, 3, 48,
-174,172, 62, 83, 54,155,141, 88,173, 86,168,213,106,107, 66, 66,194, 87, 60,207,191,164, 80, 40,248,250,245,235,103,206,152, 49,
- 35, 93,171,213,106, 47, 95,190,124, 77,161, 80,164,214,172, 89,179,149, 90,173,174,225, 77,243,118,162, 84, 42, 33, 8, 2, 56,
-142, 67, 72, 72, 72,113, 78, 78,206,190,243,231,207, 15,189, 17, 45, 81, 20, 97, 54,155, 97,181, 90, 97, 52, 26, 33, 73, 18,142,
- 28, 57, 2,165, 82, 41, 19, 69, 49, 73, 20, 69,141, 76, 38, 3,207,243,108,142,186,219, 76,124,124,124,167,102, 85,253,103,142,
-142, 48, 5,213,238,163, 45,210, 40,249,226, 33, 43,173, 45,187,117, 27,220, 99,220,184,241,186, 42, 85,170, 40, 46, 94,188,104,
-156, 61,123,118,173,223,127,255,157, 0,248,180, 60,189,244,244,244, 95,103,204,152, 17,220,169, 83,167, 24,153, 76, 70,242,242,
-242,144,149,149,133,171, 87,175,226,242,229,203, 52, 57, 57,249,188,205,102,251,165, 34,105,108,214,172,217, 55,195,134, 13, 27,
-209,184,113, 99, 25,165, 20, 86,171, 21,122,189,190,197,190,125,251,250,237,220,185,179, 61,128, 10,231,203,140,140,140, 95, 62,
-250,232, 35,109,199,142, 29, 27,200,100, 50,174, 50,210,233,118, 65,139,212,233,116,216,180,105, 19,252,253,253,225,109,180,174,
- 47, 88,108, 82, 84,112, 96, 8,140,103, 62, 67,164,127, 13, 88,108, 82, 20,203,193,247, 79, 20,171, 12, 47,114, 0,192,195, 55,
-107,134,110,149,153,186,161, 8,150,131, 43, 87,174, 40,139,138,138, 4, 73,146, 56,147,201, 36,147, 36, 9, 50,153,204, 90,193,
-255,107, 60, 96,192,128,189, 45, 91,182,212,219, 35, 24,182,128,128, 0, 91,126,126, 62,236, 6, 75, 18, 4,193,168,211,233,140,
- 49, 49, 49, 0,224,181,137,208, 96, 48, 84, 87,171,213,215,253,174,215,235, 81, 84, 84,228, 52, 88,122,189, 30,254,254,254, 40,
- 46, 46,246, 90,184, 69, 81,172,169,209,104,144,158,158, 14, 0, 40,202,203,133,177,160, 0,150,194,124, 88,242,114, 97,205,207,
-131, 53, 63, 23,156,193,128,192,232,106,176,217,108,213,188,105, 22,155, 68, 5, 15,138,171,107,127, 69,248, 75,227,202, 92,239,
-218,142, 45,208,213,169, 15,131,193, 34,220,129,140,221,154,227,184,248, 70,141, 26,161,127,255,254, 24, 60,120,240, 17,181, 90,
- 29,246,197, 23, 95, 52, 78, 75, 75,187,110,253, 71, 30,121, 4, 99,198,140,193,128, 1, 3,126,252,231,159,127,230,149,167,217,
-177, 99, 71,116,238,220, 57,120,240,224,193,201, 58,157, 46,113,225,194,133,173,166, 76,153,146,169,215,235,211, 18, 19, 19,155,
-166,166,166,106,234,213,171,183, 53, 54, 54,150,251,243,207, 63,107,148,167,121, 7, 76, 39,172, 86, 43, 44, 22, 11, 76, 38,147,
-215,178,226,118,113, 41,245,221,106,181, 58, 71, 16, 26,141, 70, 88,173, 86,178,106,213, 74,172, 89,179,134, 59,113,226,120,244,
-132, 9, 19,145,151,151, 7, 81, 20, 89, 77,123,155, 72, 72, 72,232, 37, 80,233,235, 39,170,218, 84, 79,132,219,138, 4,142, 22,
-157,249,246,157,226, 35,129,130,201, 84, 76,252,222,126,231,157,160,115,231,206, 89, 62,250,232,163,140,254,253,251,171,158,125,
-246,217, 70,127,254,249,103,251,234,213,171,127,123,249,242,229,188, 50,242,189,252,153,103,158,217, 27, 20, 20, 84,123,201,146,
- 37,153,233,233,233,193, 86,171, 85, 99, 54,155, 45,102,179,249,156,197, 98,217,105, 54,155, 55,101,100,100, 36, 86, 36,173, 58,
-157,174,217,227,143, 63, 46,203,205,205,133, 32, 8,176, 88, 44,200,202,202, 66, 92, 92, 28,191,121,243,230,198, 55,178,255,199,
-143, 31,255, 44, 50, 50,114,235,154, 53,107,186,107,181,218,120,133, 66, 81, 85, 20, 69,209,104, 52,102, 26,141,198,195, 55,146,
- 78,183, 99,145,126,232,208,161, 72, 63, 63, 63,164,165,165,129, 16,146,126,179,231, 76, 46,227, 82,146, 79,174,174, 22,233, 95,
- 11,167, 78,237,133, 92,198,165,176,156,124,223, 71,176, 90,186, 70,172,202, 49, 73,134, 9, 19, 38,188, 69, 8, 89, 59, 97,194,
-132,183,202,137, 96,137,174,235,185,172, 95,105, 55,245,229, 94,196, 11, 11, 11,133, 3, 7, 14,132, 92,190,124, 89, 87,181,106,
- 85,125,108,108,108, 30, 33,132,138,162,200, 93,187,118, 77,155,154,154,170, 10, 10, 10, 50, 85,171, 86, 45,223,199,255, 59,243,
-242,203, 47,119,156, 52,105, 82,226, 67, 15, 61,148, 13, 0,185,185,185,200,202,202,114,140,210, 66,122,122, 58,119,240,224,193,
-224,191,254,250,171, 5,124, 24,193,163, 86,171, 47, 23, 22, 22,214, 15, 12, 12,116, 94,208, 28,166,202,245,221, 98,177,160,176,
-176, 16, 90,173,214,107,225,230, 56, 46, 45, 45, 45,173,142,193,160,199,165,179,103, 97, 42,204,135,165, 32, 31,214,130, 60, 88,
-243,242, 32,230, 93, 3, 87, 84, 8,157, 90,141,194,107, 57,224,121,254,138, 55, 77,173,146, 55, 91,109,162, 34,180,103, 63,128,
-148,125,125, 14,124,160, 29,104,195,102, 80,171,127,179,222,206, 76,237,152,179,202, 49, 39,149, 90,173,198,135, 31,126,136,196,
-196, 68,169,188,102, 96,133, 66, 1,142,227, 68, 95, 52,149, 74,165,122,210,164, 73,234,195,135, 15,171, 20, 10, 5,116, 58,157,
-230,240,225,195, 77,119,239,222,205,233,245,122,190, 78,157, 58, 3,162,162,162,138,202,211,188,213, 70,202,211,111, 69, 69, 69,
-206,126, 83,215,174, 93, 19, 84, 42, 85,189, 14, 29, 58,236, 49,155,205,191,216,108,182,239, 19, 19, 19, 11,202,188,211,182, 92,
- 63, 24, 84,146, 36,216,108, 54,216,108, 54, 8,130, 32,173, 90,181, 26,159,207,155,131, 21,203,127,163, 29, 59,118, 36,127,254,
-249, 39, 36, 73, 74,101, 85,237,237, 65,146,164,153, 91,198, 63,170,130, 40, 22,153,182, 46, 45, 94,159, 35, 20,127,123,108,203,
-193, 28,171, 73, 89,183,110, 76, 67,127,191, 0,238,135,197,223, 94,203,200, 60,127,230,243,207, 83,171, 77,155, 54, 45, 48, 38,
- 38, 38,224,244,233,211, 81, 0,242,202, 48, 66, 53,159,122,234,169,145,215,174, 93,147, 45, 92,184,112, 81, 90, 90,218,118, 74,
-233,121,183,242, 17, 71, 8,249, 4,128, 12, 64, 56, 0, 27,128,141,148,210, 31,203, 41,167, 18, 33, 4, 91,183,110,189,110,180,
-159, 36, 73, 55, 60,218, 47, 35, 35, 35,247,129, 7, 30,104,118,230,204,153, 85,185,185,185, 75,220,151,107, 52,154,126,177,177,
-177, 67,246,239,223,255, 46,165,244, 92, 5, 47,152, 99, 79,156, 56,241,177, 36, 73, 53, 56,142,187, 68, 41,125,243,102,207,153,
-217, 34, 61,187,122,221,242,133,102,171, 88, 93, 33,227, 47,155, 45,210,115, 44, 39,223,247, 56,250, 72,193,213, 56,121, 48, 70,
-187,167, 79,159,174,158, 49, 99, 6,166, 79,159,158,228, 41,130,229, 48, 90,211,167, 79, 79,114,172,231,178,254,246, 74, 53, 88,
-158, 28,163,205,102,211, 77,156, 56,177,109,139, 22, 45,210, 59,117,234,148, 81,171, 86, 45,189, 75, 97, 51, 7, 6, 6,154, 77,
- 38,147, 50, 61, 61, 61,244,228,201,147,181, 36, 73, 82,251,240,127,127, 7, 6, 6, 6, 31, 60,120, 48,100,217,178,101,117, 15,
- 29, 58, 84, 99,216,176, 97, 29, 77, 38, 19,204,102, 51, 46, 92,184, 80,227,235,175,191,150,228,114,121, 30, 33,228, 0, 0,175,
- 23, 89,171,213,186,231,204,153, 51,245, 30,120,224, 1, 98,181, 90, 75,153, 42,215,207, 10,133, 2,105,105,105, 84,146,164,125,
- 62,164,115,239,193,253,251,235, 52,105,212, 8,166,252, 92,152, 11,242, 96,201,207,131, 45, 63, 15, 82, 65, 30,184,162, 66,132,
- 4,203,160, 86,107,113, 38, 61, 3,246,180,150,139,204,102, 72, 78,203, 47,168, 95,103,242,167,216, 18,227, 15,106,181, 56,155,
- 5, 1, 56,155, 11,219,156,204,194,142,221,123, 32,136,166,180, 59,153,147,205,102,179, 52,112,224,192,253, 28,199, 53,169, 44,
- 77,171,213, 42,189,248,226,139, 78,205,148,148,148,107, 41, 41, 41, 42,131,193,192,233,116,186,162, 59, 93,122,173, 86,171, 71,
-131,100, 54,155, 97, 48, 24,144,145,145,161,216,184,113, 99,251, 61,123,246,200,143, 31, 63,142, 61,123,246, 52, 95,181,106,213,
-196,134, 13, 27, 54, 59,121,242,228, 21, 95, 76,155, 36, 73,112, 92, 7, 41,165,160,148,242, 0,176,250,247,181,232,217,179, 39,
- 41, 44, 44,196,154, 53,107, 42,165, 25,133,225, 51,197,176,137,106,243,182,165,197,175,159, 85, 20, 36,233,133, 15, 18, 19, 19,
-215,247,238,221,123, 71,100,120,140, 63, 0, 40,229,186, 80,158,250,233, 66, 67, 67,149, 0, 16, 25, 25, 25,111,181, 90,231, 1,
-104,231, 73,240,145, 71, 30,105, 19, 22, 22,214, 98,221,186,117,135,211,210,210,118,184,155, 43, 0,168, 95,191,254,148, 99,199,
-142,245,146,201,100,196,165,242,167, 0, 60, 26,172, 71, 31,125,180,126,116,116,116,200,159,103, 2, 80, 32,175, 3,137,203, 3,
-229,149, 16, 3,155,225,146,188, 49,194,195, 79,134,212,169, 83,167,249,185,115,231, 14, 87,240,230,170,250, 99,143, 61,246,199,
- 55,223,124,211,176,103,207,158, 10, 0,215, 25,172,134, 13, 27, 14,220,188,121,243,160,209,163, 71, 55, 35,132,244,165,148,158,
-245, 85, 63, 49, 49,113, 23,128,214,149,121,194, 38, 45,160,155, 0,212, 96, 89,247, 63, 19,189, 2, 92,250, 96, 1,200, 66,201,
-179,148, 93,191, 59,242,189,217,101,221, 44,151,168,149,217, 45,234,229,105, 89, 22,128, 74, 11,110, 8,229,220,121,111,188,112,
-225, 66,203,199, 30,123, 44,203,213, 92,185, 30, 0,157, 78,103,242,247,247, 47,218,191,127,127,164, 40,138, 91,125,248,191,133,
-155, 55,111,222, 50,119,238,220,165,193,193,193,214,225,195,135,115,227,199,143,223,145,147,147, 67,115,114,114,240,197, 23, 95,
-116,104,223,190,253,142, 75,151, 46,137,137,137,137, 79, 3,232,233, 77, 80,175,215,127,249,210, 75, 47, 13,217,177, 99,135,202,
-108, 54, 35, 47, 47,239,186,232,149,213,106, 5,207,243,152, 55,111,158,169,184,184,120,142, 15,145,140,175,190,252,242,203, 65,
- 95,127, 62, 87, 37, 88, 45,208,231,229, 66,180,191,120, 99, 49,116, 42, 14,117, 90,132, 34, 47, 93,137,197,235,118, 25,108, 54,
-219,151, 94, 13,150,177,104,220,232, 23,158, 95,187,241,239, 45, 8,105,215, 5,217, 91,254,186, 62, 26, 20, 26, 14,179,197,130,
- 15,166, 78,166,196,144, 55,254, 54,103,108,155,125,116,133, 35, 3,174,253,231,159,127,246,180,104,209,162,151,217,108, 46,207,
-136, 65,146, 36,254, 70, 52,149, 74,101,106,253,250,245,255,174, 93,187,246, 0, 0,104,212,168,209,239, 28,199,117, 41, 79,243,
- 86, 27,172, 73,147, 38, 97,198,140, 25,152, 48, 97,130,211, 32, 57,110, 0, 76, 38, 83,173,191,254,250, 75,177,107,215, 46,186,
-120,241,226,236, 71, 31,125, 52,112,216,176, 97,129, 75,150, 44,249, 31,128,241,101,105,190,249,230,155, 88,176, 96, 1, 70,141,
- 26,117,221,114,158,231,165,180,180, 84,152,204, 38,186,122,245,234,116, 65, 16,130,102,207,158,173,126,227,141, 55, 8,171,110,
-111, 15,162, 40,190,221,238,179, 85,175, 2,106,171,205,102,155,115,228,200,193,173, 0, 48,120,240,224,176,207, 62,251, 76, 1,
- 0,159,126,242,169,140, 82, 42,115, 76, 12,251,254,251,239,171, 94,120,225,133,176,178, 52,127,253,245,215,220,247,223,127, 63,
-228,217,103,159,237,185,101,203, 22, 21, 33,228, 47,148,244, 33,201,182,223, 56, 86, 1,176, 43, 52, 52, 52, 98,249,242,229,117,
-186,119,239,174,245,234, 2,139,139,191,157, 63,127,126,205,153,219,253,240,103,241, 0,164,208,193,160,193, 20,193,242, 66, 52,
-210, 93, 70,199,136,148,200, 37, 75,150, 44, 4, 16, 95, 1,115,213,248,209, 71, 31, 93,249,205, 55,223,212,122,254,249,231, 83,
-119,237,218,149, 66, 8,153,226, 97,213,156,167,158,122,234,210,162, 69,139,234, 72,146,180,158, 16,210,147, 82,122,134,229, 30,
-198,109,228,192, 45, 90,247,150, 33,148, 99, 50,158, 33,132,196, 78,152, 48,225,227,200,200,200,234,147, 39, 79,190,216,168, 81,
-163, 98,103,105,203,201,209,109,219,182, 45,166,160,160,160,208,102,179,141,160,148, 30,241, 80,120,155,184,205,137,116,137, 16,
-242,113,243,230,205,135,252,252,243,207,219,252,252,252, 10,246,238,221,235,239,239,239,159,127,252,248,113, 45,207,243,250,243,
-231,207, 99,211,166, 77, 29, 0,124,238,233, 46,201, 93, 51, 61, 61,253,159, 90,181,106,125,250,198, 27,111,188,241,238,187,239,
-170, 36, 73,130,193, 96, 64, 97, 97, 33,140, 70,163,179,115,242,178,101,203, 76, 38,147,233,235,180,180,180,189, 62,104,238,169,
- 86,173,218,130, 57,179,231,188,248,220,144,199, 20, 52, 47, 7,249, 25, 6, 16, 99, 49,116, 42, 5, 26,119,137, 66,113, 14,193,
- 55,219, 14,154,175,153, 45,203,211,210,210,182,122,211,220,121,185,240,143, 7,235,134,109,122,127,234,228,110, 19,191,255, 13,
-146, 36,225,228, 75,195,145,187,125, 19, 52,141,154,162,205,201, 44,152,205,102, 76,120,243, 13,240,250,204, 29,123, 47, 23,173,
-240,166, 89, 25,184,106,218,231,161, 58,224, 98,142, 94, 36,132,140,104,216,176, 33, 70,143, 30,141, 71, 30,121,164,212,182, 43,
- 87,174,196,252,249,243, 97, 50,153, 70, 16, 66, 14, 81, 74,231, 85, 68,179, 86,173, 90,173, 26, 55,110,204, 71, 70, 70,234,237,
-102,163, 75, 82, 82, 82,203,134, 13, 27,150,171,121,139,246, 61,247,236,217,179,254,159,124,242, 9,177, 88, 44,152, 50,101, 10,
- 28,198,210, 17,113,122,251,237,183, 35,253,252,252, 48,115,230, 76,115,118,118,118,215,156,156,156,205,115,231,206,173,178,108,
-217,178,161, 14,131,229,166,121,245,196,137, 19,126, 11, 22, 44,224,108, 54, 27, 62,251,236,179,235, 34, 90, 99,199,142,133,197,
- 98,133, 76,144,153, 77, 70, 83, 99,181, 90,125, 46, 40, 40, 72, 45, 73, 18,189, 93,231,253,191,174,121,228,200,145,141, 0, 54,
-150,115,243, 1, 0, 48, 24, 12,200,206,206, 70,118,118, 54, 2, 2, 2, 0,151, 9,102,221, 53, 13, 6,195,225, 55,223,124, 51,
-241,171,175,190,234,185,123,247,238,199,182,111,223,222,123,211,166, 77,198, 75,151, 46,217,172, 86, 43,141,136,136, 16,218,181,
-107,167,234,221,187,183, 86,169, 84,114,111,191,253,118,246,135, 31,126, 88, 5, 64, 78, 57,245, 39, 47, 73, 18, 94,107, 95,128,
- 55, 59, 11, 48,153, 74,110, 40,211,211,211,144,148,148,132, 61,123, 78,129, 16,194, 85,240,120,206, 89,178,100, 73,140, 66,161,
- 32, 75,151, 46,173,190,116,233,210, 87,188, 29,191, 31,127,252,177,230,210,165, 75,231, 17, 66,186, 81, 74, 37,150,151,152, 38,
-163,130, 6,203, 94,160,147, 0,244, 36,132,180,123,254,249,231, 63,106,216,176,161,201,102,179,201,214,175, 95,223, 32, 59, 59,
- 91, 97,179,217,222,164,148, 86,168,189,146, 82,186,128, 16,130,254,253,251,191, 89,187,118,237,205,135, 14, 29,106,246,240,195,
- 15,175, 95,185,114,101, 59,155,205,118,254,216,177, 99, 35, 0,204, 1,240,185,175,154,201,201,201, 83, 54,109,218, 68,246,238,
-221,251,250,132, 9, 19,148,161,161,161, 36, 48, 48, 16, 6,131, 1, 41, 41, 41,116,209,162, 69, 38,147,201,244,121, 64, 64,192,
- 59,190,106,134,134,134,142,223,126,240,160,226,244,185,179, 79, 63,221,235, 33, 85,245,122,245,161, 35, 64,209,181, 28,108,219,
-150,129,239,247, 29, 54,102,155, 45, 63,241, 60,239,243, 80,250,232,115, 89, 61, 55, 46,255,102,221,214,191,255,238, 54,109,198,
-199, 36,242,137,231,160,173, 81, 11, 82,205,186,216,182,117, 43, 62,124,127, 10,229,139, 50,183, 91,207,101, 62,116, 7, 67,180,
- 54,123,225, 81, 2,248, 68,146, 36, 1, 40,233,147, 53,102,204, 24,184, 62, 58,103,254,252,249, 48, 24, 12, 0, 32, 16, 66, 62,
- 33,132,124, 87,214,140,238,101,104, 86,251,227,143, 63,170,185,106, 54,108,216,208, 39,205,202, 38, 51, 51,243,157,103,158,121,
-102,134, 76, 38, 11,144, 36, 9,158, 70,187,107,181, 90, 20, 20, 20, 64, 20, 69, 91,112,112,240, 41,171,213, 10, 65, 16,202, 44,
- 71,197,197,197,239,140, 26, 53,234, 3, 66, 72,153,145, 14,181, 90,125,105,231,206,157,117,135, 13, 27,198, 45, 95,190,252,194,
-208,161, 67,149,187,119,239, 22, 1,252,198,170,167,187, 19, 74, 41,138,139,139, 1,128,150,179,206,101, 66,200,155,137,137,137,
-170, 81,163, 70,197, 63,241,196, 19,254,157, 59,119,214,185,174, 99, 48, 24,164, 53,107,214, 20, 47, 88,176, 32,103,251,246,237,
- 7, 70,142, 28, 57, 0, 37,205, 27, 30, 73, 79, 79,255,227,139, 47,190, 8,232,216,177, 99, 61, 81, 20,145,157,157,237,236,131,
-149,154,154,138, 75,151, 46, 93,146, 36,105,117, 5,119,231,165, 97,195,134,253,185,104,209,162, 26,207, 63,255,124,234,178,101,
-203, 86, 3,200,247,176,158,110,224,192,129,253, 22, 45, 90, 84,227,133, 23, 94,184, 12,224, 21, 54,195, 59,131,113, 19, 6,203,
-165,178,216, 9,160, 53, 33,164, 63,207,243,227,138,138,138, 62,163,148,174,186,137, 10,106, 1, 33,100,253,217,179,103,159, 5,
-144, 48,103,206,156,137, 0, 82,236, 97,189,238,158,250, 43,120,209, 19, 1,188, 27, 21, 21,245,235,228,201,147, 43,229, 89,132,
-246, 71,234,188, 20, 25, 25,185,236,163,101,191,190, 67, 41,141,227,168, 20, 34, 17, 46,151,227,184,127, 68, 81,252, 48, 53, 53,
-117, 91, 69, 52,127, 41, 73,103,247, 7,171,251,245,121,243,133, 97, 31,219,100,234,154, 69, 70,155, 66,171, 20,204,114,209,116,
-137, 51,228,190,189,247, 82,209, 93,121, 97, 53,153, 76,182, 1, 3, 6,124,203,113,156, 4, 0,162, 40, 10, 38,147,233,105, 95,
-243,208,237,210,188, 81,178,179,179,139, 0,188, 84,222, 58,237,219,183,255,113,221,186,117,195,186,119,239, 46,174, 93,187, 54,
-179, 79,159, 62, 66, 98, 98, 34, 5,176,169, 12,227,111, 66, 25, 79, 36,112,208,188,121,243, 26,223,125,247,221,161,103,159,125,
-214,127,222,188,121,193,251,247,239, 23,191,249,230,155,130,162,162,162,153,172,122,186, 59, 32,246, 65, 41, 50,153, 12, 26,141,
- 6,254,254,254,200,202,202,242, 58,210,147, 82,122,142, 16,242,240,184,113,227,218,143, 27, 55,238,225,232,232,232,198,213,171,
- 87,175,206,113, 28,151,145,145,145,149,146,146,146,108,177, 88, 54, 3,248, 3,128,188,118,237,218,255, 0, 88, 92,150,222,241,
-227,199, 63,136,140,140,220,242,251,239,191, 63,172, 84, 42, 27, 41, 20,138, 96,171,213,202, 21, 23, 23, 95,179, 88, 44, 39, 76,
- 38,211,218,244,244,244,221, 21,172, 59, 79, 19, 66, 58, 11,130,240,199, 55,223,124,211, 48, 35, 35,163,230,182,109,219,250,186,
-175, 23, 31, 31,191,104,209,162, 69, 53, 70,143, 30,125,110,233,210,165, 21,234,131,197, 96, 48,131,229, 91, 97, 92, 5, 96, 85,
-101,252, 49,165,244, 18,128,119,236,175, 74, 33, 45, 45,237, 40,128, 97,149,121,128,210,211,211,119, 1,232, 1,148,204,230,156,
- 82,114,209,188, 41,246, 94, 46, 92, 11, 96,237, 93,126,151,110, 34,132,140,179,143,114, 2,128,113,238,211, 38, 16, 66,142,184,
- 46,247, 22,105,186, 21,154,183,147,220,220,220,255,125,255,253,247,251, 95,126,249,101,229,224,193,131,113,226,196, 9,204,155,
- 55,207,148,155,155,187,236, 70, 53, 15, 31, 62,124,169,121,243,230,113, 11, 23, 46,124,253,235,175,191,238, 79, 8, 97,207, 34,
-188, 75, 48,155,205,231, 31,127,252,113,199,243, 83,169,227,209, 73,142,105, 59,108, 54,219,121, 31,202,145, 13,192, 22,251,203,
- 27,159,248, 80, 31,237, 1,176,167,146,203,250,101, 66,200,195,201,201,201,211, 78,159, 62,253,151,167,117,146,146,146, 86,118,
-239,222, 93,179,103,207,158,183, 42, 58,138,144,193,248,207,222,156,221,192,196,191, 21,185,243, 99,237,211,247,184,166,183, 7,
- 47,123, 90,126, 39, 52,217,121,103,154, 76,147,105, 50,205,123, 91,243,126, 67, 96,135,128,225,229,238,214,116, 51,203,111,151,
- 38,131,193, 96, 48, 24,119, 19, 4, 64,147, 50, 46,114, 62, 59, 83, 66, 72,133,231, 74,242,166,207, 52,153, 38,211,100,154, 76,
-147,105, 50,205,251, 79,211,131,246,163,110,139,210,220,244,190,190, 39, 13, 22,107, 34,100,154, 76,147,105, 50, 77,166,201, 52,
-153,230,157,214, 44,227,127,158,191, 87, 13, 22,123,160, 44,131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,119,
- 55, 62,117,114, 87, 40, 20,177,148,210,145,132,144,170,132,144, 43,148,210,239,204,102,115,210,127,237, 96, 41, 20,138, 88, 66,
-200, 72, 74,105, 85, 74,233, 21, 66,200,157, 61, 14,132,144, 41,147, 75,102,147,126,111, 50, 40,110,101,123, 47,131,193, 96, 48,
- 24,140,155, 55, 88, 53,171, 85,123,140,227,201, 92,139, 85, 12, 10, 12, 12,228,190,248,226, 11,174,111,223,190, 88,179,102, 13,
- 94, 25, 51,230,149,168,168, 72, 73, 46, 8,185, 84,178,189,146,156,146,254,179, 47,127, 54,112,224,192, 76,171,213, 90,230,172,
-214, 60,207, 95, 93,185,114,101,248,205,238, 84, 84,252, 99,153, 86,139,165,204,255, 17, 4,217,213,244,127,126,241,233,127,170,
- 85,139,124,140, 39,220, 92,171, 40, 5, 5, 5, 5,113,159,127,254,185,243, 56,188,252,242,203,175, 68, 71, 69, 73,114, 25,159,
- 43,137,244,149,228,148,148,159,111,219,153,115, 49, 87, 0, 48,101, 50,200,123,132,128,153, 44, 6,131,193, 96, 48,238, 98,131,
- 69, 56,204, 91,250,213, 39, 65, 57,215,114,177,108,229,122, 52,108,216, 16,199,143, 31, 71,195,134, 13,209,174, 85, 51,174, 71,
-235,230, 28,207, 33,116,210,231,139,231, 1,240,201, 88, 88,173,214,176,223,127,255, 29,132, 16,231,132,125,142, 73,251, 10, 11,
- 11,241,234,171,175,134, 85,198, 78, 89, 45,150,176,243, 7,126,131,140, 39,176,138, 20, 86, 27,133,213, 38,193, 34, 82, 20,232,
-109,232,242,240, 48,159,255,135, 3, 55,239,187,185,159, 4,229,229,231,227,183, 63, 55,150, 58, 14, 93,218,182,228, 6,247,238,
-196,105,212,242,208,231,199,127,228,243,113,168, 12, 92,205, 85, 41,147, 85,206,227, 59, 24, 12, 6,131,193, 96,220, 97,131,101,
-182,138, 65,225,193, 1,248,254,187,239,240,230,132,247,209,160, 65, 3, 80, 74, 65, 8,193, 91,239, 78,197,172,247, 39,224,241,
- 94, 29, 96,181, 73, 65,101,105,120, 26, 97, 64, 8,193,197,139, 23, 97, 48, 24, 74,189, 98, 99, 99,125, 74,176,175,163, 22,100,
- 60,193, 31,135, 10, 97,177, 74,176,216,236, 47,171,132,206, 77,252, 42,164,105, 21,165,160, 64,127, 29, 22,126, 53, 31,111, 78,
-253,164,212,113, 24,255,214,187,248,114,198, 59, 24, 59,250, 73,152,173, 98,208,141,164,179, 34, 48, 77,166,201, 52,153, 38,211,
-100,154,247,171,230,125,105,176, 8, 33, 29, 1,108,181, 31, 52,103,100,196,106, 54,162,113,181, 16,204,159,249, 1, 40, 56, 72,
-148, 2, 20,160,146, 21,181,170,104, 96,208,235, 43,252,135,146, 36,193, 98,177,192,106,181,226,235,175,191, 70, 81, 81, 17, 36,
- 73, 66,195,134, 13, 1, 0,241,241,241,174, 17,152,203,137,137,137, 53,188,105,134, 53,125,228, 18, 40,170,187,254,246,222, 39,
-223, 98,215,161,243,160, 20, 80,170, 53, 24,244,196, 11, 16, 37, 10,139,181,226,207, 39, 53,234,245,136,208,201, 48,235,195,119,
-193,201,228,224, 64,192,113, 4, 28,145,208, 32, 58, 8,166,146,135, 19,223, 86,222,155, 12,234, 30,197,122,111, 50, 40,222, 99,
-153,154,193, 96, 48, 24,247, 30,101,121,145,123,218, 96, 1,216,234,105,103,204, 70, 3,162,131,228,168,170, 11,128,205, 38, 34,
-201, 18,129, 66,189, 17, 22,139, 21,151, 44, 22,156,251, 39, 3,109,218,180,193, 35,143, 60, 34, 90, 44, 22,200,229,242,252,149,
- 43, 87, 6,123, 51, 88, 86,171, 21, 22,139, 5,197,197,197, 88,178,100, 9, 4, 65,128, 36, 73, 14, 87,236,124,111,219,182,109,
-117,223,172, 52,170,159,219,255, 43,252, 84, 60,108, 18,133,205, 70, 97, 21, 1, 81,162,208,155, 37, 12,124,230, 29,216, 36, 9,
- 54, 73,130,217, 7,131, 85,202,176, 5,183, 68,255,137,203, 0,232,156,203,253,149, 20,111,182,229, 32, 87, 40,161,144,243, 48,
- 25,244,183,255,204, 81, 74,223, 35, 4,172,147, 59,131,193, 96, 48,238, 19,182,222, 15,198,202,221, 96, 57,221, 35,165,116,219,
-191, 6, 75, 15,155, 85,132,213, 38,194,102,181, 33,191,200,128,143, 63,254, 24, 74,165, 18,132, 16,167, 89,146, 36,137,179, 90,
-173,232,221,187,119,144,183, 63, 20, 69, 17, 22,139, 5, 22,139, 5,148, 82,240, 60,143, 7, 30,120,224,186,245,246,238,221, 91,
-161, 29,241, 83,241,168,213,109,226,117,191,239,251,245, 3, 80, 74, 33,138, 37, 47, 95, 12,150, 55,195,214,162,227, 96,152,204,
- 86, 80, 10,128,150, 68,184,238, 8,148, 82,103,159, 43, 22,185, 98, 48, 24, 12,198,125,128,187, 23,185, 47, 12, 22, 74, 66,115,
- 78,247,104, 50, 24, 96,181,218, 96,179,137,176, 90, 75,140,145, 90,173, 70,135, 14, 29, 28,215,119,231,251,250,245,235, 97,177,
- 88,188,254,161,163, 83,187,221,152,129, 82,138,101,203,150, 65, 38,147, 57, 95,114,185,188,194, 59, 98, 19, 41, 38,142,127, 13,
-114,129,131, 76,224,156,239, 34,165,160,180,196, 28,137, 18,133,201,234, 91,144,167, 60,195, 6, 0,102,147, 5,160, 20, 20, 20,
-134,226, 98, 86, 34, 24, 12, 6,131,193,168, 28, 74,121,145,123,221, 96,117, 34,132, 92,231, 60,204,134, 98,123,244, 74,132,213,
-102,115, 26,168,153, 51,103, 66, 16, 4, 40, 20, 10, 8,130,224, 52, 68,190, 24, 44,163,209,136,152,152, 24,152,205,102, 52,108,
-216, 16,148, 82, 12, 25, 50,228,186,245,246,239,223, 95,161, 29,177,138, 20,211, 63,250,236,186,223,119,254,242, 62,154, 54,170,
-133, 86,117,181, 48, 90, 36, 20,232,109, 55,109,216, 0,148, 68,176, 0, 80, 10, 24,138,245,172, 56, 48, 24, 12, 6,131,113,115,
-120,244, 34,247,180,193,178,135,226,174,115,139, 70,189, 30, 54,171,205,105,178,204,102, 51, 36, 73,194,152, 49, 99,174, 19,218,
-188,121, 51,204,102,115,249,127, 38, 8, 87,159,123,238,185, 82, 83, 36, 80, 74,241,235,175,191, 66,169, 84,150,138, 98, 17, 82,
- 49,243,106, 21, 41, 38,191,253, 6, 20, 50,190,148, 33,146, 36, 96,205, 31, 27,176,230,143, 13,206,117,121, 94,118,245,102, 12,
- 27, 0,152,205,246, 8, 22,165, 40, 46, 42,100,197,130,193, 96, 48, 24,140,155,160, 44, 47,114, 79, 27,172,178, 48, 26,138, 97,
-117,233,131,101,177, 88, 96,179,217,240,245,215, 95,151,106,206,147,201,100,224, 56,206,107, 4,235,247,223,127, 47, 53,185,103,
-124,124, 60,165,148, 98,208,160, 65,206,230,198,167,159,126, 26,207, 63,255,124,133, 13,150, 77,164,152, 50,109,166, 83,167,119,
-183,246,232,223,171, 35, 36,187, 23,190,122,108,101,133, 4,203, 51,108, 0, 96, 54,149,244,193,162, 0,244,133,172,137,144,193,
- 96, 48, 24, 12,134, 15, 6, 75, 38,112,249,231, 46, 93, 9,168,162, 85,193, 38,153, 96,147, 74, 70,254,137,162,136,231,159,127,
-222,185,222,208,161, 67, 49, 98,196, 8,143, 6,203,151,167,109, 75,146,132,157, 59,119,130, 16, 2,142,227,156,175,178, 40, 75,
-179,216, 36, 97,215,207, 83, 33, 81, 10,137, 2,146,125, 32,130,217,230, 61,218,232, 73,211,155, 97, 83,234, 2,193,115, 20,132,
- 0,231, 82, 51, 33,240, 92,126, 69,247,189,162, 48, 77,166,201, 52,153, 38,211,100,154,247,171,230,127,198, 96, 81,145,190,178,
- 96,237,222,185, 86, 81, 10,112,252,214,184,113, 99, 88, 44, 22,252,245,215, 95, 78,227,193,243,188,179, 73,207,151, 62, 88,110,
- 92,238,208,161, 67,121, 83, 49, 92,246,237, 76,227,114, 66,231,199,170,151,183,188,162, 9,243,102,216,190,217,254,239, 35, 8,
- 5,142,203, 7,165,175,176,236,196, 96, 48, 24, 12, 6,163, 92,131,117, 57, 45,109, 49,128,197,174,191, 61,252,240,195, 69,253,
-250,245, 83,219,108, 54,152,205,102, 88, 44, 22,152,205,102,231, 75,169, 84, 86,104,198, 77, 95, 38, 17,245,133,171, 71, 87,214,
-168,212,163,226,131, 97, 75, 79, 79,175,193,178, 15,131,193, 96, 48, 24,140, 10, 25, 44, 79,232,245,250, 64, 66,136,144,158,158,
-126,221,178, 43, 87,174, 0,128,237,126, 56, 40,149,110,216, 24, 12, 6,131,193, 96, 48,131, 85, 22, 91,183,110,181,221, 47, 38,
-138,193, 96, 48, 24, 12, 6,227, 86,193,177, 67,192, 96, 48, 24, 12, 6,131, 81,185, 16, 0, 77, 60, 45,168,200,232, 0, 66, 72,
-147,138,254,177, 55,125,166,201, 52,153, 38,211,100,154, 76,147,105,222,127,154,222,180, 93,183, 39,132, 60, 79, 41,253,250,158,
- 52, 88,183,242,249,192,108, 8, 43,211,100,154, 76,147,105, 50, 77,166,201, 52,111,226,127,238, 89,131,197,154, 8, 43,114,162,
-227, 95,144,177,163,192, 96, 48, 24, 12, 6,195, 27,194,237,250,163, 41, 83,166,220,148,153,123,239,189,247,164, 59,102,172,162,
- 31,173,195, 11,248, 56,174, 69,211, 94, 92,141,129,127, 82,145,140,167,169,191,158, 99,217,231,198,104,161, 35, 85,172, 68,214,
- 39, 72,167,234, 95,221, 79,120,240,108,182,126,183,222, 34,173,161,196,186,234,120, 1,205,101, 71,136,193, 96,120, 34, 58, 58,
- 58,104,215,174, 93,213,219,182,109,123, 57, 53, 53, 53,215,215,101,101, 81,181,118,194, 8, 63,157,230, 37,163,201, 84, 43,192,
-223,255,234,181,156,156, 5,233,231, 15,125,225, 88, 30, 19, 19,227,191,116,233,210,200,161, 67,135,166, 95,184,112,161,128,157,
- 1,198,109, 53, 88, 45, 91,182,172, 37, 73,210,147, 0,158,160,148, 30, 62,116,232,208,163, 55,162,179,121,243,230, 40,171,213,
-218,210,102,179,197, 1,136, 83,107,116,205, 77, 38,227, 85, 2,250, 84,175, 94,189,254,169,168, 94,124,124,252, 31, 0,122,123,
- 52, 76,132, 76, 57,120,240,224,100, 95,181,120, 1, 31,111, 88,245, 77,255, 12,189, 26,219, 18, 47, 61,242,221,167, 19, 0, 96,
-192,221,120, 66, 35, 35, 35,213, 0,158,226, 56,174,171, 82,169,172,103, 52, 26,147, 1, 28, 37,132,204, 75, 77, 77, 77,191, 33,
-131, 73, 8, 23,171,147, 61,163, 81,107,122, 70,248, 41,226,210,114, 11,210,140, 22,105,135, 68, 44,159, 84,212, 16,213, 33, 68,
- 81,187,122,224,182,215, 7,182,107,216,172,113, 93, 72,151, 14,195,152,151,213, 47, 49, 77,223,239,171,125, 87, 95,171, 67, 72,
-220, 57, 74,205,190,104, 85,171, 86, 45, 66, 20, 69, 33, 61, 61, 61,197, 81, 25,154, 76,166, 4, 0, 13, 1,156, 84, 42,149, 7,
-111,182, 82,188, 87, 52,163,163,163, 35, 37, 73,122, 54, 60, 60,252,225,204,204,204, 63, 56,142,251,230, 70,207, 55,227,191, 67,
-205, 7, 71,124, 70, 56, 82,165, 34,219, 80,137,102, 39,239,253,241,181,219,125,159, 11, 0,148,210,167,171, 87,175, 94,151, 82,
-122, 26,192,236, 82,233,242,188,172,204, 62, 48, 53, 99,219,172, 28, 51,234,169, 46,175,142,126, 90,167,209,168,161, 55, 24, 67,
-230, 45,252,225,211,154,141,219,246, 78, 62,190,171, 23, 0,152, 76,166, 1,213,170, 85,171,105, 54,155, 47, 2,248,193,155, 38,
-131,113,211, 6,171,113,227,198, 90,133, 66, 49,136,227,184,167,154,197,183,110,215,111,240, 83,196, 74, 52,248,240,141,161, 21,
-158,194,225,208,161, 67,202,140,140,140,247,107, 53,136,255, 95,167,238,253,185, 70, 13, 27,160, 74, 72, 16, 36, 78,129, 69,127,
-157, 9,217,250,213,211, 95, 0,104,125, 3,201,236,253,243,159,251,144,145, 39,130, 16,128, 16,128, 35, 64,145, 81,194, 91, 35,
-219,189, 7,192, 39,131, 69,226, 95,144,197, 54,110,216,235,204, 53, 21,254, 58,102, 5, 16, 9, 77, 80,120, 47, 18,255,130,140,
- 38,126,101,189,155, 78,102, 68, 68, 68, 92, 72, 72,200,151, 79, 63,253,116, 80,189,122,245, 34, 20, 10,133,198,104, 52,214,189,
-116,233, 82,173, 89,179,102, 61, 20, 17, 17, 49, 35, 35, 35,227,183,138,104, 54, 12, 84, 85,239,213,160,198,207,227, 71, 63,217,
-170, 94, 76, 53, 8,230, 98, 80, 83, 81,181, 75, 23,207,183,158,246,205,111,207,197, 6,200,134, 36,229, 91, 55,249,170,167,242,
-147,191,253,214,243, 67, 26,214,241,163, 48, 31,223, 9,129,167, 80,249, 5,161, 85,117, 30, 4,180,209,228,191,211,223, 2,240,
-158, 15, 70,114, 42,128,183, 0,144,136,136,136,159,101, 50,217,254, 7, 31,124,176,193,227,143, 63, 78,154, 54,109,138,127,254,
-249,167,209,154, 53,107, 30,173, 94,189,250, 41,179,217,188, 47, 36, 36,228,240,241,227,199, 45, 62,230,111,121, 78, 78, 78,115,
-133, 66,241,192,221,172, 25, 25, 25,169, 54,155,205, 79, 70, 71, 71, 63,223,175, 95,191,166,125,251,246, 37,245,235,215,199,169,
- 83,167,226,215,173, 91,247, 94,243,230,205,143,166,166,166,126,173, 80, 40,126, 72, 79, 79,247,105, 18,224,193,221,200,169, 95,
- 54,209, 6, 55,186,220,205,152, 7, 2, 80, 81, 74, 51,124, 88, 55, 28,128,134, 82,122,225,118,107,222,162, 72,203, 9, 66, 72,
-176, 61, 29,142,244,148,250,236,250, 46,138, 98,241,165, 75,151,106,151,167, 89,189,122,245, 70,146, 36,241,174,191,201,100,101,
-247, 90,176,217,108, 82, 74, 74,202,241,114,143, 17, 71,170,124,253,229,103, 1, 2, 7,136,212,254,178, 82,136,148, 66,146, 0,
- 81, 2, 68, 73,130, 77,164,144,168, 4,171,141, 98,202,123,111,221,201,106,238, 97, 0, 29, 0,108, 7, 48,167,156,101,179,203,
- 19, 9,171,211, 98,248,232,167, 71,116,126,235,141,151,116,148, 82, 80, 74,161, 86, 41, 49,238,213, 81, 10,163,209,220, 54,162,
-110,194,243, 25,103, 15, 46, 36,132,116, 6,144, 0,224,160,139,193, 98, 48, 42,215, 96, 17, 66, 72,124,124,124, 7, 74,233, 83,
- 53, 99,234, 12, 26, 56,236, 5,117,205,186, 77, 80, 36,249,227, 98,182,132, 67, 91,150, 2,192,242,138,252,249,250,245,235, 19,
- 40,197,247,163, 39,124,214,160, 89,139,150, 56,150,102,195,174, 20, 17,197,231, 68, 8,188, 1,146, 4, 80, 74, 77, 55,186,115,
-169,185, 54,236, 56,101, 6,207, 1, 28, 7,240, 28, 1, 95,193,231,116,211,196,175,172, 92,141,129,127,110,216,159,246, 8, 84,
-225,208,231,166, 65,159,155,185,142,166,252,126, 87,153,171,168,168,168, 46, 49, 49, 49,179, 95,125,245,213,170, 25, 25, 25,193,
-251,246,237,131, 82,169, 68, 80, 80,144, 80,165, 74,149, 6, 19, 38, 76,200,159, 54,109,218,184,240,240,240,127, 50, 51, 51,147,
-125, 50, 5, 58, 69,195,142,113,141,119, 79,154, 58, 57,192,148,184, 14,121, 43, 86,128,231, 36,200,181, 58, 68,168, 53,152,243,
-112,205,224, 9,235, 83,126,107,170, 86, 55, 60,106, 48,164,249, 20,117, 10, 11,238, 94,167, 94,125,228,173,157,135,179,121, 38,
-236,201, 52,161, 95,199, 4,212, 9, 82,163,133, 77, 68,136, 74,232,226,205, 96, 69, 71, 71, 7, 1, 24,159,156,156,204,201,229,
-114, 82,171, 86,173, 33, 95,127,253, 53,109,212,168,145,243,169,219,173, 91,183, 70,235,214,173, 73, 81, 81, 81,195, 93,187,118,
- 53, 92,185,114,165, 53, 42, 42, 42, 49, 45, 45,109, 81,217,145,165,218,151, 77, 38, 99, 53,165, 74,109,156, 53,107,214, 79, 15,
- 62,248,160,164, 80, 40,112, 51,154,118,227,187, 36, 58, 58, 90, 51,105,210,164,236,150, 45, 91,210,202,208,172, 85,171,214,134,
-246,237,219,119,238,222,189,187,208,182,109, 91, 68, 70, 70, 58,151, 85,169, 82, 5,237,219,183, 39, 41, 41, 41,205,118,236,216,
- 49,111,195,134, 13,115,107,213,170,181,229,226,197,139,221,125, 56, 69,245,111,114,121,169,224, 47,128,233,132,144,133,148,210,
- 93,229,212, 45,113, 0,134, 2,248,248, 14,105,150,139, 90,173,206, 52, 26,141, 97, 0,160, 82,169,174, 26, 12,134,112, 31,234,
- 75,221,172, 89,179,194,228,114, 57, 56,142,131, 40,138, 16, 69, 17,146, 36,129, 82,234,124,119, 12, 50,154, 58,117,170,232, 77,
- 83,146, 36,238,179,207, 62,147,169,213,106, 0,128,213,106, 45,245,238,192,241,125,234,212,169, 62,213, 81,106, 5,143,119,223,
-120,190, 21, 39,154, 85,229,254, 63,175, 48, 62, 51,110,246,254, 59, 96, 86,131, 40,165, 79, 2,232, 11,192, 81,198,155, 70, 69,
- 69,253,237,182,106, 83,251,123,113, 84, 84,212, 22, 0,127, 16, 66,190,247,212, 92, 24,160,245, 27,245,250,152,103,253, 40,165,
-152,178, 34, 27, 83,126,205,198,187, 3,130, 49,174,183, 6, 35,159,120, 84,251,253,226, 95, 94, 0,176,208,101,147,211,246, 40,
- 26,139, 94, 49, 42,223, 96,181,104,209,226,207, 94, 3, 70,244,124,176, 67,119,216,228, 97, 56,117,149, 32,229, 34,133,192,219,
-192, 65,194,133, 3,171, 40,199,113, 63,184,133,108,203, 28, 97,240,231,159,127,190, 86,189, 78,243, 25,111, 77,158,206, 31,203,
- 84,224,251, 29, 6,136,166,124, 24,178,207,161,248,234, 25, 20, 94, 57,129,188,180, 99, 71, 57,142,155,236,171,230,117,230,136,
- 2, 18,165, 32,148, 0,146, 61,178,203, 17, 15,235,149,175, 73, 69, 50, 62,113,195,247,143,180,232, 63, 17,103,118, 44, 6, 40,
- 55,222,251,127, 87,254,232,138,178, 52, 35, 35, 35, 31,170, 89,179,230, 39, 47,188,240, 66,244,145, 35, 71,252,245,122,125,241,
-254,253,251,183,101,100,100,132, 87,169, 82, 37,229,241,199, 31,111, 19, 22, 22, 22,214,161, 67, 7,205,250,245,235,223, 6,240,
-172, 55,205, 38, 90, 69,108,251, 86, 77,246,124,240,201, 76,109,246,111,115, 97,190,120, 4,123, 50,141, 56,146,101,160, 81,254,
-249,228,177, 38, 65,208, 42, 4, 60,255, 64,152,238,127,107,146, 63, 2, 48,204,151,125,175, 21, 21, 94,219,106, 48,192,104,176,
-224,207, 51,249,134, 61,185,249, 97,156, 95,106,214,184, 71, 18, 84,124,118, 58,170,250,201,234, 86,244,120, 18, 66,160,209,104,
- 60, 46, 11, 8, 8, 64,235,214,173, 81,187,118,109,217,208,161, 67, 31, 4,176,168, 44, 77,139,197, 18,145,150,150,142,122,245,
-235, 41,187,118,237, 74,120,158,135,217,108,190, 41, 77, 0,208,106,181,125,227,226,226,132, 31,127,252, 49, 47, 57, 57, 57,105,
-224,192,129,105, 26,141,166,212, 5, 85,163,209,160,122,245,234,120,241,197, 23,101,207, 61,247,156, 87,205,240,240,240,135, 22,
- 47, 94, 12, 66,136,243,226,237, 78,141, 26, 53, 80,181,106, 85,244,238,221, 91,120,244,209, 71, 31, 42,239,120, 14,238, 70, 78,
- 57,204,211,224,110,132,122,137,114, 81, 0,167,221, 35, 89,238,154,148,210, 28, 66,200, 2, 0,191, 19, 66, 6,121, 50, 68,132,
-144,182, 0, 86, 0,232, 69, 41,189,234,237,188,187,106, 42, 20, 10,185,197, 98, 9,114, 55, 62, 21,213,116, 73, 11, 77, 76, 76,
- 68,124,124, 60, 92,223,141, 70,163,211, 8, 17, 66,194,124,205,159, 60,207, 99,254,252,249,224, 56, 14,114,185, 28, 50,153, 12,
-114,185,252,186, 87,139, 22, 45,124, 46,239, 50,153, 12,243,231,207,135, 40,138, 92,114,114,242, 83,162, 40,246, 55, 26,141, 97,
-106,181, 58, 75, 46,151,175,237,216,177,227,119, 74,165,210, 86, 17, 77,142, 7, 56,209,172,218,180,126,181,182,172,115,110, 50,
-153,208,167,255, 99,224, 8,119,219,235,186, 93,187,118, 85,175, 94,189,122,125,123,116, 10, 0,182,167,165,165,117,112,249,238,
-202,246,180,180, 52, 71,215,144,179,151, 47, 95,174, 14, 32,215, 93,211,108,182,212,210,233,180,160,148, 98,202,175,217, 48,254,
- 24, 3,213,136, 11, 24,249,128, 9,126,126,126,176,217,108, 13,162,162,162,126, 0, 80,207, 30,189,234, 23, 21, 21, 85,159, 82,
-186, 69,169, 84,254,238,104,210,191,157,245,252,127, 65,211, 11, 45, 1,132,186,124, 55, 3,112,220,173,102,219, 13,112,136,219,
-239,174,235, 57,222,179,236,191,135,218,183,163, 46,186, 89, 0, 14, 84,170,193, 34,132, 80, 74, 41,113,188,151,177,174,127,170,
- 33, 16, 69, 23,171, 64,224, 36, 8, 60,129,192, 3, 0, 65, 78,234, 9,152,139,115,118, 30, 60,120,240,162, 47,127,250,215, 95,
-127,181,174,217,168,213, 71,147, 63,248,148,251,110,187, 1,249,122, 35,178,143,175, 70,198,254,111, 51, 36,155,101, 53,199,113,
- 7, 57,142, 59, 20,215,172,233,169,136,136, 8,241, 70,119, 78,162, 37, 33,110,167,177,146, 0,114, 3, 55, 32, 52,245,215,115,
-145, 29,223, 41,245,253,110,113,200,209,209,209,189,234,212,169, 51,253,133, 23, 94,168,113,232,208, 33,191,194,194,194,172, 77,
-155, 54,157,178, 88, 44,255,112, 28, 55, 39, 61, 61,189,227,226,197,139, 53,111,190,249,102,247,250,245,235,215,223,176, 97,131,
-222,107,228, 74, 43,111, 54, 98,248,227,123,250, 63,255,138, 42,233,215, 47,160, 60,117, 8, 95, 31,207, 21, 15,102, 26,222, 54,
- 22,217,102,171, 53, 66,219, 60,163,109,227,235,237, 35,184, 8, 63, 25,170, 5,200, 59,249,154, 94,133, 76, 41, 80, 65, 5,179,
-201,134, 98,179,100, 62,158, 69,139, 95,235,212,196, 66,181, 85, 84, 0, 32,240,156, 87,211,159,154,154,154, 27, 25, 25,249, 81,
-205,154, 53,223, 33,132,208, 14, 29, 58, 28,143,143,143, 47,150, 36, 9, 6,131, 1, 22,139, 5, 50,153, 12, 6,131, 1,151, 46,
- 93,194,190,125,251, 16, 16, 16, 80,161,227,154,151,151,135,154, 53,107, 66,163,209,220,180,166, 36, 73,100,222,188,121,170,164,
-164, 36,213,239,191,255, 30,252,218,107,175,229,183,104,209,226,196, 35,143, 60,146, 18, 28, 28,108, 57,124,248, 48,246,236,217,
-131,220,220, 92,180,106,213,202, 39, 77,139,197, 2, 65, 16, 96, 48, 24,160, 84, 42, 33, 8, 2,108, 54, 27, 36, 73,114,154,174,
-162,162, 34, 92,187,118, 13, 50,153,204,235,131,216, 29,102,105,112, 55, 66,127, 89,177,251,106, 73,219, 80,129, 21,150,124, 43,
-108,249, 86, 88,243,173,176,230, 89, 7,191, 58,179,217, 47,155, 40,169, 64, 37,188,151, 16, 50, 8,192, 10,119,147,229, 98,132,
- 6, 81, 74, 15, 87, 84,211, 98,177,236,116, 24, 31,149, 74, 21, 70, 72,137, 49, 84, 42,149, 86,147,201,212,185, 34,154, 0,144,
-152,152,136,184,184, 56,222,174, 73, 29,239, 55, 18,181, 32,132,128,231,121,200,100, 50,240, 60,143,184,184, 56,244,237,219, 23,
-245,235,215, 71,106,106, 42,182,110,221,138, 51,103,206, 64, 46,151,151,106, 58,244,134, 76, 38, 3,199,113,220,233,211,167,191,
-235,218,181,107,157, 87, 94,121, 69, 81,189,122,117,156, 58,117,170,234,188,121,243, 70,108,222,188,185,227,128, 1, 3, 70, 0,
-176,149,215,124, 88,202, 8,218, 77,147,201,100,194,137, 19, 39,202, 95,183,162, 77, 0,149, 64,219,182,109, 47, 83, 74,207,162,
-164,233,175,105, 90, 90, 90,135,168,168,168, 63, 1,184, 27,194,226,180,180,180,222, 81, 81, 81,249, 0,142, 2, 56, 77, 8,185,
-156,154,154,122,157,102, 96,128,127, 86, 81, 81,113,184, 86,171,193,219,253, 3,161, 26,113, 1, 99, 58,243,176, 90,173, 56,127,
-254, 34,106,213,140, 38,203,191, 95,229,104, 26, 76, 56,120,240, 32, 80,210, 84,152,156,146,146, 18, 9,128,117,120,191, 5,120,
-241, 34,161,132,144,181, 46,245, 64, 31,199,247, 9, 19, 38,188, 53,125,250,244, 36, 66,200, 90,215,223, 93,215,115,125,183,255,
-215, 90, 74,105,159,137, 19, 39,198,206,152, 49, 99,154, 99,221, 59, 18,193,226,121,126,224,177,191,102,239,173,107,161, 53,194,
- 99, 31,182,215, 57, 37, 17,211, 75,135,255,130, 36, 73,139,124,209,217,179,103,143,202, 38,225,187, 55,223,154,202,125,181,197,
-128,204, 43,233, 72,223,246, 49, 12, 87, 79,124,175, 86,171, 95,239,218,179,207, 77,103,220,248,248,248,216,192,144,170, 48, 89,
-168,221, 96,149, 54, 89,247, 11,145,145,145,125,235,212,169, 51,117,245,234,213, 53, 12, 6,131,223,174, 93,187,242, 54,110,220,
-120,214, 98,177,124,147,145,145,177,196,158,137, 86, 11,130,240, 62,165, 20, 58,157, 78,224,121, 94,237,200,189, 30, 35, 87, 1,
-242,184,167,159,122, 98,231,107,115, 22,170,206, 30, 59,140,185,203,255,132,146, 90,196,227, 57,230, 71,142, 21, 90, 29,153,246,
-239,222, 81,154, 52, 74, 81, 77,198, 17, 4,107,100, 85, 91, 19,162,218, 67,169,209, 91,154,171, 84,171,193,217,162, 98,176, 67,
-111,130,206, 95,174, 0,128,168,122,141,249,195, 5, 54,236,218,127, 18, 42, 85,144,220,151,125, 79, 79, 79,159, 20, 21, 21, 85,
-115,227,198,141,156, 94,175, 47, 62,114,228, 8, 66, 66, 66, 16, 22, 22, 6,127,127,127,156, 58,117, 10,155, 54,109,194,233,211,
-167, 65, 41, 45, 51, 74, 80, 22,153,153,153, 40, 40, 40,168, 20, 77,155,205, 70, 0, 32, 54, 54, 22,177,177,177,138,180,180,180,
-176,181,107,215, 6, 77,155, 54,237, 74, 68, 68,196,122,131,225,223,238, 81,238,205, 61,229, 69, 20, 0,192,104, 52,194,100, 50,
- 65, 46,151, 67,165, 82, 65, 46,151,163,160,160, 0,153,153,153, 40, 44, 44, 44,185,152, 4, 6, 58,215,247, 9, 81, 2,246,182,
- 59,120,221,239, 81, 79,133,221,224,157,238, 46,187,201,250,155, 16,226, 56,191,153,246,247, 65,229, 53,245,121,209, 44,117, 60,
- 92,162, 76,178, 27,209,140,143,143,119,104,148,170, 37, 84, 42,213, 85, 71,228, 74,165, 82, 93,245, 69,203,209, 44,168, 80, 40,
- 16, 27, 27,139,215, 95,127, 29,167, 78,157,194,206,157, 59, 17, 22, 22,134, 30, 61,122, 64, 16, 4,164,164,164,128,227, 56,159,
- 12,150, 92, 46,135,213,106,197,217,179,103,159,234,210,165, 75,204,220,185,115, 21,201,201,201, 56,117,234, 20,252,253,253,241,
-254,251,239, 43,199,143, 31, 31,189,126,253,250,231,154, 55,111, 62,223,231,186,157,148, 52,255,245,233,255,152, 7, 35,162,149,
-253,184,232, 91,133,195,120,113,119, 96, 98, 31,123, 19,223,103, 0,102,217,155, 5, 59, 0,208,166,165,165,117,182, 95,132, 0,
-128,218,155, 5, 1,224,104, 90, 90, 90,151,242,204,113,198,213,140, 5, 31,207,249,106,214,148,183,198, 42,198,245,214, 96,228,
- 3, 38,136,162, 8,158,231, 49,119,193,247,214, 51, 39,142, 29, 73, 72, 72, 88, 11,160,223,193,131, 7,145,144,144, 80, 8,224,
- 12,128,139, 10,133, 34,253,194,133, 11, 96,220, 25,220, 77,144,195, 56, 77,159, 62,189,143, 39, 83,229,193,196,149,250,125,198,
-140, 25,211, 92,190, 87,234, 40,118,193,213, 57,122,185, 11,143, 8, 12,141, 10,126, 97, 88, 15,172, 60,226,120, 32, 33,133,197,
-164,199,149, 83, 91,244,102,179,121,133, 47,127,152,147,147,243,254,200,215,103,214, 57,120, 89, 64, 70,174, 30,233,155,167, 82,
- 75, 94,242,160,190,125,251,174,172,140, 29,138,143,143,143, 13,170, 18,185,245,157,143, 22,226,239,179,102, 72, 20, 32,212,165,
-202,188, 79,102,254,138,138,138,170, 27, 20, 20,244,233,170, 85,171,194, 20, 10,133,223,209,163, 71,197,109,219,182,165, 91,173,
-214,121, 25, 25, 25,203, 92, 76,216, 19, 77,154, 52,177,106,181, 90,100,100,100, 24,173, 86,107, 81, 89,230, 42, 86,173,142,142,
- 79,104,178,253,181, 57, 11, 85, 70,179, 25,249, 6, 19, 66, 35, 34,196,157, 71, 79, 60,114,188,208,230,188, 35,104,236, 39,107,
-243,104, 66,173, 40, 78,237, 7,232, 11,144, 86, 96, 78,247,197, 92, 1,128,214, 47,144,139, 78,232,132,132, 87, 63,199,241,201,
-111, 83, 0, 8, 12,143,228, 58,191,248, 33,116,241,125, 49,255,149,167, 42, 98,129, 13,245,234,213,195, 63,255,252,227,200, 91,
-200,201,201, 65, 76, 76, 12,230,206,157, 91,106, 69,163,209,120, 67,199,185, 50, 52, 37, 73, 34,110,231, 14,163, 71,143,150,173,
- 91,183, 78,235,106,174, 42,162,105, 54,155,157,134,130, 82, 10,179,217, 12,179,217, 12,173, 86,139,179,103,207,150,246, 75,162,
-232,177,169,179,236, 4,231,123, 14,119, 89,115,172, 55, 81, 41,238, 34,132,200, 93, 76, 80, 56,128,118, 55, 98,132, 60, 25,159,
-202, 32, 49, 49, 17,158, 46,200,142,166,199, 67,135, 14,209,184,184,184,240, 10,236, 51, 20, 10, 5,250,245,235,135,147, 39, 79,
- 34, 61, 61, 29,126,126,126, 48,153, 76, 48,153, 76,136,139,139, 67,102,102,166,207,209, 43, 23,221, 94, 99,198,140, 81, 93,188,
-120, 17,215,174, 93,131, 74,165,130,205,102,131, 40,138,120,238,185,231, 84, 47,190,248, 98, 79, 0,190, 27, 44,158,160,219, 83,
- 31,121,236, 91,245,247,183,255,235,168, 84, 42,157,205, 45, 60,119, 87, 85,160,174,125,162, 42,116, 16,175, 94, 56, 58,191, 70,
-163, 54, 15,217, 44,150,206,207, 60,249,152,159, 78,171,193,249, 11,201,152,255,205,143,214,191,119,252,159,189,243,142,138,226,
-250,219,248,115,103,123, 97,233,189, 8, 40, 29, 81, 17, 80,177,162,177,119, 77,140, 26, 77, 44,177, 38, 26,163,198,154,216, 91,
-140,177,166,153,216,141, 26, 75,212,216,123,141, 29, 43, 22, 16,145,222, 59,203, 46, 91,231,190,127, 0, 6, 13,101, 65,243, 75,
-121,231,115,206, 28,216,153,217,103,239,157,185,115,231,153,239, 45,115,227,108, 70,242,211,110, 0,136,139,139,139,111, 89,228,
- 42, 38, 37, 37,229,131,186, 70, 52, 57,106, 23,197,170,100,221,232,242,129, 45, 85, 25,167,218, 24,180,138, 17,174,114,102,206,
-156,217,112,233,210,165,111,180,143, 33, 83,225, 71, 73, 53,166, 37,216,210,214,229,220,204, 37, 63,153,237,191,199, 67,110, 90,
- 52,146,110, 31,132,129, 5,210,162,127, 7, 53,234,127,125,248,240, 97,113, 77, 63,118,226,196, 9, 31, 55,223,208, 79,154,132,
- 52,199,137, 7, 26,228,222,223, 5,109,222,243,239,123,244,232,241,230,204,149,141,211,249, 89,203,126,178, 62, 20, 37, 64,226,
-243,104,156, 95,219, 27, 39,151,191,133,227, 95,190,133, 35, 75, 59,224,183,197, 29, 0,224,104,109,116, 35, 8,225,123, 90,233,
-208, 41,128,192,217, 86, 5, 18, 65,248,127,119, 33, 76, 73, 73,121, 10, 96,235, 79, 63,253, 84,116,249,242,101,227,216,177, 99,
- 99, 10, 10, 10, 22,165,166,166,238,170,112, 35,239, 80,191,126,253,169, 11, 22, 44,240, 53, 26,141,184,120,241,226, 83, 30,143,
- 87,101,251,114,148, 90,157,124,231,254,195,239, 46,239,216,128, 59,183,110, 98,251,156,201,134, 43, 15, 30,245,122,201, 92,153,
-137,252,195, 27,122, 31,254,104,226, 71, 12, 17,203,241, 36, 91,131, 52,165,254,140,201,233, 46, 82,233, 5, 98, 41,204, 28, 61,
-144,160,102,133, 46, 46, 46,215,147,243,213, 66,134,199, 7,195, 23, 34, 46, 79, 83,171,155, 56,203,254,217,143,189,106, 90, 0,
-212,216, 68, 86,163,147,123, 13,205,242, 8,214,159,252,138, 94, 79,234,170, 89,209, 96,189,106,166, 42, 59, 70,181, 50, 88,186,
-194,202,207,129, 54,231, 77, 12,236,208,150, 45,120, 29,115, 85,110,124,202, 35, 74, 98,177,248, 69, 83,155,169, 81,166,202, 34,
- 88,175,179,253,149, 27, 2, 88,150,133, 64, 32,128,183,183, 55, 10, 10, 10, 96,110,110, 14,133, 66, 1, 51, 51, 51,136,197, 98,
- 56, 56, 56, 64, 36, 18,129, 97, 24, 48, 38, 26, 23,189, 94, 15,173, 86,235,232,234,234, 10,165, 82, 9,137, 68,242, 98, 17,137,
- 68,240,245,245,133, 82,169,172,149,233,172,141,105,226,253,135,166,166, 78,120,116,165,223,150,221, 7, 39,118,236, 53,228,102,
-227,240,110,154, 47, 22,175,214,156, 57,125,250,118,250,179,219,221, 56,155,243,183, 70,168, 72, 37,235,126,172, 42,130,245, 38,
-162, 96,229,145, 44, 0,210,191, 36,130, 85,147,185,154,190,248, 71,243, 61,183, 25,228,167, 61, 65,194,241, 89, 69, 70,157, 42,
-143,101,245,238,121,207, 46, 3, 21, 58,228,214,112, 51, 12,107,217,161, 15,115,254,177, 22,186,162, 84, 20, 70,253, 18, 47, 22,
-139,103,188, 73,115, 53, 99,233, 79,214,251,239,241,145,155, 26,141,103, 71,103, 22, 24,117,170, 14,145,145,145,181,158, 71,107,
- 12, 33,130,245,148,234,251,216,219,247,117,115,115, 88, 62,162,191, 2,109, 59, 74, 97, 46, 52,199,130,175,152,199, 14,173,200,
-212,140,223,233, 33, 18, 66, 4, 52,146,254, 45, 35, 10,163,162,162, 22,123,123,123, 51, 6,131, 97,132, 78,167,155,151,154,154,
-186,183, 66,228,170,147,187,187,251,242,133, 11, 23,186,198,199,199,139,174, 93,187,150,123,231,206, 29,214,104, 52, 46,171, 78,
-243,126,129,102, 90,144, 66,200,243,114,115,158, 16,155,156,220,251, 65,161,225,120,249,182, 32,185,168, 97,235, 96,255,223, 23,
-206,159,169,208, 93,219,135,226,244,100,124,115, 45,189,144, 53,234,103,154, 24,117,179,246, 16, 2, 51, 71, 13, 99,139,138,138,
- 32, 19, 9,217,228, 39,207,120,239,119,108,107,252,114,250, 20, 38, 61, 61, 29,170,226, 98,158,139,139,139,117, 74, 74, 74,174,
- 41,154,149, 25,138,202,162, 64,181, 50, 24,149,240, 58,154,175, 70,176,170, 51, 88,166,106, 86,108, 18,171,233,120, 24,141,198,
-218, 53, 17, 26,170, 48, 88,186, 44,221,107, 22,217, 68, 66, 72,189,242,255,223,196, 53, 80, 82, 82, 98, 95, 33, 42, 86,237,131,
-162,137, 17,172, 58,111,175, 42,130, 21, 27, 27, 11, 59, 59, 59, 24, 12, 6,200,229,114, 72,165, 82, 72,165, 82,168,213,106,136,
- 68, 34,240,120,188, 90,233,138,197,226,244, 39, 79,158,184, 91, 89, 89,193,104, 52,190,100,178,158, 63,127, 14, 11, 11,139, 76,
- 83,251, 95,149, 70,176,128,211, 91,166, 87, 58,138,208,210, 66,254,146, 16,143, 16,252,131,160, 21, 34, 87,117,138, 42,165,199,
-220,216, 14, 96,187,139,139,203,214, 29, 27,142,132,134,134,134, 30,121, 93, 77,142,191, 60,194,117,184,162, 73, 34,132, 28,158,
- 49, 99, 70,157,231, 14,153, 49, 99,198,172,202, 34, 90,111,204, 96,149, 87, 74,175, 86, 78, 33, 33, 33,193,150, 54,206,231,166,
- 46, 92,111,190,227, 22,131,130,180,199, 72, 61,253,121, 1,171, 83,117, 96, 24, 38, 45,233,202,143,123, 1,168,110,223,190,125,
-193,196,155, 97, 83, 63, 31, 31,236,137, 50,160, 36,253, 30, 24, 66,183,116,236,216, 81,245,186,153, 40, 55, 87,211,150,252,104,
-189,231, 14, 31,121,165, 38,176,128,173,131,185,122, 79, 44,246, 18, 48,204,114,175,240,166, 61, 6, 57,216, 42,187,123,201, 44,
-187,123,137,193,187,118, 0,135,156, 51,145,107,123, 22,227, 86,185,120, 93, 57, 88,248, 91,189,183,248,185,189,219, 54, 49,119,
-110,199, 63,162,167,198,105, 89, 23,233,255,188,243,251,211,167, 79, 23, 58, 58, 58,238, 79, 79, 79,127,209, 59,213,213,213,181,
-155,135,135,199,146, 5, 11, 22,120, 36, 37, 37, 41,238,222,189, 91,184,119,239,222,231, 12,195, 44, 72, 75, 75,171,241,233,254,
- 65,145,110, 74, 67, 51,209,134, 40,165,225,201,139,200,149, 92,216,120,216,251,131,174,118, 28, 52, 92, 18,119,126, 43,172,147,
- 31, 98,245,141, 76, 99,114, 65,201,224,199, 42,154,110,138,185, 18,137, 68,123,214,238,219,247, 52, 40, 40,136,168, 84, 42,232,
-245,122,100,101,101,225,171,159,247, 68,177, 44, 11, 43, 43, 43,156, 57,115,134,253,228,147, 79,246,184,184,184, 12, 48,197,100,
-177, 44,251,226,102, 85, 85, 20, 72, 42,149,214,206, 96,148,125,167,162,129,121, 29,205,170, 12,214,171,145,173, 90,106,150, 94,
-192,101,157,219,171,138,232,241,120, 60,176, 44, 91,105,164,175,234, 48, 73,126, 21, 6, 43,243,181, 30, 36, 40,165,238, 53, 12,
-164,249,219, 40,155,138, 1, 0,216,170,166, 98,168,208, 71,203,164, 8, 22, 0,136, 68, 34, 92,185,114, 5, 93,187,118, 5,203,
-178, 16,139,197,144, 74,165,144, 72, 36,184,113,227, 6,132, 66, 33,120, 60, 94,173,154, 9, 5, 2,193,177,111,190,249,102,216,
-178,101,203,164, 44,203, 66, 36, 18, 65, 42,149, 66, 44, 22, 99,229,202,149,106,145, 72,116,188, 86, 6, 11, 53,143, 34,172,104,
-198,254,215,188, 50, 77,195,171, 83, 49, 84,228,213, 41, 28,170,156,166,193,197,197,197,154, 16,242, 33,165, 52,176,108,213, 75,
-163, 5, 43, 6, 74,203,183,187,184,184,108,125,117, 20, 33,199, 95, 19,189,170,162,142,200,122, 37,242,164,173,240, 57, 11,165,
-239, 86,238, 89,246, 63, 42,249, 95, 91,201,186,156,165, 75,151,158,171,208,127, 43,235,127, 18,193, 10, 14, 14,246,183,182,115,
- 61, 55,121,225,122,243,173,215,121, 40, 72,123,132,236,115, 95, 20, 80,131,186,162,105,105, 93,203,223, 11,182,183,183, 65,246,
-149, 18,232,243,158,130, 16,114,251,117, 51,208,172, 89, 51,111, 75,107,199,243, 83, 23,253,104,189, 51,146,143,252,212, 63, 76,
- 96, 93, 34, 87,124,134,249,234,235, 19,191,244, 22,167, 63,134,250,222,121, 75, 65,110, 50,162, 50,117,216,115, 37,189,232,252,
-239, 63, 93,102, 2,104,155, 14,131, 45,205, 58, 12,182,198,234,113,199,173, 51, 74, 30,226,122,204,225, 62, 75,102, 30,166,248,
-155,102,119,175,104,174,156,157,157,123,185,186,186,206, 63,114,228,136,187,193, 96, 80, 92,188,120,177,104,239,222,189,207, 12,
- 6,195,218,180,180,180, 35, 38, 71,199,148,218, 23,230, 42,200, 66,216,244,195,145, 31, 92,254,100,213, 15,146,135,145, 55,177,
-124,235, 17, 40, 4,122, 99,100,106,201,128, 40,165,225,152, 73,199,149,207, 95,176,115,231, 78,121, 64, 64, 0,201,201,201,121,
-113,195,215,233,116, 40, 44, 44, 68, 65, 65, 1,180, 90, 45,130,130,130,152,185,115,231,202,231,204,153,179, 0,192, 71, 53, 92,
-140,153,243,231,207,183, 31, 61,122, 52,204,205,205,145,147,147, 3,189, 94,255, 34,218, 36, 22,139, 97,105,105,137,252,252,124,
-156, 62,125, 26,149, 13,217,175,136, 80, 40, 76,115,113,113,118,147,202,228, 90,153, 76, 70,205,204,204, 94, 91,179,236,102,155,
-222,189,123,119,199,249,243,231,139, 42, 54, 51,233,116, 58, 82, 87, 77, 74,169,170,115,231,206,178,181,107,215,194,221,221, 29,
- 90,173, 22, 44,203,190,136, 96,149, 79, 13,144,152,152,136,197,139, 23,131, 82,106,250,131,140, 62, 79, 15,215, 15,236,160,203,
-209, 67,151,163,135, 54, 91, 15, 93,166, 30, 6,213, 63,110,136, 72, 93, 58,160,155, 16, 9,179,127,221, 8, 86, 89, 52, 13, 66,
-161, 16, 73, 73, 73, 56,115,230, 12,154, 53,107, 6,133, 66,129,226,226, 98, 92,189,122, 21,233,233,233,117,138, 96,117,232,208,
- 97,203,201,147, 39,219,124,252,241,199,158, 99,199,142,149,250,251,251, 35, 62, 62, 30,171, 86,173, 42,121,244,232, 81,202,196,
-137, 19,127,170,141, 30, 83, 54,117,141, 73,163, 8,153,255,189, 55,174, 98,154,134,238, 85,236, 94,113, 10,135,151,166,105,168,
-200,129, 3, 7, 60, 93, 92, 92,252, 81,218,191, 10,248,243,104,193,138,220,186,117,235, 86, 40,184, 81,132,127, 55, 55,255,109,
- 9,230, 87,125,209, 49,159, 54,127,123,182,249,150,107,124,228,165, 68,161,224,210,220, 87,205,149, 41,149,204, 75,111,219, 22,
- 72, 20, 65, 6, 42, 4, 80, 2, 67,254, 51,136, 68,162, 90, 27,160, 87, 53, 89,150,157,210,226,237,217,214,219,110,242, 81,144,
-250, 8, 89,231,231,212,218, 92,149,107,142, 33, 68,224,221, 50,180,135, 56, 35, 26, 37,231,119,129, 0,216,112,167, 24, 87,147,
-181, 43,117, 90,237,162,135, 5,154,124,215,112, 98,181,107, 73,230,156,110,253, 26,125,226, 59,240, 52,174,103,125, 15,200, 0,
- 43, 59,126,183,138,205,133,127,199,219,203, 93, 92, 92,188, 21, 10,197, 87,199,142, 29,179, 19,137, 68,230, 15, 31, 62, 52,238,
-219,183, 47,201,104, 52,126, 93,177,227,123,109, 52, 27, 74,165,174,129,126,158, 23, 38,126,253,157,164, 72, 89,140, 98,173, 14,
-206,245, 92,140, 23, 34, 31,191, 29,165,212, 30, 52, 69,211,193,193,161,253,123,239,189,215, 56, 36, 36,132,169,202, 92, 21, 22,
- 22, 66,169, 84, 34, 57, 57, 25,109,218,180, 97,252,253,253,131, 28, 28, 28,218,103,100,100,156,171, 42,157,105,105,105,243,118,
-237,218,213,106,247,238,221, 61, 71,141, 26,165,232,223,191, 63,164, 82, 41,138,139,139,225,230,230, 6,150,101,113,233,210, 37,
-196,196,196, 20, 1, 56,156,150,150,246,123,117,233,140,139,123, 86,143, 16,194,184,186,186,182,234,218,181,235, 27,209, 4,128,
-172,172, 44,175, 11, 23, 46, 76,239,211,167,207,164, 46, 93,186, 40,102,205,154, 37,244,244,244,132,209,104, 36,117,213,204,203,
-203,179,184,125,251,246,138,214,173, 91,127,212,181,107, 87,254,146, 37, 75, 96, 97, 97, 1,163,209, 8,169, 84,138,194,194, 66,
- 44, 88,176, 0,151, 47, 95, 54, 80, 74,191, 45, 40, 40,152, 90,157,230, 75,243, 96, 77, 92,217,164,186,114, 88,213, 60, 88,127,
- 71,153, 87,171,213, 14,181,141,138,153,146,206,219,183,111,211, 87,231,195,170, 46,130,245,170,102,121,127, 48,145, 72, 4, 62,
-159,143,172,172, 44,156, 60,121,242,165,249,175, 68, 34,209,139,105, 28, 42,139, 96, 85,149, 78,133, 66,193,190,243,206, 59, 35,
-142, 29, 59, 54,108,202,148, 41,125,138,138,138,236,205,205,205,179,228,114,249,225,137, 19, 39,110,178,180,180,172,114,138,134,
-202, 52,121, 12,169,114, 20,225, 75, 81, 83,158,168,164,178,238, 90,127,245,121,127,101,154,134, 87,167, 98,168,200,171, 83, 56,
-188, 52, 77, 67, 69,205,190,125,251, 62, 71,233,228,161, 76,217,223, 87, 71, 11,150,227,115,235,214,173,208,208,208,208,139, 40,
-237,159,243,210, 40,194,191,163,204,255,151, 53,255,107, 84,215, 7, 75,242,123,100, 12, 24,113, 38,138,174,127, 85,107,115, 85,
- 25, 6, 77,113,236,194, 95,226,130,141, 90, 53, 12,133, 9,209, 93,123,116,207,124,221, 12, 80, 74,229,151,111,199,130, 47,201,
- 65,254,181, 47,243,137, 81,211, 33, 50, 50,242,110, 93,180,214, 83,170, 31, 34,151,159,127,118,249,204, 91,206, 0, 18,114,181,
-184,251, 36,247,228,126,149,106, 74,249, 62,201, 87,105, 30,128, 73, 78,109, 25, 63,107,159,130, 78, 22,206, 64,102,162, 30,121,
- 89,134, 99,127, 87, 95,172,114, 82, 82, 82,158, 54,108,216,112,235,198,141, 27,199, 53,109,218,212,108,194,132, 9,229, 29,223,
-119,215, 85, 51, 74,173, 78,110,168, 16,125,127,126,195,170,207, 36,254,205,176,111,201, 76,227,197,200, 39,125, 31, 20,105, 77,
-110,179, 22,139,197, 17,227,198,141, 19,170, 84,170, 42,205, 85, 97, 97, 33,138,138,138, 80, 88, 88,136,187,119,239,162,127,255,
-254,226,199,143, 31, 71, 0, 56, 87,205,185,103, 1, 92,242,242,242,186,241,253,247,223,119,220,182,109, 91,167,145, 35, 71,138,
- 34, 34, 34,240,240,225, 67,220,184,113, 67,171,211,233, 78, 73, 36,146,211,177,177,177, 90, 19,203,211, 95,161,105, 0,176,216,
-214,214,118,237,222,189,123, 23,157, 61,123,118,232,176, 97,195,228, 6,131,129,188,166,230, 36, 59, 59,187,207,143, 30, 61,186,
-229,228,201,147,125,135, 14, 29,202, 76,156, 56, 17,235,214,173,195,190,125,251, 88,163,209,120, 80, 32, 16,124,144,149,149, 85,
-227, 0,148,151,230,193,170,102,158,171,154,182,255, 77, 79,161,175,173,249,106, 36,172,105,211,166, 14, 21, 71,105, 86,252, 91,
- 27, 26, 55,110,252,210, 60, 87,229, 29,218,203, 23, 30,143, 7, 62,159, 95,171, 38,194,134, 13, 27, 66, 32, 16,176,193,193,193,
-155, 0,108, 2, 94,126,101,142, 64, 32,120, 49,169,169, 41,104, 12, 44, 54,108,220,122,195,192, 82, 24, 89, 10,202, 2,122, 10,
-176, 70, 22, 70,150,194,200,178,165,211,162, 81, 64, 93, 98,252,159,215,107, 21,166,105, 88, 89,201, 84, 12, 21, 31, 48, 95,157,
-194, 1,168,162, 31, 85, 89,247,131,242,254,168,149,141, 22, 44,215,220, 90,182, 94,154,146,146,242,126,117,154, 28, 28,181, 49,
- 88,179,148,145,107,244, 0,108, 8, 33, 51, 35, 35, 35, 31,190,238,143,241,120,204,204,204, 67,195,215, 82, 32,143, 71, 48,243,
- 77,100,192,104, 52,206, 46,190,189,150,165,148, 90, 18, 66,102,220,186,117,235,181,210, 73, 13,134,241, 95,253,116,105,165,157,
-133,168, 83,118,190,230, 40, 8,169,116,214,118, 3,232,199,219,191, 76,252,210,202,142,223, 45, 47,203,112,140,101, 48,253,159,
-112, 66,163,162,162,150,120,123,123,243,126,248,225,135, 17, 90,173,246,165,142,239,117,214, 44,210, 78, 11, 82, 8,121,126,158,
-174, 19,158,196, 39,246,121, 80,100, 90,179, 96, 5, 68, 46, 46, 46, 81, 42,149, 10,132, 16,104, 52,154,151, 12, 85, 69,131,165,
-211,233,144,153,153, 9, 79, 79, 79, 84,152, 51,169, 90,202, 76,201, 17, 91, 91,219,139,107,214,172,233,177,110,221,186,150, 44,
-203, 94,209,233,116, 71,178,179,179,149,117,201,243, 95,161, 89,246,189, 79,100, 50,217,178,117,235,214,173,144, 72, 36,161,153,
-153,153, 23, 94, 71,179,204, 60,189,109, 99, 99,227,188,117,235,214, 61, 27, 55,110,108,193,231,243,175, 17, 66, 6,228,231,231,
-215,229,101,207,209,175,185,189, 38,246,253, 5,197,254,181, 53, 77,121,253, 77,173, 30, 38, 13, 6,229,204,153, 51, 51, 95,125,
-231, 96,197, 57,175, 42,254,213,106,181, 37, 38,104,178, 95,124,241, 69,181, 15,113, 21,141, 86, 73, 73, 73,141, 77,186,148,165,
-217,221,223, 29, 95,187, 58,146,165,217,127, 99, 21,119, 8,192,211,178,133, 86,179,173, 86, 89, 2,112, 22, 64, 60,165, 52,254,
- 21,221,138,235, 57, 56,222,140,193,138,140,140, 76, 2, 48,252, 77,254, 88,215,174, 93,207, 0,240,127,147,154,119,239,222, 77,
- 0, 48,244, 77,233,237,208,104, 98, 1,244, 28, 67,136, 96, 59,173, 58, 34, 85,214,161,189,223,223, 57,138,176, 42, 42,235,248,
-254,186, 84,214,241,189, 22, 55,155, 19, 98,177,152, 20, 22, 22, 66,167,211,161,168,168,232,133,185,170,104,178, 12, 6, 3, 8,
- 33, 40, 42, 42,130,153,153, 25,244,122,125,173,158, 20,203, 76,202,174,136,136,136,189,231,207,159, 55,188,137,124,255, 21,154,
- 42,149, 42, 29,192,123, 17, 17, 17,252, 55,165,153,147,147,147, 10,160,165,151,151,151,200,212, 40, 88,117,145,172,186,110, 55,
-129, 31,254,130, 34,255,243, 63,173, 98,141,143,143, 15,120,211,154,137,137,137,143,222,120, 58,175,109,155,252, 47,185, 87,209,
- 50, 51,186, 53, 49, 49,177, 30, 33, 36,241, 85,131, 85,221,182,234, 52, 1, 64, 36, 18, 29, 72, 74, 74,114, 22,139,197,169,166,
-172,231,224, 48, 5, 82,151,176,183,201,226, 92,251, 52,167,201,105,114,154,156, 38,167,201,105,114,154,117,255,157,209, 21,231,
-193,250, 55,241, 31,154, 54,142,131,131,131,131,131,131,131,227,159, 1, 1, 16, 84,217,134,218, 56, 83, 66, 72, 80,109,127,184,
- 38,125, 78,147,211,228, 52, 57, 77, 78,147,211,228, 52,255,123,154, 53,105,191, 50, 34,247, 95, 27,193,226,154, 8, 57, 77, 78,
-147,211,228, 52, 57, 77, 78,147,211,252,219, 53,171,248, 29,174,137,144,131,131,131,131,131,131,131,131,163, 20, 62,119, 8, 56,
- 76,193,213,213,117,105,243,230,205,199,223,188,121,243,235,196,196,196, 5,117,212,112,182,177,177, 89, 12,160, 37,165, 84,204,
-227,241, 30,101,103,103, 47, 73, 74, 74,186, 84,215,116, 57, 59, 59,187,217,217,217, 45, 6,208,130,101, 89,161, 64, 32,136,202,
-200,200, 88,148,146,146,114,173,174,154,118,118,118,114, 39, 39,167, 80, 74,169, 61,165,148, 17, 8, 4,121, 41, 41, 41,119, 51,
- 51, 51, 51,185,146,192,193,193,193,193,241,218, 6,107,254, 4,226, 4, 29,248,115,215,211, 36, 0, 32,132,152,163,116,210, 53,
-127, 0,143, 1,220,162,148,190,214, 43, 3,254, 45,154,255,116, 8, 33,140,165,165,101,103,153, 76,246,137, 82,169, 12, 54, 55,
- 55,143, 42,123, 61,206,225,178,201, 51,235,140,189,189,189,253,187,239,190, 59, 99,205,154, 53, 24, 49, 98,196,231,182,182,182,
-171,106, 59,111, 83, 64, 64, 64,111, 23, 23,151,245, 11, 23, 46,178,107,214,172, 25,145, 72, 36,136,141,141,117,153, 61,123, 86,
-211,166, 77,155,238,185,125,251,246, 71,181, 77, 87,195,134, 13, 7,184,187,187,175, 93,178,100,137, 93,104,104, 40,225,243,249,
-184,127,255,190,235,252,249,243,155, 5, 7, 7,111,189,115,231,206,148,218,106, 6, 5, 5,121,122,121,121,181, 92,180,104,145,
-164, 89,179,102, 16,139,197,120,244,232,145,124,214,172, 89,118, 77,155, 54,125,122,251,246,237,235,181,209, 11, 25,115, 91, 32,
-148,233,248, 0,160, 83, 9, 13,145,235,155,234, 77, 93,199, 85, 79, 28, 28, 28, 28,255, 65,131,181, 96, 28, 89,192, 0,179,192,
-128, 76, 26, 76,118,175,219,205,220,232,216,177,163,223,200,145, 35, 73,217,171, 35, 2,118,237,218,245, 54,143,199,123,194,178,
-236,117, 0,119, 41,165, 58, 19,205,128, 16, 64, 19,134, 97,154,255,147, 53,255, 13, 40, 20, 10,111, 59, 59,187, 41, 54, 54, 54,
-221, 66, 67, 67, 11,199,142, 29, 27,127,237,218,181,184,176,176,176,146,141, 27, 55, 46,209,235,245,223,249,248,248,156, 42, 42,
- 42, 90, 81,215,121,177, 4, 2,129, 63, 33, 4, 41, 41, 41, 16, 8, 4, 2,145, 72, 20, 0,192,100,163,225,230,230,230,228,236,
-236,252,195,238, 3, 39,236, 11, 53, 12,158,102,177, 0, 84, 48, 50,182, 88,184,124,157,205,138,197,159, 15,246,241,241,185, 28,
- 19, 19,243,139,169,154,206,206,206,110,238,238,238,107,207,158, 61,107, 47, 22,139,193,178, 44,138,138,138, 96,111,111,143,165,
- 75,151, 90, 47, 92,184,112,164,167,167,231,197,231,207,159, 31, 50, 85,211,206,206, 78,238,229,229,213,242,220,185,115, 18,145,
- 72, 68,244,122, 61,209,104, 52,112,116,116,164, 43, 87,174, 20,207,158, 61,219,215,211,211, 51,253,249,243,231,137, 38,153,171,
- 31,111, 11, 10,179,207,133,211, 36,245,231, 0, 64, 36,210, 69, 17,243,173,111, 20,102,159,107, 86,211,186,144, 31,113, 53,114,
- 52,103,178, 56,254,183, 56, 59, 59,183,242,244,244, 60,144,152,152,120,133,199,227, 13,140,143,143,215,188,174, 38, 33,196, 21,
-128, 39, 0, 43,148, 14,172,202, 69,233,228,157, 73,117,213,180,245,106,223, 11, 98,217,112, 80,218,132, 1, 0,134,185,203,234,
-138, 55,103, 71,159, 59,244, 90,154, 18,249, 8,176,108, 19, 6,148, 5,195,187, 71, 13,197, 63,101, 61, 62,119,140, 43, 25, 28,
-111,204, 96,205,255,144, 88, 49, 2, 76,159, 57,118, 52,195,231,241,200,146,245, 63, 14,186,121,229, 16,117,170,215,228,197, 43,
- 55,218,180,105,131, 54,109,218,144,229,203,151,251,159, 61,123,214,127,199,142, 29,122, 66, 72, 36,165,116, 75, 85, 63,182,116,
-162, 44,209,160, 87,187, 45, 24, 47, 45,241,104,241,221,142,150, 45,219,176, 98,177, 24,175,163, 9, 0, 31, 13, 16,156, 26, 49,
-192,147, 68,244,156,147,240,166, 52,255, 37,230,234,130, 66,161,240, 26, 51,102,204,211,113,227,198, 93,148,203,229, 20, 0, 50,
- 51, 51,229, 61,122,244,200,235,219,183,111,142, 74,165,194,247,223,127,239,182,118,237,218, 83,230,230,230, 41,133,133,133,205,
-106, 81, 49,242,157,156,156,150,117,234,212,105,242,123,239,189, 7,133, 66,129, 97,195,134, 65,163,209, 92,113,118,118, 94,158,
-150,150,246, 57,165,180,198,119,103, 88, 89, 89,205,157, 63,127,190,189, 82,203,195,231,219, 98,145,171, 44,245, 13, 50, 17,131,
-143,222, 18,227,253,247, 63,176,184,115,231,206,114, 0, 38, 27, 44, 59, 59,187,197, 75,150, 44,177, 43, 63,215, 74,165, 18, 74,
-165, 18, 69, 69, 69, 80, 42,149,120,239,189,247,204,159, 62,125,186, 26,165,179, 59,155,132,147,147, 83,232,162, 69,139, 36, 34,
-145, 8,135, 14, 29,106, 92, 82, 82,194,215,235,245,160,148, 26,252,252,252,238,126,240,193, 7,194,152,152,152,112, 0, 38, 25,
- 44,167,116, 8, 10,212,234,111,191,249,242, 51, 59, 0,248,120,250, 87,223, 2,234,230,212,132,117, 78,233, 8, 3,192, 25,172,
-234,203, 39, 15, 64, 63,129, 64,208,223,203,203, 43,244,233,211,167,119, 12, 6,195,175, 0,126,165,244,245, 38,255, 37,132,188,
-229,236,236,188, 56, 53, 53,245, 27, 74,233,246,255, 47,199,180, 65,131, 6,251,119,236,216, 97,115,244,232,209,222, 11, 23, 46,
-124, 23,192,214,215, 56,134, 2, 0,225,101,166,234,113,153,177, 66,153,209,242, 35,132, 52, 0,240,123,109, 30,120,109,125, 91,
-153,129,111,190, 43,188, 67,215,214, 3,222,238,171,176,179,182, 64,177,198,136,152,248,244,122, 39,143,238,111,231, 24,212,227,
-138, 65, 87, 48, 40, 59,250,119,101,109, 53,219,119,235,221,186,195, 91, 29, 21, 22, 22,150,200, 41,210,227, 89,124,178,251,133,
- 83, 7,219, 56, 4,245,184, 8,162, 31,154,113,255,164,138,187,234, 56,106, 3, 99,226,133, 2,185,153,188,210,109, 22, 22, 22,
-136,136,136,192,146, 37, 75, 4, 0, 90, 84,220,246,234, 8, 3,163, 81,235,244,249, 71, 19, 32,226, 83,113,143,110, 93,136,185,
-185,249,107,107, 2,128,131,181,161, 99,115, 95,117,187,140,187, 19,135,220,189,176, 56, 72, 91,146,255,167, 55,157,202,100, 50,
-120,123,123, 99,246,236,217, 38,105,190, 46,255, 11, 77, 74,169,115, 64, 64, 64,209,170, 85,171,124,231,204,153, 99, 85, 82, 82,
- 34, 7,224, 26, 16,220,202,153, 97, 24, 55,173, 86,171,152, 55,111,158,237,151, 95,126,233,107,103,103,151, 79, 41,181,171, 77,
- 58,157,156,156, 86, 45, 89,178,100,202,230,205,155, 73, 88, 88, 24, 20, 10, 5,194,195,195,177,109,219, 54,102,238,220,185, 51,
-156,156,156,150,153,152,247, 54,205,154, 53, 35, 44,128, 60,165, 1,231,150,134,224,247,175,194,160,210,178, 40, 40, 82, 66,173,
- 86, 67, 34,145, 72,109,109,109,205,106,113, 60, 91,132,134,134, 18, 0, 47, 76, 85, 81, 81,233,162, 84, 22, 67,171,213,129, 97,
- 24,115, 15, 15, 15,113, 45,142,167,125,179,102,165,254,179,164,164,132,223,187,119,111,244,236,217, 19, 69, 69, 69,252,194,194,
- 66,104,181, 90, 48, 12, 35, 44,187,177,215,168,169,149, 9, 8, 75, 89, 7,185, 76,106, 43,151, 73,109, 89,202, 58, 0,128, 41,
-235,180, 50, 1,249, 59,203, 39, 33,196,142,199,227,109,242,242,242,122,196,227,241,182, 18, 66, 28, 95, 71,147, 16, 18, 70, 8,
- 89, 34,147,201, 78, 7, 4, 4, 36,201,229,242,179,132,144,101,132,144,240,186,104, 18, 66, 68, 50,153,236,236,146, 37, 75,246,
-220,185,115,231,221, 51,103,206,120,222,191,127,255,237,229,203,151,239, 50, 51, 51,187, 72, 8,145,190,206,181,233,233,233,185,
-241,250,245,235, 97, 45, 91,182,220, 64, 8, 17,191,137,235,157, 16,194, 35,132, 4, 19, 19, 95, 60,248,191, 62,239,174,174,174,
- 94,193,193,193,182, 60, 30, 15,109,218,180, 1,165,180,205,107,106,182, 4,144, 78, 41,189, 64, 41,205,162,148, 26,203,150,108,
- 74,233,165,178, 7,149, 54,181,210,228,155,239,250,228,211,105, 93,167, 78,248, 80,113, 59,193,136,159, 78,166, 97,247,229, 44,
-164, 20,137,209,169,207, 8,139,118,221,223,235,194, 23, 90,236,170,173,230,140, 25,179,186,126, 56,108,136,226, 65, 42,131, 61,
-191,103,227,242,227, 66,168,136, 21, 34,250,140,182, 10,104,214,173, 7,129,112,203, 63,225, 28,253,215, 53,255, 95, 68,176,230,
-110,160,121, 11,198,145, 47,151,124,255,227,231, 12, 33,212,213,167,203, 67, 79,239, 22,197, 44,203, 66,173, 86, 67,167,211, 65,
- 32, 16, 64,173, 86, 35, 33, 33, 1,215,175, 95,135,133,133, 69,173,126, 56,191,160, 0, 46,174,158,144,201,100,111, 68,115,212,
- 59,125,249,137,105,105,252, 43,183,207,133,252,178,102, 71,136, 91,131, 78,143,155, 68, 76,123, 96,102, 81, 79,125,247,238, 93,
- 92,189,122, 21,121,121,121, 40,191,129,254, 71,158,224,245, 43, 86,172,184,157,154,154,138, 75,151, 46, 5,207, 95,253,179,199,
-131,194, 6,252, 44, 37, 21,216,153,101,184,251, 75,163,141,121,185,185,113, 83,166, 76, 57,235,228,228,164,157, 48, 97, 66, 59,
- 83,116, 93, 93, 93, 37,132,144,144,238,221,187,127,244,193, 7, 31, 32, 62, 62, 30, 83,167, 78,213,222,189,123, 55, 63, 36, 36,
-196,106,197,138, 21,194,209,163, 71,227,202,149, 43, 83, 92, 93, 93,247, 2,136, 74, 78, 78,174,238, 93,106, 34,137, 68, 2, 20,
-148, 62,168,234, 12, 20, 0,251, 34,242,196,208,124, 8,133, 66,134, 97, 24, 59, 0, 38, 61,121,178, 44, 43, 20,137, 68, 40, 46,
- 46,134, 82,169, 68, 74,150, 18, 9, 25,197, 40, 42,214, 64,173,214, 67, 83, 66, 33, 86, 56, 48,250,172, 44, 27, 0, 41, 38, 86,
- 24, 76,121,115,163, 86,171,133, 90,173,134, 86,171,133, 86,171,125,241, 58, 31, 30,143,167,112,113,113, 49, 7,144, 87,147, 30,
- 79, 36, 53,240, 24,225,146, 89,139,190,157, 7, 0, 60, 70,184,196, 12, 37,172, 41,235,120, 34,169,225,111, 44, 87, 98, 59, 59,
-187,115,123,246,236, 9,240,246,246,198,243,231,207,253, 7, 12, 24,208,156, 16, 18, 76, 41, 85,213, 82, 75,198, 48,204,151,195,
-135, 15, 31, 63,120,240, 96,226,227,227, 3, 62,159, 15,131,193,224, 26, 27, 27,219,126,247,238,221,211,249,124,254, 79, 70,163,
-113, 10,165, 84,105,162, 38, 35, 18,137,126, 89,191,126,125,219,230,205,155, 99,235,214,173,184,113,227, 6, 27, 22, 22,198,188,
-255,254,251,112,119,119,111,241,254,251,239,239, 35,132,244, 52, 37,194, 90,137,190,251,144, 33, 67,220,120, 60, 30, 90,182,108,
- 41,188,114,229, 74, 83, 0, 87, 94,243,152,154,185,186,186, 94,136,136,136, 8, 62,125,250,244,109, 66, 72,132,169,249, 5, 0,
-103,103,231, 62, 14, 14, 14,203, 21, 10,133,149,169,223, 81, 42,149,170,140,140,140,169, 41, 41, 41,123, 77, 44,255, 45, 27, 53,
-106, 4,131,193, 0, 11, 11, 11, 56, 58, 58,182,118,113,113,153, 98, 97, 97,209,175,176,176,112,114,114,114,242,141, 90,228,215,
- 5, 0, 67, 41,125, 90,246,217, 3, 64,249,107,150,162, 41,165,207, 41,165,113,132, 16,103, 66,136,155, 41,205,133,182, 94,237,
-123,181,236,216,189,117,155,230, 65,204,210,189,241, 48,178, 44,248, 48,130,207, 99,145,109, 20,128, 16, 2,119,223, 48,158,195,
-131, 91, 45,108,125, 59,245,202,142, 62,117,200, 20,205,174,189,251,182,241,243,245, 97,190, 62,144,136,252,148, 7,198,140,199,
-103,179, 9,195,160,126,147, 78,182,238,190,193, 60,175,224,183, 4, 25,241, 15,218, 91,123,183,235,152,251,244,194,105,206, 54,
-112,212,218, 96, 17, 66, 40,165,244,197,147,213,156,239,233, 28, 91, 43,226,241,240,193, 61, 38, 41, 93, 91,124,239,222, 61,216,
-216,216,192,222,222, 30,230,230,230,120,242,228, 9, 78,159, 62,141,232,232,104, 80, 74, 17, 28, 28, 92,171, 31,206, 72, 79, 71,
- 78,110,209, 27,213,172,231,228,132,122, 78, 78,252,236,188,124, 92,189,119, 63,224,208, 79, 29,253, 50,152, 49,155,213,106,245,
-139,125,244,250,255, 94,171,139,189,189,189,241,227,143, 39,228,140,250, 54,174,193,160, 14, 46,188, 62,225,142, 56,112, 37,141,
-183,235, 60,143,126, 62,178,113,118,108,108,140,201,153,118,119,119, 95,220,190,125,251,207,248,124,190, 96,244,232,209, 0,128,
-137, 19, 39,106,238,223,191, 31,152,148,148, 20,231,228,228,228, 55,121,242,228,251,251,246,237, 19,124,248,225,135,164,164,164,
-228,134, 64, 32,160,206,206,206, 11, 82, 83, 83,231, 85,106, 52,120,188, 59, 15, 31, 62,244, 48, 72,156, 97,171, 96,208,229,243,
-219, 0, 0, 51, 49, 69,118, 70, 10,162, 98,111,194,206,206,206,194,214,214,246,113,171, 86,173, 52, 25, 25, 25,159, 60,123,246,
-108, 75,117,233, 20, 8, 4, 81,247,239,223,119,117,112,112,128, 82,169, 68, 82,102, 49, 54, 93, 37, 80,105,164, 0,164,224, 65,
- 1,133,173,155,162, 62, 85,221, 13, 10, 10,210,105,181,218, 25, 49, 49, 49,219,107,208,204,123,244,232,145,220,197,197, 5, 60,
- 30, 79,183,123,247,110,161, 86,171, 5,165,212,112,244,232,209,129,249,249,249, 45, 27, 52,104,192,184,187,187,175,104,213,170,
-149, 58, 45, 45,109,212,243,231,207,171,124,209,240,241,137, 94,186,118,243,206,127,151,255, 60,105, 55, 0,184, 52, 15,200, 61,
- 60,175,169,182,221, 60,101,141,235,142, 79,244,210, 97,194,223,246,234,179,225,179,102,205, 10,176,182,182,198,216,177, 99, 49,
-127,254,124,204,153, 51,199,123,236,216,177,163, 1,172,170,197, 77, 86,234,232,232,120,115,205,154, 53,254,173, 90,181,194,209,
-163, 71,177,115,231, 78,196,197,197, 25, 60, 61, 61,249,205,155, 55,199,220,185,115,209,165, 75,151, 81, 19, 38, 76,104, 71, 8,
-105,106,162,233, 24, 49,119,238,220, 62,173, 91,183,198,176, 97,195, 52,231,207,159,127, 23,192,201, 83,167, 78,117,184,112,225,
-194,222,159,127,254, 89,186,100,201,146,174,147, 39, 79, 30, 7,224,155, 58,228,191,111,219,182,109, 1, 0,173, 91,183,198,242,
-229,203,187,188,142,193, 34,132,136,108,108,108,142,108,221,186, 53,216,215,215, 23, 67,135, 14,109,250,238,187,239, 30, 33,132,
-116,162,148,154,244,222, 72, 39, 39,167, 47,215,175, 95,239, 37,149, 74, 77,254, 93,173, 86,107, 61,102,204,152,101, 0, 76, 54,
- 88, 65, 65, 65, 56,127,254, 60, 58,118,236,136,134, 13, 27,122,141, 25, 51,102, 69,151, 46, 93,240,233,167,159, 94,118,116,116,
-116, 78, 79, 79, 55,245, 69,207,238, 0,158,148,229,191, 30, 0,111, 0,191,151,109,107, 78, 8, 1,165,244, 57, 74, 95, 30,238,
- 7,160,230,254, 88, 18,249,240,222, 61,123, 42,126,189,146, 9, 35,203,194,223, 69,130,128,122,230,136,207, 44, 65,124, 74, 14,
- 4, 68, 7,133, 84,140, 70, 45,123, 88,229,102,196, 15,135, 41,221, 3,196,178,225,125,123,247, 52,219,127, 53, 19,249, 41, 81,
- 52,225,230,238,179,250,146,226, 81, 0,240,240,226,246, 31, 28,172, 36,157,124,154,132,240, 84,109,250, 88, 93, 56,240,253,112,
- 0,156,193,250,235, 31,240, 94,242, 34,255,185, 8, 86, 57, 57,249, 80,219, 56, 6, 32, 41,253, 78,233,231,156, 28,228,228,228,
-160,126,253,250, 88,187,118,237, 75,251,150,148,148,212, 41, 1,127,133,166,173,149, 37,122,183,111,199,123,240,228,123,158,154,
- 85,191, 17,205,127, 42,148, 82, 74, 8, 33, 9,217,122,203,236, 66,189,112, 96,123, 55, 42,224, 49, 24,212,190, 30,249,230, 80,
-130, 48, 91, 45,179,228,241,120,140, 41, 79,242, 33, 33, 33,130,246,237,219,127,182,113,227, 70, 65, 90, 90, 26, 44, 45, 45,161,
-215,235,113,231,206,157,212,212,212,212, 56, 0, 72, 75, 75,123,226,234,234,154, 97, 52, 26, 93,253,253,253, 49,102,204, 24,248,
-249,249,145, 41, 83,166, 76, 39,132, 44,168,108,196, 98, 70, 70,198,146,217,179,103,183, 93,188,124,173,205,144,230, 4,197, 42,
- 45,148, 74, 37,226, 99,162, 64,149, 90,124,253,245, 74, 72,165, 82, 2, 64,152,149,149, 37,156, 55,111,238,134,208,208,208,158,
-183,110,221,234, 95,165, 65,207,200, 88, 52,119,238,220,102, 95,127,253,181,181, 82,169,132,186,164, 4, 69,106, 17,174,175, 44,
-141, 80, 54,159,124, 3,223,124,181,130, 9,114,151,219, 40,149, 74,124,246,217,103,107,130,131,131, 91,220,185,115,103,124, 85,
-154, 41, 41, 41,119,103,205,154,101,183,110,221, 58,177,159,159,223,253,194,194, 66,228,229,229, 49,251,246,237, 91,232,238,238,
-110,189,102,205, 90, 34,147,201, 0, 0, 73, 73, 73,194,207, 63,159,253, 75,163, 70,141,126,190,127,255,254,176,170,206, 13, 0,
- 13, 33, 72,115,118,174,239,165,186,202,204,115,118, 46,185,124,126,110,202, 54, 66,144, 86,186, 15,168,211,122,167, 33,137, 91,
-197,173, 53, 26,118,117,122,122, 66, 52,165,160,152,251,247,189, 87,214,214,214,118, 66,159, 62,125,176,108,217, 50, 28, 58,116,
-104,178,181,181,245,202,249,243,231,195,217,217,249, 99, 66,200,106,106,250,236,196, 95,173, 90,181,202,223,223,223, 31, 31,124,
-240,129,246,244,233,211,179, 0, 28, 0,144,112,233,210,165,122, 91,182,108,233,245,203, 47,191, 44, 91,179,102,141,100,221,186,
-117, 94,111,191,253,246,106, 0, 35,107, 18,117,112,112,248,116,240,224,193, 88,177, 98, 5,206,159, 63,255, 54,165,244,104,217,
-166, 99,132,144, 94, 75,150, 44, 57,243,249,231,159, 99,213,170, 85,147,106,107,176, 8, 33,102, 1, 1, 1, 95,116,237,218, 21,
-151, 46, 93, 66,155, 54,109, 16, 30, 30, 62,153, 16,178,150, 82,154, 93,135,155, 5, 99,102,102,246,203,230,205,155,219,120,120,
-120, 96,209,162, 69,248,236,179,207,176,113,227,198, 54, 67,135, 14,253,133, 16,210,223,148, 81,190,102,102,102,102, 82,169, 20,
-203,150, 45,163,137,137,137, 53, 70, 79,157,156,156,172,190,248,226, 11, 98, 97, 66, 51, 0, 33,132,231,236,236,108,225,232,232,
-216,214,209,209, 17,107,214,172,129,189,189, 61, 38, 79,158, 12, 27, 27, 27, 20, 23, 23,163,127,255,254,130,107,215,174, 13, 2,
-176,214,196,172,219, 0, 40,143,120, 5,160,180,175, 85, 81,217,239, 93, 3,208, 26,192,115,148,246,203,178, 54, 69,144,161, 52,
-200,202,210, 28,169,247, 51,192,135, 1,254,245, 20,184, 21, 91, 12,157,145, 66, 38, 55, 67,113, 81, 62,154,120,217,161, 80,229,
- 10,128, 53,105,246,113, 33,143, 9, 17,137,165,200, 44, 44, 64,250,163, 51, 57, 58,163,102, 76,126,220,229, 36, 0,176,110,208,
-118, 76,212,245,227,183,250,119,107, 99,159,149, 87, 15,148,178,205,192,193, 81, 11,106,236,131,197,178,127,190,246, 43, 70,132,
-202,209,233, 94,111, 96,222, 95,161, 89, 25,127,133,230, 63,193,103,185, 88,241, 11,228, 18,198,112,234, 86,166, 81,111, 48,226,
-196,173,116,163, 76, 76, 12, 86, 98,109, 33,203,178, 38,221, 16, 35, 35, 35,245,151, 46, 93,218, 58,115,230, 76,172, 90,181, 10,
-207,158, 61,131, 64, 32,128,175,175,175,131,155,155,155, 19, 80, 58,122,175, 97,195,134,182, 60, 30, 15,177,177,177,216,185,115,
- 39,230,205,155, 71, 35, 35, 35, 55, 86,117,163, 72, 77, 77,189,147,145,145,177,126,233,130, 89,249, 2, 77, 42,100,198, 44, 24,
-243,159, 65, 96, 44,192,132,201, 51,241, 60,219,136, 59,207,139,112,231,121, 17,210,213, 18,124,177,232,107,158,183,183,119, 47,
- 87, 87,215, 46,213,152,161,107,105,105,105,219,230,204,153, 83,144,157,157,253,162,252,232, 12, 44,116, 6,246,213,155, 19,150,
- 46, 93,106,233,228,228, 52,208,197,197, 37,162, 42,205,204,204,204,204,212,212,212,216,153, 51,103,234,178,178,178, 80, 88, 88,
-136,227,199,143,191, 93,191,126,125,235, 41, 51, 23,144,231,217,244, 69, 58, 11, 88, 75,172, 88,251, 19,175, 65,131, 6,239, 57,
- 59, 59, 87,219,143,200,217,217,197, 43, 32,160,193,158,107,215,174, 13,243,242,242, 26, 95,110,172, 40, 5, 5, 0, 79, 79,207,
-177,145,145,145, 35,130,131, 3,247, 56, 56, 56,250,253,205, 79,143,237, 7, 14, 28,232,199,178, 44,246,236,217,115,159, 82,186,
-106,255,254,253, 55, 53, 26, 13, 6, 13, 26,228, 9,160,171,137, 58, 97,239,189,247,222,248, 54,109,218, 96,210,164, 73,186,211,
-167, 79,135, 80, 74, 87, 82, 74,227,105, 41, 9,148,210,181, 23, 46, 92,104, 50, 97,194, 4, 77,179,102,205, 48,108,216,176, 17,
-132,144, 54, 53,232,182, 28, 60,120,176, 63,203,178,216,181,107,215,189, 10,230,170,220,212,158,221,187,119,239, 53,173, 86,139,
- 33, 67,134,212, 39,132,116,168, 69,222,133, 98,177,120,207,194,133, 11, 45, 83, 82, 82,240,254,251,239,107,158, 60,121,130,121,
-243,230, 73, 45, 44, 44,142, 18, 66,204,106,123, 60,197, 98,241,143,223,127,255,125,159, 70,141, 26, 97,220,184,113,218,239,190,
-251,110,226,248,241,227,181, 33, 33, 33,248,246,219,111,251,136, 68,162, 90,205, 80,157,145,145,145,127,254,252,121,155,154,150,
-244,244,244, 12,147,162,254,245,234, 89, 54,108,216,240,126, 88, 88, 88,118,227,198,141, 27, 0, 64, 84, 84, 84,214,158, 61,123,
-168,141,141, 13,142, 31, 63,142, 31,127,252, 17,173, 90,181,130, 66,161, 24, 84,155, 58,169,108, 65,133,191,175,110,127,117,191,
-154, 78, 16, 45, 80, 25,192,103, 24, 8,120, 20, 9, 25, 37,208, 25, 41,132, 2, 6, 2, 30,192,103, 40,108, 20, 2, 8, 4, 60,
- 0,196, 36, 77,134, 16,228, 21,235,193,231, 17, 8, 68, 66,194, 24,140, 47, 66,132, 12,223, 40, 21, 75,196,196,222, 66, 8, 33,
-159,128, 16,112,112,188,185, 8, 22, 0, 24,141,127, 14,124, 84, 22, 5,210,106,181,175,149,144,191, 66,179,138,176,249,127,234,
- 4, 22, 22, 22,242, 47, 92,184, 96, 33, 16, 8,228, 61, 27,181,202,249,114,119,140,237,252, 29,209, 16,241, 64,122, 53,102,210,
-206,159, 59, 77,242,242,242,172,188,189,189,243, 76,209,123,246,236,217, 40, 39, 39,167, 69, 12,195, 52, 51, 26,141,187, 87,173,
- 90,133,111,190,249, 70, 54,118,236,216, 39,206,206,206, 41, 62, 62, 62,110,171, 87,175, 22, 3,192,182,109,219,112,226,196,137,
-190, 2,129,224, 70, 66, 66, 66,122,117,186,119,239,222,253,220,221,221,253, 74, 92, 92,220, 90, 66,136,165, 66,161,176,218,191,
-127, 63, 73,203,215,226,243,109,207, 94,140, 44,148,139,121,152,217,207, 14,239,188, 51,128,255,244,233,211,175, 0,156,168, 74,
-243,246,237,219,147, 61, 61, 61, 47,196,196,196,172, 18,218,248,218, 72,130, 70, 43, 58,204, 44,109,126,116,178, 22,131, 41,171,
- 16, 11, 10, 10,144,157,157,141, 17, 35, 70, 88, 46, 94,188,120, 58,128,243, 85,105,222,185,115,231,154,167,167,103, 90, 76, 76,
- 76, 11, 74,169,200,194,194,162,213,170, 85,171, 72, 66,174, 22, 51,182,196,162,168,164, 52,157, 10,137, 0, 11, 6,187, 98,216,
-176, 97,252,231,207,159,127, 89,246, 68,254, 39, 92, 92, 92,188, 3, 2, 2,246,236,216,177, 35, 96,245,234,213,185, 79,159, 62,
- 45,118,118,118,158,255,202,110,154,165, 75,151,230,108,219,182,205,247,253,247,223,223,227,232,232,248,110, 93,167,212,120, 93,
-204,205,205,151,141, 25, 51, 6,191,252,242, 11,242,242,242, 86,151,149,177, 85, 59,118,236,216, 53,106,212, 40,108,219,182,109,
- 25, 33,228,184, 9, 81,172,110,131, 6, 13,194,177, 99,199,112,230,204,153, 47, 40,165, 15,171,136,242,197, 16, 66,166, 31, 60,
-120,112,205,224,193,131,177,105,211,166,174, 0,170,155,120,182, 83,151, 46, 93,112,244,232, 81,228,228,228,124, 91,217, 14,249,
-249,249,223,253,246,219,111, 45,186,116,233,130,165, 75,151,118, 2,112,214, 4,115,229,111, 97, 97,177,121,205,154, 53, 97,141,
- 26, 53,194,123,239,189, 87,162,211,233,186,126,246,217,103,135,118,238,220,169,216,186,117,107,232,232,209,163,175, 19, 66, 62,
-164,148,154, 52,137, 45,143,199, 91,178,110,221,186,145, 17, 17, 17,152, 60,121,178,225,196,137, 19,189, 41,165, 39, 9, 33,177,
-211,166, 77, 59,242,245,215, 95,243, 86,172, 88, 49,146,199,227,101, 25,141,198, 89,127,147,161, 94,241,245,215, 95, 7, 4, 6,
- 6,162,164,164, 4,207,158, 61, 67, 70, 70,198,142,227,199,143,159,124,240,224,193,242,244,244,244,125, 14, 14, 14,163, 38, 79,
-158,236, 26, 22, 22, 22,230,234,234,106,149,156,156,108, 74, 93, 82, 30,153,202, 4,240, 8, 64,139,178,200, 21, 0, 52, 71,105,
-211, 32, 80, 58,162, 48,207,196,196,222,143,121,158, 82,223,202,204, 28,121,172, 8,207, 83,178, 33,149,203,193, 80, 6, 6,117,
- 30,188,221,237,193, 82,160, 48, 59, 5, 12, 67,238,155, 34,169, 55,178,145,241, 73, 25, 46,150,114, 9,188, 67,186,219,220, 59,
-187,105,187, 69,131,214,163,249, 60,194, 19,138,205,215,191, 55,248, 3, 91,189,145, 66,153,151, 6,194, 99,110,128,131,227, 77,
- 26, 44,150,101, 33,149, 74, 95,138, 48,189, 26, 5,146, 74,165,208,104,106, 55, 93,138, 84, 42,133,206,128, 55,170,105,202,111,
-190,105,205,191, 19,189, 94,175, 24, 63,126,124,235, 22, 45, 90, 36,117,235,214, 45,214,223,223, 46,190, 71, 75,137,237,186,141,
- 7,131,187,181,107,120,167, 48, 55, 35, 43, 65, 44, 46,201,203,203,179,217,182,109, 91, 83,189, 94, 47, 51, 69, 55, 45, 45, 45,
- 17, 64,162,139,139, 75,143,246,237,219, 15,237,217,179, 39, 46, 94,188,168, 40, 46, 46,246,151,203, 75, 71,147,238,219,183, 15,
-191,253,246,219, 79,169,169,169, 7, 77, 77,111, 66, 66,194,113, 0, 94,245,234,213,179,172, 87,175, 94,134,165,165,165, 48,165,
-168,248,197,200, 66, 33,159, 65,171,207,110, 34,191,176, 8,150,150,150,144,201,100,158, 53,105,150,205,115,117,168,217,192,133,
-141,120,113, 59, 46,172, 91,179,218,162,252,201,212,193, 82,136,252,252,124,100,103,103, 35, 43, 43, 11,148, 82, 24,141,198, 0,
- 19, 52, 19, 1, 36,218,218,218, 58,121,123,123, 19, 51, 51, 51,208,220, 98,228, 41,117, 47, 53, 65, 22, 41,139,225,226,226, 2,
-133, 66, 81,105,115,132,181,181,181, 66, 44, 22,111,217,176, 97,131,191, 66,161,224,141, 26, 53,202,114,212,168, 81,173,171, 50,
- 99, 50,153,140,183,105,211, 38,159,224,224,224,205, 30, 30, 30,157,226,227,227, 11,254,135, 55, 90, 30,128,177, 83,167, 78, 13,
-149, 72, 36,248,230,155,111,226, 0,252, 92,182,121,207,119,223,125, 55,103,240,224,193,126, 19, 39, 78,108,248,249,231,159, 79,
- 46,107, 42,172,178,217, 89, 40, 20,134, 4, 4, 4, 96,255,254,253, 0,176,191,134,159,223,123,229,202,149, 53, 61,123,246,132,
- 68, 34, 9,171, 97, 95, 79, 55, 55, 55, 28, 60,120, 16, 0,238, 84,229,147,159, 60,121,130,254,253,251,131, 16,226,105, 66,222,
-251,116,238,220,121,239,210,165, 75,249, 10,133, 2, 35, 71,142,212, 94,191,126,189, 59,165,244, 34, 33,164,253,144, 33, 67, 46,
-252,252,243,207,242, 11, 23, 46,248, 47, 94,188,248, 10,143,199, 91, 98, 52, 26, 63,175, 65,115,196,162, 69,139,102,246,237,219,
- 23,243,231,207,167,187,119,239,126,143, 82,122,178,204, 84,158, 32,132,188,111,101,101,245,243,236,217,179, 73, 65, 65,193, 76,
- 66, 72, 50,165,244,251,170,244, 84, 42, 85,129,209,104,116, 84,169, 84, 38, 61, 33,154,186,127,253,250,245,187, 5, 6, 6,226,
-224,193,131,232,213,171, 23, 78,157, 58, 5,134, 97,142,164,164,164,156, 3,112, 18, 0,156,156,156, 44, 98, 99, 99, 39,183,105,
-211,134, 57,125,250,116,127, 0, 63,153,144,132,231, 0, 26, 1, 56, 69, 41, 77, 42, 27, 56,217, 18,165, 83, 54, 60,162,148,150,
- 79,117, 18, 4, 32,214,148, 60,177, 90,229,214, 51, 71,247,182,239,244,246,120, 11, 30,143, 1, 31, 66,168,138, 10, 1,163, 17,
- 94,238, 14,104, 22,224,128,123,241,106, 92, 57,189, 39, 95,165, 84,153, 52,189,132, 81, 87,188,249,204,241,131,237,194, 58,127,
- 96, 33,246, 10,132,155,195,164,224,168, 27, 39, 79,137, 69, 66,242,246,219, 3, 44,219, 55,243,198,153,251,133,184,118,230, 64,
-158,170,168,112, 51,103, 25, 56,234,100,176,170,232, 84,150, 57,121,242,100,251, 41, 83,166,192,220,220, 28, 57, 57, 57,208,235,
-245, 47,162, 77, 98,177, 24,150,150,150,200,201,201,193,174, 93,187, 80,246,180, 82,205, 19,157, 40,109,209,183,235,220, 8, 79,
-174, 21, 75,101,212, 90,246,250,154, 0,160,213,243, 51,191,223,181,207,186, 91,219,112,126, 61, 39,167, 63,109,175,139,230,191,
-196, 96,157, 74, 79, 79, 15,245,243,243, 75,119,119,119, 87,151,148,148,128,170,213, 69, 71,119,173,110,224,102, 49,238, 25,195,
- 48, 84, 42,149,178,150,150,150,197,207,158, 61, 35, 6,131,225, 92,109,244, 41,165, 99,199,142, 29,203, 92,186,116,233,189,161,
- 67,135,194,195,195, 3,119,238,220,193,182,109,219,176,119,239,222, 45, 66,161,112, 98, 93,210,157,148,148,164, 12, 8, 8,120,
- 41, 2,242,234,200, 66,189, 38, 11, 44,203,154,220, 57, 63,239,246,182,104,158,173,173,190, 97,189, 63,166, 19,201,203,203, 67,
- 86,153,185,170, 96,178, 76, 14, 97, 18, 66,138,180, 90,237, 43,233,252,163,249,177,184,184, 24, 58, 77, 38,140, 70, 99,165,154,
-185,185,185, 69,206,206,206,235,214,174, 93,251,245,194,133, 11,237, 87,173, 90,149,251,248,241,227, 66,134, 97, 74, 94,121,136,
-145,120,121,121, 41, 86,172, 88,225,176,118,237,218, 92,150,101,215,253,143,205, 85,223, 70,141, 26,109,233,214,173,155, 98,252,
-248,241, 88,187,118, 45,210,210,210,102, 80, 74, 13,101,229,128, 37,132, 76,251,246,219,111, 15, 79,159, 62, 29, 58,157,110,197,
-209,163, 71,231, 19, 66,198, 82, 74,127,174, 76,211,206,206,206,149,207,231,227,246,237,219,133,148,210,103, 53,148,179,116, 95,
- 95,223, 12, 66,136,131,147,147, 83,131,234,246,181,182,182,246, 82, 40, 20, 72, 73, 73, 41,191,137, 87, 70,124,106,106, 42, 21,
-137, 68,196,217,217,217,187,166,252, 91, 89, 89, 77,219,176, 97, 3,255,220,185,115,152, 59,119,110,114, 66, 66,194,144,178,105,
- 4, 64, 41,189, 77, 8,105,211,190,125,251,157,211,167, 79,247,253,242,203, 47,201,147, 39, 79,198, 1,168,214, 96,185,187,187,
-143, 29, 49, 98, 4,214,173, 91,135,245,235,215,143,163,148,238,121, 37,207, 59, 9, 33, 86, 54, 54, 54,235,198,140, 25,131,205,
-155, 55, 15, 1, 80,165,193, 74, 73, 73,153, 62,112,224,192, 57,185,185,185, 75, 76, 57,167,166,236,239,236,236,220,123,232,208,
-161, 14,148, 82,172, 93,187, 54,125,221,186,117,170,194,194,194,159, 83, 83, 83, 95,170, 39, 24,134,217,119,252,248,241,201,227,
-199,143,199,185,115,231,190,113,118,118,166,169,169,169, 27,106, 56,167,105,132,144, 6,132,144, 0, 74,233,163,178, 81,130, 73,
-175,148, 59,223,178,125,147, 77,201, 83,118,244,185, 67, 14, 13,187,255,126,247,198,249,206,158, 13,219, 8,236,173, 20,112,241,
-182,133,181,153, 16, 20,192,131, 4, 53,174, 93, 60,169,207, 76, 75,188, 98,202, 8,194,114, 77,199,160, 30, 87,100,182,238,157,
-235, 7,182,230,123,122,251,160, 83,171,198, 86, 54,230, 2,104,245, 20,167,238, 22,224,234,133, 99,250,204,140,164,115,220, 8,
-194,255, 13,255,149, 14,238,166, 68,176,230,173, 95,191,190,213,198,141, 27,123, 78,158, 60, 89,241,193, 7, 31, 64, 42,149,162,
-184,184, 24,110,110,110, 48, 24, 12, 56,122,244, 40,110,223,190, 93,196,178,236, 97,252, 49, 74,164,252, 2,122,233,109,219, 51,
-215,170,234, 17, 66, 24,160,184,213,252,245,141,223,136, 38, 0, 92,137, 51,184, 56,167,101,207,203,201, 59,250,169,187,139,147,
-176, 75,235, 22,124, 91,171,210,209,204,117,213,124, 3, 55,173,191, 92,211, 96, 48,140, 32,132, 52,156, 54,109,218,114, 23, 23,
- 23,231,249,243,231, 39, 6, 6, 6,170, 11, 11, 11,169, 86,171,101,179,178,178,100,123,247,238,245,204,201,201, 41,210,235,245,
-239, 83, 74,239,213, 38,157,169,169,169,106, 0, 67, 28, 29, 29, 15,102,102,102,238, 29, 52,104, 16, 54,111,222,140,171, 87,175,
-246, 72, 77, 77, 61, 90,215,188, 83, 74, 13,225,225,225,249, 81, 81, 81, 14, 60, 11, 79, 56, 88, 10,208,245,139,210, 96,132, 66,
- 12,168,139,139, 16, 23,243, 8,133,133,133,183, 76,213,140,141,141,213, 6, 7, 7,231,103,101,101,217,218,217,217,149,154,171,
- 10,198, 42, 55, 55, 23, 5, 5, 5,148, 97,152,223, 77,213,204,202,202, 42,110,217,178,165, 42, 54, 54, 86,196, 19, 57,193,201,
- 74,140,210, 38, 72, 10, 59, 5, 31,106, 85, 49,238,223,185,133,194,194,194,243, 85,105,166,166,166,238,114,118,118, 6,128,175,
-231,204,153, 99,219,181,107,215,167, 55,110,220,104, 87,241,119, 66, 66, 66, 14,204,159, 63,191,199,226,197,139,179,183,108,217,
- 50, 61, 45, 45,109,251,255,178, 44,217,216,216, 76, 57,114,228,136, 66,167,211, 97,237,218,181, 88,185,114,229, 70, 74,233,190,
- 87,206,217, 17, 30,143,247, 45,195, 48, 31,125,252,241,199, 24, 51,102,140, 44, 52, 52,116,114,133, 40,215, 75,154, 41, 41, 41,
-159,135,132,132,204,201,204,204, 52,201, 16,196,196,196,140, 14, 9, 9,249, 60, 51, 51,115,121,117,121,151,203,229,114,163,209,
-136,231,207,159,231, 81, 74, 11,170, 40, 95, 37, 62, 62, 62, 41, 70,163,209, 85, 38,147, 89,215, 84, 62,243,242,242,150,132,134,
-134,206,203,200,200, 56, 9, 96, 17,165,180,228, 21,189,187,132,144,134,159,124,242,201,132,101,203,150,245, 79, 79, 79,223, 85,
-147,102, 66, 66,194,146,246,237,219,127, 17, 29, 29,189,133, 82,186,190,138,116,126, 67, 8,209,109,223,190,125,220,243,231,207,
-151, 86,167,153,154,154,122, 24,192, 97, 83,207,111, 85,251, 87,212,180,182,182,158, 62, 97,194, 4, 28, 59,118, 12, 69, 69, 69,
-107, 82, 83, 83,191,172,194,172, 93,243,244,244,252, 45, 60, 60,188,247,138, 21, 43,132, 61,122,244, 24, 7, 96,131, 9,229,243,
- 42,128, 86,101,253,224, 30, 3,200, 41,247,201, 40, 29, 57, 72, 94,173,139,107,210, 52,234, 11, 7,223,185,180,127,103, 82,236,
-253,240,144,118,125,173, 10, 84,174, 16,242, 25, 40,243,210,112,245,244,175,121,169,201,207,174,106, 75,242, 7,215, 70,211,160,
- 43, 24,116,255,242,129, 93,233,241,143, 90,168, 90,117,183,202, 47,114,135, 80, 64,144,159,149,140,235,231, 15,230,166, 37, 62,
-191,164,103, 53,195,254,174,122,254,255,147,230,127, 13, 98,202,128, 32, 66,136, 8, 64, 71,133, 66,209,233,211, 79, 63, 21,117,
-237,218, 21,139, 23, 47,198,169, 83,167,180, 90,173,246, 20,128,211,149, 69, 6,170, 59, 1,127,133,102,183,230, 68,225,232,192,
-172,246,112, 98,134, 4,122,123,145,168,152, 39,252, 91,169, 61,127,124, 29,205,127, 75,129, 38,132,180, 22, 8, 4, 95,250,251,
-251,107,226,227,227, 3,173,173,173,163, 83, 82, 82, 68,122,189,126, 26,165,244,226,235,164,211,209,209,209,182,123,247,238,153,
-179,103,207, 38,243,231,207,199,197,139, 23, 45,171,139,176,152,162, 89,175, 94,189, 14,161,161,161, 39, 86,125,179,129,159,144,
-161, 68, 97, 81, 17,138,138,138, 80,172, 84,162,164, 48, 29,199, 14,236,212, 62,120,240,192, 55, 61, 61, 61,193, 84, 77,119,119,
-247,174,141, 27, 55,222,185, 97,195, 6,139,156,156,156, 23, 6, 43, 55, 55, 23, 44,203, 98,253,250,245,185, 57, 57, 57,141,146,
-147,147, 83, 77,213,244,240,240,232,211,170, 85,171,189,203, 87,255,192, 79,202, 80,162,168,184, 24, 42,149, 10, 37,106, 53,116,
-202, 12,108,249,113,173,230,209,163, 71, 30, 89, 89, 89, 25,213,105, 58, 59, 59, 15,108,221,186,245,130,251,247,239,159,123,242,
-228,201,216,138,219,124,124,124,190,109,210,164, 73,247,223,127,255,125, 78, 74, 74,202,182,255,117, 89, 34,132,116,117,113,113,
- 89,153,149,149, 21,167,211,233,246, 80, 74,183, 85,243,189, 65,124, 62,127,144,173,173,173, 67,122,122,250, 50, 74,233,254,255,
-101,153, 39,132,244,180,183,183,159,149,153,153,185,140, 82,250, 91, 53,223, 43,223,111, 57,165,244, 0,119, 3,251,179,166,179,
-179,115, 79,123,123,251, 5, 25, 25, 25,231,210,211,211,167, 85,215,228,235,234,234, 42, 97, 89,118,129,131,131, 67,203,244,244,
-244,175,211,210,210,126, 53, 53,157,101,175,202,241, 64,105,127, 43,160,180,207, 85, 66,117,115, 95,213,164,105,235,219,169,151,
- 88, 38, 29, 78, 89, 99, 19,128,128,225,241,238,150, 20,171, 54, 87, 23,185, 50, 69, 83, 34,151,141, 96, 89, 99, 19, 6,132,101,
- 24,230,158, 90,173,250, 41,235,241,169, 99,156, 25,250,251, 12, 22, 33,100, 52,165,244, 71,252, 11, 33,166,143,184, 46, 29,194,
- 12,160, 7,195, 48, 45, 89,150,189, 2,224, 72,117,243,214,152,114, 2,254, 10,205,110, 17,196,197,195,150,183, 94, 33, 99, 66,
-151,109,209,127,242, 38, 52,255, 45, 5,154, 16,210,135,207,231,127,102, 48, 24,190,162,148, 30,124, 83,233,244,241,241,217, 16,
- 17, 17, 49,252,196,137, 19,223, 37, 36, 36, 76,120, 19,154,129,129,129, 95,215,175, 95,127, 66,143, 30, 61, 4,246,246,246,200,
-206,206, 70, 76, 76, 12, 34, 35, 35,181,233,233,233, 99,159, 60,121,178,165,182,154,141, 27, 55, 94,104, 99, 99, 51,246,195, 15,
- 63,180, 33,132, 32, 39, 39, 7, 69, 69, 69,116,223,190,125,217,106,181,250,195, 39, 79,158, 28,174,173,102,163, 70,141,126,244,
-244,244, 28,214,183,111, 95,129,139,139, 11,178,179,179,241,240,225, 67,252,254,251,239,154,244,244,244,161,209,209,209,251, 76,
-209,244,242,242, 18,197,198,198, 86,218,156, 24, 18, 18, 34,136,140,140,212,115, 21, 46,167,201,105,114,154,156,193,250,111, 24,
- 44,126,109,118, 46, 51, 41,187, 8, 33,123,203,251,103,188, 46,127,133,230,177,243, 52, 5, 64,119, 66, 8,255, 77,105,254, 91,
- 40, 51, 85, 7,223,180,110, 76, 76,204,135,206,206,206, 19,203,154, 13,223, 8, 15, 31, 62,156,226,226,226,178, 61, 62, 62,126,
-133, 76, 38, 11,102, 89, 86,175,209,104, 46,231,228,228, 76, 78, 77, 77,173,211,139, 96,239,221,187,247,133,179,179,243,129, 21,
- 43, 86,204,160,148, 54, 38,132,104, 13, 6,195,149,188,188,188, 5, 73, 73, 73,105,117,209,188,127,255,254,104, 23, 23,151, 77,
-241,241,241, 75,197, 98,113, 99, 74,169, 86,173, 86,159,207,204,204,252,180, 60,114,101, 10, 85,153, 43,160,116,138, 12,112,112,
-112,112,112,252,103,224,215,229, 75,127,133,105,249,183,104,254,127,230, 77,154,171,114, 82, 82, 82,238, 1,120,235, 13,167,243,
- 14,128, 1,111, 56,157,215, 1, 68,112,165,128,131,131,131,131,195, 20, 24,238, 16,112,112,112,112,112,112,112,112,188, 89, 8,
- 74,231, 33,249, 19,181,105, 91, 37,132, 4,213,246,135, 77,232, 75,196,105,114,154,156, 38,167,201,105,114,154,156,230,127, 76,
-179, 18,237,183, 95,217,148,242,138,222,127,191,147,123,173,197,185, 14,128,156, 38,167,201,105,114,154,156, 38,167,201,105,254,
- 63,132,107, 34,228,224,224,224,224,224,224,224,224, 12, 22, 7, 7, 7, 7, 7, 7, 7, 7,103,176, 56, 56, 56, 56, 56, 56, 56,
- 56, 56,131,197,193,193,193,193,193,193,193,193,193, 25, 44, 14, 14, 14, 14, 14, 14, 14,142,127, 12,127,233, 40, 66, 14, 14, 14,
- 14, 14, 14, 14,142,255,143,188, 20,193, 34,132,112,110,139,131,131,131,131,131,131,227,111,227,191,226, 69,184, 38, 66, 14, 14,
- 14, 14, 14, 14, 14, 14,206, 96,113,112,112,112,112,112,112,112,252, 11, 12, 22,215, 52,200,193,193,193,193,193,193,241,119,242,
- 95,243, 34,229, 17,172,136,178,140, 69,112,167,152,131,131,131,131,131,131,227,111,224, 63,229, 69,184, 81,132, 28, 28, 28, 28,
- 28, 28, 28, 28,111, 24,174, 15, 22, 7, 7, 7, 7, 7, 7, 7,199,191,201, 96, 17, 66,130, 56, 77, 78,147,211,228, 52, 57, 77,
- 78,147,211,228, 52, 57,131,197,193,193,193,193,193,193,193,193,193, 25, 44, 14, 14, 14, 14, 14, 14, 14, 14,206, 96,113,112,112,
-112,112,112,112,112,112, 6,139,131,131,131,131,131,131,131,131,131, 51, 88, 28, 28, 28, 28, 28, 28, 28, 28,127, 19, 4, 64,165,
- 35, 1, 40,165, 15, 76, 22,169,195,104,130,154,244, 57, 77, 78,147,211,228, 52, 57, 77, 78,147,211,252,239,105,214,164, 93, 27,
-255,241,143, 54, 88,127,229, 68,163,132,144,160, 55,125,160, 56, 77, 78,147,211,228, 52, 57, 77, 78,147,211,252,239,105,254,215,
-224,115,135,128,131,227, 95,206, 94,194,131,189,159, 39, 88,234, 12,190, 40, 13,103,239, 63,195, 92,202,190,182,166,115,160, 59,
-180,122, 7, 72, 37, 89, 56,113, 47,238,181, 53, 57, 56, 56, 56, 56,131,197,193,193,241,175,193,201,223, 23, 70, 44, 5, 15, 78,
-160,186, 88,180, 10, 92, 10,224,245,158, 44,109,252,125,161,103, 23,129,207,184, 66,171,139, 70, 91,191,101, 0, 30,114, 7,155,
-131,131,131,195, 52,254,150, 78,238, 97, 97, 97,145, 97, 97, 97, 11, 35, 34, 34,196,220, 41,224,224,120, 13, 30, 52,146,193, 96,
-236,166,213,179, 46,199,175,228,219,171, 74,140,190, 16, 26,186,227,138,175,217,107,105, 10, 72,231, 18, 61, 91,111,251, 41,149,
- 67,113,137, 33, 0, 12, 94, 79,179,140,160,160, 32,203,102,205,154, 29, 15, 14, 14,182,229, 78, 30, 7, 7, 7,103,176,222, 48,
- 44,203, 54,181,183,183,159,172, 86,171, 19, 66, 67, 67,123,255,127, 58,224, 45, 90,180,184, 18, 30, 30,158,209,178,101,203,140,
-150, 45, 91,222,174,105,253,127, 17,103,103,103,223, 70,141, 26, 37, 52,108,216, 48,186,226,122,251, 38,253, 91, 6,180,253, 96,
-174,109,195,190,237,184, 75,211, 68,138, 89, 7, 48,188,246, 15,227, 85,178,244,124,189, 67,228, 19,149, 2,148, 23, 1, 29,156,
- 94, 75,147,165, 29,238,198,170,229, 87,159,217, 57, 92,122,160, 49, 7,101,218,131, 18,199,215, 77,174, 72, 36, 26, 71, 41,237,
- 36, 16, 8, 38,113, 39,239,255, 55,132,144, 32, 66, 72,111, 66, 72,216, 27,212,252,210,223,223, 63,133, 16,242, 9,119,132, 57,
-254, 53, 6,107, 64,125,210,234,189, 6,228,194,192,250,164,104, 80, 3,162, 28,218,128, 92,126,199,139,212,249, 70,184,111,223,
- 62,233,182,109,219,236, 3, 3, 3,119, 53,111,222,252,114,104,104,168, 79, 93,116,194,194,194,142,135,133,133, 13,120,117, 93,
-104,104,232,192,138,235,154, 53,107, 22,213,172, 89,179,130,176,176,176,103,166,232,134,132,132, 60, 13, 9, 9, 41, 14, 11, 11,
-123, 90,113,125,104,104,232,192,102,205,154, 29,127,229,247, 6,188,186,174,202, 3,206, 48,174,135, 14, 29,178, 63,114,228,136,
- 61,159,207,119,120,117,253,225,195,135, 95, 90, 95,135,227, 49, 42, 44, 44,236,202, 43,121,249,240,213,117,213, 17, 26, 26,122,
- 37, 36, 36,228,195, 87,116,175,132,133,133,141,122, 19,230,170,109,219,182,151,239,220,185, 83, 79,161, 80, 88, 86,220,230,104,
- 99,217,229,202,225,111, 39, 15, 27,208,121,156,125, 96,191, 70,220,229, 89, 3,143, 3,133, 48,176,109, 89,150,218, 61,124, 86,
- 98,215,189,199, 59,252,187, 79,213,118,122,131,209, 26,132, 23,129, 11, 30,226, 58,105,234,245,109, 88, 74, 29,206,220, 21,218,
- 69,244,250,152,119,238, 62,223, 78,111, 52,218, 64,143,118,117,210,252,163, 28, 10,120, 60,222,228, 49, 99,198, 48,132,144,143,
-189,188,188, 68,255,159, 78, 87,243, 70,196,229,173, 80,254,141,144, 64,210,234, 13, 26,138,134,114,185,252, 22, 33,196,247, 95,
-102,174,154, 2,144, 81, 74,127, 3,224, 64, 8,225,191, 1,205, 85, 11, 22, 44,152,246,224,193, 3,231,250,245,235,207, 39,132,
-240,184, 74,130,227, 31,111,176, 6,213, 39,243, 28, 28, 93, 78,206, 94,181,163,237,134, 11,113,102,223, 29,186, 45,159, 60,125,
- 73, 43, 71, 43,187,163, 67,189,200,178,170,190, 87,221, 8, 3,145, 72,132,103,207,158, 97,237,218,181,146,121,243,230,181,180,
-176,176,184,215,188,121,243,213,129,129,129,242,234,210,242,170, 38,165,180,149, 64, 32,216,208,188,121,243,205,229, 21, 54, 33,
-164,149, 88, 44,254,177,121,243,230,219,203,155, 33, 67, 66, 66,234,223,184,113,195,156, 16,226, 96, 74, 58,155, 53,107,230, 20,
- 25, 25, 41, 3, 74, 35, 1, 17, 17, 17,226,102,205,154,109,115,113,113, 89, 15,160, 21, 0,120,121,121,137,154, 55,111,190,217,
-205,205,237, 39, 66, 94,174, 52,171,202, 59,195, 48,176,180,180,196,142, 29, 59,192,227,241, 42, 86, 14,176,180,180,196,207, 63,
-255, 12, 66, 72,173,143,103, 96, 96,160, 60, 44, 44,108,159,147,147,211,106,150,101,195, 1,160, 81,163, 70,178,102,205,154,237,
-117,113,113, 89, 83,190,206, 20, 77, 74,105,184, 80, 40, 92,221,172, 89,179,189,141, 26, 53,146, 1, 0,203,178,225,124, 62,127,
- 85, 88, 88,216,190,218,156,163,166, 77,155,142,105,220,184,113,106,227,198,141, 83,253,252,252, 22, 59, 56, 56,156, 95,183,110,
-157, 77,197,188,151, 71,174, 50, 50,115,242,174,220,140,122, 50,121,204, 59, 17,245,220, 28,134, 88, 54,233,107, 97, 74,222,235,
-202,191, 94, 51,135,216,131,208,142, 79, 18,212, 18, 15,239, 80,185,189,255, 59,176,179,228,139,175, 62, 42, 86,128,135,183, 32,
-144,217,213, 77,147,255, 86, 84,156, 90,106, 85,191,155, 44,172, 69, 91, 16,185,143,248,252,157, 98,115,240,153,186,105,254,193,
- 59,225,225,225,162,142, 29, 59,194,217,217,153,103, 97, 97, 49,228, 63,127,142, 42,152, 43,133, 68,116,253,235, 5,159,134, 58,
-219,200, 14,154, 98,178, 76, 24, 62,223,208,222,222,254,220,183,223,126, 27,162, 80, 40, 46,154, 98,178,254, 9,199,179,204, 92,
- 9, 41,165,215,202, 86, 61, 4,208,230, 53, 53, 87,205,155, 55,111,210,204,153, 51, 81, 84, 84,132, 97,195,134,153, 3,248,218,
- 84, 77,133, 66,225,221,184,113,227,237, 13, 27, 54, 76, 12, 14, 14,214, 6, 4, 4,148,248,249,249,197, 7, 5, 5,109,145, 72,
- 36,158,255,245,242,249, 79,209,172, 1, 17,128,246, 0,122, 0,120, 11, 64,179,178,255,195,202,150, 30, 0, 58,190,242,183, 60,
- 58, 90,190,189,121, 21, 26, 61, 42,249, 94, 88,133,245, 21, 63,191,250,127,245, 6,139, 16, 66, 43,254,173,200,187, 13, 72, 75,
- 27, 71,151,105, 95, 30,184, 41,101, 99,238, 34,114,100, 7, 60,249,164, 47,164, 79,239, 98,198,132, 25, 82,133,194,106,194,128,
- 6,164,125, 93,142, 86,116,116, 52,118,237,218, 5, 91, 91, 91,178,113,227, 70,241,128, 1, 3,198,153,155,155, 39,133,133,133,
- 13, 49, 85,131,199,227, 25, 55,111,222,108,214,167, 79,159, 65,214,214,214, 81, 33, 33, 33,245, 25,134, 49,110,221,186,213,108,
-224,192,129, 3,180, 90,237,163,208,208, 80,159,219,183,111, 27,111,222,188, 9,134, 49, 45,104, 23, 25, 25,105, 56,118,236, 88,
-121, 68,199,135, 82,250,104,217,178,101,131,246,239,223,175,176,176,176, 96, 67, 66, 66,234,187,185,185, 69,125,249,229,151, 67,
-246,238,221,171, 48, 55, 55,103, 77,172, 8, 80, 82, 82, 2,137, 68,242,146,145, 34,132, 64,173, 86, 67, 44, 22,155,156,198, 10,
-145,129,134, 54, 54, 54,143,151, 46, 93,218,231,192,129, 3, 82,133, 66,129,176,176,176, 0, 75, 75,203, 39,203,151, 47,239,123,
-240,224, 65,169, 66,161, 48, 89, 79, 40, 20,226,231,159,127,150,189,247,222,123,189,197, 98,241,227,176,176,176, 0,161, 80,136,
-157, 59,119,202,134, 12, 25,210, 83, 38,147, 61, 10, 9, 9,105,104,138,150, 94,175,159,115,243,230, 77,167,243,231,207, 59,185,
-187,187, 79,252,238,187,239, 28, 4, 2, 1, 0,192,104, 52,190, 20,185, 26,210,191, 83,243, 73,115,190, 61,167, 46,209,104, 23,
-205, 24, 17, 33, 48,162, 5,247, 12, 84, 5,123, 9, 15,172,177, 41, 0,175,219,209,106,219, 38,109,135,240,145,249, 27,154, 5,
-152,241, 47,220, 86,218, 83, 74,221, 97,160,205,112, 33,130, 95, 43, 77, 30,109, 2,194,250,156,188, 67,108, 91,118, 28,194, 79,
- 72, 72,128,103, 64, 4,239,240, 77, 56, 80, 74, 61,193, 34,180, 86,154, 21, 16, 8, 4,115,223,125,247, 93,121,124,124, 60, 90,
-182,108, 41, 19,137, 68,115,222, 72, 20,239,186,159, 59, 46,250, 70,224,138,175, 83, 93,211,246, 87, 71,174,204, 37,162,107, 59,
-183,255,226,220,168,205, 40,178,254, 83,119,107, 59,133,224,224,235, 68,178,202,204,213,217,235,215,175,219,116,238,220, 25,243,
-230,205,179, 51, 55, 55,191,248, 79,143,100, 85, 52, 87,132, 16,105, 89,243, 96, 10, 0,215,215,208, 92, 51,111,222,188, 73,179,
-102,205,194,181,107,215,176,124,249,114,116,235,214, 13, 86, 86, 86, 53,214, 31,239,191,255,190,172, 85,171, 86,145,189,123,247,
-190, 59,105,210,164, 33,135, 15, 31,118,219,188,121,179,112,248,240,225,226,119,223,125,215,253,211, 79, 63,253,160,123,247,238,
- 15,154, 55,111,126,125,192,128, 1,146,186, 38,177,108,225,168,249, 92, 86,233, 69, 0, 52,158, 57,115,102, 51, 66,200,225,153,
- 51,103,134, 2,176, 37,132, 28, 6, 96, 7,192,174,236,127,209, 43,127,237,202, 76, 83,249,118,155,202, 52,202,151, 87,190,103,
- 87, 97,125,197,223,120,245,255,154, 35, 88,132,144,118, 0, 46,190,186, 3,159, 98,193,152,201, 11, 37,207,183,172, 68,218,246,
- 85, 96,178, 83,192,203, 79,135,230,226,111,208, 95, 58,132,247,195,195,165, 82, 66, 22,213,229, 96, 42, 20, 10, 8,133, 66,196,
-196,196,224,209,163, 71,232,222,189,187,112,237,218,181,150, 13, 27, 54,252,177, 85,171, 86,119,195,194,194, 26,155, 98, 88,188,
-189,189, 49,104,208, 32,209, 39,159,124,210, 64, 34,145,220,166,148, 10, 60, 61, 61, 49,112,224, 64,225,244,233,211, 61, 36, 18,
-201, 77,150,101,133, 50,153,172,202,232, 80,101,186, 82,169, 20, 0, 4, 62, 62, 62,183,118,237,218,229,217,170, 85, 43,254,201,
-147, 39, 81, 88, 88,200,247,245,245,189,187,115,231, 78,175,150, 45, 91,242, 47, 95,190,140,226,226, 98,106,170,110,113,113, 49,
-164, 82,233,159, 12, 86,113,113,241,159,140, 87, 77,132,133,133,141,242,242,242,186,185,107,215, 46,215, 54,109,218,240,206,157,
- 59,135,162,162, 34,184,187,187,223,218,181,107,151,107,171, 86,173,120, 87,174, 92, 65, 81, 81,145,233,143, 9, 34, 17, 60, 61,
- 61,241,238,187,239, 10,166, 78,157,234, 42, 16, 8,110,138, 68, 34,184,187,187,227,221,119,223, 21, 78,153, 50,197, 85, 36, 18,
- 93, 55,177,201,144, 7, 0, 6,131, 1, 3, 6, 12,144, 75,165, 82, 36, 37, 37,129,101, 89,176,108,169, 39, 77,203,202,185,255,
-251,205, 7,143, 39,143, 29,208,174, 88,163,209,156, 56,127,235, 81,160,143,187, 43, 33,212,131,171,114,170,192, 42,208, 6, 60,
-116, 74, 72,213,138, 69,114, 87,133,153,173, 31,144,123, 17,245,157,197, 0, 37,146,155,143, 85,114, 48,180, 19,144,109, 83, 43,
- 77, 35,219, 41, 46, 69, 43,214, 73,131,204,156, 93,234, 33, 39, 39, 7,110,158,254,208,192, 78,116,229, 65,177, 25,104, 45, 53,
-203, 8, 14, 14,110,227,230,230,230,232,225,225,129,236,236,108,120,123,123,195,204,204,204, 42, 36, 36,164, 83,157,143,193, 5,
- 15, 49, 10,208, 10, 58,242, 53, 8, 51, 31,148,191, 20,252,172,166,184, 29, 34,248,199,153,171,159,127,113,177,113,242, 7, 30,
-140,132,131,181, 8, 27,103, 54,177,182, 83,136,235,100,178, 8, 33, 13, 29, 28, 28,206, 94,191,126,221, 86, 34,145, 32, 50, 50,
- 18,129,129,129, 88,185,114,165,157,149,149,213, 63,214,100,189, 98,174,172, 41,165,106, 0, 44,128,193,168,195,168, 87, 82,202,
- 55, 11, 23, 46,156, 56,107,214, 44, 92,189,122, 21, 46, 46, 46,200,204,204, 68,155, 54,109, 18,242,242,242,170,189, 47, 53,108,
-216,208, 53, 38, 38, 38,229,211, 79, 63,109,186,109,219, 54,169, 92, 46, 71,126,126, 62,126,250,233, 39,204,156, 57, 19,132, 16,
- 80, 74,177,105,211, 38,217,136, 17, 35,154,197,198,198,166,120,120,120,152,218,125,131,148, 69, 92,100, 0,228,101,127, 37, 19,
- 39, 78, 20, 17, 66,196,101,230, 82, 66, 8, 17,112,149,217,159,206,107,165, 94, 4,128,237,178,101,203,150, 80, 74,123, 46, 91,
-182,108, 73,133,253, 15, 87,163, 85,209, 52, 1, 0, 94,213,160,148,246,172,248,183,226,119, 41,165, 61, 41,165, 61, 43,126,191,
-186,223,171,210, 96, 1, 56, 79, 41,109,247,167, 48, 32,208,216,177,190, 31,242, 79,237,129,148, 71, 94, 90,152,184,251,112,147,
-240,161,167,180, 97, 93, 14,164,153,153,217,139,133, 97, 24,164,165,165,129,199,227, 97,206,156, 57,146, 9, 19, 38, 52, 18, 10,
-133, 87,219,182,109,187,180, 38,195, 2, 0, 55,110,220,128,183,183, 55,153, 53,107,150,121,187,118,237,248, 0,112,239,222, 61,
-120,121,121,145,197,139, 23, 43,122,245,234, 69,100, 50,153,201,209, 33,134, 97, 32,149, 74, 17, 17, 17, 65, 54,111,222,108, 38,
- 22,139,113,228,200, 17,100,103,103,163,115,231,206,252,205,155, 55,155, 73, 36, 18, 92,184,112, 1, 5, 5, 5, 38,235, 18, 66,
-160,209,104, 42, 53, 88,149, 69,182,170,163,101,203,150, 27, 29, 29, 29, 87,111,219,182, 77, 44,149, 74,113,238,220, 57, 20, 20,
- 20, 96,208,160, 65,134,159,127,254, 89, 98,110,110,142, 43, 87,174,160,160,160,160, 78, 5,253,198,141, 27,240,242,242, 34,179,
-103,207,150,134,135,135,235, 1,224,206,157, 59,240,241,241, 33,179,103,207,150,154,155,155,175,106,221,186,245,198,234, 52, 88,
-150, 69, 90, 90, 26, 30, 60,120,128,184,184, 56,100,103,103, 35, 43, 43, 11, 69, 69, 69, 48, 24, 12, 0, 0, 89, 81,225,145,111,
- 54, 31,186, 43,151, 74,101,205, 27,249,212,187,126,251, 97,166, 92, 42,149,249,120,214,243, 37,100, 62,247, 58,167,202, 10,145,
- 64,235, 3, 74,154, 94,123,168,180,110,211,101,176, 16, 89,199, 0,170, 7, 8, 31,237,155,187,242, 15, 94, 46,118, 0,139,198,
- 16,194, 31, 48,161, 64, 17, 66,192,215,121, 3, 36,244,100,164,193,166,117,151,113,194,228,228,100, 8,133, 66,136,197, 98, 4,
-183,122,155,191,243,156,222, 17, 64, 19, 8,224,103,146,102, 5,196, 98,241, 23, 35, 70,140,144,167,164,164,188,208,236,214,173,
-155, 92, 38,147,205,173,179,185, 98,100,225, 48,208, 73, 81,113,106,247,197, 91,210,252,159, 37,169,253, 65, 49, 5,122,125,240,
-235,154, 44,119,119,247, 8, 95, 95,223, 56, 79, 79,207,214,175,105,174,174,238,250,249, 23, 23,107,199, 82,115, 5,163, 10,224,
- 73,225,104,111,133,141,115, 35,172,237,204,165,181, 50, 89,101,230,234,204,181,107,215,108, 37, 18, 9,110,221,186, 5,145, 72,
- 4,137, 68,130, 70,141, 26, 97,253,250,245,118,214,214,214,255, 8,147, 69, 8,177, 34,132,116, 33,132,188, 67, 8,121,187,130,
-185,242, 4,208,129, 16,210, 9,128, 35,128, 11,148,210,187, 38,106,182,230,243,249, 71,154, 52,105,146,202,231,243, 31, 46, 89,
-178,228,163,233,211,167, 99,205,154, 53,136,136,136,120, 54, 99,198, 12, 60,121,242,196,160, 82,169,122, 83, 74,171,189, 17, 42,
-149,202,223,102,207,158,109,209,175, 95,191,242,207,184,124,249, 50,182,110,221, 10,185,252,143, 94, 16,148, 82,244,234,213, 11,
-163, 70,141,178,210,106,181,251,170,211,116,112,112,120,235,252,249,243, 62,101,230, 74, 82,193, 96,201, 79,159, 62,109, 41,145,
- 72,172,155, 53,107,102, 94,182, 94,214,175, 95, 63, 27,129, 64,208,154,171,212, 94,162, 82, 47, 82,149,193,121,213, 0, 85,182,
-173, 50,243, 84,215,196, 85,247,123,213, 25,172, 8, 66,200,133,202,118,210,229,102, 64, 12, 35,100, 60, 2, 41,159,148,254,229,
- 17, 72, 9, 11,126, 94, 70, 45,171,218,151, 13,150, 66,161,248,147,209, 82,171,213, 80, 42,149, 38, 25,141,242,190, 60, 86, 86,
- 86, 47,110,218,102,102,165,163,201,173,173,173,161,209,104, 64, 8,129, 92, 46,135, 92, 46,175, 85, 4, 75, 34, 41,141, 8, 95,
-185,114, 5,191,255,254, 59,248,124, 62,172,173,173, 1, 0,183,110,221,194,253,251,247, 33, 18,137, 96, 99, 99, 83, 43, 93,157,
- 78, 87,105, 19,161, 86,171,173, 85, 19, 33,195, 48, 40, 41, 41,161,183,110,221,194,131, 7, 15, 32, 22,139, 97,103,103, 7,145,
- 72,132,164,164, 36, 60,126,252, 24, 34,145, 8,118,118,118,117, 58, 63,230,230,230,200,207,207, 7,203,178,229,209, 60,152,155,
-155, 67,169, 84,130, 97, 24,147,210,201,178, 44, 82, 82, 82,144,157,157,141,196,196, 68,100,101,101,189, 48, 89,229, 77,132, 28,
-181,228,114, 67, 11, 16, 65,231,172,124,189, 56, 75, 41,178,112,240,234, 8,100, 31, 3, 8, 15, 16, 88,161, 69,211,250, 72, 72,
- 55,202,159, 36,106, 37,208,163, 11,206,250, 90,153,164,201, 19,116,202, 44,208,139,227,243,237,204, 3,130, 66,144,153,153, 9,
-177, 88, 12,177, 88,140,208, 22,111, 33, 46,149,149, 61,124,174,150,129,162,179, 73,154,101, 52,109,218,180,129, 84, 42, 13,111,
-218,180, 41,201,200,200,128, 88, 44,134, 68, 34, 65,120,120, 56, 24,134,105, 20, 28, 28,236, 95,171,252, 63,243, 18, 65, 32,107,
- 1,208, 73,143,159,171,156, 15, 94, 81,251,246,234,251,182,245,170,221,153,254,143,159,151,120, 66,107,152,138, 98, 93, 72, 93,
- 77,150,135,135, 71, 59, 51, 51,179,195, 95,124,241,133,167, 88, 44, 62,230,233,233,217,166, 78,245,155,152,247,195, 23,147, 6,
-187, 88,149,155, 43, 67, 49,192,147, 2, 60, 89,169,201,114,176,197,162, 79, 58, 90,203,132,130, 95, 77,213,148, 74,165, 59,191,
-249,230, 27,187,114,115, 37, 20, 10, 33,145, 72, 94, 44, 77,155, 54,197,156, 57,115,236,172,173,173,119,252,205,230,202, 26,165,
-253,170,238, 1,216, 7,224, 76, 5,115,229, 13,224,215,178,168,213,109, 74,105,130,137,154, 45,187,118,237,122,238,217,179,103,
-221,239,222,189,235,148,158,158,238, 63,101,202, 20,172, 94,189, 26,211,167, 79,223, 65, 41,245,221,179,103, 79,240,141, 27, 55,
- 26,153,210, 63, 40, 61, 61,253,189, 25, 51,102,100,103,103,103, 3, 0,130,130,130,144,159,159,143,169, 83,167, 98,210,164, 73,
-229,145, 87, 0, 64,102,102, 38, 86,172, 88,145,145,158,158, 62,172, 58, 77,163,209,152,180,127,255,254,112,173, 86, 91, 15,128,
- 16,128, 24,128, 44, 33, 33,193,162,184,184,216,156,199,227, 41,228,114,185,185, 88, 44,150,143, 24, 49, 66,248,240,225,195, 0,
-131,193,144,194, 85,106, 47, 81,165, 23,169, 44,210, 84,213,186,186,238,111,170,201,170,149,193,162,148, 94, 0,208,246, 79, 6,
-134,224, 94,226,205, 11,176, 14,108,250,114, 4,139, 79, 32, 83,152, 35, 46, 37, 9, 66,144,168, 58, 36,240,133,169,170,104,178,
-210,210,210, 48, 99,198, 12,213,246,237,219,239,107,181,218,240,139, 23, 47,206, 52, 37,130,101,111,111,143,196,196, 68,250,213,
- 87, 95, 21, 30, 59,118,204, 80,190, 46, 41, 41,137,126,254,249,231, 69,191,252,242, 11,173, 77, 19, 97,121, 4,235,194,133, 11,
-116,238,220,185, 5,169,169,169,212,218,218, 26, 54, 54, 54, 56,125,250,180, 97,230,204,153, 5,177,177,177,212,218,218, 26,214,
-214,214,181, 50, 88, 6,131, 1, 82,169,244, 37,131, 66, 8,129, 94,175,255, 83,100,171,218,123,226,229,203, 35, 11, 10, 10, 62,
-157, 58,117,170,250,209,163, 71,212,206,206, 14,118,118,118,216,178,101, 11,255,131, 15, 62, 80,223,187,119,239,197,186,186, 96,
-107,107,139,232,232,104,186,100,201, 18,245,153, 51,103, 4, 0, 96,103,103,135, 39, 79,158,208, 5, 11, 22,168,243,243,243, 63,
-189,124,249,242,200, 26, 42, 28,196,197,197,161,176,176, 16, 70,163, 17, 26,141, 6, 89, 89, 89, 72, 78, 78,126, 97,176,212,114,
-243,174, 31, 15,239,213,164, 88,173, 86, 93,191, 31,147,216,188,105,160,125,177, 90,173,138,121,158, 24, 77,233, 92,110,246,240,
- 63, 93, 60,172, 35, 40,109,125,249,190,210,178, 83,143,129, 34, 82,120, 3,208, 43, 1,129, 21, 32,176, 4, 95, 98,131,110,111,
- 5,243, 54,159, 40,116, 4, 97, 91, 66, 34,174,185,127, 11, 75, 29,192,178,109, 78,223, 42,177,106,221,125,130, 40, 55, 55, 23,
- 12,195,188, 48, 88, 50,185, 28,111,245, 28,202,108, 58,161,113, 4, 75, 91,129,199, 51,185,207,140, 80, 40,156, 54,124,248,112,
- 97, 94, 94,222, 75,154, 82,169, 20,125,251,246, 21, 43, 20,138,207, 77,206,251,227, 64, 33, 50,196, 45,192,210, 73, 79,226,213,
-206,251,127, 87,251, 78,153,179, 73,218,176,113,115,140,237, 99, 47, 93,188, 45, 51,240,110,172,202, 19,140,113, 50, 84,218, 80,
-252, 88, 59,147,229,233,233,217, 70, 46,151, 31, 57,112,224,128,172,125,251,246,152, 50,101,138, 92, 44, 22, 31,243,240,240,104,
- 91,219,211, 84, 92,100,252,120,193,170,109, 25,247,118,119, 1, 12, 69,101,230,234,143, 37,179,128,197,156,111,206, 21,232,141,
-116,176,169,154,106,181,250,131, 15, 63,252, 48,103,223,190,125,127, 50, 87, 18,137, 4,207,159, 63,199,226,197,139,115,115,115,
-115,135,253,205,165, 52, 24,192, 29, 0, 37, 0,218, 1,144,149,141, 20, 12, 7,112,154, 82,106,164,148,102, 80, 74,211, 76, 21,
-228,241,120,211,191,251,238, 59,190, 90,173,198,168, 81,163,144,148,148,132,212,212, 84,204,158, 61,251, 57,203,178, 31,148,105,
-222,165,148, 62, 54, 69, 79,171,213, 62,201,203,203,235,217,181,107,215,252,188,188, 60, 52,110,220, 24, 61,123,246,132,163,163,
- 35,156,157,157,209,187,119,111,248,248,248, 32, 39, 39, 7,131, 7, 15,206,205,202,202,234, 66, 41,173,118, 20,122, 78, 78, 78,
-236,238,221,187, 99, 63,250,232,163,176,164,164,164, 32, 0, 78,122,189,222, 90,173, 86, 43, 12, 6,131,153,185,185,185, 77, 72,
- 72,136,221,216,177, 99, 45,111,222,188, 25,152,156,156,172, 4,144,192, 85,106, 47,121,131, 74,189,200,107,112,228,117, 34, 85,
-149, 69,192, 76,133, 41, 19, 34, 21,255,190, 20,189, 2,230,108,221,187,181, 68,228,238, 3, 11,255, 38,144, 73, 36,144,138, 69,
-144, 90, 90,163,132,101,177,225,121,186,170,152,210,207,235,144,248,151, 34, 87, 44,203, 98,253,250,245, 37,139, 22, 45,202, 79,
- 79, 79, 31,123,241,226,197, 38, 55,111,222,188,103,138, 17, 42, 44, 44,196,158, 61,123,212,155, 55,111,126,166, 86,171,155, 10,
-133, 66,189, 86,171,197,142, 29, 59, 74, 86,175, 94, 29,175, 82,169,194, 4, 2,129,174, 54,205,111,229,125,176, 4, 2,129,190,
-164,164,164,233,174, 93,187, 98,143, 28, 57,162, 54, 55, 55,135, 64, 32,208,171, 84,170, 70,219,182,109,123,178,107,215, 46,181,
-185,185,121,173,140, 27,203,178,149, 70,176,140, 70, 35,196, 98,113,173,250, 96,221,188,121,243, 39,157, 78,215,124,199,142, 29,
-201,155, 54,109, 42, 49, 55, 55, 7, 0,232,245,250,176,173, 91,183, 38,255,240,195, 15,154,218,116,112, 47,171,120, 96, 52, 26,
-177,109,219, 54,205,206,157, 59,147, 13, 6, 67, 88,249,186, 77,155, 54,149,108,219,182, 45, 89,167,211, 53,191,121,243,230, 79,
- 53,105, 25,141, 70, 99,126,126, 62,248,124, 62,158, 61,123,166, 17,139,197,224,241,120,136,137,137,121, 97,176,236,109,173, 3,
- 91,133, 5,249,175,252, 97,207, 5,185, 88, 44,238, 18, 17, 26,240, 48, 38, 33,153, 82, 18,207, 85, 55,149,133,148, 33, 3,129,
- 52, 38, 73,163,144, 8,244, 4,233,191, 2, 66,171, 50,131, 85,186, 56,187,184,226,230, 99,149, 2, 4, 34,104,245,246, 53,106,
-234,169, 28, 4,178, 7, 9, 80,240,133, 82,146,158,158,254, 34,210, 84,110,136, 60,189, 2,112, 59, 70,105, 6, 66,197, 0, 28,
-106, 83, 81,153,153,153,241,211,210,210, 94,104,189,208,244,244,228,233,245,250, 46, 38,231, 61,203,232, 4,150,253, 56, 58,177,
-196,249,192,239,106,159,201,115, 54, 73,165,188, 60, 32,126, 13, 26,250, 56, 98,202,176, 38,162,217, 27,178, 26,222,124,168,106,
- 0, 66,199,162,161,210,228,167, 11, 79, 79,207,214, 50,153,236,216,129, 3, 7,100,114,185, 28,207,158, 61, 67,227,198,141,177,
-112,225, 66,153, 76, 38, 59,234,238,238, 30, 81,155,211,116,237, 9, 77, 80, 22, 25,195,167,173, 79, 74,191,247,220, 88,106,172,
-152, 82,115,149, 85, 64,241,225, 23,135,242,243, 10, 75,222,190,122, 95,127,182, 22,199,242, 78, 65, 65, 65,231, 47,190,248, 34,
- 39, 59, 59,251, 37,115,149,144,144, 80,110, 4, 34, 40,165, 81,127,115, 41,149,163,180,243,186, 31, 0, 47, 0, 77, 40,165, 6,
- 0, 69,148,210, 58,133,174, 3, 3, 3,155,186,187,187,227,251,239,191,199,134, 13, 27,242, 86,174, 92, 9, 74, 41,124,124,124,
-204,235,170,153,145,145,113,227,201,147, 39, 93,154, 52,105,242,104,221,186,117,201, 78, 78, 78,236,168, 81,163, 48,114,228, 72,
-216,217,217, 25,215,172, 89,147,216,166, 77,155, 7,177,177,177, 29,139,139,139,239,155,112,126,104,118,118,246,149,141, 27, 55,
-222,120,235,173,183, 20,195,135, 15,119,216,176, 97,131,227,227,199,143,235,169, 84, 42,151,204,204, 76,249,197,139, 23,197, 91,
-183,110,117,124,248,240,225,115,181, 90,125,131,254,149, 47, 4,254,247,153,171, 42,189, 8,128,172, 50,163,163,125,229,111, 86,
- 13,219, 76,253,110,165,255,155,176, 95,149,212, 56,226,102,247, 51,122,101,168, 23, 89,190,112,211,250,207,134, 54,242,151,122,
-120, 6,192,168,204,199,253,244,116,108, 77, 43, 80,233, 41,253,102,207, 51,122,174,174, 6,139,199,227,225,196,137, 19,198, 29,
- 59,118,232, 40,165, 63, 22, 22, 22,126,254,240,225,195, 98, 83,117, 88,150,229,141, 24, 49, 66,153,151,151,247,107, 90, 90,218,
-216,216,216, 88,109,155, 54,109,120,239,189,247,158, 50, 55, 55,247, 55, 66,200,168, 91,183,110,105, 90,183,110,141,218,148, 99,
- 66, 8,132, 66, 33, 8, 33,184,121,243,230,243,192,192,192,134,215,174, 93,251, 54, 58, 58,250, 93, 74, 41, 47, 50, 50, 50, 41,
- 36, 36,164,241,149, 43, 87,214, 61,126,252,120, 48,203,178, 60, 83,117,203,163, 99, 21,141, 20,195, 48, 47, 76, 29,169,101,155,
-107,100,100,100, 84, 96, 96, 96,192,141, 27, 55,182,140, 30, 61,186, 11, 0,217,205,155, 55, 31, 53,106,212,200,255,218,181,107,
- 91, 62,248,224,131,174, 40,109,243, 55,237,254,173,211,161,111,223,190,170,130,130,130,227, 69, 69, 69,195,238,223,191,175, 10,
- 9, 9, 41, 95,119, 34, 63, 63,127, 88, 45,206,209,130,181,107,215,206, 41, 59, 87, 91, 86,173, 90,245,225,212,169, 83,237, 82,
- 82, 82, 94, 24,172,204,236,220,179, 45,123, 76, 48,230,228, 23,104, 55,173,154,246,142, 84, 34, 22,125,190,108,211,121, 61, 15,
-215,184, 42,167, 18, 68,198, 66, 80, 38,245,157, 14, 86,226, 53,223,108, 20, 14,239,221, 64, 18,228,239, 94,106,174,132, 86,184,
-249, 48, 31,115,190,218,195,126, 57,206, 46, 14, 44,146, 96,196,147, 26, 53,205,248,133, 40,209,103,126,216, 69, 40, 94,250,227,
-164,250,173,122,126, 38, 14, 8,106,246,194, 8, 61,142,186,133, 85,139, 39,176, 95,142,181,142, 3, 75, 82, 97,192, 99, 83,147,
-107, 48, 24,222, 89,182,108,217,241,225,195,135,203, 27, 54,108,248, 66,243,249,243,231,248,242,203, 47,213, 26,141,230,109, 83,
-175, 74, 48,129,193, 70,163,209,254,231,147, 57,222,159, 78, 28, 43,147, 50,185, 64,220,138, 82,243, 34,176, 64,112,144, 45,230,
- 76,116, 20, 76, 89,122, 40,240,242,183,245,149,208, 11, 3, 0,164,154,162,206,231,243,143, 44, 89,178, 68, 38,149, 74, 17, 19,
- 19, 3,169, 84, 10,137, 68,130,144,144, 16,172, 94,189, 90,246,209, 71, 31, 29,139,136,136, 48, 59,127,254,188,161, 54, 38,171,
-133, 31, 9,159,246, 93,236,213,229,159, 88, 58, 54,246,179, 69,118, 17,240,225,220,195,121,185,133,234, 1,181, 49, 87, 21, 77,
- 22, 33,164,243,164, 73,147, 78,110,222,188,217, 38, 32, 32, 0, 73, 73, 73, 24, 52,104, 80, 78, 86, 86, 86,251,127,128,185, 2,
-128, 98, 0, 46, 0,162, 81,218, 23,233, 41, 33, 68,132,215,120, 61,219,195,135, 15,111, 39, 36, 36, 56,141, 28, 57, 18,133,133,
-133, 86, 3, 7, 14,196,179,103,207, 16, 29, 29,125,231,117, 18,170, 86,171,111, 18, 66, 26,125,250,233,167, 67,167, 77,155,214,
- 74,161, 80,120, 82, 74,105, 97, 97, 97,156,209,104,188, 12, 96, 7,165,166,191,135,179,204, 48, 61, 37,132,196,197,198,198, 58,
-108,217,178,197,178,236, 24, 0,128, 26, 64, 1,128,140,186,154,194,255,199,220,252,155,190,251, 90,142,209,164,229, 29, 79,180,
- 26,222,128, 92,120,175, 62,138, 6,215,135,114,184, 23,185,252,118, 3,180,171,238, 59, 0,130, 42, 91,223,180,105, 83,106, 48,
- 24,232,201,147, 39,105,183,110,221,138, 91,183,110,125, 57, 36, 36,196,199,148,116,188,170, 25, 17, 17,113, 60, 52, 52,116,192,
-171,235,154, 53,107, 54,176,226,186,118,237,218, 69,181,107,215,174,160,109,219,182,207, 76, 73,103,219,182,109, 31,183,106,213,
-170,184,109,219,182,143, 43,174, 15, 11, 11,235,211,161, 67,135, 35, 21,215, 53,107,214,172,247,171,235,170,202,123,199,142, 29,
-147,162,163,163,105, 98, 98, 34,237,222,189,123,106,249,250,183,222,122, 43,233,238,221,187, 52, 58, 58,154,118,237,218, 53,181,
- 54,199,179,226, 18, 26, 26, 58,170, 77,155, 54, 87, 94, 73,243,135,175,174,171, 78,179, 77,155, 54, 87,194,194,194, 62,124,117,
- 93,104,104,232,168,186,156,163,138,139,147,147,147,111,112,112,112,230,170, 85,171,104,253,250,245, 51, 43,110,107, 24, 49,226,
-139,252, 66,101,225,212, 5,223,239,182, 11,232,219,168,182,121,175,237,242,175,213,124, 20, 32,164,191, 7,180,162, 23, 3,142,
- 60,222,230,254,104, 88,103,185, 38,114, 71, 87, 74, 31,127, 70,175,237, 25, 73,195, 3, 68,198,223,191,117,139,166, 23,253,143,
-209, 75,190,109,233,177, 6, 34,147, 52, 47,122,181,161, 23,253,143, 61,220,226,254,168,111, 91, 59,237,142,109,235,233,211,167,
- 79,233,111,251,119,208, 22, 1,178, 50,205,128,147,244, 98, 64,123,147, 52, 95,190,230, 91,133,135,135, 43,119,239,222, 77, 99,
- 98, 98,232,169, 83,167,104,203,150, 45, 85,193,193,193,237, 77,207, 59, 8,189, 16,216,215,112,206,239,242,204, 65,102,249, 31,
-118,145,104, 6,181, 23,105,251,132, 11,117,157,155, 10, 13,173, 2,248,198,198,245, 25, 54,192, 13,180,115,136, 84, 67, 47,250,
- 93,162,151, 3,186,152,154, 78, 31, 31,159, 68, 15, 15, 15, 90,213,226,235,235,155,213,174, 93, 59,126, 93,206,123,115, 95,184,
-119, 12, 19,167,157,249,177, 61,237,213, 86,145,211, 34,136,223,225,117,203, 18,128, 96, 91, 91,219,236,205,155, 55, 83, 7, 7,
-135, 44, 0, 13,255, 41,101, 30,128, 53,128, 62, 0,236,202, 62,155,161,116,254,161,250,175,161,217,178,115,231,206,250,219,183,
-111,211,103,207,158,209,227,199,143,211, 86,173, 90, 25, 0, 68,252,167,175,247,255, 71,154,255,181,133,252,149,209, 73, 66, 72,
- 80,101,157, 13, 67, 66, 66,104,151, 46, 93,212, 23, 46, 92, 80,106,181,218, 49,183,110,221,250,237,117, 53,255,138,116,254, 21,
-154, 29, 58,116,184,194, 48, 76,253,178, 33,192,169,167, 79,159,110, 10, 0,237,219,183,191,194,227,241,234,151,153,222,212, 51,
-103,206, 52,253,175,229,189, 28,103,103,103, 95,134, 97, 78, 0,208, 36, 39, 39,191, 24,237,100,223,176, 79,184,181,149, 69,251,
-252,252,130, 59,233, 15, 14, 30,251, 47,230,253,141,105, 30,247, 18, 65, 33, 10,133, 17, 51, 30, 60, 83,121,126,190, 49,187, 65,
-207,206, 45, 5, 91,246, 92,100,151,143,183,143,109, 25, 40,127, 14,194,126, 9,163,230, 6,218,197,107, 76,214,148,145,102,128,
- 96,198,221, 88,149,251,212,239,242,188, 59,246,250,144,119,104,239,122,246,171,241, 54,177, 45, 3,205, 18, 1,124, 9, 86,117,
-213,100,205,151,175,251, 86, 98,177,248,216,224,193,131,205,118,238,220,169, 46, 41, 41,233,121,251,246,237,115,181,202,251, 85,
-255,122, 48,144,197, 0,117, 51,161, 65,254, 41, 12,236, 66,180,127,156,248, 79, 56,239, 45,252,136,187, 92, 33, 62,172,210, 24,
- 38,153, 18,185, 50, 69,147, 16, 18,108,101,101,181, 61, 47, 47,111,160, 41,145,171,255,101,222, 9, 33,118, 40,157,136,145,143,
-210,105, 11,162,106,234,195,100,130,102,107, 30,143, 55,189, 65,131, 6,141,159, 61,123,246,192,104, 52,126, 69, 41, 61,255,255,
-225,222,241,255, 65,243,191,198,223, 98,176,218,180,105, 19,105, 52, 26,143, 11,133,194,197,231,207,159,215,112,133,143,211,228,
- 52,235,160, 89,193,100, 69, 70, 23,215, 95,250,115,174,251,228,129, 86,137, 53,153,171, 26, 53,203, 76,214,141, 39, 42,143, 47,
-119, 20,185, 79, 25,104,150, 88,147,185, 50, 53,239, 33, 33, 33,173, 36, 18,201, 86,181, 90, 61,170, 38,115, 85,169,230,227, 64,
- 33,242,244, 46, 48,240,130,192,160,234, 87,237,176, 84, 5, 1,239, 1,210,144,129,119, 30,234,184,178,196,105,114,154,156,193,
-250, 95,243,183,204,122,124,233,210,165, 16,238,208,115,112,188, 38, 93, 99,181, 56,238,117, 11, 10,209,178, 16, 95,233,132, 95,
- 23, 75, 85, 96, 73, 50, 8,187,186, 58,115,101,130,230, 13,200,244,203,154,249, 74, 39,237, 95, 44, 85, 1, 72, 7,197,170,234,
-204,149,169, 68, 70, 70,254, 14,160,126,157, 5,252, 31,234, 0, 60, 7, 72, 60,230, 87, 51, 59,246, 92, 80,128,235, 60,204,193,
-193,241,255,204, 96,113,112,112,188, 65,147,245, 56,240, 38,114,120, 83, 97, 68,125,136, 13, 9,200, 55,164,163,107,188,246, 53,
- 53,175, 35,135,124, 2, 22,190, 16, 25, 98,145,175,125, 61,205, 55, 14,165,165, 38,138,131,131,131,131, 51, 88, 28, 28, 28,127,
- 5,165, 81,157,228,178,229,159,171,201,193,193,193,241,255, 8, 2, 32,168,242,231, 67,211,219, 86, 9, 33, 65,181,127,254,172,
-177,243, 38,167,201,105,114,154,156, 38,167,201,105,114,154,255, 49,205,154,180,255, 43,125,187,254,150, 78,238,156, 38,167,201,
-105,114,154,156, 38,167,201,105,114,154,255,101,184, 23,233,114,112,112,112,112,112,112,112,188, 97,254,214, 62, 88, 50, 91, 95,
- 39,240,153,198,132,165,254, 0, 64, 25,242, 24, 6,246,158, 42, 59, 58,237,117,181,137, 67, 35,153,153,128,183, 67,169, 55,190,
- 71, 51,238,171,222,144, 99,111, 13,192, 29, 64, 2,165,244, 50, 87,124, 56, 56, 56, 56, 56, 56, 56,106,101,176,124, 91,246,187,
- 36,151,202,189, 1,128,165, 20, 70, 22, 40,204,203,188,154,112,239, 84, 63, 0,112,110,248,214,126,145,220, 54,156,101, 41, 88,
- 74, 97, 96, 41, 12, 26,245,211,172,135, 71, 76,122,243,188,153,189, 95,191,142,157, 59,246,239,217,179,135, 95,163,160, 70, 94,
- 0,112,255,193,253,216,195,135,143, 60, 49,179,247,251, 85,153,249,100,255,235,100,204, 76, 32,248, 34,172, 89,243, 46, 55,111,
- 94,159, 13, 96,214, 27, 58, 94, 66,122,185,251, 54,210,250,232, 91, 92,209,225,224,224,224,224,224,224,168,181,193,146, 75,229,
-222,103, 15,110,180,223,127, 41, 9, 0,208, 49,196, 17,243,191,222,220,151, 16,242, 4, 0,222,254,232,107,223,207, 63, 29,134,
- 43, 81, 89,160,148, 34,216,219, 26,125,135,124,100,210,143, 74, 29, 3,195, 6,190,251,238,123, 83,167, 78,233,253,244,233,211,
-248,157, 59,119, 94, 2,128, 54,109,219,122, 47, 89,178,228,221, 21, 86,214, 98,169, 99, 96,138, 58,253, 97,157,222, 31,100,230,
-232,101, 27,208, 48,244,195, 29, 63,125,197,239,208,125,208, 72, 51, 71,175, 85,202,244,216,236,186,104,137,221, 26,214,183, 16,
- 8,231, 19,134,225, 91,216,123,216, 3,128,149, 91,240, 97,231,134,221,140, 18,137,244,126,177, 90,189, 53,243,209,241, 13,220,
- 11, 59, 57, 56, 56, 56, 56, 56, 56,106, 52, 88, 0, 96, 38,225,227,201,243,210,214, 58, 75, 25, 48,250,131,183,145,145,145,238,
-171, 51,176, 24, 58,176, 31,110, 63, 73, 67,244,243, 44, 80, 10,248,186,154,252, 46, 97,240,192,134,142, 24, 57,162,221,137,147,
- 39,111,124,241,249, 23,219, 8,193, 85, 0, 88,255,227, 79,225,115,230,206, 25, 53,244,131,161,157,246,238,221, 27,133, 58,190,
-160,145, 17, 90,174,250,114,241,124,179,148,236,146,146,137, 83, 62,227, 77,253,244,147, 21, 0, 62,168,139,185, 10,112,115, 93,
-124,233,228, 94,153, 76, 38,195,134, 13, 27,196,192, 65,204,155, 58, 66,210,163,103, 79, 24,193,107,249,213,183, 59, 27,159, 20,
-137, 70,218,250,118,234,151, 29,125, 42,141, 43, 82, 28, 28, 28, 28, 28, 28, 28,213,118,114, 55,178, 20,143,227,210,241, 56, 46,
- 29,215, 31,103, 65,107,228, 99,197,162,233, 88, 54,111, 26,114, 84,192,129,223,147,240,228,121, 58,158, 60, 79, 71, 78,190, 18,
-175, 78,251,247,234, 8,131,175, 63,145, 53, 93, 61,205,226,171,174,161,242, 8,107, 43, 43,171,152, 27,219,138,231, 12,201, 8,
-152,255,110,146, 80, 32,113, 72,182,114,168,215,114,207,222,189,129, 14,118,246,114,115,115,139,105,214,254,157, 55, 90,122, 68,
- 88, 84,167,249, 39, 83,232,216,176, 93,175, 30,221,123, 56, 58, 58, 24,199,172,190,245, 56,200,223,215,224,227,235, 31, 97,230,
-232,215,174,170,239, 84,166, 41,118,107, 88,223,203,201, 97,241,133,227,123,101, 37, 37, 37,120,240,224, 1,114,114,114, 74, 55,
- 18, 2,134,225,161,158,139, 19,214, 45,157, 34,155, 55,125, 92,136, 88, 34, 59, 72, 8, 33,166,166,179, 46,112,154,156, 38,167,
-201,105,114,154,156,230,127, 85,243, 63,105,176, 8, 33,149, 54,111,197, 38,229,224, 73, 92, 26,154,250,187,192,203,195, 17, 55,
- 98,242,176,227,108, 18, 54,157,140,199,217,123, 89, 96, 5, 10,164, 23, 17, 60, 77,200, 64,116,124,118,141,211, 42,243, 68,130,
-129,147,150, 23, 76, 13,172, 95,216,226,252,238, 9,112, 54,139, 9,156,254,117,254, 4,158, 72, 48,208,222,209,114,231,212, 79,
-198, 14, 81,200,164, 34,173, 70, 11, 79, 15, 55,201,184, 81, 35,134, 11,205,228, 59, 77,205,140,157, 93,160, 92, 36,149,111, 91,
- 60,103,138,100,229,254,152,196, 98, 45, 45,222,123, 37,245,217,212, 25,115, 10,121, 2,233,143,118,118,129,114, 83,116,196,110,
- 13,235,187,219,216, 44,190,124, 98,175, 76,167,211, 32, 53, 53, 21, 90,173, 22, 6,131,225,143,194, 5,160, 72,109, 64, 92,154,
- 26,237,218,182,226, 53, 13,110,232,111,231,223,109, 12, 87,164, 56, 56, 56, 56, 56, 56,106, 79, 85, 94,228, 95,109,176, 42,163,
- 88, 93,252,244,253, 49, 83, 51,189, 21,105,218,126,237, 3, 0, 10,100,165,197,227,225,141, 19,136,137, 60,137,162,172, 68, 80,
- 10,120,120,212,131, 80, 29,167, 93,255,195,119,153,172,161,228,105, 85,122,125, 58, 59,187, 62, 77,145, 51,203,167,214,187, 26,
- 19,157,102, 59,126,234,102,196, 68,167,217, 46,159, 90,239,234,211, 20, 57, 35, 19, 26, 91,126, 48,168, 15,233,211,179, 43,166,
- 79,159,138, 62, 61,187, 98,234,216,119,137, 68, 36,104, 97,106,102, 74, 68,146,101, 51,190, 88,160, 72,207,215,105,175, 71, 23,
-106,204,100, 50,241,239,143,139, 85, 26, 42,213,245, 30, 56, 58, 75, 35,228, 47, 48,197, 92, 57,153,155, 47,190,114,122,159,140,
- 82,138,228,228,100,232,116, 58,232,245,122,232,245,250, 23,251,229, 43,245, 72,204, 82, 35, 33, 83,133, 7,241,133,232,214,181,
-171,140, 47, 16, 13,225, 46, 17, 14, 14, 14, 14, 14, 14,142, 42, 13, 86,244,149,253,109, 34, 79,111,115,200,206,200, 40,144,139,
-249,224, 51, 12, 50,147,159, 97,235,215,159, 96,239, 55, 83,144,159,246, 20,148, 2, 82, 33, 15, 26,101, 78, 65,218,157, 61, 14,
-217,213,140, 32, 36,208,119,250,118,251,115,207,248, 52,106,177,227,184, 82, 0, 0, 59,142, 43, 5,241,105,212,226,219,237,207,
- 61, 69, 52, 11,172,209,136,158,125,222,198,182, 45, 27, 16,222,161, 15,246, 94, 76,132, 74,173, 51,233,253,103, 18, 7, 95, 15,
-123, 71,199,183, 39, 13,125, 75,209,204,215,202,204,199,205,146,199, 19, 8, 13, 34,129,152, 61,116,171, 32,165, 75,207,126,140,
- 76,110,222, 85,226,224,235, 81,157,142,133, 64, 56,255,247,147,251,100, 60, 30, 15,137,137,137,208,233,116,208,106,181,208,104,
- 52, 47, 34, 88,133, 42, 61, 82,114,212, 72,202, 82, 33, 49, 75,133, 71,137,133, 16,201,173,160,215,235,131,184, 34,197,193,193,
-193,193,193,193, 97,210, 68,163,169,153,185,176, 86,240, 96,231,236,137,247, 62, 89, 1, 0, 48,178, 6, 80,148, 78,207, 96, 74,
- 76,143, 66,112,234,227,161,158,113, 30, 78,164, 96, 72, 55,153, 26, 0,134,116,147,169, 61,156, 72,193,199, 67, 61,227, 84, 70,
- 43,157,209,104,196,229,168, 76, 44,255,229, 17,190,216,124, 15, 39,110,153,222,103,156, 47,144, 78,250,114,233, 18, 25,159, 71,
- 72, 84, 66,145, 50, 45,215,160, 20, 10, 5, 58,129,136,175, 87,106,137, 58, 62,203,152,211,117,192,248,231, 60,158, 96,124,141,
-105,165, 44, 40,165,208,104, 52,208,106,181, 47,150,242, 8, 86,174, 82,135,212,156, 18, 36,102,169,145, 84,182,100,228,169,193,
- 13, 36,228,224,224,224,224,224,224,120,201, 96, 17, 66,104,101,237,159, 44,128,152,248, 44,136,249, 44, 92,235,121,253,209,145,
-157, 2,148, 2,122, 3,107,210, 15, 29, 60,153,154, 92,223,165,152, 78, 91,145, 24, 30,228,111,115,111,220, 96,183,199, 65,254,
- 54,247,166,173, 72, 12,175,239, 82, 76,245,172,200, 72, 41, 5,101, 41, 40,165,160, 20, 96, 89,211, 13, 11, 33,188, 22,193,254,
-238,252,249, 59,159, 38,140,255, 46,250, 49,225,243,245, 34,145,200,224, 96, 33, 37,174,182, 82,126,145, 6, 37,126, 65, 77,245,
- 4,104, 90,157, 78,129, 94, 55,183, 85,151, 1, 42,157,206, 0, 55, 55, 55,104,181,218, 23, 77,132,229, 17,172,124,165, 14, 41,
-185, 37, 72,202, 82, 35, 49, 75, 13,117,137, 17,247, 31,199,131, 48, 60,174,211, 31, 7, 7, 7, 7, 7, 71, 29,169,202,139,252,
-107, 13, 22,165,148,148, 47,149,237,228,238,230,128,235, 15, 18, 80,207, 65, 12,115, 11, 5, 30,199, 38,131,225,241,193, 99, 8,
- 12, 70,211,143, 3,213,234,127, 89, 57,205, 98, 69, 98,154,241,218,119,219,159, 61, 77, 76, 51, 94, 91, 57,205, 98, 5,213,234,
-127, 41, 77, 71,233,164,166,108,133,191, 38,107, 83,214,222,214, 66,204,191, 25,171,204, 37, 60,190, 70, 40,224,107,156,108,196,
-196,201, 86,202,119,179,145,138,228, 18, 1,227,228,224,192,130, 82,135,234,116, 52, 73, 81,113,233,133,133,179,219,116,126, 91,
- 37, 16, 8, 80,191,126,253, 23, 17,172,114,131, 85, 26,193, 82, 35, 49, 75,133,244,220, 18, 72,197, 12,238, 94, 61,163, 50, 26,
-245, 91,185,203,131,131,131,131,131,131,163,246,212,228, 69,254,109,240, 77,200, 49,228, 50, 41, 88, 70,130,203,183, 98,225, 31,
-208, 24,155,127,187, 1,175,160,230, 72, 43, 50,128,214,226,117,134, 83,214,168,110, 3,184,221,167,179,179,107,191,110, 46,157,
- 40, 4,167,190,221, 89,144, 12, 0, 27,195,251,149, 25,171,210,200, 21, 75, 75,167,137, 48,217,245, 2,169,137,153,197,102,158,
-142,114, 60, 74,210,106, 20, 50,137,193, 82, 38,228,219, 89,136,120,230, 82, 62,159, 47,100,152,252,252,172, 34,128,164,214,164,
-165, 73,138,138, 19,187, 53,156,221,182,219,160,197,151,142,239,150, 53,104,208, 0,119,239,222,125,209, 68,168, 42, 49,128, 20,
-233, 32,144, 82,248,184,152,225,241,237, 75,198,156,204,148,135,121,209,199, 55,112,151, 8, 7, 7, 7, 7, 7, 7,135, 73,238,
-136,101, 41,236,108,173, 32, 54,179, 64, 92,150, 22, 74,216,161, 64, 77,192, 26, 1,163,161,106, 19, 68, 8,169,180,211,247,193,
-147,169,201, 7, 78,102,109, 60,120, 50, 53,249, 21,247,250,162,121,144, 82, 90,105, 19, 97, 85,154,148, 26,143, 29, 62,117, 57,
-183,111, 11,123, 75, 70, 32, 80,139,196, 60,157, 84, 34,208,203,196,124,216, 91, 8, 69,174, 86, 66,241,249, 35,187, 24,194,210,
-179,166,104,106,146,162,226,158,103,102,206,238,208,115,176,202,193,209, 17, 67,135, 14, 69,189,122,245, 0, 0,214,114, 6,238,
- 86, 12,248,154,116, 92,248,109, 99,241,227,200,115,145, 48,106,250, 85,156,205,189,170,116,190, 14,156, 38,167,201,105,114,154,
-156, 38,167,249, 95,213,252,175, 97,210,203,158, 27, 56,201,225,237, 34, 71,137,214, 1,106,173, 17,197, 26, 3,138, 84,122, 20,
-168,244,136, 79, 87, 33,250,252,235, 39,132,150, 25, 44, 80, 2,150, 82,128,148, 54, 19,154, 26, 40, 44, 22, 20,174,248,114,201,
-252, 65,187,247,236,167, 19,187, 59,185, 94,127,170, 78, 18,243, 4, 90,153,152,225,155, 75, 25,227,243,184,231,169, 39, 15,239,
-106,168,146,168,134,153,154,166,242, 72,150, 95,211, 14,243, 65,193,215,170, 11,228, 51, 90, 5,226,196,241, 35,106,209,229, 72,
- 61,225,139, 30,176, 70,221,246,188,104,238, 85, 57, 28, 28, 28, 28, 28, 28, 28,181, 48, 88, 42,181,234,105,167,254, 31,150,189,
-240,153,194,104, 44,141, 44, 25,203,155,242, 88, 10,163, 78,253,244,117, 19, 98,100,217, 27,223,111,254,165,123,147,224,230,188,
- 64,119, 5, 10,243,179,113,235,250, 85, 3,101,217,171, 38, 25,180,248,120,141,153,131,255,187, 3,222,238,187,107,228,216,137,
-202, 54,237,218,203,108,108,204, 13,217,153, 57,133, 91, 55,236,206,219,191,251,231,134,132,101,223,167,241,241,154,218,164, 75,
-147, 20, 21, 7, 96, 72,153, 99,239, 0, 4,182, 43, 78,189,215, 75, 73,255, 28, 9,227,224,224,224,224,224,224,224, 48,201, 96,
-197, 92,221,223,230,127,145,144,220,220,140,161,219,119,253,186,232,231,221,191,181,210,232,116, 46, 44,120, 73, 70,189,254,130,
-184, 40,103,142,169, 26,202,140,199, 15,137,135, 71,232, 79,223,172,248,244,199,111, 87,190, 5,214,232, 5, 66,158, 19,150,158,
- 85, 74, 84, 35,105, 74,237,204, 85, 37,100,147,214, 71, 59, 3,200,230,138, 14, 7, 7, 7, 7, 7, 7, 71,157, 13,214,255,138,
-220,216,235, 69, 0, 38,190,174, 78, 89,132,106,105,217,242, 70, 41,123,247, 18, 55, 21, 3, 7, 7, 7, 7, 7, 7, 71,181, 48,
-220, 33,224,224,224,224,224,224,224,224,120,179, 16, 0, 85,140,202, 51,253, 77,217,117, 25, 77, 80,147, 62,167,201,105,114,154,
-156, 38,167,201,105,114,154,255, 61,205,154,180,107,227, 63,254,209, 6,235,175, 28,252, 70, 8, 9,122,211, 7,138,211,228, 52,
- 57, 77, 78,147,211,228, 52, 57,205,255,158,230,127, 13,174,137,144,131,131,131,131,227,255, 29,182,190,189,205,108,125,123,155,
-153,186,191, 93,224, 0, 7,187,192, 1, 14,220,145,227, 48, 21, 62,119, 8,222,136,147, 23, 3, 96, 41,165,186,191, 43, 13, 86,
- 86,245,205, 13, 10,219,253, 12,171,249,178, 32,233,222,169, 55,157,191,192,192,192, 96, 0,120,248,240,225, 29, 74,233,235,142,
-198,132,220,193,111,176,149,185,229, 24, 29,171, 53,170,138, 85,223, 43,211,163,247,190,201, 52,219,217, 5,202,181, 98,233,114,
- 16,218, 13, 20, 12,101,200, 25, 94,161,126,114,126,254,221,130,234,190, 87,175,207, 82,255,145,239,244,248,124,227,222, 35,139,
- 18, 15,206,124,252,234,118,235,110,235, 20, 19,135,190, 53,237,155, 95, 14,127,153,253,219, 52, 37, 87,250,107, 79,189,214,239,
- 89, 26,248,142,188,212,243, 43,114,106,243, 61, 87,191,240, 40,129, 64, 96,167,211,233, 50, 83,162,175,153,212,108,225,230,223,
-242, 54,143,199, 56, 27, 13,108,114,210,147, 43,161,220,209,175, 25,153,179,127, 48, 49, 26,167, 83,214, 40, 96,193, 91, 85,146,
- 21,115,249,117,244,156,157,157,165, 22, 22, 22,109,205,205,205,221,100, 50,153, 36, 47, 47, 79,157,151,151,151,152,144,144,112,
-150, 82,106,248, 59,242,104,215,176,239, 76,190,136,153, 91,246,255,252,172,168, 3, 75,171,223,191,207, 34,194,144,153,101,255,
- 47,205,138, 58,248,249, 63,225, 92, 57, 52,234,223, 28,148,253,148, 97,120, 45,141,212,176, 36,243,254,193,239,106,243,253,240,
-240,240,190,122,189, 94, 92,254, 89, 32, 16,104,174, 94,189,122,128,187, 10,254, 38,131,229, 26, 56,192, 74,207,167,243,248, 60,
-230,109,150, 82, 69,218,157, 61,242,127,114, 6,221,155,191,127,139, 97, 24,215,138,235, 88,150, 77, 78,184,190,237,141, 84,182,
-132, 16,215,175, 39,133, 76,207,200, 81, 23, 18, 66, 22, 86,101, 62, 28,130, 7, 95, 33, 12,169, 79, 8, 1, 67, 0, 30, 67, 0,
- 32, 53,241,250,246,166,149,104, 58,153,203,249,190,133,197,134, 7,148,210, 26,111, 66, 82, 27, 31,103,185,141,203,133,136,126,
- 19, 60,111,157,216, 28, 96,230,224,255,150, 50,227,241,195, 55,144, 55, 59, 47, 47,175, 48, 95, 95, 95,155, 9, 19, 38, 8, 1,
- 96,213,170, 85,222,222,222,222, 57,177,177,177, 55, 41,165, 89,117, 50, 87,246,254, 67,215,172, 88,176,173, 91,183,110, 72,205,
- 42,198,242, 85,223, 69,152, 57,250, 14,120, 83, 38,139, 56,135, 72, 45,229,178, 7, 31,125, 58,199,181,123,251, 48,126,190, 82,
-143,163,103,175, 13,221,187,105,121, 7, 75,203, 38,141,170, 51, 89,172, 42,255,115, 7, 5,237,202,170,242, 1, 96,240,171,219,
- 93,204,244, 29,173,101,232,230, 36,230,223, 5,240,107,141, 55,151,176, 15, 78, 8,132, 66,119, 66,152,210,243,206, 35, 96,202,
-202,128, 65,175, 77,120,122,105, 83,151,127, 68, 69, 29, 50, 52,157,128,216, 48,101,233, 35, 4, 96, 24, 6,124, 2,128,210,194,
-103, 87, 54,219,188,129,242,100, 17,228,109,217,176, 71,171,214, 27, 47,196,229,154,213,107,247,233, 17, 66,153,239, 18, 46,126,
-125,215,148,239, 75, 36, 18,171, 67,135, 14,217,117,237,218,213,194, 33,168,239, 5, 83,190, 99, 38,146, 4, 30, 62,252,155,176,
-107,215, 46,181, 40,159,126,157,192, 48,219, 9, 32, 96, 89,186,138,199,210,221,202,156,232,216,218, 78, 38,108, 31,212,119, 1,
- 8, 2, 76,254, 2,197,163,204, 7, 7,230,212,241,216,242,164,246,126,195,164, 18,201, 84,111, 95,127,223,248,231,207,162, 11,
- 11, 11, 86,170, 51,163, 55, 82, 74,217, 90,105, 25,140,147, 78,158,189,242, 14, 95, 32, 32, 93,218,135,201, 9, 33, 93,106,171,
-241, 82,217,114,112,232,187,110,221,186, 6,225,225,225, 0, 0,131,193, 96,190,103,207, 30,199,133, 11, 23,202, 77,185,134, 42,
-195,197,197,197,197,194,194,162,158, 84, 42,117, 1, 0,181, 90,157, 82, 80, 80,144,152,146,146,146, 82,211,119, 29,131, 7,216,
- 50, 12, 22, 28,255,245, 71, 62, 0,116,233, 63,102,145,103,196,103, 86,132, 39, 80, 87,182,191,209,160,149, 51,132,124,122,230,
-208,102, 2, 0,111,245, 30, 62,195, 46,112,192, 55, 89, 15,247,100,252, 45, 15,244, 3, 6,240,108, 99,116,125, 9, 37,147, 67,
- 66,195, 90,244,239,211, 13,129, 94,206,232, 59,104,220, 84, 0,181, 50, 88,122,189, 94,188,119,239, 94, 87,134, 97,120, 58,157,
-174,100,208,160, 65,153,175,147, 54,159,214, 31, 92, 1, 33,110, 58,131,225,167,132,107, 94,139, 40,157,203,190,154,118,167,231,
-252,217, 32,204, 40,202,178, 73,105,183,119,182,228, 12, 86, 25,182,190,189,205,120, 98,225,131,136, 54, 45,108,102,142,235, 39,
-250, 97,247, 37, 56, 7,191,155,146,122,103,183,203, 63, 53,131, 12,195,184, 30,220,177,206, 94, 42,230, 1, 0,148,106, 35,250,
- 15,157, 80,243, 5, 28, 54,228, 60, 8,252,202,219, 80,141, 70,131,132,207, 23,148, 16, 0, 32,165,163, 3,164, 82,209,181,141,
-179,195, 11,134,247,170,255,254,244,111,110,111, 1, 96, 9, 32,189,210,139,130, 97, 92,119,109, 90,101,239, 98, 35, 1,159, 71,
-160, 84, 27,208,239,253,201,198,202, 12,219,198,217,225, 11,134,118,243, 24,104,223,117, 95,127, 0,199,170,189,129, 56, 6,250,
- 43,108,157, 79,245, 31,189,192, 89, 13,115,124,190,104,165,253,149,147,123, 47,117,236,251,161, 46, 49, 57, 89,101,208,233,159,
-228,228,166, 77, 41, 74,141,142, 49,181,162, 54, 51, 51,107, 96,102,102,214,164, 91,183,110,146,169, 83,167, 10, 34, 34, 34, 94,
-108, 31, 61,122,180,240,252,249,243, 78, 43, 86,172,232,238,236,236, 92,162, 84, 42,239, 42,149,202,103,148, 82,163,169,231,196,
-209,209,238,227,183,251,246, 66,135,183, 63,130,145, 37, 24, 53,126, 18, 78, 28,251,117, 44,128, 55, 98,176,204,120,204,252, 81,
- 19,102,185,182, 11, 15,225, 47,219,243, 20, 22, 50, 33,186, 52, 15,229,139,121,211,156,118,109, 90,177, 18,192,136,202, 34, 87,
-172, 42,255,243, 32, 91,221,160,222, 45,235,227,183, 93,186, 65,174, 29,167,129,145, 89,190,136,100,121,117,155,168,176,146, 74,
-214,185, 88,242,236,197,198,204,117, 94,221, 38,158,142, 61,182,182,168,186,180, 8,132, 66,247,141,223, 44,246,177, 54, 19,130,
-199, 35,224, 51, 12,120, 60, 2,141,214,136,161,227,102,190,169, 8, 35, 79,106,239,211,157, 1,134, 3, 0, 11,108, 86,103,198,
- 28,173,205, 57, 33, 12,207,102,207,166, 21,124,123, 11, 17,120, 60, 2, 30, 83,186, 60, 79, 87, 99,226,103,243, 44, 94,215,168,
-119,107,101, 31,118,254,155,118, 93, 90, 4, 89, 55,254,229, 42,177,108,209,109,160, 77,118,137,116,216,174,131,231, 7,213,107,
- 59,249, 58,165,236, 87, 73,151, 86,159,172, 78, 71,163,209,100,116,233,218,205,156,240,229,178,211,251,183,180, 45,127,217,188,
-222,200,254,241,114,120, 10,148, 63,196,176, 20, 24,253,225, 72,116,233,218, 77,197, 26,216,228, 90, 84, 26,219,143,159,190,108,
- 87,162,167,248,122,221,134, 5,197, 5,217, 11,226, 30,219,196,203, 28,124, 63, 85,101, 68,255,102,122,198, 17, 16,125,101, 79,
-191, 29,135,175, 34, 40, 48, 0, 70,182,244,253,170,190,174,114,236, 60,114, 13,254,126,254,165,147, 55,179, 20,126,110,102,104,
-215,227,253, 58, 30,223, 8,190,220,193,127,103,223,129,195,223,233,247,246, 32, 88,154,155, 65,171,211,248,158, 61,121,236,199,
-239,215, 45,111, 69, 8, 25, 86, 27,115,200,178, 70,209, 31,255,235, 37, 0, 4, 0,180,175, 17,193,178, 11, 11, 11,123,241,217,
- 96, 48,192,211,211, 19, 41, 41, 41,126,117, 48,107, 50,103,103,231, 30,203,151, 47,183,111,223,190,189,192,206,206, 14, 0,144,
-149,149,229,114,238,220,185,166, 77,155, 54,205, 76, 77, 77, 61,146,145,145,161,170,210, 84,176, 37, 66, 30,229,243,196, 98,105,
-153,175, 5, 51,117,194,123,141,237,236,236, 42,125, 56,206,201,201, 21,205,157, 59,135,240,249,130,210,253, 41,101, 40,107,172,
-242, 29, 35, 45, 91,182,236,173,211,233, 36,149,109,203, 54,216,117, 47, 97, 69, 3, 75,239, 34, 0,159,199,203, 75,189,179,215,
-206,100,211,222,184, 79,103, 39, 70,240,125,175, 62,125, 60,250,118,143,128,147,157, 5,206, 94,123,130, 79,102,127, 13,189,193,
-184,186, 46,231,135,199,227,241, 51, 51, 51,227,173,172,172, 28,223,192,253,182,254,193, 29,107,237,207, 93,186, 53,227, 27,241,
-174,113, 13, 90, 15,215,151,191,254,206,200, 82,248, 73,204, 5,109,251,116, 82,216,184,248, 74, 55,124,179, 76,192, 69,176, 42,
-158, 8, 17,111, 97,235,150, 97, 54, 51, 39,141, 20, 45,220,112, 1, 87, 79, 30, 81,167,222,217,243, 70,204,149,194,222, 47,156,
-240,248, 99, 8,143, 39, 39, 12, 17,177, 70, 54,201,160,213, 46, 82,101, 71,167,189,174,182,145, 5,246,253, 94, 75, 99, 78,169,
-247,143,223,126,109,239, 96, 41,134, 90,107,192,136,143,191,192,250,213, 11, 20,118, 22, 34,104,116, 70,108, 62,120, 51,187,113,
-241, 74, 58,188,123,253,247, 23,111,140,250,245,171,237,143,127, 45,189, 86,171, 40,120,132,129,189,133, 24,139,118, 62,129,185,
- 76, 0,107, 51, 17, 24,166,114,115, 53,188, 87,169,102,126,145,214, 64, 8, 17, 81, 74, 43,173,220,204,156,130,218, 40,236, 92,
-247,246,251,112,129, 93, 76, 22, 1,165, 90, 60,179, 16,163,255,208,113,150, 94,142, 82,200, 37, 60,196, 39,165,121,126, 54,109,
- 90,168,196,201, 63,172, 36,237,113, 98, 77,217,246,240,240,232,223,179,103, 79,217,148, 41, 83, 4,110,110,110,216,190,231,132,
-123,167,119, 38,246, 74, 73,207,113, 99, 41,224, 96,111,157, 52,114, 96,247, 67, 71,143, 30, 77, 72, 74, 74, 18, 44, 95,190,188,
-249,254,253,251, 3,107,243, 36,106,164, 20,106,173, 17, 70, 35, 11, 35, 75,144,149,175,169,195, 77,133, 48, 85, 63, 85,211, 62,
-157, 35,154,241, 87, 29,120,134, 34,149, 30, 82, 33, 15, 79,211,138, 17, 30, 30,198,223,189,153,180,175,236, 27, 35,223,233,241,
-185,131,130,118,237,221,178, 62,236,173,100,216,244,205, 98,252,118, 37,174,107, 70, 17,129,109,239,229, 99,156,196,252, 78,118,
- 50,225,186,136, 80,111,199,183, 66,220,113, 43,212,219,241, 98,228,227,232, 70,239,174,156,144,162, 20,156,206, 61, 54,161,168,
-170,243,110,109, 38,196,134, 19,241,144,139, 5,144, 75,248,165,139,152, 15,134,121,189, 23,198, 75,157, 3,221,120,172,113,164,
-185,115,224,200, 65,239, 14,112, 30, 60,232, 29, 74, 24, 30,246,252,122,168,207,207, 63,111, 79, 51,115,244,219, 96,100,120, 27,
-213,169, 15,147,106, 62,158,128,189,133, 8,159,253,244, 0, 10,153, 0,230, 50, 1, 20, 82, 1,222,106, 98, 87,231,116, 18, 66,
-172,198,246,105,208,253,222,182,142,237,253,234,153,249,220,141, 45,120, 56,114,209,173,213,231,243,219, 79, 90,183, 42,208, 70,
-148,167,225,127, 49,245, 67,126, 74,106, 90,251, 61,135, 46,116,112,110, 54,242,137, 65, 87, 60, 43,243,238,238,131,149,233, 37,
- 61,190,210,212, 53,124,128, 68,167,212,223,191, 27,157,236,149, 91, 34,194,195,132,194,178, 99, 42,128, 89,249,177, 45, 59,190,
-105,201,241,200, 85,241, 46,167,216, 48,237,233,249, 43,181,106,138, 82,235, 88,220,141, 83,194,195,183, 41, 28,157,156,161,237,
-254,158,199,141,179,251, 14,202,157, 2,150, 22,167, 61,154,101,170,206,142,195, 87,177,112,233,234, 24, 16, 60, 42,187,155, 7,
- 76,153, 60,193,231,235,149,235, 94, 90, 55,238,163,241, 62,117, 53,215, 50, 7,191,159, 59,246, 30,246, 78,227,230,157, 16, 19,
-251, 12, 49, 81,183,240, 86,199, 46,232,214,179, 31,180,154,146,247, 55,254,184,238, 38,128,111,255, 84,231, 58, 5,180,110, 20,
- 20,240,179,179,147,179, 27,165,101,175, 38,163, 20,237,219,183,199,180, 79, 71, 65,165, 44,130,159, 95, 80, 43,203, 54,157, 53,
- 93, 7,126, 12,150,165,200,201,201, 46,126,242,248, 97, 71,117,198,227,235,166,166, 81,165, 82,233,179,178,178,112,231,206, 29,
- 68, 71, 71, 35, 42, 42, 10, 57, 57, 57,176,176,176,168, 85, 19,187,149,149,149,121,104,104,232,123,187,119,239,150, 88, 88,252,
-225,249,181, 90, 45,100, 50, 25,250,246,237, 43,104,221,186,181,203,240,225,195, 63,176,178,178,218,145,151,151, 87, 88,169, 97,
-186,119, 56,213,177, 81,223, 31,186,191, 51,122, 28, 0, 8,197,102,113,107,126,250, 53,170,186,223, 22, 74,204,221, 59,246, 29,
-225, 5, 74, 65, 8, 89,147,253,248,215,244,170,246,213,233,116,210, 95,126,249,197,133, 16,242,210,253,117,193,218, 95, 90,222,
-143, 73,235,248,253,188,233,124,133, 92,140,236, 2, 45,198,140,155, 96,107,178,185,106,212,103,124, 88,211,166,223,126, 49,117,
- 20,228, 50, 41, 78, 94,123,134, 79,103, 46, 53,228,102,103,110, 3, 33,171,178,162,246,191,110,171,197, 27, 25,241,230,227, 98,
- 6, 69,151,112,201,168,119, 35, 36, 90,189, 17,121, 74, 61, 52, 58, 35, 88, 74, 81, 80,172,199,195,132, 34,216, 90, 8,177, 1,
-255,125,106,101,176,248, 2, 81,207,137,195,186,139, 86,236,184,142,171, 39,119,168, 83,111,239,145,149,111,115, 11, 29, 20,151,
-116,107, 87,253,151, 61, 74,205, 35, 12,164,206,129,110,124,194, 91,217,178, 77,203,206,163,199,140,163,141,253,220,133, 0,131,
- 71, 49,207,245,155, 54,110, 24,102,225,214,104,117, 97,242,131,207,203,111,166,181, 29,181,192,178,108,242,171, 17, 43,150,101,
-147,107, 74, 39, 33,128,165, 92,128, 31,142,196,149, 62, 25,131,194, 66, 38,192,206,115,201, 40,204, 77,201,110,172, 94,249,251,
-200,238,246,189, 23,109,124,120,240,187, 67, 25,145, 0,162, 40,165, 25, 85,105, 18, 6,224,243, 8, 44,228, 66, 88,200, 4,176,
- 48, 19,128, 33,164, 74,115,245,197,143,247,182, 0,120, 82,209, 92, 85,212,148, 59,248, 53, 52,183,243, 56,240,246,216, 37, 86,
-247, 19,117, 96, 24,160,190,163, 28, 86,102, 34,104,245, 64,124,150,174, 44,175,230, 24, 63,101,158,221,140,201, 99,143, 18, 18,
-209,152,210,243,134,234,242,174, 82,169, 68, 67,135, 14, 21,232,245,122,221,240, 79, 22,117, 78,203,200,238,179,122,201,103, 98,
- 91, 91, 27, 20,151, 24,112,231, 81,124,192,210,175,190,169,127,236,252,141,253, 51,198,246,249,173,107,215,174, 22,191,252,242,
- 11, 91,155,243,158,149,145,253,205,230,237,123,183,173, 90,177, 20,143,227,115,177,233,199,239, 64,141,134, 31,170,247,187, 47,
-107,174, 95,191,222, 62, 60, 60,156,185,118,237, 90,206,171, 6,148, 16,200,115, 11, 52,176,148, 11, 33, 19,243,225,104, 41,134,
-141, 66, 8,177,144, 1,195,252, 81,137, 84,212,220,184,247,200, 34, 86,149,143,223,118,233, 6,109,250,102, 49, 70,124, 60, 27,
- 15,178,133,199, 25,153,229,162,143, 7,246,153,110, 45, 67, 55, 23, 75,198,254,173, 16, 15,200, 37, 66,204,156, 56, 20, 97,145,
-241,246,201,249,236,236, 92, 21,154, 0,248,188,178,116, 50, 60, 2, 62,143,129, 66, 42,192,249, 35, 59, 51, 85, 69, 5, 5,132,
- 87, 26, 97,209,107,117, 9,166,121,253, 63, 31, 79,185,131,223,140,144,224,198,139,199,141, 30,201,180, 10,111, 70, 25,134,143,
-236, 66, 29,161,160,152,244,241, 88,140, 31, 59,202, 49, 57, 37, 99,206,183,223,173,255,220,204, 62, 96,161, 50,243,209,188,234,
- 52,121,132, 1,195, 16,200,165, 2,152, 73,254, 88, 74,180, 44, 8, 1,207, 53,100, 80, 1, 8, 64, 8, 73, 77,186,185, 51,192,
-148,116, 58, 55,234,118,230, 66,166,208, 95,117,180,228,234,211,152,219,139,110,220, 75,188, 65, 41,205,173,215,110,242, 7,122,
- 61,133,178,196,128,231, 25, 42, 24,180,148,140,232,234, 14,207,119,136,223,146, 77,183,183, 17, 66,204,203, 35, 46,175,106, 38,
- 95,221, 83, 98,219,168,255,192, 85,107,215,223, 92,177,120, 54, 47,167, 80, 11, 35, 5,164, 34, 30, 36,101,139, 84,200, 67, 73,
-113, 1,190,253,225,167,116, 3, 72,127,122,190,250, 50,255,231, 74,131, 14,233,223,189,237, 46, 2,136, 8, 35, 76,118,118,247,
-112,239,208,115,152,228,173, 94,239,195,104,208,205,144, 59,248,159, 43,206,120,124,198, 20,205,160,192, 0,128,224, 81,230,253,
- 3,253, 75,111,146,125,127,245,247,243,247,121,117,157,183,183,175,143, 41,231,189,252,225, 66,106,231, 51,218,219,191,209,180,
-113, 95,172,247, 72,205,209,192,202,197, 27,119,110, 71,226,196,158,111,111,171,139,242, 86,156, 56,188,127,218,194,101,171,155,
-244,236,251, 46, 14, 30,216, 61,133, 16,242, 29, 45,229,133, 38,101,217, 33, 91, 54,172,119, 19, 8,197,208, 27, 41,244, 6, 22,
-122, 35, 11,189,129, 34, 45, 45, 21, 69, 74, 37, 36, 82, 5,228,230,214,208, 27, 74, 35,133, 26,141, 94, 62,246,253,158,227, 1,
- 92,175, 44,157,158,205,135,222, 2, 67, 92, 75,215,151,153, 19,198, 74,229,228,228,180, 13, 0,196, 98, 49,196, 98, 49, 12, 6,
- 3,238,167, 98,146,115,216,144,153,160,101,119,118,150, 77, 78,187,189, 51,180,170,188,187,185,185,245,170,204, 92, 41,149, 74,
-252,126,243,158,197,230, 95, 78,118,141, 79, 74,111,192, 26,237, 53, 82,199, 38, 93, 0,244,170,234,120,166,223, 63, 48,190, 94,
-196, 36,102,202,184,161,222,107,126,218,123, 35,230,248,194,106,195,201,245, 59,206,208, 78, 27, 63, 56,244,203, 53,155, 98,146,
- 47,172,254,180,166,115, 36, 20, 10, 5, 89, 89, 89, 47,174,239, 5,235,246,117, 75,204, 40,236,248,213,226,217,194, 59,207,148,
-184,247, 60, 13,195, 58,185,155,124,189, 59, 53,236,231,231,238,225,182,122,245,194, 79, 16,157,170,198,186,125, 55,112,225,200,
-182, 72, 93, 73, 81,143,204,168,223, 50,235, 82,135,188,174,193,170, 76,179,252, 70,112,238, 94, 54,138,212,165,198, 74,111,100,
- 81,164, 54, 32, 51, 95,131,130, 98, 61,148, 37,122, 12,235,232, 94, 23,191, 18, 6,192, 14, 64, 22,128,155,175,124, 70,217,255,
-168,228,115,118, 89,196,208,166, 44, 18, 43,170,160, 89,254,185,170,245,229,223,127, 8, 32,160, 76,211, 8,224, 6,128,188, 26,
- 61, 19, 33,132, 82,250,199, 43,149, 95,253,252, 82,228,193,160,119,117,118,114, 2, 75,147,203, 35,156,165, 81,143,230,131, 84,
-159,142, 30, 32,117, 14,126,167, 56,245,206, 94,147,251,100, 41,236,125, 91, 74,165,178, 35, 75,151, 45,167, 3,123,181, 19,165,
- 23,232,213, 15, 83, 74,178,148, 26,106,112,180,243, 18, 47,251,242, 75,179, 37,203, 86,124,180,255, 87, 54, 31,192, 87,149,134,
-159,195, 6,223, 34,132,113,101,254, 8,203,131,178, 52, 57,249,230,142, 80, 0,120,157,190, 86,197, 37, 6,240,120, 4,130,178,
- 62, 41, 42,173, 17,170,252,244,156,198,170,213,191,143,236, 90,106,174,174,167, 56, 62,227,241,178,116,148,210,106,155, 32, 24,
- 66, 80,168,210,195, 92, 42,128,133, 92, 8, 75,153,240, 69, 4,171, 10,115, 21, 85,157,166, 80,167, 75, 50,234, 53, 37,212,104,
- 68,247, 48, 59,216, 91,136,224,100, 37,134, 68,196,135,222, 8,168,181, 44,212, 90, 35, 18, 50, 85, 40, 82,137,209,168,221, 32,
-111, 91,167,235, 42, 91,143,176, 45,217,241, 55,199, 84, 27, 97, 50, 26,241,243,222, 19,222, 41,105,153,125, 14,110, 95, 41,206,
- 44,208,227, 94,188, 18,153,121, 90, 80, 98,129,153,159,127, 46,254,226,139,185,253,118, 31, 56,243,188,101,168,111,114,173,143,
-107,230,227,237,141, 91,245,248,166, 71,175,190,138,135, 55,142, 33,230,206,153, 47,148, 25,181,235,127,229,238,238,110,252,246,
-219,111, 45,127,248,225, 7,111,123,123,251,164,204,204,204,184,242,230, 40,207,192,240,212, 83,103, 47,218,180,107,213,150,159,
-148, 93, 2, 91,133, 16,238, 14, 50, 68, 94, 57,167,101, 8, 57, 94,153, 94, 89, 51,224, 96,215,142,211,240,219,149,184,174, 81,
- 57,226,243, 31,142, 26, 17,127,234,200,141,156,181,219,207, 44,119, 49,211,223,149,176,153,235, 34, 67,189, 29,103, 76, 24,138,
-165,107,183,227, 66,228,227,204, 98,198,121,113,154,198,112,106,238,160,202, 91, 59,120, 12, 32,224, 19, 40,164, 2,168,138, 11,
- 10, 30,156,254,206,247, 13, 61, 28,125,112,226,192,118, 38,183, 72,143,228,108, 53, 73,205, 41,130,129,101, 97, 41, 23,193,192,
- 2,249,185,217,228,231,159,183,227,230,205,171, 12,120,204,135, 0,230,213, 20,193,226, 49, 4,102, 18, 62,204,164,165, 81, 32,
- 51, 41, 31, 58, 3, 11,159,250,110, 88,189, 96,162,185,157,189, 3, 58,247, 31, 99,122,132, 77,110,213,100,235,247, 11,113,254,
-234,221,136,115, 79,119,134,217, 7, 53, 89,235, 26, 56, 96, 5, 99,237,172,214,232,141, 40, 44,200, 67,137, 38, 9,205, 92,178,
- 97, 45, 55, 34,190,208, 9, 15,210, 99,204,106,106,206,202,190,255,235, 29,187,160,126,159,239, 57,116,118,105,151, 78, 17,136,
-122, 94, 88,106,174,132,165,230,138, 79, 88,172,252, 97,189, 62,175,160,168,103,246,131, 3,217,117, 40,159,167,203, 42,227,210,
- 72,177, 67, 3,187,159,215,125,190,117,212,180,229, 93,186,244,251,128, 60,184,121,110, 22,128, 51,166, 70,207,255,188,142,154,
-180,174, 42,115,101,239, 21,186, 99,243,150,157, 3, 3,125,220,144,145,175, 71,106,158, 14,151, 34,159, 98,255,250, 89,249,249,
- 25,207,134, 64,167, 84,178,196, 80,112,242,196,161,227, 31, 77,156,134,134, 13,155,120, 20, 38, 23,154, 3, 40,120,233,102,200,
- 35,235,223, 31, 57,118,160,131,189,131,130, 45,139, 96,177,148,194,207, 47, 16,221,123,245,199,249,139, 87,240, 48,234, 94,233,
-122, 22,160,148, 34, 63, 47, 39,221,160,215,110,169, 50,125, 60,226,186,249,135,149,246, 12, 1,116, 6, 22, 90, 61,139, 25, 51,
-191,208,126, 50,103, 93,235, 46,173, 26, 71,241,192, 22, 38,166,229, 91,222,124,146,214,136, 8,204,157,222, 27, 61, 93,168,214,
- 25, 81,168,210,227,204,158, 53, 85, 55, 51, 54,104, 18,238, 25,208,122,228,232,217, 63,136,197, 60, 70,215,208,215, 45,174, 93,
-139,134, 73,245,156,109,139,150,172,249,185,217,149,200, 39,221,251,191,221, 79, 50,176, 65, 32,113,182,145, 40,198,142,159,208,
-216,209,167,245,251,233, 49,151,183, 85,121,243,227,139,243,221, 92,221, 94, 52, 37,218, 7,245,189, 7,224,213, 59,127, 66,230,
-131, 3,141, 1,192,222,193,177,132, 8,196, 69,181, 48, 32, 20, 0,230,175,221,219, 61, 57, 75,249,206, 87,139,103, 11,239,196,
- 21,227,206,179, 2,136,132, 60,104,116,166,119,107, 51, 18, 58,105,250,132, 17,130,220, 98, 3,206,221,203,194,131, 91,103,169,
- 65, 87, 56,140, 18,254,112,187,160,190,239, 19,192,147, 2,207, 25,130, 31,181, 12,182,228,223, 61, 80, 80,215, 8,150,125, 96,
-255,150,132,135,238, 60,190, 48, 12, 96,253, 13,122,189, 61,195,227,101,167,223,221,235, 80,139,188, 67,149, 25,131,229, 75,230,
- 96,245,134,253,184, 17,157, 11, 11, 67, 18, 14,110, 90,140, 41, 75,127,134, 74,107,172,170,124, 87,231, 71,236, 8, 33,135, 41,
-165, 61, 1,116, 4, 32,170,240, 25,132,144,195,101,191,253,210,231, 25, 51,102,204, 90,186,116,105, 84,249,190,229,235,203,247,
-173,110,125,133,239,219,204,156, 57, 51,104,217,178,101, 75,194,195,195,119, 93,185,114, 37,206, 36,131, 85, 49, 19,132,144, 42,
-175,114,135, 70,125,154, 1, 12,207,209,198, 12,222,245,221, 32, 31, 48, 92,234, 26, 50,176,152,199, 99,152, 45,171,103, 73,114,
-212,124,240,121,188, 98,147, 43, 95, 7,255,230, 10,133,226,232, 47,187,247, 81, 31, 15, 71,209,190,107,249,137,145,113,170, 23,
- 33,221,194,172, 4,145,183,181,134, 55,240,221,254,242,227, 39, 79, 77,170,202, 96, 17,194,184,174, 93,249,165,189, 66, 42, 0,
- 67,128, 66,181, 1,147, 38, 79,127,237,187, 23, 5,229,141,159, 60, 23, 12, 41,189,249, 40, 11,114,177,120,213,102,101,127,215,
-179,151, 71,118,181,237,189,104,227,195,131, 39, 31, 73,159,246,235,215,161, 32, 62, 62,190,198, 3, 77,168, 49,249,157, 15, 62,
- 17, 50, 76,105,179, 17, 33, 4,128, 49,163, 46,230, 10, 0,242,242,226, 10,165,142,141,251,109, 95, 57, 97, 67, 61, 87, 23,107,
-133, 76, 2, 51,185,152,248,251,121, 73, 90, 52, 15,151,186,123, 53, 20, 94,124,164, 68, 98,150, 26,207, 82, 10, 33,182, 11, 18,
- 12,140,232,132,237,107,166,119, 55, 37,255,103,175, 62,232,245,221,138,217,226,140, 60, 29, 30, 37, 21, 33, 61, 87,131,244,188,
- 18,164,231,105, 96, 38,225,163,197, 91,253,197,191,157,217,219,183,101,168,239,218,186, 28,223,103,177,113,251, 19, 82,210,134,
- 53, 14,110,134,159,183,110,110, 65, 92, 93, 37, 52, 57,185,196,212,239,111,216,176, 33,183,105,211,166,182, 95,125,245, 85,177,
-159,159, 95, 19, 63, 63,191,250,209,209,209,231, 27, 52,104,208,235,251, 53, 11,207,127, 50,123,133, 59, 31, 6,139, 22,173, 90,
-241,100, 34,130,107, 23, 79,106,182,108,248, 33, 85,151,175,156, 86,173, 17,150, 89, 46,202, 40, 34,176,115,118,123, 32, 23,232,
- 59, 11,100,186,232,220,109, 19,182, 3,248,213,171,219,196,211,231,110, 61,137, 14,137,140,183, 63, 27, 25,157,153,171,210,251,
-198, 30,155, 92,109,133,203, 35,101, 17, 44,217, 31, 17, 75,135, 38, 3,158, 82, 66,236,202,141, 13, 65,105, 68,139,148, 62, 31,
-164, 38, 71,254, 98, 66,199,104, 66, 89, 22,136, 78, 86,162, 72,109, 64,137,222, 0, 55, 91, 57,178, 50,146,241,253,218, 45,184,
-125,235, 38, 58,119,235,141,111,127,250, 25,163,222, 31, 80,227,113,101, 24, 2,134, 33,101,145,171, 82,115,101, 38,225, 3, 4,
-200, 47,214,227,215,203, 73,240,170,207,128,212,162,181, 80, 97, 38, 69, 65, 81, 9, 24,129, 25, 30, 95,218, 38, 59,118,246,198,
-204,121, 43, 54,126, 86,168,204, 72,140,125,120, 21,126, 86, 57,168,239,172, 69, 84,134, 5,110,229,122,192,207,171, 1, 24,225,
- 77,147,180,179,163, 26, 45,255,141,217,215, 51, 44, 56, 48,188,158,189, 5,212, 90, 99, 89, 20,139,143, 45,155, 55, 35,254,121,
-242,200,236,168, 3,183,223,132,147, 85,102, 60,203,146, 56,248,124,116,255,218,153,184,190, 67,198,195,209,165, 94, 19,211,187,
- 39,152,102,166, 88, 19, 12, 22, 33,132,177,246, 8,222,186,117,251,158,129,245,235, 57,226,212,141,231,184, 29,155, 7,115,133,
- 37,120,114, 39,248,182, 27,110,121,255,248,154,183,213,217,202,173, 2,161,236,195,102, 45, 90,129, 82,138, 39,143,163,114, 11,
- 10, 44,254, 84, 55,171, 82, 31,223, 1, 96, 94,113,157,204, 46,160,137,194,194,250, 78,137,206,136,148,148,100,252,126,229,124,
-211,178,253, 76, 70, 44,100,112, 50, 50, 19, 58, 3, 11,157,158, 69,211, 70,254, 37, 2,161,180,205,151, 27,142,180, 72,207,200,
-100,100,102, 22,172,133,109, 3,161,165, 62, 93,115, 55,174, 64,168, 51,176,104,224, 84,253,115,185,204,186,193,146, 79, 39,127,
- 18,192, 23, 73, 81, 88,172,209,166, 37,167, 56,254,184,243,156,242,209,147,135, 46,158, 30,245,204, 23, 46,156, 39, 44, 44,161,
-200,204,215, 32,187, 72, 71,222, 29, 60,210,121,219,166,111,135, 0,216, 86,139,164, 55,218,181,237, 7,189,181,153,144, 20,169,
-244, 52,171,176,196, 56,254,163, 73,141, 94,167,236,188,100,174,158, 21,227, 78, 92, 62,196, 66, 30,196, 66, 30,244, 6,211,186,
- 72,218, 5, 14,144,219,217, 89, 14,105, 30,236,141, 19,145, 89,224,243, 8,212,197,133, 90,137,216,236,129,191,191, 15, 19,220,
- 36, 8, 17,173, 91, 34, 54, 46,222,239,196,169,179,171,110,220,188,189,216, 46,168,223,180,172, 7,251,191,173, 77, 90, 19, 82,
-178,228, 25, 6,183, 65,246,142,182, 65,189,123,247, 18,215,115,113, 32,182, 54,150, 48, 66,136,113,227, 63,182, 55,185,213,136,
- 82, 80, 0,203, 22,204,132, 70,171,133,189,165, 8,148, 2,155,214,205,135, 86,171,133,179,141, 4, 5,197,250,234,202,121,181,
-126,164, 50, 67,244,170,209, 42,255,191,124,191,165, 75,151,246,124,197, 0,246,172,194, 24,254,105,191,242,239, 47, 91,182,108,
- 73,133,237, 42,147,155, 8,203, 51, 83, 85,166,236, 26,247,107, 37, 21,203, 79,126,187,116, 18,147, 95,172,131, 88,200,160, 65,
-125, 79, 76,152,248,137,236,173, 96,123,168, 97,142,125, 59,183, 20, 26,140,250,195,166,252,168,204,209, 39,212, 76,166, 56,190,
-105,235, 78,214,209,222,150,252,120, 58, 43, 46,171,208,240, 98,138,131,232,235,191,177,183, 78,252,232, 68, 65,142,203, 36, 82,
-111,141, 86, 99, 85,229,141,161,236,132,110, 58, 25, 15, 30,195,128,247,134,102,246, 98, 24,198,248,211,218,133,176, 53, 47,237,
-115, 53,127,245,246,162, 94,118,199,207, 86, 52, 87,193,193,193, 5, 77,154, 52,201,103,152,154,127, 52,241,198,207, 45, 43, 41,
- 40,117, 50, 87, 47,250,137,164,223,187,137, 87,102,226, 39, 36, 68, 96,235,185,103,202,160,247,134,204,116,104,216, 75,241, 60,
-173, 0, 34, 70,143,176, 0, 39,156, 63,241, 43,155, 20,247,104,172, 41,218,153, 57, 5,110,182, 54, 54,184,253, 76,137,212,156,
- 18,164,229,150,154,171,244,220, 18, 20,170, 13, 8,246,180, 71,126,129,210,173,206, 6,150,208, 3, 39,142,159, 24,214,173,207,
- 64, 76,248,108, 94,183, 13,223,125,125, 79,234, 16,240,190, 58,227,209, 13, 83,190,191,103,207, 30,163,135,135, 71, 92,118,118,
-118,216,180,105,211,138, 60, 61, 61, 29, 23, 46, 92, 56,186, 65,131, 6,206,111,181,111, 95,112,243, 92,139,173,159,124, 54,175,
-253,172, 79, 54,212,103, 24, 38,131,178,244,183,212, 98,253, 92,154,245, 80, 93,237,121, 58, 56,243, 49, 9,156, 63,236,173, 54,
- 54,191,217, 72,153, 64, 1,209, 12, 38,129,243,119,211,135,115,117,177,199,214, 22, 53,122,119,229,132,148,124,118,118, 9,227,
-184,184, 38,115, 85, 26,193, 34,208,234, 88,152, 75, 5,229, 35, 71, 1, 10,167,239,214,125, 45,179,179, 16,131,207, 35, 16,240,
- 24, 20,168,244,200, 41,212,226,179,105,211, 76, 61,130,172,145,101,161,210, 24,161,214, 26, 64, 64, 80, 84,152,141,153,159,125,
-138,110,189,250, 99,228,216,201,200, 87, 3,183,226,138,160,211,235,107,180, 69, 60, 2,168, 52, 6,140,236,226,142,156, 34, 29,
-138, 75, 12,208,234, 88,200, 36,124,240,249, 12,228, 98, 62, 20, 82, 1, 8,161, 66, 39, 39,167,209, 0, 32, 16, 8, 74, 18, 19,
- 19,183, 87,221, 60, 79,225,225,230, 0,181,142, 65,179,129, 43,208, 49,220, 23,119, 78,109,228, 95,188,126,191,254,103,243, 86,
- 97,252,224,112,236,125,226, 5,107,123, 15,152,201, 36,208, 83, 6,128,105, 83,128, 80, 58,151,117,242,239, 63,248,135,159, 54,
- 61, 89,240,197,116, 73, 94, 49,129, 88,200,199,217,179,167,113,245,250,173, 53, 89, 81, 7,182,191,201,190, 20, 2,202, 56,152,
- 91,152, 67, 34,226, 65,167,211,152,220,225,219,200, 82,128, 34,192,190, 81,223, 95,203,206,125, 0, 91,201,186,154, 34, 88,132,
- 16, 98,225, 28,180,249,135, 13, 63, 15,113,114,180,199,254, 51,247,176,117,195, 55,112, 9,234,134,167,145, 63,192, 45,164, 47,
-204,234,119,128, 72,177,103, 52,195,227, 55, 26,255,201,204,254, 33,161,225,184,114,233, 28, 50,211,211,126,160,244,177, 73,125,
-208,120, 2, 50,177,125,199,158,208,232,140,104,211,161, 39,142, 31,218, 63, 1,101,131, 39,234, 10,143,199,176, 31,143, 26, 36,
-200,204,215, 10, 50, 11, 52, 72,201, 86, 35, 46,189, 24, 7,127,217,104,114,147, 20,225, 49, 97,237,154,184, 10, 70, 47, 63,155,
-228,230,234,164, 17,104,212,210,232,216, 88,255, 15,135, 13, 17,120,122,251, 49, 89,249, 26,100, 21,104,145, 85,160, 69,113,137,
- 30, 94,206,245, 24,141,129, 31, 94,219,180,218, 91, 72, 4,223, 30,142,131,185,140,143,150, 1, 54,117,238,132,205,178,236, 31,
-230,106, 81,105,228,234,110, 92, 1, 36, 66, 30, 68, 2, 30,196, 66, 6,122, 35, 53,241, 94,100, 24, 52,102,216,187, 82,173,158,
- 34,187, 80, 11, 30, 67,224,104,107, 35,118,115,242,197,166, 21, 31, 3, 0, 70, 77,255, 14, 31,142, 24, 10, 63, 95,111, 20, 20,
- 20, 73, 63, 28,247,201, 74, 84,210,239,174,170, 72,219,207, 7, 47, 6,222,122,144, 48,229,131, 97,239, 11, 6,246,110,203,220,
-126, 86,136,180, 92, 13,158, 61, 85, 65,171,175,221,108, 52, 6, 99,105,155,239,230,221,135, 33, 19,242,144, 85, 80,122,185, 44,
- 90,183, 27,102, 82, 62,210,243,180, 96, 89,182,186,244, 84,235, 71,170,138, 58,213,134,138, 38,172,186,245,132,144,195, 51,102,
-204,152, 5,128,206,152, 49, 99, 86,249,231,165, 75,151,170, 1,164,154,100,176,202, 51, 85,169,123,110,220,175,149, 84, 36, 57,
-185,109,221, 44,233,153,104,138, 53, 39, 35,209,189,133, 19,132,124, 2,137,153, 35,238,196,229,227,204,153,131, 69,151,174, 94,
- 47, 33,140,190,198, 97, 81, 50, 39,191,166, 50,137,226,244, 55,235,183, 26, 28, 28, 29,177,243,114, 94,106,142,210,160,255,163,
-121, 74, 79,110,157,248,177,190,129,213,119, 85,167,199,212,248, 56,203, 82, 42, 92,250,253,111,160,148, 2,172, 17, 44, 88,240,
-132, 98,185,123,243,161, 25, 32,128,209,200, 74,248, 60,166,228, 69, 59, 72,233,173, 41, 57,225,250,142,106,155, 14, 9, 0,115,
-153, 0,191, 92, 72, 70, 65,110,106,118, 47,187,227,191,151,155,171,227, 81,226,167, 33, 33,193, 5,205,155, 55,207, 23,139,197,
-224,241,120,117, 57,193,175,101,174,170, 46,156,145,122, 0,203,156,253,219,246,238, 38, 15,106, 46, 34, 2,132,248, 59,225,252,
-201,253,236,213, 99, 27,251,169, 50,162,143,152, 26,226, 85,150, 24,144,154,171, 70, 74,182, 26,105,121,101, 17,172, 92, 13, 8,
- 1, 74,180,175, 55,125,141, 42, 35,250,144,153, 75,195, 31, 52,122,140,109,211,185, 47,166,204,251,198,123,251, 15,203, 47,201,
-237,125,194,138, 51, 99,238,155,162, 17, 31, 31,175,113,112,112,184, 93, 84, 84,212,105,229,202,149,202,128,128, 0,145, 84, 42,
-205, 1, 32,137,121,242, 68,120,246,232,158,231, 89,169,169, 99,116, 58,221, 77, 83,211,229, 17, 49, 92,236,111,158, 59,218, 93,
-214,178, 75, 3, 71, 25,220,101,197, 93,252,205,238,126,101,255,214,164, 37,153,103, 86,103,166,105, 12,167,114, 85,104,146,162,
- 20,156, 54,169,178,209,105, 19,222, 27, 51, 3, 60,134, 64,167,209,190,232,147, 97,103, 33,198,188,237,143,160,144, 10, 96, 38,
- 21, 64, 33,229,163, 85,128, 13,106, 17, 32,162,122, 3,133, 90,107,128, 90, 99,132, 90, 99,128,109, 61, 75,252,180,109, 47, 18,
-179,212,248,237,102, 54, 30,199, 23,194,215, 77, 14, 74,107,142, 59,177,212, 88,252,238,232,217, 10, 30,195,128, 71,192,248,123,
-123, 32, 87,169,133,144,207, 64, 36, 18, 65, 38,225,195, 92, 38,128,128, 47,192,141,123,247,160,209,104,208,188,121,115, 73, 77,
- 13, 14, 10, 51, 41,124,234, 59, 67,167, 55,224,232,197,135, 88, 52,169, 31, 58,181, 13,197,103, 60, 17, 30,107,130,161,176, 86,
-128, 37, 60,232, 12, 44, 52,122, 35, 0,162,174,230,154,105, 89,214, 47,162,132, 82,122, 45,237,241,175,137,246, 13,251,142, 62,
-118,242,236,246, 94,221, 59,227,246,221, 40,236,219,255,219,165,108,155,130,169, 21,190,211, 8,101,163,224, 40,165, 81,117,172,
-140,137,220,193,127, 82,120,171, 8, 40,243, 50,145,145,244,220,228, 74, 61,176,158, 2,159, 78,154,224,227,231,231,231, 99,100,
- 41, 88,150, 34,208, 93,129, 49,227,198,249,120,121,251,250,176,101,163, 8,253,221, 20,213,234,200, 29,252,198, 47, 94,249,253,
-251,110,110,110, 56,126,249, 17,150,206, 30,123, 91, 38, 51,243, 12,181, 86, 88,178,126, 77, 16,247,224, 20,172, 61,242, 97,238,
-224,227,218,187,211, 48,215,110, 61,250,226,254,221, 72,172,254,106,225,213, 98,158,116,137, 41,105, 53,115,104, 96, 23, 28,214,
-246, 61,115,107, 7,228, 21, 40, 97,102,101,143,128,198,161,239,153, 57, 52,152,174,204,120,150, 85,215,107,157,165, 20, 26, 29,
-139, 92,165, 14,201, 89,106, 60,207, 80,225,121,186, 10, 44,251, 71, 83,112, 77, 37,148,128, 16,185,152,207,183,214, 63,173,119,
-239,244, 89,234,238,230, 64,150, 47,156,198,211, 81, 49, 50, 11,180,200, 42,212, 34,171, 64,131,172,194, 82,131,101,101,198, 7,
- 75,217, 90,143,206,200, 85,234,160,144,242, 97, 33, 23,194,104,172,123,159,239,121,171,118,182, 76,206, 82,190,245,213,162,217,
-194, 59,207,139,113, 47,174, 0, 98, 33, 83, 26,189, 42, 51, 88,166, 54, 11,243,248,204,132, 30, 29,155, 35, 41,171, 4,124, 30,
- 3, 62,143,129,119,195,166,176,149,177,120,107,224, 12, 0, 64,175,238,165,211,144,196,165, 21,227,208,181, 52, 0, 16,154,154,
-214,204,236, 66,201,254, 83,183, 63,217,249,211,114, 81,137, 81,128,239,143,196,163, 68,107,132, 88, 88,214,236, 46,170,221,253,
-205, 96, 44,141, 96, 37,101,233, 80,172, 49,162, 80,165, 3,165,192,141,167, 69, 80,105,140, 40, 80,233,208,194,207,186,166,251,
- 15,169, 97,123,207,215,187, 79,210,158, 40,237,171,101,103,106, 4,107,233,210,165, 81, 75,151, 46,173, 52, 34, 86,163,193,170,
-210, 92, 9, 37, 39,183,174,157, 37, 61,253,132,226,252,189, 28,188,211,198, 21, 57,153,201,216,240,221, 26,150, 82, 64, 44, 17,
-165, 27, 13,236,177, 18,214, 48, 45,255,238,161,106,219,125,229,118,129,141,165, 50,217,217,165,171,127,208, 57, 58,185,178,191,
- 94,203,207, 44, 80, 25, 95,138, 21, 26, 53, 26,134,178, 84,104,138,185, 42,107,218,208,205,155,208, 15, 44,165,152,187,102, 55,
-150, 78, 25, 4, 51, 9, 95, 70, 8,145, 21,151, 24, 48,105,225, 70,172,252,124,132, 66, 38,230,151, 25, 3, 35,198, 78,248,204,
-164,147,160,214, 24, 81,156,151,158,211, 72,185,234, 21,115, 21, 82, 16, 22, 22,150,111,101,101, 5,185, 92, 94,107,131, 85,153,
-185,114,116,116,116,150,201,100,214, 62, 62, 62,101, 79,125, 60, 24,141,198,226,152,152,152, 58, 77,250, 86,152,159,125, 32,245,
-249,131,230,173, 34,122,224,194,201, 3,236,213,163, 27,250,213,102,136,185,165,133,121, 82,228,195,132, 0,192, 12, 41, 57, 37,
- 72,207, 43, 65, 90,174, 6, 58, 3, 11,119, 7, 25,146,147, 18, 97,105, 97,150,100,170,158,204,209,167, 43, 67,121, 99, 88,130,
-159, 84,233,143,143, 2,128, 50, 37,106,156,204,222,247,126, 84,212,221,213, 61, 7, 77, 16,117,122,123,156,112,253,178,143,102,
- 0, 24,100,170,110, 70, 70,134,202,222,222,254,170,179,179,115,207,185,115,231,106, 0,136, 52, 26,141,108,196,136, 17,178,132,
-132,132, 79, 41,165, 38,165,177,205,136,205,182, 68, 66,187, 54,240, 11, 25,236, 46, 43,238,220,161,109, 56, 90, 6,185, 33,185,
-109, 56, 0, 76, 76, 80,153,249,182, 30,187,225,151,250,118, 86,199,190,223,114,116,233,168,129, 29, 62,117,238, 53,127,101,234,
-161,185,213, 70,196,158, 92,220,216,165, 50,247, 46, 40,235,248, 94,209, 96, 25,140,180, 54, 77,112, 84,111,100,161,210, 24,160,
-210, 24,160, 44,209,227,204,157, 76,100,228,107,145, 87,172, 67,137,198, 8, 10, 64,167,167,229,179,138, 84,111, 86,175,108,177,
- 44,255,223, 53,100, 80,193,154, 5, 19,204,247, 93, 78,134, 92, 92,218, 31,203, 66, 46,130,185, 76, 0,128,226,252,249,243, 40,
- 31, 30, 95,211, 83,252,190,227, 55,176,114,203, 89, 28,223, 56, 13, 18, 17, 15, 77,250, 46,192,176,190,205,193,178, 20,177, 79,
- 30,100,248, 4, 4, 59, 48,102, 50, 48, 12,202,251,164, 84,119, 60,109, 40,165,191, 17, 66,122, 18, 66,122,148, 90, 56,228, 29,
- 48,230, 20,159, 61,178, 83, 94,172,214, 24,242, 18, 30,125,131,226,236,118,165, 77,240, 96,203, 30,208,207, 19, 66,218,214,209,
- 92, 49, 82,123,223, 53, 31,142,155,244,142,151, 87, 3,236,222,177, 9,148,146,125,166,126,127,251,161,171, 88,181,250,229, 17,
-131, 99,198,141,243, 89,255,253,247, 47,173,123,127,196,104,159,234, 12,158,107, 80,135,105,126,254,129,184, 22,149,140,229, 95,
-140,191, 93,146, 25, 55, 88,107,102, 51, 70, 87,156, 54, 57, 48, 40, 24,142, 14, 54, 72, 79,203, 64,251, 62,157,208,173, 75, 23,
-220,191, 27,137, 69,115, 62,187, 10,149,182,115, 77, 81,219, 63,140,144, 96,108, 68,151,190, 2,149, 70,135,117,203,231, 96,204,
-212,197,104,209,190,151,224,193,157,235, 99, 1, 44, 48, 53,207, 90, 61,139,246,141,237,160,213, 27,161,211,179,248, 45,142,199,
-255,115,158, 0, 62,143, 97,130, 27,148, 54,239, 22,170,245,213,215,243,124,146,158, 87, 88,228,241,205,226, 79,120,197, 26, 35,
-178, 10, 52,200,204,215, 34,171, 80,131,236, 2, 77,169,185, 42,208, 34,187, 64, 3, 62,143, 32, 38, 46, 5, 60, 30,169,117,255,
-187,252, 98, 29,154,249, 90, 1, 32, 96,234,216, 28,146,109,176,235,118, 55, 58,249,173,229, 11,103, 11,239,196, 41,113,239,121,
- 97,153,177, 98, 32,170, 96,176, 88, 19,186, 96,217, 7,246,110,249,254,160, 62, 13,205,229, 18,164, 60, 41, 2,159, 33,224,243,
- 8,204,237,220, 96, 33, 41,193,132,241, 99, 96, 99,109,129,196,236, 18,172,217, 31,141,123, 15,159,130, 85,215, 46,219,223,253,
-124,188,223,251, 67, 6,138, 25,129, 4,219, 79,198, 65, 36,228,129, 15, 45, 30, 94,191,168,201, 72,126,174, 43, 42,204,151,243,
-249, 2,147, 68, 9, 64, 13, 70, 22,148, 82, 44,153, 63, 19,187,182,124,135,227,183, 50, 64, 81, 58, 85,195,239,191,126,141, 73,
- 51, 22, 33,171, 80, 11,128,188,206,168,197, 35, 0,122,188,106,132, 94, 53, 73, 21, 34, 80,149,113,179,162, 70,249,254, 85, 25,
-184,138,125,178, 0,152, 20,105,231,191,234, 20,203, 63,219, 53,238,215, 74, 34, 18,157,220,178,102,166,244, 76, 52, 94,152, 43,
-181, 50, 27,219, 54,174, 87, 82,176, 29, 51, 30, 28,188, 97,234,209,144,219,251, 6,137,229,242, 11,179, 23,173,209, 56,187,214,
- 55, 28,189, 83,152, 83, 84, 98,252, 83, 24, 68, 40,147, 27,229, 22,118, 37,150,238, 77, 87, 10,212,218, 57, 89, 89, 15,139,107,
- 58,165, 44,165, 56,116, 61, 29, 96, 75, 79,226,238,139, 41,165,243,248,240, 8,140,108,105, 59,247,169,219,153, 47,214,153, 86,
-177, 2,191,156,188,157, 93,149,185,178,180,180,132,165,165, 37,204,204,204,106, 91, 97, 87, 26,185,146,201,100,214, 39, 78,156,
-144,152,155,155,131,199,227, 65,163,209,160, 83,167, 78,117, 42,121,114, 7,191, 65, 45,222,234,191,180,117,251, 30, 56,119,226,
- 87,246,234,209,205,253, 85,153,181,152,191, 7, 64,183,182,141, 15, 45,255,122, 93,253,169, 51,102,139,229, 18, 62,242,148, 58,
-240, 24, 2,119,123, 41,108,204,120,184,122,246,112,201,224,174,193, 38,155, 63, 55, 87,143,109, 95,175,249,193,102,229,151,243,
- 59, 91, 89,213,119,200,203,139, 43, 4, 0, 85,102,244, 15,102,142,126, 79, 92,235,157,188,208,164,109, 63,216,187,120,119,175,
-109,126, 51, 51, 51, 51,131,130,130, 30, 5, 6, 6,134,246,239,223,159, 46, 89,178,196, 42, 57, 57,121,143,169,230, 10, 0, 58,
-116,105, 57, 73, 46,208,135,219, 72,153,192, 6,142, 50,180, 12, 42,109,253, 28,216,163, 53, 92,221,234,225, 89,186, 42, 56, 71,
-205, 10,139,245,130, 6,223,255,176,233,166,187, 53,127,148, 65,169,126, 8,224, 96,173,111,218, 40,171, 36,101,101,230, 74,194,
-135,153, 84, 0,150,150,110, 51, 61,130,197, 66,171, 99,161,210, 26,160,210, 24, 75,205,150,214, 8,150, 45,237,172, 76, 8,129,
- 78,111, 44, 15,200,214, 38,129, 48,183,178, 69,125,143,210, 52,190, 88,164, 2, 16, 2,216,217,217,193,198,166,230,121, 71, 89,
-150,133, 86,103, 40,187,233, 26, 95, 12,234,208,234, 12,160,148, 34, 58, 58,102, 90,124, 92,124, 31,111, 31,175,182,129,141,131,
-173,165, 34, 6, 0, 74,106, 8, 38, 13, 6,160,167,148,190, 24, 20,225,209,176,117,201,254, 95,247,201,123,246,234,149,167, 85,
-102,237,173,176, 51, 15, 64,215, 50, 51,166,174,229,117, 74,228,118,190,125,221,252, 91, 46, 30, 58,124,140,111,251,142, 93,112,
-254,204, 41,252,246,235,206,173,197,153, 79, 78,154,170,227,231,231,247,167, 81,132, 94,222,190,127, 26, 69,232, 81,223,167, 74,
-131,101, 97,209,216,188,113, 88,132, 91, 66,182, 14,199,142, 29, 69,113, 65,250, 23, 90,173, 82, 5, 1,221,112,250,215, 31, 71,
- 14, 30, 59,215,188, 69, 88, 40, 44, 21, 50,216, 90,153, 33,242,214, 85,124,185, 96,246, 85,168,180,157,107,174, 63,203,242, 27,
- 24, 40,244,174,231,241,137,123,131,134,136,188,126, 25,177,209, 15,162,238,220,188,218,208, 59,168, 57,236,156,221, 63, 33,129,
-129,203,232,195,135, 53,190,169,130, 26,105,242, 7,163, 39,151,221, 75, 74,215,181,104, 82, 95,244,231, 66, 72, 96,208,235,140,
-219,215,127,153, 89,113, 20, 97, 85,186, 37, 69,249,123, 47, 93,191,255, 89,239, 46,109, 72,121, 83, 96,185,169,122,245,179,183,
-139, 28,177,247, 31,179,250,226,130,125,181,187, 50,105,198,184,241, 19,165,165,105,103, 65, 75, 39, 86, 83,215,246,250, 46, 49,
- 10,223,251,126,254, 44,114, 55,190, 24,247,159, 23,150, 54, 11,150, 25, 44,177,144, 7, 81,217, 95,147,166, 38, 99,152,229,239,
- 15,232,130,236, 2, 45, 88, 74,203,230,210, 35,224,243, 5, 72, 40, 4,146, 10,149,200,202,207, 64,220,243,120, 20,164,199,129,
- 97,120,176,113,241,134, 42,209,180,180, 22, 25,205,124,245, 44,188, 6,244,108,195, 59,112, 37, 13, 82, 49, 31, 69,217, 73,184,
-124, 98,183,154, 26,141, 63,104,245,218, 93,246, 84,244,224,225,253, 61, 58, 19,171,142,172,194, 98,173,131, 88,200,195,238,205,
-223,224,221, 97,227, 94, 68,179, 1,224,179,217, 11, 65, 8, 65, 94,129, 18, 0,201,170, 41,114,245,202,231,172, 10,145,167, 63,
-125,174, 96,138, 42,251, 76,202, 62,107,171,208,208,190, 98,170,180,175,172,215,190,162,103,210,228,200, 85, 70,176, 4, 12,239,
-212,230,213,179, 36, 81,153, 98,220,120,156,142,119,218,184, 66, 85,152,141,245,223,174, 82,150,232,117,221,178,238,155,110,174,
-202, 10, 74,151,119, 71, 76,137,106,224, 29,160, 61,243,160, 40, 46,191, 88, 95,101, 63,134,230,239,204,138,186,125,228,155,238,
- 5,250,184,241,102,206, 13,141,172,193,176, 92,149,249,100,126,229,149, 56, 21,205, 93,179,187,212, 92,177, 44,166,127,185, 13,
-148, 53,150, 77,224,103, 4, 53,178,248,248,139,239, 96, 40,251,223,200, 26, 65,244, 70, 89,141,225,114,137,240,100, 35,229, 42,
-139, 87,205, 85,211,166, 77,243, 45, 45, 45, 97, 99, 99, 3, 43, 43, 43,148, 27,162,215,109, 22,244,241,241,129,153,153, 25,206,
-159, 63, 15, 51, 51, 51,200,229,117,155, 32,223,204,193,255,221,230, 29,250,253,220,190,215, 8,230,244,254,245,198,235,231, 15,
-191,163,206,124,108,178, 9, 48, 26,141, 68,175,215,163, 75, 68, 72,194,157, 39,137,199, 23,206,159,223, 53,172,195,219,226,150,
-126,246, 80,107, 13, 72, 78, 74,194,213,115,191,149,120,215,179, 61,222, 50,212, 55, 89,175,215,195,104, 52,214,120, 3,215,104,
-180, 57,140, 64, 98, 51,112,208,123,226,155, 55,110,252, 44,119,240,219,201,240,216,187,212,200,107, 12,208,119, 27, 55, 10,128,
-206,192, 66,173, 42,204,173, 75,190,163,162,162,110,126,253,245,215,126, 2,129,192,117,239,222,189,217,121,121,121,181,122, 93,
-208,169, 35, 55,214,240,205,244, 49, 66, 90, 50,216, 93, 86,220, 57,169, 77, 56, 6,245,108,141, 93, 71, 46,227,220,197,171, 72,
- 80,153,221, 41,214,242, 14, 36, 39,167,106, 2,173, 10,126,237,219,202,147,183,111, 91,225, 62,251,246,211, 7, 80, 42, 61,149,
-117,126,110,177,233, 55,111,160, 80,173,175, 16,193, 42,237,223,196, 48,196,228, 8, 22, 1,226, 46, 94,137, 12, 10,241, 13,192,
-157,103,133,200,202,211, 64,165, 45, 45,247, 20, 20, 54,230, 66,136,133, 60, 36, 60,143, 3, 75,117,207,107,119,159, 65, 86,183,
-119,198,240,203, 30, 95,248, 2, 1, 31,180,236, 6, 41,149,136,148,246,246,246, 38, 25, 44,189,209,136,254, 93,154,163, 69, 88,
- 99,244, 25,251, 53, 0,224,204,214,233,176, 50, 19, 98,239,222,189, 72,188,188,106,123,131,150,227, 78, 62,184,255,240,237,168,
-219, 87,222,235, 22, 34, 13,118,228,167, 9,171, 9,235, 31, 36,132,136, 0,180, 39,132,116, 2,112,158, 82,170, 55, 26,216,196,
-174, 93,187,176, 70, 35,155, 90,225, 90,179, 2, 16, 14, 32, 23, 64, 36,165, 84, 95,253, 3,160,127, 71, 48,216, 9, 66, 36,102,
- 82, 89, 66,120,199, 65,206, 97, 45,154, 91,244,237, 63, 0, 34,161, 8,167, 79,157,192,218, 85,203,118, 43,211, 30,141,168, 85,
-243,152,137, 29,218,171,107, 46, 42, 40,176, 40,142,126,120, 39, 47, 46, 67,107,197,183,244,129, 64,172, 24, 67, 44,156,215,240,
-196,102,115, 93, 90, 12, 51, 63,115,249, 6,162,238, 92,129,179,173, 20,113,177, 79, 85, 15,238,222,254, 78, 69, 4,243,105,214,
- 67,149,169,233,148,229, 24,223,110, 49,180,171, 85,137,206,136, 75,103,143,148,176, 6,182,235,181, 11, 71, 99,221,124,195, 36,
- 65, 97,111, 89,101, 31,220,208, 31,192,174,154,116,158, 95,223,254,167,174, 23, 13,154,191,155,122,244,212, 69, 51,231,122,222,
- 60, 16, 6, 26,117, 49,178, 18, 30, 24, 74, 10, 51, 84, 25,247, 15, 56,155,146,190, 4, 67,202, 23,115,150,253, 48, 62,164, 73,
- 67, 57,165,162,151, 34, 86,229,255,231, 20,105, 75,251,204, 22,231,227,217,253,203, 37, 89, 79, 11,102, 86, 95,215,233,101, 57,
- 57,185, 47,134,230, 75,149,150, 30, 5, 22, 5,226,242, 11, 12, 60,192,162,192,242, 69,164, 34, 39, 39, 87,100, 52,234,101,166,
- 92,158,150, 10, 9,238, 63, 79,125,209,161, 93, 44,100,202,250, 94,253, 17,201, 50,241, 58, 15,225,139,228, 72,201, 41, 1, 67,
- 41, 88,214, 0,131, 94, 11,101, 97, 33, 82, 83,210,145,145,145, 9,101, 81, 1,164,102,150, 8, 10, 14,133, 66,161,192,163, 91,
-231, 0,144, 67, 38,153, 65, 86,232, 19, 22, 26, 42,136,138, 47,130, 78,207, 66, 0, 29, 46, 29,255,165,196,160,215,246,202,184,
-127,224,108,109,235, 97, 3, 75, 79, 63,120,146,208,208,205,214,137,220,126,150,143,109, 63,174, 43, 29, 77,106, 40,141,102, 70,
- 37, 22, 35, 53,167, 24, 41, 73, 9, 20,172,241,116, 45,229,111,214,240,185, 46,188, 9,141,218, 27, 44,131,193, 32,169,231,238,
-129, 65, 99,134,226,187,239,190, 71,244,179, 4,252,248,237,234, 82,115,117,111,255,239, 38, 26,138, 23,111,219, 46, 78,127,188,
-124,196,119,207,147, 15,221,205, 99,212,218,234,223, 63, 37,179,243, 68,155, 17, 43, 79,168,139,114, 69, 70,141,138,127,104,251,
-136,157,149,105, 2, 0,143, 33,218,178,102, 65, 16, 66, 80,222, 44,248,221,130, 81,144,137,121, 32,132, 64,165, 49,224,253, 79,
- 87, 98,235,202,210, 39,171, 15,199, 79, 81, 85,149,206, 10, 70,136, 12,239, 90,191,247,162,141, 15, 15, 94,142,183,121,214,163,
- 71,187,130,224,224,224,124,169, 84, 10,185, 92, 14,115,115,115,152,155,155,195,210,210,178,198,188,151,125,118,168,169,207, 21,
-195, 48, 48, 55, 55,135, 84, 42,173,212,184,213,244,246,114, 51, 71,223, 1,205,218,247,219,217,161,247, 72,230,244,254, 31,217,
- 91,231, 15, 13, 80,103, 62, 57, 96,234, 57, 42,139, 58,220,237,223,191,127,163, 49, 99,198, 8,103,141,239,127,226,196,249,200,
-232, 95, 79,237,235,149,155, 95,228, 70, 41,133,165,133, 89,210, 59,157, 26, 29,106, 19,230,151,112,230,204,153,255, 99,239,188,
-195,163,168,218, 54,126,159,217,158,222,123, 35,141,144, 70,239,189, 74,175,130,160, 32, 96,161, 40,168, 96, 1, 84,164, 42, 40,
- 32, 96, 67,145, 46,189, 11,210, 91,232,189, 37,129, 64,122,239, 61,217, 62, 51,231,251,131,132, 47,242,166,108, 0, 95, 95,241,
-252,174,107,175,236,110,102,238, 61,231,204,153,153,123,158,211,196,173, 91,183,234, 8, 33,119,235, 74,103, 94, 94,206,250,147,
- 39, 79,125,221,185, 75, 87,172,222,176,181,127,116,244,189,254,113,177, 15,225,229,227, 15, 95,255,134, 80, 19, 91,156,140, 56,
-135,210,130,236,245,166,164,179, 42,141, 27, 55,246,104,218,180,169,103, 81, 81,145,118,246,236,217,141, 4, 65,248, 61, 60, 60,
-188,101, 88, 88, 88,102, 84, 84, 84,154, 41,121,191,184,105, 76, 46,128, 77, 13,186,142,223,153, 97, 40,122, 31,192, 98, 47,111,
-111,156, 62,123, 9,151, 47, 92, 89,149,103,238, 61,111,252,107, 99,223,110,224, 32,123,123,112,251, 6, 18,103, 59,115,108, 89,
-189, 76,178,255, 98,210,242,164,124,227,175, 0, 22,154,114,140, 42, 41, 40, 53,160, 67,168, 3,120,158, 66,160, 20, 28, 33,176,
- 50,147, 86,107,176,170,211,148,234,149,111, 76,158, 52, 49, 46,188, 73,179, 15, 94, 27, 55, 81,222, 44,192, 27, 87, 31, 22, 2,
- 32,112,176, 54, 71, 70, 70, 38,206,253,254, 43, 95,152,126,127,149, 68, 34,206,175, 79,121,166,221,216, 22, 88,249,222,205,205,
-109,194,173,200, 72,156, 57,115, 6, 14, 14, 14,168, 52, 87,213, 53, 17, 62,169, 89, 88, 88,122, 97,193,178, 95, 59,188, 61,122,
- 48, 6,116, 13, 67,196,181, 56,232,141, 34, 12,188,248,184,147,107,194,165,159, 21,239,143,244,215,191, 51, 44,168, 68,109, 84,
- 36,205, 73, 42,137,168, 58,137,236,147,154,148, 82, 61, 33,228, 40,128, 54, 0, 6, 19, 66,142, 81, 74, 91, 86,141, 60, 1,104,
- 12, 32, 12,192, 37, 74,105,130, 73,121,231,176,229,198,181,235, 14, 6, 94,196,185, 43,183, 67,186,119,104, 6, 42, 82, 92,187,
-118, 29,107,214,173,209,222,189,115,107,105,121,182,235,252,154, 38,183,173,169, 60, 77, 29, 69, 88,221,119,149,154,148,158,225,
- 45, 93,130, 87, 93, 60, 31,241,153,210,189, 37,130,251,125, 58, 40,253,246,239,131, 92, 67,123,195, 49,160, 3, 50,110,239,195,
-205, 11, 91, 14, 93,231,249,153, 42,145, 75, 46,207,189, 95,110,234,249, 94,137, 82,101, 62, 53,172,121, 23,164,166, 36, 33,241,
- 97,228, 70, 77,254,195, 12, 75,215,224,141,233,105,201,147,124, 67, 59,224,252,209,109,239,213,100,176,234,170,243,142,138,226,
- 85,103,206, 95, 28,149,190,243,119,151,210, 50,141,153, 84,202,169,149, 18,100,203,213,113,219, 77, 77, 39,141,142, 54, 56, 7,
-180, 31,246,218,196,207,255, 88,254,245,108,153,179,173, 18, 89,133, 90,148,168,141, 40,209, 24, 33, 33, 64,160,187, 37, 52,229,
- 37,184,124,104,147,145, 26, 10,134, 85,244, 71,173, 86,211, 41,108,240, 66, 66, 48,229,243,207,103, 65,162,176,118,247,235,241,
-169,129,243,115,133, 29,158,152,204,220, 30,240,235,241, 41,116,165,217, 3, 63,255,124, 86, 35, 74,105, 15,167,176,193,165,149,
-107, 17,214,148,247,252, 82, 3, 70,119,243,130,222,248,104,254, 48, 65,120,212,215, 78,172,152,213, 28,181,196,149,171,106, 82,
- 64,190,227,143, 75, 72,207, 46,132, 70,103,132,222,192, 67,207, 11,224, 56, 9,236,236,236, 16,232,215, 28,182, 54,214,200,201,
-203,199,181, 75,231,113,249,193,173, 4, 10, 44,204,179, 47,222,108,202, 49, 34, 82,139, 64, 23,103, 71,146, 93,170,135, 74, 41,
-193,229, 51, 17, 70, 0,235, 77, 49, 87,213,105, 22,171,139,190,157,185, 96,229,171, 63, 45,155,227,218,196,215, 26,169,121, 90,
-164,229,106, 80,170,229, 1, 80,240, 2,133, 94, 91,140,152,107, 71,178,120,168,191,197, 11, 78,205, 17, 44,153, 76,119,237,206,
- 3,229,204,185, 75,112, 47, 54, 1,107, 86,125, 95,174,171,135,185,170,142,117,239,248,110,171,223, 30, 21,243,150,206, 79,170,
-253,129,187,154,102, 65,145, 82, 28,184,156,245,120,217,143,202,166,194, 27,177, 69,117, 85, 26,217,146,169,205, 62,169, 52, 66,
-223,237, 77,191,172, 84,230,137, 41, 41, 41,133,155, 55,111,126,108,122, 36, 18, 9, 42, 71, 15,234,245,250, 58, 71, 21,217, 89,
- 43,194,198,244,109, 48,178, 38,115, 37,145, 72, 32,138,226,227,232, 85,125,155, 30, 45,156, 27,245,106,221,125,232,182,238,131,
-223,226, 78,238,251, 85,188,126,230,247,225,101, 57, 49,123,235,123,140, 10, 11, 11,163, 8, 33, 15,151, 46, 93,218,108,205,154,
- 53,126, 31,125,244, 81,252,175,139, 38,125,247,232, 9,238,209,178,136, 55,111,222,164,147, 39, 79,214,105,181,218,132,194,194,
-194, 27,166, 44,114,173,206,142, 89,186,254,167,111, 26,165,166,103,142, 11, 8,107, 3, 71,223,214,112, 13,104,131,130, 50, 3,
-174,196,166, 35, 62,250, 36,238, 93,220,181, 93,147,235,242, 85,125,210,219,172, 89, 51,111,153, 76, 54,144, 82, 26,100, 97, 97,
-225, 75, 41, 85, 72,165,210, 17,132,144,135, 60,207, 71,135,134,134,158,140,142,142, 54,121,205,176,164, 51,235,117, 13,186,142,
- 95,153,172,182,232, 26,159,165,110,158,172,182,184,169, 86,218, 76,207, 57,185, 66,231,242,210,210,229, 48,230, 71,237,218, 88,
-188,103,203,234,101,146,209, 19, 62, 20, 34, 11,172,223,151, 90,154, 29, 95, 60,222,228,145,251,224, 8,201,252,232,163,143,255,
-127,154, 6,242,168, 97,176, 98,202,134, 12, 83, 52, 42,214, 83,156, 97,230, 30,246, 67,228, 7,147, 22, 52,110,213, 97, 76,151,
- 62, 35, 57, 75,185, 5,142,239,253,153, 38,220, 57,189, 83, 74,133,207,212, 57,113, 9,207,122,145,208,235,245,127, 50, 86,166,
- 68,175, 0, 32,215,161,184,235, 31,199,206,140, 59,120, 36, 98, 81,223, 94, 29, 29,126,156,253, 10,190,249,101, 63, 44,205,149,
-160,162,128,145,221,189,135,223,219,218,123,160,151,139,202, 99,247,233,180,179, 83,150, 71,206, 80,171, 13, 15,234, 90,247,174,
- 98,126,161,203,132,144, 64, 0, 3, 9, 33, 34, 0, 11, 0,229, 0,202, 42, 26, 36,246, 81, 74,203,235,147, 79, 3, 47, 34, 49,
- 91,139,253,123,118,225,246,149,147,184,119, 47,166,244, 94,244,189,239,137,148, 46, 47,203,122,240, 84,145, 85,161,218, 17,131,
-168,126,100, 97, 45,148, 75,204,190,186,121,112, 73,215,134,221,223,107,231, 16,208, 1,118, 62,143, 60,101,113, 90, 36, 82,175,
-237,218, 95,154, 33, 31, 65,105,164,241,105,143,177,187,151, 95, 67, 81,162,192,197, 51,135, 64, 69,113, 21, 0, 80, 81, 92,117,
-235,252,161, 73,109,250,190, 9,123,103,159,166,149, 67,187,234,171,109, 38,229,139,255,216,240,213,206,196,196, 68,220,191,127,
- 31,177,177,177, 40, 40, 40,192,150, 45,231,138,235,213, 21, 32,238,226,113,151,160,206,189, 95, 29,255,193,129,161, 47, 15, 85,
-121,251, 6,112,141, 60,173,225, 96, 37, 69, 76, 92, 58,226, 34, 31,138,177,119,206,106,169, 38,103, 72, 78,236,133, 26,163, 35,
- 78,161, 35, 92, 56, 9,153,121,242,247, 71,107, 11,246, 28,252, 70,163, 79,166,124,212,214,222,193,174,218,235,120, 65,126,161,
- 98,238,220, 47, 26, 85,110, 95,215, 90,132,156, 68, 82, 58, 97,210, 84, 11,142,112,143,155, 1,105,101, 27, 25,125, 92,135, 1,
- 2,200,101,210, 58,235,232,184,161, 29,193,139, 34,202, 52, 6,148,169, 13, 40, 42,211, 34, 43,175, 8, 81,209,113,184,122,238,
- 48, 18,227, 98, 75,121,158, 63, 13,138, 61,185, 14,197,219,159,156, 88,183,214, 8, 43, 36,222,246,118, 86, 72, 44,212,194, 76,
- 46, 69, 70, 74, 44,111,224,181, 79, 61,201,122,222,173,223, 51, 93,194, 7,191, 52,254,157, 79,143,116,238,220,201,186, 73,243,
-150, 22,142,214, 86,144, 75, 9,226, 82,178,113,247,230,181,242,228, 7,183, 74, 4,163,166, 79, 94,228,239,207,188, 74,203, 63,
-214, 96, 25, 4,190,231,135,159, 46, 62, 38, 8,130,153, 84, 34,209, 24,169,216,231, 89,204,213, 95, 5,165, 98,218, 59,239,127,
-252,167, 7, 2,163, 32,154,189,245,206, 71,154,170, 15, 8,196, 40,152, 87, 70,174,234, 24,169, 39,201, 45,210,149,206,250,233,
-246,198,175, 55, 70,239, 2, 16,253,172, 35,251, 0,160,176, 68,127,219,161,215,142,193,165,106,158, 0,184, 87,141,102,121,247,
-238,221, 31,155,173,138,230, 58,147,111, 16, 10,149,249,164,110, 3,223,224, 78,238, 95, 35, 94, 59,189,127,196,211,152,171, 42,
- 55, 48, 3,128, 43,132,144,200,207, 62,251,172,149,139,139,139,203, 23, 95,124,161, 42, 41, 41,145,253,248,227,143,218,188,188,
-188,172,146,146,146, 75,148,154,222, 63,161,226,166, 57,222,204, 37,228,103,178,107,237, 75,118,206, 30,189,109, 29,189,130, 10,
-115,211,226, 74,242,211,142, 16, 17,199, 75,115, 98, 46,213, 55,173,183,110,221, 74,105,220,184,241, 62,137, 68,226, 41, 8,130,
- 35, 33,196,146, 82, 90,200,243,124,161, 40,138,153,245, 49, 87, 85, 77, 86,231,119,215,109,205,215,136, 10, 3, 81,109, 77, 58,
-179, 94, 7, 0,217,199, 62, 82, 3,248,221,165,219,140,161,251, 47, 38,126, 31, 85,104, 61, 53,231,204,215, 7,234,171,159,126,
-115,123,224,243,170,255,154,140,168, 52, 0,227, 44, 92, 26, 45,139,188,121,105, 14,161,144, 9,224, 23,170,179, 31, 94,127, 30,
-250, 50,153, 76,219,178,101,203,106, 71, 11, 42,149,202, 90,231,215,170,184,208,175, 33, 93,187,110, 56,114,242,220,184,195,199,
-207, 47,106,219,174,163,131, 74,233, 14, 31, 59, 3, 54,124,220,226,189,147, 55,115,175, 14,250,248,236, 79,241, 25,218, 59,148,
- 82,109, 61,235,105, 44, 33,164, 24,192, 96, 74,233,106, 66,200, 4, 0,247, 0, 68,214,219, 8,136,120,173, 93,187,214, 91, 8,
- 33, 82,202,139,223, 92,146, 73,182,106, 51,239,165, 61,141,161,168, 74, 19, 95,107, 76,152, 52,169,161,127,192,255,143, 34, 12,
-107, 96,133,209,227,222,110,232,227,215,240,241,119,141,188,106,127,160,162, 25, 55, 52,196,165,113,175,152, 99, 75,103, 59,196,
- 93,120,199,204,222,211,178, 60, 47,169,160, 48,233,250, 82,117,142,203,210, 39, 87,104,168, 47,137,177, 81,203,215, 46,155,241,
- 81,102,122,220,154,242,156, 7,143, 90, 29,114, 30, 68,154,187, 4,205,206,203, 74,251, 40, 63, 39,126,233,211,150, 69,121,121,
-121,198,230,205,155,109, 59,116,232,192,185,184,184, 32, 55, 55, 23,167, 79,159, 22, 69, 81, 76,175,175, 86,246,131,179,167, 73,
- 64,128,253,214, 13,197,223, 72,205,172,250,241, 2,220, 41,165,144,114, 36,211,160, 43, 62,146,107,171,249,152,222,185, 84,123,
-189, 20, 5, 66, 57,202, 85,174, 45, 40,138, 34, 89,242,195,166, 36,137, 76, 81,109,147,170, 96,212,155,139,162,104,242, 90,132,
-217,146,100,135,112, 99,112,221,163,248, 40, 16, 73,238,215,241,112, 74,143,182,239,251,122,111,158, 23,140,120,212, 63,177,242,
-149, 67, 41, 57, 5, 34, 28,203,179, 47,189, 84, 31, 83,245,167,251,188,193, 96, 11, 78, 14, 43,115, 35, 56, 16,148, 20, 23, 43,
-157, 4,197,189,103,169, 75,217,145,251,163, 72,215,174, 62,250, 19,167,198, 70,156,187, 48,130,138,162,175, 64, 1, 80,146,168,
- 55,104,119,230, 88,231,109,124,218,244,254,211, 32,207,120,253,168,119, 8,241,159,160, 73, 8,145, 3,112, 4, 32, 84, 93,254,
-230,121,164,179,182,181, 5,159, 37,239, 86,110, 33, 29,149, 42,243,143,213,234,210, 53,234,236, 7, 7,158,103,121, 18, 66,108,
-148, 74,101,115, 75, 75, 75, 89, 94, 94,222, 21, 74,105,241,139,120,220,171,210,233,141,245,142,221,123,183,255,224,248, 31, 87,
- 87, 86, 52, 31, 62,198,115,196,114,213,232,126,157,167,111,218,115,112,249,147,163, 8, 95,132,188,255, 85,154,164,107, 87,169,
-115,161,245, 56, 65, 16, 23,118,111, 88,170,206, 74,136,153,124,238,110,238, 21, 74,105,233, 51,214,207, 87, 43, 35, 88,148,210,
-173,255, 43,121,119, 14, 31, 50, 31, 4, 33, 38,139, 80,220,203,137,220,247, 69,157,215,144,208, 80,185,121, 46,236,212,121,142,
-249,245, 53, 86,127,203,113, 39, 68,210,184,113,227, 78,114,185,220, 91, 16, 4,115,189, 94,175,214,104, 52,137, 73, 73, 73, 23,
-107, 90,144,252,175, 78,167, 75,227, 33,203,101, 50,217,251, 0, 96, 52, 26, 87,102,223,221, 55,173,182,125,107,218,254,191,114,
- 63, 26, 49, 66, 66,119,238, 20,254,138, 99,228,209,124,120,145,209,200,219, 84,126,150,203,164,197,105, 55,119,217,254, 93,117,
-137, 25,172,127,225,141,129,105, 50, 77,166,249,124, 53,107, 95,172,155,149, 39,211,252,235, 53,221, 67, 7,122, 1, 64, 70,244,
- 1,147, 70, 27, 87,183, 61, 43, 79,102,176,106, 67,202,138,128,193, 96,252,183, 49,197, 92, 49, 24,127, 37,166, 26,171,167,221,
-158,193, 32,120, 98,169,149, 42, 23, 64,147,157, 41, 33, 36,252, 41, 46,176,145, 76,147,105, 50, 77,166,201, 52,153, 38,211,252,
-119,105,214,165,253,162, 68,198, 88, 19, 33,211,100,154, 76,147,105, 50, 77,166,201, 52,255,118,205, 23, 13,142, 21, 1,131,193,
- 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,
-193, 96, 6,139,193, 96, 48, 24, 12, 6,227,127,133,191,116, 20, 33,131,193, 96, 48, 24, 12,198,191, 17, 22,193, 98, 48, 24, 12,
- 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48, 24,
-204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,227,239, 55, 88,
-132,144,112,166,201, 52,153, 38,211,100,154, 76,147,105, 50, 77,102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,
-131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24,140,
-191, 9, 2,160,218,145, 0,148,210, 72,147, 69,158, 98, 52, 65, 93,250, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52,
-235,210,174,143,255,248,159, 54, 88,148,210,191, 78,156,144,240,231, 93, 80, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241,
- 52, 95, 52, 88, 19, 33,131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,
-131,197, 96, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,227,127,134,191,116, 20, 33,131,193, 96, 48, 24, 12,198,
-191, 17, 22,193, 98, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176,
- 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96,
- 48, 24, 12, 6,227,239, 55, 88,132,144,112,166,201, 52,153, 38,211,100,154, 76,147,105, 50, 77,102,176, 24, 12, 6,131,193, 96,
- 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25,
- 44, 6,131,193, 96, 48, 24,140,191, 9, 2,160,218,145, 0,148,210, 72,147, 69,158, 98, 52, 65, 93,250, 76,147,105, 50, 77,166,
-201, 52,153, 38,211,124,241, 52,235,210,174,143,255,248,159, 54, 88,148,210,191, 78,156,144,240,231, 93, 80, 76,147,105, 50, 77,
-166,201, 52,153, 38,211,124,241, 52, 95, 52, 88, 19, 33,131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,204, 96,
- 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,227,127,134,191,116, 20,
- 33,131,193, 96, 48, 24, 12,198,191, 17, 22,193, 98, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,
-131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12,
- 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,227,239, 55, 88,132,144,112,166,201, 52,153, 38,211,100,154, 76,147,105, 50, 77,
-102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,
-193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24,140,191, 9, 2,160,218,145, 0,148,210, 72,147, 69,158, 98, 52, 65,
- 93,250, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52,235,210,174,143,255,248,159, 54, 88,148,210,191, 78,156,144,240,
-231, 93, 80, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52, 95, 52, 88, 19, 33,131,193, 96, 48, 24, 12, 6, 51, 88, 12,
- 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 96, 6,139,193, 96, 48, 24,
- 12, 6,227,127,134,191,116, 20, 33,131,193, 96, 48, 24, 12,198,191, 17, 22,193, 98, 48, 24, 12, 6,131,193, 96, 6,139,193, 96,
- 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193,
- 96, 48,131,197, 96, 48, 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,227,239, 55, 88,132,144,112,166,201, 52,153, 38,
-211,100,154, 76,147,105, 50, 77,102,176, 24, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,131,197, 96, 48,
- 24, 12, 6,131,193, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24,140,191, 9, 2,160,218,145, 0,148,
-210, 72,147, 69,158, 98, 52, 65, 93,250, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52,235,210,174,143,255,248,159, 54,
- 88,148,210,191, 78,156,144,240,231, 93, 80, 76,147,105, 50, 77,166,201, 52,153, 38,211,124,241, 52, 95, 52, 88, 19, 33,131,193,
- 96, 48, 24, 12,198,115, 70, 90,221,151,178, 54, 95,102,243, 60,239, 12, 0, 82,169, 52,199,120,245,115,215,218, 68,188,220,220,
-122, 10,192,175, 0, 32, 1,222, 78,205,200, 56, 94,141,230,113,158,231,237, 42, 52, 11,141, 87, 63,127,169, 54, 77, 89,235,133,
-199,254,180,253,149,207,122, 85, 99,161, 57, 89,235,133,153, 79,164,213,205,228,220, 83, 42,254, 55,210,249, 79,209,252, 55, 35,
-111,251,101,182,209,248,168, 30,201,100,210, 28,195,149,218,235,145,188,205,194,204, 63,109,127,249, 51,151, 39,183, 81,182, 95,
-148, 98, 52,242,110, 0,160, 84, 40,114, 3,125, 92, 86,212,166, 25,159,154,243,129, 70,171,115,170,208,204,212, 93,156,229,253,
-143, 61, 55, 77,196,213,213,181, 37,199,113,159, 19, 66,172,171,124,125, 39, 61, 61,253, 3, 86, 43, 25, 12,198, 11,103,176,120,
-158,119,190,177,119, 14,202,117, 64,143,215, 23, 58,251, 13, 89,189,229,201,109,140,218, 66,133,250,225,254, 80,137,177,200,206,
-214,140,218, 61,124,248,144, 3, 0,119,119,247, 95, 1,120, 87,163,105,119, 99,239, 28,168,245, 64,231, 81,243,236,154,250,248,
- 88,151, 16,242,161,153,153, 89,119,173, 86, 27, 6, 0, 42,149, 42, 74,163,209,156,178,166,116,217,147,219,215,148,129,170,105,
-237, 62,102,161,115,208,208, 95,223, 19, 4, 65,161,139,223,209, 69, 44, 77,150, 74, 4,253, 15,125, 50, 51, 15,255, 2, 8,166,
- 20, 72,213,223,237, 50,242, 83, 7, 47, 55,183,158,102,230,230, 45,205, 45, 45, 59, 9,130, 16, 34,138, 34, 68, 81,188,167, 41,
- 47, 63,199, 27,141,215, 5,163,218,225,198,190,175,196,218,210,249,100, 94, 90, 0,210, 28, 87,215, 17,102,150,150, 93, 37, 18,
- 73, 7, 0, 16, 4,225,130,166,172,236,140,115, 86,214, 78, 83,242,110,106,249, 60,237,246,255, 54,140, 70,222, 57,225,232, 28,
-232,140, 64,243,151, 23, 57, 55,121,109,227, 86, 0,208,231,220,118, 41,123,248,123, 27, 0,176, 8, 24,112, 69,233,218, 60, 27,
- 0,164,201,153,206, 15, 14,126, 6,157, 17, 8, 25, 48,207,185, 58, 77,189,222,224, 21,123,104, 54,116, 70,224,173,185,187,220,
- 62,158, 52,220, 28, 0, 78,239,251, 37,224,216,174,149,253, 1,224,165,225,239,255,209,109,200,196, 56, 0, 88,242,243, 46,183,
-205, 95, 14,135,206, 8,132, 15, 94,224,245,180,231, 38,175, 43,150, 23, 61, 56, 24,104, 44,201,176,243,178,144,186,214,247,220,
-180, 1,108,202,128, 41, 68, 34,233, 24, 24, 24,216, 2, 0,226,226,226,110,136, 60,127,222, 18,248,225,121,214, 37,137, 68,242,
- 94,122,122,250,192,170,223,121,120,120,176, 10,201, 96, 48, 94, 76,131, 5, 0,229, 58, 32, 34, 22,232,210,182, 9, 38,140,238,
-111, 89,245,127,251,214, 47,246, 74,143, 58, 22,178,100,219, 10, 73, 80, 80, 16, 30, 62,124,104,210,143,169,245,192,153,135,128,
- 82,155,104,165,150,201,226,231,126,254,185,117,199,142, 29,165,238,238,238, 0,128,156,156,156,182,231,206,157,107, 57,111,222,
-188,201, 74,109, 98,161, 90,143,210, 51, 38, 72, 87,166, 53, 44,168, 1, 62,155, 58,202, 6, 0, 86,124,184,179,229,161,139,183,
-237, 19, 19, 19,123,124,245,213, 87,249, 30,151, 46,173,178, 20,197,117, 49,217,217,169,166,164,115,251,225,155,102,129,134,227,
-126,195,223,120, 99,143,183,183,183,185,167,167, 39, 81,169, 84,144, 72, 36, 40, 43, 43,115,143,137,137,233,121,235,214, 45,205,
-217, 75,251,101,183,111, 14, 75,200,144, 53,215,152,146,119, 57,159,167, 42,111,216, 48,122,120,223,190,158, 3, 6, 12, 80,249,
-250,250, 2, 0, 18, 19, 19, 27,254,241,199, 31,175, 30, 58,116,232, 11, 57,159,199,171,245,208,214,149,247, 74, 77, 0,144, 1,
-237,237,157,157, 71,203,100,178,112,158,231, 61, 42,162, 11,233, 70,163, 49,178, 32, 39,103,243,147,219, 51,254, 19,157, 17,184,
-151, 9,244,236,212, 28, 99,134,245,180, 0,128, 25, 35,191,108,155,156, 24, 43,215,235,245, 8,106, 20,210, 97,193,162,111,143,
-130,227,240,219,158, 19,143,183,175,213,216, 82, 14, 15,115,128, 59,247, 19, 48,231,203,239,104,214,157, 93,173,248,194,232, 94,
-249,121,121, 82, 0,112,112,116, 28,177,125,235,230,227,174, 77,134, 95,139,203, 46,127,188,189, 41,245,189,186,115,243,208,182,
-239,220,211, 35, 79,133,254,116,116,141,204,219,219, 27,145,145,145,245, 58, 55, 81, 28, 99,101,238,230,118,111,238,199, 31,187,
-118,238,220, 25, 22, 22, 22,144,201,100, 48, 26,141, 61, 47, 92,184,208,115,206,156, 57,147, 75,138, 99,202, 77, 61, 55,235, 70,
-182,204, 37,168, 75,183,161,131,250,185,117,239,210, 22,195,250,116, 96, 21,145,193, 96,188,184, 6, 75, 42,149,230,244, 26,251,
-149,115,167, 54,225,184,118,251, 65,113, 98, 74, 86, 89,229,255,138,238,239,109, 56,105,104,211,240,213,135, 14,194, 96, 48,224,
-226,197,139,184,126,253, 58, 46, 94,188, 72,151, 45, 91,166,145, 0,111,215,160, 89,216,121,212, 60, 59,165, 46,213,178,133, 67,
-170,239,246,173,103, 36, 26,141, 6, 17, 17, 17, 40, 44, 44,132, 82,169,132,135,135, 7, 58,117,234, 36, 61,125,250,180,253,200,
- 87, 71,219,188, 52,228,205, 4,157,210,171, 76, 42,149, 22,214,152, 1,169, 52,167,199,235, 11,157, 67, 27, 54, 64, 92, 82, 70,
-241,103,139,214,148,137, 2,149,106,147,211, 12,103,207,158, 69,179,102,205,176,125,251,118,135,194,194,194,217, 27, 54,108,248,
-220,229,251,245, 43,179,211, 98, 62,172, 69,175,176,243,168,121,118, 65,194, 73,239,157, 91,214,201,111,223,190, 45, 95,181,106,
- 21, 10, 10, 10,160, 80, 40, 96, 99, 99, 3, 87, 87, 87, 4, 5, 5,145,201,147, 39,155,119,235,246, 16,159,125,248,134,119,150,
-221,208,152,154,210, 89,169, 41,215,103,154, 55,148, 92, 15,248,117,227, 70,174,117,235,214,164,234, 54,222,222,222,232,218,181,
-171,106,232,208,161, 1,147,223,157, 42,246, 28, 58, 49,206,160,112, 83,215,165,137,242, 84, 51, 7,245, 37,247,158,163, 70, 29,
-152, 59,119,174,173,155,155, 27,204,205,205, 1, 0,197,197,197,158, 73, 73, 73,109,231,204,153, 51,252,202,157,237,210,206, 3,
- 82, 51, 96,225,165,169,173, 60,255,173,200,100,210,156,202, 72,148,149,133, 89, 97,106, 90,118,249,163, 40,148, 30,122,189, 30,
- 58,157, 14,239, 76,158, 40,121,251,229,214,129, 62,157,222,187,149,152,158, 93, 16,114,226,178,125,229,190, 53,104,230,133, 14,
- 90, 96, 7, 0, 92, 73, 66,121, 97,210,177,183,102, 78,155,230,225,234, 58, 9,114,185, 28, 0,176,126,221, 58,105,126,126,126,
-223, 5, 11, 22,132, 83,139, 30, 37,161,131, 22, 88, 84,236, 91, 88,223,115,179,240,193, 65,191, 47,167,244,110,250,235,162,131,
- 16, 4, 1,151, 47, 95,198,217,179,103,241,237,183,223,210,195,135, 15, 23, 91, 91, 88,212,122,110,162, 56,198,170,163, 91,150,
-255,215, 95,239, 38, 10,133, 2,251,247,239,199,253,251,247,193,113, 28,154, 52,105,130, 49, 99,198,160,103,207,158,174, 19, 38,
- 76,164,157,251,140,140,135, 77,163,210,103,169, 75,132,204,227,156,195,154,190, 55,101,194,107,110, 47, 15,238,141,239,190,255,
-137, 25, 44, 6,131,241,226, 64, 41,253,207, 23, 64,124,135,172,222,186,243, 6, 61,232, 59,100,245, 86, 10, 16, 10, 16, 37,224,
-221,189,123,119,125, 89, 89, 25,189,125,251, 54, 29, 49, 98, 68,225,140,143, 63, 94,187,113,253,250,185, 58,181,250,157, 22, 77,
-155,142,161, 21, 35, 19,171,213,180,181,181,246,247,247,207, 77, 77, 77,165,135, 15, 31,166,243,230,205,163, 91,182,108,161, 71,
-142, 28,161, 39, 79,158,164, 71,142, 28,161, 59,118,236,160,183,111,223,166,177,177,177, 52, 32, 32, 32,215,215,214,214,186, 22,
- 77,142, 2, 92,224,208, 95, 62,220,117, 93,152,219,112,232,175, 31, 80,128, 11,112,117,109,212,171, 87, 47, 97,247,238,221,116,
-243,230,205,116,227,198,141,244,206,157, 59, 52, 47, 47,143,122,248,248,231, 86,238, 87, 83, 58, 41, 64,154, 55,111,158, 91, 84,
- 84, 68,189,189,189,169, 92, 46,167,206,206,206, 52, 40, 40,136,182,109,219,150,246,233,211,135,190,250,234,171,116,246,236,217,
-180,168,168,136,250,248,248,100, 87,238, 87,147,102, 91, 15, 15, 85, 64, 64, 64,202,221,187,119,105, 77,104,181, 90,154,151,151,
- 71, 79,157, 58, 69, 3, 2, 2, 82,218,122,120,168,106,211,148, 1,205,195,195,195,115,243,242,242,168, 40,138, 84,173, 86,211,
-252,252,124,154,159,159, 79, 11, 11, 11,169, 94,175,167,162, 40, 82, 81, 20,105, 76, 76, 12,245,247,247,207,145, 1,205,107,212,
-252, 55,191, 42,235,196, 19, 47, 15, 23,151, 62,174,174,174,154,221,187,119,211,244,244,116,186, 97,195, 6,202, 1, 95,254,199,
-182,213,104, 14, 15, 25, 46,111,222,124,130,153, 68, 98,214,191,125,251,246,194,197,139, 23,233,141, 27, 55,232,204,153, 51,233,
-192,129, 3,233,160, 65,131,232,220,185,115,105, 74, 74, 10, 77, 77, 77,165, 47,189,244,146, 32,145,152,245,111,222,124,130,217,
-240,144,225,242,250,156,155, 42,192,107,192,128, 1, 26,131,193, 64,227,227,227,105, 88, 88, 88,154, 4, 24, 45, 7, 66,252, 1,
- 69, 93,245,211, 26,176,117,115,115,203,188,116,233, 18,221,189,123, 55,245,241,241,201,149, 0,227,149,128,175, 18,240,149, 0,
-227,253,252,252,114, 47, 93,186, 68,243,242,242,168,183,183,119,166, 53, 96,251,180,117, 9,152,203, 57,135, 13, 89,183,224,251,
-221, 52, 38,173,156, 46,248,126, 55,117, 9,234,154, 66, 41,165,110,110,110,199, 89,157,100, 47,246, 98,175,127,250, 75, 90, 31,
- 51,198,153,153,205, 89,180,104,145, 92,163,209, 96,254,252,249,185,239, 76,154,180,208,209,217,217, 32,147,201, 32, 83, 42,235,
- 22,176,182,254, 96,214,172, 89,182,122,189, 30, 55,111,222, 68,139, 22, 45,160, 82,169, 32,147,201, 32,151,203, 33,149, 74,225,
-234,234,138,188,188, 60,184,184,184, 96,242,228,201, 54, 63,124,247,221, 7, 40, 42,154, 95,155,172, 40, 80, 41, 0, 8,130,160,
-240,114,119,159, 16,214,184,241,178,201,147, 39,115, 22, 22, 22,208,233,116,208,233,116,136,137,137,129,131,131, 3,204,205,204,
- 76,202, 51,199,113,156,165,165, 37, 34, 34, 34,176,110,221, 58, 36, 36, 36, 32, 35, 35, 3,214,214,214,104,214,172, 25, 66, 66,
- 66,208,161, 67, 7,196,198,198,130, 16, 66,234,210,203,150, 72,166,140, 25, 53,202, 57, 60,188,250, 41, 69,116, 58, 29,138,138,
-138, 80, 84, 84, 4, 23, 23, 23,244,237,219,215,249,192,254,253, 83, 0, 44,173,110,123,115,192,213,183, 97,195, 3, 87,175, 94,
-117,228, 56, 14, 17, 17, 17, 80,171,213,208,106,181,224,121, 30,132, 16,168, 84, 42,180,107,215, 14, 14, 14, 14,104,216,176, 33,
-246,238,221,235,212,171, 87,175, 63,204,179,179,155,171,129, 76,246,120, 81, 55,105,217,217,199, 90, 0, 14,175,189,246,218,225,
- 59,119,238,116, 30, 61,122, 52,178,179,179, 63,149,204,156, 89, 40, 0,203,107,219,119,231,189, 93,188, 39, 96, 97,239,228,244,
-203,226,197,139,185,172,172, 44, 76,159, 62, 61, 63, 35, 53,117,150, 10,184, 4, 0,127,252,254,123,187, 77,155, 54, 45,218,188,
-121,179,195,198,141, 27,185, 22, 45, 90,172,206,185,185, 58,244, 6, 80, 92,159,116,106,129,247, 86,172, 88,161,210,106,181,232,
-213,171, 87,188, 58, 49,177, 9, 15,104, 76,221,191, 12,152, 50,247,227,143, 93,149, 74, 37, 62,250,232,163,188,188,228,228, 48,
- 30,200,173,178, 73,146, 69, 66,194,225,215, 95,127, 61,234,206,157, 59,142,203,151, 47,119,125,121,232,208, 41, 0, 22,154,250,
- 27,255,223,161,157,179,118, 9,242,111, 56,164, 79, 95,151, 70,126,206,216,189,255, 40,126, 88,189,101, 61,138,226,126,241,240,
-240,152,194,113,220, 18, 86,243, 24, 12,198, 11,217, 68, 88, 19,118,118,118, 45, 3, 2, 2,112,242,228, 73, 4, 7, 7,239,117,
-174, 52, 87, 50, 25, 4,161,238, 62,228,102, 22, 22, 61, 58,119,238, 44,189,120,241, 34,124,125,125, 97,102,102,246,216, 88, 85,
-154, 44,153, 76, 6, 87, 87, 87, 20, 23, 23,163, 99,199,142,178,117,235,214,245, 0, 48,191, 46,237,204,164, 24, 75,196,175,123,
-109,222,130, 5,254, 45, 91,182,132,193, 96,120,100, 68,204,205,161,211,233, 32,147,201, 96, 48, 24,160,213,211, 18, 83,242, 42,
- 8,130, 32,145, 72,224,237,237,141, 47,190,248, 2, 90,173,246,113,179, 78, 73, 73, 9,138,138,138,112,243,230, 77, 36, 38, 38,
- 66, 20,197, 58, 39, 19, 51,183,180,236, 59,104,208, 32, 69,117,255,211,235,245,143,205, 85,113,113, 49,180, 90, 45,154, 54,109,
-170, 56,117,234, 84,223,154, 12, 22, 81,169,134,111,220,184,209, 89,161, 80, 64,171,213,226,225,195,135,136,139,139, 67, 76, 76,
-140,174,160,160,128,183,180,180, 36,110,110,110,146,226,226, 98,197,235,175,191, 78, 74, 75, 75, 1, 0, 67,135, 14,117, 88,191,
-118,237, 43,168,195, 28, 48,254,159, 27,128, 46, 64,175, 31,216,186,117,235, 83,215,174, 93,107,241,254,251,239,227,206,157, 59,
-223,152,111,223,126, 86, 13,220,170,181, 94, 2,147,151,204,152,225,102, 97, 97,129, 49, 99,198, 20,168, 83, 83,155,240, 64, 86,
-149, 77, 30, 56, 36, 38, 30, 25, 59,118,108,228,157, 59,119,236,150, 47, 95,238,250,202,240,225,147, 1, 44,170, 79, 26,109,108,
-108, 90,187,186,186,226,200,145, 35, 72, 73, 76,156, 81, 31,115, 5, 0, 68, 34,233,216,165, 75, 23,236,219,183, 15,105,201,201,
- 51,158, 48, 87, 0,128,114, 32, 87, 26, 31, 63, 99,253,250,245,235,222,120,227, 13,112, 82,105, 71,240,188,201,191, 81, 93,135,
-246,119,102, 44,193,222, 35,151,215,231, 68, 53,126,139,210,189, 34,128,171,172,198, 49, 24,140, 23,129,122,205,131,229,231,231,
-231,167, 84, 42,145,148,148,132, 54,109,218, 36,202, 20, 10, 40, 21, 10, 40,205,204, 76,123,202,214,106, 27,187,186,186,162,164,
-164, 4,142,142,142,144,203,229,144,203,229, 80, 40, 20, 80, 40, 20,143, 63, 91, 89, 89,129,227, 56,120,120,120, 64,171,213, 54,
-174, 75,151, 47,126,232,124,116,195,140,119, 15,237,221,228, 63,116,232, 80,184,187,187,193,195,195, 29, 22, 22, 22,144, 74,165,
-240,246,246, 70, 64, 64, 0,214,174, 93, 11, 98,221,240,138, 41,105,173,106,154, 36, 18, 9, 4, 65, 64,118,118, 54, 98, 98, 98,
-112,231,206, 29, 92,186,116, 9, 55,111,222, 68, 89, 89,153, 73,121, 87,171,213,205,170, 11,116, 61,105,174,138,138,138,144,155,
-155,139,184,184, 56,148,150,150, 54,175,209,236, 58, 56, 12, 11, 15, 15,151, 0,128, 74,165,130,159,159, 31,126,254,249,103,254,
-248,145, 35,175,152, 93,187,102, 43,156, 58,101,179,245,183,223, 94,121,243,205, 55,133, 43, 87,174,160,164,164, 4, 15, 30, 60,
-128,147,147,147, 84,105,102,246, 10,171,250,245, 35, 14, 40,183, 40, 45,237,211,190,125,251,132,226,226, 98, 44, 89,178,132,147,
- 90, 89,253, 50, 17,144,212,122,130, 73, 36,157,186,117,235,134,253,251,247, 35, 45, 57,121,102,254,159,205, 21, 0, 32, 31,200,
- 74,140,139,155,177,126,253,122,244,237,219, 23, 82,169,180, 83,125,211,215,182,109,219,112, 74, 41,238,222,189, 11, 5,112,185,
-190,251, 7, 6, 6,182,176,180,180,196,253,251,247, 33, 3,206,214,180,157, 12, 56,123,243,230, 77,152,153,153, 33, 52, 52,180,
-101,253,126, 69,182,204, 37,168, 75,230, 59, 51,150, 96,207,145, 11, 0,128,125, 7, 14,103, 63, 50, 87,115, 68, 86,203, 24, 12,
-198,191,214, 96, 1,143,250,108, 73, 36, 18,200,165, 82,152, 41,149, 80, 40,149, 80,200,100,166, 63, 41, 19, 2,165, 82,249, 31,
-166,170,210,104, 85,254,181,176,176, 48, 89,211,152,121,190,243,184,177,175, 43, 44, 45, 45, 33, 8, 60,164, 82, 41,204,205,205,
-225,234,234,130, 70,141, 26,161,160,160, 0, 3, 7, 13,209, 38, 23, 72, 15,200, 60,123,220,121,154,130,226,121, 30,229,229,229,
- 40, 44, 44, 68, 65, 65, 1, 74, 74, 74,160,213,106, 97, 66,235,224, 99,159,150,146,146,130,109,219,182, 33, 63, 63,191, 70,115,
- 21, 31, 31,143, 77,155, 54, 33, 49, 49, 17, 18,137,196,228,227,211,163, 71, 15, 28, 60,120, 80,210,181, 71,143, 53,201, 62, 62,
-153,201, 62, 62,153, 93,123,244, 88,243,251,239,191, 75, 60, 60, 60,144,146,146,130,155, 55,111,162,160,160, 0,162, 40, 18, 86,
-245,235, 79, 6, 80,168, 46, 40,120,227,211, 79, 63,165,150,150,150, 88,186,116,105,179,181,192,171,181,237,227, 31, 16,208,194,
-210,210, 18,247,238,221,131,121, 45,198,197, 28, 56,123,227,198, 13,152,153,153,161, 81, 72, 72,203,167, 57, 47, 69, 81,132, 32,
- 8, 32, 64,189,205, 10, 33, 4, 50,153, 12, 28,247,215,204, 61, 76,200, 60,142,183,107,250,222,148, 41, 83,221,222,155,250, 14,
- 78, 69, 60,242,128,146,178,248,135,204, 92, 49, 24,140, 23,145,122, 53, 17,198,197,197, 37,106,181,218, 16, 95, 95, 95, 68, 69,
- 69,249,134, 53,110,124, 71, 38,147, 65, 41,147,213,254, 24, 95,129, 74,165,186,155,157,157,221,193,211,211, 19, 70,163,241,113,
-147, 96,101, 51, 97,229,103, 0, 80, 42,149,184,119,239, 30, 84, 42,213,221, 58, 51, 33,148,249,248,249,249, 33, 43, 43, 27, 74,
-165, 18,118,118,182, 48, 51, 51,131, 82,169,194,162, 69,139,196, 53,171, 87,255,168, 12,155, 82, 52,237,205, 25,244,234,194, 95,
-255,150,130, 54, 55, 55,191,235,235,235,219,206,194,194, 2,123,247,238, 69, 98, 98, 34,138,138,138, 30,247,155,210,104, 52,208,
-233,116, 80,169, 84, 8, 13, 13,133,189,189, 61,162,162,162,106,204,123, 97,126,254,158,200,200,200,118,173, 90,181,122, 92,244,
- 93,187,118, 37, 93,187,118,117,172, 18, 53, 67,126,126, 62,110,223,190,141,136,136, 8,240, 60,143,232,232,104, 65,167,209,108,
-103, 85,255,233,208, 2, 23, 36,235,215,175,155, 52,105,210,155, 29, 58,116, 0, 5,250, 1,248,173,198, 39, 24,142, 35, 82,169,
- 20,132,144, 90,141, 15, 1,196,202,101,171, 72, 61, 92,123, 37,151, 46, 93,138, 20, 4,161, 67, 80, 80, 16,116, 64,107, 0, 7,
-235,179,127,108,108,236, 13,163,209,216,179,105,211,166,216,179,115,103,103, 0, 73,213, 62,204, 0,157,155, 55,111, 14,141, 70,
-131,232,232,232,235,166,154, 43,231,176,187,107,166, 76,120,109,252,203,131,123, 99,247,254,163,216,119,224, 72,234, 79, 95,127,
-236, 69,169,104, 96,181,138,193, 96,252,235, 35, 88,197,197,197,215,238,223,191,143,182,109,219, 34, 54, 62,126,168, 78,163,145,
- 87, 70,177, 56, 73,221, 22, 75, 83, 94,126,242,252,249,243,124,179,102,205, 80, 86, 86,246,216, 84, 85,141, 94, 85, 26, 46, 11,
- 11, 11, 28, 62,124,216,160, 41, 47, 63, 89,151,174,192, 11, 34,199,113, 32,132, 64,167,211, 33, 51, 51, 11, 90,173, 14,191,254,
-250, 43,214,174, 94,253,106, 90,102,230, 7, 80,218,105,254,138, 2, 52,245, 94,168,209,104, 78,158, 60,121,210,232,235,235,139,
-113,227,198, 97,218,180,105,152, 54,109, 26, 38, 78,156,136,241,227,199, 99,244,232,209, 24, 54,108, 24,218,180,105, 3, 39, 39,
- 39, 36, 36, 36, 24, 53, 26, 77,141,121,167, 90,237,174,177, 99,199,230,104,181, 90, 8,130, 0,157, 78, 7,141, 70,243, 56,202,
-118,243,230, 77,236,217,179, 7,171, 87,175,198, 31,127,252,129,242,242,114,148,148,148,224,198,141, 27, 69, 18,163,113, 7,171,
-250,207,116,210,236, 62,127,254, 60,236,236,236,224,238,233,217,165,214,135,146,216,216, 91,130, 32,160, 73,147, 38, 40, 7,106,
-220,182, 28,232,210,172, 89, 51,104,181, 90,220,139,142,190, 89,223, 52,149,150,150, 94, 77, 72, 72, 64,215,174, 93,225,230,233,
-185,204, 5, 48,171,207,254, 34,207,159,191,112,225, 2, 94,127,253,117,248,248,249,125,109, 1, 56, 61,185,141, 5,224,228, 27,
- 16,240,245,248,241,227,113,236,216, 49,136, 60,127,190, 38, 61, 87, 87,215,150,238,238,238,191,123,120,120, 68,184, 4, 28, 79,
- 26,218,167,237,248,170, 29,218,105, 81,220, 8, 15, 15,143,205, 28,199,125,196,106, 20,131,193,248,215, 27, 44, 81,163,153, 55,
-107,214, 44,189, 68, 34,193,187,239,190,235,244,195, 79, 63,205,219,177, 99, 71,171,219,119,239,186,234,117,186,186, 29, 86, 73,
-201,138, 5, 11, 22, 20, 25, 12, 6, 4, 7, 7,163,160,160, 0,130, 32, 64, 34,145, 64, 42,149, 66, 34,145,128,227, 56,152,155,
-155, 35, 50, 50, 18,219,183,111, 47, 65, 73,201,138, 58,211, 37,138,119,247,238,221, 11,169, 84, 74, 85, 42,213, 99,211,243,221,
-119,223,229,188,153,153,185, 7, 0, 36, 18,137, 30, 0, 56, 9, 49,169, 87, 46,199,113,117,118, 92, 87, 40, 20,149,157,251,235,
-238,228,206,243, 43,126,254,249,231,210,135, 15, 31, 66,173, 86, 63,110, 26, 44, 43, 43, 67,105,105,233,227,207,149, 38,241,236,
-217,179,165,230, 60, 95, 99,222,213, 64, 86,226,195,135, 3, 91,181,106,149,159,148,148,132,178,178, 50,196,198,198,226,210,165,
- 75, 56,120,240, 32, 78,159, 62,141,184,184, 56,232,245,122,216,218,218,162,164,164, 4,191,255,254,123,137,174,172,172,183,186,
-154,126, 64,140,255,199,203,205,173,135,139,179,115,170,147,163, 99,186,151,155, 91,143,106,140,198,131, 7, 15, 30, 64, 16, 4,
-248,251,251,219,215,214, 15, 75,224,249,243,151, 46, 93,194,232,209,163,225,234,225,177,200,169, 26,227,226, 4, 56,185,121,122,
- 46, 26, 55,110, 28, 78,158, 60, 9,161, 22,227, 82, 19, 42,224,187,143, 63,254, 88, 35,151,203,177,125,251,118,127,235,192,192,
- 24, 41,240,154, 2, 8, 14, 0,228,117,237,111, 9,252, 48,123,246,236, 44, 0,216,188,121,179,163, 91, 64, 64,148, 20, 24,167,
- 2, 26,168,128, 6, 82, 96,156, 91, 64, 64,212,246,237,219, 29,121,158,199,180,105,211,178, 44,129, 31,106,210,147, 72, 36,239,
-101,100,100, 12, 76, 79, 79,239,156, 21,123,209,235,167,175, 63,198,169,136,203,248, 97,245,150,245, 57, 81,141,223,202,206, 78,
-187,154,158,158, 62, 38, 45, 45,141, 45, 22,203, 96, 48, 94, 72, 72,101,179, 68, 85,100,109,190,204, 6,168,115,151,182, 77,112,
-237,118, 76,177,131,157,205,145,202,255, 21,221,223,219,240,149,174, 62,205,230,205,155, 7, 66, 8,238,223,191,143, 59,119,238,
- 0, 0,150, 44, 89,162,230, 40, 29, 90,185,222, 89,213,213,182, 43,215, 59, 83,234, 82, 45,155,219, 37,248,253,182,113,189,196,
-202,202, 10,101,101,101,144, 72, 36, 80,169, 84,176,176,176,128, 82,169,196,157, 59,119,240,250,184, 55,132, 56,190,233,227,137,
- 70, 43,215, 59,251,211, 10,222,132,112, 0,208,193,193,193, 60, 69, 46,255,208,201,197,229,227,169, 83,167,154,117,238,220, 25,
- 10,133, 2, 45,219,116,202, 50,107,246,241, 74, 78, 66,248,140,188,226,207, 3, 26,184,219, 68, 63, 76, 2, 64, 30,173, 89, 88,
-177, 22, 97,117,233,108,172,186,227,255,219, 79,243,173,195,194,194, 64, 41, 69,113,113, 49,178,179,179,145,147,147,131,162,162,
- 34,104, 52, 26,136,162,136, 19, 39, 78,224,196,149,248,146,108,171,151,226,107, 74,231,255,231, 61,201, 42,196,236,129,239,202,
-229,203, 36,118,118,118,200,206,206, 70, 94, 94,222,227,166, 66, 65, 16, 80, 90, 90,138,253, 7,254, 16,226,133,198,137, 58,101,
-131,210,186, 52, 81,158,106,102, 95,118,193,163,101,184, 47,157, 56,113,162,149,181,181, 53, 68, 81, 68, 65, 65, 1, 18, 19, 19,
-241,224,193, 3,156, 59,119, 78,157, 83, 98,164, 26,199, 94,105,149, 19,141, 86, 91,158,207, 47,170,247,207,211,172,168, 75, 0,
-224,238,230,150,153,156,156,236, 44, 8, 2, 60, 60, 60,248,162,130,130,197, 10,224,152, 28,200, 32, 0, 45, 5,102, 47, 95,185,
-242,141,193,131, 7,163,117,235,214,169, 89,217,217, 13,170,171, 75, 32,132,115, 7,236,228, 62, 62,247, 46, 95,190,236,244,224,
-193, 3,140, 29, 59, 54, 55, 35, 53,245, 67,107, 32, 2, 0, 74,128, 46,238, 94, 94,203,182,110,221,234, 20, 30, 30,142, 38, 77,
-154,228,234, 18, 19, 67, 50,128,194, 26,234,103,141,231,102,225,131,131,126,239, 14, 13,111,245,206, 59,239,128,231,121, 68, 68,
- 68,224,202,149, 43, 72, 73, 73,193,133, 11, 23,138,172, 45, 44, 70,214,118,110,162, 56,198,170,111,195,114,255,205,155,127, 35,
-114,185, 28,235,215,175,199,205,155,143,130,105,205,155, 55,199,248,241,227,193,243, 60, 70,143, 30, 67,255,136, 49,123, 60,209,
-104,117,117,201,211,211, 51, 92, 20,197,165,132, 16,185,160,112,110,149,149,112, 83,229, 22,212, 49, 35,235, 97, 15,175,250,244,
-185, 98,245,147,105, 50,205,127,143,230,139, 70,157,107, 17, 46, 92, 5,155, 63, 47,199,241,118,230,254,245,139,165,253,250, 15,
- 12,249,252,179, 89,146,198,141, 27, 67, 20, 69,180,110,221, 26, 99,199,142, 53, 15, 9, 9,169,107,189,179,178,151,134,188,153,
-240,210, 75, 47,217,190,251,238,187, 54, 93,186,116,145, 85, 46,149,115,247,238, 93, 28, 58,116,200,176,109,219,182,146,116, 69,
-167,162, 11,135,215,150,153,178,222,217,133,252,124, 53,128,249, 65, 6,195,234,217,159,125, 54, 55,172,113,227, 55, 63,248,224,
- 3,206,210,194, 92,182,240,243,183, 85, 0,240,229,247,219,108, 6, 15,127, 13, 43, 2,129, 46,175, 86,191,118, 92,213,116,166,
-101,230, 36,191,246,198,136,192, 55, 71, 15, 21,135, 12, 25, 98,110, 99, 99, 3, 47, 47, 47,216,218,218, 34, 33, 33, 1,119,239,
-222,165,199,142, 29, 43,187,125, 63, 69,182,105,199,177,100,133,165,179, 41,235, 6,150,190, 52,120,108,226,184,113,227,236,134,
- 14, 29,106, 21, 22, 22, 38,147,201,100, 80, 42,149,200,203,203, 67, 90, 90,154,225,244,233,211,101,233,242,118,133, 23,142,108,
- 40, 53,113, 45, 66, 77,231, 81,243, 98, 79, 30,157,251,193,237,219,183,199, 0,104,106, 48, 24, 60, 5, 65, 32, 28,199,101, 10,
-130,112, 71, 91, 86,182,142,111, 62,119, 5, 91,139,208, 52, 4, 65,144, 11,130,128,162,162, 34, 28, 63,126, 92, 26, 23, 23,247,
-249,237,219,183, 63,207,200,200,128,193, 96,192,240,225,195,209,188,121,115,156, 57,115, 6,185,217,217, 7,106,211,202, 0, 10,
-165,201,201,111, 76,158, 60,249,224,134, 13, 27,200,221,187,119,157,214,173, 91,247,219,141, 27, 55, 0, 0, 45, 90,180,192, 27,
-111,188, 1,169, 84,138,177, 99,199,210,148,196,196, 55,120,160,176,150,250, 89,219,185,153,123,104,219,119,183,135, 12, 27, 30,
- 58,103,246,103,178, 14, 29, 58,192,201,201, 9,157, 58,117,130,193, 96,176, 53,225,220, 44,237,220,103,100,124,211,166, 77, 45,
-150, 47, 95,238,250,198, 27,111, 96,202,148, 41, 0, 0,141, 70,131, 99,199,142, 97,218,180,105, 89, 41,210, 54,229, 55, 78,111,
-175,181,126, 86, 68,166,122, 1,128,135,135, 71, 4,128,206, 92,121, 82, 60,235,208,206, 96, 48,254,213, 6, 11,248,255,245,206,
-206, 93,137, 68,213,229, 56, 30, 97,127,207,104, 63, 52,254,141,105,139, 67, 37,198, 34, 59, 51,169,222,238,206,237,219, 92, 66,
- 66, 66,173, 63, 86,185,222,153, 78,233, 85, 38,100,230,183,250,110,197,138, 15,214,172, 89,211,163,114, 42, 6,149, 74,117, 87,
- 83, 94,126, 18, 37, 37, 43,116,190, 94,167,234,187,118,222,131,252,252,108, 0,147, 2, 68,113,229,184, 55, 39, 46, 33,150, 94,
-210, 89, 11,127,213, 74, 36, 18,125,124,122, 54, 86, 4, 2, 22, 38,204,135,170,214, 3,119,243,157,249, 40,218, 37,102,233,226,
-197,211, 87,253,240, 67, 27, 51, 75,203,206, 6,131, 33, 68, 20, 69, 0,184,167, 85,171,207,242, 6,195,149,116,247, 9,223, 42,
- 44,157,169,169,235, 6,234, 84,190,165, 22,154,115,173,118,239,220,249,254,225,195,135,255, 35,239, 86,192, 74,157,181,239, 73,
- 83,242, 94,117, 27, 35,112, 17, 57, 57, 23,107,124,218, 0, 91,139,208, 84, 56, 74,223,182,179,179,251,173, 71,143, 30,170,158,
- 61,123,162, 95,191,126,104,223,190, 61, 68, 81, 4,165, 20,165,165,165,216,177, 99, 7,190,249,230,155,135, 46,192,188,186,244,
-120,224,136,116,255,254, 65, 45, 90,180, 88,183,124,249,114,135, 73,147, 38,193,172, 98,106, 19,141, 70,131,211,167, 79, 99,218,
-180,105,249, 73,241,241,111,240,192,145,186,244,106, 63, 55, 85, 15,120,219,193,137, 35,167, 44, 14, 52,150,100,216, 57,152,243,
-174, 81,145,119, 77, 62, 55, 97,211,168,180,248,230,142,214, 47, 15, 29, 58,133,147, 74, 59, 86, 78,197, 16, 29, 29,125,189,114,
-177,103, 52, 31,127,162, 62,117,137,210, 71,115,207, 81, 74, 89,135,118, 6,131,241,239, 54, 88, 82,169, 52,167, 50,202, 35,149,
- 74,115, 18,246, 77,120,173, 54, 17, 47, 55,183,158, 21, 79,199,168,107, 45,194,202,247, 9, 69, 69,165, 21, 51,180, 87, 59,137,
-168,236,137,237,235,147,169,184,236,236, 24, 0,253,129,100, 32,230,220, 35,189,214, 11,103, 86,205, 83,141, 5,242,167,223,149,
- 23,164,101,103,159, 3,112, 14,192, 55,213,166,211, 91, 94, 80, 87, 58,159,204,251,237,228,228,146,138,124, 87,159,119,231,186,
-243, 46,173,103,249, 72,159,161, 60,255,109,100,230,230,238, 3, 96,225,120,240,160,203,161,131, 7, 95,153, 62,125,250,203,238,
-238,238,129,142,142,142,118, 86, 86, 86,220,229,203,151, 19,244, 90,237,202, 0, 96,195, 3, 64,109,138, 38, 15, 28,114,141,143,
- 15, 30, 52, 96,192, 7,156, 84,218, 49, 36, 36,164, 57, 0,220,187,119,239,166,200,243,231,157,128, 21, 60, 80, 96,194,113,172,
-223,185,169,172,255,185, 89,252,104, 22,249,133,224,121,160,162,249,255, 89,206, 77, 81, 20, 23,122,120,120,148,178, 25,218, 25,
- 12,198,191,137,106,251, 96, 61, 55,113,214, 62,205, 52, 95, 32, 77, 66,136, 4,128, 69,101, 68,134,149, 39,211,100,154, 76,147,
-105, 50,106,124, 32,102, 69,192, 96,152, 6,165, 84, 0, 80,194, 74,130,193, 96, 48, 24,117,154, 80, 0,225, 53,220, 76,234,243,
-100, 31,254, 20, 55,171, 72,166,201, 52,153, 38,211,100,154, 76,147,105,254,187, 52,235,210,126, 81, 34, 99,172,137,144,105, 50,
- 77,166,201, 52,153, 38,211,100,154,127,187,230,139, 6,199,138,128,193, 96, 48, 30, 49,111, 30,225, 0, 66,128,121, 28,176, 75,
- 2,140,144, 60,250,252,244,140, 24, 65,170,157,136,246,189,209,196,138,149, 56,131,241,226,194,250, 96,253,141,184,185,185,121,
-187,184,184,252, 66, 41, 37, 57, 57, 57, 19, 50, 51, 51, 83, 88,169,252,239,225,224,224,208, 3, 0,242,243,243, 79,190,168,121,
- 12,243, 35, 67, 41, 65,240,159,158, 80, 69,164, 68, 37,210, 63,173,179, 24,230, 75,198, 80,238,207,115,105, 17,138,251, 81, 9,
-116,111, 61,158,124,185, 33, 61,156,150, 2,192,190,147,185, 31,209,138, 9, 85,159, 39,238,238,238, 65, 14, 14, 14, 71, 37, 18,
-137, 84, 16,132,201,119,239,222, 61, 88, 91,122, 0,224,157, 97,152,101,231,224, 56,107,246, 36, 34,211,235,150, 20,233,180,218,
- 98,142,227, 18,229,114,249, 57,157, 40, 63,242,253,102, 99, 84,117,251,215,150,254,112, 63,210, 55, 56, 36,116, 96,139, 16,179,
-248,165, 35, 90,175,232,242,166,163, 44,225,250, 45,203, 85,123, 83,126,113,178,243, 24,248,254, 40,233, 65,165,153, 48,230,235,
-181,180,140,157,105,166,177,136, 16,123, 3,208, 88,174, 84,122, 10, 60,239, 2, 0, 18,169, 52,219,168,211,165,202,129, 59, 51,
- 41, 45,250, 31,209,116, 52, 74,165,225,114,133,194, 83, 48, 26, 93, 8, 64, 33,147,229,136,122,125,170,192,243,145,115, 40,205,
-127,218,116,202,148, 74, 47,129,231, 93, 8, 64,159, 87,222,159,167, 38,163, 14,131, 21, 16, 16,112,157,227, 56, 79,142,227, 42,
- 47, 66, 85, 47, 72,213,254, 21, 4, 33,237,254,253,251, 45, 77,253,113, 63, 63, 63,107,173, 86,251, 10, 33,228,181,138, 11,213,
- 22,149, 74,181, 35, 33, 33,225,169, 58, 18,251,249,249, 89, 83, 74, 63, 50, 51, 51,235,174,213,106,195, 0, 64,165, 82, 69,105,
- 52,154, 83,132,144,165, 79,163, 75, 8,145,186,185,185,141,176,176,176,232,198,243,124, 55, 74, 41,145, 74,165,167,213,106,245,
-169,204,204,204,157,148, 82,190,190,154,238,238,238,102, 14, 14, 14, 95, 6, 6, 6,190,250,238,187,239,230,219,219,219, 55,154,
- 55,111,222,181,240,240,240,173, 5, 5, 5,159,101,100,100,104,254, 23, 42, 7, 33, 36,192,213,213,117,139, 76, 38,147,164,166,
-166,118, 3, 0, 47, 47,175,211,122,189, 94,200,201,201,121,141, 82, 26, 87, 31, 61, 39, 39, 39, 11,153, 76,214,214,194,194,162,
-165,133,133, 69,103, 65, 16, 66, 68, 81,132, 40,138,247,202,203,203,207, 26,141,198,235, 70,163,241,114,110,110,110,249,255,202,
- 9, 66, 8,177,114,117,117,253,141,231,121, 16, 66, 26, 82, 74, 75, 95,196, 11, 1, 37, 8,142,142,186,215,168,234,119,161, 97,
- 33,255,185, 29, 7,239, 26,182, 51,217, 96,245,235,104,219,103, 96,223,166, 28, 0, 24,244,215,250, 0, 56,244,188,205, 85,191,
-126,253, 46,174, 92,185,210, 78,167,211,225,227,143, 63,222,210,176, 97,195, 31, 31, 62,124, 56,171,182,253,172,173,109,166,207,
-255,234, 7,243,138,235,153,179, 40,138,206,153, 25,169, 13, 99,238,223,237, 19,115, 63,114,209,212,225,247, 47,105,120, 97,226,
-218,125,184,111, 74, 58, 66,125,201,128,193, 47, 15,237, 63,255,139,185,120,245,213, 87, 27, 68, 21,104,205, 60,162,110, 43,202,
-169,101,128,163,179,231,160, 25,159,125, 77, 46, 95, 60, 51,104,231,182, 53,167,102,188, 73,186, 51,147, 85,231,185, 72, 22, 74,
-165,109,237,130,131, 59,143,220,183, 15,150, 94, 94, 82,169, 82,201, 1, 0,175,211,121,149,165,166,186,109, 31, 52,168,205, 60,
- 66,206,204,161,244,202,223,169, 57, 95, 42,237,224, 16, 28,220,225,213, 67,135, 96,233,230, 38,229,228,114, 14, 0, 68,131,193,
-179, 36, 35,195,109,123,255,254,173,231,201,100,103,231,242,252,101,106, 66, 63,157,127, 74,222, 25, 38, 26, 44,142,227, 60,111,
-222,188,233,108, 97, 97, 81,249,148, 6, 65, 16, 32, 8, 2, 42,110,138,143, 39, 94,164,148,130,231,121,116,237,218,213,164,167,
- 87, 55, 55,183,238, 0,198,133,135,135,191,252,209, 71, 31,201, 59,116,232, 0, 65, 16,112,234,212,169, 78,203,151, 47,255,222,
-221,221,125, 15,128, 13,153,153,153, 39, 77,125,186,117,115,115,235,109, 97, 97,177,249,243,207, 63,183,238,216,177,163,180,114,
-118,248,156,156,156,182,231,206,157,107, 57,111,222,188,201,110,110,110,163, 51, 51, 51,143,154, 90, 56,158,158,158,225, 13, 27,
- 54,220,213,183,111, 95,207,150, 45, 91,170,130,130,130, 64, 41,197,173, 91,183,222,136,137,137, 25,117,232,208,161, 57,158,158,
-158,195, 77, 93, 79,141, 16, 66, 2, 2, 2,198,186,186,186,126, 57,125,250,116,251, 33, 67,134, 40, 34, 35, 35, 11,253,253,253,
-201,158, 61,123,156, 14, 28, 56, 48,249,199, 31,127, 28, 17, 24, 24,248, 89, 92, 92,220, 70, 83, 78,188,134, 13, 27, 94,231, 56,
-206,211, 20, 3, 92, 31, 19, 76, 8,105,230,235,235,187,227,236,217,179,190, 73, 73, 73,194,208,161, 67, 55, 1,192,133, 11, 23,
-154, 80, 74, 73,135, 14, 29, 14, 19, 66, 94,161,148,222, 50, 37,239, 30, 30, 30, 77,156,156,156,246, 15, 25, 50,196,222,219,219,
-219,220,211,211,147,168, 84, 42, 72, 36, 18,148,149,149,185,199,196,196,244,188,117,235,150,230,194,133, 11, 5, 30, 30, 30,131,
-210,211,211,239,212,227,194,219,222,217,217,121,140, 76, 38, 11,231,121,222, 3, 0,164, 82,105,186,209,104,140,204,201,201,249,
-141, 82,122,241,105, 79, 16, 23, 23,151,239,151, 47, 95,238,152,157,157, 77,231,206,157,251, 61,128,177, 47,242, 5, 33,242,214,
-101,156,187,112, 22, 63,175,254,173,152, 82, 36,255,135,193, 18, 17, 27, 22, 22,226, 52,241,237, 49,246,157, 58,116, 70,120,179,
-182,117,106, 14,233,225, 56, 95, 33,151, 58,168,117,186, 43,121,105,220,126,239, 0,197,208,209,195, 90,198, 3,192,145, 19,119,
-135,182, 9,176, 63,239,232, 41, 14, 54, 87, 42,219,232, 13,124,254,190,147,121, 95,212,199, 76,185,186,186, 30,181,180,180, 52,
- 47, 42, 42,202,202,207,207, 95,213,175, 95,191,133,203,151, 47,183,139,143,143, 71,106,106, 42,198,141, 27,103,153,158,158,254,
-174,183,183,247,165,148,148,148, 26, 35, 89, 37,165,197, 43,190,156, 59,125,142,149,141,157,196,220,204, 2,150, 86,214,240,245,
-107,136, 86,109, 58,161,231, 75,131, 16, 31, 23,211,110,199,230, 53,183, 38, 15, 75, 91, 20, 83,128, 5, 17, 17,168,241,218, 20,
-214,128,116, 25, 60,252,145,185,250, 98,254, 92, 60,136,185, 95,154,148,194, 77,253,227, 6,103,222,183,123,168, 82,175, 43, 75,
-186,124,241,140,111,219,246, 93, 1,160,229,206,109,107, 78,205, 27, 77,122,204,217,252, 98, 26,248,231, 97,174,230,203,100, 99,
-123, 47, 95,238,220,124,242,100,121, 89, 98,162, 33,254,231,159,213,217,103,207, 10, 82,165,146,122,245,233, 67,156,186,117, 83,
- 77,190,119, 79,126, 97,241,226,206, 95, 41, 20,254,159,234,245,155,255, 46,205,126,223,125,231,212,108,194, 4,121, 73,124,188,
-225,193,247,223,107,178, 78,156,224,229, 42,149,232,217,175,159,196,165, 87, 47,229,228,168, 40,249,165, 37, 75, 58, 72,103,207,
-246, 3,240,219,139,144,119, 70,253, 12, 22, 44, 44, 44,176,109,219, 54,200,100, 50,200,100, 50, 72,165,210, 26,223,251,248,248,
-152, 98,130,134,133,133,133,253, 48,125,250,116,151,129, 3, 7,194,206,238,207,171,108, 12, 24, 48, 0,253,250,245,147, 39, 36,
- 36,140,218,185,115,231,168, 77,155, 54,101,185,185,185, 77,205,172, 88,176,185,150,155,119, 55,127,127,255, 61,219,182,109, 51,
-211,104, 52,136,136,136, 64, 97, 97, 33,148, 74, 37, 60, 60, 60,208,169, 83, 39,233,233,211,167,237, 71,141, 26,181,199,195,195,
- 99, 64,122,122,250,233,186,210,234,234,234,218,210,201,201, 41, 98,245,234,213,170,224,224, 96, 18, 27, 27,139,166, 77,155, 2,
- 0,242,243,243, 49, 96,192, 0,213,144, 33, 67, 2,222,125,247,221, 75,174,174,174, 93,179,178,178,174,215,145,247, 22, 77,155,
- 54,221,216,167, 79, 31,247,153, 51,103, 90, 91, 90, 90, 34, 41, 41, 41,211,213,213,181, 97,165, 9, 26, 60,120,176,162, 87,175,
- 94,110,171, 86,173, 90,121,232,208,161,143,221,220,220,198,102,102,102,222,168, 77,151,227, 56,207, 27, 55,110, 56,155,155,155,
- 35, 59, 59, 27,155, 55,111,198,187,239,190, 11,169, 84,138,156,156, 28,236,216,177, 3, 83,167, 78, 5,199,113, 40, 41, 41, 49,
-201, 4, 91, 88, 88,244,108,218,180,233,218,147, 39, 79,122,218,218,218,194,221,221,157,155, 61,123,118,184,191,191,191,153,155,
-155, 27,151,145,145,129, 61,123,246,248,143, 25, 51,102,191, 74,165,122, 67,171,213,214,217,116,230,224,224,176,110,211,166, 77,
-222,183,111,223,198,170, 85,171, 80, 80, 80, 0,133, 66, 1, 27, 27, 27,184,186,186, 34, 40, 40,136, 76,158, 60,217,188, 91,183,
-110,230,115,231,206, 93, 7,160,153, 9, 23,221,166,206,206,206,191,140, 26, 53,202,127,238,220,185,182,110,110,110, 48, 55, 55,
- 7, 0, 20, 23, 23,123, 38, 37, 37,181,157, 51,103,206,112, 23, 23,151,132,156,156,156,137,148,210,219,245,188,168, 55,235,209,
-163,199,128, 33, 67,134, 72,178,178,178,176,102,205,154, 1,132,144,102,166,154,202,127, 34,231, 46,156, 69,183, 62,163,160,225,
-205,100, 7,246,110,166,101,177,171, 29, 44,109,109,165, 0, 80, 86, 84,196,219,219, 91,136, 3, 6,141, 54,116,239, 51, 88,125,
-234,200, 22,115, 83, 12,150, 66, 46,117,216,190,118, 82,234,217,203, 15, 67,142,158, 74,234, 57,100, 80, 79, 78,106,209, 40, 0,
- 0, 62,252,224,109,197,190,223, 79,252,216,187,123,131,204,206,109, 27,166,142,124,243,103,175,250,152, 43,127,127,255, 51, 71,
-143, 30,117, 81, 40, 20, 40, 44, 44,116, 88,191,126,253,183,109,219,182,229,226,226,226,112,255,254,125, 36, 38, 38,162,168,168,
- 8,173, 91,183,182,140,142,142, 94, 5,160, 70,131,245,211,110,124,185,120,134,203,119, 78,110, 78,190, 70,189,206,137,215,101,
-135,157, 60,122,187,201,238, 29,234, 22,206,174,158, 13, 71,141,158,128, 25,179,191,150,237,221,181,241, 11,156, 62,134,136,218,
-102,241, 39,104,255,233,204, 89, 40, 81,235, 48,250,181,183, 49,102,244,219, 14, 84,212,187, 81, 81,107,161,215, 22,218,218,200,
- 99, 14,110, 92,191, 99, 40, 0,207, 42, 38,235, 36, 51, 89,213, 51, 95, 42,109,243,210,178,101,206, 77, 39, 79, 86,222,158, 55,
-175, 60,239,236, 89,141, 95,191,126,133,205, 39, 77,210, 1, 64,105, 98,162,252,193,156, 57,230, 78,157, 59,155,117,248,228, 19,
- 91,163, 90,237,186,128,144,214,179, 41,189, 90, 95, 77,223, 87, 95, 21,150,238,217,211,234,242,226,197, 93,177, 96,129,164, 91,
-243,230,183,102,255,252,115,154, 41,154, 11,165,210,182,125,127,252,209,185,241,248,241,202,235,179,102,149, 23, 93,189,170, 9,
- 24, 58,180,160,213,180,105,122, 72, 36, 80,167,165,201,226,230,205,179,176,105,211,198,172,221,135, 31,218, 10,122,189,203, 60,
- 66,218,212, 22, 33,154, 47,149,182,233,179, 98,133, 83,211, 73,147,148,183, 23, 46, 44,207, 56,117, 74, 87, 18, 18,130,102, 47,
-191,156,239,225,224,160,123,218,188, 87,213,204, 59,125,250,153,203,147, 81,205,101,160,166, 32, 73,163, 70,141,178, 99, 98, 98,
-156,119,239,222,109,146,193,114,119,119, 71,167, 78,157,114,238,222,189,235, 82,203, 5, 49, 53, 53, 53,213,147,231,121, 40, 20,
-138, 90, 19, 86, 90, 90,138, 59,119,238, 96,212,168, 81,105, 25, 25, 25, 53, 94,116,237,237,237,173,236,236,236,226, 79,159, 62,
-237, 24, 29, 29,141,235,215,175,195,223,223, 31,118,118,118,144,201,100, 48, 26,141, 40, 45, 45, 69, 96, 96, 32,204,205,205,209,
-175, 95,191,188,130,130, 2,255,130,130,130, 26, 47, 98, 13, 26, 52, 80,202,100,178,135,187,119,239,246, 10, 15, 15,199,213,171,
- 87,225,229,229, 5, 87, 87, 87, 0, 64, 98, 98, 34, 46, 92,184,128,190,125,251, 34, 50, 50, 18,147, 38, 77, 74, 53, 26,141, 13,
-147,146,146,116, 53, 54, 23,132,134,102,238,220,185, 51, 45, 56, 56, 88, 91, 94, 94,206,101,103,103,203,206,158, 61,203,151,149,
-149, 89, 22, 21, 21,201,138,139,139,165,197,197,197,178,242,242,114, 25,199,113,114,157, 78, 39,187,124,249,178, 36, 63, 63,223,
-186,182,114, 10, 14, 14,206,190,127,255,190,243,239,191,255,142,198,141, 27, 99,247,238,221,248,232,163,143,112,225,194, 5,120,
-122,122, 98,215,174, 93,248,232,163,143,112,255,254,125, 56, 57, 57,161,123,247,238,181, 30, 35, 0, 8, 12, 12,140,189,115,231,
- 78,128, 66,161, 64, 92, 92, 28,210,210,210,208,185,115,103,136,162,136,172,172, 44, 60,124,248, 16, 25, 25, 25, 8, 8, 8,192,
-107,175,189, 22,151,150,150, 22, 88, 87, 69,107,209,162, 69,238,201,147, 39, 29,155, 52,105,130,172,172, 44,216,218,218, 62,126,
-217,216,216,192,214,214, 22,126,126,126,152, 62,125, 58,154, 54,109,154,147,148,148,228, 82,151,249, 9, 15, 15, 63,122,234,212,
- 41, 71,123,123,123,104,181, 90,104,181,218,199, 15, 7,230,230,230,144,201,100, 0,128,135, 15, 31, 98,192,128, 1,185,241,241,
-241,125, 76, 53, 71,132, 16,206,197,197,229,254,237,219,183, 27, 90, 89, 89, 33, 53, 53, 21,145,145,145,120,243,205, 55, 31,150,
-151,151, 7,255, 21,253,134,254, 78, 66,253,201,231,209, 81,247, 26,133,134,134, 20,191,254,198, 68,217,224,129,131,203,111, 94,
- 57,102,148,233,206,148,189,212,201, 38, 3, 0, 78, 94, 46,117,214,201, 58,201, 91,182,238, 77,246,239,223,175,218,184,225, 23,
-105, 84,212, 61,215,208,176,144,152,232,120,186,176, 38,237, 1,221,108, 95,255,104, 74,159,144,206, 29, 58, 75, 75,202,169,235,
-218,117,191,182, 78, 78,138,119, 1, 0,159, 6,254,217,111,190,241,246, 85,107, 11,146,117,246,194, 89,126,233, 15, 71,238, 29,
- 60, 93,180,201,132,232,178,191,151,151,215,165,245,235,215, 59, 58, 58, 58,194,198,198, 6,106,181, 26, 6,131, 1,209,209,209,
-218,237,219,183, 27,173,173,173,173,178,178,178, 80, 88, 88, 8,169, 84,138,203,151, 47,167,100,101,101,249, 84,119,172, 43,223,
-239,220, 57, 87,218,165,165,183,157,156,163,102, 10, 33,198, 93, 42,161, 10, 2, 91,151,147, 17,151,155,158,137, 56, 59,186,223,
-192,145, 78,237, 58,116,195,215, 11,103, 24, 19, 83, 83,155,173,221,135,251,213,213,133, 16, 63,210,125,200,176,161, 35,230,127,
- 49, 23,115,231,207,195,193, 3,251,138, 45,205, 56,157,181,149,204,166,115,199, 14,218,233, 83, 95, 73, 85,151, 22,121,125,187,
-124,233,171,189,250, 12,245,108,219,190, 43, 46, 95, 60,131,157,219,214, 92,151, 43,141,172,185,176, 10,243, 8,177,179,245,247,
-159, 56,229,225, 67,249,221,185,115,203,248,140,140,194,150,211,166,229, 85,183,109,218,241,227, 22, 10,119,119,107,135, 65,131,
-236,150,251,248,192,152,147,243, 75,117,125,136,170,211,188,234,230,102,187,247,244,233, 30,162, 84,218,229,221, 41, 83,204,122,
-246,236,137,146,146, 18, 28, 60,120, 16, 91,183,108,209,185,186,186,222,177,189,122,245,150,127,102,230,231,213,105, 46, 34,196,
-222, 42, 40,104,194,187,247,238,201,111,126,254,121, 25, 10, 10, 10,154, 79,157,154, 47, 8, 2,153,176,112, 97,191,248,204,204,
- 46,217,121,121, 62, 0,224,108,107,155, 26,236,230,118,243,187, 77,155,162,127,104,212,136,150,101,100,252, 50,135,210,194,186,
-210,185,253,194, 5,151,195,185,185,111,217,217,217,153,229,229,231, 75,228, 50, 89, 65,139,134, 13,183,127, 61,117,106,132,230,
-250,117,197,211,230,189,229,180,105,121,197,106,181,244,179,239,190,235,144,145,159,223,160, 92,175, 15, 44, 46, 43,115,229, 13,
- 6,206,202,204, 44,191, 65, 64, 64,118,201,169, 83, 89, 62,101,101,239,175, 40, 47,207, 97,181,242, 25, 35, 88,132, 16, 80, 74,
- 77, 50, 87, 50,153,236, 79,205, 80,181, 32,151, 72, 36,184,122,245, 42,114,114,114,208,184,113, 99,248,250,250,254,105,131,248,
-248,120, 28, 58,116, 8,133,133,133,104,209,162, 5, 0,200,107, 19,180,178,178,250, 96,214,172, 89,182,122,189, 30, 55,111,222,
- 68,139, 22, 45,160, 82,169, 32,147,201, 32,151,203, 33,149, 74,225,234,234,138,188,188, 60,184,184,184, 96,242,228,201, 54,223,
-125,247,221, 7,168, 97,153,154,138,230,208, 41,163, 70,141,114, 14, 15,127, 52, 69, 71,106,106,106,101, 90, 0, 0,206,206,206,
-184,117,235, 22, 90,180,104, 1, 23, 23, 23,244,237,219,215,121,255,254,253, 83, 0, 44,173, 49,227,114, 57, 23, 28, 28,220,170,
- 34, 66, 4,142,227, 30, 88, 91, 91, 59,185,184,184, 88, 88, 91, 91,255, 71, 30,215,175, 95, 95,164, 80, 40,140,166, 20,106, 86,
- 86, 22,194,195,195, 81, 84,244,232, 92, 42, 47, 47, 71, 96, 96, 32,138,139,139, 1, 0, 58,157, 14,238,238,238,143, 13, 72, 77,
- 52,109,218,116,110,112,112,240, 75, 93,187,118, 85, 74,165, 82,220,190,125, 27,205,155, 55,199,246,237,219,225,227,227, 3,115,
-115,115,196,196,196,160, 73,147, 38,136,136,136,128,147,147, 19,194,194,194,148, 45, 90,180, 56, 87, 80, 80,112, 58, 41, 41,105,
-110, 45,145, 54,206,210,210, 18, 17, 17, 17, 88,183,110, 29, 18, 18, 18,144,145,145, 1,107,107,107, 52,107,214, 12, 33, 33, 33,
-232,208,161, 3, 98, 99, 99, 65,234,168, 76,132, 16,215,134, 13, 27, 30,188,122,245,170, 35,199,113,136,136,136,128, 90,173,134,
- 86,171, 69, 69, 95, 41,168, 84, 42,180,107,215, 14, 14, 14, 14,104,216,176, 33,246,238,221,235,212,171, 87,175, 67, 21, 17,168,
-172,186,202,212,206,206,238,253, 47,190,248,194,203,197,197, 5,165,165,165, 80,171,213,112,119,119, 71,175, 94,189, 60, 14, 29,
- 58,244, 62,128,229, 47,212,147,150,136,148,208,176, 16, 80,138,228, 3,123, 55, 83, 79, 39, 85,120,215, 22,162,243,131,104,105,
-187,203,151, 35,195, 0,192,206,194,247,118,195, 16,195,131,136,107,199,211, 14,254,190,245,182, 32,128, 11, 9, 13,105,196, 81,
-164,215,166,157,151,198,237, 63,122, 42,169,103,147, 38,157, 36,223,125, 59,103,240,132, 55,122, 43,237,237, 58,145,146,180, 29,
-184,112,227,174,207,236,217, 51,157, 23, 44, 88,124,224,232,169, 36, 33, 47,141,251,210,148,244, 6, 52,176,255,126,247, 50,153,
- 99,105,233, 22,220,142,181, 4, 49,107, 2, 95,191, 0,148,148,148, 64,169, 84,170, 94,125,245, 85, 97,214,172, 89,106, 43, 43,
- 43,243,138,186,156,195,113, 92,239, 58,133,239,223, 3,223, 56,144,151, 89,233, 69,145, 90,106,160, 45,150,223,141,141, 71,167,
-110,125,179, 91,183,104,182,112,241,210,229,159,251, 7, 54,114,122,245,245,137,178,101, 95,127,254, 51, 64, 59, 85, 39,115, 47,
-129,158, 10,245, 37,102, 0,250,207,255, 98, 46,226,227, 31,218, 77, 24, 86, 52, 79, 42, 49,115, 15,110,220,197,234,231,245,199,
-251, 4, 6, 53,106, 48, 97,242,251,127,172, 94,181,178,127,213, 72,214,182, 45,171,247, 19, 66,122,208,191,114, 14,157,127, 22,
- 77,198, 28, 60, 8,117, 74,138,177,224,220, 57,109,143, 31,126,200,107,241,250,235,203, 13, 70,163, 35, 33,228, 79, 93, 33, 8,
- 33,128, 40, 18,233,210,165, 28,117,119,135,209,214,118,220, 76, 32,168, 46,205,197, 70,227,176, 33,205,154,245, 95,187,121, 51,
-124,124,124, 30,107,218,216,216, 96,202,148, 41,152, 60,121,178,242,206,157, 59,109, 14, 29, 58,212,102,211,143, 63,186,204, 4,
-134, 61, 41,104, 0, 26,191,250,251,239, 40, 75, 76, 52, 20, 92,189,170,237,190,114,101,254,153,107,215,236,103,254,248,227,236,
-198,205,155,123,252, 52,119,174,210,219,251,209,248,144,148,148,148,192,149, 43, 86,120,119,235,213,171,195,140, 15, 63, 92,127,
-107,250,244, 80, 60, 90,146,173,198,116,102,157, 61,171, 63, 92, 80,240,214,206, 93,187,108, 27, 53,106, 4, 74, 41, 98, 99, 99,
-157,215,173, 91, 55,177,203,228,201, 99, 62, 28, 53,106,118,175,132,132, 66, 33, 63, 95, 49,224,251,239,101,219, 70,140, 8,171,
- 75,179,178, 60, 1,224,229,143, 62,250,160,117,251,246,161,125, 95,125,213,222,221,221,157,152,153,153,193, 96, 48, 32, 43, 43,
-203, 46, 38, 38, 38,224,100,113,113,201,177, 91,183,126, 67,197, 34,238,140,103, 48, 88, 0, 32, 8, 66,189, 12,150,137, 38,235,
-113,196, 43, 47, 47, 15,145,145,145,240,241,241,129,209,104,196,209,163, 71, 81, 84, 84, 4,185, 92, 14,185, 92, 14,189, 94,111,
- 82,115, 86,231,206,157,165, 23, 47, 94,132,175,175, 47,204,204,204, 30, 27,171, 74,147, 37,147,201,224,234,234,138,226,226, 98,
-116,236,216, 81,182,110,221,186,158,181, 25, 44, 75, 75,203,126,131, 6, 13,122, 28, 98, 43, 47, 47,135, 68,242,104,164,181, 94,
-175, 71,105,105, 41,242,243,243, 81, 92, 92, 12,173, 86,139,166, 77,155, 42, 78,157, 58,213,175, 54,131, 85, 21,181, 90, 93,150,
-147,147, 99,219,169, 83, 39,187, 13, 27, 54,196,180,107,215,238, 79,157,134,207,156, 57,163,213,233,116, 82,133, 66, 97, 82,103,
-247,205,155, 55, 63, 46,251,140,140, 12,252,242,203, 47, 16, 69, 17,132, 16, 60,124,248, 16,223,125,247,221,227,190,114,181, 29,
-163,224,224,224,190,191,253,246, 91,203, 77,155, 54, 21, 74,165, 82,196,196,196, 96,203,150, 45,160,148,194,209,209, 17,106,181,
- 26, 57, 57, 57, 88,190,124, 57, 12, 6, 3, 44, 45, 45,225,225,225,161,154, 50,101, 74,199,121,243,230,201, 0,204,173,165, 46,
- 9, 18,137, 4,222,222,222,248,226,139, 47,160,213,106, 33,151, 63,242,149, 37, 37, 37, 40, 42, 42,194,205,155, 55,145,152,152,
- 8, 81, 20,107,189,177,168, 84,170,225, 27, 55,110,116, 86, 40, 20,208,106,181,120,248,240, 33,226,226,226, 16, 19, 19,163, 43,
- 40, 40,224, 45, 45, 45,137,155,155,155,164,184,184, 88,241,250,235,175,147,210,210, 82, 80, 74, 49,116,232, 80,135,181,107,215,
-190, 2, 96, 69, 29, 6,206, 41, 36, 36,228,211, 9, 19, 38,168, 42,203, 77, 20, 69,228,230,230, 98,196,136, 17,230,167, 79,159,
-158, 69, 8,217, 66, 41,205,125, 81, 46, 4, 85, 71, 11,150,197,174,118, 56,118,236,167, 6, 15,162,165,237, 36,200,111,211,188,
-203,251, 82, 0,184,127,125,125,135,216,123, 87, 5, 75,145,196,255,177,101,233, 37,203,192, 9,249, 0,246,215, 22, 5,236,215,
-209,182,143,119,128, 98,232,144, 65, 61,185,181,235,126,109, 61,225,141,222, 74,231,166,191, 18, 0,176, 83,122,162,189,241, 67,
- 78,171, 47, 87,173, 93,247,107,235, 33,131,250, 93, 73, 76, 74, 94,222,191,147,221,222, 67,231,139,142,212, 22, 37,116,115,148,
-122,216,153,229,193,206,171, 39,124, 66,236,112,243,230, 77,236,223,115, 17,129,141, 90, 65,175,215,195,104, 52, 90, 12, 24, 48,
- 64,189,107,215, 46,109,126,126,126,169,193, 96,232,146,145,145,241,160, 78,127,133, 60,177, 41, 39, 26, 20,130,140,215,148, 43,
-202,167,206,222,243, 74,235,246,125, 91,216,123,123,200, 28, 84,252,129,174, 93, 58,111,222,186,233,151,233, 31,206, 88,128,166,
-205,219,181,159, 42,191, 22, 6,224,110,117, 90,209,137,244, 96,184, 63,225,227, 31,196,246, 79, 78, 77, 74, 11,242,114,213,199,
-165, 80,227,251,179,126,238,213,169,231,240, 38, 1,141,218, 42,162,238, 95, 36,211,167, 77,223,250,237,183, 75, 94,173, 52, 89,
-103, 35,142,118,153, 59, 46, 73, 1, 64,199,110, 81,128, 92,169,244,180,244,241,145, 38,110,216,160,241, 31, 56,176, 16, 0,140,
- 60,239,120,249,202, 21, 27,115,115,115, 80, 74, 97, 52, 26,255,212, 71,184,178, 95,112,207,174, 93, 93, 76,209, 76,253,233,167,
- 38,239,190,251, 46,178,178,178,192,243,252,227,232,119,149,107, 54, 74, 74, 74, 48,108,216, 48,172, 95,181,170,218,118,113,153,
- 82,233,101,233,229, 37, 77,220,176, 65, 19,208,191,127, 1, 4,129,204,248,241,199, 47, 62,252,248, 99,223, 17,175,188,242,167,
-231,198,144,144, 16,252,180,106,149, 98,203,150, 45, 30,139, 87,173,122,163,175, 82, 25, 95, 87, 58, 75,195,194, 96, 23, 25,105,
-214,168, 81,163,199,134,178, 97,195,134,248,250,235,175,149,163, 71,143, 86,140, 29, 51,102, 89, 84,163, 70, 43,231, 38, 38,198,
- 58, 4, 5, 89, 75,149, 74, 79, 83,203, 19, 0,202,244,250,240,185, 11, 22,216, 93,185,114, 5, 25, 25, 25,168,244,247,132, 16,
- 52,105,210,132,188,242,202, 43, 54,109, 91,182,108,205,106,228,115,138, 96, 85,103,176,106, 50, 90,228, 41,166,138, 33,132,192,
-205,205, 13, 6,131, 1,191,254,250,235, 99, 99,245,248,137,192, 96,168, 83, 67,171,213, 54,118,117,117, 69, 73, 73, 9,130,130,
-130, 30,107, 84,166,171,242,165, 82,169,160,213,106,225,225,225, 1,173, 86,219,184, 14, 3,212,204,198,198,166, 50,154, 5,157,
- 78,247,216, 92, 21, 21, 21,161,168,168, 8,122,189, 30,133,133,133, 40, 43, 43, 67, 81, 81, 17, 74, 75, 75,155,155,146,103, 81,
- 20, 17, 25, 25, 25,215,168, 81,163,102, 18,137, 4,150,150,150, 22,229,229,229,168, 28, 76, 80, 80, 80,128,141, 27, 55,150,191,
-254,250,235,142,151, 47, 95,214,152, 82,134, 83,167, 78,133, 82,169,132, 90,173,198,170, 85,171, 48,117,234, 84,200,229,114,148,
-150,150, 98,213,170, 85,152, 62,125, 58,164, 82, 41,116, 58, 29,182,111,223, 94,163, 86,116,116,116,226,229,203,151,155,183,104,
-209,194,110,239,222,189,185, 61,123,246,116,234,221,187,247,227,178,227,121, 30,109,218,180, 65,112,112, 48,114,114,114,112,248,
-240,225,188,134, 13, 27, 58, 94,185,114, 69,204,202,202, 74,174, 35,223,143, 77,147, 68, 34,129, 32, 8,200,206,206, 70, 81, 81,
- 17,114,115,115,145,145,145,129,180,180, 52, 72,165,117,207, 28,226,224,224,240,114,120,120,184,164,194,108,193,207,207, 15, 31,
-126,248, 33,175,209,104, 70, 0, 56, 92,177, 89,223,173, 91,183,238, 13, 12, 12,148,186,187,187,227,225,195,135,112,114,114,146,
-154,153,153,141,172,203, 96,185,186,186,174, 63,112,224,128,125,229, 8,218, 74, 52, 26, 13,120,158,199,168, 81,163,236,215,174,
- 93,187, 30, 64,191, 23,241,162, 96,105,107, 43,125,169,147, 77,198,229,203,145, 97,205,187,188, 47,181, 15,154,243,200,128, 3,
-210,155,103, 87, 54,239,212, 38,124, 75,101,191,172,218, 24,210,195,105,233,192,190, 77,185,209,195, 90,198, 75, 45, 26, 5,108,
-222,184,210,197,222,174,211,255, 95, 40,164,246,176, 80, 1,193, 62, 2,119,233, 96,188,203,244,233,141,244, 91,126,126, 43,126,
-243,158,235, 61,229,138,219,221, 1, 76,175,209, 16,198, 27,127, 47,214,218,135,216, 20,239, 33,112,120, 27,205,155, 55,135,147,
-147, 59,126, 90,253, 27, 60, 26,180,128, 94,175,135,181,181,181,249,163,203,136, 97,179, 41,230, 10, 0,230,206,141, 16, 59,119,
-238, 98,144, 58, 57,242, 83,166,124, 59,172,119,223, 97, 33, 93,186,246,160,199,143, 31, 49,180, 15, 49,100,244,232,210, 54,235,
- 76, 68,196,195,172,172,244,134,193, 33, 77, 16, 19,117,189, 55, 64, 34,129,234,163, 77,145,241,244, 72, 64, 0, 57,189,253,227,
- 9,162, 70,127,211,108,225,143,119,251,246, 31, 60, 54,188,115,199, 78,226,241, 19,199,244, 10, 20,221,179,236,216, 62,125,236,
-152,145,123,183,239,216,253,210,233, 19, 7, 3,139,139,178, 15, 46,217, 68,153,185,170,124, 56,227,121, 23,169, 82,201,101,159,
- 62,205, 55,125,243,205,199,229, 98,110,110,142,253,251,247, 67,161, 80, 64, 46,151, 67,161, 80, 60,126,201,229,114,184,186,186,
-130, 80,202,213, 71, 51, 51, 51, 19, 89, 89, 89,176,177,177,129,147,147, 19,178,178,178,112,225,194, 5, 60,124,248, 16, 82,169,
- 20,125,251,246, 5, 87,195,125,243, 9, 77,253, 91,243,231,247, 9,107,210,196,253, 73,115, 85,121,111, 43, 40, 40, 64,151, 46,
- 93,200,241,227,199,157,206,198,199, 15,254,172,154,206,238, 85, 53, 27, 15, 26,148,159,115,242,100,181,191, 29, 26, 26, 74,246,
-238,223,175,124,117,212,168,105, 95,175, 94,189, 98,246,178,101, 89,224,121,215,250,228,157, 16,194, 17, 66,224,229,229,133,130,
-130, 2,148,149,149, 85, 6, 28, 96,103,103, 7,163,209, 8, 81, 20,101,172, 70,154, 14, 87,151, 25,120,210, 72,213,244,226, 56,
-238,169, 76, 86,109,152, 98,176, 42, 77,134, 82,169,252,211,201, 85,249,170,122,242, 85,154, 24, 19,144,148,148,148, 96,207,158,
- 61, 40, 40, 40, 64,105,105,233,159,204, 85,101,228, 42, 33, 33, 1, 91,183,110, 69,122,122, 58, 36, 18,137, 73,147,182, 38, 36,
- 36, 92,247,245,245,109, 86, 25, 17,235,214,173,155,231,185,115,231, 50, 42,205,220,231,159,127,158,215,182,109, 91,199, 39,111,
-238,181, 38, 86, 34,193,133, 11, 23,160, 86,171, 65, 41,133, 92, 46, 71, 76, 76, 12,120,158, 7,165, 20, 82,169, 20,185,185,185,
-117, 70,176, 34, 35, 35,199,191,241,198, 27, 43,222,124,243,205,211, 51,102,204, 56,222,189,123,247, 84, 66, 8,140, 70, 35,172,
-173,173,225,234,234,138, 7, 15, 30, 64,163,209,224,131, 15, 62, 72,217,180,105,211,137, 85,171, 86,157, 94,179,102,205,138,180,
-180,180, 55,234,115,108,121,158, 71,121,121, 57, 10, 11, 11, 81, 80, 80,128,146,146, 18,104,181,218,167,170, 67, 61,122,244,192,
-193,131, 7, 37, 61,122,244, 88,235,227,227,147,229,227,227,147,213,163, 71,143,181,191,255,254,187,196,195,195, 3,169,169,169,
-184,121,243, 38, 10, 10, 10, 32,138, 98,173, 63, 32,147,201,186,141, 25, 51,166,163,183,183, 55, 49, 24, 12,208,233,116,208,235,
-245, 48, 24, 12, 16, 4, 1, 41, 41, 41, 8, 13, 13,229,188,189,189,219, 17, 66,186,177, 75, 72,253, 40, 73,219, 1,154,243, 3,
-104,193, 54,136, 57, 63,162, 92,251,116, 58,133,133,133, 95,190,243, 85,113,142, 80,124, 26,209, 55,246,160, 84, 35,133,103, 96,
- 55, 76,124,115, 20,174, 93, 57,141,252,252,124,220,187,119, 15,157, 59,119,150, 19, 66,234, 85, 55,183,109, 59, 40,188, 58,234,
-147, 87,122,244, 30,214,178, 71,207,126,194,241,227, 39,117, 87, 47, 29,185, 30,232,107,157, 67,249,162,108, 27,107,243, 27,177,
- 15,238,161, 97,163, 80, 24,121,177, 51, 48,183,214, 58, 21, 23, 71,245,127,100,185, 9,175, 76,141, 28,211,123,224,184,166, 61,
-122,246, 54, 30, 61,114, 64, 56,119,108,215,205,222,221, 26, 68, 44, 90,178,197,171,192, 24, 20,166,178,118, 61,212,174,153,121,
-167, 73, 67,188, 39,176,154, 82, 77,228, 69,165, 18, 81,113,221, 36,132, 64, 20,197, 63,153,170, 39, 95,166,220,147,170,106, 86,
- 66, 41, 69, 81, 81, 17, 30, 62,124,136, 37, 75,150,224,214,173, 91, 16, 4,225,113, 36,171,198,251, 16, 64, 31,107, 2,136,207,
-204,236,242,238,187,239, 42,171, 51, 87,249,249,249,200,203,203, 67,122,122, 58,250,246,237, 43, 47,177,183,111, 86, 87, 58, 61,
-156,157,117,230, 42, 85,246,131, 7, 15,254, 35,189,165,165,165, 80, 42,149,248,225,199, 31,229, 7, 35, 35,167,158,187,112,193,
-182, 62,229, 89,169, 67, 8,129,179,179, 51, 2, 2, 2,208,188,121,115, 52,110,220, 24, 42,149, 10, 81, 81, 81,248,229,151, 95,
- 32, 33,132,103, 53,241, 57, 68,176,106, 50, 88,213,189,151, 74,165,168,143, 33, 48, 21, 83,154, 8, 85, 42,213,221,236,236,236,
- 14,158,158,158, 48, 26,141,143,163, 87,149,205,132,149,159, 1, 64,169, 84,226,222,189,123, 80,169, 84,119,107,211, 52, 55, 55,
-191, 43,145, 72,218,181,106,213, 10,123,247,238,197,233,211,167,145,144,144, 0,141, 70, 3,173, 86, 11,141, 70,131,168,168, 40,
-136,162,136,240,240,112,216,216,216,192,220,220,252,110, 93,105, 45, 47, 47,207,148, 74,165,141,204,204,204,254,191,169,195,205,
- 13,121,121,121,162,209,104,196,198,141, 27, 75, 92, 93, 93, 45,204,204,204, 76, 46, 79, 66, 8,114,114,114,224,229,229,133,146,
-146, 71,211,124,149,150,150,194,217,217, 25, 6,131, 1,162, 40, 66,167,211,193,210,210, 18,117,117,233,160,148,106, 1,124, 88,
- 69,187,213,136, 17, 35,182,110,223,190,221,239,196,137, 19,184,114,229, 10, 28, 29, 29,241,213, 87, 95, 37, 36, 37, 37,189, 74,
- 41,189,246,119, 84,218,252,252,252,221,145,145,145,237, 90,181,106,245,248,234,208,181,107, 87,210,181,107, 87,199,170, 33,253,
-252,252,124,220,190,125, 27, 17, 17, 17, 48, 26,141,184,119,239,158,160,209,104,182,213, 82,150,114, 31, 31,159, 13,179,103,207,
-182,228,121, 30, 18,137, 4, 50,153, 12, 60,207, 67,169, 84, 62,142,212,166,164,164, 96,232,208,161, 54, 43, 87,174, 92, 79, 8,
- 9,160,148, 26, 94,164,139, 66, 89, 81, 17,127,242,114,169,179,157,133,239,237,251,215,215,119, 8,174,184, 78,220,191,190,142,
- 87, 89,120, 93,185,114, 91, 99,213, 70, 85,196, 91, 58,214,174,179,239,100,238, 71, 6,253,181, 62, 71, 78,220, 29,250,225, 7,
-111, 43,124, 26,248,103, 95,184,113,215,167,189,241, 67,206, 66, 5,148,107,129,130, 98,224,126,178, 68,244,105,224,159,125,237,
- 70,140, 98,217,138, 53,254,234,114,253,222, 67,231,139,142,212,166,157,150,150,166,245,240,240, 24,242,225,183,230, 17,163, 70,
- 75, 20, 10,149, 61, 74, 11, 98,225,227,227,129, 87,134,116,192, 15,191, 30,131,141,173, 29, 92, 92, 92, 64, 8,177,168, 71,246,
-201,165,147, 55,223,124,253,141,137,109,123,189,212, 79, 56,122,236, 16, 78, 30,221,115,101,195,138, 89,123, 12,210, 82, 11, 78,
- 40, 51,243,242,116,189,147,152,240,224,181,206, 93, 95,130,202,204, 60, 0, 8,174,246, 46, 30,234, 75, 94, 7, 7,111,136, 72,
-225, 56,168, 94,127, 99, 66,251,222,125, 7,241, 71, 15,239,195,209, 3,155, 46,207,153,218,224, 80,194,237, 45,242, 75, 87,211,
- 84, 67,134, 79, 46, 60,120,242,158,254,229,249,190, 15,220, 27, 54,211,176, 91, 83,149, 7, 72,169, 52,155,215,233,188, 60,123,
-247,150,168,147,147,101,150, 46, 46,124,229, 67, 90,213,135,234, 39, 35, 88, 28,199, 1, 28, 39,154,162,105,106, 90, 52, 26, 13,
- 68,160, 90,147, 65, 42, 53,251,246,149,168,211,210,100, 57,249,249, 13, 26, 52,104,240,167,109,140, 70, 35,242,243,243, 31,191,
-138,138,138,160, 82,169, 80, 96, 52,186,152,146,206,206, 77,154,108,252,118,217,178,143, 86,255,250,235,227,166,158,210,210, 82,
-148,148,148,160,184,184, 24, 28,199,225,147, 25, 51,148, 51,230,207,127,119,128, 84, 58,173, 62,229, 89,249,176,206,113, 28,164,
- 82, 41,146,147,147, 31,191, 82, 82, 82,160, 82,169, 64, 9, 17, 89,141,124, 14, 6,171,178,147,123, 93,230,170,242,189, 68, 34,
- 49, 45,220, 91,241, 36,240,188, 34, 88,229,229,229, 39,206,159, 63,223,166,119,239,222,210, 75,151, 46,193,205,205,237, 63,154,
- 9,165, 82, 41, 8, 33, 48, 55, 55,199,225,195,135, 13,229,229,229, 39,234, 56,137, 78,158, 60,121,178,229,244,233,211,101,227,
-198,141, 67, 84, 84, 20, 38, 77,154,132,194,194, 66,148,148,148, 32, 63, 63, 31, 26,141, 6,109,218,180,129, 74,165, 66,108,108,
-172, 81,163,209,212, 53, 85, 1,205,201,201, 41,115,114,114,114,123,242, 31,195,135, 15,119,249,233,167,159,212,247,239,223, 55,
-118,232,208,193, 26, 64,189, 12,235,214,173, 91, 31, 31,179,152,152, 24,172, 90,181,234,113, 63,132, 27, 55,110, 96,233,210,165,
- 16, 4, 1,245,237, 51, 75, 41,189, 22, 22, 22,198, 27, 12, 6, 4, 6, 6,194,195,195, 3, 26,141, 6, 43, 87,174,228,255, 42,
-115,101, 74, 4, 75,171,213,238, 26, 59,118,236,140, 91,183,110,185,201,229,242,202,208, 53, 68, 81,132,193, 96, 64, 82, 82, 18,
-238,221,187,135,216,216, 88,228,229,229,129, 82, 10,189, 94,143, 27, 55,110, 20, 25,141,198, 29, 53,233, 58, 57, 57,125,190,118,
-237, 90, 87, 51, 51,179,255,152, 88,183,242,162, 83,217,244,234,236,236,140,174, 93,187, 58,159, 58,117,234,115, 0, 95,252,211,
- 47, 4,149, 51,180, 83, 17,177,246,246, 22,226,228, 73,111,202, 27,134, 24, 30,196,222,187, 42,220, 60,187,178, 57, 0,168, 44,
-188,174, 52,108,212, 34,250, 92,164,165,216,255,245, 79,154,229,231, 79,148, 16,138, 70,132, 34,239,201, 25,223, 43,234,143, 8,
-224, 80,155, 0,251,243,251,126, 63,241,227,204, 15,223,190, 58,123,246, 76,103,173,190, 92, 21,236, 35,112,192, 35,115,117, 41,
-202, 66,187, 96,193,219, 87, 23, 47,219, 40,166,196, 25,166, 93,137, 43,172,113,132,111, 85,211, 98,167,132,202,213,127, 90,134,
-111,195,238, 13,238, 92,254,133, 56, 90, 75, 96, 21, 50, 0,125,251,188,132,227, 39,207, 35, 57, 83,131,156,156, 28, 0,168,117,
-218,131, 16, 31,140,169,212, 36, 28, 84, 99,198, 79,232,220,183,239, 32,122,232,143,223,249,125, 59, 55,157,223,186,109,233, 14,
- 78, 46,151, 26, 68,107, 61,145,104,139, 4,137,109, 84,121,113,193,163,136,167, 84,110, 93, 75,251,128,119,116,212,253, 70,161,
-161,193,174, 99,198, 79,180,233,215,119, 48, 61,116,104,159,184, 99,243,198,211, 59,190,107,188, 89, 52,150,200, 51,147,212,202,
-226, 82, 99, 49,149, 40,108,203, 74, 69,117,182, 54, 64,235,126,121,184, 1,195,217,205,233,241,125, 64,167, 75, 43, 75, 77,117,
-179,239,210, 69, 25, 59,119,174,185, 75,155, 54, 90, 66, 72,157, 6, 75, 34,145,128,162,250,185,202,158,212,172,143,193,162,132,
- 84, 59,248, 72,208,233, 82,203,146,147,221, 28,187,116, 81,197,125,241,133,121,117, 81,251,252,252,124, 20, 20, 20,252,201, 96,
- 85, 92,107, 76, 74,231,146, 15, 62,184,220,106,220,184,130, 75,151, 46,185,180,107,215,142,148,148,148, 60, 54, 87,149,239,157,
-156,156,136,119,131, 6, 86, 39,210,211,253,231,153, 88,158,166,228,157,227,184, 26,203,147,241, 12, 17, 44, 83, 13,150, 9, 55,
- 71,163,209,104,132,179,179, 51,242,242,242, 32,138, 98,141, 7,210,204,204,172,178, 13,184,214,145,116,165,165,165, 43, 22, 44,
- 88, 48,165, 91,183,110,142,193,193,193,200,205,205,133,179,179, 51, 36, 18,201,227,116, 85,234, 69, 70, 70, 98,251,246,237, 37,
-165,165,165, 43,234,200,247,242,159,127,254,249,221,126,253,250,217, 59, 57, 57,193,206,206, 14,119,238,220,129,173,173, 45, 74,
- 75, 75, 17, 19, 19, 3, 43, 43, 43, 16, 66,160,211,233,112,246,236,217, 82, 81, 20,151,215,113, 98,210, 11, 23, 46, 24,204,205,
-205,239,228,231,231, 75,242,242,242, 36, 21,211, 51,200,138,139,139,101, 71,142, 28,113,180,177,177, 81,159, 58,117, 42,215,219,
-219, 91,146,152,152, 40,209,235,245,117,186, 44, 66, 8, 62,248,224, 3,200,229,114,232,116, 58,172, 88,177, 2, 31,126,248, 33,
-164, 82, 41,244,122, 61,190,249,230, 27,124,246,217,103,143, 13,243,129, 3, 7,234,107,178, 96, 52, 26, 97, 48, 24, 96, 48, 24,
- 96, 52, 26,255,210, 10,105,138,193,162,148,102, 17, 66, 6,180,106,213,234,216,190,125,251, 28,172,173,173,145,145,145,129,220,
-220, 92,100,103,103, 35, 39, 39, 7,165,165,165,208,233,116,176,181,181, 69,114,114, 50,142, 29, 59, 86, 82, 86, 86,246, 82,109,
- 35, 8, 37, 18,201,216,206,157, 59, 75,159, 76, 3,199,113,143,235,147, 76, 38,131, 66,161, 64,122,122, 58, 58,119,238,172,136,
-136,136, 24,251, 34, 24,172,202, 25,218,195,194, 66,156, 6, 12, 26,109,104,217,186,119, 89,196,181,227,105,150, 34,137,239,212,
- 38,124, 11, 0, 92,185,173,177, 58, 23,105, 41, 54,109,209,147,244, 31,160,105,182, 97,221,106, 69,116, 84,180,111,104,120,104,
-173, 51,250, 59,122,138,131,123,119,111,144,105,109, 65,164, 11, 22, 44, 62,176,118,221,175,173, 47, 29,252,255,105, 26, 22, 44,
-120, 52, 77, 67,239,238, 13,248,232,152, 7,131, 1,108, 50,213,180, 12, 24,208,251,230,218,245,219,145, 30,123,192,125,249, 71,
-102, 10,228,231, 0,230, 45,208,185,165, 3,174,175,185,135,219,183,111,103,137,162, 88,123, 83, 46, 7,239,200,200,232, 70, 97,
-225,161,174,175,143,159, 96,211,175,223, 96, 28, 58,180, 31,191,173, 95, 29,209,206,182,249,218,228,107,121, 18,143, 70,118,114,
-115, 91,133, 92, 42, 87, 73,229, 82,121,158,193,248, 40,186, 46,149,203,172,129, 17, 98, 69,235, 80,181, 76,154, 56,218,166,123,
-175,193,248,163, 66,115,118,179,225,107,124,165, 33,164,205, 71, 75, 38,251,250,248,250,148,171,179, 75, 56, 78, 97,208,234, 68,
-171, 37,107,146,190,141,143, 27, 27,127,115,196,136,101,108, 20,225, 99,238,252,214,175, 95,235,247,226,226,228, 78, 29, 59,154,
-101,156, 62,109,254,100, 19, 97,117, 6, 75, 42,149, 2, 28,199,155,162, 73,142, 31,231, 0, 64, 46,151,215,248, 96, 47,151,203,
-161, 86,171,193, 19, 82,237, 6,114,224,206,111, 3, 6,180,121, 47, 46, 78,102,223,173,155,185,211,173, 91, 41,137,137,137, 65,
-205,155, 55,135, 32, 8,127,138, 92, 85,190,180, 90, 45,244,122, 61, 84, 74,101,164, 41,233,204, 62,123, 86,251,217,248,241, 95,
-188,251,206, 59,223,109,223,177, 67,101,109,109,141,146,146, 18,148,150,150, 62,126,233,116, 58,180,108,213, 74,182, 41, 38,102,
- 12,128, 57,166,148,167, 75,183,110,234,186,174,201, 21,134,149, 53, 17,214, 3,174,174, 8,214,179, 76,211, 64, 8, 9,127,226,
-243,103,125,251,246,213, 38, 36, 36,192,203,203,235,177, 73,169,250,155,214,214,214,176,181,181, 69,116,116, 52,214,174, 93,171,
- 33,132,124, 86,155,102, 65, 65, 65,169, 86,171, 29, 57,106,212, 40,141, 76, 38, 67,163, 70,141, 30, 55,235, 80, 74, 31,247,189,
-138,140,140,196,216,177, 99,213, 90,173,118,228,147,115, 96, 61,169,153,148,148, 84, 92, 94, 94,254,218,232,209,163,213,247,239,
-223, 71,167, 78,157,112,235,214, 45,148,151,151,163,172,172, 12,137,137,137, 8, 13, 13,133,193, 96,192,174, 93,187,212,229,229,
-229,175, 37, 37, 37, 21,215,166, 89, 90, 90, 58,240,235,175,191,150, 28, 58,116,200,215,221,221, 61,172, 85,171, 86,193,221,187,
-119, 15, 24, 58,116,168, 79,191,126,253,220, 26, 54,108,168,237,221,187,183, 83,223,190,125,157, 36, 18,137, 44, 46, 46, 46,147,
- 82,218,183, 54,205,170, 6,224,193,131, 7, 48, 24, 12,255,209,231,170,114, 52,161, 32, 8, 38, 29,163,234, 76,118,165,177,170,
- 52, 90,117, 93,247,171,211,228, 56,174,206,155,133, 66,161,168,140,112,210,186, 52, 41,165,183,238,221,187,215,171,125,251,246,
- 55,199,142, 29, 91,154,146,146, 2,185, 92, 14, 15, 15, 15,248,248,248,192,194,194, 2, 5, 5, 5,216,181,107,151,250,240,225,
-195,145, 37, 37, 37, 93,159,156, 3,235, 73, 77,142,227, 18,171,187,184, 74, 36,146,255, 48, 88,149, 43, 5,112, 28,151, 88,159,
-242,124, 74,211,249, 95,211,156,248,246, 24,251,254, 3, 7, 91,237,223,191, 95,181,106,213,154,232, 78,157, 38,108,180,116,123,
-247,136,165,219,187, 71,218,180,123,107,203,247, 63,175,127,184,247,247,223,205,250,247, 31,106, 51,121,194, 24,119, 16, 34,173,
- 75,211, 92,169,108,211,185,109,195,162,179, 23,206,242,139,151,109, 20, 58,116,234,119,229,187,239,127,222,241,221,247, 63,239,
-232,208,169,223,149,197,203, 54, 10,103, 47,156,229, 59,183,109, 88,100,174, 84,182, 49, 37,157,147, 38,142,182,233,223,111, 48,
- 14, 30,220,203,111,221,184,226,155,253,103,244, 93,134,207,208,102, 39, 63, 60, 73,145,245, 37,156, 21,231,145,146,146, 82,204,
-243,124,183, 39, 59,184,215,164, 57,121,194,232,170,230,234,108,116, 34,126, 93,125,243,166,240,211,248,185,198, 45, 71,247,106,
- 14, 70,220, 44,137,184,158, 82,152,251,176, 56,190,188,180, 68, 47,138, 34,168, 40, 72,230,205, 3,169,237, 24,117,232,208, 21,
-167,142,111,193,198,117,191, 20,139, 34,180,195,119,238, 20, 70,252, 52,151,250,248, 52,240,217,188,121, 11, 25, 48,112,136, 13,
-165, 16, 7, 14, 25,108,187,117,243, 86,226,231,231,215,192,223, 31,242,127,122, 93,122, 94,154,115, 40, 45, 44, 73, 78,142,184,
-182,114,165,222,101,228, 72,123,133,139,139, 53, 68,145,212,213, 7,235,201, 8, 86,109,154, 46,246,246,233, 71,143, 30, 69,163,
- 70,141,224,225,225,241,167, 22, 25,153, 76, 6,111,111,111, 56, 57, 57,225,216,177, 99,160,192,245,234, 52,103, 82, 90, 84, 20,
- 31,127,230,202,146, 37, 58,151,225,195,237,154,249,249, 93,255,110,229, 74,189, 32, 8,143,163, 86, 85,255, 22, 22, 22, 66, 16,
- 4,156, 62,117, 74, 95,166,209,172,173, 45,157, 55,126,248, 65, 87,153,247, 54, 90,109,249,144,150, 45, 23,141, 25, 51,198,144,
-152,152, 8, 65, 16, 80, 53,146,149,147,147, 3, 43, 43, 43,104,180, 90, 79, 23, 23, 23,115, 83, 52,115, 14, 29,178, 68, 29,215,
-117,137, 68,242,167, 38,194,191,226,184,255,171, 34, 88, 60,207,195,203,203,235, 79,243,140, 84,118, 28,172,140, 12,153, 24,185,
- 2, 0,164,167,167,111,114,113,113, 57, 58,102,204,152, 47,154, 53,107, 54,105,218,180,105, 18, 63, 63, 63, 20, 23, 23,195,206,
-206, 14, 78, 78, 78, 72, 74, 74,194,238,221,187,133,162,162,162,159, 5, 65,152,159,157,157,157,107,130,238,105, 15, 15,143, 1,
- 47,189,244,210,246,119,223,125,215,166, 75,151, 46,178,202, 27,224,221,187,119,113,232,208, 33,195,182,109,219, 74,180, 90,237,
- 72, 83,102,113, 7,128,204,204,204, 99,110,110,110, 47,143, 27, 55,110,243,208,161, 67,173,180, 90,173, 44, 33, 33, 1,122,189,
- 30, 60,207,163,160,160,192,112,230,204,153, 50,181, 90, 61, 58, 51, 51,243,152, 9,122, 55, 8, 33,161, 6,131, 97,236,205,155,
- 55,191,124,249,229,151, 29,218,183,111, 47,231,121, 30,231,207,159,207,109,222,188,185,115, 73, 73,137,225,194,133, 11,249, 90,
-173,246,179,140,140,140,141, 38,174, 81,133,146,146, 18, 56, 58, 58, 66,171,213, 66, 20, 69,232,245,122, 88, 89, 89, 61, 94,222,
-136, 82,250,232,228,120,138, 7, 98,158,231, 37, 70,163, 17,163, 70,141,130, 40,138, 88,177, 98, 5,120,158,151,212, 87,199,210,
-210,242,122, 84, 84,212,128,176,176,176,199,233,225, 56, 14, 28,199, 65,169, 84,194,209,209, 17, 14, 14, 14, 56,113,226, 4, 56,
-142,187,110, 98,116,237, 54,128, 22,132,144,246,183,111,223,126, 29, 64, 83,131,193,224, 41, 8, 2,225, 56, 46, 83, 16,132, 59,
-101,101,101,107, 77, 93, 42, 39, 39, 39,231,203,177, 99,199, 54,223,186,117,171,165, 84, 42,125, 92, 94, 28,199, 65, 46,151,195,
-209,209, 17, 42,149, 10, 1, 1, 1,208,104, 52,248,252,243,207, 75,212,106,245,151, 47,210, 5,161, 83,135,206, 56,117,100,139,
-249,198, 13,191,149, 10, 2,184,138,169, 24, 30, 29, 67, 71, 32, 63,127,162,100,195,186,213, 10,149, 84,107,215,169, 67,103,147,
-154, 86,244, 6, 62,127,228,155, 63,123, 85, 44,149,243,101, 98, 82,242,242, 45, 63,191, 21, 15, 0,203, 86,172,241, 79,137, 51,
- 76,139,142,121, 48,120,213,154, 51,109,244, 6,222,164, 5,112,255,223,180,108, 46, 6,133, 54, 61, 61,253,138,167,167,167,111,
-167, 55, 12,159, 53,106, 64, 6,101,231,139,233,132,144,169,233,233,233,241,166,230,189,125,251, 46, 56,115,124, 43, 54,174,223,
- 92, 76, 68,104, 43,141,254, 46,128,238,154, 27, 65,129,136,202, 77,203, 39,191,140,121,159,125, 50,233,195,146,210,226,111,127,
-250,145,138,115,107,233,231,222,164,105, 91, 52,105,218, 22, 83,166,126,106, 19, 26, 22,236, 13, 0, 59,119, 82, 33,220,143, 28,
-248, 98,254,220, 65,243,191,152,139, 18,181, 14,149,203,234,196,220,143,254, 35, 46,158,234,159,247,160,161,127, 50, 95,240,252,
- 21,124,252,113, 67,109,113,177, 83,199, 25, 51, 28,165, 75,150,112,149, 15,208, 79, 70,176, 30, 71,175,234,161,121,228,228,201,
- 63, 62,254,232,163,244,165, 75,150,244, 94,252,245,215,102, 33, 33, 33,200,202,202, 66,112,112, 48, 60, 60, 60,112,254,252,121,
- 28, 59,124,184,188, 76,163,249,204,213,213,117, 85, 77,154,115, 40,189,242,165, 92, 30,160, 47, 47,119, 89,186,110,221,195,238,
- 61,123,102,175, 93,187,214,179, 79,159, 62,156, 90,173, 70,113,113, 49,138,139,139,161,211,233, 32,151,203,145,145,158, 46,166,
-165,167,223, 73, 73, 73, 89, 91,107, 58,167, 79,111,168, 46, 40,112,234, 56, 99,134,163, 49, 63, 95,245, 97, 82, 82, 26,183, 97,
-195,215,147, 38, 78,252,104,218,244,233, 74, 79, 79, 79,162,211,233, 30, 27, 45,163,209, 8, 51, 51, 51, 35,207,243, 14, 0,212,
-166,104,170,254,248,131,207,207,207,135,189,189,253,227,105,151, 56,142,131, 74,165,130,157,157, 29,202,202,202, 64, 41,155, 0,
-183, 94, 15, 10, 53,221,116,131,131,131,175, 75,165, 82,207,170, 33,194,234,214,182,171,250,158,231,249,180,200,200,200,150, 85,
- 29, 46,165,180,218,208,167,167,167,167,191, 40,138, 95,181,111,223,254,229,183,223,126,155, 68, 68, 68,224,228,201,147, 52, 61,
- 61,125, 23,199,113,159,165,165,165,197,215,244,100, 83,147,166,189,189,189,149,149,149,213, 7, 22, 22, 22, 61, 43,167, 98, 80,
-169, 84,119,203,203,203, 79,148,150,150,174,168,105,246,246,218, 52,253,252,252,172, 69, 81,124,223,194,194,162, 87, 94, 94, 94,
- 51, 0,112,116,116,188, 85, 94, 94,126,156,227,184,149, 53, 45, 32, 93,155,166,187,187,187,153,165,165,229,151,246,246,246,175,
-189,253,246,219, 14, 17, 17, 17,153,183,110,221,146,151,148,148,108,225,121,190,198,197,158,171,211, 12, 13, 13,253,211, 90,132,
-207,243, 24, 1, 64,211,166, 77, 15, 14, 28, 56,176,255,107,175,189, 6,163,209,136,159,127,254, 25,199,142, 29,251, 35, 54, 54,
-118, 64,109, 79,159, 79,106,186,186,186, 58,122,120,120,156, 25, 61,122,180,207,144, 33, 67,204,109,108,108, 32,145, 72, 80, 94,
- 94,142,248,248,120,220,189,123,151, 30, 59,118,172, 44, 58, 58, 58, 77,163,209,116,205,202,202,202, 51,181, 60,159,229, 41,249,
- 73, 77,153, 76,214,197,203,203,107,219,156, 57,115,172,122,245,234,101,230,224,224, 0,169, 84, 10,158,231,145,157,157,141,200,
-200, 72, 28, 58,116,168,124,231,206,157,229,249,249,249,163, 40,165, 17,127, 71, 58,159,183,102,229, 76,238, 85,183, 9, 9, 13,
-137,190,151, 64, 23,253,169,190,249,145,233,209, 81,209,141,171, 70,174, 42,103,114, 55, 53,157,253, 59,217,245,123,121, 72,171,
-158, 0,176,123,223,181, 19,127,156, 43, 60, 84,143,116,206,142,142,186,255,196, 98,211,193, 49,209,241,116,193, 83,231,221,143,
-124, 17, 25, 25,253, 39,205,240,240,208,152,123,137, 88,104,162,209, 23,171, 61, 55, 43,251,139,253, 41, 36,140,148,232, 68,186,
-169,202, 54, 3, 6,191, 60,180,255,167, 51,103,225,171,197,139,176,127,247,222, 63,162, 19,233,193,127,114, 93,250,171, 52, 43,
- 23, 39, 54,119,115,235,188,213,209,113,214,209,227,199, 45, 43,251,215, 86,246,145,124,114,192, 85,243,230,205,115,110,221,186,
-229, 98,138,230,128,239,191, 55,104,173,172,148,139,127,254,185,139, 90,175,239,242,225,135, 31, 74,175, 95,191,142,109, 91,182,
-240,154,212,212,205, 89,130,240,126,117,173, 31,213,229,253, 75,185,188,141,202,193,161,107,195, 89,179,148,139,183,111, 31,231,
-225,233,233, 50, 96,224, 64,185, 84, 42, 69,121,121, 57, 50, 50, 50,112,225,252,121,109,114, 74, 74,164, 86,171, 29,154,154,154,
-154,105,106,222, 7,124,255,189,193,214,223, 31,150, 46, 46,226,185, 11, 23,108,103,204,153, 51,201,197,205,205,166, 99,167, 78,
- 50,115,115,115, 20, 22, 22, 34, 37, 37, 5,231,206,157,203,137,143,143,119,167,148, 10,166,104,254,126,247,110,147, 83, 87,174,
- 12,255,248,227,143, 21,193,193,193,176,178,178, 66, 73, 73, 9,238,221,187,135, 11, 23, 46,232,182,111,223, 94, 92, 94, 94, 62,
- 41, 53, 53,245,247,191,234,184,255,107, 12,214,127,235,196,115,117,117,109,201,113,220,236,138,230,168, 5,117,173,233,247, 34,
- 93,116,220,220,220,188,237,236,236, 86,107, 52, 26,170,211,233, 38,102,102,102,166,252,175,165,147, 16, 34,109,217,178,229, 79,
- 57, 57, 57,237, 41,165,176,177,177,185, 24, 21, 21,245, 14,165,148,175,175, 38, 33, 68,226,234,234,218,222,194,194,162,141,133,
-133, 69, 23,131,193, 16, 82,209, 15,239,158, 90,173,142, 48, 26,141, 87,178,178,178, 46, 82, 74,133,191, 51,239,132, 16, 9,128,
- 94,238,238,238,111,137,162, 24,200,113,156,109, 69, 83,105, 17,165, 52,182,176,176,112, 13,128,227,127,119, 58,159,167,102,152,
- 31, 25, 74, 9,130,255,180,141,136,148, 39, 59,175, 87,118,134,255,243, 69, 4,247,163, 18,232, 94, 83,211, 73, 8,225,134,244,
-112, 90, 10, 60, 26,105, 88,219,132,162,255, 97,134, 76, 48, 45,245, 54, 88, 13,200,216,234, 52,239, 37,215,190, 8,111, 93, 6,
-203, 84,194, 26,144, 46, 32,104, 47, 18, 92,185,151, 64, 79,189,136,215,186,231,169,185,136, 16,251,157, 65, 65, 23, 57,169,212,
-181,114,153, 35,194,113,162, 8, 8,224, 56,190,106,179, 96,213, 7,202,186, 52, 13, 64, 99,185, 82,233, 41,240,188, 75,190, 92,
-110,117,193,194,162,133, 14, 40,115, 21,132,217, 39,242,243, 99,234,155,206,121,132,216, 1, 8,149, 42,149,222, 23,204,205, 7,
- 22,216,217,181, 40,228,121, 23, 0,162, 82,169,140, 42, 83,171,215,166,166,166,174,121,178,165,194,148,116,202,148, 74, 47,129,
-231, 93, 8, 64, 57,169, 52,231,168, 82,233,149,235,228,244,186, 90,163,241, 81, 42,149, 70, 0, 37, 6,131, 97,116, 74, 74,202,
-201,250,104,166, 72, 36,161,119,172,172, 58, 9,214,214, 14, 6,192,194, 32,138, 6,131,209,152,170,211,233,238, 74, 36,146,111,
-211,210,210,226,254,202,227,206, 12,214,191,236,100,102,154, 76,147,105, 50, 77,166,201, 52,255, 9,154, 46, 46, 46,230, 28,199,
- 57,100,101,101,165, 87,125, 0,252,167,228,253, 69, 67,202,138,128,193, 96, 48, 24,140,127, 62,217,217,217,106, 84,211,231,138,
-241,247, 64, 0, 84, 59, 18,160, 62,206,244,105, 70, 19,212,165,207, 52,153, 38,211,100,154, 76,147,105, 50,205, 23, 79,179, 46,
-237, 23, 37, 50,198,154, 8,153, 38,211,100,154, 76,147,105, 50, 77,166,249,183,107,190,104,112,172, 8,106,172, 60, 46,132, 16,
-151,231,189, 45,227,197,174, 11,213,236,235, 65, 8,241,168,231,246,110,172,212, 25, 12, 6,227,159,205,127,189, 15, 86,229,141,
-138, 82,154,253, 60,182,123,222,251, 86,236,191,136, 16,124, 82,241,254, 27, 74,233,172,103,220,214, 36, 35, 27, 22, 22,230, 72,
- 8,233, 97, 99, 99,211,184,180,180, 52,146, 82,122,252,238,221,187,249, 48,113,121, 2,111,111,111, 95,149, 74, 53,142, 16, 18,
- 82,145,255,123, 90,173,118, 67, 74, 74, 74,226,115, 56,110, 4,192, 4,165, 82,249,138,173,173,109, 96, 97, 97, 97,172, 94,175,
-223, 9,224,151,167,153,113,218,221,221, 61, 8,192, 88, 81, 20,165, 28,199,109,205,200,200,184,109,234,190, 46,225, 67,118, 80,
-160, 33, 0, 78, 36,226,112,142,114,187, 0,136, 4,120,152, 29,185,239,149,231, 92, 95, 77,174, 11, 79, 34,145, 72, 22, 19,130,
-143, 43,222, 47, 17, 4,225,211, 58,182, 95, 70,128,247, 65, 64, 43,182,159,201, 46, 81, 12, 6,131,241, 47, 48, 88,158,158,158,
-125, 69, 81,124, 21, 0, 56,142,219,154,150,150,118,248,175,184, 89, 61,203, 77,237,137,125,151, 83, 74, 63,170,127,180, 2,159,
-136, 34,229, 30,229,147,204,112,113,113,177,151, 74,165,255, 49, 55, 21,207,243,102,132,224, 45, 81,164,164, 98,219, 79, 8, 33,
- 43,159,198,216,181,104,209,194,174, 85,171, 86,159,206,159, 63, 95,233,228,228, 68,178,178,178, 58,126,252,241,199, 45,131,131,
-131, 23,223,191,127, 63,171,174,253,253,253,253,135, 52,107,222,234,189,105, 31,207,112,113,118,112,180,226, 5,222,144,158,158,
-233,190, 98,249,215,109,253,253,253,127,138,143,143,223, 87, 31, 35, 37,149, 74, 95, 81,169, 84, 1, 90,173, 54,142,231,249, 93,
- 18,137,164,247,194,133, 11,195,251,247,239,175, 42, 46, 46, 86,240, 60, 31,184,121,243,230,233,235,214,173,235, 75, 8, 25, 92,
-199, 80,123,143, 10,195,151, 94,229,235, 87,175, 92,185,210, 67, 42,149,146,214,173, 91,155, 17, 66,166, 86,106,212,176,253, 99,
- 40,208, 48,234,252,206,198, 0, 16,214,113,196,131,168,243, 59, 81,241,254,185, 63, 12, 60, 89, 23, 44, 45, 45, 55,149,149,149,
-197,212,101,228, 43,246,253,184,202,190,159, 56, 56, 56,124,159,159,159,159, 21, 24, 24,216, 82,171,213,142, 1, 0,149, 74,245,
- 91,108,108,236,117, 7, 7, 7, 87,133, 92,254,190, 70,171, 37, 0, 8,199,145,143, 9, 33, 43,158,246, 33,129,193, 96, 48, 24,
-255, 32,131, 69, 41,125, 61, 54, 54,214, 92, 20, 69, 52,106,212,104, 12, 0,147, 13, 86,117, 55,171, 30, 61,122, 52, 55, 51, 51,
-211, 87,221, 78,163,209, 40, 8, 65,143,167, 49, 45,149,191,161,215,235, 56,153, 76, 1,137,132,251,176,105,211,166, 45,243,242,
-242, 78, 10,130,240,243,147,147, 87,154,152,110,172, 93,187, 54,196,197,197,229, 63,214, 80,201,206,206,150, 15, 28, 56,160, 94,
-122,175, 55,110,172,210,198,199,119,226,100, 50,111,131,209,232, 8, 0, 50,153, 44, 95,101,105,233,245,249,103,159,153, 91, 88,
- 88,136,249,249,249, 40, 41, 41, 33, 83,166, 76, 81, 77,153, 50,165, 23,128,141,181,105,122,121,121,249,181,104,213,230,189, 13,
-235,215,183, 41, 46, 40,208,174,249,118,213, 77,157, 84,169,246, 9, 9,146,207,158,179,208,102,254, 23,179, 38,122,121,121, 69,
-166,166,166, 38,212,145, 87, 14,192,222, 15, 62,248, 32,108,192,128, 1,138,210,210, 82,149, 90,173,110,176,121,243,230,207, 91,
-181,106,101,217,188,121,115,197,182,109,219, 72, 81, 81, 17, 40,165,230,193,193,193,116,196,136, 17,218, 29, 59,118, 76, 1,240,
- 93,125,204,178, 32, 8,178,202,192, 23,207,243,138,138,186,104, 48,197, 92, 19,224, 97, 88,199, 17, 0, 65, 96,212,249,157,170,
-176, 78, 35,180,160,136, 37,192,195,138, 7,129,183, 69, 81,244,173, 46, 61, 28,199, 37,166,165,165,253,250, 52, 39, 75,255,254,
- 3, 0, 96,181,155,155,219,217,220,220, 92, 79, 66, 48,218,212,135, 0, 66, 8,145, 74,165, 99, 1, 44,214,104, 52,111,158, 60,
-121,178, 25, 0,244,232,209, 67, 14,224, 58,165,180,253,163,172, 49, 24, 12, 6,227,223,104,176,228, 0,112,246,236, 89, 80, 74,
- 21, 79, 19, 20,168,106, 92,222,127,255,125,184,185,253,185,187, 73,102,102, 38,206,156, 57,253, 44,121,250,211, 77,234,203, 47,
-191,180,201,207,207, 31,180,118,237,218,222,174,174,174,159,103,101,101,157,169, 35,143,217,132,144,111, 56,142,204, 32,132, 64,
-161, 80, 38, 78,156, 56,241,122,197,255,252, 15, 28, 56, 96, 62,112,224, 64, 53, 33, 36, 30, 0, 20, 10,165,179, 68,194,249, 82,
- 74, 65, 41,190,169,205, 8,190,108,105,217,136, 82, 58,112,210,178,101, 66,139,126,253,164,214,206,206, 18,112, 28,114, 83, 82,
- 28, 86,255,248, 99,251,152, 99,199,148,174,193,193, 41,122,133,162,232,193,131, 7,112,115,115,131, 92, 46,175,115, 4,135,185,
-185,249,155, 31, 76,251,200,169,184,160, 80, 99, 44, 45, 53, 88,138, 2,111,173,146,145,146,220,252,162,196, 84,107,245,155,147,
-223,147,126, 49,115,250,155, 0, 62,173, 67,106,202,180,105,211, 66, 90,183,110,237,177,125,251,118, 82, 92, 92, 12,169, 84,106,
-217,172, 89, 51,180,108,217, 82, 56,121,242, 36,241,243,243, 67,120,120, 56,206,159, 63,143, 11, 23, 46,144,230,205,155,155,239,
-221,187,119, 76,117, 6,235, 73, 83, 45,145,112, 51, 71,142, 28,217,215,220,220,220,216,181,107, 87,188,253,246,219, 40, 47, 47,
- 71, 72, 72, 72,147,174, 93,187, 94, 26, 54,108,152,140,227, 72,184, 32,136,168,205, 92, 87, 54, 3, 58,135, 15,185, 3,160, 49,
- 40, 98,115, 34,247, 53,169,252,191, 40,138,190, 49, 49, 49,161, 69, 69, 69, 16, 69,241,241,154,140, 0,208,185,115,231,250,212,
-247,108, 66,200, 55, 3, 7, 14,152, 1, 16,116,239,222, 61,255,189,247,222, 19,238,221,187,215,117,216,176,161,109, 31, 62,140,
-173,241, 33,128, 82,154, 45,145, 72,150, 84,252,143,140, 27, 55, 62,219,210,210,114,168,151,151, 87, 12, 33, 68, 42,151,203, 43,
-203, 72, 18, 18, 18,226, 20, 30, 30, 62,217,206,206, 46, 71,194,113,206, 20,148, 18,194, 45, 17, 69,129, 69,175, 24, 12, 6,227,
-223, 96,176, 8, 33,121,183,110,221,114,211,106,181, 32,132,212, 25, 13,170, 58,194,160,226,134,243, 19,199,145,119, 8, 33, 8,
- 15,111,156,176, 98,197, 10,125, 53,187,233,195,195, 27, 39, 72, 36,156, 31,165, 20,132,112,171,170,222,104,106, 27,181, 80,121,
- 67, 84, 40,148,159, 0,128,155,155,123,246,193,131, 7,141,195,135, 15,199,146, 37, 75, 20, 51,103,206, 92,232,238,238, 62, 50,
- 35, 35, 35,173,166,116, 86,124,158,229,226,226, 98,191,118,237,218,144,137, 19, 39, 94, 79, 79, 79,255, 0, 0, 60, 60, 60, 86,
- 0,104, 76, 8,137,175,242, 29,126,249,229,151,150,111,190,249,230,189,236,236,236, 89, 53,105,190,108,101, 21,232,224,238, 62,
-100,233,249,243, 84,202,243,164,248,250,245,162,180,172, 44,131, 94, 16,184,195, 9, 9,109, 70,142, 31, 47,119,113,115,163,251,
-127,249,197, 71, 45,147, 81, 65,165, 42,142,138,138,162, 6,131,225,110, 93,121, 39,132, 4,219,217,218, 89,172, 89,182,234,186,
-147, 82, 66, 28,189,220,137,220,218, 86,202, 89, 90, 41,169, 68,162,241,241,114,183, 34,132, 4,215,117,140,228,114,249,152,222,
-189,123,155,111,219,182,141,132,135,135,195,214,214, 22,103,207,158,197,173, 91,183, 80, 88, 88,200,241, 60,143, 86,173, 90,225,
-155,111,190,129,151,151, 23,138,139,139,145,148,148,228, 40,151,203,157,106, 41,207, 63, 25,222, 79, 62,249, 4,206,206,206, 16,
- 4, 1,153,153,153, 40, 43, 43,131,133,133, 5,108,108,108,144,145,145,129,253,251,247,213, 89,151, 76,165, 93,187,118,106, 0,
- 73, 79, 70,176,234,163,233,225,225,113, 44, 39, 39,183, 83,183,110,221, 80, 84, 84,100,152, 51,103, 14,154, 53,107,134,134, 13,
-131,234, 76,167, 32, 8,159, 58, 58, 58,174,115,112,112, 88,246,222,123,239,185, 58, 56, 56, 64,167,211,125,150,159,159,143, 79,
- 62,249, 4, 0,208,178,101,203,198,148,210, 63,222,124,243, 77,248,250,250,166, 23, 20, 20,164,196,196,196, 76,204,201,201,137,
-124,150,188,215,231,220,100,154, 76,147,105, 50,205,255, 5,205, 23,210, 96, 17, 66, 40,165,143,154,228,170,190,175,166, 64, 11,
- 61, 60, 60,220,204,204,204, 64, 41, 45,172,239,143, 9,130, 48,197,209,209, 49,103,214,172, 89, 29,131,130,130,244, 83,166, 76,
-137, 76, 76, 76,252,172,234, 54,190,190,190, 95,254,240,195, 15,120,240,224, 65,210,162, 69,139,206,231,229,229, 45,168,231, 65,
-159, 73, 8, 89, 1, 0, 25, 25, 25,121, 7, 14, 28,104, 29, 17, 17, 49,115,197,138, 21,110, 83,166, 76, 81,188,247,222,123,147,
- 77,136,228, 64, 42,149,106,170,107, 22,172, 14, 23, 23, 23, 67,117,125,180, 42,153,216,162,133,146,138,226,144,175,207,158, 21,
-197,180, 52,237,161,245,235,177,228,194,133, 73, 54,142,142,222, 78, 78, 78,212,215,211, 51,215,140,231,179, 75,114,115,185,230,
-189,123,203,142,110,220,232,163,244,245,141,222,181,107, 87,153, 40,138,199, 76, 72, 66,153,222,104,212, 89,120,185, 27, 7, 14,
-238,221,248,238,213, 91, 15,204,236,237,185,198,173,154,133,222,143, 77,186, 65, 0, 61, 30,189,106,197,198,198, 38, 40, 47, 47,
- 15, 37, 37, 37,112,114,114,194,202,149, 43,225,226,226, 2,181, 90,141,168,168, 40,234,233,233, 73,206,157, 59, 7,119,119,119,
-228,230,230, 66,175,215, 67,173, 86,231,232,245,122, 77, 77,134, 87, 42,149,174,225, 56,242, 54, 33, 4,129,129, 13,179,191,251,
-238, 59, 35,165, 20,193,193,193, 24, 58,116, 40,206,158, 61,139,168,168,168,202, 40,147,209,215,215, 47,155,227,136,243,163,221,
-107,143, 8,214, 70, 69,196, 42, 41, 35, 35, 99,214,211,236,239,233,233,169, 18, 4, 97, 82,163, 70,141, 6,188,250,234,171, 6,
-185, 92, 14,181, 90, 93, 89, 22,134, 62,125,250,228, 15, 28, 56,192,225,143, 63,254,168, 53,157,121,121,121,241, 33, 33, 33,111,
-127,244,209, 71,191,173, 90,181,202,246,211, 79, 63,125,188, 8,183, 32, 8, 16, 69,241,113,148,109,239,222,189, 72, 76, 76,252,
-170,170,185, 98, 48, 24,140,127, 11,166,122,145,127, 92, 4,235,191,149, 25,137, 68,242,203,177, 99,199,154,117,238,220, 89,218,
-163, 71,143,112, 79, 79,207,240,180,180,180,200,138,155, 90,120,159, 62,125,194,157,157,157,177,114,229, 74,181, 68, 34,249,229,
- 41,157,117,213,155,221, 37, 15, 15,143,217,123,246,236, 89, 59,113,226, 68,184,184,184, 52,251,111, 23,114,225,131, 7, 29,198,
-205,159, 47,170, 0,201, 31,191,253, 70, 23,158, 63,255,245,142,157, 59,229,254,254,254,160,148, 34, 41, 41,201,250,231,181,107,
-237, 71,246,234, 21,149, 85, 94, 78,226,178,178,132,232,131, 7,185,124,142,251, 62, 62, 62,190,206, 72,161,193, 96,184,150,146,
-156, 28,212,161, 83, 7,183,179,215,163,111, 14, 27, 50,160, 27, 39,229,184,196,228,204,107, 78, 14,246, 22, 23, 46,158, 47, 49,
- 24, 12,215,234,210, 41, 47, 47, 79,228,121,222,158, 82,234,116,230,204, 25, 56, 58, 58,162,176,176, 16, 70,163, 17, 6,131, 65,
-175, 86,171, 85,247,239,223,135, 78,167,131, 78,167,131,181,181, 53,238,222,189,155,205,243,252,169,154, 52,121,158,159, 64, 8,
-153, 79, 41, 69, 76, 76, 76, 58, 0,184,187,187, 55,180,181,181,221,194,243, 60, 50, 50, 50,112,230,204,153,209, 25, 25, 25, 15,
-170,212,197, 90, 59,185,155, 88, 7,158,250,120, 57, 59, 59,135, 91, 88, 88,204,154, 58,117,170, 75, 88, 88, 24,180, 90, 45, 0,
-192,210,210, 18,106,181, 26,214,214,214,104,223,190,253,189, 5, 11, 22, 24, 40,197, 56, 74,105,173,131, 16,238,221,187,151, 27,
- 20, 20, 52,117,226,196,137,243,130,130,130,252, 40,165, 8, 12, 12, 68,239,222,189,113,232,208, 33, 60,124,248, 16,229,229,229,
-194,213,171, 87,183,165,166,166, 30,100,151, 89, 6,131,193, 76,214, 11, 18,193,170,184, 33, 17, 66, 8,253,171,127, 48, 59, 59,
- 59,215,211,211,243,200,141, 27, 55, 6,188,242,202, 43, 56,115,230,204, 56, 0,211, 1, 64,169, 84,142,123,229,149, 87,112,227,
-198, 13,220,191,127,255, 72,118,118,118,238,115, 58, 96,106,189,254, 81, 0, 71,165, 82,153,213,243, 70,237, 95,209, 52, 8, 74,
-169,127, 77,223,213, 17, 13,243,110, 55,116, 40, 87,118,235, 86,209,252,163, 71, 63,216,186,103,143,220,203,203, 11,165,165,165,
-144, 72, 36,176,182,182, 38,189,251,245,179, 91,179,117,171,171,151,149,213,133,201,227,199,199,124,117,252,184,250, 66,113,177,
- 73,211, 43,104,181,218,181, 95, 46,152,221,237,183,205, 59,130, 27, 5, 7,218, 29, 58,118,250,166,131,131,181,153,175,175,191,
-178,184,168, 72,247,195,138, 37,210,242,242,242,117,117,233,104, 52,154,189, 39, 79,158, 28,226,229,229,229, 20, 25, 25, 9,189,
- 94, 15, 65, 16,208,179,103, 79, 80, 74,149, 0, 68,169, 84,138,123,247,238,193, 96, 48,228, 60,124,248, 48, 61, 46, 46, 78, 9,
- 96,113, 29,101,248, 39,163,196,113,220,200, 1, 3, 6,128,231,121,244,238,221, 27,251,246,237,123, 5,192,188,154,182,127,134,
- 8, 86, 3,119,119,247, 69, 21,191,105, 82,231,118, 55, 55,183,142, 65, 65, 65,243,150, 46,253,134,184,184,184, 65, 16,120, 24,
-141, 6,228,230,230,163,180,180, 20,161,161,161,240,246,246,198,226,197,139, 1, 96, 95, 93,230,170,146, 7, 15, 30,196, 2, 24,
- 53,126,252,120,249,217,179,103, 91,106,181,218,229,189,122,245,194,205,155, 55,113,251,246,237,215,156,157,157,115,188,188,188,
-120, 15, 15,143,183, 9, 33,214, 42,149,106,107,108,108,108, 58,187,220, 50, 24,140,127, 19,255, 45, 47,242, 95, 53, 88,117,101,
-204,197,197,197,188,164, 40,255,125, 95, 95, 95, 21, 0, 40,229,146,238,142,142,142, 95,229,229,229,149,213,247, 71,213,106,245,
-142,205,155, 55,191,244,237,183,223,202,251,245,235, 23,224,233,233,217, 26, 0,134, 13, 27, 22, 96,101,101,133,205,155, 55, 27,
-212,106,245,142,231,149, 73, 81, 20,123,183,106,213, 10, 5, 5, 5, 72, 74, 74,186, 94,159,125, 15, 28, 56, 96, 14,160,113, 93,
-223,213,134,222,104,116,178,118,115,147,102,159, 61,107,208,240,188,119, 80, 80, 16, 74, 75, 75,161, 80, 40,160,211,233,144,152,
-152, 8,185, 92, 78, 30, 38, 36, 56,206,156, 62,253,156, 89, 80,144,101,229, 8, 67, 83,200,200,200,208,184,187,187,191,183,240,
-203,133, 91,150, 46, 89,226, 92,144, 95,248, 64,174, 48,211,154,155, 41,237,103,124,180,128,102,103,103,127, 88,177, 70, 85, 93,
- 44,222,178,101, 75,159,151, 94,122,233,142,151,151,151,115, 94, 94,158,107, 73, 73, 9, 45, 40, 40, 32,120,212,151,138, 0,192,
-157, 59,119,144,156,156,204, 11,130,112, 14,192,124, 74,169,222,212,180,122,122,122,218,181,110,221,186,143,131,131,195,227,166,
-200,230,205,155,247,241,244,244,252, 62, 45, 45,173,240,121, 86,238, 99,199,142,153,139,162, 24, 10, 0,125,250,244, 49,213,140,
-191, 62,114,228, 72, 98,102,102, 1,158,231,161, 84,202,161, 84, 42, 97,105,105, 13,123,123,123, 36, 39, 39,163,123,247,238, 98,
- 66, 66,194,126,115,115,243,245,245, 77,211,233,211,167, 7,181,110,221,122,250,228,201,147, 97, 52, 26, 49,100,200, 16,164,167,
-167, 47, 77, 76, 76,220,238,234,234, 58,250,179,207, 62,115,116,112,112,192, 39,159,124, 98, 6, 96, 46,187,220, 50, 24, 12,102,
-178, 94, 0,131, 85,203, 77,177,149,179,179,243,148,156,156, 28, 85,101,211, 11, 33, 68,213, 52, 32,224, 23,119,119,247,159, 50,
- 50, 50, 46,212,231, 71, 11, 11, 11, 75,220,220,220,246, 95,186,116,105,196,176, 97,195,112,252,248,241,177, 21, 6, 11,151, 46,
- 93, 66, 66, 66,194,254,194,194,194,146,231,145, 65, 15, 15,143,151,187,117,235, 54,182,117,235,214, 56,112,224, 0, 4, 65, 56,
- 85,159,253,171,142, 24,172,110, 20, 97,229,119,166,104, 41,148, 74,177,178,255,141, 68, 34,129, 86,171, 69,102,102, 38, 98, 98,
- 98, 96,109,109,141,194,130, 2, 98,109,111,111,208,233,116, 66,125,243,153,145,145,145, 22, 20, 20, 20,167,209,106,101,118, 14,
-246,106, 43, 11, 5, 45, 41, 45,229,238,220,185,153,153,157,157,157,100, 98,165,214, 19, 66,186, 28, 61,122,244, 11,137, 68,242,
-138,135,135, 7, 70,140, 24, 65,122,244,232, 1,133, 66, 1,141, 70,131,162,162, 34, 28, 56,112, 0, 60,207,251, 1,128,147,147,
-147, 75,131, 6, 13,118,115, 28,151,157,144,144,240,102, 93,191, 33, 8,194,176,193,131, 7, 75,141, 70, 35, 22, 44, 88,128,185,
-115,231,162,111,223,190,210,107,215,174, 13, 3,240,235,115, 60, 65,241,210, 75, 47, 61,238,228, 94,181,115,123, 77,116,237,218,
- 85, 42,145, 72,252, 61, 60, 60,144,148,148, 4,115,115,115,184,184,184,192,214,214, 22,142,142,142,248,246,219,111,177,124,249,
-242,219, 18,137,100, 85, 70, 70, 70, 92,125,211,228,237,237,253,246,152, 49, 99,222, 30, 49, 98, 4, 74, 75, 75,113,233,210, 37,
-116,232,208, 1,139, 22, 45,114, 61,127,254,252,180, 86,173, 90, 65, 42,149, 34, 34, 34, 2,130, 32,164,178,203, 44,131,193, 96,
-252,195, 13, 86,213,246,206,170,239,237,236,236,172, 85, 42,213,196, 1, 3, 6,116, 28, 50,100, 8,122,247,238,253,167,157, 87,
-174, 92,105,121,230,204,153, 25, 30, 30, 30, 93, 0,172, 74, 79, 79, 47,168, 71, 84,105,239,150, 45, 91,250,181,107,215,206,188,
- 91,183,110,254, 0,160, 84, 42,245, 91,182,108, 81,139,162,184,183,190, 25,121,114,210, 71, 79, 79,207, 86, 18,137,100,220,192,
-129, 3, 91,189,241,198, 27,136,138,138,194,230,205,155,239, 5, 5, 5, 29,175,167,110,124, 29,163, 8, 87,212, 21,205, 82,200,
-100,185, 37,153,153, 14, 82, 55, 55,133,133, 66,145,122,237,218, 53,255,128,128, 0,146,144,144,128, 7, 15, 30,192, 96, 48,224,
-214,173, 91,148, 3,210, 36,214,214, 92,242,157, 59, 68, 46,147,213,123,206, 46, 51,185,216,226,243, 79, 38, 4,106,181,154,208,
-226,226, 98, 94, 42,149, 74,149, 50, 33,161,158,198, 68,231,237,237, 61, 88, 16, 4, 71,189, 94,111,116,113,113,145,157, 56,113,
- 2, 10,133, 2,143, 70,127,134, 67,161, 80,232, 61, 61, 61, 75, 1,192,193,193,129, 91,180,104,145,108,218,180,105, 81,117,105,
-183,104,209, 66,214,160, 65,131,145, 65, 65, 65,184,120,241, 34,162,163,163,227, 47, 94,188,232,223,162, 69, 11,120,121,121,141,
-108,209,162,197,134, 27, 55,110, 24,159,151,193, 66, 61, 59,185, 71, 68, 68,136,238,238,238, 32,132, 64, 34,145, 64,173, 86, 35,
- 33, 33, 1,237,219,183,199,186,117,235,176, 98,197,138, 77,153,153,153,235,159, 38, 61,227,199,143,151, 55,105,210,228,245, 17,
- 35, 70, 32, 62, 62, 30,139, 23, 47,206,207,202,202, 58,125,244,232,209, 97,147, 39, 79,150,116,232,208, 1,121,121,121,216,176,
- 97, 3,127,243,230,205,245,253,250,245,251,141, 93,158, 24, 12,198,191, 45,114, 85,221,251, 23, 46,130,229,225,225,209,223,222,
-222,254,173,145, 35, 71, 74, 26, 53,106,132,236,236,108, 88, 89, 40,245,132, 16, 5, 0, 88, 89,168,244, 70,163, 17,147, 39, 79,
- 70,179,102,205, 90,207,152, 49,163,149,171,171,235,166,172,172,172,221,166,252,112,118,118,182,218,205,205,109,215, 59,239,188,
-179,248,214,173,155,126, 0,112,245,234,213,132,140,140,140,153, 38, 54,103, 85, 53, 65,149,147, 83, 18,115,115,243, 59,129,129,
-129,249,125,250,244,177, 27, 58,116, 40, 28, 29, 29,113,243,230, 77, 44, 90,180, 40, 74,171,213, 78, 57,115,230, 12,255,223, 46,
-100,158,231, 83,174, 28, 60,104,247,210,232,209,118, 11, 70,142,252,225,141,241,227,191,249,106,209, 34,185,135,135, 7,177,182,
-182,198,237,219,183,233,154, 95,127, 53,108, 95,178,228, 7,137,153,153,252,236,190,125, 10,193,104,140,173,207,111,120,122,122,
-118,233,215,167, 75,248,210,111,191,131, 70, 93,134,171,151, 14,162,176, 32, 15,191,252,186,167,177,167,167,103,151,180,180,180,
-136,122,164,215,127,215,174, 93,143,204,161, 66,129,249,243,231,195,221,221, 29,214,214,214, 40, 43, 43,195,132, 9, 19, 20,239,
-191,255, 62, 0, 32, 58, 58, 26,150,150,150, 38,233,102,102,102,118,155, 56,113,162,181,209,104,196,225,195,135,117,130, 32,188,
-119,252,248,241,189, 77,155, 54, 85,118,238,220,217,250,183,223,126,235, 14,224,232,223,120,114,139,238,238,238, 41,199,142, 29,
-243, 30, 49, 98, 4,228,114, 57, 10, 11, 11, 97,101,101,133,165, 75,151, 82,131,193,176,251,105,181,211,211,211, 21,142,142,142,
- 10, 65, 16,176,107,215, 46,148,148,148,188,153,150,150,150, 21, 16, 16,176,119,198,140, 25, 31, 6, 6, 6,250,198,198,198, 38,
- 11,130,176, 36, 61, 61, 61,145, 93,106, 25, 12, 6,227, 5, 53, 88, 0, 94, 59,114,228,136, 68, 20, 69,172, 94,189, 26, 55,110,
-220,160,150,214,246, 31, 88,217,144,141,214,214,214, 66, 81, 81,209,107,223,124,243,205,144, 47,190,248,130,116,234,212, 9,151,
- 46, 93, 34,126,126,126,195, 0,236,174, 98,124,106, 93,109,187,184,184,248, 90,118,118,150, 95,149, 89,219,253,148, 74,213,181,
- 58,204,212,159, 52,171,153,204,178,233,151, 95,126, 25,233,236,236,108,140,140,140,196,170, 85,171,196, 27, 55,110,252, 1, 96,
-105,118,118,182,198, 20,205,231, 65, 85, 77,187,160,160, 11,235,102,205,106,222,110,208, 32,218,253,149, 87,196,101, 10,197, 71,
-179,231,204,121,175,160,164,196, 75, 20, 69, 56,216,216,164,108,250,242,203,111, 59,116,234,164,185,123,249,178,197,249,223,127,
- 55,115,105,208,224, 92,125,210,153,150,150, 22,209, 48,192, 27, 27,126,253, 22, 6,131, 14,153,233,201, 0,128,188,252, 98,212,
-102,174,170,211,228, 56,174,104,220,184,113,230,122,189,158,140, 28, 57, 82,150,147,147,131,128,128, 0, 0, 64, 73, 73, 9,254,
-248,227, 15, 4, 7, 63,154, 86,235,238,221,187,143,223,215,149, 78,115,115,243, 87, 58,118,236,136,164,164, 36, 68, 69, 69, 29,
-202,206,206,206,117,115,115, 59,148,156,156, 60,172,101,203,150,216,187,119,239,136,154, 12, 86,125,143, 81,229,196,162,245,169,
- 75, 21,230,114,198,222,189,123, 39, 94,186,116,169,203,244,233,211, 73,143, 30, 61, 0, 0,229,229,229,130, 41,253, 13,107, 75,
-103,101,243,176, 40,138,240,242,242, 42, 7,128,184,184,184, 68, 0,239, 62,173,230,243,168,159, 76,147,105, 50, 77,166,249,191,
-160,249,111, 50, 88,188, 40,138, 56,115,230, 12,246,236,217, 35,232,245,250, 89,153,153,153, 49, 85,254,191,222,203,203,235,220,
-176, 97,195,150, 61,120,240, 64, 18, 29, 29, 13, 74,105,189,250, 14,105,181, 90, 35, 33,255,249,221,179,102,106,221,186,117,200,
-202,202,210, 39, 39, 39,255,110, 48, 24, 54,231,229,229,101, 62, 67, 84,227,153, 71, 17,254,114,227,134,238,101, 43,171,125, 51,
-187,117, 27,182,224,200, 17, 85,223,241,227,245, 93,251,244,249, 10,122,189, 94, 38,147,137, 48, 51,147, 72,204,204,228,209,151,
- 47, 91, 44,157, 52,201,129,112,220,254, 31,163,163, 53, 79, 17,193,194,184,183,166, 65,163, 41,195,229,139, 7, 81, 84,144,135,
- 75,215, 30,160,190, 17, 44,169, 84,234,109, 52, 26,149, 60,207,167, 83, 74,241,250,235,175, 67, 16, 4,104,181, 90,148,150,150,
-162,160,160, 64, 59,117,234, 84,174,194, 52,225,165,151, 94, 50,105, 86,127,127,127,127,111,169, 84,138,163, 71,143, 66, 34,145,
-236,126,100,136, 37,187, 79,158, 60, 57,108,228,200,145,240,240,240, 8, 34, 21, 99,116,107,211,121,188,216, 51, 65,224,163, 51,
- 29,129,206,225, 67,238, 84, 46,246,204,113, 92, 98,179,102,205, 76,234,119,245, 36, 57, 57, 57, 57, 0,230,187,187,187,239,252,
-228,147, 79, 38,183,110,221, 58,124,222,188,121, 0, 32,121,214,122, 41,138, 34,120,158,127,166, 41, 36, 24, 12, 6,131,241, 15,
- 55, 88,132,144,109,221,186,117, 27, 69, 41,149,112, 28,183,249, 9,115, 5, 0, 72, 77, 77, 77,240,244,244, 92,237,235,235,251,
-120, 1,232,122,154,151,108, 66,200,215, 28, 71, 62,121,244,185,254, 19, 75, 86, 89,218,230, 19, 0, 68, 42,149,109,190,114,229,
-202,167, 25, 25, 25, 89,245, 53,124,213,241, 60, 70, 17, 2,192,238,210,210,216,151, 45, 45,247, 79,110,218,116,224,144,247,222,
-163, 45,123,245,178,113,109,208,128,231,141, 70, 33,254,206, 29,114,126,239, 94,249,249,223,127, 55,147, 16,114, 96,119,121,121,
- 76,125,211,153,150,150, 22, 17,224,239,121,108,248,176,126, 47,249,251,186, 3, 0,226, 19, 51,144, 87, 80,124,172, 62,230, 10,
- 0,146,146,146,116, 0,116,110,110,110,195,118,236,216,177,171,194,244, 84,141, 10,233,164, 82,105, 67, 0, 40, 45, 45,245,217,
-187,119,239, 22,169, 84,154, 86,151,110,116,116,244,182, 57,115,230,140, 78, 72, 72,248, 61, 45, 45, 45,174, 34,221,113,238,238,
-238,171, 50, 50, 50, 70, 39, 39, 39,255, 70, 77,112, 31, 79, 44,246,140,168,243, 59, 85, 0, 26, 87, 46,246,252,180,107, 13, 86,
-165, 98, 94,174,247,221,221,221,219,245,238,221,123, 28,165, 52,231, 89,244, 84, 42,149, 81,167,211,241,130, 32, 72, 13, 6, 3,
- 85,169, 84, 70,118,249, 97, 48, 24,140, 23, 23,242, 87, 62, 77,155, 26, 66,124,178,131,250,211,104,214, 71,195, 20, 77,119,119,
-247, 41,132, 16,127, 83, 53, 40,165,241, 25, 25, 25, 63,212,160,201, 85,126, 95,211, 98,207,212,104, 76, 86,249,251,159,219,116,
-247,174,182,186,224, 71,125,202,179, 97,195,134, 52, 54, 54,214,164, 78,130,117,105,122,122,122,170,164, 82,233,147, 17, 42, 93,
-133, 9,171,212, 32, 0, 36,148, 82,190, 62,233,124,218, 99,244, 56,130, 5,112, 34, 17,135,115,148,219, 5, 64,172,140, 96, 61,
-239,250,249, 12,117,137,171,250, 63,127,127,255,119,130,131,131, 71,223,185,115,103, 71,106,106,234, 74, 19,228,196,255, 82, 58,
-153, 38,211,100,154, 76,243,111,215, 52,129, 86, 0, 42,151,102,171,156, 39,211,233,137,247,122, 0, 85,239, 89,149,159,115, 1,
- 92,171,162, 81,245,251,186,246, 5,128, 60, 0,119, 96,194,170, 40,117, 70,176,254,155, 60,237,114, 40,207, 91,227,137, 8,198,
- 15,207, 81,238,113,232,103,211,221,187,106, 0, 71,254,202,242,124,248,240,225,115, 27,125,145,150,150,166, 5,160,173,163,236,
- 41,128,255,218,224,129,106, 76, 84, 56,254, 55,249, 83, 71,176,248,248,248, 31,186,118,237,250,115,106,106, 42, 15, 6,131,193,
- 96,212,219, 92, 17, 66, 14, 86,220,119, 6, 84, 24,189,131, 79,190,175,220,166,114,187,170,219, 84,106, 60,249,125,109,251, 2,
-192,204,153, 51, 63, 93,180,104,145, 57,128,211,166, 38,152, 99,199,140,193,248,239,241,119,140, 98,101, 48, 24,140, 23,128,199,
-198,232, 73, 35, 84,205, 67,255,128,170,127,107,163, 58,157,202,223,168,250,121,241,226,197, 95, 1,168,215, 74, 48, 82, 66, 72,
-120, 13, 9, 52, 57,244, 87,147, 70,109,255,171, 75,159,105, 50, 77,166,201, 52,153, 38,211,100,154, 47,158,230,243,218,255,121,
- 80,157, 89,123, 34,226, 5, 66,200,193,153, 51,103,126,138,122, 52, 15, 86,138,255,101, 47, 0,225, 76,147,105, 50, 77,166,201,
- 52,153, 38,211,100,154,207,248,234,255,200,178,208,254, 85,223, 87,247, 93,109,239,235,218,215,132,109, 77, 78,243,255, 68, 31,
- 44, 6,131,193, 96, 48, 24,140, 90,200,173, 26,109,170,136, 48, 9, 51,103,206,252,180,106, 63, 41, 0, 58, 0,202,106,162,101,
-127,234,187, 85, 71,100,205,228,109,107,131, 25,172, 26,104, 22, 40, 89,224,237,237,220,242,113,148,175, 98,138, 2, 17,180, 50,
-242, 87,241, 70, 4, 21, 41, 50, 50,139,110,220,137,167,179,107,144,171,179,175, 91,167, 78,174,246, 18, 77,217,114, 65, 20, 58,
- 0, 0, 1,119, 86, 38,179,157,126,242,106,122, 17,158,232, 44, 93, 19, 33, 1, 36, 68, 37,197,199,162,136, 38,132, 0,132,224,
-142,150,199,146,123,113,244,222,179,150, 7, 33,132,132,249, 97,130, 66,105, 62,210,198,214, 46,176, 48, 63,239,161,193,160,219,
- 25,157,136, 95,232, 83, 12, 69, 13, 14, 32,205, 32, 96,134, 32, 66, 38,229,176,252, 94, 34, 61,207,106, 29,131,193,248, 47,241,
-172,253,143,171,187, 38, 63,235,224, 34, 54, 65, 94,237, 92, 3,208,170,138,233,201, 5,112,119,209,162, 69,133,139, 22, 45,170,
-250,221,109, 0, 77, 43,182,203,173,198, 40,233, 43, 62,235,171,217, 70,111,202,182,127,137,193, 10,243, 34,147, 65, 49, 23, 4,
- 20,192,188,168, 84,186,170, 94,251, 7,146,158, 42,169,100, 13, 40, 36, 90,163,240, 33, 21,112,182,218,155,185, 4,157, 85, 50,
-201, 50, 16,136, 90, 94,120, 51, 42,150,158, 48,245, 55,194, 27,146, 62, 82,194,253, 38,138, 84, 38,136,116, 35, 68, 28,180, 52,
-226,194,165, 52,170,173, 79, 90,189,189,157, 91,238, 59,145,249,210,233,109,239,161, 77,179, 64, 80,209, 8, 80, 30,230,193, 31,
-227,228,166,215,209,166,177,247,163,239, 68, 35, 44,155, 47, 67,223,142, 54, 79,125,114,116,234,228,106,111, 38,138,119, 86,173,
-253,205,213, 59,176, 29,161,162, 14,177,183, 14,191,246,254, 39,159,117,235,209,218,163,201,201,171,117,175,241,216,180, 33,121,
- 43,160, 65,163,143,167,125,246, 45,231,238,238,105, 41,242,122, 62, 51, 53,186,197,247,223,206,217,221,180, 33, 89,118,251, 33,
- 93, 99,170,145, 10,245,197, 68,169, 76, 49,194,204,220, 34, 80,173, 46,141, 21,140,198,157,225, 1,210, 62, 75,190, 89,209,172,
- 75,183,190,150,162, 46,139, 51,242, 36,116,251,142,173, 62, 63,252,180,170, 31, 33,100, 16,165, 84,172, 87,166, 5,124,112,119,
-255,132,225, 50,169,132, 4,247,255,213,130, 16,210,187,222, 26, 0,194,253, 72, 24,173, 99, 38,244,138, 43,223,143,145, 9, 52,
-234,105,142, 79,136, 31, 89, 75,128, 32, 0,187, 8,197,182,168,196,103,155, 19,139,193, 96,252,239,225,225,225,113, 58, 61, 61,
-189,219,115,214,108,147,158,158,126,133,149,238,115, 53, 89, 79,114,213,196,237,254,235,212, 55,130,181, 48, 42, 54,213, 14,162,
- 1, 97, 65,254, 11, 0,212,203, 96,169,164,146,141,215,238,100,187,130, 26,240,235,183,239,108,215, 27, 1,158, 55, 64,224,141,
- 16,120,227,163,247,130, 17, 34,175,197,156,229,103, 0,190, 20, 45,155, 53,220, 8,192,205,212,223,144,129,251,237,198,133, 99,
-246,132, 47,198,246, 13,139,166, 38,103,148, 77, 61,113, 53, 35, 47,204,151,204,138, 78,194,250,250,220,196, 79,111,123, 31,155,
-119, 31, 74, 91,249,235,142,251, 34, 40,236, 44,149,141,198, 12,139,242,218,180,251,116,234,138,117,218,251, 84,164,176,181, 82,
- 54, 26, 59, 40,214,251, 89, 14,130, 68, 83,182,252,167, 95,215,187,122,251,248, 16, 99,226, 66,192,168,131,151,119, 63,201,103,
-211,222,114,155,247,205,143,223, 2, 24, 91,107, 52,200,159,132, 6, 53, 12,249,112,227,246,139,222,229,101, 57,250, 83,127,124,
- 26, 71, 40, 53, 58, 58, 6,203,231, 47, 92,106,246,249,172,105,211,131,253,201,149,251,241, 52,186, 14,115,197,133,248, 98,255,
- 87, 95, 45,105,210,163,215, 64, 75, 65,159, 43,209,150,149, 6,173, 89,191,118,110,112, 88,107,243,142,205, 61,229,185, 23, 38,
- 17,117,105, 1, 12,212, 76,217,189,101, 15,107,245,152, 87,140,107, 55,109,157, 2,224,187,122,249, 43,254,255,231, 26, 49,240,
- 80, 1,144,161,190, 29, 8, 31, 61,242,189,123,235,210,233,137,124,225, 53, 64, 52, 84,152, 94, 3, 32, 26, 65,171,252,109,251,
-234,122, 0,152,244, 84,143,186, 4, 47,157, 56,113,205, 45, 59, 59,179,213,242,229, 95,205, 10,245, 35,135, 65,240,219,189, 4,
- 68, 60,141, 41,100, 48, 24,255,155,184,187,187, 11, 25, 25, 25,146,231,169,233,225,225,209, 47, 61, 61,253,208, 51,166,235, 99,
- 0,111, 85,124, 92,147,145,145,177,228, 89,211,213,170, 85, 43, 79, 74,169,107,197,181, 63,235,218,181,107,105,172, 6,252,189,
- 6, 75, 5, 42, 2, 23,134, 0,164,126,195, 21, 43,110,134, 42, 16, 9, 96, 44,195,224, 1, 61,225,232,224, 6, 8,229,128,160,
- 1,120, 53, 32, 60,122,229,229, 38, 3,124, 57,144,123, 24, 60,165,202,122,231,202, 88, 12,228,236,196, 75,237,188, 97,107,165,
-194,251,163, 66, 29, 87,239,123,176,102,205,190,152,158, 0, 70,154,148, 86, 74,209,166,121, 32, 86,254, 90,126,255,247,211, 57,
-189, 1,160,127, 87,199, 35,109, 26,251,120,173, 88,167,189,255, 71, 68, 65, 31, 0,232,219,209,230,112,235,112, 87,111,241, 25,
- 38,108, 21, 68,161,163,119, 64,115,194,167,124, 3,142, 43, 68, 89, 89, 30, 82,227, 55,192,209,165, 55,199,139, 98,231,186,246,
- 55,147, 98,230,251, 31, 47,150,150,151,101,235, 41,159, 35,186, 88,230,201,101, 32, 18,177,252,156, 94,147, 85, 84,246,193,187,
- 99,248, 15,103,126, 53, 19,192,232,218,116, 66,253, 48,101,217, 55, 43, 26,119,104,221,200, 57,235,252,251,164,172, 56, 27, 70,
-106,166, 28,212,165, 3,236,124, 66,197,236, 91,203,136,210,173, 39,236,124,253,145,118,119, 51,146,239,236, 33,157, 90, 15, 83,
-110,220, 34, 31, 83,147,193,106,232, 70, 58,246,126,169,245,118,127, 31,119, 55, 74, 69,136,162, 8, 74, 69,140, 29,217, 7,179,
-126,136, 67,185,134,199,128,158,109, 59, 56,216, 72,116,139, 62,236, 10, 74, 69,164,102,228,171, 79, 93,188,223, 35, 46,157,214,
-249,228, 71,128, 31,155,182,235,214,241,206,213, 75,193,134,140,131,104, 53,116,209,125, 2,156,175, 82,231, 58,222, 60,185, 62,
- 24, 88,255, 84,199,134, 16, 66, 66,124, 33,164, 92, 94, 12,207,230, 19, 36,191,172, 63,226, 84,156,159, 62,118,207,142,159,134,
-255,180,250,151,205, 79,107,218, 24, 12,198,255, 30, 25, 25, 25,207,221,100, 93,188,120, 49,227, 89, 76, 86,171, 86,173, 58, 3,
-248, 38, 35, 35,163,210,108,125,211,166, 77,155, 47, 42,239, 83, 79, 80, 76, 41, 29,125,237,218,181,179,181,105, 78,159, 62,221,
- 29,128,239,245,235,215, 43,127,195,183, 85,171, 86,190,213,109,107,110,110, 46, 52,109,218, 52,233,219,111,191,205, 96, 53,228,
-175, 53, 88,247,179,206,125,208, 92, 95,160, 6,128,251, 38,152,148, 63, 13,181,212, 26,133,197, 27, 86,140, 93, 28, 22,100,135,
-146, 82, 61,142,159, 75,170,136, 96,241, 16, 4,227,227,191,189,219, 57,162, 61, 63, 9,223,109,139, 1, 47,136,139,106,211,124,
- 18,131, 40,190,218,172,243, 43, 59, 68, 74, 21,230,230, 92,113,128,151,131,243,135, 99,154,114,239,143, 10,131, 70,203,191, 18,
-234, 75, 78, 69, 39,210, 95, 77,210, 20,249,106,242, 84,205,119,162, 80,103,222,107,162,105, 35,179, 54, 67,251,118,178,134,177,
- 0, 66,121, 34,244,130,136,204,204,114, 36,100,200, 97, 35,102,155,164, 41,138,104,226,234,234,102,126,241,216,140, 68,103,171,
- 66,185,131,153, 32,151, 19,145,114, 70, 42,209,235,239,107,237,220,123,202, 68, 17, 77,234, 58, 70,102,102, 86,175,119,234,214,
-223, 38,229,228, 91,196,204,171, 47,156,253, 60,145,120, 99, 3,114, 34, 15, 34, 63, 39,153,216,208, 66,152, 55,244, 71,223, 97,
-163,240,205,148,150, 40, 41, 41, 3,201,141,183, 81, 40,148,182, 53,105, 82, 14,163,151,125,253,165,155, 84,202, 61, 42, 79,202,
- 3,212, 8, 80, 35, 74,203,116,208,235,245, 80,201, 41, 44, 84, 20,168,104,134, 21, 4,189,121,147, 30, 51,223, 1,112,165,174,
-188, 71, 38,208,168, 48, 63,114, 30,148, 15,166,130, 6, 4, 56, 31,149, 64, 31,155,158,112, 63, 18,214,162,199,248,119, 9,240,
-227,211, 28,163,240, 6, 24,208, 50,216,210,194,140,191,143,180, 51, 83, 17, 39,168,168, 75,227,183, 48,106,244, 20,243, 95,214,
-172, 30, 72, 8,153, 92,181, 15,218, 95, 49,188,152,105, 50,205,127,170,166,141,141,141, 95,131, 6, 13,190, 48, 26,141,157,229,
-114,185,139,193, 96,128, 40,138, 89, 10,133,226, 92, 82, 82,210,252,226,226,226,132,255,181,188, 31, 62,124,216,100,147,101,138,
-166, 76, 38,195,161, 67,135, 98, 77, 53, 89, 79,106,114, 28,247,219,174, 93,187,176, 99,199, 14, 0,192,233,211,167,209,176, 97,
- 67,139,234,246, 77, 77, 77,181,120,249,229,151,127, 3,224, 85,155,230,195,135, 15,253,190,252,242, 75,236,218,181, 11, 0,176,
-105,211, 38, 4, 5, 5, 85,155,158,219,183,111, 75, 62,255,252,115, 63, 0, 25,127,245, 49,122, 97, 13, 86,197, 26,187,117,117,
-210,139,119,181,146, 53,135,209, 8, 0,241,245,253,177,232, 56,250,117,211, 32, 89,159,147,123,126,236,172, 82,112,152,187,252,
-195,212,220,220,210,182, 82,201,163, 14,131,188, 0,206,206, 86,113,105,209,212,166,222,133,197, 90,252, 30,145,126, 54, 42,158,
-214, 43, 20, 26, 21, 71,143, 3,176,253,255, 27, 36, 9, 26,251,217,241,109,219,190,238,211,100,218,232, 38,216,127, 38,105, 26,
-128, 58,215,170,163,162, 8, 74,249,199,157,218, 43,190,172,104,114,250,255,239, 68, 74, 1,106, 4,173,103,255,196,121,243, 70,
- 72,247,111,219,219,199, 66, 41,253,126,210,219, 19,173,141,249,209, 40, 46, 18,144,149, 87,142,228, 92, 91, 8,102, 1,120, 16,
-117, 69,144,112, 92,157,253,207, 8,135, 18,106, 44,183,178, 51, 51,227, 66, 91,191,227, 86, 28,249,105,137, 82, 98,148,216, 54,
-251,210, 42,251,238,178, 20, 94,151, 83, 70, 56, 24,234,210,177,182,177,105,168, 43, 77,146, 20, 23,229,195,182,113, 40,250, 14,
- 26,136,185,111,134,160,180,180, 28,185,249, 23,105,160,143, 13,209,222,220,130,207, 94, 15, 70,126, 94, 38,244, 70,128, 43,209,
- 22,104,245,218,178,154, 47, 22,248,229,131, 15, 63,121,213,199,211,201,162,114,176, 0, 21, 5, 52, 13,247, 71,175,110,109,112,
-252,210, 69, 92,187,249, 0, 34, 21, 43, 6, 19, 8, 72,203, 41,202,214, 26,132, 13,245,186,120,138,252,163, 72,104, 53, 6,236,
-105,162, 76,141, 27, 19,115,161, 28,179,219,134, 90,189, 57,227,117, 31, 43, 43, 5,129,214, 76,128, 86,107, 68,233,253, 31,224,
-224,217, 24,230, 42, 21,105,222, 92, 35, 5,192,214, 21,100, 48,170, 48, 98,196, 8, 85,118,118,246,153,254,253,251,135,246,236,
-217,211,188,115,231,206, 40, 47, 47,199,209,163, 71,161, 86,171,125,188,188,188,124,142, 29, 59, 54,172, 77,155, 54,209, 94, 94,
- 94, 93,119,238,220,169,125,138,159,169,188, 95, 61,215,206,225, 10,133, 2,151, 46, 93,122,174,145, 44,133, 66,129,171, 87,175,
-198, 62, 77, 36,171,188,188, 92,238,234,234, 10, 7, 7, 7, 8,130,128,242,242,114,236,219,183, 15, 37, 37, 37, 16, 69, 17,102,
-102,102, 88,118,184, 24,218,152, 93, 88,243,253,151, 40, 46, 46,150,215,165,153,151,151, 71, 26, 53,106, 4,157, 78, 7,158,231,
-161,213,106,113,226,196,137,199,159,165, 82, 41, 22,236,202,134,238,193, 54,108,252,101, 25,242,242,242,200,127,171,238,152,232,
- 69,254, 57, 6,171, 50, 67,255,141,140, 9, 2, 63,107,245,134,109,151,102, 77, 29,137, 41,175,247,240,154,255,221,222,158,209,
-241,116, 35, 0,132,250,147,177, 99,250, 5,122,219, 90,200, 48,239,231,235, 0,232,172,103,253,189,200, 36,250, 32, 44,128, 76,
-219,123, 38,249,204,167,111, 54,135,191,151,117,195,128, 0,162,136,139,163,117,247,247, 17,141,176,179, 84, 54,234,223,213,241,
- 8,168, 8, 91, 75,101, 48,168, 0, 91, 43,101,163,190, 29,109, 14,139,148,194,214, 66, 30, 76, 69,211, 39,231,110, 29,174,124,
-219, 76,198,189,109, 97,101,235,253,193,164, 49,102,253,251,191,108,102,161,160,200,143, 62,132, 18, 26, 6,189,133, 5,168,186,
- 8, 9, 15, 35,133,195, 17,215,211,149, 14,110, 31,213,153, 76, 1,103, 51, 82,239, 13,109, 16,216,211, 54,247,250,103, 57,126,
- 61,182,248,114, 16,184,242, 75,195,114, 44,172, 66,229,231,111, 71,242,162,128,139,117,233,148,150,148, 36, 25, 13,112,211, 26,
-101, 86,113, 87,215, 99,230,152, 48, 20, 21,230, 66,171,227, 81, 84,206, 27,220, 28, 13, 74,109,225, 93,232,244, 60,116, 6, 10,
-153,185, 59,142, 93,138,204, 19,121,227,225,154, 52,227, 50,232, 45, 0,150, 85,191, 11,112, 39, 77,103,216,153,221,130,160, 65,
-114, 74, 6, 54,238,190,212,188, 98,187,103,120, 60,229, 65,249,255,191, 70, 87,118,126,127,154,206,237, 33, 13, 72,107, 51, 51,
-217,247,243,102,246, 15,237, 26, 38, 40,137, 54, 19, 4,128,185, 74, 10,157, 74,128,141,202, 31,212, 80, 74,213, 90,109, 81, 84,
- 36,216,204,236, 12, 70, 21,130,131,131, 93,109,108,108,162, 62,252,240, 67,251,161, 67,135, 62, 54, 3, 27, 54,108,192,138, 21,
- 43, 48,119,238, 92, 24,141, 70,172, 94,189,218,124,247,238,221,173,127,252,241,199, 52, 31, 31,159,176,228,228,228, 44, 19, 77,
-149,188,226,222,197, 85,152, 43, 97,222,188,121,116,238,220,185,168,250, 29,165,212,240, 52,233, 87, 40, 20, 80, 40, 20,184,127,
-255,254,115, 49, 89, 50,153, 12,114,185, 28, 10,133, 2, 49, 49, 49,245, 54, 89, 60,207, 75,210,210,210, 80, 82, 82,130, 94, 3,
- 7, 98,197,226,197,232,220,185, 51,122,246,236, 9, 74, 41, 78,158, 60,137,246,118, 15, 96, 63,176, 11,238,221,187, 7,163,209,
-104, 82,203, 84, 90, 90, 26,242,243,243,209,103,224, 64,252,250,211, 79,104,209,162, 5, 26, 53,106, 4, 0, 56,115,230, 12,122,
-120, 36,193,178, 81, 79, 60,120,240,224,191, 86,119,254,155, 94,228,191, 26,193,250,111, 17, 25, 71, 47,135,250,145,131,163,250,
-183, 26, 48,176,123, 40,126,221,118,234,203,208, 80,178, 13, 0, 28,108,148, 11, 95,239,239,143,232,248, 66,156,188,154,113, 48,
- 58,129, 94,126, 30,191, 41, 10,112,116,176, 53, 7, 56, 5,212,122,129,183,182,174,123,218, 3, 17, 20,230, 33, 51, 49,102,232,
- 61,175, 54,141,189,188, 40,229, 43, 70, 12,126,139,177,131, 98,189, 91,133,185,120, 63,106,242, 50,194,186,253, 22, 64,180,168,
- 51, 29,157,154,169,142,125,244,222,212,118,253, 7,142, 50,147,155, 59, 64,212,164,194, 88,112, 7,249, 9,167,161, 51,107,134,
-220,180, 68,108,219,255,123,241,253,132,236, 18,137,132, 59, 46,181,113,249,228,196,137,132,178,186,116,181, 18, 44,154,251,197,
-172,254,219, 54,111,181, 49,115,239,132,135,251,251, 21, 41, 36, 70,165,179, 71, 16, 52,188,149,176,116,221, 65,219,114, 96,113,
- 93, 58,234,242,146, 61, 39, 78, 30, 25, 25,232,214,209, 42, 49,242, 32,212,106, 61,116, 70, 32,188, 69, 55, 8, 34, 85, 16,142,
-136,214, 18, 9,201,206, 46, 0, 49,138,217,231,110, 38,102,158,191, 22, 47,209,113,117,107,255,169,210,201, 37,239, 13,236,217,
- 20, 16, 52, 24,212, 43, 28,203,215,157,156, 10, 96,252,179, 25, 44, 35,168,160, 1, 5, 58,134,249,145,159, 41,208,241,198,225,
-229,193, 45,251, 78, 67,125, 34, 88,225,126,164,111,227, 96,247,245,203,191,156,101,111,239,236, 37,129,160, 1,225, 75,168, 88,
-112, 25,210,242,135,176,246,236, 15,193,166, 3,126,249,105,105,153, 40,210,109,244,175, 92, 45,157,193,248, 7,162,213,106,247,
- 44, 94,188,216,126,192,128, 71,163,221,203,202,202,112,241,226, 69,172, 89,179, 6, 22, 22,255,127,157,164,148,162, 95,191,126,
-160,148,218,207,153, 51,103, 15,128,118, 53,105,118,232,208, 97,224,183,223,126,155,210,170, 85,171,135,120, 52,199,145, 28,128,
- 4, 0, 61,113,226, 4, 7, 0,173, 91,183, 22,174, 94,189, 42, 2,160,163, 71,143,150, 89, 90, 90, 54, 44, 43, 43,139,120, 90,
-131,165, 80, 40,144,158,158,254,204, 38, 75, 38,147, 61,214,147,203,229, 72, 79, 79,175,151,201,226,121, 94,250,199, 31,127,224,
-230,205,155,152,215,188, 57,222,119,115,131,131,131, 3, 34, 34, 34, 64, 41,133,133,133, 5, 10, 10, 10,176,109,219, 54,116,235,
-214, 13, 60,207,203, 77,209,221,183,111, 31,110,220,184,129, 5, 45, 91, 98,170,133, 5,108,109,109,113,230,204, 25, 0,128, 82,
-169, 68,122,122, 58, 78,156, 56,129,174, 93,187,178, 74,253, 87, 27,172,174,132, 72,137, 23, 92,141, 6, 13, 40, 79, 1, 2,247,
-208, 80, 34,143,142,174,255, 83, 2, 7,124,182,114,221,193,254,203,103, 13, 34, 19,134, 55,119,159,255,227,233,201, 0,240,230,
- 43, 65, 30,230, 74, 41, 86,110,139,166, 28,240,217,243,200, 96,104, 40,145,115, 28, 38,247,234,208, 8, 25,121,122,196,167, 20,
-159,138, 78,160, 38, 53,233,156,220, 56, 6,155,246,156, 73, 93,177,254,207, 35, 6,215,239,187,145,178,108,163,246, 62, 5,133,
-173,153, 44,120,252,160,246,117,142, 34,108, 29,174,124,123,198,180,105,237, 6,191,246,137,153, 49,109, 47,116, 73,127, 0,130,
- 26,234,114,130, 18, 62, 16,153, 41,105,152,183,124,107,170,206,200,189,122, 61, 90, 91, 47, 99,249,224, 1, 45, 11,245, 39, 67,
- 23,127,253,197,241,175,230,205,177, 84,166,159, 44,145, 73, 81,206, 57,116,150, 45,252, 98,149,180,180, 88,255,114, 92, 50, 45,
-173, 75, 71,199, 97,241,215,203,190,235,255,214,152,161,247,131,188,186, 58, 8, 89,241, 14,234,226,226,156, 45,135,111,184, 86,
- 60, 57, 18, 0,136, 75,204, 71,110, 65, 57, 47,240,198, 8, 43, 3,230, 71,165, 81,147, 71,255,249,187, 16,167,161,253,155,188,
-230,100,171,128,166,188, 16,206,118,114,244,238, 24,240,154,191, 11,153, 17,159, 77,115,159,246, 56, 87, 54, 17, 94, 90,211, 61,
- 24,162, 33,152,138, 70,232,147,127,171,191, 14, 48,109,218, 72, 31, 27,123, 11, 61, 71,132,114, 64,102, 7, 40,156, 8,103,230,
- 11,137,153, 55,146, 98,175,243,211,222, 25,153,159,148,148,181,214,145, 98, 9,187,132, 48, 24,127, 38, 57, 57,249,245, 79, 63,
-253,244,124,155, 54,109, 92, 28, 29, 29, 17, 30, 30,142, 3, 7, 14,224,163,143,254, 63, 24,223,172, 89, 51, 0, 64,126,126, 62,
-190,254,250,235,172,140,140,140,215,107,211,140,138,138,186,255,219,111,191,117,108,210,164,137, 94, 46,151, 23, 86,154,172,228,
-228,100,105,121,121, 57,209,235,245,212,194,194, 66, 84, 42,149,198, 17, 35, 70, 24,174, 94,189,218,176,188,188, 60,249, 89, 34,
- 88, 45, 91,182,188, 91, 84, 84, 84, 76, 8,121,230, 41, 28, 42,205, 85,112,112,176,147, 94,175, 23, 0, 20, 60,205, 20, 14, 60,
-207,163,101,203,150, 56,113,246, 58, 14,159,189,139,178,220,120,140,126,185, 55,130,131,131,113,244,232,209,167, 62,102, 45, 91,
-182,196,137, 19,231,113,230,122, 12,178,147,163, 49,102,212, 16, 52,106,212, 8, 39, 78,156, 96, 21,250, 89, 13, 86, 93, 33,185,
- 16, 31,210,212, 37, 92,177,233,179, 65, 1,161,210,240,185, 32, 82, 51,236, 93,127,160,195,172,175,126,190,223,216,131,140,190,
-107,194,104,175, 63, 69,177, 30,117, 76,222,122, 59, 58,248,181, 65,157,189,240,235, 78,243,217, 0,240, 74, 47, 63, 92,141,206,
-197,149,200,156,173, 81, 79, 57,103, 81, 85, 26,187, 16,115, 88, 96,235,215,159, 12,238,234,227,233,138, 53, 59,206,131, 80,236,
- 49,233, 70, 75, 41,109,211,196, 27, 43,214, 63, 57, 98,208,205,123,217, 70,237,253,163, 23, 74,250, 2,192, 75,237, 44, 14,183,
- 10,177,247,174, 43,146,161,146,113, 19,250, 14,122,221,140,207, 62, 10,177, 96, 39,100, 10, 57, 52,229, 2, 50,115,116,208,152,
-155,225,212,185, 8, 77,153,154,159,118, 39,150,127,170,168, 93,116, 60,141,111, 22, 68, 82,202, 53, 26, 55, 75,251,128,114,142,
-128,150,233,101,244, 70,116,122,121, 84, 50,141, 49, 69, 35, 46,142,234,219,121,146, 78,191,108,220,249,133, 76,166,120, 69, 34,
- 1,113,182,181,112,250,121,229, 2, 88, 89, 89,130,242,165,160,186, 60, 12,125,243,171,220,187, 15, 13,126, 0, 16, 20, 68, 44,
- 59, 55,149,111,148,114, 36,237,212, 77,253,231,117,134,128, 37,152, 52,122, 80, 83,153,104, 44,199,123,115,182,227,151,133,131,
- 48,102, 96,136,236,143, 83, 15, 38, 1,152,255,244, 97,202, 71, 77,132,237, 38,156,189, 79,128,243, 20,232,120,253,224,194, 96,
-192,244,150,199, 22, 45,136, 76, 42, 37, 33, 33, 30,122,153,144,182, 13, 68,229, 65, 37,142, 93, 1,139,134,132, 90,134,227,135,
-149, 95,148,253,186,102,205, 49,145, 96,222,253,196,218,167,188, 96, 48,254,173, 80, 74,227,109,109,109,251,244,235,215,239,228,
-209,163, 71,237,195,195, 31, 45, 55,119,227,198,141,138,243,236, 81, 83, 84,118,118, 54, 94,125,245,213,188,204,204,204, 62,148,
-210, 90,251,244,150,150,150, 38,236,221,187,215, 69,163,209,180,250,252,243,207,179, 27, 52,104, 80,106, 52, 26,105,105,105, 41,
-120,158,167, 78, 78, 78,178, 22, 45, 90,144,176,176, 48,205,201,147, 39, 29, 82, 83, 83, 75, 1, 36, 61, 77,250,223,122,235, 45,
-236,222,189, 27, 0,240, 60,230,197,146,203,229,232,215,175,159,199,197,139, 23,211, 43, 52,175, 60, 67,217,226,206,157, 59, 56,
- 23, 43, 64, 97, 97,135,164,251, 37, 56,241,251,126,140,158, 48, 17, 60,255,244,189, 21,110,223,190,141,109, 39,110,195,197, 35,
- 0,197,186, 59,216,183,111, 31, 38, 79,158,252, 76,154, 79,153, 63,242,194,245,193,170,204,216,147,255, 12, 8, 32, 10,165, 30,
-115,122,183,245,248,100, 68,143, 0, 9,175,206,128, 40,138,144, 0,112,180,226,176,238,215, 95,252,118,238, 61,116,169,177,183,
-228, 59,232,197,207,238,102, 83,117, 61,194, 88,115,190,221,112,225,149,223, 22,116,145, 78, 30, 30,108, 15, 0,114, 25,135,149,
- 91,163,120,112,152,243, 44,153,106,231, 73, 84,101,114, 76,112,245,181,153, 61,235,157,254,246, 93,219, 4, 33,226, 82, 36,190,
-219,124,233,172,194, 14,155,234, 19, 21,169,218,161,253,209,119,213, 4,191,104,221,149, 80, 16,169,171,194,220, 17,218,164, 67,
-144, 42,148,224,121, 3,114,179,213, 72,204, 18,161,114,151,225,234,157,100,205,144,215,134,254,241,180,121, 38,132,144,142,205,
- 84,238,115, 22, 46,245,212,104, 74,249,146,162, 60, 94, 42,191, 36, 53, 55, 83,102,213, 71,231, 82, 26,213,118,105, 38,111, 1,
- 42, 74,148, 18,170,158, 53,109,156, 69,250,131,163, 8,116,202, 0, 1,133,153,123,127, 88, 89, 72,228,157,154,202, 83, 0,192,
-215,193, 70,241,245,252,143,108, 62,152, 49,239,156, 41,209,196,198, 65,174, 31,132, 7,218, 35,226,202, 61,156,189,150, 28,117,
-246,242,131,176,110,173,221, 17,228,103,251,126,104, 40, 89,252, 52, 17,209, 71,199,224, 81, 19, 97,229, 40,194,112, 63, 18,214,
-106,192,231,213,142, 30,172, 9,223,155, 16, 31,248, 81, 16, 34, 1, 5, 1,180,233,224, 83,127,131,196,111, 42,221,179,127,161,
-102,205,175,107, 22, 68, 39, 82, 22,181, 98, 48,234,160,168,168,232,142,185,185,121,239,166, 77,155,110,120,239,189,247,172, 94,
-123,237, 53,247,183,222,122,139, 3,128,236,236,108,113,197,138, 21, 25,223,127,255,125,113, 94, 94,222,120,131,193,112,215,148,
- 7, 94, 66,200,197,117,235,214,229,158, 63,127, 62,172,109,219,182,230,173, 90,181, 18,157,157,157,229,106,181, 90, 72, 77, 77,
-213, 92,186,116, 73,136,141,141,181, 41, 42, 42,138, 5, 16,247, 52,205,247,238,238,238,224, 56,110,190,151,151,215, 23,233,233,
-233,141,159, 71, 31,172,192,192, 64,119, 0,177, 30, 30, 30,129,245,109, 30,252,143, 27,182, 84,138,194,194, 66,148,166,197, 65,
-157,159,135, 70, 18, 53,154,217, 59,194,202,202,234,153,204, 80,113,113, 49,164,186,108,196,223, 73, 70, 81, 86, 18, 66,125, 90,
-194,194,194, 2, 58,157,238,239, 48,232,228, 69, 57, 15,106,108, 34, 12,243, 34,147,237, 20, 88, 49,110,132,159,220,207,199, 19,
-250,220, 27,184, 21, 87,134,207,215,182,142,150,200,173,116, 83,198,246,106,209,173,167, 19,186,116,109, 77, 26,248,216,190,191,
-120,241,170,119,195,188,201, 71, 81, 41,116,165, 41, 63, 28, 21, 71, 19, 66,252,200,154,211,215,210, 39,121, 58,105, 64, 65,113,
-250,122, 38,238,198, 21,174,185,151, 64, 19,234,147,137,176, 64,210, 83, 74,184,237, 84,160, 42, 27, 43,139,210,102,157,131, 29,
-123,118,108,194,245,233,214, 10,114, 41,112,254,202,109, 76, 91,184,231,178,168,160,253,111,220, 48,173,121, 16, 84,252, 15,227,
-244,104,196, 32,255,167, 17,131,148, 82, 10,145, 71, 93,243, 77, 74, 56,146, 85,158,125,221, 85, 97, 21, 10, 67,254, 41,100,103,
-151, 33, 42,222,128,255, 99,239,186,227,163, 40, 30,239,155,221,171, 73, 46,189,222, 37, 33, 64,168, 9, 37,141, 14,210,171, 20,
- 81, 16, 16, 65, 80, 80, 64, 80, 65,165,137,244,162, 8, 34, 69,154, 10, 88, 64, 58,130,244, 18, 58,132, 4, 66, 73, 32,148, 64,
-218,165,247,114,125,119,126,127, 36,151,111, 8, 41,151,128,141,223,190,207,231, 62,119, 91,238,237,204,206,236,206,155, 55,173,
- 0,222,200, 78, 76, 4,165, 92,252,220,185,187,106,253,132,184,184,184,184,213,111,212,184,193,154,205,187, 97,208,229,226, 81,
-212, 22, 20,228,165, 96,209,210, 63, 26,120,121,121,117, 78, 76, 76, 60,107,177, 88, 3,105,124,234,244,118, 55, 80,128, 21,201,
-240,231,166,157,200, 16, 89,193,197, 94, 2, 94,155,134,241,227, 70,218,247,123,117,164, 61, 0,196, 63,140, 68, 29, 39,203,116,
-181, 33, 7,175,191, 57,166,137, 3,184, 34,252,188, 63, 82,203, 16,244,249,249,143, 59, 15,187, 6, 59,200,223,236,233,227,184,
- 96, 99,206, 27, 0,182,215,234,161,228,185,167, 70, 17,214,102,244,224, 46, 74, 57,191,250,228,225,246,147,233,138,161,253,130,
-172, 36, 34, 66,168, 54, 9, 60,145,144,239,214,253,148, 47, 37,216, 36, 20,157, 2, 4, 88,134,162,162,162, 8, 66, 72,139,207,
- 62,251,108,196,172, 89,179, 94,177,177,177,169, 15, 0,133,133,133,177, 70,163,241, 28,128,237,148, 82,174, 6, 5, 47, 5,240,
-128, 16, 18,251,240,225, 67,247,159,127,254,217, 1,128,188,228,176, 22, 64, 14,128,212,154,112,150,135, 89, 76,169, 84,170, 47,
- 95,212,125, 48,139, 41, 79, 79,207,134,181,249, 63,203,178, 28,195, 20,175,236, 35,147,201,112,254,252,121,244,237,216, 9,145,
- 39,227,208,212,221, 27, 93, 71,190,131,253,103,206,128,101, 89,243,249, 53, 42, 71, 68, 34, 17, 46, 92,184,128, 33,253,187, 96,
-255,254,253,240, 13, 9,192,228,201,147,113,244,232, 81,136, 68,194,106,122,127,137,192, 2,197,130, 19,191, 47,145,128, 55, 98,
-247,111, 95,227,196,181, 34,253,189, 36,204,110,146,136, 85,187,145,207,167,101,236,249,224,207,208, 71,203,199,142,233,111,221,
-173,115, 79,116,123,165,171,168, 89, 64,231, 57, 0,190, 43,227,170, 52,175,106,174, 12,206,136,133,155,246,220,125,255,247,195,
- 49, 4,166,124, 12, 27,216,138,114, 70, 44,172,198,169,121,134,211,222, 90,241,251,133,243,151, 29,193, 21, 32,229,241, 25,185,
-135,123,125,128, 26,113,255,126, 12,214,254,180,159, 15,189,124,239, 23, 61,139, 41, 15,163,104,161,165,156,197,138,202, 4,123,
-133,244,153, 17,131, 14, 86,226,166,189,218,217, 28,161,148, 82, 91,107,113,211,138,230,198, 42,207,169, 53,242,155,126,217,182,
-249,155,119,223,125,207, 38, 83,151,132,152,132, 59,208,178,158, 96,173, 27,224, 78,248, 49,141,198,200, 87, 59,117, 68, 85,247,
- 51, 35, 35, 35, 45, 34, 60, 11,191,111, 93, 10,163, 81,135,180,228, 98,141,154,156,154, 7, 59, 59,207,203, 53,225, 52,152,248,
-220,215, 7,143,151, 88,201, 97, 53,242,205, 87,165, 15,213, 58, 4, 53,177, 45,206, 22,134, 12,220, 13, 61,143,174,110,197,157,
- 33, 31,222,101, 81,167,173,202,162,112,218,218, 74,166,244,237,228,137,216,184, 20,156,143, 72,218,246, 40,137,170,125, 61,201,
-182,135,241, 57, 31, 12,234, 90, 7,223,254, 18, 53,185, 50,129, 85, 25,103,201,104,193,142,160, 70, 80,147, 22, 20,232,216,188,
- 62,105,102,201,200,193,138, 56, 69, 12,222, 90,249,251,147, 47,118,135,166, 15,250,252,189, 78,118, 29,218,245,149,130, 55,210,
-252, 34,157, 49, 42,150,230, 61, 79, 26, 61,135, 59, 41,112, 10,156,255, 73,206, 18,177,243, 75,201,231, 69,114,170, 81,110, 94,
-166,231,141,123,217,230, 64,181, 90,205,170, 84, 42,174,186, 78,238, 22,112, 94, 45, 43,180, 74,220,171, 42, 93,172, 10, 56,213,
-109,218,180,113, 26, 48, 96, 0, 76, 38, 19, 30, 60,120,128,184,184, 56, 12, 24, 59, 6,142,142,142,184, 26, 21,133, 7, 15, 30,
-224,203, 47,191,132,201,100, 66, 88, 88, 88, 98,117,156, 98,177,216, 16, 16, 16, 32,121,237,181,215, 96, 50,153,240,232,209, 35,
- 60,121,242, 4,147, 39, 79,134,189,189, 61,162,162,162,240,232,209, 35,124,249,229,151,208,233,116,136,141,141, 53,252, 29,121,
-233,255,143,192, 34,224,192, 27,145,123,109, 46, 54, 28,130,193, 96, 66,211, 59, 9,244,113,153, 51,214,183,244, 34, 7,111,222,
-185, 27, 27,113,181,155, 20,121,183, 0,160, 70, 53,135,152, 4,154,220,170,137, 40, 31,166,124, 59,164, 31,193,227,164,252,130,
-152, 4,154, 92, 11,247,130,128, 43, 2,114,195,177,255, 80, 40,100,242, 27,184,118,253, 46,119, 41, 34,230,119,134, 98, 97,212,
- 99,122,191,230,156, 20,138,224, 85,120,103,224,195,226, 17,131,212, 8,202,155, 96,223, 97, 59,198, 12,108, 95,167, 85, 83,135,
- 58,224,141,160,212, 8,199,238,103,128, 47,228, 85,242,133,221,214,109,238, 20, 40,127, 35, 63, 47,163, 77,207,174, 93,108, 92,
- 27,191,137,220,251, 81,184,115,253,132, 38,252, 86,204,229,176,219,186,205,207,147,144,158,158,158,175,116,239,222, 4,195,222,
-153, 9,131, 46, 7,143,238,252,132,252,188, 20,156,191,168,192,221,248,188,118, 0, 44,118,176, 46,221, 54, 54, 3,128,142, 45,
- 36,241,118, 82,189,199,168, 33,253, 33, 19,105,193, 27,243, 65, 12, 25,120,152,101,200,125, 99,110, 34, 7, 0,214,114, 34,178,
- 17,229,218, 89,194,235,239,235,220,200, 90, 98,196,207, 7,238,128, 39,197,203, 44,241, 4,235,127, 62,248,240,131,133, 31, 6,
-193,223,215, 49,192,220, 0,111,113, 58, 1,147,194,255,152,223, 84,123,103, 14, 40,111,196,133,229,142, 77, 59,125,150, 61, 9,
-181,156, 97,253,214, 67,154, 4,224, 3, 63, 31,178,241,163,197, 71,231,132, 52,143,234, 56,237,131, 65,118, 32,194,194,232, 2,
- 4, 8,248, 71,156,192,247,167, 79,159,190,145,101, 89, 87, 0,132, 82, 10,157, 78, 39,250,225,135, 31,196, 38,147,137, 97, 89,
-150,147,203,229,166,136,136, 8, 35,207,243,233, 6,131,225,253,234, 56,245,122,253,195,181,107,215, 54, 48, 26,141,165, 35, 14,
-117, 58, 29,126,249,229, 23,232,116, 58,200,100, 50, 40, 20, 10, 60,122,244, 8,132, 16, 3,199,113, 15,133,148,120,145, 2, 11,
-152,223,225,245,185,115, 65, 65, 64, 48,175,156,184, 2, 0,220, 76,164,234,102,222,228,147,102,129,157,231,150,136,178,249, 53,
- 13,128,150,227,134,180, 10,110,188, 3, 0,116, 60,247,118,109, 34,145,167,213,188, 25,216,186,221,239, 60,165, 34, 19, 71,127,
- 96, 24,236,209, 2,209, 15, 99,171, 31, 57, 87, 25,212,201, 57, 17,125, 59,218, 83,243, 18, 56,165,205,130, 37,211, 49, 80, 74,
-255,183, 12,221, 23,114,100,100,234,170,237, 77,125,254,134,182, 87,235,230,178,113,199,206, 94, 31,207,241,212,131,101, 72,138,
-214,200,111,122, 94,113, 5, 0,137,137,137,103,253,125,201,241,155, 29,221,123,185,148, 76,179,154,145, 3,100,228,226,120, 98,
- 98,254,217,218,112,102,107,140,131,102, 45, 63,240,135, 84,196,138, 0, 10,158, 47,142,175,214,192,101,153, 69, 88,203, 70, 68,
-245,217, 15,166, 29, 44, 75,226,170,227,187,122, 43,249,219, 97,159,157,252,244,206,131,236, 31, 30, 39, 22,215,124, 30, 39,210,
-219, 13, 61,201,156,135, 9,249,159,222,126,144,253, 77, 77,251, 77, 16, 96, 93,171,129,115,159,217,247,188,247, 51, 58,142, 70,
- 2, 24,220,172, 30,233, 57,108,194,154,105,132, 64, 88, 38, 66,128,128,255, 71, 48,187, 88, 12,195, 44,120, 81,156,102, 23, 11,
-192,131, 26,252,231, 42,128, 22, 47, 50,110, 17, 17, 17,153, 0, 50,133, 84,254,107, 65,254,202,105,124, 4,219,188,148,147,121,
- 78, 58,190, 38,225,108,212,168, 17,125,240,224,129, 69,157, 5,133, 52, 18, 56, 5, 78,129, 83,120, 39,191,144,119,242,243,118,
-206,166,255,223,211,232,101,131,208,236,241,247,128,255, 59, 47,118,255,254,125, 34,220,114, 1, 2, 4, 8,248, 91,223,201,194,
-164,195, 2,158, 2, 35,220, 2, 1, 2, 4, 8, 16, 32, 64,128,128, 23, 11, 2,160,121,133, 82,188, 6,214, 31, 33,164,121,141,
-165,126, 53,252, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,190,124,156,213,113,191, 44, 77,143, 66, 31, 44,129, 83,224, 20,
- 56, 5, 78,129, 83,224, 20, 56,255,113,206,151, 13, 66, 19,161, 0, 1, 2, 4, 8, 16, 32, 64,128, 32,176, 4, 8, 16, 32, 64,
-128, 0, 1, 2, 4,129, 37, 64,128, 0, 1, 2, 4, 8, 16, 32, 8, 44, 1, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32,
- 64,128, 0, 1, 2, 4, 8,248,215,224, 47, 29, 69, 40, 64,128, 0, 1, 2, 4, 8, 16,240,255, 17, 12, 0, 16, 66,104,201,167,
-179,112, 75, 4, 8, 16, 32, 64,128, 0, 1,127, 55, 94, 54, 45, 82,186, 84, 14,165,148, 16, 66, 40,158,127, 61, 37, 1, 2, 4,
- 8, 16, 32, 64,128,128, 26,227,101,210, 34, 76, 89,229, 8,160,139,144,188, 2, 4, 8, 16, 32, 64,128,128,127, 2, 47,147, 22,
-121,202,193, 18,146, 86,128, 0, 1, 2, 4, 8, 16,240, 79,225,101,210, 34,194, 40, 66, 1, 2, 4, 8, 16, 32, 64,128,128, 23,
- 12, 97, 20,161, 0, 1, 2, 4, 8, 16, 32, 64,192, 11,134,224, 96, 9, 16, 32, 64,128, 0, 1, 2, 4,252,151, 4, 22, 33,164,
-185,192, 41,112, 10,156, 2,167,192, 41,112, 10,156, 2,167, 32,176, 4, 8, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0,
- 1, 2, 4, 8, 16, 32, 64, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 32, 8,
- 44, 1, 2, 4, 8, 16, 32, 64,128,128,127, 8, 4, 64,133, 35, 1, 40,165,183, 45, 38,169,197,104,130,234,248, 5, 78,129, 83,
-224, 20, 56, 5, 78,129, 83,224,124,249, 56,171,227,174,137,254,248, 87, 11,172,191,114,162, 81, 66, 72,243, 23,125,163, 4, 78,
-129, 83,224, 20, 56, 5, 78,129, 83,224,124,249, 56, 95, 54, 8, 77,132, 2, 4, 8, 16, 32, 64,128, 0, 1, 47, 24,162,127,234,
-194,132, 16,166,140,192,227, 1, 80,250,156,118,218, 95,193, 41, 64,128,128, 23,131, 87, 2,201,116,169, 68, 60, 86,107, 48,126,
-117,225, 6,253,169, 75, 48,113, 54,241, 88, 38,151,136, 58,233,244,166,175,207, 71,210, 31,106,248,188, 63,181, 40,172,240,172,
- 63, 63,122,245,234, 53, 30,192, 92, 74, 41,229,121,126,246,169, 83,167,182,189,136,119,189,135,135,199,112, 0,214, 0,192, 48,
- 76,110, 82, 82,210, 46, 75,254,219,165, 75, 23, 81, 65, 65,193, 19, 0,158, 37,187,238, 71, 68, 68, 52,174,238,152,128,154, 35,
- 60, 60,156,250,248,248,160, 69,139, 22,247, 82, 82, 82,214, 80, 74,215, 11,119,229, 95, 36,176,154,184, 89,181,173,235,237,250,
-234,145,240,184,217,213, 61,112,158,158,158,203, 92, 93, 93, 39, 20, 21, 21,105, 1, 80,134, 97,168,159,159, 31, 8, 33, 48,191,
- 55, 57,142, 75,191,123,247,110,115, 75, 31,226, 23,197,217,184,113,227,112,134, 97,188,202,190,191,171,251,205,243,124, 98, 84,
- 84, 84, 72,117,225, 84, 42,149,189, 25,134,153, 81,221,121, 60,207, 47, 75, 78, 78, 62, 86,213, 57, 45, 90,180,184,110, 99, 99,
-227,206, 48, 76,165,171,143,151, 45,115, 76, 38, 19, 45, 42, 42, 74,189,115,231, 78, 80, 77,211,214,211,211,115, 54,165, 52, 8,
-192,214,228,228,228,195,148, 82,238,121,242,138,167,167,231, 27,148,210, 47, 74,238,225,162,164,164,164, 61, 53,249,127,163, 70,
-141,194, 37, 18,137, 23,203,178,164,124,154, 84,180,205,243, 60,213,235,245,137,247,238,221, 11, 17, 30,251,191, 31,237, 3, 73,
-219, 38,245,148, 95,126,248, 86, 87,124,186,236,247, 15, 59,182, 32, 25, 86, 54,146,245,111,116,108,224,224,239,235,128, 5, 27,
- 47, 79, 1, 96,177,192, 34,132, 16,111,111,239, 64,119,119,247,122, 26,141,134, 3,128,102,205,154, 81,150,101,159, 58,207, 96,
- 48, 24,238,222,189,123, 88, 72, 1, 11, 11, 4,145,232,203,131, 7, 15, 42,121,158, 71,191,126,253,230, 1,216,246, 2,104,137,
- 76, 38,179,122,252,248, 49,140, 70, 35,227,227,227,163,168, 97, 25,229, 18, 17, 17, 1,131,193,160,111,215,174,157, 79,217, 99,
- 82,169,212,229,210,165, 75, 0,160, 15, 14, 14,246,169,109, 0,253,253,253,109,108,172,172,166,178,132,244,224, 40,109, 10, 0,
- 44, 33,119, 57, 74, 79, 22,106, 52, 43,163,162,162, 10, 95,246,180, 63,113,226, 4,198,143, 31,143, 91,183,110, 53, 57,124,248,
-240,247, 42,149,106, 82,114,114,114, 87, 74,105,186,240,100,252,195, 2,171,161, 82,209,196,195,197,249,208, 87,139,231, 3,192,
-236,170,132,144, 82,169,252,170, 83,167, 78, 99,127,253,245, 87,155,125,251,246,217,212,171, 87, 15, 18,137, 4, 44,203,130,101,
- 89, 48, 12, 3,150,101, 49,104,208, 32, 98,169,184, 42,203,121,234,212, 41,155,198,141, 27,151, 22,178,148,210, 82,145,213,175,
- 95,191,106, 57, 25,134,241,186,126,253,186,155, 92, 46, 47,253, 63,207,243, 79,125, 40,165,165, 31,142,227,208,169, 83, 39,139,
-238, 19,195, 48, 51,162,163,163, 95, 41, 44, 44,124,138,195,124, 13,243,239, 87, 94,121, 5, 0,142, 85,195,165,186,120,254,148,
- 27, 49,196, 2,166, 44, 80,214, 9,144,214, 7, 24, 89,133,231,103,101,101,161,107,215,174,108,109,210,215,213,213,117, 84,104,
-104,104,195,199,143, 31,191,182,100,201,146, 76,149, 74,245, 61,128, 31,213,106,117, 66,109,248, 40,165,139, 98, 99, 99, 27, 81,
- 74,225,235,235,187, 16, 64,141, 4, 22,203,178, 94, 39, 78,156,112,147, 74,165,165,233, 92,217, 55,199,113, 48, 24, 12,232,211,
-167,143, 73,120,228,255,161, 23, 13,193,194, 97, 3,123, 66, 99,100, 96, 52,154, 92,149,174,182,191, 76, 25,213, 89, 12,170,199,
-182, 63,174,195,104,226,127,170,169,184,234,219,183,175,207,250,245,235, 69,209,209,209, 34, 63, 63, 63,112, 28, 87,250,225,121,
-190, 70,207,165,128, 82,129, 69, 24,134, 65, 82, 82, 18, 20, 10,133,125,215,174, 93,213, 28,199,205, 58,119,238,220,182, 23,125,
-173,242,206, 22, 33,164, 80,173, 86,111,255,187,227, 28, 24, 24,216,201,206,218,250,247,249,115, 63,113,107,218,172, 57,227,236,
-234,140,135, 15, 19, 33, 21,209, 14, 15,239,221,111,179,112,233,119, 31, 4, 6, 6, 14,187,113,227,198,249,151, 45,189,125, 94,
-255,225,123,222,100,152, 80,188,229, 0, 96, 19,242,243,243,241,222,123,239,225,192,129, 3,126,109,219,182, 93, 6, 96,172,240,
-100,252,131, 2,171,129,167,149,167,173,204,230,248,198, 13,107,136, 49, 63,213,177,154, 7,106, 81,167, 78,157,222,254,245,215,
- 95, 29, 9, 33, 56, 53,249, 93, 56, 24,180, 80,125,249, 53, 28, 93, 92,161,159, 49, 30,182,156, 9, 45, 78, 71,214,228, 33,125,
-138,243,222,189,123,200,202,202,130,171,171, 43,172,173,173, 33,147,201, 32,145, 72, 32,149, 74, 45,229,132, 92, 46,199,137, 19,
- 39, 32, 18,137, 74, 63, 44,203, 86,184,237,238,238,110,241,189,226,121,126, 89,211,166, 77, 91,198,196,196,216,101,103,103,163,
- 93,187,118,121,132,144,155,101,132, 71,203,155, 55,111,218, 89,252,146, 50,196,162, 32,126, 3,104,246, 30,192,225,117,112,118,
-195,160, 69,253,167, 10, 25,179, 40,228,184,218,155, 78,233,233,233,134,115,231,206, 33, 48, 48, 16,191,255,254,187,115,118,118,
-246,151, 91,183,110,253, 66,165, 82,205, 86,171,213,203,106, 65,233, 4, 0,247,238,221, 3, 0,199,218,132, 73, 42,149,226,202,
-149, 43,160,148,150,138,114,134, 97,192, 48, 12, 14, 62,112, 65,161,158, 65, 81,234,109, 76, 25,224,131,122,245,234, 61,227,106,
- 9,248,123,208, 41,128,244, 11, 9,108,222,214,199,187, 14, 66, 47,133, 65, 34, 21, 59, 76, 28,221, 31,182, 10, 17,150,255,248,
- 39, 31,159,152,245,225,249, 72,186,205,194,103,147, 40,149,202,150,189,122,245,242, 94,191,126,189, 4, 0,110,223,190,141,228,
-228,100,184,185,185, 65, 46,151, 67, 44, 22,131,101, 89, 72, 36, 18,225,230,215, 0,193,193,193,205,122,247,238,109,195,113, 28,
-138,138,138,176, 97,195, 6,123,185, 92,110,223,191,127,127,139,157,172,138,154,237, 0, 52,213,233,116, 26,165, 82,105, 13,128,
-103, 24,166,160,188,179, 5, 0, 74,165,210,166, 2, 74, 19,128,140,224,224, 96, 79, 0,210, 18,190,210, 99,122,189,190,178, 99,
-150,198,185, 67, 72,160,223,225,133,139,230,218,164,164,222,135,189, 93, 10,120, 99, 26,190,255,254,123, 88, 89,217, 97,222,188,
- 89,162,253, 33,193, 30, 31,127, 50,243, 80,171, 86,173,250, 92,187,118,237,242,203,148,230,188,201, 48, 33, 32,164,125,233,246,
-182, 19,171,161,179, 15, 66,210,188,121, 88,181,106, 21, 26, 53,106,212, 90,120, 50,254, 65,129,213,188,142,189,131,140,136,143,
-255,176,126,165, 20,134, 66,199,123,215, 46,162, 89,223,247,205, 98,225,118,217, 23, 35, 0,198,221,221,125,226,246,237,219,237,
-204,133, 93, 99,194,193, 1, 6,212,245,247,135,181,189, 3, 82, 77, 6, 80,163, 1, 82,137,164,194, 2,209, 18, 78,134, 97, 32,
- 22,139,159,250, 72,165, 82,148,117, 59, 42,227, 44, 87,155, 3,203,178, 56,113,226, 4,140, 70, 35,134, 12, 25, 82,161,216,170,
-196,161,169,144, 51, 57, 57,249,152,167,167,231, 77, 74,233, 43, 60,207,131, 16,114, 51, 41, 41,169,179,249,184, 82,169,236, 29,
- 16, 16, 48,131,231,249,101,213,113, 82, 74, 1, 83, 38,104,214,118,216,182,203, 64,222,101, 23, 16,155, 30,224,224,131,219, 15,
- 82,112, 42,252, 9, 50,178, 10, 16,220,216, 13,189,218,249,130,231,121,139,195, 89, 22, 42,149,170,145,191,191,127, 83,163,209,
-136,115,231,206,129,227, 56,180,104,209, 2, 99,198,140, 97, 86,175, 94, 61, 6,192,178,154,114, 2,136,140,136,136,232,145,146,
-146, 2, 0,183, 44,112,188,110, 87, 36,132,127,254,249,103,104,181,218,103,206,119,236,188, 4,159,190,238,131, 49,147,183,225,
-235,152, 93, 88,183,110, 29,202,119,209,249, 43, 70,192, 8,156, 21,169, 34,140, 25, 58,248, 53,176, 18, 27,220,123,152,136,206,
-109,131,224,230,230,134,155,209, 15, 17,159,148,149, 74, 8,222,233,211, 65,182, 76,163,209,127,113,238, 6,253,177, 58, 78,165,
- 82, 89,127,211,166, 77,226,178,251, 36, 18, 73,169, 11, 94,214, 13, 47,223,100, 40,164, 81,197,156,193,193,193,205,122,246,236,
-121,126,238,220,185,182,241,241,241,184,120,241, 34,124,124,124,160,209,104, 80, 93,215,182,114,156,207, 52,219, 81, 74,121, 0,
-191,213, 38,156,161,161,161, 38, 0, 94, 21,157, 83,213, 49, 75,226,222,162, 69, 11,107,107,185,124,231,130,133,115,108, 34, 34,
- 14,163,125,135, 62,176,178,109, 8,147, 33, 17,153, 89, 5,200,126,160,198,210,165, 43,241,197, 23, 51,177,100,241, 66,219,225,
- 35,199,252,222,174, 93,187, 70,151, 47, 95,214,190, 44,233,206,136, 36,235, 35,195, 47, 77, 0,128,188,232,189,248,104, 68,123,
-228,231, 63,192, 7, 31,204, 65, 82, 82, 18,238,223,191, 31,241,119,134,243,165, 21, 88,132, 16, 74, 41,173, 81, 21,223,203,139,
-200,109, 57,171, 67,223,127,187,204,222, 86, 97,237, 26,126,124, 63,226,226, 82,170,252, 79, 81, 81,145,254,192,129, 3, 56, 62,
-105, 44, 26, 17, 19, 28,191, 92, 14, 55,149, 10,185, 99, 7,161,192,104, 64,131, 35, 97,144, 41, 20,144,218, 40, 44,118, 28,138,
-138,138,244,103,206,156,193,157, 59,119, 32, 18,137,160, 80, 40, 96, 99, 99, 3,153, 76, 86, 42,172,204, 47, 96, 75, 57, 41,165,
- 16,137, 68,184,125,251, 54,226,226,226,224,224,224,128,139, 23, 47,162, 71,143, 30, 79,137, 43,150,101,159,234,227, 85,131, 12,
- 95,161,163, 84,210,239,234,152,197, 68, 98, 23,192,233,109,228, 95, 81, 1,142, 35, 97,164,246,224, 41,143, 27, 15, 50,241,254,
-200, 87, 1, 0, 19,191,216,128, 30,109,234,149, 54, 65,214, 4,158,158,158,239,183,108,217,114,229,132, 9, 19, 24, 27, 27, 27,
-232,116, 58,232,116, 58,220,187,119, 15,206,206,206,176,182,182,150,212,242,129,127,172, 82,169, 32,151,203, 65, 41,125, 92, 27,
- 14, 66, 8,118,238,220, 89,225,177,119, 86, 70, 65, 84,220, 61, 11,235,215,175,135,201,100, 66, 77,243,183,128, 23,245,118,135,
-167,187,135, 23, 24,106,132, 58, 53, 3,131,250,245,130, 72,162,192,147,196, 12, 4,248,251, 42,223, 26,208, 65,201, 18, 19, 62,
-255,106,251, 68, 0, 63, 90,240,188,115,209,209,209,226,200,200, 72,176, 44, 11, 59, 59, 59, 88, 91, 91, 67, 34,145, 64, 38,147,
-149, 10, 43,193,193,170, 26,189,123,247,254,144,231,249, 89, 60,207,103,247,236,217, 83, 53,127,254,124,251,196,196, 68,220,190,
-125, 27,219,183,111,207,160,148,154, 74, 58,187,207,123,222,107, 89,224,108,129, 16, 82,227,126, 78,254,254,254, 18,147, 33,231,
- 35,123, 43,110,160,136,177,243, 49,229, 21, 60,206, 51, 50, 7, 98, 18,213,171, 41,165, 85,118, 9,144,137,197, 31,174, 90, 62,
-203,221,197,217,128,222,189, 7,226,209,227,108,204,156, 57, 4,121,121, 90,252,250,243, 10, 0, 82, 24, 76, 44,130, 90,247,129,
- 82,233,141,142,237, 59, 42,207, 93, 56, 55, 17,192,138,151, 37, 15,196,237,125,111, 34, 33,100, 97,157, 58,117,206,110, 88,186,
-180, 97,247,238,221, 1, 0,167, 78,157,194, 79, 35, 70, 96, 30, 48,106, 53, 33,201, 83, 40,157,249,119,133,169, 54, 90,228, 95,
- 45,176,204, 17,170, 73,196, 8, 33,164,129,187,237,174,249,179, 62,172, 87,167,190,175,199,213, 63,119, 34, 54, 54, 9,169,169,
-217,149, 21,168,148, 16,194, 19, 66,248,250,245,235,195,206,168,133, 61,213,195, 77,169,130,173,147, 51,178,141, 37,206,149,141,
- 13,164, 54, 10,139, 94,142,101, 57,253,253,253,145,154,154, 10,137, 68, 2,133, 66, 1, 91, 91,219, 82,129,101, 22, 87,150,190,
-112, 9, 33,224,121, 30, 34,145, 8, 55,111,222, 68,199,142, 29,225,237,237,141,223,127,255, 29,189,123,247,126,198,197,170, 77,
-211,147,185,207, 85, 89,231,138, 97,152, 25,150,116,110,127, 10,210, 6, 48,217,190, 9,198,186, 59, 12,212, 14, 58,170, 44,105,
- 18,164,248, 51, 44, 21, 49,113, 25, 79, 53, 23, 90, 46,158,189, 84,114,185,124,219,194,133, 11,187,133,132,132,192, 96, 48, 0,
- 0,172,173,173,161,211,233, 32, 22,139, 97, 48, 24,160,209,104,146,254,137,140,107,190,231,199,143, 31, 7, 33,164, 84,232,154,
-155, 10, 11,147, 19, 48,102,202,175,144,138,128,155, 55,111,162,105,211,166, 66,137,250, 15,193, 74, 46,119,150,202,237,193,155,
-180, 16,137,197,168,227, 93, 23, 60,167, 67,118, 94, 17,222,121,115, 0,174,223,138,194,225, 51, 87, 77, 70, 35,191,218, 82,206,
-198,141, 27, 35, 45, 45, 13, 44,203,194,214,214, 22, 54, 54, 54,104,210,164, 9, 18, 18, 18,158,114,177, 4, 84, 14,134, 97,102,
- 31, 62,124,216,157,101, 89, 15,147,201,132,132,132, 4,220,188,121, 19,107,214,172, 73, 45, 44, 44,236, 18, 17, 17, 17, 83, 11,
-218,202,154,237,158,233,172, 94, 27,103,171, 92,229,175, 97, 29,119,249,201,229, 95, 77,242,106, 17,208,138,200, 89, 69,110,209,
-195,180,142, 97, 87, 47,119,248,226,199,221, 31,186,187,187,119, 79, 77, 77,173,180,242,198, 50, 76,143, 38,205,154, 51, 60,159,
- 8, 86,210, 20,223,174,252, 20, 89,217,133, 40,200,215, 0,144, 66,111, 20, 65,167, 35,232,218,173, 59,126,223,121, 0,173, 66,
- 90,177, 44,195,244,122,153, 4, 22, 0,176, 44,187,108,255,254,253, 13,229,114, 57, 22, 47, 94, 12, 91, 91, 91, 92, 89,184, 16,
- 63, 73, 36,176, 2,176,222, 96,152, 1,224,111, 17, 88,181,209, 34,255, 9, 7,171,166,240,242,242, 90,209,182, 67,155, 87,234,
-251,183,146, 95, 61,186, 23, 15,238,199, 33, 35, 35, 23, 20,208, 84,165, 43, 8, 33, 84, 44, 22,195,237,243, 5,168,211,162, 5,
-138,198,191,129,108,163, 1,190,127, 94,129, 76,161,192,221,158, 65,160,122, 61, 58, 69,167, 90, 42, 92, 40, 33,132, 2,128,139,
-139, 11, 36, 18, 9,228,114, 57,228,114,121,105,223,171,178, 31, 75,197, 16,207,243,200,203,203,195,227,199,143, 49,126,252,120,
- 88, 91, 91,131, 16,130,212,212, 84,248,248,248,128,101, 89, 36, 37, 37,225,244,233,211,168, 95,191, 62,164, 82,105,141, 50, 67,
-153, 78,237, 45, 61, 61, 61,207, 18, 66, 90,134,135,135,219,133,132,132,160, 70, 14, 22,145, 64, 7, 31,112,240, 2, 79,255,215,
-215,202,104,122,186,242,102, 22, 89,150,192,195,195,195,175,121,243,230,151,215,172, 89,109,235,230,230, 14,158,231, 96, 52, 26,
-145,155,155,135,162,162, 34,212,169, 83, 7, 54, 54, 54,116,249,242,229,132,227,184,127,108, 40,175, 89, 80,153, 29, 68,115,255,
- 43,134, 97, 48,101, 96, 29,100,103,219,130,101,139,183, 45,141,187,128, 23, 15, 27, 27, 91, 39,145,196, 6, 60, 35,130,189,189,
- 35, 68, 82, 27,240, 38, 17, 56, 30,176,181,119,193,165,235,247,112,249, 86,254,251,105,153,216,101,193,115, 67,155, 55,111, 78,
- 89,150,133,155,155, 91,169,152, 18,139,139, 91, 12,221,221,221,145,151,151, 7,150,101, 75,247, 9,168,186, 34,249,228,201, 19,
- 20, 22, 22,226,202,149, 43,216,185,115,103,122,121,113,213,171, 87,175, 9,214,214,214, 95,104,181,218,197, 71,143, 30,253,190,
- 42,206,154, 54,219,213,198,249,138,136,136,104, 28, 28, 28, 44,246,114,147, 28, 62,178,119,165,151, 29,119,157,224,201, 56, 32,
- 38, 47, 90, 17,230,214,190,123,235,254,196,127,193,199, 62,131,230,172, 60, 66, 8,241,171,108,196, 51, 5,154,203,173,228, 0,
- 37,184,120,225,104,113,179, 96, 86, 62, 10, 10,181,208, 25, 88,232,244, 4, 90, 3, 65,247, 30,125,176,233,199, 29, 72, 78,203,
- 6, 5, 90,188,108,249,160, 81,163, 70,193,158,158,158,248,248,227,143,161,221,190, 29, 5, 0,250, 3,216, 95, 82,169,182, 5,
-166, 9, 79,203,223, 40,176,188,188,188, 62, 12, 8, 8,120,111,243,214, 95, 21, 95,205,249, 60, 47, 59,250, 22,171,215, 24,108,
-116, 70,163,254, 97,114,230,234,170, 94,142, 77,155, 54, 45,174,117, 58, 56,194,218,206, 30,186,114,206, 21,213,235,193, 27,244,
-144, 88,248,114, 52,115, 82, 74, 97,101,101, 5,169, 84, 90,161,115, 85, 19, 7, 11, 0,114,114,114,176,115,231, 78,180,110,221,
- 26,214,214,214, 96, 89, 22, 45, 91,182, 68,116,116, 52,124,125,125, 1, 0,251,247,239,199,235,175,191,142, 7, 15, 30,192,207,
-207,175, 38, 67,143, 75,155, 8,143, 31, 63,110, 71, 41,125,133, 82,138,244,244,218,141,134,229, 56, 14,133,133,133, 56,126,252,
- 56,212,106, 53, 60, 60, 60,144,155,107, 11, 59, 21, 95, 42, 22,205, 31, 11, 95,188,159,191,251,238,187,182, 10,133, 2, 28,103,
-130, 88, 44, 46, 21,174, 98,177, 4,247,238,221,195,136, 17, 35,114,159, 60,121,242, 89,109, 70,253, 16, 66,136,151,151,210, 61,
- 55, 55, 27,249,121, 57, 96, 89,120, 19, 66,216,218, 76,253,192, 48, 76,233,183,249, 67, 8,129, 68,204,194,195,221,181,180,227,
-123,137,123, 39, 52, 17,254,125,133,183, 13,128, 97, 0,222,238,210,218, 94,148,149,175, 1, 76,122, 60,126,242, 24, 57,133, 6,
- 80,147, 17,241,137,201, 40,212,241,200,204,202, 71, 64,112,239, 53,103,206,156,153, 77, 8,153, 69, 41, 61,100, 73,158,191,118,
-237, 26,206,157, 59,135, 11, 23, 46,192,220, 81, 26, 0,236,236,236,112,226,196, 9,116,237,218, 85, 72,136, 42, 96, 48, 24, 22,
-247,234,213,107,150,135,135,135,124,197,138, 21,246,117,234,212, 1, 33, 36,175,188,115, 21, 18, 18, 50,123,198,140, 25,202, 33,
- 67,134, 76, 1,240,125, 45, 47, 87, 85,103,245, 42,203,168,138,166, 98, 72, 75, 75,153,176,113,219, 24, 87, 27,241, 99, 53,158,
-124, 91, 34,190, 88,160, 40, 15, 56,243, 43, 36,175, 44,120, 50,178,219, 68, 55,117,254,234,119, 1,108,170, 36,147,242,247, 98,
-226,176,110,221, 42,124,241,197, 68,108,255,117, 21,120, 42, 65,126,161, 17,238,170, 64,232,141, 60, 8, 35, 70,187,246,157,112,
-225,210, 85,128, 51, 96,202,248,203, 47,221, 92,107,247,239,223, 15,139,139,139,107, 58,103,206, 28,108,241,244,132,173,173, 45,
-166,206,157,123,217,100, 50,181, 23,158,146, 23, 32,176,106, 98,201,121,121,121, 13, 86, 42,149, 95,253,250,235,175, 86,106,181,
- 26,170, 70,205,236, 14,238,222,169,115, 83, 72, 52,201, 89,217,163,111, 36, 21, 84, 59,220,158, 97, 24,152, 22, 78, 69,166, 73,
-143,122, 7, 47, 65,166, 80, 32,166,119, 8,168, 94,143,246, 17, 79, 32, 83, 40, 32,146, 91,213, 56, 50, 21, 57, 86,101, 63,230,
-194,184, 58,232,245,122,135, 30, 61,122,160,123,247,238,120,227,141, 55, 74,155, 2, 3, 3, 3,177, 99,199, 14, 12, 30, 60, 24,
-145,145,145, 80,169, 84,104,210,164, 9,154, 52,105,130, 51,103,206,212, 40,172,102, 7,171,119,239,222,121,132,144,155,148,210,
-150, 97, 97, 97,118, 53,229, 48, 11,168,227,199,143,227,213, 87, 95,133,175,175, 47,174, 95,191,142, 19, 11,150, 67,164,112, 1,
- 24, 55, 80,158,150, 58, 91,150,244,193,146, 72, 36, 29,235,215,175,143,148,148, 84,200,100, 50, 56, 58, 58,192,202,202, 10, 50,
-153, 28, 75,151, 46,229, 55,109,218,180,150, 16,178, 64,173, 86,103,213, 66,156, 55, 8, 8, 8,248,121,244,168,145,109,156,157,
- 93,224,238,174,196,140,233, 51,251,108,223,241,251, 29, 79, 79,207,225, 73, 73, 73,183, 44,229, 34,132, 64,175,215,131,101, 89,
-236,143,113, 69,161,158, 32, 47, 49, 2, 31, 13,244, 41, 21, 91,230,166, 94,243,244, 23, 2,254, 30,176, 44,187,101,234,212,169,
- 93,134, 14, 29, 74, 36,140, 81,127,226,216, 54, 17,199,153,200,167,179,126,224, 66,207,159,101, 56,206, 68,222, 24, 49,141, 63,
-124,250, 22,243,254,148,229, 92, 96,219, 87,113,251,246,109,143,254,253,251, 47, 2, 96,145,192, 50,167,113, 37,215, 23,154, 8,
-171,193,201,147, 39,215, 2, 88,219,171, 87,175, 20,107,107,107, 20, 20, 20, 60,211, 79,209,223,223,223,166, 89,179,102, 18,169,
- 84,138,224,224, 96,215, 94,189,122,197, 16, 66, 86, 28, 59,118,108,115, 77,174, 85,145,179,245, 60,211, 52,216, 58,113, 3, 90,
-180,106, 98,123,207,102,142,173,149, 88,123,163,110,140,220,142, 0,200,213,120, 60,186,152, 56,188,128, 73, 99, 3, 90,116,243,
-135,173,216,122, 96,101, 2,139, 0, 55, 11,243,243,123, 21,105, 76, 56, 27, 26,137, 33, 67,234, 64,107, 96,160,209, 50, 48, 24,
- 41, 24, 86, 2,194, 74, 48,122,236,123,208,155,120,228, 36, 39,131, 0,145, 47, 91, 62,224, 56,110,198,160, 65,131, 90, 45, 94,
-188,216,111,234,212,169, 0, 0,149, 74,213, 78,165, 82, 69,253,221,243, 96,189, 76,205,131, 79, 57, 88,213, 69,172, 75,151, 46,
-155,141, 70,227,107, 54, 54, 54,142,239,189,247,158, 33, 35, 35, 3,251,246,237,195, 79, 63,253, 84, 84,104,100,195,115, 50, 77,
-163, 30,169, 11, 18, 45, 41, 20, 25,134,129,196,104, 4, 53,253,207,185,226,117,186, 82, 39, 75,108,101, 93,211,218, 50, 40,165,
- 21,138, 42,179,147, 85,147,151,173, 76, 38,203,185,112,225,130, 91, 98, 98,226, 83, 29,218,235,213,171, 7, 0, 8, 11, 11,195,
-149, 43, 87, 48,124,248,112,136, 68, 34, 72, 36, 18,220,188,121, 51,191, 38, 97, 54, 11, 30,243, 40, 66,165, 82,217,187, 77,155,
- 54, 21,142, 30,180,132, 43, 62, 62, 30,190,190,190,208,233,116,112,112,112, 64,102,242, 99,196, 63,142, 69,145, 46, 6,245, 61,
-228, 72, 75, 75,131, 76, 38,179,244,129,227,204, 5,151, 78,167, 67,114,114, 10, 84, 42, 21,126,249,229, 87,108,222,188,121,184,
- 90,173,222, 85,211, 48, 18, 66, 68, 74,165,114, 90,255,254,253, 23,189,246,218,107,162,162,194, 2, 80,190, 88,240, 72,164, 18,
-124,247,221,119, 77, 78,159, 62,125,195,211,211,115,137, 92, 46, 95,244,240,225, 67,125,117,105, 14, 0, 91,182,108, 1, 0, 88,
-183,157,139, 25, 67,235,226,237,137,219,176, 98,197,222,167,226,202,178, 44,230,207,159, 47,148,168,127, 35,218,182,109, 27, 56,
-107,214, 44,177,185, 79,156,170,206, 98,147,193, 96,224, 1,160,105,203, 87,254,231, 84,246, 6, 30, 60,120,128, 21, 43, 86,160,
-176,176, 16, 34,145,200, 98,155,185, 71,143, 30,232,221,187,119,105, 51,161,139,139, 11, 12, 6, 3, 76, 38,147, 32,174,106,232,
-100,189,250,234,171,179,120,158,167, 60,207,207, 49,239, 15, 14, 14,182,170, 83,167,206,197, 85,171, 86, 57,155, 76, 38, 76,155,
- 54,205, 33, 35, 35,195, 97,210,164, 73, 51, 1,108,174,164,156,168,201,236,234, 22, 77,211, 80, 81,159, 46, 66, 72,125, 27, 27,
-123,164, 35, 5, 57, 46,198,192, 28,103, 83,214,241,228,247,111,122, 39, 4, 52,181,226,140,190, 76,158, 30,246, 86,118, 0, 79,
- 27, 85,250,158,227,249,227,209,119,162,186,123,121,250,178, 7, 14,134,226,213, 1,131,161,213, 19,104, 13, 12, 8, 43, 6, 97,
- 37,104,213,166, 61,234,249, 54, 6,207, 3, 81,145, 17, 6, 35,207, 31,121,153,210,222,231,245, 31,190,247, 26,176,110, 2, 0,
- 76,251,238, 20,102, 47,252, 22, 35,223,232,141, 49, 99,198,252, 99,243, 96,189,180,125,176,170, 16, 87,239, 56, 58, 58,142, 24,
- 59,118,172, 85, 88, 88, 24, 22, 46, 92, 40, 58,113,226,132,225,218,181,107, 38,142,227,166, 37, 37, 37,109,172,201, 69, 25,134,
- 65,253, 95,255,132,202,195, 3,247,251,180,122,202,185, 58,219,210, 11,188, 78,135,158,177,185, 53,142,140,185, 41,203, 44,172,
-204,226,170,178,169, 20,170,169,129, 87, 56,239,213, 7, 31,124,128,205,155, 55,163,125,251,246,104,216,176, 33, 68, 34, 81,105,
-179, 84,109, 28, 44, 51,106, 60,122,176, 92,109,190, 78,157, 58,184,117,235, 22,236,237,237,241,243,207, 63,195,219,203, 19,163,
-122,213,131, 94,175,135,209,104, 68, 97, 97,161,217,193,170, 54,160, 60,207,223,217,183,111,159,239,208,161, 67,169, 72, 36, 34,
- 58,157, 14, 0,176,122,245,234, 52,181, 90,189,167,166,225,243,244,244,124,163,126,253,250, 63, 14, 31, 62,220,182, 73,147, 38,
- 72, 77, 77,197,213,171,151, 49,115,230,140,171, 98,177, 72,219,167,111,191, 46,126,126,205, 48,113,226, 68, 38, 48, 48,240,139,
-153, 51,103, 78,243,246,246, 30,147,144,144,176,179, 58,145,181, 99,199, 14, 0,192,187,223,221,133, 94,111, 4, 80, 60,106,208,
-195,195,227,169,115, 31, 62,124, 40,140, 34,252, 27, 97, 50,153, 40,195, 48, 36, 33, 33,193, 96,109,109, 77,156,156,156, 68, 50,
-153, 12, 58,157,174, 84,104, 61,120,240, 0,135, 14, 29, 66, 98, 98, 34,156,156,156, 24,123,123,123,152, 76,166,108, 75,243,124,
-217,209,130,102, 65, 37,136,171,154, 35, 52, 52,116, 45,128,181,101,132,235,120, 66,200,116,133, 66, 97,183,121,243,102, 7, 59,
- 59, 59,114,232,208, 33,253,134, 13, 27, 10, 88,150,205, 6,176,188,170, 50,229, 69,205,174, 94,153,243, 5, 0,156, 9,247,179,
- 11, 98,125,196, 10, 37, 31,169, 37,151, 62, 78,152,209, 52,155,105,228, 78,154, 53, 51, 13, 73,187,115,113,148,241, 81,251,244,
-212, 52,194, 81,122,183, 50,238,236,220,220,239,127,220,250,251, 71,251,246,108,171, 35,183,179,198,200,183, 63,196,241,147,231,
- 33,149, 89,227,106,248, 13,232, 13, 28,158,196, 39, 97,248, 91, 35,161,116,115, 6, 91,164, 78,214,233,245, 27, 95,166,180,127,
-106, 30,172,144,246,184,184,119, 57,118,196,212, 65,210,194,133,255,232, 60, 88, 47,157,131, 85, 25,218,180,105, 99,171,211,233,
-190,251,228,147, 79,172, 10, 11, 11,145,145,145,129,204,204, 76, 92,189,122,245,132,209,104,252,168,170, 81, 26, 21,173,182,109,
- 30,241,229,228,234, 6,153,194, 22, 84,175, 47,117,174, 36,214, 54,224,117, 58,240, 6, 61, 80, 73,115, 78,101,156,132,144,103,
- 92, 43, 75,197, 85,121, 78,179, 35, 86,209,164,162,222,222,222, 88,178,100,201, 51,211, 52, 88, 18,206,146, 90, 90,111, 66, 72,
- 75,179,243, 68, 41,109,169, 84, 42,123, 91, 50,114,176, 50, 78,158,231,209,185,115,103,156, 56,113, 2,183,110,221, 2,195, 48,
-232,219,183, 47, 8, 33,176,183,183,135, 72, 36, 42, 21,115,230, 1, 1, 85,113,114, 28,247,246, 79, 63,253,244,233,145, 35, 71,
- 62,159, 60,121,178,213, 43,175,188, 98,238,231,149, 94, 50,242,167, 70,225,228,121,126,222,205,155, 55,109, 77, 38, 19, 22, 47,
- 94,140,240,240,240,194,135, 15, 31,126,146,156,156,252, 35,165,148, 42,149,202,145,143, 30, 61, 94,247,229,151, 95,218,118,235,
-214, 13, 97, 97, 97,114,111,111,239, 47, 1,236,172, 46,238, 87,175, 94, 5,203,178, 48,101,197, 97,226,140,223,161,176, 22,227,
-222,189,123,200,204,204, 44,205,107,149, 53, 37,253,127, 94,181,254,175,230,188,118,237,218,238,181,107,215,126, 48,122,244,104,
- 9,165,148,139,139,139, 51, 2, 32, 30, 30, 30,236,181,107,215,248, 63,254,248, 3, 26,141, 6, 94, 94, 94,140,167,167, 39, 57,
-113,226, 4, 31, 29, 29,125,149, 82, 58,203,210,112,150, 21, 87, 98,177, 24, 26,141,198, 34,113, 37,164, 81,181,156,115,247,238,
-221,171,212,106,181,144, 74,165,216,181,107,151, 97,219,182,109, 81,121,121,121,157, 34, 34, 34, 52,181,225,172,233, 52, 13,213,
-113,230,103, 51,135, 78, 28,143,106,105,236,250, 3,153,156,146,217,177,180, 96, 38,196,101,151,123,115, 23,121,235,128, 36,197,
-185,111,152, 2, 90,244, 71,101,156, 15, 31, 62,212, 7, 5, 5,189, 62,245,211, 57,103, 22,206,155,107,187,236,235,175,112,251,
-213, 33,200,201, 45,130, 78,207,193, 96,226, 49,111,222, 2,184, 57, 57,192, 81, 98, 40,200,209,144,215,163,162,162, 12, 47, 83,
-186, 63,207, 60, 88,127, 69, 56, 95, 54, 84,171, 62,138,138,138, 22, 54,110,220, 88, 26, 29, 29,141,135, 15, 31, 34, 38, 38, 6,
- 28,199, 61, 72, 76, 76,236, 95,219,139, 50, 12, 3,123,123,123, 72,165, 82,180,187,149, 4,169, 68, 2,169, 77,113, 31,241,158,
-177,185, 0,165, 96,164,178, 26,115,150,159,243,234,121, 70, 17,113, 28, 87, 58, 67,187, 89,192, 85, 52, 90,173,166,206, 21,195,
- 48, 51, 46, 95,190,108, 23, 23, 23, 7, 74, 41,246,238,221,107,247,198, 27,111,204,168,141,123, 69, 41, 69,102,102, 38,120,158,
-135, 88, 44, 70,183,110,221, 16, 20, 20,132,130,130, 2,112, 28, 87,218,124, 41,145, 72,106, 52,138, 48, 53, 53,181, 8,192,124,
- 87, 87,215,141, 95,124,241,197,252,230,205,155,191,247,241,199, 31, 51,168,229,160, 8, 66,136,201,100, 50, 97,215,174, 93,216,
-179,103, 79, 62,165,180,177, 90,173, 78, 41,227,222,253,234,238,238,126, 98,240,224,193, 15, 30, 61,122,100,151,155,155, 11, 20,
-119,138,173, 46,111,162, 97,195,134,224, 56, 14, 95, 77,244, 66,126,126, 11,112, 28, 7,147,201, 4,107,107,235,167,150, 32, 18,
-102,113,255,123,193,113,220, 76, 66,200,209, 37, 75,150,204,152, 50,101, 74,155,209,163, 71,139, 37, 18, 9,159,148,148,100,218,
-190,125, 59,105,212,168, 17, 35, 22,139,201,241,227,199,249,176,176,176, 43, 38,147,233, 43, 74,105,141,150, 34, 41, 43,174,132,
- 62, 87, 47, 20, 59,135, 14, 29, 58,122,200,144, 33, 86,129,129,129,178,159,126,250, 41,167,176,176,176, 66,113, 85,145,121, 89,
-217, 52, 13, 47, 98, 2,210, 50,239,140,141, 11,230,158,155, 56,178,225,136, 70,239, 57,215,197,201,194, 52,100,139, 89,198,206,
-129, 65,160, 15,139,162,156, 71,110, 39,195,246,198, 36, 39, 39,111,169,138,231,250,245,235,215, 67, 66, 66, 58,191,253,206,187,
-251,198,142, 30,171,250,252,227,143,196,135, 78,156, 1,103,212,225,252,169, 83,112, 81, 48,156,161, 48, 85,157,107,100, 6, 69,
- 68, 68,188,116,253,175,226,246,190, 55, 17,192, 68, 66,200,240,185,115,231,110,159, 56,113, 34,120,158, 71,104,104, 40,214, 77,
-159,142,121, 28, 55,106, 53, 33, 69, 83, 40,157, 40, 60, 22, 47, 80, 96,181,110,221,186,110, 97, 97,225,207, 70,163, 49,144,231,
-121,233,217,179,103,161,213,106, 17, 29, 29,173,225,121,126,247,243,164,105,223,190,125,153,242,235,197, 85,242,146,182,180,115,
- 93, 92,143, 30, 61, 94, 24, 39,207,243,137,101,215, 48,171,140,183,236,182,201,100, 74,180, 36,160, 60,207, 47,107,215,174,221,
- 51,251,106,101,239,242,124,108,247,238,221, 13,229, 69, 87, 69,191,203,196, 63,209, 82,254,244,244,244, 84, 0,239, 43,149,202,
- 85, 99,198,140,153, 11,224, 65, 45, 5,214, 34, 63, 63,191, 47,138,127,146,133, 73, 73, 73, 41, 21,136,186,116, 79, 79,207,247,
-188,189,189, 75, 23,128,174, 46,238, 61,123,246, 52, 84,183,200,115, 89,231,138,231,249, 68,225,145,255,251, 80, 34,152,206, 19,
- 66, 58,173, 91,183,110,230, 7, 31,124,208,122,216,176, 97,162,206,157, 59,227,240,225,195, 92,104,104,232, 85,141, 70,179,172,
-166,194,138, 16, 82, 80,254, 25,170, 34, 12, 90, 33, 37,106,134,147, 39, 79, 78,237,208,161,195,220,157, 59,119, 62,241,241,241,
-145, 17, 66, 76, 22,138,171, 23, 62, 77, 67, 21,233,106,242,246,246, 30,240,235,136, 15, 14, 5, 78,126,215,167,119,251, 96,185,
- 87, 3,165,199,189,184, 76, 36,220, 60,161,121,116,118,221, 99,170,205, 28, 96,137,227, 30, 30, 30, 30,217,160, 65,131,198, 27,
-127,218,252,174,132,101,123,242,148, 6,125, 54,105, 20, 24, 66,174, 27, 56,238, 68, 94,126,254,143,213,245, 9,253,175, 67, 38,
-145,140,154, 52,105, 18,126,249,229, 23,236, 91,181, 10,189, 19, 19,177, 67, 34,129,149, 68,130,245, 6,195, 4, 0,130,192,170,
- 77,217, 87,217,200,170, 38, 77,154,236,200,202,202, 26,146,151,151,103, 50,153, 76, 28, 33,196, 68, 8,209,240, 60,191,128,231,
-249, 13,212,130, 33, 89,130, 21, 47,112, 10,156, 2,103,153,227,157,236,236,236, 62,230,121, 30, 5, 5, 5,171, 44, 17, 86,194,
-253,252,231, 56,187,117,235,182,146, 97,152, 54, 28,199,109, 61,115,230,204,166,231,225,172, 97,231,119,139,195, 73, 8, 17,121,
-120,120,140,165,142,138,254, 48,138, 26, 82, 3,123,143, 53,100, 29, 74, 78, 78,222, 82, 94, 92, 9,233, 94, 57,103, 76, 76, 12,
-117,114,114, 66, 86, 86, 22,246, 52,105,242,212, 49, 91, 96,125, 69, 14,214, 63,208, 68,216, 10,128,107,201,239, 12, 0,247, 0,
- 4, 3,176, 2,160, 3, 80, 0,192,165,204,249,153, 37,199,204,199,207, 1, 48,254,221,181,204,191,236, 3,160,185,192, 41,112,
- 10,156, 2,167,192, 41,112, 10,156, 2,231,115,126, 94, 5, 64, 1,208, 25, 51,102,204,164,148,246,153, 49, 99,198,204, 50,219,
-165,199,139,165, 13,125,181,220,241, 86,127,115,120,193, 64,128, 0, 1, 2, 4, 8, 16, 32,224, 63, 0, 74,105,255,101,203,150,
- 45, 1,192, 46, 91,182,108, 73,153,109, 80, 74,251,151,253, 46,119,220,245,239, 14, 43, 1,208,188,146, 72, 88,108,253, 17, 66,
-154,215,226, 38,221, 22, 56, 5, 78,129, 83,224, 20, 56, 5, 78,129,243,255, 23,103,117,220,149,252,255, 85, 66,200, 33, 74,105,
-255,178,223,101,133, 87, 9,231,161,178,191,203, 29,255,243,239, 86,131, 66, 19,161,192, 41,112, 10,156, 2,167,192, 41,112, 10,
-156,255,250, 38,194,170,190, 43,251, 93,102,223,223,218, 68, 88,249,176,251,221,187,217, 36, 63,216, 73,173,172, 37, 0,160,215,
- 20, 25, 60,163,145,135, 33, 67, 56, 8, 16, 32, 64,128, 0, 1, 2, 4,252,205, 32,132, 28,154, 49, 99,198,172,255, 66, 88, 69,
-149,137,171,140, 16,107, 23,145, 46,187, 49,103, 50, 52, 5, 0, 17, 67,239,102,132, 56,198,184,236,222,157,241,162, 69, 86,223,
-190,125,103, 81, 74,221,197, 98,241,159, 30, 30, 30,161, 27, 55,110, 52, 10,217,232, 31, 65,181,125,242,130,131,131, 29,117, 58,
-221,114,158,231,187,149,172,243, 23, 42,145, 72, 62,189,113,227, 70, 22,128, 74,135, 68,251,248,248,108,247,245,245,109, 76,139,
- 1, 0, 79,205,203,101,222,103, 62, 30, 31, 31,127, 63, 33, 33,225, 45, 75, 3, 94,167, 78,157,122,114,185,252, 29, 66,136, 95,
- 9, 79,180, 86,171,221, 26, 31, 31,255,248,255, 91, 34,170, 84, 42, 43, 74,233,107, 98,177,120,180,147,147, 83,235,244,244,244,
-121, 73, 73, 73,223,214,242,101, 38, 2, 48,205,193,193, 97,184,131,131, 67,253,172,172,172, 71,121,121,121, 59, 1,172,160,148,
- 86,251,156, 46,252,208,179,237, 43,253, 58,207, 57,119,248,236,194, 57,107,147,174,148, 63, 62,255, 83,149,115,183,238, 29,230,
- 28,249,243,210,130, 37,107,147,178,106, 24, 54,166, 76,158,229,205,217,231, 95,156, 46,129, 0,166,115, 28, 39,102, 24,230,219,
-228,228,228, 11,255,246,188,212,180,105,211,207,165, 82,233, 4,134, 97, 30,165,166,166,142, 85,171,213, 47,100,170, 19, 66, 8,
-227,227,227, 99, 27, 23, 23,151,111,201, 84, 10, 2,138,209,174, 93,187, 84,131,193,224, 86,213, 57, 18,137, 36,237,242,229,203,
-238, 47, 97,244, 51,204, 77,127, 0,210, 0,176, 37,219,250,146,239,212, 50,251, 82, 43, 57,254,207, 11,172, 36, 63,216,137,116,
-217,141, 51, 83,163,134,165, 39,223,120, 19, 0, 92,149,129, 59,157,221,253,127, 79,242,147, 26, 90, 53,125, 93, 33,182, 22,125,
-207,178,226, 64,173, 94,231, 34, 22,137, 51, 12, 38,227, 13, 70, 79, 39, 38,223,221, 27,111,201,133, 7, 12, 24,208, 24,128,125,
- 80, 80,208, 53,189, 94,223,250,219,111,191, 85,238,217,179,167,101, 68, 68,196,136,129, 3, 7, 30,164,148, 30, 59,120,240,160,
-166, 70, 15,109,151, 46, 34,183, 28,167, 81,172, 72, 52, 0, 64, 75, 74, 1, 16,246, 38,111, 52,252,153,230,152,185,149, 22,207,
-209, 82,187,140, 29,236,220,152,240,134,207,196, 44,237,100,228,200,121,202, 72,150, 95,142,200,140,177, 92, 0,168,122, 72, 69,
-228, 7, 0,208,155,232,123,241,241,234,147,207,115, 94, 37, 47,240,158, 0,126, 37,132,136, 1,172,231, 56,110,127,106,106,106,
- 36,165,212,244, 34, 50,139,191,191,191, 43, 33,228,230,202,149, 43,157,219,180,105,195,242, 60,143,211,167, 79,191,245,197, 23,
- 95,244,110,214,172, 89,243, 59,119,238,164, 85,246, 95, 95, 95,223,198,167, 78,157, 10, 56,122,244, 40,218,183,111, 15,158,231,
-193,243, 60, 28, 28, 28,240,199, 31,127,160, 77,155, 54,165,251,220,221,221,209,185,115,103,139,195,229,235,235,251, 90, 96, 80,
-171, 41,159,124, 54,221,221,205,217,197,214,196,153, 12, 73, 73,201,170, 85,223,126,213,214,215,215,247,251, 71,143, 30,237,175,
- 69, 1, 64,188,188,188,134,137,197,226,254, 0,252, 74,118, 71, 27,141,198, 67,137,137,137,191, 91, 90,144, 7, 4, 4,156, 99,
- 24,166,110, 77,174,205,113, 92,252,205,155, 55, 59,214, 38,141, 60, 61, 61,135,122,122,122,254,212,182,109, 91,235,192,192, 64,
- 72, 36, 18,124,253,245,215,211, 0,124,107,137,144,178,182,182, 30,102, 99, 99,227, 91, 80, 80,240, 80,163,209,236,145, 74,165,
- 61,190,251,238, 59,239, 14, 29, 58,216,166,166,166, 18,150,101,221, 15, 30, 60, 56,106,205,154, 53,189, 9, 33,221,171,203, 91,
-217,143,248, 57, 50,113,211, 78,217, 15,207,204, 1,208,183,252,113,147, 86, 62,154, 21,123,247,103,233,245, 4, 0, 43,106, 82,
- 64,123,121,121,125,231,238,238, 62, 70,163,209,104, 9, 33,148, 16, 66, 91,180,104, 97, 62, 14, 0,208,235,245,217,247,238,221,
-107, 82, 21, 87,189,118, 78,225, 44,195, 86, 58,119, 19,199,115,137,143, 47,103,133, 60,239,243, 67, 41,253, 56, 50, 50,114,136,
- 72, 36, 34, 1, 1, 1, 54,132,144,222,150,138, 11,149, 74,213,152, 16, 50,155, 82,122, 45, 57, 57,249,123, 74, 41,231,233,233,
-217,149, 82,250,121, 73,124,191, 78, 74, 74, 58, 83,146, 7,190,111,216,176,225,192, 7, 15, 30,172, 79, 74, 74, 90, 84,219,240,
- 54,106,212,104,226, 71, 31,125, 52,119,194,132, 9, 86,153,153,153, 62,189,122,245,250, 13, 64,167,231,185, 7,193,193,193,226,
-148,148,148,105, 45, 91,182,156,220,170, 85, 43,101, 84, 84, 84,138, 74,165, 90,237,225,225,177, 34, 34, 34,162, 90,193,222,178,
-101, 75,149, 72, 36, 26, 3, 96, 84, 73, 1,186, 3,192,214,235,215,175, 63,250,255, 32,176, 12, 6,131,219,201, 69,115, 64, 88,
- 22,242, 78, 61,192,243, 60, 50,150,207,133, 41, 43, 3, 46,139, 86,195,100, 50,161, 71,143, 30,110, 47,105,244,195,254,107, 1,
-174, 80, 96, 73,173,172, 37,156,201,208, 52, 61,249,198,155,173,251,172,182, 7,128,176,163, 83,222,116,246,108,118, 91, 42,178,
-142,145,217,201,247,190, 62,160, 71,224,144,254,157,137,151,210, 13,137,201,105,238, 63,238, 56,214,231,208,177, 51,123, 81, 60,
- 47, 69,181,200,203,203, 91,236,227,227,227,122,234,212,169, 39, 82,169,212, 74, 46,151,147,161, 67,135, 90,141, 24, 49,194,255,
-244,233,211,190, 71,143, 30, 29, 50,104,208,160,163, 18,137,228,207, 93,187,118, 85,187, 62,153,123,139,193,254, 30, 34,143,221,
-131, 94,235, 91,247,213,158,110, 82, 31, 15, 87,240,188, 28,247, 98, 13,117, 78,156,191,222,231,240,209,227,159,185,249, 15, 30,
-154, 22,181,239,150,165, 55,167,121,115,123, 7, 43,134, 78,181,146,210,225,125, 58,249,215, 27,208,183, 61,169,223,160, 62, 98,
-162, 99,124,207,156,189, 54,166,107,107,219,199, 26, 61,217,161,225,201,202,219,183,115,115,170,226,146,138,200,150,155,119, 30,
-168, 56,142,195,215, 95, 45, 57, 49,123,246,236,210,217,213,205, 31,142,227,240,234,171,131,240,205, 55,223, 64,167,211,161, 85,
- 96,179, 45,248,223,188, 49,150,224,183,168,168, 40,231,162,162, 34, 28, 61,122,116,102,114,114,242,204, 99,199,142, 37,171, 84,
-170,207,146,147,147,119,188,128,218,253,218,245,235,215, 59,183,110,221,154, 53, 24,138,231, 55,237,208,161, 3, 59,107,214, 44,
-167,165, 75,151,174, 2, 48,188,138,194,133, 30, 61,122, 20, 63,255,252,115,198, 87, 95,125,149, 8, 0, 46, 46, 46,158,111,189,
-245,150,235,175,191,254,154,190,114,229,202, 68, 74, 41,156,157,157,189,134, 13, 27,230,106,105, 80,189,189,189,235, 7,183,106,
- 51,101,235,150, 45,109,114,179,178,180, 63,172, 92,127, 93, 39,146, 21,249,248, 53,150,204,153,187,200,126,193,151, 51,223,247,
-246,246,190,157,144,144, 16,107,105, 36,149, 74,101,157,186,117,235,238,157, 53,107, 86,243,142, 29, 59,138,221,220,220,144,154,
-154,138,123,247,238, 53,191,120,241,226,107,251,247,239,159,166, 84, 42, 95, 79, 78, 78,174,182, 50, 65, 41,109,116,224,235, 37,
-110, 50,103, 23,240, 70, 35, 28, 91, 4,150, 30, 83,159, 62, 6,222,104, 4,111, 52,194,251,213,215, 74,157,188,174, 93,187,214,
-106, 74,114, 47, 47, 47, 85,227,198,141,127,153, 49, 99,134, 68,167,211,225,198,141, 27,184,124,249, 50,159,150,150,182,172, 58,
-113, 69, 8, 57, 62,119,238, 92,175,142, 29, 59,218,102,100,100,128,227, 56,151,253,251,247, 79, 12, 10, 10,178,243,242,242,146,
-110,219,182,205,188, 66,128,147,175,175,175,211,136, 17, 35,244, 63,255,252,243, 52, 0, 95, 85,230, 92,229, 60,228,231,164,136,
-124,251, 52, 9,121, 7, 41,162, 99,125,166,246, 86, 30,113,240,101, 74,157,172,190, 13, 26,216,214,111,106, 61, 93, 97,215,220,
- 41, 55,233,196,244,190, 13, 26,108, 62,242,240, 97,181,139,166, 19, 66, 24, 79, 79,207,239,250,245,235,247,214,250,245,235,173,
-163,163,163,173,253,252,252,192,243, 60, 76, 38, 19, 56,142, 51,175,187,137,178, 19, 6, 87, 6,150, 97,189, 46,238,189,227,102,
-101,101, 85,250, 28,154,191, 11, 11, 11,209,123,116,219, 23,242,178,229,121, 94,106,206,215, 38,147, 73, 14, 64, 12,192,210, 9,
- 44,231, 95,186,116,105,232,145, 35, 71, 70, 46, 90,180,168, 17,128, 15,121,158,159, 19, 29, 29,221, 25, 0,252,252,252,164, 0,
-206,168, 84,170,177, 19, 38, 76,152, 48,105,210, 36,140, 30, 61,122, 14, 33,100,113,109,159,123,169, 84,250,229, 7, 31,124, 96,
-101, 52, 26, 97,101,101, 5,131,193,208,224, 57, 43,104,146,162,162,162, 61,243,231,207,239, 63,104,208, 32,243, 18, 94, 30,231,
-206,157, 91,250,233,167,159,182, 15, 14, 14, 30, 92,153,200, 10, 14, 14, 14, 4,176,160, 97,195,134,189, 71,143, 30,205,118,232,
-208, 1, 5, 5, 5, 56,126,252,248,236,189,123,247,206, 14, 14, 14,190, 4, 96, 78, 68, 68, 68,232,203, 46,178, 88,133, 45,238,
-189,222, 21,190,209,153, 0,128,148,239,139,151,134,180,251,242, 27,193,226,251, 47, 8,172,234, 80, 84, 84, 20, 52,115,202, 40,
- 48, 76,113, 45,177, 97,253, 58, 88, 58,107, 60, 57,112,232, 88, 80, 53,246,230, 74,142,227, 26, 57, 57, 57,125,166,213,106,229,
-171, 86,173,146, 39, 37, 37, 53,221,179,103, 15,141,140,140,132, 68, 34,129,189,189, 61,186,117,235, 38,235,211,167, 79,131, 75,
-151, 46,213,217,187,119,239,160, 87, 95,125,117,235,159,127,254,121,176, 50, 94,151, 22, 3, 27,185,187,122,156,253,102,209, 56,
-167,230,245,125,161, 55, 26,145,152,150, 4, 10, 41, 60,220,108, 48,242,181, 0, 73,135, 16, 73,195, 21,235, 78,133,186, 55, 31,
-244, 74,234,237, 3,119,170,139, 99,167, 96,155,176,193,157, 27, 4, 15,236,221,158,105,232,231, 15,137,204,186,244, 88,139,160,
- 32,180, 8, 10, 34,227,199,231,215,143,188, 30,249,197,209, 83, 87,103,117, 10,182,137, 56, 31, 81, 88,249,194,152, 20, 50,243,
-218,105,175,191,241, 38, 26, 55,110,252,212,203,220,252,251,201,147, 39, 32,132, 32, 35, 35, 3, 60,133,180, 22,105,131, 43, 87,
-174, 32, 32, 32, 0,189,122,245,194,240,225,195,149,251,247,239,255,109,237,218,181,157, 1,140,127,158,204,194,113, 92,135,160,
-160, 32,214, 96, 48,128,101, 89,100,102,102, 34, 54, 54, 22,190,190,190, 44,199,113, 93,170, 17, 26,104,223,190, 61,190,250,234,
-171,196,179,103,207, 6, 1,192, 43,175,188,114,189, 77,155, 54,174, 43, 87,174, 76, 60,127,254,124,112,137, 96,139, 8, 9, 9,
-177,120, 56,173,181,181,245,187, 31,127,242,169,107,110, 86,182,198,152,159,111, 80,240,156,201, 78, 46, 38,121,233,153, 57,143,
- 19,236,138,222,157, 48, 69,244,229,140,169,239, 2,176,168,205, 94,169, 84,214,105,218,180,105,216,230,205,155,221,156,157,157,
-145,147,147,131,204,204, 76,132,133,133,129,231,121,244,233,211, 71, 22,212,178,101,208,138,149, 43, 47, 43,149,202,118,150,136,
- 44,153,179, 11,246,116, 46,126, 52,134, 62,202, 44,117, 88,142, 14, 31, 80,122,206,136,184, 92, 0,128, 92, 46,175,245,178, 62,
-148,210,118, 29, 58,116,144, 0,192,180,105,211,242, 10, 11, 11,151, 18, 66,126, 83,171,213, 73,213,252,117,218, 23, 95,124,225,
- 89,191,126,125,159,223,126,251, 13, 5, 5, 5, 0,224, 86,191,126,125, 52,106,212,136, 59,123,246, 44, 26, 55,110, 12, 91, 91,
- 91,156, 61,123, 22, 87,174, 92, 65, 96, 96,160,173, 68, 34,121,179, 50,129,245, 74,191,206,115,100,226,166,157,154,132,188, 3,
-133,157, 18,155,183,255,142,123,225, 91, 59,233,140,119,231,204,250,208,243,109,150,202,222,241,108,164,152, 81, 47,164,139,115,
-195,102,131, 80, 55,248,134,139,142, 59, 23, 59,103,146,239, 50,145, 92,187,109,238, 55,234,204,202,196,149,135,135,199,242,190,
-125,251, 14, 93,191,126,189, 3, 0,220,186,117, 11, 41, 41, 41,112,117,117,133, 92, 46,135, 88, 44,134, 72, 36,170,209, 82, 89,
- 86, 86, 86, 72, 78, 78,134,185,226,192,113, 28,242,243,243, 75, 23, 13,159, 63,159, 48,115,231, 90,230, 54, 41,149,202,142, 65,
- 65, 65,191,122,121,121,121,151,221,223,183,111, 95,140, 31, 63, 30,133,133,133, 8, 12, 12,236,224,238,238,174, 27, 55,110, 28,
-120,158, 71,106,106,106,193,173, 91,183,122, 38, 37, 37, 93,173, 36,222,154,148,148, 20, 76,152, 48, 1,241,241,241,147, 84, 42,
- 85, 28,195, 48,114,169, 84,106, 62, 46, 85,169, 84,141, 27, 55,110,252,221,184,113,227,240,228,201, 19,196,196,196,132, 61, 79,
-165, 74, 38,147, 21,114, 28,231,102, 50,153,160,209,104,208,167, 79, 31,121,211,166, 77, 83,197, 98,241,221,156,156,156,145, 9,
- 9, 9,201, 22,186,141, 34,165, 82,233, 33, 22,139,215, 79,153, 50,165, 95,231,206,157,113,247,238, 93, 28, 61,122, 20, 3, 7,
- 14, 68,151, 46, 93, 48,123,246,236, 87,231,204,153, 51, 13, 64,101,149,129,221,123,246,236,169,231,229,229, 85,186, 36,146,157,
-157, 29,222,125,247, 93,140, 26, 53, 10,135, 15, 31,110,191,100,201,146, 61, 93,186,116,113, 11,125,142,150,138,255, 2,100, 33,
-237,225, 27,157,137, 71,126,206,197, 14,126,137,208, 50,111,195, 51, 72, 80, 54,255,102,129,165,215, 20, 25, 68, 12,189,235,170,
- 12,220, 25,118,116, 74,105, 19, 33, 76,244,174,222, 80,100, 40,182,205, 41,242,138, 76,176,146, 49,120,146,156,143,219,143, 50,
- 42,122,225,223, 46, 87,248,127,178,122,245,106,124,253,245,215,125, 53, 26, 77, 65,108,108,108,114, 65, 65, 65,225,200,145, 35,
-137, 88, 44,198,197,139, 23,241,248,241, 99,180,104,209, 2, 14, 14, 14,232,216,177,163,164, 87,175, 94,222, 99,199,142,125, 27,
-192,193,138, 56,201,208,161,172, 82, 42,251, 99,249,162, 97, 78,132,141, 65, 76,124, 14, 26,120,181,134,179,189, 55,146,210, 11,
- 16, 17,117, 24, 49, 15,255, 68, 3,175, 58, 24,255, 86, 3,135,111, 55,164, 31, 34,193,239, 55,160, 17,255,235,231, 85,209,144,
- 80,185,132,107, 53,111,117, 36,184,194,135,160,198,120, 80, 67,202,179,133,187,131, 55,154, 6,184,195, 90,234,202,220,138,254,
-182, 85, 85,113,215,153,232,231,139, 23,206,255,177,101, 96, 48,114,115,115,177,102,205,154, 82, 97, 69, 41, 45,173,113,183,109,
-219, 22, 70,163, 17, 63,254,248, 35,140,124,177,253, 95, 85, 56,203, 97, 68,155, 54,109,126,167,148, 74,173,172,172, 82, 2, 2,
- 2,124, 62,252,240, 67,209,176, 97,195,160,209,104,198, 41,149,202, 99,201,201,201,251,106,200, 9, 0,168, 91,183,110,199, 46,
- 93,186, 88,177, 44, 11,131,193,128,220,220, 92, 36, 38, 38, 34, 54, 54, 22, 46, 46, 46, 64,153,254, 91,149,113,150, 95, 11,145,
- 82, 74,205,241, 47, 43,196,204,247,197,146,112, 18, 66,154, 58, 58, 56,218,252,176, 98,125,184,171,140, 37, 46,222, 42, 34,177,
-115, 16, 49, 10, 91, 25,101, 89,141,143,183,202,150, 16,210,180, 18, 65, 82,126,209,112, 82,183,110,221,189, 91,182,108,113, 19,
-139,197,224, 56, 14,174,174,174,136,141,141, 69, 78, 78, 14,242,243,243, 17,123, 55, 26,245,188,188,240,209,248,247,148,243,191,
- 89,185,151, 16, 18, 82,182, 16,171,112, 49,110,163,177,124,152, 43, 43,136, 96, 73, 56,171,112, 72, 30,171,213,106, 88, 91, 91,
-195,207,207, 79,113,237,218,181,243, 73, 73, 73, 73,213,113,202,229,242, 55, 59,116,232, 96,187,125,251,118, 4, 7, 7,195,222,
-222, 30,103,206,156,193,173, 91,183, 96, 48, 24,152,252,252,124, 40, 20, 10, 44, 91,182, 12,117,234,212, 65,110,110, 46,226,226,
-226,156,197, 98,177, 75,101,156,231, 14,159, 93,152,253,232,204,156, 20,246, 88,159,205,219,127,199,184, 17,195,224, 97,122,116,
-222,177, 1,179,176,239,171,237,191,100,197,222,253,109,108,155, 59, 54,106, 62, 8, 18,169, 2, 31,126,190, 0, 49,183,255,112,
- 44,202,191, 53,137, 51, 38,120, 3,248,168, 60, 39, 41,190, 65,140, 74,165,122,111,227,198,141,182,230,253, 12,195, 64, 44, 22,
- 63, 37,172,204,139,177, 87,116, 79, 43,186,159, 28,199,193, 96, 48,192, 96, 48,128,231,121,164,167,167, 35, 63, 63, 31,142,142,
-142,197, 39,204, 5, 8, 8,161,149,172, 66, 95,150,147, 97,152,145,191,255,254,187,183,181,181,245, 51,231, 37, 36, 36, 32, 55,
- 55, 23, 54, 54, 54,112,112,112,128,209,104,132,201,100,130, 78,167, 83,116,233,210,101, 34,128,171, 21,113,178, 44, 59,117,194,
-132, 9, 29, 14, 29, 58,228,187,104,209, 34, 24, 12,134,229,233,233,233, 48, 11,180,142, 29, 59,182,165,148,222,155, 50,101, 74,
-137, 32,156,111, 44, 40, 40,248,160,182,121,201,221,221,221,127,192,128, 1,142, 39, 79,158, 68,199,142, 29,161,211,233, 48,113,
-226, 68,187,247,222,123,207,238,210,165, 75,174,171, 86,173,218, 6,160, 71, 85,156,193,193,193,226,212,212,212,233, 35, 71,142,
-156,214,163, 71, 15,251,140,140, 12,200,100, 50,236,220,185, 19, 63,252,240,195, 17,131,193,240,197,158, 61,123, 22,111,218,180,
-169,207,160, 65,131,176,105,211,166, 41,132,144,175, 41,165,124, 5,156, 42,111,111,111,220,188,121, 19,142,142,142,112,113,113,
- 65,110,110, 46,174, 92,185,130,176,176, 48, 52,109,218, 20,132, 16,199,146, 50,205,244, 60,207, 81, 13, 43, 53,127, 59,103,233,
- 26,171,101,242, 46, 0,112, 40,158, 97,179,182,225, 36,132,136, 84, 42,213, 32, 7, 7,135, 73,148, 82, 81,118,118,246, 70,107,
-107,235,221,149, 45, 19, 36, 44,244,108,161,192, 34,132,152,211,165, 11,165,244,172,103, 52,242, 50, 66, 28, 99,156,221,253,127,
-119,246,108, 86,124, 19, 77,244, 46, 43,115,140,113, 15, 47,202, 3, 0,131,145,226,210,221,108,220,124,144,138,155,247, 83,160,
-144, 87, 95,235,118,118,118, 70,251,246,237,113,224,192, 1, 36, 36, 36, 40,150, 45, 91,214,200, 96, 48, 24, 6, 12, 24,160,174,
- 91,183,110,118,199,142, 29, 33, 22,139,113,245,234, 85,228,229,229,129,101, 89, 72,165, 82,240, 60, 95,169,211,230,118,159,123,
-103,244,248, 32, 95, 23, 7, 6, 7, 47, 30, 67,219,166,131, 97, 45, 19, 35, 61, 91, 3,134, 16, 60,124,124, 18, 28,103,131,200,
-187,241,104,215,220, 6,157,218,216,123, 21,156,202, 26, 15, 96,157, 37, 55,200,144, 20, 10,105,221,215, 1,121, 51, 80,253, 67,
-240,250, 36, 80,177, 27, 10,139,228,200,120, 18,135,187, 87,118,131,154,138,170,229, 73, 72, 80,255,164, 82,169, 58,134,142,122,
-231, 29,158,231,241,213, 87, 95,133,222,191,127,191,107,217,115, 26, 52,104,112,102,246,236,217, 93,178,179,179,113,236,216,177,
-173,106,181,122, 75, 77, 18, 83,173, 86,159, 4,224, 84,214,141,185,126,253,250,246, 95,126,249,165,221,219,111,191,141, 93,187,
-118,125, 6, 96, 95, 77, 56,167, 76,153, 34, 62,112,224, 64,111, 43, 43,171, 53,115,230,204, 81,232,245,122, 36, 39, 39, 35, 37,
- 37,165,212,109,187,115,231, 14, 39, 18,137, 46, 85, 83,248, 87,184,216,116,121,129, 85,102,159,165, 53,239, 2,189,209,168,179,
-241, 86, 25, 7, 12,234,221,226, 86,216,141, 24, 43, 39, 39,166, 69,171, 64,255,187, 15,158, 68,144,226, 38, 24,139,154, 97,188,
-188,188,134,205,157, 59,183,133,157,157, 29,120,158,135,189,189, 61,210,211,211, 75, 5,165, 62, 63, 15,134,188, 92,220,140,139,
- 69,199, 46,221,208,171, 93, 91,191, 63,141,198, 97, 0,118, 84,197,235,212, 50,168,212,185,218,229,235, 92,186,127,248,147,156,
- 82, 1,112,184,117, 67,200, 20, 54,104,254,241,204, 90, 63,204,201,201,201,215,125,124,124, 14,247,233,211,167,223,248,241,227,
-153,148,148,148,163,238,238,238, 29, 82, 83, 83,163,170,250,159, 66,161,104,144,145,145,129,252,252,124,216,219,219, 99,213,170,
- 85,112,115,115, 67, 81, 81, 17,174, 93,187, 70,189,188,188,200,153, 51,103,224,233,233,137,204,204, 76, 24, 12, 6, 20, 21, 21,
-165,232,245,250, 74,251, 72,150, 52, 3,246,157,218, 75,121,228, 94,248,214, 78,158,136,189, 54,228,179, 78,247, 35,195, 98, 18,
- 78,159,186,184,208,164,149, 39,228, 36,158,152, 94,191, 85,164,203,164,207,230, 99,237,242,185,184,119,245,108,150,123,157,252,
-117, 28,209,109,237,208,187, 74,151, 86, 27, 29, 29,109, 27, 25, 25, 9,134, 97, 96,103,103, 7, 27, 27,155,210,133,205,205,226,
- 74, 36,178,220,160, 55, 87,112,204,226, 42, 61, 61, 29, 15,227, 98,176,231,244, 54, 24, 77, 70,151, 45,109,236, 82,124, 37,146,
-155, 46,185,100, 86,198,109,122,189,154, 2,112,227,240,225,195,135,121,122,122,218,150,221, 31, 16, 16,128,183,222,122, 11, 71,
-143, 30, 69,120,120,248, 83, 21,172,244,244,244,100,142,227,182, 86,198, 25, 31, 31,159,227,229,229,213,231,189,247,222,139,216,
-183,111,159,221, 55,223,124, 83,186,176,185,185, 89,212,252,189,125,251,118, 68, 68, 68,204, 73, 73, 73,185, 91,155,124,228,225,
-225,209,116,192,128, 1,231,214,173, 91,231,144,154,154,138,140,140, 12, 20, 22, 22, 66, 44, 22,195,100, 50,161, 97,195,134,132,
-227,184,122,213, 53, 7, 50, 12,243,199,233,211,167,123, 55,106,212, 8, 0, 96, 52, 26,113,241,226, 69,140, 31, 63, 62,211,218,
-218,250,205, 39, 79,158, 20,170, 84,170,217,135, 14, 29,234, 19, 16, 16,128, 22, 45, 90,120,164,165,165,217, 2,200,173,236, 29,
-194,113, 92,105,250,252,248,227,143,165,199,180,218,226, 37, 39,245,122, 61,105,213,170, 85,189,107,215,174,189,180,131, 91,226,
-126,217,140, 39,179, 38,195,231,252, 61, 0, 64,132,127,113,151, 43,159,179,209,197, 39,140, 26, 85, 35, 62,149, 74,229, 76, 41,
- 29,215,163, 71,143,143,251,244,233,227,170, 84, 42,225,236,236,140, 91,183,110,117, 56,118,236,216, 26, 47, 47,175, 13, 28,199,
-109,176,196,173,127, 94,148,215, 34, 47,141,131, 69, 41, 37, 37,145, 35, 24, 50,132,115,217,189, 59, 35,201, 79,106,144,138,172,
- 99, 0, 64,111, 40, 50,184,135, 23, 21, 79,211,176,112, 59, 40, 40, 56,190,196,109,160, 20,156,133,227, 64,180,119,223, 0,159,
-243, 7,220, 28, 7, 97,211,166,125, 72, 75, 75,147,172, 90,181,170,238,190,125,251,188, 70,142, 28, 25,223,176, 97,195,220,110,
-221,186, 97,219,182,109,240,240,240,128, 94,175, 7,207,243,149,170, 55, 91, 39,110, 72,155, 22, 13,217,152,184, 91, 8,105,244,
- 6,234, 41, 59,226, 97, 82, 46,178,243,117,200,204,213,160,113,227,207,144,154, 85,132,188, 66, 45,110,221,251, 13, 94,202,250,
- 12, 43,126,216,199, 82,129,165,123,248, 43,116,177,191, 67,162,236, 10,105,253, 97, 16,187,180, 67,194,189, 80,220, 56,185, 18,
-137,247, 47,128,242, 28,220,189,155, 90, 90, 51,153,183,122,245,234,145, 75,151, 46, 21, 77,158, 60,185,139,167,167,103,151,164,
-164,164, 80, 0,240,244,244,236, 50, 97,194,132, 46,182,182,182, 88,188,120,177,145, 82, 58,239,121, 19, 55, 57, 57, 57,222,211,
-211,115,210,201,147, 39, 35,199,142, 29,139,166, 77,155, 6, 17, 66, 24, 75, 58,214, 54,108,216,112,188, 84, 42, 29, 99, 50,153,
- 26,141, 24, 49,130, 25, 55,110,156,194,205,205, 13, 79,158, 60,129, 78,167, 3,195, 48,144, 72, 36,184,115,231, 14,255,199, 31,
-127,228, 74, 36,146, 41, 22, 56, 44,112,113,113,241,236,212,169, 83, 4, 0, 56, 57, 57,121,241, 60, 15,103,103,103,175,246,237,
-219, 71, 0,128,163,163,163,103, 69, 66,172, 82, 1,108, 48, 92,139,143,139,107,220,161, 83, 7,229,185,240,168,235,175,191,214,
-191, 43, 35, 98,152,199,113,201,215, 92,157,157,108, 46, 94,186,144,103, 48, 24,174, 89,194, 37, 22,139,251,119,236,216, 81,148,
-157,157, 13,149, 74,133,244,244,116, 36, 37, 37,193,104, 52, 66,155,155, 13, 67, 94, 30, 12,185, 57,160, 69, 5,120,116,237, 42,
-252,188, 61,101,199,139, 59,193,239,168,174,198, 89,145, 67, 69, 8, 41,221, 39,179, 85,192,202,214,182,180,249,163, 6, 47,199,
- 65,118,118,118,211,243,243,243, 15, 39, 37, 37, 45,210,235,245, 31, 46, 93,186,180,213,130, 5, 11, 92,166, 79,159,110, 55,125,
-250,244, 93,117,235,214, 13,124,242,228,137,174, 82,133, 90, 80,240,208,104, 52, 58, 3,112, 63,117,234, 20, 92, 93, 93,145,151,
-151, 7,163,209, 8,141, 70,163,119,116,116,148,103,102,102, 66,171,213, 66,175,215,195,206,206, 14, 17, 17, 17, 89, 38,147,233,
- 96,117,225,115,104,192, 44,212, 25,239,206,113,242,183, 73,226,168,115,231,124, 13,159, 61,247, 27,245, 66, 0, 43,250, 54,104,
-176, 89,207,159,141,141,185,125,192, 49,246,218,153, 44,245,253, 34,223,205,127, 62,202,175,226, 62, 82, 66, 8, 79, 8,161, 77,
-154, 52, 65,122,122, 58, 88,150,133,141,141, 13, 20, 10, 5,154, 54,109,138,132,132,132, 90, 11,172,178,226,234,228,229, 67,200,
- 40, 72,198,230,229,219,225,233,225,205, 0,112, 77, 74, 73,232, 57,118,218,208, 54,245, 59, 58, 46,141,189,144,189,172,138,138,
-206, 13, 0,118,101,247,121,122,122,118,117,116,116, 60,109, 48, 24,240,228,201, 19, 28, 63,126,188, 75, 98, 98, 98,141, 10,144,
-196,196,196, 71,158,158,158,125, 94,123,237,181,109, 45, 90,180,104, 64, 41, 69,211,166, 77, 49,104,208, 32,236,217,179, 7, 81,
- 81, 81,200,203,203,227,207,159, 63,191, 37, 57, 57,185, 86, 29,114,148, 74,101,147, 87, 95,125,245,194,218,181,107, 29, 51, 50,
- 50,160,213,106, 81, 80, 80,128,221,187,119,163, 67,135, 14,144,203,229, 88,189,122,117,158,201,100, 90, 91,149,184,162,148, 30,
-216,183,111, 95,111, 95, 95, 95,220,189,123, 23,231,207,159,135,171,171, 43,172,172,172, 48, 96,192, 0,231,223,127,255,253, 67,
-127,127,255,149, 98,177,120, 97,191,126,253,192,113, 28,194,195,195,147,227,226,226,242,171, 74,163, 74,203, 21,173, 22,148, 82,
- 24,141,198, 85, 12,195,188, 25, 28, 28,220, 43, 34, 34, 34, 12, 47, 9,188,188,188,154,137,197,226,143, 28, 29, 29,145,158,158,
-142, 28, 30, 80,100, 21, 15,186,205, 45,121, 93,102,101,101,149,190,107, 26, 53,106,244,167, 70,163,153,149,152,152, 88,169,203,
-228,233,233,217,210,218,218,250,227, 1, 3, 6,140,124,245,213, 87, 89,131,193,128, 67,135, 14, 97,237,218,181,232,211,167, 15,
- 26, 54,108,136,207, 62,251,204, 94,167,211,205, 56,122,244,232,116, 63, 63,191,163,249,249,249, 51,171,226,124, 65, 14,222,255,
-180,200,203, 34,176, 74, 34,244,191,126, 52, 67,134,112,158, 64,118, 73,141,198,197,201,201,105, 45,199,113, 93,241,229,151,176,
- 21,217,227,201,195,251,200,207,230, 97,212,235,192,243, 20,148,183,236, 94,240, 57,127,192,238, 21,138,188,115, 4, 6,131, 1,
-110,110,110, 88,182,108, 25,114,115,115, 69, 99,199,142,173, 55,127,254,252, 27, 90,173, 22,133,133,133,208,104, 52,208,104, 52,
- 85, 10, 44,137, 92,215,194,199,189, 17,242, 53,173, 97, 45,149, 34, 51, 79,135,236,124, 29, 50,114,180,216,123, 96, 4,116,154,
- 34,152,244,122,112, 6, 19, 20,238,131,209,208,169, 43,128, 7,205, 45, 76,232,146, 64,155, 96, 72, 58, 1, 67,210, 9, 88, 7,
-204,198,129,213,111, 63,117,158,201,100, 89,147,127,114,114,114,188, 74,165,250,126,204,152, 49, 83, 94,123,237, 53,108,216,176,
-225,107, 0, 33, 37, 46,194,215,131, 7, 15,198,157, 59,119,112,238,220,185,245, 47,170,182, 64, 41,117,118,114,114, 2,195, 48,
- 40, 42, 42,210, 85, 39,174,118,239,222, 77,230,207,159,127,116,192,128, 1,237, 62,252,240, 67,107, 15, 15, 15, 80, 74,161,215,
-235,145,152,152, 8,134, 97,144,147,147,131, 31,127,252,177, 48, 60, 60,156, 74,165,210, 75, 98,177,248,253, 59,119,238,168,171,
- 11,139,163,163, 35, 70,140, 24,225,218,186,117,107,215,178, 35, 6,223,124,243, 77,215,144,144,144,210,125, 94, 94, 94, 22,199,
- 79,171,213,254,184,120,225,156,174,191,252,186,179,105,147,166, 13, 29, 15, 31, 63,115,221,217,217,206,170, 94, 61, 95, 89,110,
- 78,142,110,237,170,229,162,194,194,194,159, 44,164,243,115,113,113, 65, 74, 74, 10, 30, 60,120, 0,157, 78, 87,220,132, 83, 84,
- 0,125, 78, 14, 12,185,217,128, 86, 3, 41,199, 65,151,145,138,122,190,245,128,255,141, 48,172,174,102, 86,161,192, 50,127, 91,
-217,219, 65,106, 99, 3, 86, 44,178,184, 15,150, 82,169, 12, 14, 10, 10,218,185,105,211, 38,201,212,169, 83,219,212,173, 91,119,
-109, 74, 74, 74,156,151,151, 87,247,229,203,151,135, 45, 90,180, 72, 54,114,228,200, 38, 27, 55,110, 28, 13, 96, 99, 21,247,112,
-231,225,195,135,223,170, 83,167,142,251,237,219,183,161,213,106,193,243, 60,250,246,237, 11, 0,114,243,121,247,238,221,211,104,
- 52,154,212, 59,119,238,228,199,197,197, 25, 96,193,168,191, 57,107,147,174, 76, 29,234,245,186, 82,169,186, 44,149,249,212,103,
-138, 34, 6, 79, 29,234,245,205,202, 93,137,218, 35, 15, 31,230,207,153,228,187,172, 40,255,246, 36, 71,175,194,117,235, 14, 62,
-202,183, 36, 75,151,140, 24,132,139,139, 75,105,147,160, 68, 34, 49, 55,109, 33, 55, 55,183,202, 38,194,202, 10,239,220,220, 92,
-228,230,230,226,254,227,187, 72,207, 79,198,137, 29,151,193,113, 92,169, 59,162,114,247,194,201, 29, 97,182, 93,134,180,154,229,
-220,146,156,201,188, 73,175, 89,154, 79, 25,134,249,248,141, 55,222,128,193, 96,192,160, 65,131,176,125,251,246,143, 1,212,184,
-134,158,148,148,116,133, 16,210,232,193,131, 7,118, 70,163,113,224,128, 1, 3,182,246,235,215, 15,151, 47, 95,198,169, 83,167,
-186,232,245,250, 24,142,227, 52, 74,165,114,169, 82,169,116, 35,132, 44, 85,171,213, 85,142,118,110,220,184,241, 72, 91, 91,219,
-197, 86, 86, 86,249,253,250,245, 83,153,157,171,194,194, 66,152, 76, 38, 36, 38, 38,226,200,145, 35,201,135, 15, 31, 78,166,148,
- 90, 23, 20, 20,204,141,143,143,223, 93, 89,179,160,209,104,220,255,199, 31,127,244,241,245,245,197,217,179,103,241,213, 87, 95,
-161, 65,131, 6,216,178,101, 11,218,183,111,143,122,245,234,193,201,201,233,163,188,188,188,118, 95,125,245, 85,191,160,160, 32,
-236,219,183, 15,105,105,105,107,170,122, 63, 85,245,158,213,104, 52,160,148,162, 91,183,110,227,167, 78,157,138, 1, 3, 6, 28,
- 15, 9, 9,105, 29, 30, 30,126,255,191, 94, 72,171, 84,170,101, 61,122,244,152,222,178,101, 75,252,250,235,175,208,133,116,132,
-205,150,131,184,221,191, 3, 40, 0,213,150, 3, 0,128,219, 3,139, 7,116,212,235, 62, 4,211,167, 79,239, 55,120,240,224, 58,
- 0,154, 85,194,249,205,219,111,191, 61,237,237,183,223,198,245,235,215,177,113,227, 70,220,184,113,163,180,204, 51, 26,141,136,
-142,142, 70,116,116, 52,148, 74, 37,250,247,239, 79,222,127,255,253,190,125,251,246,117, 53,151, 89,127,177,139,213,229,165,105,
- 34,172, 74, 53,122,120,120,184, 56, 58, 58,222, 89,187,118,173,115,155, 54,109, 88,147,201,132, 83,167, 79,227,211,201, 99,209,
-167,255, 36,104,117, 82,152,180, 4,156, 68, 97,217, 21,237,250, 35,239, 28, 1,175,232, 7,189, 94,143,241,219, 37,112, 32,169,
- 88,245,142, 59, 0, 16,141, 70, 3,157, 78, 7,141, 70,131,194,194, 66, 20, 22, 22,130,227,184, 74,223,146,249, 57, 54, 6,131,
-145, 71, 82, 90, 28, 18,147,111,195, 94, 81, 7,148,241, 70,106, 86, 17, 8,220, 96,212,222, 3, 95,242, 96,234, 52,137, 40,212,
- 61,159, 40,230,242, 99, 43,112,102, 44,239, 83,201,113,220,226,229,203,151,143, 95,187,118,173,108,210,164, 73,193, 42,149,106,
- 32, 0, 76,155, 54, 45, 88, 46,151, 99,221,186,117, 58,142,227, 22,191,160,140,202,122,122,122,126,252,202, 43,175, 32, 47, 47,
- 15,119,238,220, 57, 84,221,127,102,207,158, 61,241,141, 55,222,104, 55,127,254,124,107,173, 86,139,162,162,226,230,207,220,220,
- 92, 20, 22, 22, 34, 53, 53, 21,211,166, 77,203, 54, 24, 12, 19, 30, 63,126,188,167, 6, 66, 15,127,252,241, 7,126,249,229,151,
-167, 70, 12,190,249,230,155,174,219,183,111, 79, 91,189,122,117, 18,165,148, 58, 57, 57,121, 13, 25, 50,196,205,210, 22, 66,181,
- 90,173, 81,169, 84, 83, 22, 45, 94,244,219, 55,203,151,187,101,101,102,199, 72,164, 86, 90,107, 43,153,211,244, 79, 23,210,212,
-212,212,105,169,169,169, 69,150,134, 51, 59, 59, 27,177,177,177,176,178,178,130, 68, 34, 1, 87, 84, 0,190,176, 16,186,236, 76,
- 48,122, 29,100, 28, 7, 39,107, 25,188,221,221, 81,199,205,178,190,248,201,103,142,227,200,176,254, 79, 53, 11, 18, 66,112,180,
-125, 19, 72, 21, 54,144, 43, 20,232,184,255,124,113,133, 65, 34, 1, 86,109,178,164, 25,199, 69,165, 82,253,177,102,205, 26, 73,
- 70, 70, 6,238,220,185, 19,249,228,201,147, 92, 39, 39, 39, 91,177, 88,204,223,191,127,255,228,189,123,247,250,215,171, 87, 15,
-148,210,234, 70,127,173,216,187,119,111,207, 14, 29, 58,152,234,213,171,103,147,158,158, 94, 39, 59, 59,155, 36, 39, 63,221,135,
-249,218,181,107,242,248,248,248, 34,158,231,247,161,120, 30,172,106, 51,254,212,161, 94,242, 75,215, 49,165,179, 75,189,150,246,
-174, 45,145, 97,188,209,242, 74,100,202,148,169, 67,189, 86,175,220,149,168,229,136,110, 43,103, 76,240, 22,201,181,219, 44,204,
- 71,212,223,223, 31,148, 82, 92,187,118, 13,231,207,159,199,249,243,231,241,228,201,147,210,115,236,237,237,113,226,196, 9,116,
-237,218,213,226,103,165,168,168, 8, 74,165, 18, 14, 14, 14,216, 23,250, 51,126,248,102,123,105, 71,119, 51, 50, 50, 50, 96,109,
-109,141,197,159,174, 84,140,253,124,200, 66, 0,189, 44,225,246,246,246,174,223,161, 67,135, 87,221,221,221,145,157,157, 13, 87,
- 87, 87,180,106,213,106,128,187,187,123,189,212,212,212, 90, 53,101,233,245,250,137, 93,187,118, 93, 52,109,218, 52, 24,141, 70,
- 12, 27, 54, 12,177,177,177, 59, 31, 61,122,180,202,199,199,103,202,164, 73,147,220, 93, 92, 92, 48,113,226, 68, 27, 0,175, 87,
-198,211,180,105,211, 79,102,204,152,177,100,212,168, 81, 50,163,209,136, 83,167, 78,149,186,212, 38,147, 9,113,113,113,152, 59,
-119,110,114, 94, 94, 94,231,196,196,196,135,213,133, 43, 37, 37,101,218,254,253,251,251, 54,110,220, 24, 71,143, 30,197,132, 9,
- 19,254, 84, 40, 20,205, 94,125,245,213, 58, 54, 54, 54,136,140,140,132,193, 96,128, 82,169,116,159, 49, 99, 70,255,222,189,123,
-227,228,201,147, 88,184,112,225, 33, 15, 15,143, 21,213,137, 96,145, 72, 4, 99,185, 62,141, 44,203,226,198,141, 27,232,214,173,
- 27,166, 79,159, 14, 0, 56,121,242,164, 93,175, 94,189,110,119,233,210,197, 46, 52, 52, 84,247, 95, 46,164,109,108,108,198,108,
-217,178, 5, 15, 30, 60,192,133, 11, 23,144,153,153, 9,189, 94,143, 92,190,184,207,149,172,196,185,162,158, 62,104, 63,109, 22,
-134,247,127, 29,201,201,201, 96, 24,198,165,138,178, 97,228,172, 89,179,112,228,200, 17, 44, 91,182, 12,121,121,121, 21,158,103,
-101,101,133, 86,173, 90, 33, 48, 48, 16,177,177,177, 0,224,242, 87,199,247,165,116,176,170,112, 29, 86,125,255,253,247,206, 29,
- 58,116, 96, 11, 11, 11,193,243, 60,218,181,109,139,209,239,140,198,177,125,187,161,172,223, 21,172,214, 10, 38, 91,107,203, 4,
-134,247, 86,100,101,101, 65, 38,147, 65, 94,210,161,244,102, 98,169,189, 11,173, 86, 91, 42,174,204,223, 85,193,164,151, 70, 68,
- 63,226,188,243, 10,110,224,106,196, 47, 48,234,245,168,215,104, 38,116, 38, 23,216,184,189, 11,141,225, 15, 24,114,138, 71,238,
- 74,237,186, 32, 53, 53, 3, 0,185,109, 97, 66, 63, 43,166, 52,207,118,118,231, 57,203, 5, 86,106,106,106,186, 82,169, 92,113,
-227,198,141,217,125,251,246,197, 15, 63,252,176,140, 82,138,126,253,250,225,218,181,107,136,140,140, 92,145,154,154,154,254, 2,
-196,149,200,195,195,227,199,117,235,214,245,115,119,119,199,222,189,123, 65, 41,173, 86, 16, 73,165,210,113, 83,166, 76,177, 54,
-187, 24, 82,169, 20, 26,141, 6, 41, 41, 41, 48, 24, 12,216,183,111,159, 78,175,215, 79,125,242,228,201,158, 26, 62, 52,180,117,
-235,214, 88,185,114,101,226,133, 11, 23,130, 1,160,125,251,246, 17, 33, 33, 33,174,171, 87,175, 78,186,114,229, 74, 48, 0,180,
-105,211, 38, 60, 48, 48,176, 70,243,184,168,213,234,196,198,141, 27, 63,212,104,181, 98, 71,103,167, 34, 91, 27, 41,205,203,207,
-103,110,222,188,158,156,154,154,250,164, 6, 84,209,119,238,220,105,158,148,148,132,184,184, 56,112, 69, 5, 96,116, 58, 16,157,
- 6,221,219,181,133, 21, 40,100,224, 33,225,141, 16,179, 34,228,231, 23, 0, 64,116,181,174,109,153, 2,193, 44,174, 8, 33,144,
- 43, 20,144,218, 42, 32, 83, 40,158,114,180, 44, 17,151, 86, 86, 86,191,109,220,184, 81,169, 84, 42,241,237,183,223, 66,169, 84,
- 54,237,209,163, 71, 81,231,206,157,173, 92, 92, 92,208,184,113, 99,132,132,132,224,204,153, 51, 32,132, 60,172, 38,109, 76,132,
-144, 94, 23, 46, 92,152,118,233,210,165,161, 42,149,138,140, 26, 53, 10,125,250,244,129, 76, 38,131, 70,163, 65,118,118, 54,254,
-252,243, 79,194,113, 92, 80,137,192,243,169, 91,183,238,118, 66, 72,226,227,199,143,223, 44,207,185, 97,113, 75, 85,190,134, 31,
-171,244, 80,189,222,185,119,189, 22,221,122,247, 64,253, 70,221,209,173,119, 2, 0, 44,115, 17, 63, 30,246,245,236,230,251,234,
-121, 59,109,185,180,255,228,151, 29,251,118,253, 98,254, 20,167,133,115, 87,103, 89, 50, 77, 67,105, 97,203, 48, 76,133, 46, 21,
-203,178, 96, 24,203,214,178,231,120, 46,177,207, 59,237, 74,183,141, 38,131,139,167,135, 55, 99,118,174, 0, 32, 47, 47, 15,241,
-241,241, 48, 26,141,112,118,118,134,209,104,104, 89,131, 74,213,148, 97,195,134, 17,173, 86,139,105,211,166, 97,249,242,229, 24,
- 52,104, 16,185,122,245,234, 20, 0, 31,215,194,209, 88, 62,113,226,196,105, 99,198,140, 65, 78, 78, 14, 78,159, 62,141,174, 93,
-187,226,251,239,191,119, 61,125,250,244,146,246,237,219,131,101, 89,156, 56,113, 2, 6,131,225, 94, 53,207,251,228, 81,163, 70,
-201, 18, 18, 18, 32,145, 72, 16, 18, 18,130,196,196, 68, 20, 22, 22, 34, 45, 45, 13, 11, 22, 44, 72,201,205,205,237,146,148,148,
-244,208,130,116, 97, 58,117,234,244, 81,195,134, 13,113,234,212, 41, 76,156, 56,241,136,141,141,205,235,217,217,217,239,235,116,
-186,213,253,251,247, 71,251,246,237,113,239,222, 61, 12, 24, 48, 0,173, 90,181,194,233,211,167, 49,125,250,244, 63,173,173,173,
-223,168,102, 30,172,251,161,161,161,205, 67, 66, 66, 80, 88, 88,136,252,252,124,136,197, 98, 56, 56, 56, 32, 58, 58, 26,141, 26,
- 53,194,244,233,211,177,114,229, 74, 76,157, 58,149,239,213,171,151,201, 96, 48, 72,204,163, 44,255,203, 40, 44, 44,164,201,201,
-201,176,179,179,195,174, 93,187,112,235,228, 49, 28,158,252, 46,228, 95, 44, 7,165, 20,137,139,102,160,219,231, 95,160,109,228,
- 35, 36, 39, 39, 99,219,182,109, 96, 24,166,116, 68,108,101,101, 91,110,110, 46, 2, 3, 3,113,237,218, 53,108,219,182, 13,223,
-126,251,109,169, 91, 43, 22,139,209,165, 75, 23,244,236,217, 19,247,239,223,199,198,141, 27, 97,103,103, 7, 1,181, 16, 88,148,
- 82, 82,246,251,105,119,134,239,214,170, 85, 43,182,160,160, 0, 90,173, 22,169,169,169,120,252,248, 49,172,172,172,144,148, 22,
-143,214, 13, 10,144, 66,244,184,115, 35,134, 35,172,248, 70,117, 53, 16,131,193, 0,189, 94,143,155, 55,111, 22, 15,125,111,180,
-180,180,243,115, 73,159, 15,104,181, 90,132,134,134, 82, 43, 43, 43,216,216,216,144,170,218,222,121,147,238,200,153,139,145,253,
-222, 30,220, 77,122, 34,244, 7, 24,117, 38, 20,232, 28, 80,168,213, 35, 95, 35,134, 94,214, 27,132,156, 7,195,202,208, 62,176,
- 1, 78, 95,184,175,229,140,134,163,150,169, 2, 14,172, 83, 75,112, 89, 55,203, 8,172,167,107,245, 18,153, 2,156,169,102,163,
-130,229,114,249,242, 21, 43, 86, 76,254,241,199, 31,109,223,127,255,253,198,230,194, 98,221,186,117,249,114,185,124,249,243, 10,
- 43,165, 82,249,118,135, 14, 29, 22,204,157, 59,215, 51, 48, 48, 16, 17, 17, 17, 88,186,116,233,159, 41, 41, 41, 7, 44,168, 25,
-123, 57, 59, 59,163,160,160, 0, 82,169, 20, 28,199, 33, 45, 45, 13,241,241,241,144,201,100, 8, 11, 11,211,251,248,248,236,173,
- 77,216, 44,233,208, 94,118, 68,101, 77, 96, 37,225,131,191,248,124,124, 67,173, 86,227,159,159,159,111, 18,137, 68, 34,153,152,
-139,173, 9,135,209,104, 60,116,254,252,249,215, 58,118,236, 40,139,185,121, 3,134,220, 92, 24,243,114, 32,225, 76,112, 10, 14,
- 4,163,215,130,232,141,240,244,163,208,228,216,224,226,245, 71, 70,163,209, 88,173, 43,104, 22, 88, 12,203, 62,221,239,202,206,
- 22, 82, 69,177,192, 42,187,159, 84,211,174,229,238,238,110,221,183,111,223,238, 65, 65, 65,160,148, 98,249,242,229,208,235,245,
- 82,163,209, 8,163,209, 8,131,193,128,252,252,124,236,217,179, 7, 63,255,252,243, 69,123,123,251,106, 7, 75, 80, 74, 77, 94,
- 94, 94, 31,242, 60,239,102, 50,153, 12,174,174,174,146,157, 59,119, 66, 46,151,131, 97, 24, 4, 6, 6, 66, 46,151,235, 84, 42,
-149,161, 36, 12,198, 21, 43, 86,136,222,123,239, 61, 73, 69,124, 1,173, 27,127,202, 81,231,206, 82,153, 79, 61,123,215,150,168,
-223,168, 59, 0,160,103,255,177,168,223,208, 27,185,233, 55,235,235,117,113,131, 89,146,233,248,203,229,164,232, 78,214,205,199,
-100, 38,134,198, 0,248,209,210,188,212,189,123,119,244,234,213,171,180, 57,208,205,205, 13,122,189, 30, 38,147,201, 98,113, 5,
- 0,230, 73, 68,231,207, 39, 12,230, 2, 91,218,216,166, 0, 40,181, 39,115,115,115,145,144,144,128,184,184,184,210,247, 20, 79,
- 45,171, 93,171, 84, 42,171,250,245,235,191,211,172, 89, 51,156, 62,125, 26, 55,111,222, 76, 58,123,246,172,103,235,214,173,225,
-229,229, 53, 70,165, 82,205, 82,171,213, 22, 79,168,236,234,234,106,211,169, 83,167,201, 99,198,140,193,189,123,247, 48,125,250,
-244,204,148,148,148,125,135, 14, 29,122,239,147, 79, 62, 97, 58,119,238,140,180,180, 52,108,216,176,129, 11, 11, 11,251,198,209,
-209,113, 65, 53,247, 49, 86,173, 86,215,213,106,181,200,204,204,132,121, 74,134,163, 71,143,226,216,177, 99,169, 57, 57, 57, 93,
-212,106,245, 3, 75,194,230,227,227, 99, 27, 28, 28,236, 30, 19, 19,131, 29, 59,118,192, 96, 48,124,241,228,201, 19,131,189,189,
-253,175,235,214,173,155,235,235,235,235,244,202, 43,175,160,125,251,246,160,148,226,224,193,131,152, 55,111,222,159, 86, 86, 86,
-175, 71, 69, 69, 25,170,161, 31,188,112,225,194,133, 46, 46, 46,111,190,245,214, 91, 76,112,112, 48,194,195,195,193,113, 28,186,
-119,239, 94, 42,174,142, 30, 61,250,219,209,163, 71,135, 0,144, 40, 20, 10,249,127,221,189, 50, 67,171,213, 34, 38, 38, 6,238,
-238,238,104,216,186, 29,166,223,126,140,243,151, 46,131, 82,138,142,119, 30,163,160,160, 16, 91,182,108, 65, 68, 68, 4, 88,150,
-133,175,175,111,181,156, 6,131, 1, 15, 30, 60, 64,122,122, 58, 6, 13, 26,132,145, 35, 71,226,235,175,191,134,193, 96,192,236,
-217,179,145,149,149,133, 77,155, 54,225,193,131, 7, 16,137, 68, 80, 40, 20,127,121, 60,171,210, 34, 47,165,131, 5, 20,183,125,
-243, 60, 15,181, 90,141,107,215,174,225,241,227,199,176,177,177,129,198,196,243,107,174, 68,242, 12, 17, 39,113, 20, 23,168, 9,
-159, 87,167,196,141, 70, 35, 17,137, 68,184,116,233, 18, 30, 62,124, 8,187,134,180,212,189, 50, 26,141,208,233,116, 40, 42, 42,
-130, 88, 44, 46,184,124,249,242,147,240,240,240,250, 34,145,168,210, 81, 96,105,141,216,173, 39, 78,158,250, 52, 56,208,191,113,
-143,206,243,112,232,208,151,200,201,203, 67,161, 78,132, 2,141, 1,133, 90, 10,149,109, 3,180,105, 25,132,244, 76, 61,238,223,
-137, 72,204,144, 56, 85,219, 6, 99,228,152,220,223,214,190,111, 63,112,200, 68,200, 61, 94,129,254,241, 78,240,154,212, 82,129,
- 37,145,219,194,206,165, 14,242, 10, 52,184, 24, 29, 11, 35,199,228, 90,122,211, 99, 99, 99,243, 84, 42,213,226,139, 23, 47,126,
-101, 30,249,115,238,220, 57, 60,122,244,104,177, 90,173,206,171, 97,109,182, 7,128,237, 0,228,110,110,110,169,239,191,255,190,
-178, 87,175, 94,242,206,157, 59,131,101, 89, 92,191,126, 29,239,191,255,254,113,133, 66,241,186, 37, 35,243,164, 82,105,106,110,
-110,174,189, 76, 38,131,209,104, 68, 74, 74, 10,238,221,187, 7,141, 70,131,212,212, 84, 16, 66,212,161,161,161,154, 90, 60, 56,
-207,140, 34, 52,143, 10,170, 68,136, 89,172,176,188,188,188, 58,247,235,211,185,249, 55, 43, 87, 67, 83, 84,128,176,203,135,144,
-157,149,129,141,155,247,182,240,242,242,234,108,105,103,226,196,196,196,223,247,238,221, 59, 45,160, 89,179, 32, 95,111,111,220,
-138,123, 12, 9,207, 65,202,113, 96,245, 90, 48,156, 14, 94,205, 41, 24, 70,129,212,148,124,172, 63,126,250,118, 98, 98,226,239,
-213,241,122,246, 29,136, 17,113,185, 32,132,224,120, 39,127,200, 21, 10, 72, 20, 54,104,191, 39,180, 84, 84, 61, 89,246, 25, 36,
- 54, 10, 56,182,170,126, 98,204,212,212,212,162,134, 13, 27,134,223,189,123,183, 85,147, 38, 77, 48,127,254,124, 36, 36, 36,128,
- 82,138,180,180, 52,109,122,122,122, 82,102,102,230, 19, 66,200, 62,181, 90,189,217,210,217,194,121,158,119, 59,120,240, 32, 0,
- 72, 0,224,212,169, 83, 80,169, 84,176,183,183, 71, 94, 94, 30, 70,141, 26, 37,155, 51,103, 14, 0,224,250,245,235, 98,185, 92,
- 94, 41,215,157, 27,247, 86,100,231,209,108,166, 48,226,245, 12,211,141, 22,221,122, 39,162,103,255, 49, 56,113,104, 11, 78, 31,
- 59, 9, 23,241,227, 88,206,170,224, 72,122,108, 70,126,114, 97,163, 13,254, 33,239,177,234,130, 99, 27, 39, 13,114, 20,121, 41,
-249, 93, 51,190,175,122,226, 94, 74, 41, 88,150,125,166, 67,123, 77,197, 85, 89,204,157, 75,121, 2, 66,234,139, 69, 55,146, 82,
- 18,122,171,220,189, 74, 43, 23,241,241,241, 72, 72, 72, 64,195,134, 13,241, 56,238, 17,164, 82,201, 13, 11,243,253, 91,253,251,
-247,183,213,235,245,216,191,127,191,137, 16,210,255,224,193,131,225, 1, 1, 1,162,174, 93,187,218,110,217,178,229, 45, 0,155,
-107,210, 98,164, 80, 40, 36, 70,163, 17, 91,183,110, 69, 82, 82, 82,231,148,148,148,104,149, 74,181,225,131, 15, 62,248,222,207,
-207,175, 97,116,116,244,125,141, 70, 51, 81,173, 86,223,172,142, 44, 39, 39,103,116,159, 62,125,118,241, 60,239,211,161, 67, 7,
-155, 17, 35, 70,216, 81, 74,225,231,231,135,195,135, 15,171,213,106,181,197,125,152,226,226,226,242,207,159, 63,159,234,239,239,
-239,174, 84, 42, 33,145, 72,150, 41,149,202, 69, 10,133,226,155, 1, 3, 6, 56,237,220,185, 19,187,119,239,134,141,141, 13, 98,
- 99, 99,213,119,239,222, 93,229,225,225,241,157, 37, 51,184, 71, 68, 68,196, 2, 24,209,186,117,235,121,223,126,251,237, 23, 12,
-195,188,125,252,248,241,210,185,206,204,226,170, 94,189,122,163,119,237,218, 53,242, 37, 51, 66,140,122,189, 30,206,206,206, 72,
- 79, 79, 71, 90, 90, 26,234,212,169,131,118,237,218,193,104, 52,226,192,161, 63,113,254,252,121, 80, 74,225,226,226, 2, 59, 59,
- 59, 68, 70, 70, 2, 64, 85,163,135,141, 6,131, 1, 78, 78, 78,200,201,201, 65,100,100, 36,220,220,220, 48,117,234, 84,232,245,
-122,236,220,185, 19, 55,110,220, 0,195, 48,112,117,117,133,173,173, 45,110,220,184, 81, 29,167,128,154, 10, 44,150,101,207,156,
- 57,115,102, 72,203,150, 45, 69,247,239,223,199,253,251,197,207,155, 70,163, 49,137, 88,236, 78,189,185,127, 68, 21,110, 74,243,
-178,115,101, 72,165,210,245, 67,134, 12,153, 56,118,236, 88, 76,154, 52, 9, 12,195,224,199,235, 58,196,199,243, 48, 24, 12, 72,
- 77, 77,197,173, 91,183,104,171, 86,173, 8,207,243,134, 46, 93,186,140,139,136,136,104,205,178,108, 94,101,156,116,215, 46,206,
-165,197,192, 65,235,214,111,190,244,206, 59,239, 56, 13, 28,180, 14,215,163,238, 32,167,176,184,149, 73,229, 98,131, 54, 77, 62,
- 67, 90,166, 14,199,142, 28,202,230, 77,218, 55,232,237, 29,198,170,194, 9, 0,233, 69, 26,183, 13,219,246, 46,223,177,103,223,
-184,241,163, 71,200,187,116, 25, 13,113,254, 45,112,153, 17, 80, 53,234, 0,194, 90,227,106,228,117,220,124,144,160, 45,210,178,
-155,243, 12,154,207,170,227, 44, 11,134, 97,214,108, 90,191,122,201,209, 19,161,172,193, 96, 64,191, 62,221, 57,134, 97,214, 84,
-227, 78, 61,195,105,109,109,189, 35, 50, 50,210, 73,167,211, 33, 49, 49,177,126,227,198,141, 65, 41, 69, 92, 92, 28, 86,173, 90,
-101, 58,124,248,240, 58,185, 92, 62,189,178, 26, 98,121, 78,163,209,184,125,235,214,173, 51, 63,252,240, 67,121, 90, 90, 26,238,
-222,189,139,194,194, 66, 24, 12, 6, 68, 68, 68,104,141, 70,227, 14, 11, 92,180,103,194,105, 22, 88, 78, 78, 78,158,109,219,182,
- 53,143, 34,244,228,121, 30,142,142,142, 94,173, 91,183, 14, 7, 0,123,123,251, 10, 71, 17, 86,117, 63, 19, 19, 19,207, 54,106,
- 80, 7, 91, 55,175,132,193,160, 67,114, 82,177,211,144,145,153,139,170,196,213, 51,121,137, 82,170, 84, 42, 95,255,118,213,170,
- 43, 19, 70,191,237,209,169, 91,119, 36,220,140,132, 62, 43, 29, 12,103,130,152,138, 80,148,102,133,212,212, 2, 44, 57,124, 50,
- 77,163,213, 62, 35, 90, 43, 11,103,105,179,160,157, 45,100, 10, 5,164, 37,174,149,249,152, 84, 97, 11,177,141, 2,172, 68, 82,
- 81,103,248,230, 21,204, 41,247,198,248,241,227,111, 30, 62,124,216,113,196,136, 17, 24, 56,112,224,245,156,156,156,174, 89, 89,
- 89,150,116, 20,175,144,147, 97,152,180,126,253,250,185,233,245,122,211,176, 97,195, 68, 25, 25, 25, 48, 15,177,207,207,207,199,
-145, 35, 71,208,164, 73,241,170, 51,119,238,220,129,191,191,127,165,156,239,125,126, 43, 9,192,194,169, 67,189,190,185, 18,153,
- 50, 5,192,178,250, 13,189,112,250,216, 73,156, 63,125,105, 70,219,230,252,234, 87,223,106,189, 64,222,237,205,207,252,131,223,
- 99, 21,118, 74,108,219,187,135,141,138,248, 97,177,182,240,182, 47,128,207, 42, 11, 39, 33,164,120,165,250, 50,226, 74, 36, 18,
-161,168,168,200, 34,113, 85, 85, 94,162,160,212, 37,143,124,241,206,212,161,237, 78,237,184,106,107, 99, 99, 83,218,231,167, 65,
-131, 6, 16,137, 69,248,113,223,154,194,156,156,140, 57,150,112,218,216,216,124,216,181,107, 87, 60,122,244, 8, 55,111,222,220,
-163, 86,171,111,170, 84,170, 61,177,177,177,195, 90,183,110,141,223,127,255,253,195,202, 4, 86,101,156,230, 25,235, 75,220,222,
-172,146,102,242, 72, 0,109,107, 26,247,146,201, 66, 59, 0,128,159,159, 95,194,224,193,131,237, 76, 38, 19, 74,196,179,115, 77,
-242, 18,165,148, 87,169, 84,223,133,133,133, 45, 13, 12, 12,196,240,225,195,123,134,135,135,247, 12, 8, 8,128,175,175, 47,178,
-179,179, 17, 26, 26,250, 11,207,243, 31, 36, 39, 39,107,171,170, 68, 85, 22,247,176,176,176, 7, 0, 70, 5, 7, 7,191, 41, 18,
-137, 96,103,103,199, 38, 37, 37,177,199,143, 31, 7,128,241,187,118,237,226,106,147,238,207,209, 98,240,151,115, 18, 66,102,143,
- 30, 61,122,195,251,239,191, 47,111,221,186, 53,114,115,115, 75, 69,255,225,195,135, 81, 50, 18, 27,206,206,206,120,240,224, 1,
-246,237,219,167,207,205,205, 93, 37,145, 72,150, 85,197, 57,106,212,168,167, 56,205,226,237,208,161, 67, 48, 15, 34,113,118,118,
-198,253,251,247,177,119,239, 94,109,110,110,238, 74,189, 94,255,245, 95, 25,247,255,119, 2, 43, 43, 43,235,163,153, 51,103,118,
-125,247,221,119,157, 53, 26, 13,235,226,226, 2,181, 90,109, 58,118,236, 88, 86,126,126,254, 71, 53,185,216,165, 75,151, 38,245,
-239,223,127,213, 79, 63,253,180,105,211,166, 77,157,135, 15, 31,142, 81,253,250, 97, 98, 59, 27,232,116, 58, 16, 66,112,236,216,
-177,123,103,206,156,169, 47,145, 72,116,115,231,206,229, 1, 92,169,142, 55,227,214, 31,247,221, 91, 12,238,188,122,205,247,187,
-131, 66,218,250,212,173, 87, 87,214,193,219, 30, 6, 35,135,212,180, 76,156,189, 20,165,187, 31, 21,153,192, 27,244, 67,211,162,
-170,159,197, 29, 0,162,162,168, 1,192, 71,254,254,118,243,191, 94,255,219,250,159,119,237, 25, 60,110,248,235,162,224, 22, 93,
-241, 56,229, 0,206,133,159, 49,101,231,211,125,249,122,118, 66, 84, 84, 94,118, 77,111,124, 98, 98,162,182, 97, 61,207, 92,173,
- 86,235,244,248,241, 99,164, 38,171,243, 18, 19,147,180,181,105,118,211,233,116,120,244,232, 17, 78,158, 60,137,235,215,175,227,
-226,197,139,134,227,199,143,255,196, 48,204,226,202, 38,154,172, 12,205,155, 55,255,234,135, 31,126, 24,194,113,156,111,151, 46,
- 93,228, 78, 78, 78,200,200,200, 64, 88, 88,152,254,198,141, 27,143,154, 55,111,254,117,109, 51,155,135,135, 7,134, 14, 29,234,
- 22, 28, 28,236,102, 30, 49,232,237,237,141, 55,222,120,195, 45, 32, 32,160,116, 95,157, 58,117, 80,147,169, 26, 74, 28, 44,188,
-243,222, 39,208,104, 10,112,229,210, 33,228,100,101,224,242,181, 24,212,196,193, 2,138, 71,122, 42,149,202,182,139, 86,173,222,
-219,167, 77, 43,191,198, 42, 15,153,115,189,186,176,113,245, 64, 86,102, 38,174, 68, 62, 52,174, 61,113,246,182, 70,171,125,221,
-210,145,158, 60,207,151,142,114,243,159, 50, 3, 12,195,148,174,130, 96, 62,110, 23,210, 17,140, 72, 12,142, 2, 6,131,161, 90,
-247, 78,173, 86, 39,122,122,122,190, 49,121,242,228, 83, 91,183,110,101,186,116,233, 18,248,199, 31,127, 60,215,162,185,137,137,
-137, 94, 37,174,104,158,157,157,157,104,204,152, 49, 48, 26,141, 40, 42, 42, 66, 94, 94, 30, 50, 51, 51,117, 31,127,252,177, 12,
- 0, 36, 18,137,177, 79,159, 62,213,190, 63, 86,238, 74,212, 78, 29,234,181,218, 69,252,120, 88,110,250,205,250, 46,226,199,177,
-109,155,243,171, 87,238, 74,212,126,245,190,227,162,164,244,208, 24,117,193,177,141,219,246,238, 97, 71, 15,126,131, 83, 42,238,
-207,112,241,198,174,174, 3, 45,120,121,149, 19, 88,181,117,174,158,121,159,220,166,215,235,183,179, 95,218,117,104,235, 89,139,
-166,173, 80,184,184,186,192,100, 50, 33, 54,254, 17,126,218,187,182, 48, 95,151,189, 56, 51,138,134, 91,194, 85,191,126,253,122,
- 44,203,226,192,129, 3, 0, 96,158,218, 96,237,145, 35, 71,134,189,245,214, 91,168, 83,167,142,127,221,186,117,101, 85, 77,163,
- 81,145,123,103, 52, 26,241,162,215,181, 38,132, 60,138,140,140,244,244,244,244, 36, 59,118,236, 40, 48, 24, 12,243,106,241,140,
-175,248,243,207, 63, 59, 81, 74,251, 4, 5, 5,193,199,199,167,228,125, 26,133,243,231,207,111, 79, 74, 74,122,231, 5, 45,238,
- 76, 9, 33,200,203,203, 51,207,107, 98, 80, 40, 20, 47,229,162,209, 73, 73, 73, 63,187,187,187, 31,155, 55,111,222,151, 13, 26,
- 52,248, 96,252,248,241,108,227,198,141,145,155,155, 11, 59, 59, 59, 40,149, 74, 36, 37, 37,225,231,159,127,230,210,210,210,126,
- 98, 24,102,190, 90,173, 86,215,150,211,209,209, 17, 74,165, 18,137,137,137,102,206, 77, 70,163,113, 65,122,122,122, 42, 4,212,
-236,153,178,228, 33, 45,153,166,225, 59,142,227,186,154, 93,173,172,172,172,143, 82, 82, 82, 50,106,171,238,251,247,239,223, 32,
- 35, 35, 99,147,193, 96,232, 60,112,224, 64, 12, 31, 62, 28, 3, 6, 12,192,240,225,195, 89,179,107,117,224,192,129,187, 53,225,
- 52, 47,246,204,176,146,254,148,210,150, 0, 8, 97,152,106, 23,123,182, 68,137, 7,249,219,249, 90,201,248,205, 86, 82,190,163,
- 70,207, 92,208,232,152,113,215,163,242, 30, 61, 79,205,166,100, 97,231, 95, 1, 64,103,164,111, 39, 36,168, 79,212,244,126,150,
- 52, 17,238, 32,132,176,148,210, 53,148,210, 29, 74,165,242,145, 37,182,123, 5,156, 12, 80, 60,185,232,201,147, 39,191, 36,132,
-188,173,211,233, 92,101, 50, 89, 58,165,244,151, 30, 61,122, 44, 88,189,122,117, 85,188,124,101,225,244,246,246,254, 77,165, 82,
- 53, 50, 59, 69,101, 11, 11,243,183,121,127,201,124, 68, 15, 19, 19, 19,223,178,244,126, 54,240,245, 58,230, 91,207,179,151,111,
- 61, 21, 0,224,209, 99, 53, 30, 61, 78, 58,254,240, 81, 98,239,218,164, 81,217,197,158, 73,201, 84, 12,212,130,197,158,203,115,
- 54,107,214, 44,156,101, 89,175,154, 60,148, 60,207,171,111,223,190, 29,100, 73, 56, 85, 42,213, 8,111,111,239,101,106,181,122,
-111, 66, 66,194, 39, 47,162,230,173, 82,169,218, 51, 12,115,152,231,121,171,242, 14,151, 89,132,121,120,120,248,200,100,178,167,
- 58,185, 87,197,249,245,236,230,115, 58,116,238, 52,248,226,217,243,251, 62, 95,124,123, 97,217, 99, 31, 14,118, 26,251,214,164,
-143,190,254,109,221,119,159,175,221,151,245, 83,117,225,108,217,178,101, 40,128, 70,102, 55,171, 42,112, 28,167,190,125,251,118,
- 72,109, 92, 7,231,150,164,149,131,141,203, 66,189,193, 16,192, 16, 80,177, 68, 18,153,147,147, 49,167, 34,113, 85, 25,167,151,
-151,215,178,134, 13, 27,126,244,240,225,195,237, 9, 9, 9,239,150,185,199,223,212,173, 91,119, 82, 66, 66,194,218,132,132,132,
-207, 44, 77,163,250,245,235,219, 5, 4, 4,100,207,159, 63,159,153, 59,119, 46,194,194,194,156, 18, 19, 19,179, 95, 68,186,251,
-248,248,120,200,229,242,109, 60,207,251,114, 28,183,238,209,163, 71, 43,106,195,233,239,239, 47,201,201,201,249,200,219,219,123,
-170,187,187,187,123,106,106,106, 92,124,124,252,210,148,148,148, 31, 44, 21, 87,150,164, 81,112,112,176, 14, 40, 94, 78,204,146,
-254, 86,255, 85, 7,171, 92,126,242,229,121,126,113, 64, 64,192,144,177, 99,199,146,232,232,104,156, 56,113, 2, 79,158, 60,217,
- 71, 41,157, 85, 89,147,110, 77, 57,143, 29, 59, 70,227,226,226,118, 49, 12,243, 69, 98, 98,226,163,191, 43,238, 47, 29,204,211,
-238,255, 21, 31, 0,205,171, 59,231,213, 87, 95,109,208,186,117,235,208, 22, 45, 90,240, 45, 90,180,200,127, 17,156,127, 69, 56,
-205,159,206,157, 93,108, 94, 52,231, 95, 17,206, 90,114, 50,207,249,249,199,227,222,176, 97, 67,106,214,112, 47,105, 26,253, 39,
- 57,215, 47,106,161,186,122,242,205,111, 55,127,213,220,179,252,177,121,147, 29,109, 79, 29,120,253,235,121,147, 29,109, 95,198,
-184, 3, 96, 42,217, 79,106,195,233,237,237,189,225,181,215, 94,227,188,189,189, 55,253,155,227, 14,128,248,248,248,200,132,231,
-232,197,115,186,187,187,135, 40,149,202,131, 74,165,242,160,167,167,103,235, 23,204,185,223,195,195, 35,232,159,136,251,203,246,
- 17,253,211, 2,239,208,161, 67, 15, 1,116, 25, 56,112,160, 27,203,178,255,250, 69, 58, 67, 67,211, 11, 95, 98,189,253,159,183,
-216,239,223,191, 79,132,106,211,191, 15, 31,204,190,169, 6,240, 73,235,238,207, 30, 43,153,154,225,243,110, 3, 95,206,184, 87,
-230,218,212,118, 33,230,248,248,248, 15, 84, 42,213,212,154,140, 62,252,135,226, 77, 1,232,132,220,255,226,145,146,146, 18, 14,
- 96,192,191,157,243,255, 59, 68,255,150,128,252,241,199, 31,105, 66,114, 8, 16, 32, 64, 64,245,248,183,139, 43, 1, 2, 4, 20,
-207,148,218,188,146,218,135,197,109,171,132,144,230, 53,189,112,117,252, 2,167,192, 41,112, 10,156, 2,167,192, 41,112,190,124,
-156,213,113,191, 44,125,187,200,139, 30,137, 82,254,230,253,215, 59, 21, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,215,
-115,190,108, 96,132, 91, 32,224,175,198,154,113,196,115,205, 56,226,249, 87,157, 47, 64,128, 0, 1, 2, 4,252,219, 32,122,217,
- 34, 20, 18, 18,226, 79, 41,125,139, 16, 50, 4, 0, 40,165,187, 9, 33,191,133,135,135, 91, 52, 3,173,149,149, 85,138, 86,171,
-117, 3, 0,185, 92,158,166,213,106,149,101, 69,123,153, 15, 80,188,214,166,121,212, 90,165, 86, 96,253,250,245, 83,116, 58,157,
- 37,235,235,221, 32,132, 92,231,121, 62, 66,161, 80, 92,184,127,255,126,140,165,241,238,217,179,231, 7, 54, 54, 54,115, 52, 26,
-205,215,199,142, 29,251,238,175,190,207,132,144, 54,222, 42,143, 45, 70,147,129, 79, 73,203,154, 77, 41, 61, 80,209,121,223,191,
- 75,150,138, 72,241,164,145,223,191, 75,150, 79,252,145,206,172,138,183,166,231, 87, 17,190, 16,177, 88,252,161,187,187,123,223,
-196,196,196,112, 0,159, 83, 74,133, 89,136, 5, 8, 16, 32, 64,192,191, 79, 96,181, 11,118,110, 76,120,195,103, 98,150,118, 50,
-114,228, 60,101, 36,203, 47, 71,100,198, 60, 79, 0, 84, 42,149, 55, 33,164, 11,165,212,143, 97,152, 91, 60,207, 31, 87,171,213,
-153, 53,225, 8, 14, 14,246, 6, 48, 28,192,136,182,109,219, 54,159, 48, 97, 2, 26, 54,108, 8,173, 86,139,176,176,176, 25,191,
-254,250,235,140,224,224,224,219, 40, 94, 82,102, 71, 68, 68, 68, 66,101, 92, 90,173,214,205,172,149, 8, 33,110, 67,134, 12, 9,
- 43,179, 8, 47, 49, 47, 46, 75, 41,189, 2,224, 50, 33,228,210,142, 29, 59, 18,155,184, 89,181,173,235,237,250,234,145,240,184,
-217,229, 57,117, 58,157,219,141,131,251, 64, 77, 28, 10,146,226,209,224,245,225,165,199, 78,188,222, 29,180, 48, 15, 98,153,228,
- 70,215, 63, 46, 93, 7, 16, 17, 31, 31,127,189, 78,157, 58, 49, 85,113,150, 71, 96, 96,224,130,121,243,230,185, 12, 28, 56,240,
- 67, 0,149, 10,172,154,112, 86, 33, 94,100,109, 67, 90,158, 57,184,103,135, 28,132,193,107,131,135,108, 39,132,140, 42,191,152,
-244,247, 99,136, 59, 97,241,217,132,143, 39,176, 0,240,253,170,245,159,175,122,155,172,254,248, 23,154,226,233,233,217,149, 82,
-250,121, 9,223,215, 73, 73, 73,103,190, 31, 67,220,193, 96,250,132,143, 39, 16, 0, 88,191,106,253,103,223,143, 33,223, 77,220,
- 66, 83,107, 24,190,137,239,188,243,206,234,197,139, 23,179, 37,147,240,245,241,247,247,111, 76, 8,241,167,148, 10,157,131, 5,
- 8, 16, 32, 64,192, 63, 47,176,154, 55,183,119,176, 98,232, 84, 43, 41, 29,222,167,147,127,189, 1,125,219,147,250, 13,234, 35,
- 38, 58,198,247,204,217,107, 99,186,182,182,125,172,209,147, 29, 26,158,172,188,125,187,234,245,195,230,140, 35, 70,147,169,248,
-154, 34, 17,184,109,199,189,246,245,232,209,163,222,216,177, 99, 17, 20, 20,132,240,240,240,174,187,118,237,250,200,219,219,251,
-154,209,104, 60, 44,147,201, 66,171,155,225, 56, 56, 56,120,153,167,167,231,231,211,166, 77, 35, 33, 33, 33,144,201,100,165,199,
- 20, 10, 5,186,119,239,142,238,221,187, 35, 37, 37,165,121,104,104,104,243,223,126,251,109,105,112,112,240,215, 17, 17, 17, 51,
- 44,185, 65,115,230,204, 9,174, 96,247, 49, 66,200, 67,134, 97, 34,154, 54,109,154,216, 80,169,104,226,238,234,124,232,171,197,
-243, 1,160, 82,225,178,191,119,123, 0,120, 74, 96, 25, 50, 82, 33,183, 85,220,144, 88, 89, 93, 7, 16, 1,224,122,157, 58,117,
-110, 88,202, 9, 0, 93,186,116,145,217,218,218, 18, 74, 41, 90,183,110,237,212,187,119,239, 24,134, 97,190, 59,114,228,200,250,
-178,231,213,132,179, 26,180,153,247,217, 36, 73,198,163, 27,184,123,233, 56, 6, 5,123,202,175,223,185,183, 8,192,158,170,133,
- 15,195,108, 13,119,153,241, 49,240, 17,207,243,115,162,163,163, 59, 3,128,159,159,159, 20,192,153,109, 97,142,253,222,105,159,
- 91,235,105, 22, 8, 33, 18,150,101,215,109,219,182,237,189, 81,163, 70, 33, 46, 46, 14, 23, 46, 92,128, 66,161,192,130, 5, 11,
-234, 78,155, 54,109, 41,128,143,132,199, 94,128, 0, 1, 2, 4,252,163, 2,171, 83,176, 77,216,224,206, 13,130, 7,246,110,207,
- 52,244,243,135, 68,102, 93,122,172, 69, 80, 16, 90, 4, 5,145,241,227,243,235, 71, 94,143,252,226,232,169,171,179, 58, 5,219,
- 68,156,143, 40,108, 93, 25,159,201, 4,209,210,197,191, 1, 0,182,109,126,139,141,137,137,169,103,101,245,191,201,162, 59,119,
-238,140,206,157, 59, 51, 75,151, 46,109,115,230,204,153, 54, 59,118,236, 48,120,122,122,174, 74, 74, 74,218, 85, 69, 48, 63,223,
-181,107, 23, 97, 89, 22, 44,203, 86,122,146,135,135, 7,122,246,236, 9, 15, 15, 15,242,217,103,159,125, 14,160, 66,129, 37,151,
-203,211, 8, 33,110, 0,224,232,232,200,205,155, 55, 47,146,150, 0, 0,120,158,191,194,178,236,101, 66,200,149,189,123,247, 38,
- 53,240,180,242,180,149, 89, 31,223,180, 97, 13,140,121,169, 78,149, 93,191, 72,157,104, 86, 1, 79,237,151,218, 88,223,144,218,
-216, 92,151, 42, 20, 17, 0,174, 3,184, 97, 41,167, 89, 92, 89, 89, 89,157,219,176, 97,131, 35, 0, 76,158, 60,217,161,168,168,
-200, 97,220,184,113, 51, 0,148, 10,172,154,112, 86, 33, 96, 28, 58,181, 11,121,178,122,217,151,118, 65,109, 58,226,202,238,239,
-145,147, 83,136,194,252, 34,240, 60,255,204,202,191, 19,183,208,212,239,223, 37,203,191,255,118,253,116,194, 48, 36,160,247,231,
-232,237, 68,167,168, 84,170, 59,132, 16,177, 84, 42, 53,243,138,188,188,188, 84,141, 27, 7, 46,111,216,177, 9,214,127,183, 14,
-148,231, 41,128,229,150,186, 87,132, 16, 55, 91, 91,219, 3,199,143, 31,111,211,170, 85, 43, 92,185,114, 5,143, 30, 61,194,164,
- 73,147,244,147, 38, 77,146,140, 30, 61,154, 76,157, 58,117, 50, 33,100, 55,165,244,162,240,232, 11, 16, 32, 64,128,128,127, 76,
- 96,201, 37, 92,171,121,171, 35,193, 21, 62, 4, 53,198,131, 26, 82,158, 57,199,218,193, 27, 77, 3,220, 97, 45,117,101,110, 69,
-127,219,170,236,177,234, 70, 24,152,197,213,238, 21,170,102,154,194,100, 9, 0, 88,217, 40, 13,111, 76, 77,186,211,170, 85, 43,
-184,186,186, 74, 46, 93,186, 52, 21,192,174, 42, 56,137,254,102, 56,238, 14,232,128, 6,119,179, 96,109,109, 13,115,193,109, 70,
- 76, 76, 12,206,157, 59,135,184,184, 56,248,250,250, 2,255,235, 67,245, 12,167, 70,163,241,232,211,167, 79,232,215, 95,127,253,
-202,178,101,203,110,109,223,190,189, 11,165,180,168, 66,119,175,142,189,131,148,138,143,111, 94,255,173, 24,250, 66,167,123,215,
- 46,162, 89,223,247, 43, 12,103,189, 1,111, 96, 66, 78,113,211,227, 78,127, 21,228,118, 10,200, 20,182, 55,122, 30,187, 86,234,
- 92, 1,184, 97, 41,103,183,110,221,198,136, 68,162,217, 0,236, 55,110,220,232,224,224,224,192, 28, 56,112,192,176, 97,195,134,
-124,137, 68,162, 39,132, 44,169, 77, 56,171,130,152,101, 23,126, 51,239, 51, 59,107,198,132,235,135,127, 65, 98, 92, 60,110, 62,
- 72, 50,254,126, 62,138,211, 27,185,177, 21,221,207,137, 63,210,153,211, 6,203,182,132, 39,251, 30,236, 63,119, 82,163, 69, 3,
-221, 97, 48, 24, 54,167,167,167, 99,220,184,113,224,121, 30, 29, 59,118,236, 64, 41, 77,154, 50,101, 10,124,125,125,177,249,143,
-251, 69,162,188,171, 93,126, 61,149, 23,110, 73, 94, 34,132, 52,247,241,241, 57,126,230,204, 25,119, 79, 79, 79,132,134,134, 34,
- 37, 37, 5, 74,165, 18,147, 38, 77,146, 46, 91,182,108, 91, 94, 94,222,208,197,139, 23,203,111,223,190,189,131, 16,226, 93,162,
-153, 95,248, 8, 24,129, 83,224, 20, 56, 5, 78,129,243, 47, 65, 43, 0,174, 0,210, 1, 92, 43,183,141,146,223,168, 96, 59,163,
-164,204, 47,187,120,121, 6,138,251, 79,187, 2,224, 0,132, 1,200,126,209, 1, 22,149, 20, 80,157, 1,132, 2,152, 79, 41,157,
- 87,254, 36, 67, 82, 40,164,117, 95, 7,228,205, 64,245, 15,193,235,147, 64,197,110, 40, 44,146, 35,227, 73, 28,238, 94,217, 13,
-106, 42,170,254, 98, 34,152,214,172,122, 75,100,107, 13, 72,100,174,134,252,252,124,216,216,216, 64, 83,152, 44, 25, 61,174,212,
-217,146,156, 57,115, 6, 17, 17, 17, 80,169, 84,213,138, 64, 0,160,250,226, 86, 68,189, 94, 15,189, 94,143,148,126,173, 97,211,
-246, 21,100,191, 61, 9, 39, 79,158, 68,122,122, 58, 36, 18, 9, 36, 18, 9, 76,166,234, 39,139,103, 74, 86,226, 53,155, 86, 21,
-157,227,229, 69,228,182,156,213,161, 53, 43,151,216,217, 41,172,221,195,143,239, 71, 92, 92,138, 69, 55, 93,106, 99, 13,169,149,
-245, 13,169,141,213, 83,226,170, 38,156, 44,203, 46,216,179,103,143,167, 78,167,131, 68, 34,193,238,221,187, 13, 91,183,110,189,
- 83, 88, 88,216, 41, 34, 34, 66,243, 34,194, 89, 30,206,174,174,127,190, 62,242,253, 73,139,222,237, 9, 77,161, 22,251,206, 71,
-225,212,173,199, 3, 1, 92,160,148, 86, 58,195,253,138,125,186, 7,158,158,158,221,199,141, 27,119, 99,239,222,189, 46,223,124,
-243, 13, 56,142,131,201,100,130,201,100, 42,253,205,113, 28,182,111,223,142, 11, 87,163,166,168,213,121, 22, 45,166, 75, 8, 81,
-213,171, 87,239,228,213,171, 87, 93,173,173,173,113,226,196, 9,228,228,228, 96,226,196,137,165,206, 85, 78, 78,206,240,245,235,
-215,191,241,228,201,147,111,206,159, 63,159, 9,128, 5,240,175, 95, 53, 64,128, 0, 1, 2,254, 63,161, 26, 45,226, 74, 8, 57,
- 68, 41,237, 15,160, 7, 0,105,153,109, 16, 66, 14,149,148,219, 79,109,207,152, 49, 99,214,210,165, 75,239,152,183,205,231,204,
-156, 57,179,217,178,101,203,150,180,107,215,110,199,165, 75,151, 98,255, 50,129, 5, 32,148, 82, 90,105,223, 23,221,195, 95,161,
-139,253, 29, 18,101, 87, 72,235, 15,131,216,165, 29, 18,238,133,226,198,201,149, 72,188,127, 1,148,231,224,238,221,180,218,139,
- 45,220, 76,197, 42,149, 42, 66,173, 86,227,250,245,235,120,248,240, 33,228,242,103, 90,150,112,234,212, 41, 0,128,187,187,187,
-101,130,165, 85, 7,120, 71, 38, 35, 33,160,120,192,159,119,100, 50, 0, 96,201,204,153,144, 74,165,144, 72, 36,165,231,114, 28,
-103, 73, 34,155, 5,150,121,148,224, 51,199, 27,184,219,238,154, 59,227, 67,159,122,190, 13, 85, 87,255,220,137,216,216, 36,164,
-166, 90,150, 62, 50,133,205, 13,153,173,205,117,169,213,255,154, 5,107,193,185,115,232,208,161, 99, 6, 15, 30,108,213,182,109,
- 91,217,143, 63,254,152, 83, 94, 92, 61,111, 56,203, 66,169, 84,246,126,245,213, 87,255, 28, 63,126, 60, 6,245,233,129,183, 58,
-250,209,196,180, 92, 13,128, 19,148,210,106,111,106, 82, 82, 82,146,167,167,103,207,215, 95,127,253,215,102,205,154,249, 81, 74,
-209,180,105, 83, 12, 26, 52, 8,123,246,236, 65, 84, 84, 20,242,243,243, 13,231,207,159, 95,165, 86,171,127,178,240, 97,180,118,
-116,116, 60,122,250,244,105, 87,107,107,107, 28, 63,126, 28, 69, 69, 69,207, 56, 87, 75,150, 44,145, 63,126,252,120,237,177, 99,
-199,234,162,120, 93, 56, 65, 92, 9, 16, 32, 64,192,191, 15, 85,106, 17,179,112,162,148,246, 47, 43,152,202, 11, 45,243,111,243,
-121, 75,151, 46,237, 95, 86,124, 1,192,178,101,203,150,148,217, 46,250, 43, 34, 99, 22, 88, 93, 8, 33, 20, 64, 23, 74,233,217,
-114, 54, 96,241, 15,222, 4, 67,210, 9, 24,146, 78,192, 58, 96, 54, 14,172,126,251, 41, 34, 75,156,161,138,160,213,106, 33,150,
- 58, 27,182,109,126, 75, 2, 0, 28,181, 49, 60,115,237,234, 28,172, 26, 76,150,106, 73, 56, 9, 33, 76, 25, 94,238, 89,247,202,
-107, 69,187, 14,109, 58, 54,108,209,218,250,234,209,189,120,112, 63, 14, 25, 25,185, 0,133,182, 50,206, 19,195,250,162,240, 81,
- 12,172,236,236,110,244, 62, 29,249,148,115, 85, 27,206, 19, 39, 78,124,218,174, 93,187, 57,187,119,239, 86,251,250,250,202, 68,
- 34,145,161,172,184,170,109, 56,203, 66,165, 82,117, 16,137, 68,199, 25,134,177,234,211,167, 15,166, 76,153,130,239,190,251,206,
-196,139,229,253,215, 31, 13, 31, 90,160, 51,204,182, 68, 92,149, 17, 89, 55, 1,248,215,173, 91, 87,102, 50,153,186, 14, 24, 48,
-224,112,191,126,253,112,249,242,101,156, 60,121,178,145,193, 96, 72, 46,185,238, 2, 0,238, 12,195,124, 93,197, 74,238,140, 68,
- 34,217,113,242,228,201,102, 42,149, 10, 39, 78,156, 64, 81, 81, 81,169,115,245,206, 59,239, 60,229, 92, 93,186,116, 41, 83, 16,
- 87, 2, 4, 8, 16,240,175, 70,165, 90,164,172,251, 84,145,200,178,176, 82,110, 22, 95,154, 25, 51,102,204, 34,132, 28, 42,113,
-184, 52, 0,212,127,137,192, 42,137, 8, 41,137, 88,181,163,184,184,252,216,103,246,241,124,237,203,173, 70, 61,142,221,177,178,
-178,194,250,245,235, 97,109,109, 93, 99,225, 84,120,120, 47, 18, 38,141, 44,117,174,204, 78, 22,122,143,174,173,192, 50, 59, 88,
- 87, 80,174,137,208,203,203,235,195,150, 45, 91,190,187,105,235,175,182,203,230,124,158,155,119,247,142, 72, 91,164,179,209, 25,
- 77,134,135,169, 25,149, 78,143, 96,202,203,129,204,198,230,134,216,218,170, 34,113, 85, 43,206,203,151, 47,107,187,119,239,190,
-101,201,146, 37,109,121,158,223,250, 34,194, 89, 86, 92, 57, 59, 59, 31, 91,187,118,173,149,149,149, 21,116, 58, 29,190,254,250,
-107,156, 58,117,170,127,114,114,242, 49, 0,199,106,155,222, 6,131,225,189, 30, 61,122,124,251,233,167,159,194,104, 52, 98,216,
-176, 97,120,242,228,201,241, 7, 15, 30,124,231,229,229,245,233,196,137, 19, 85, 46, 46, 46,152, 48, 97,130, 4,192, 59,149,208,
-124,245,219,111,191,245, 15, 8, 8,192,217,179,103,145,155,155, 11,165, 82,137, 15, 63,252, 80,186,116,233,210,109,249,249,249,
- 67,151, 46, 93, 42, 56, 87, 2, 4, 8, 16,240, 31,129,165, 90,164,172, 19, 85, 67,126,243,255,196, 75,151, 46,189,179,116,233,
-210,167, 28,174,191, 68, 96,149, 68, 6, 0,186, 88,226, 14,241,154,103,251,240,240,156,169, 38,145,180,232, 60, 75,154,243,128,
-255,245,193,170, 64, 40, 61,179, 93,131, 62, 88,199, 40,165,151,202, 10, 44, 47, 47,175,215, 60, 60, 60,190,250,237,183,223,172,
-212,106, 53,188, 26, 55,183,255,115,207,239, 58,119, 27,153, 54, 49, 43,107,116,100, 82,193,238,202, 56,121,109,225, 13,185,141,
-226,186,220, 90, 81, 94, 92,213,154, 19, 0, 78,157, 58, 53,173, 2,135,237,185, 56, 85, 42, 85, 7, 23, 23,151, 99,107,215,174,
-181, 86,171,213,144, 72, 36, 80, 40, 20, 56,125,250, 52, 74,196, 85,173,225,229,229, 53,111,242,228,201,115,223,121,231, 29,100,
-103,103,227,228,201,147,232,218,181, 43,214,174, 93,235,115,250,244,233,111,219,183,111, 15,150,101,113,226,196, 9, 24,141,198,
-251,149,164,235,224,241,227,199,127,250,198, 27,111, 32, 44, 44, 12,201,201,201,152, 48, 97,130,254,195, 15, 63, 44,237,115,245,
-253,247,223,191,241,248,241, 99,193,185, 18, 32, 64,128,128,255, 8,170,210, 34,229,240, 39,128, 87,203,187, 90,229,197,151,217,
-161, 42,187, 93,254,252,146,227,218,191, 34, 62,102, 7,171,114,215,138,114, 96,157, 90,130,203,186, 89, 70, 96, 37, 63,117,138,
- 68,166, 0,103,129,112,153, 51,142, 24,103,188, 5,209,207, 11, 24,136,165,206,134, 70, 61,142,221,169,236, 92,133, 66, 1,158,
-231, 45,210, 97,146,126,111,176, 13,122,191,134, 71, 45, 60, 64,141,134, 82, 39, 11,179,102, 61, 37,174, 36, 18, 9,244,122, 61,
- 80, 65,179, 95, 57,132, 17, 66,158,176, 44,123,153, 82, 74,187,116,233,178,217,104, 52,190,166, 80, 40, 28,199,141, 27,103,200,
-200,200,192,190,125,251,176,101,203, 22, 77,129, 65, 20,158,157,105,124,251,145,186, 32,177, 10,190, 27,175,158,189,243,148,115,
-245, 2, 56,159,193,139,224, 84,169, 84, 29,220,220,220, 74,197,149, 76, 38,131, 66,161, 64, 82, 82, 18, 68, 34,209,115, 77,210,
- 89,183,110, 93, 89,155, 54,109,166,143, 30, 61, 26,119,239,222,197,140, 25, 51,146,213,106,245,222, 3, 7, 14, 76,152, 58,117,
-170,168,115,231,206, 72, 75, 75,195,134, 13, 27,140, 97, 97, 97, 75, 82, 82, 82,150, 87,152,105, 69,162,247, 22, 46, 92, 72,213,
-106, 53,121,244,232,209, 83,206, 85, 94, 94,222,208,165, 75,151,202, 99, 99, 99, 5,231, 74,128, 0, 1, 2,254, 91, 14, 86, 85,
- 45,104, 25, 37,226, 41,181,130,109,182,140,176, 42,191,157, 86,110, 27, 0,244,229,142, 71,254,101, 2,171, 50, 24, 57, 38,247,
-183,181,239,219, 15, 28, 50, 17,114,143, 87,160,127,188, 19,188, 38,181, 84, 96, 73,228,182,176,115,169,131,188, 2, 13, 46, 70,
-199,194,200, 49,185, 85,241,153, 76, 16, 77,254,248,127,163, 5, 29, 28, 28,144,155,155,251,148,163,101,109,109, 13,149, 74,133,
-188,188, 60,236,222,189, 27,213,205, 89, 68, 41, 93, 56,122,244,232, 47, 39, 78,156,200, 52, 24, 49, 22, 5, 87,206, 63,227, 90,
-201,229,114, 88, 89, 89, 33, 41, 41, 9,247,238,221,227, 41,165, 11,171, 81,209, 87, 25,134,185,177, 99,199,142,196, 46, 93,186,
-188,227,232,232, 56, 98,236,216,177, 86, 97, 97, 97, 88,184,112,161,232,196,137, 19,134,107,215,174,153, 56,142,155,150,148,148,
-180,193, 2, 85, 94, 94, 92, 61, 55,103, 5,226,234,185, 57, 85, 42, 85,123,149, 74,117,236,187,239,190,179, 78, 73, 73,129, 76,
- 38,131,173,173, 45,226,227,227,177,112,225,194, 66,147,201,212,231, 57,243,155,204,198,198, 70,102, 52, 26,177,117,235, 86, 36,
- 37, 37,181, 75, 78, 78,142,247,240,240,216,240,193, 7, 31,172,246,243,243,107,122,239,222,189,251, 5, 5, 5,147, 82, 82, 82,
-238, 86, 70,226,224,224,208,206,213,213,149, 92,190,124, 25, 19, 38, 76,208, 79,158, 60,185,180,207,149,224, 92, 9, 16, 32, 64,
-192, 75,137,176,106,182,255,117,168, 82, 96,165, 23,105,220, 54,108,219,187,124,199,158,125,227,198,143, 30, 33,239,210,101, 52,
-196,249,183,192,101, 70, 64,213,168, 3, 8,107,141,171, 55,174,227,230,195, 4,109,145,150,221,156,103,208,124, 86, 78, 88, 84,
-185,218,118,110,110, 46,234,214,173,139,227,155,155, 52,211,107,211, 36, 65, 78, 0,129,189,225,196,233,126,119,206,157, 59, 87,
- 0, 96,115,163, 70,141,118, 85,197,121,253,250,245,249,129,129,129, 7,102,206,156,185,180, 81,163, 70,125,198, 47, 88, 7,201,
-199,163,161,137,186, 9,235, 46, 67,225,224,224,128,172,172, 44,132,135,135, 35, 63, 63,255, 40,165,116,230,141, 27, 55,110, 85,
-197, 73, 41,189,210,180,105,211,196, 54,109,218,216,234,245,250,239, 62,249,228, 19,171,194,194, 66,100,100,100, 32, 51, 51, 19,
- 87,175, 94, 61, 97, 52, 26, 63, 74, 77, 77,125, 92,133,168, 42,229,228,121,190, 84, 92,189, 40,206,178,120, 81,156, 54, 54, 54,
-159,237,219,183,239, 41,231, 42, 46, 46, 14, 11, 22, 44, 40,212,106,181,125,212,106,181, 69, 19,116, 86,149,238, 60,207,195,100,
- 50,129, 82, 10,169, 84,154, 7, 0, 37, 98,170,187,165,156, 25, 25, 25,161, 79,158, 60, 25,100, 99, 99,131,201,147, 39, 75,151,
- 44, 89,178, 45, 55, 55,183,198,206,213,255,231, 85,235, 5, 78,129, 83,224, 20, 56,255,109,156, 47, 27,170, 20, 88, 81, 81,212,
- 0,224, 35,127,127,187,249, 95,175,255,109,253,207,187,246, 12, 30, 55,252,117, 81,112,139,174,120,156,114, 0,231,194,207,152,
-178,243,233,190,124, 61, 59, 33, 42, 42,175,218,177,255, 34, 17, 76, 51,103,191, 37, 2, 0,177, 24,166, 89,253,251,135, 54,107,
-214,172,227,192,128, 52,201,132,201,197,206,214,250, 53,111, 73, 66, 67, 67,119,201,100,178,141,177,177,177,121,150, 68,162, 68,
- 48,245,109,213,170,213, 43,159,126,250,233, 87,253,234,121,181, 30,220,174, 11,196, 98, 49,174, 93,187,134,172,172,172, 48,134,
- 97,166, 95,191,126,253,156, 37,124, 7, 14, 28, 72, 4,128,162,162,162,133,141, 26, 53,146, 70, 71, 71,227,225,195,135,136,137,
-137, 1,199,113, 15, 18, 19, 19,107,212, 33, 78, 46,151, 95, 5,112,231, 69,114,150,197,139,226,212,104, 52, 75, 22, 45, 90,212,
-107,254,252,249, 50, 91, 91, 91,220,184,113, 3,243,231,207,175,145,184,170, 14,148, 82, 24,141,198, 26,141,252,172, 0,211, 3,
- 2, 2,154, 44, 90,180,168, 81, 73, 95, 46,193,185, 18, 32, 64,128, 0, 1,255, 29,129,245, 63,161,149,151, 13,224,205, 32,127,
- 59,223, 37,235,126,221,108, 37,229, 59,106,244,204, 5,141,142, 25,119, 61, 42,239,145,165, 23, 91,184,153,138,203,110, 47, 0,
-224,239,239,111,147,224,129, 2,243,190,132, 84, 64,173, 86,127, 93,155,200, 92,187,118,237, 28,128, 54, 65, 65, 65,131, 15, 19,
- 50, 11,136, 5,165,116,201,245,235,215,247,213,132,167,117,235,214,117, 11, 11, 11,127, 54, 24, 12,129, 60,207, 75,207,158, 61,
- 11,173, 86,139,232,232,104, 13,207,243,187,107, 26,174,216,216,216, 59, 47,154,243,175, 8,103, 98, 98,226, 53,149, 74,213,131,
- 16,114,114,250,244,233,178,154, 58, 87,213,193,201,201,169, 40, 37, 37, 37, 83,171,213, 58,167,166,166,234,157,156,156,106, 53,
-247, 8,165,244, 1, 33,164,197, 39,159,124,178,224,211, 79, 63,253,236,171,175,190,146, 8,125,174, 4, 8, 16, 32, 64,192,127,
- 78, 96,153, 81, 34,166,186,116,233,226,106,115,225, 82,122,225,139, 8, 64, 84, 84, 84,225,156,113,164,212,217, 18,137,158,127,
-134,237, 18, 65,181,175,182,255,207,207,207, 95,146,149,149,213, 54, 47, 47,207,244,248,241, 99, 13, 33,196, 68, 8,209,240, 60,
-191,128,231,249, 13, 47, 51,167, 90,173,190,232,225,225,209,233,226,197,139, 83, 11, 11, 11,215,170,213,234, 75, 47, 42,179, 69,
- 68, 68, 24,149, 74,229,200, 1, 3, 6,140,229,121,126, 67, 82, 82,146,177,182, 92,148, 82, 61,128,233,132,144,189,183,110,221,
-218,121,233,210,165,100, 65, 92, 9, 16, 32, 64,128,128,255,164,192, 50, 35, 52,244,197,136, 43, 51,202, 59, 91,255, 52,238,221,
-187, 55, 28,192,240,255,143,156, 0,144,146,146, 18,254, 87,240, 2, 64,114,114,242,113, 0,199, 95, 20, 31,165,244, 26, 33,164,
- 30,138, 71,137, 8,226, 74,128, 0, 1, 2, 4,252,119, 5,150, 0, 1,255, 38,148, 44,105, 36,136, 43, 1, 2, 4, 8, 16,240,
-175, 1, 1,208,188,146, 66,203,226,209, 1,132,144,230,181, 40, 20,111, 11,156, 2,167,192, 41,112, 10,156, 2,167,192,249,255,
-139,179, 58,238,151,101,116, 34,121,206,209, 92,213,222, 60, 97, 8,171,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,255,223,
-192, 8,183, 64,128, 0, 1, 2, 4, 8, 16, 32,224,197,162,198,125,176, 90,183,110,221, 16, 0,194,194,194, 30,252, 85,129, 34,
-132,124,168, 84, 42,199,181,108,217,210, 79, 34,145, 48,185,185,185,243, 67, 67, 67,231, 87,116,110, 64, 64, 64,120,175, 94,189,
-124,207,156, 57,163, 47,249, 47,202,126,115, 28,151, 24, 30, 30, 30, 34, 36,245, 63, 3,165, 82,121, 76, 46,151,251, 20, 79, 48,
- 74, 97,226, 57,112, 60, 5,199,241, 48,114, 20, 6,189, 54, 78, 87,152,219,187, 86,220,129,175,215,225, 56,126, 41, 5, 93, 79,
- 40,153, 64, 9, 93, 79, 40,249,128, 50,100, 61,225,233,251, 16,153,190,129, 73,244,169,136, 23,207, 86, 71,237, 74,120, 25,238,
-231,252,249,243,159,171, 82, 52,119,238,220, 10,215,159, 10, 10, 10, 58, 36,151,203, 27, 84,246,191,162,162,162,228,200,200,200,
-174, 47,115, 94,245,240,240,120,133, 97,152, 53, 0,154,149, 59,116, 23,192, 71,106,181,250,212,191, 45,204,110,110,110,231, 88,
-150,109, 84, 88, 84, 84,152,159,151,231,107,107,107,251,200,202,218,198,134, 51,113,247, 51, 50,210, 94, 17,222, 64, 2, 4,252,
-139, 5, 86,112,112,112, 99, 0,157, 9, 33,157, 41,165,175, 52,109,218,212,189,168,168, 8,193,193,193,169,132,144,115, 37,171,
- 95,159,141,136,136,136,121, 17, 1, 98, 89,118,249,119,223,125, 55,109,242,228,201,165, 34,233,246,237,219, 85,157,239,181,108,
-217, 50,251,248,248,120, 72, 36, 18, 72,165,210,210, 15,203,178,104,219,182,109,141,174,239,228,228,100,235,230,230, 54,159, 16,
- 50,148, 97, 24,182,186,243,121,158,231, 40,165,187,210,210,210,230,102,101,101,229,215,228, 90,173, 66, 90, 26, 1, 82,201, 53,
- 40,119, 45,252,102,149,163, 43,155, 52,105, 18, 46, 18,137,188,202, 10,202, 50, 34,181,194,223, 28,199, 37,222,185,115, 39,196,
-210,123, 33,183,182,254,140, 48,162, 30,160,124,211, 98, 50,230, 46,229, 77, 39,181, 69, 69,203, 45,137,175, 76, 38,243,137,184,
-126,189, 81,212,189, 88,248,214,175, 3,189,193, 4,157,222,136, 3, 39,175, 33,192,175, 30, 6,246,235, 89,235,188, 98,226,201,
-188,217, 31,190,221,109,201,154,237,173,102, 77, 30,161, 88,178,102,123,200,172,201, 35,108,151,172,221, 30, 50,123,202, 91,182,
-139,214,252, 22, 50,123,202, 91,246,139,215,252,166, 7,240, 94,109,174,241,110, 11,159, 66,134, 51,201, 42, 76,123, 86,164,251,
-241, 86,156,205, 63,241,224, 46, 89,178,164,177,193, 96,136,126,103, 88,200,194,166, 13,221,210, 42, 58, 39, 55, 55,205,237,225,
-221,240, 57, 16, 75,252,252, 90,207,170,242,249,148, 72, 36,245,207,157, 59,215,200, 60,211, 62,199,113,224, 56, 14, 38,147, 9,
-122,189, 30,111,188,241,198, 11, 25, 16, 19, 18, 18, 50,150, 82,186,184, 56, 91,146, 69,225,225,225,107,159,163, 34,166, 16,137,
- 68,159, 72,165,210,206, 38,147,201, 15, 0,196, 98,113,180, 78,167, 59,107, 50,153,190,165,148, 22,212,132,143, 97,152, 85, 97,
- 97, 97,254,182,182,182, 48, 24, 12,165, 11,195,179, 44,219,180, 77,155, 54,235, 0, 52,178,148,203,203,203, 43,156, 16,226, 85,
-147,235, 83, 74, 19, 19, 19, 19, 67,106,248,190,108,244, 36, 94,237, 86,183,142, 10, 0, 96,109,109, 99,115,237,246, 99,183,224,
-102,117,133,210, 77,128,128,127,171,192, 10, 14, 14, 62, 12,160,115,211,166, 77,173,122,246,236,137,160,160, 32,248,248,248, 64,
- 46,151, 3, 0,178,178,178,220,163,162,162,222,188,113,227,198,155,151, 47, 95, 70,112,112,176, 6,192,133,136,136,136, 10,221,
-136, 30, 3, 58, 77,150, 43,100,223, 1, 64,122, 82,102,114,226,163,180, 53,201,201,201,203, 41,165,124,153, 23,166,239, 59,239,
-188, 51,117,202,148, 41, 56,116,232, 16,182,111,223, 14,157, 78,135,220,220, 92,132,134,134, 86, 24, 78,142,227, 18, 71,141, 26,
- 37,138,137,137, 49, 85,230, 96,213,176, 70, 56,127,216,176, 97, 31,251,251,251,151, 46,235, 98, 52, 26, 75,191,179,179,179, 49,
-117,234, 84,243, 11, 17, 60,207,227,244,233,211,147, 63,255,252,115, 0,248,164, 34,206,158,157, 27,132,139, 8,241,226,255, 39,
-202, 18, 79,156,123, 20, 2, 16,246, 90,120, 36, 41,247,146, 5, 0,180,110, 21, 88,173,184, 19,137, 68, 94,215,175, 95,119,147,
- 72, 36, 22,197,141,231,121, 4, 5, 5, 89,116,174,167,167,103, 87, 27,133,221,246,193,195,223,117, 12, 12, 10, 18,123,169,148,
- 48,154, 76,136,125, 28,223, 58,242, 70, 68,224,241,131,191,143,243,244,244, 28,145,148,148,116,166, 42, 30, 35,199, 35,242,206,
- 3,156,184,112, 29, 3, 36,114, 20,105,245,200, 47,210,227,231, 63, 46, 34, 49, 45,183,214, 25,183, 77,155, 54,158, 54, 34,151,
- 54, 83,222,123,205,230,155,239,183,217, 76,121,239, 53,172, 88,255,115,233,247,228,119, 7, 97,249,247,219, 20, 83,222, 29,132,
- 53, 27,182,180,107,211,166,141,231,213,171, 87,147, 42,227,171, 44,141, 24,206, 36,219, 28,149,196, 2, 64,250,134, 13, 48,164,
-166, 66, 53,119, 46, 0, 96,124, 51, 47, 89, 77,194,220,188,121,243, 82, 65, 92,165,112, 52,153, 18,111,223,190, 29, 82,157,184,
- 50,153, 76, 84, 36, 18,205, 57,127,100,254,238,246,173, 27, 63,117, 51, 99,238,199,216,207,251,114,238,144,157, 71,243,233,155,
-125,108,163,163,195,150, 84, 41,178,120,158,103,116, 58, 29,238,223,191, 95,225, 44,251, 12,195,112,181, 73,167, 46, 93,186,200,
- 10, 11, 11,127, 83, 40, 20, 45, 11, 11, 11,199, 82, 74,191, 12, 13, 13,117,103, 24, 6, 61,122,244,248, 50, 36, 36,228,177, 76,
- 38,251, 94,171,213,222, 80, 40, 20, 35, 66, 67, 67,117, 22,138,171, 87,108,109,109,127,222,191,127,191, 99, 80, 80, 16,147,145,
-145,129,122,245,234, 33, 43, 43,171,245,185,115,231,130,223,125,247,221,119, 9, 33,163, 40,165,231,106, 16,220, 38, 54, 54, 54,
-116,244,232,209,132,227,254, 23,221, 31,127,252, 17,193, 13, 82, 27, 76, 24, 98, 85,164, 53,208,220,243, 55,229, 31, 80,134, 94,
-120,242, 36, 39,183,138,240,121,205,223,252,145,155, 84, 42,133,209,104, 44,253, 80, 30, 0, 5, 40, 15, 80,158,130, 82, 0,148,
-128,231,120,172,152,185,185,214,207,131,181,141,141,181,135,135, 50,213,202,218,218,154, 10,229,154, 0, 1,255,122, 7,171,111,
-104,104, 40, 76, 38, 19,108,109,109,193,178,108,121,119, 3,175,188,242, 10,218,180,105,131, 30, 61,122,224,222,189,123, 86, 95,
-125,245, 85,165,118,196, 91,211,250,195,187,145,187, 89, 68, 40,207, 31,186,190,244,135,249,123, 92, 0,124, 90,230,180,177,227,
-199,143, 39,153,153,153, 24, 58,116,232, 57,157, 78, 55,136, 82, 90,229,114, 57,145,145,145, 47,180,249,143, 16, 50, 84,169, 84,
- 98,199,142, 29,208,235,245,207, 28,183,179,179,195,157, 59,119,202,214, 32, 17, 24, 24,200, 18, 66,134, 86, 38,176, 24, 66,188,
-142,132, 62,112, 51,111, 15, 27, 24, 40,233,213,185, 65,170,136,145, 82, 0,100,246,236,217,165,226,138, 82,138, 5, 11, 22, 88,
- 28, 94,137, 68,130,187,119,239,130,101, 89, 60,234,216,184,184, 32,191,158, 0,150,101, 17,217,178,184, 86,219,238,126, 54, 68,
- 34, 17, 20, 10,133,165,226,170,139,187,210,107,255,204,185, 75,109,181, 70,138, 63, 79,135, 33, 94,125, 2,148, 82, 40,221,156,
-208, 62, 56, 72,236,215,162,165,219, 79,235,150,239,247,244,244, 28,148,148,148, 20, 90,185, 88,224,224,215,184, 62,182,238, 63,
-135,197,223,239, 70,102,158, 22,249, 69,197,247,181, 71, 59,127,252,184,162,246, 78,103,211,250,245,189,183,238, 60,134,246,109,
- 91, 99,235,206,163,104,215,182, 53,182,238, 42,222,222,182,235, 24, 58,181,107,131,109,187,142,161,185, 95,163, 58,153, 79,114,
-151,163,138,185,189,158, 73,163, 65,197,105, 84,143,149, 16,115,218, 60,153, 48, 1, 0, 74, 5, 86,141, 31,182, 18, 65, 92,221,
-121, 85,137,224, 50,226, 10,105,105,105, 36, 39, 39,135, 58, 56, 56, 12, 41, 43,178,204,226,234,247, 35,121,208,196,172, 33,191,
-254,122,150, 31, 57,178,115,116,116,216, 18, 63, 96,110,133,139,104, 27, 12,134,199,189,122,245,162, 0,160,215,235, 61,165, 82,
-169,164,156, 0, 83,117,232,208,225, 25,129, 86, 93,211, 97, 97, 97,225,111,187,118,237, 26,236,238,238,142, 65,131, 6, 29,247,
-247,247,151, 90, 91, 91,227,200,145, 35,240,242,242,114,177,179,179, 59,188,116,233, 82,172, 92,185,178,206,241,227,199,183, 3,
- 24,108,193, 51,218,163,107,215,174, 59, 14, 29, 58, 36,151, 72, 36,208,104, 52,184,115,231, 14,236,237,237, 33,149, 74, 49,104,
-208, 32,182,125,251,246,206, 93,187,118,221, 67, 8, 25, 65, 41, 61,105,105, 26,105, 52, 26, 58,115,230, 76, 88, 91, 91,195,198,
-198,166,244, 99, 37,229,200,250,121,245,173, 62, 94,150, 98, 53,251,243,145,203, 54,253,116,240, 76,157, 58,246, 95,198,199,231,
-230, 84,234, 98,177, 45, 48,227,211, 25,102,129, 10,169, 84,250,148,203,110,254, 45,145, 72, 16, 24, 24, 88,109,216,252,252,252,
- 54,176, 44,235, 90, 78,248,178,115,190,152,101,186,117,231,158,141,209, 4, 27,173,222,136, 69, 11,190, 52,177, 12,203, 54,111,
-222,124, 31,165, 52,253,206,157, 59, 31, 8, 69,157, 0, 1,255, 46,129, 5,133, 66,129,107,215,174,129, 16, 2, 91, 91, 91,216,
-217,217,193,222,222, 30,121,121,121,136,138,138,194,221,187,119,241,248,241, 99, 48, 12, 3, 95, 95, 95,160,120,218,135,178,110,
- 76,105,219,222,111, 43, 14, 65,174,144,129, 16,160, 85,207,150, 8,233, 22,128,219, 87, 31,125,164, 82,169, 54,171,213,234,251,
-132, 16, 81,243,230,205,223,109,219,182, 45, 86,174, 92, 9,157, 78,247,109, 69,226,170,162, 81, 11, 31, 12, 22,159,151,136, 24,
-111,131,137, 79,216,176,207,216, 41, 48, 48, 48, 60, 40, 40,168,222,173, 91,183,140,102, 55,171,124, 51, 89,217,126, 89,229, 57,
- 51, 50, 50,192,243,188,197,174, 80, 78,206,179,239,216,114,139, 71, 63,117,108,209,210,149, 14,249,185,105, 88,248,245, 47, 48,
- 26,141,152, 54,109, 26,120,158, 7,207,243,224, 56, 14,217,217,217, 64, 5,213,208,242,225, 52,199,137,101,217,167, 4,112,117,
-219, 85,113,186,186,186,218,200,228,214,219, 63,157,189,208,246,102, 76, 34, 14,157, 14, 3,165, 20, 7, 54,125, 9, 0, 24, 52,
-126, 1,146,146,211,209, 62,184, 41,222,121,255, 19,219, 85, 75,103,111,119,117,117,109,144,158,254,191,201,103,203,114, 26, 77,
- 60,118, 31,189,140,228,204, 2,140, 26,220, 13, 58,189, 17,105,169,201,216,242,253, 55,152, 56,102, 47, 28, 21, 86, 30,190,190,
-190, 49,101,239,145,173,173, 45,171,213,106,207,197,196,196,188, 87, 89, 56,141, 70, 99,223,153, 31,143,195,170,205,187,209,204,
-215, 29,135, 78, 92, 65,171,230, 62, 56,124, 58, 12,237, 90,212,195,209,179,225,104, 31,224,139, 51,151,111,227,163, 15, 70,226,
-179,143,206,245,173, 81, 26, 45, 89,233,144,159,151,134, 63,151,108, 67,218,218,181,136,155, 60, 25,173, 74,242,196, 53,134,129,
-196,211, 19,176,171,254,126, 86,132,187,119,239, 66,167,123,214,168,145,201,100,104,218,180,105,149,156,102,231, 42, 53, 53,149,
-164,166,166,194,198,198,134, 68,223,185,205,249, 53,107, 62,132,203,218,185, 25, 0,138,157,171, 60, 20,221, 91, 13,205,253, 53,
-144,228,220, 98, 54, 45,120, 95, 63,254,203,141,209,230,103,180,124, 56, 35, 35, 35, 75,239, 79,219,182,109,239, 94,184,112,161,
- 73, 25, 23, 24, 38,147, 73, 98, 50,153, 26,153,155, 13, 77, 38, 19,116, 58, 29, 70,140, 24,193, 86, 21,119, 43, 43,171,150,238,
-238,238,184,122,245, 42,230,205,155, 39,109,214,172, 25,238,223,191, 15,134, 97, 48,118,236, 88,248,251,251, 35, 61, 61, 29,173,
- 90,181,194,249,243,231, 3, 45,200,243,182, 54, 54, 54, 63, 29, 60,120, 80,206, 48, 12,242,243,243,193,243, 60, 58,116,232, 0,
- 66, 8,110,221,186,133, 47,190,248, 2,123,247,238,197,254,253,251,173,130,131,131,127, 34,132,248, 81, 74,243, 45, 72, 35,170,
-211,233,168, 92, 46,135, 92, 46,135, 76, 38,131, 76, 38,131, 68, 34,129, 70,207,226,253,185,143,117, 98,153,130,111,217,194,183,
-193,196,241,131,153,133,203,182,156, 6,112,160, 50, 78, 53,189, 3,167,102, 4,199,183,132, 99,208,132, 87, 32, 17, 75, 33, 17,
- 75, 32,149, 72, 33, 46,249, 45, 17, 75, 32, 21,203,192,186,104,171,205, 75, 98,177,216,229,250,245,235, 14,101,159,101,147,201,
- 20, 61,121,242,100,223,193, 3,251,187,239,220,123,136,125,123,216, 32,206,195,221, 45, 35, 33, 33,238, 1, 0,135,224,224, 96,
- 90,211,252, 89, 83, 8,156, 2,231,223,132, 86, 0,202, 86, 48,244, 0,164,230, 98,187,228,221,230, 92,110, 63, 0,164,155,139,
-183, 74,182, 51, 0, 68, 1,240, 43,217,199, 1, 8, 3,144,253,188, 1, 22,149,188,180,104,153,155, 70, 42,184,145,200,203,203,
- 67, 94, 94, 30, 18, 18, 18,176,126,253,122,136,197, 98,136, 68, 34,136, 68, 34, 48, 12, 83,218, 95,161, 50,156, 60,120,126, 13,
-128, 53,193,193,193,226, 31, 46,239, 62, 60,123,235, 71,221,219,244, 12,102,195, 79,220, 26, 2, 96, 17,128,190,163, 71,143,118,
- 1,128,109,219,182,101, 0, 56, 98,177,139, 35, 98,188, 87,127,247, 75,157, 41, 31,189,109, 22, 20, 94,155, 55,111,118, 76, 76,
- 76,124,170,150, 40,145, 72,170,237,151, 69, 41,221,245,224,193,131,143,149, 74,101,105, 65, 82,182,153,208,100, 50, 65, 46,151,
-151,138, 33,157, 78,135,223,126,251,205, 68, 41,221, 85, 5, 39, 98,238,156,194,253, 59,103,192,113,252, 83, 98, 74,171,213, 98,
-222,188,121,165,238, 21, 0, 76, 40,113, 74, 44, 69, 85,206, 21,203,178,184,224, 91,172, 4,250,165,211,103,250,106,149,135, 88,
- 42,159,214,239,245,145, 78, 38,202,150,138,171,226, 56, 20,139, 11,169, 88, 4, 43,153, 24,247, 31, 37,160,158,103, 48,186,247,
-121,205,241,228,225, 61,211, 0, 84, 56, 8,193,200,241,232,215, 37, 24,223,239, 56,131,188, 2, 45,242,114,178,144,145,112, 23,
-209, 55,195, 32,149, 74,113,229,202, 21, 91,123,123, 7,219,250,245,235,129,227,120, 92,184, 18, 14,107,107, 43,236,216,254,107,
- 61,159,122,245, 17,247, 56,246,189, 74,132,173,168,125,136, 31,242, 50,226, 33, 18,137,208, 62,168, 1, 68, 34, 17, 58, 4, 55,
- 2,203,178,232,216,170, 9, 88,150, 69,231, 54,254,104,208,160, 1,120,158, 23, 85,243,178, 64,204,237, 83,136,137, 58, 3,202,
-243,224,248,226,230, 95, 10,192,144,156,252,108,188, 82, 82, 64,237,220,106,243, 82,194,244,233,211,115,212,106,181,161,252, 49,
-149, 74, 37,217,187,119,175, 67, 85, 83,167, 72, 36, 18, 63,145, 72, 20,157,149,149,197, 91, 91, 91, 51, 28,103,226,253,154, 53,
-103,207, 31,153, 95,186,246,228,188, 5,243,119,191,217,199,110,200, 47, 91, 14, 82,137,107, 7, 66, 88,153,105,220,151, 27,165,
- 16, 75,252, 44,172, 52, 48, 58,157, 14,247,238,221,171,118, 81,238,138,222, 23,229, 28,172,119, 6, 13, 26,116,252,131, 15, 62,
-144,155, 43, 47, 34,145,168, 84,244, 63,124,248, 16, 12,195, 96,211,166, 77,208,233,116,213,102,124,145, 72,244,241,158, 61,123,
-236,165, 82,105,169,184,162,148,130,101, 89,220,189,123, 23, 43, 86,172,192,232,209,163, 17, 31, 31, 15,165, 82,137,105,211,166,
- 41,150, 45, 91,246, 49,138,151, 62,173, 14, 55,245,122,125,136,149,149, 21,100, 50, 25,204, 66, 11, 0, 34, 30,186,223,142,141,
-141,109,225,227,227,226, 81,207,255,214, 31, 93, 58,182, 12,112,118,118,104,103, 22, 88, 21, 86, 80, 11,234, 32, 63, 70,132,206,
-157, 59,227,236,217,115,232,223,191, 63, 56,137, 4,188, 84, 10, 94, 42, 5,149, 72, 0,169, 20, 68, 42, 5,181,182,182, 40,251,
-176, 44,139,148,148,148,167,246,141, 31, 63, 62,110,228,200,145,110, 0,133, 90,157, 68, 63,249,120, 74, 82, 70, 70, 6,117,119,
-119, 23, 44, 4, 1,255, 41, 84,163, 69, 92, 9, 33,135,202, 28,239,111,222,158, 49, 99,198,172,165, 75,151,222, 33,132, 28, 42,
-187,223,124, 94, 9,247,161,138,182, 75,254,235, 60,115,230,204,230,203,150, 45, 91,210,174, 93,187, 29,151, 46, 93,138,125, 97,
- 2,139, 82, 74, 8, 33,180,186,151,101,121,231,228,233,166, 32,203, 38,210,142,136,136, 48,122,122,122,254,112, 55, 60,182,123,
-147,144, 70,176,178,145,245, 36,132,172,145,201,100,159,140, 26, 53, 10, 87,174, 92,193,237,219,183,127,172,201,178, 39, 6, 19,
-159, 48,229,163,183, 97, 48,241, 9,102,135,106,218,180,105,146, 11, 23, 46, 24, 42,115,176, 42,227, 74, 75, 75,155, 27, 22, 22,
-134,170, 58,185,191,249,230,155,101, 11,163,210, 78,238,149,190, 21,121, 10,131,193,136,194, 66, 77,177,176, 42, 41,188, 57,142,
- 67, 97, 97, 33,134, 13, 27, 86, 42,186,120,158, 71, 90, 90, 90,173, 18,147, 97, 24,139,157,171, 74, 57, 88,182,119,203,128, 32,
-241,233, 75, 55,159, 42, 92, 95,123,127, 17,164,146, 98,113,101, 37,151,192, 74, 38, 70,130, 58, 21, 77,253,154, 73,206,158, 56,
-212,187, 82,129,101,226,176,230,215, 19, 0, 33,216,125,232, 52, 66,234, 89, 99,254, 23,211, 49,116,232, 80, 72,165,114,236,217,
-179, 11,203,215,109,197, 4, 31, 31, 80, 0,109, 66, 2,241,245,134, 29, 88,184, 96, 1,179,107,231,238,142,213,133, 87, 44, 22,
-131,101,217,210, 66,187,252, 55,203,178,176,100,174, 55,202, 83, 24,140, 70, 20, 21,106,192,241, 60,120,158,130,242, 60, 64, 41,
- 60, 23, 47,134,231,226,197,184,198, 20, 15,224,243, 47, 44,132, 70,163, 1,186,180,172,177,184,210,235,245, 80,171,213,134,200,
-200,200,103, 74,191,128,128,128, 84,189, 94, 95,101,120,103,205,154, 21,179,100,201, 18, 63, 39, 39,167,232,155, 55, 35,141, 45,
- 91, 6,136,203,247,193,106,220,168,113,238,188, 5,243,119,191, 61,102,192,144, 13, 95, 12, 55,125, 48,247,103,145, 37, 29,221,
-203,184,100,143,123,244,232, 97, 81, 87, 30,141, 70,147, 82,217,177,144,144,144,177,132,144,197,141, 27, 55,150,117,235,214, 13,
-231,206,157,195,226,197,139,121,147,201,148, 1, 0,237,219,183,119, 93,184,112, 33,137,138,138,130,131,131, 3,210,210,210,182,
-134,132,132, 44,172,170,227,187, 84, 42,237,210,170, 85, 43, 70,167,211,149, 86, 74, 24,134,193,221,187,119,177,108,217, 50,140,
- 24, 49, 2,141, 27, 55, 46,125,182,186,118,237, 42, 94,189,122,117, 23, 75, 4, 22,195, 48, 31,117,239,222,253, 27, 20,143, 34,
- 44,251,146,139, 6,240, 25, 0,196,197,101,164,140,120,163,253,157,238,157,131, 66, 26,212,243, 84, 86,197,151, 41,126, 8,101,
-144, 21, 36, 98, 9, 70,127, 62, 16,135, 14, 29,194,164,121, 35, 75,156,172, 98, 7, 75, 44,150, 64, 34,150, 66,234, 90,187,133,
- 8, 74,222, 35,196,206,206, 30, 0, 96,111,111,111,126,199, 17, 0,148, 97, 24,161, 75,150,128,255, 12, 44,209, 34,102,129, 84,
- 94,104, 45, 93,186,180,127,249,125,101,197, 84, 69,191,203,254,119,217,178,101, 75,202,112, 23,189,136,248,188,176,165,114,140,
-198,170,215,237,237,214,173,219,100, 91, 91,219,239, 74, 94,188,120,114, 49, 9, 79, 46, 38,193,175, 73,179, 14, 65, 1, 33, 57,
- 35, 70,140,128,179,179, 51, 62,251,236, 51, 10,224,167,154, 92,123,195, 62, 99,167,178,219, 55,110,220,168,117,191,172,146,145,
-113,159,160,146,254, 84,181,204, 52, 48, 26,140, 40, 44,210,194, 96, 48,192,104,228, 96, 50,113, 8,246,183,197,207, 27,167, 67,
-175, 55,192,200, 21,239, 43,118,202, 56,200, 36, 58,116,110,235,109, 4, 97, 52,103, 47,199,217, 85,197,223, 44, 34, 30, 44,203,
-226,102,128,103,133,206, 85, 79,181,193, 98,161, 69,121,174,137,187,187, 27,226,143, 94, 45,174,133, 91,203,113,108,219, 66,216,
- 88, 23,215,228,251,142,158, 85, 44,178,100, 18, 24, 12,122,184,185,215,133,137, 51, 54,169,140,207,100, 52,232, 91, 54,242,132,
-131,173, 21, 34,175, 93,198, 39, 31,190,135,177, 99,223,133, 68,110,139,179,103,207, 32, 94,157,134,135,137,217,248,112,238,247,
- 48, 26, 57, 24, 76, 28,140, 38, 30,171,182, 28,130,129,171, 94, 25, 73, 36, 18, 76,155, 54,205,170,178,227, 59,118,236,208, 88,
- 36,176,104,137, 8, 46,210, 64,167,213, 65,111, 40, 78, 11,174,190, 24,139,190, 24, 9,163,209, 8,205,240,118, 48, 24,141,224,
- 62, 26, 12,131,193,128, 4,107, 17,211, 49, 68,101, 4, 97, 52, 23,174, 37,218, 89, 42,176, 42, 11, 15,165,180,194,166,195,202,
- 68, 86,203,150, 1,209,163,135,133, 44,189,120,233, 90,250,197, 75,215,158, 57,175,126,227,144, 71, 31, 44,218, 49,179, 38,226,
- 10,120,186,185,240, 57,243,253,151,161,161,161,238, 10,133, 2, 49, 49, 49, 96, 89, 22,132,144,204,136,136, 8,119, 0,152, 55,
-111, 94,134, 88, 44,118,102, 89, 22, 31,127,252, 49, 88,150,117,157, 52,105,210, 28, 0,149, 10, 44,147,201,228,103,107,107,139,
-252,252,252,210,251, 40,149, 74, 49, 99,198, 12,188,253,246,219,165,226, 74, 42,149, 98,235,214,173, 8, 14, 14,134, 94,175,183,
-200,185, 75, 76, 76,188, 6,160,147, 5,162,166,184,153,149,231,171,204, 88,138, 66,111,104, 31, 75,193, 73, 36,216,113,224, 0,
-222,126,251,109, 72,165,178, 82,231, 10, 18, 9,136, 84, 10, 70, 34, 1,199,202,106,124,127,121,158, 71, 94, 94, 30,187,117,235,
-214,250,205,154, 53, 35, 20, 64,211,166,254,228,208,159,127,214, 81, 40, 20,177, 78, 78, 78, 6,161,200, 22,240, 18,186, 92,135,
-202,139,172,231,225,154, 49, 99,198, 44, 0,116,198,140, 25,179,204,219, 75,151, 46,213, 0, 80,255,107, 4, 86,117, 14,214,202,
-149, 43,209,162, 69,139, 42, 11,159,213,171, 87,227,231,159,127, 94, 73, 41,125, 84,147,107,191,255,154,248,170,181,149, 68, 89,
-164, 49, 36,111,220,111,108, 19, 16, 16, 16,222,174, 93,187,250,225,225,225,149, 58, 88,149,205,141,245, 87, 76,211, 64, 41,133,
-222, 96, 68, 81,145, 6, 90,189, 30, 83,167,175,179, 40,237, 13,250,124,209,171,125, 94,177,170,206, 73,180,164, 15, 86,117, 77,
-131, 79,139,101, 19,204, 26,160,160, 72,139,174, 35,102,224,218, 31,223, 1, 64,169,184,178,146,137, 33,151,138,193, 16,128,160,
-114,110,163, 38,111,224,231,147,223, 59,191,254,199,159,189, 94,123,101, 28,166, 76,153, 2,145,212, 26,142,206,174, 48,113, 20,
-117, 84,110,120,152,152,141, 61,107,167,151,116, 59,163,120,229,173,121, 88,249,197, 56, 44,159, 87,125,173,158,101, 89,172, 93,
-187, 86, 83,222,181, 42,235,100, 89, 42,130,205, 46,163, 70,167,199,167, 51,191,183, 60,141,122,119,178,178,244,222, 86, 52,112,
-194, 82, 1, 86, 94,100, 1, 96, 1,160,178, 82, 84,230, 12,248,117,232,247,197, 63,249, 50,228,121, 30,127,254,249,231, 51,238,
-106,249, 52,180,212,109,229,121, 30,113,113,113,184,125,251, 54,218,181,107,135,220,220, 92,136, 0, 76,187,117, 11,254,163, 70,
- 65, 87,210,117, 65, 42,149, 98,252,248,241,127,209, 27,190,164, 31, 27,169, 58,161, 10,173, 19,225,222, 92,134,159,150,237,195,
-228, 5,163,225,218, 84,142, 21, 51, 55,149, 30, 95,254,195,188,146,126, 88, 82,200, 21, 53, 15, 70, 94, 94,158,232,155, 21, 43,
- 90,182,105,221,214,234,237,209, 99, 25,189,137,199,162,175,190, 99,119,110,223,230,188,109,219, 47, 86,114,185, 60, 90, 40,142,
- 5,188,132, 46, 87,255, 23,201,101,118,176,150, 46, 93,122,103,233,210,165,207,184, 97,127,169,192, 98, 89, 22,101,135, 44, 87,
- 84,200, 91,210, 7,107,234,212,169,176,181,181,173,240,152,193, 96,160, 55,111,222,140, 74, 78, 78,222, 76, 41,173,241,188, 56,
- 82, 49,227,190,242,155, 45, 94, 83, 62,122,155, 7,138, 71,107,173, 91,183,206,193,220, 7,171,108, 63,172,234,250, 96,185,185,
-185,205,255,250,235,175,167,244,237,219,151, 97, 24,230,169,194,207, 60, 45, 67,217,143,209,104,196,193,131, 7,167, 44, 93,186,
- 20,149,185, 94,148, 22, 55, 63, 21, 22,105,160,213, 21, 23,176, 15,111,239,182, 52, 7, 84,123,138,217,185,106, 27,147, 85,161,
-115,117,212,189,184,224,234,151, 94, 61, 23, 97,216,152,199,113, 9,173, 61, 92, 28,144,157, 91, 0, 89, 73,179,160, 25,102,113,
-101, 37,147,192,209, 94,129,172,204, 52,136,197,226,152, 42, 50,112, 28, 33,164,211,176,193,253,142, 51,172, 72, 94,246,152,216,
-202,206,250,196,197, 91,142,169,217, 69,224,203,196,147,167, 20,147, 23, 90,102, 98,138,197, 98, 76,154, 52,169, 82,129,115,224,
-192, 1, 77,205, 5,150,174,102,105, 84, 3, 39,179, 58, 7,203, 82,129, 85, 30,230,209,133, 18,137,196,175, 68,124, 89,140,128,
-128,128, 35,214,214,214,245, 44, 61,223,210, 73, 71, 9, 33, 11,186,117,235,182,216,203,203,203,237,131, 15, 62, 32, 34,145, 8,
- 33, 33, 33, 46, 95,126,249,101, 46, 0,248,249,249,217,154,223, 49,171, 86,173, 66,116,116,116, 58, 33,100, 97,149,207,186, 84,
-122,215,222,222, 62,164, 91,183,110,200,205,205, 69,124,124, 60, 20, 10, 5,252, 87,172,192,173,137, 19, 17,176, 97, 3,152,110,
-221,138, 5,166, 76,134, 91,183,110, 65, 38,147,221,173,140,207,211,211,179, 13,165,244,107, 0, 29,240,191,102, 65, 10,224, 34,
- 33,228,243,164,164,164,171,207,252,137, 33, 76,113, 69,173,234,132,146,230,186, 67,151, 32,195, 59,239,188, 3,137, 68, 10, 72,
-165,248,244,211, 79,203,188,143,164, 96, 75,250, 99,241,156,212,146,218, 54, 45, 39,214,137, 76, 42,149,141, 30,243, 46,243,249,
-167,159,240, 70,147,137, 23,137,196,204,180,217, 75,152,251,247,110,203, 10, 11, 11, 25, 82,147,154,149, 0, 1,255, 17, 7,171,
-172,208, 42,227, 66, 85,134,244,178,253,178, 42, 19,104,101,251,100, 1,208,189,136,176,138,202,188,220,203, 63,136,247, 35, 35,
- 35, 27, 53,107,214, 12,241,241,241, 21,142,148, 3, 80, 60,132,217,202, 10, 15, 30, 60, 0,128,251,149, 93,232,244,233,211,107,
- 0,172, 49,111,171, 84,170,118, 93,134,118,185, 24,208, 45, 8,187,191,221,153,155,156,156, 28, 96,158, 19,139, 16, 66, 84, 42,
-213,219, 98,169,232,205, 6,205,235,116,230,120,254,235,211,127, 92,152, 95, 25,119,249, 62, 88, 38,147,169,214,125,176, 8, 33,
- 67,251,246,237,203, 68, 69, 69, 97,216,176, 97,248,229,151, 95, 42,189,121,111,191,253, 54,118,236,216,129,222,189,123, 51,203,
-150, 45, 27, 90,185,192, 2,140, 6, 19, 10,139,180,208,106,117,127, 89,198,123, 94,231, 10, 0, 40,111, 58,121,235, 70, 68, 96,
-139,224,118,226,199, 9, 41,144, 75,197, 79, 9, 44,107,153, 4,114, 89,241, 62, 15, 87, 71,132, 93, 58,107, 48,153,140, 39,171,
- 17, 22,113,168, 96,146, 70,153,173, 75, 76,207, 14, 45, 28, 43,116, 60,103,142, 70,139,223, 87, 90, 36,176,126,252,241, 71, 77,
-101,238,149,165,247,128, 82,148, 54, 17, 22,105, 94,108, 26,185,187,187,187,186,185,185,173,119,112,112,144,155,251, 14, 85,118,
-188, 42,135,171, 58,113, 85, 50, 47, 86,244,146, 37, 75,106, 36,178,164, 82,105,189,139, 23, 47, 54, 50,247, 11,172,234, 91,175,
-215,227,205, 55,223,180,200, 22, 12, 15, 15,255, 41, 40, 40,232,161,171,171,235,137,246,237,219,203,162,162,162,176,104,209, 34,
- 34, 22,139,237,204,207,101,126,126, 62, 68, 34, 17,178,179,179, 65, 8,121, 39, 60, 60,252,104, 85,156, 58,157, 46, 52, 52, 52,
- 52,112,224,192,129,108,116,116, 52, 68, 34, 17,120,158,135,174,109, 91, 4,108,216,128,219,159,124,130, 87, 30, 63,134,206,104,
-132, 92, 46,199,209,163, 71, 13, 69, 69, 69,161, 85,196,125,211,229,203,151,155,201,229,114, 24, 12, 6,240, 60, 15,134, 97, 8,
-203,178, 29,155, 53,107,182, 26,197, 35,151, 74, 81,175,158,155,219,164,247,250, 53,225,120,158, 75, 82,167,167, 87,233, 86,218,
-166,195,213, 79, 86,218,223, 74, 34,150, 64, 34, 42, 22, 86,102,231, 74, 34,150, 64, 34,145, 66, 38,181,168, 9,159,150,207, 59,
-230,190, 87, 54, 54,214,124,195,134, 13,163,238, 63,120,232, 15,128,177,183,119,176,184, 95,172, 0, 1,255, 50,135,138, 84, 37,
-148,202, 62, 98,101,182,211, 81,188,182,114,255,146,223, 40,243,251, 26,128, 86,229,206, 53, 31,215,151,251, 54, 31,143,252,171,
- 29,172,126,239,189,247,222,134, 94,189,122,117,159, 54,109, 26, 20, 10, 5,146,147,147, 75, 31, 90,169, 84, 10,111,111,111,104,
- 52, 26,156, 59,119, 14, 57, 57, 57,167, 1,188,111,233,133,147,147,147,175, 60,184,113, 63,179,227,192, 54,206,126,109,154, 56,
- 36,198, 36,182, 5,112,137, 16, 66, 60, 61, 61,127, 24,254, 73,223, 49, 93, 95,111, 13,137, 84,140,132, 7, 41, 85,114,149,239,
-131,245, 60,115, 99, 49, 12,195, 18, 66, 48,108,216, 48,139,206, 31, 62,124, 56,206,158, 61,139,170,154, 19,139,155, 8, 13, 40,
- 42,212,160,232, 5, 10, 44, 66, 8, 56,142, 43,117,174,204,159,158,106, 3, 24,134, 41, 21, 22,125,211,120,139, 57,181, 69, 69,
-203,207,159, 60, 48,190,137,127, 75,215,118, 65,141,113, 63, 54, 1,203,103,253,175,169,229,211, 9,195,177,117,199, 65,168, 60,
-156,161,211, 20,224,216,225,131,185,121,121,121,203,107, 27,135,173,251,206, 2, 0, 58,189,245,244, 24,129, 97, 31,175,178, 44,
- 3,139, 68, 24, 59,118,108,165, 14,214,137, 19, 39, 52,101,157,200,234,210,168,176, 80,139, 34,141,230,133,165,145, 74,165, 10,
-104,219,182,237,137,141, 27, 55, 58,187,184,184, 64,173, 86, 63, 37,176, 84, 42, 85, 64,155, 54,109, 78,108,220,184,209,217,213,
-213, 21,241,241,241, 22, 79, 17, 82, 78, 92, 33, 61, 61,157,100,103,103,243,142,142,142, 53, 18, 89, 12,195, 64,167,211, 33, 58,
- 58,218,210,103,196,226, 73, 71,235,213,171,247,203,119,223,125, 39,123,242,228, 9,140, 70, 35,162,162,162,158, 25,132,192,178,
- 44,102,204,152,129,217,179,103,175, 7,224, 83, 21,159,201,100,250,118,212,168, 81,239, 37, 37, 37, 57,186,255, 31,123,215, 29,
- 22,197,245, 69,207,155,237,133,222,119, 65, 64, 65,164,136, 5,176, 99, 55, 86,140, 41,118,141, 37,177,198, 22, 19, 91,162,177,
- 70,108, 81, 99,172, 81, 99,139, 13,163,198,216, 53,246, 46, 96, 69, 5, 69, 81, 96,233,189,108,159,153,223, 31, 2, 65,126,148,
- 5, 77, 52,201,156,239,219,111,203,204,158,121,243,230,205,155,243,238,187,239, 94, 71, 71, 36, 37, 37, 65, 40, 20,130,101, 89,
-144,246,237,209,250,233, 83,232,105, 26, 82,169, 20,143, 30, 61,194,198,141, 27, 11,244,122,253,138,242,184, 60, 61, 61, 69, 20,
- 69,121, 9,133, 66, 12, 26, 52,232,149,109,219,182,109, 67, 11,223,172,160, 81, 31,137,242,105, 86,168,205,135,239, 49,138,162,
-200,184, 17,221,235, 5,183,104,224,127, 63,234,217, 19, 85,106,230,229, 74,197,127,142, 45,244, 42, 49, 32, 20,254,233,111, 85,
-228,115,197, 19,137, 74, 86, 20,178, 34, 17, 24,145,105,193,130, 75,139, 38, 66, 8,108,109,109,181, 43, 87, 44, 21,203,229,114,
- 26, 0,204,205,228,244,222,109,107, 96,107, 99,163,101,107, 98, 10,229,192,225,221,197,205,183,244,223, 55, 47,176, 34, 34, 34,
-158, 2,232, 20, 16, 16, 48,240,194,133, 11,203, 39, 79,158,108, 31, 28, 28,140,204,204, 76,184,185,185, 65,161, 80, 32, 60, 60,
- 28,183,111,223, 78,103, 89,246,203,240,240,240, 29,229, 8,128, 10,179,109,179, 44,203, 42,149,202, 48,125, 97,225,216, 70,193,
-222, 56,191,239, 98,168, 66,161, 24,229,226,226, 50,113,200,140,247,135,181,251,160, 9,162, 35,159,225,218,201,187, 72,122,145,
-142,161,173,167, 86,200,105,138, 15, 86,233,247,178, 62, 88,165, 57, 25,134,161,117, 58, 29,246,236,217, 99,146,200,218,181,107,
- 23, 52, 26, 13, 24,134,161, 43, 58,119,154,161,137,185,133, 61,156, 93,125,161,215, 21,128, 97, 76, 31, 89,178, 85,212,167,209,
-104,196,220,185,115, 49,101,202, 20,204,159, 63,191, 82, 33,178,102,205, 26, 84,117,141, 50, 51, 51,243,148, 74,229,224,221,155,
-127,216, 55,112,196, 4,115,151,150,141,240,243,222,163, 48,232, 13,144,136,249,176,182, 48, 67,221,218,206,208,105, 10,177,246,
-199,229,185, 26,141,122,112, 89,223,179,234,100, 89, 31,250, 97, 91, 44,222,120, 8, 23,119,254,105,160,108, 61,112, 54,126, 89,
- 54, 30, 1, 1, 91, 42,229,164,105, 26, 2,129, 0, 59,119,238, 84, 87,180,154,144,199,227,161, 34,129, 85,246, 26, 89, 88,216,
-195,197,221, 15, 58, 77,254, 27,187, 70,182,182,182, 83, 54,109,218,100,171, 86,171,241,240,225, 67, 60,124,248, 16,132,144, 7,
-101,183, 23, 20, 20,224,222,189,123,197, 34,231,129,169,245, 89,108,185, 74, 75, 75, 35, 73, 73, 73,144,201,100,212,157, 59,119,
- 52, 13, 27, 54,124,128, 34, 31,173,170,206, 93,171,213,198,117,236,216,177, 34,139,145,179, 88, 44,126, 37,101, 83,113,208,209,
-178, 83,133,229,149, 51, 62, 62,254,214, 15, 63,252,224, 90,175, 94, 61,252,244,211, 79, 90,115,115,115,209,228,201,147,193,227,
-241,200,202,149, 43,217,204,204, 76,253,244,233,211, 69,151, 46, 93, 66, 65, 65,193,173,170,218, 39,203,178,121,132,144,145, 45,
- 91,182,220,126,236,216, 49,169,151,151, 23,114,114,114, 94,138,245,173, 91, 49,110,220, 56, 72,165, 82, 68, 71, 71,163, 87,175,
- 94,133,133,133,133, 35, 75,199,192, 42,205,105, 52, 26,137, 64, 32, 96, 25,134,193,204,153, 51, 95, 9, 44, 42,147,201, 32, 21,
-209,216, 48,207, 67,254,197,226,100,249,132,177,159,124,242,178,157, 48,244,253,168,103, 79, 54,252,124,232, 44,128, 11,149,157,
- 59, 99,153, 3, 59,175,151, 22, 44, 65,113,204, 43,161,248,149,213,131, 47,227, 96,189,140,139, 85,213,185,151,117,197,176,177,
-177, 49, 6, 6, 6, 68,169,213,106, 94,177,150,178,179,179,187, 87,180, 47, 91,171, 86, 45, 93,153,230, 89,173,123,179, 26, 3,
- 61,142,147,227,228, 80, 77, 11, 22, 0, 32, 50, 50,114,167,191,191,255,177, 69,139, 22, 45, 58,112,224,192,136, 9, 19, 38, 16,
- 11, 11, 11,132,133,133,177,153,153,153, 91, 68, 34,209,148,171, 87,175,214, 40, 94, 4,203,178, 91, 47,253,126,109,204,128, 47,
-122,146, 9,203,134,182,186,117,238,222,131,134,173,188,208,160,165, 23,194,207, 68, 97,205,215,187,119, 24, 13,198,111,147,146,
-146, 94, 84,198, 99,138, 15, 86,241,139,207,231, 87, 25, 7,235,192,129, 3, 19,186,119,239, 78,221,184,113,227,255,124,174, 74,
-251, 97,157, 58,117, 10,122,189, 30, 97, 97, 97, 76,101,113,176, 24,224,183, 21,203,190, 29,178,121,219, 17, 17, 69,244,184,122,
-225, 87,228,100, 85,110,149, 19, 10, 5,248,101,215,111,122, 62,159,247,168,146,178, 62,143,136,136,176, 93,188,120, 49,143,162,
- 40,172, 89,179,230, 21,203, 85, 89,220,189,123,151, 49, 24, 12, 85, 94, 43,149, 74,117,202,201,201,169,255,250, 21,243,182,182,
-239,242,190,149,143, 79,125,190,131,131, 43,248, 20,133,236,204, 52,220,188,118,201,120,252,200,193,108,157, 78, 55, 84,165, 82,
-157,122,157, 6, 24,186,225, 96,185,191,127, 60, 97,121, 85, 86, 20,163,193, 96,224,203,229,114, 24,141,198,114,197, 85,199,142,
- 29,165,151, 47, 95, 86,235,245,122,240,120,188, 74, 21,211,203,107, 52,123,200,230,237,111,246, 26,209, 52,237,155,149,149,133,
-130,130, 2,132,135,135,179,107,214,172, 73,203,206,206,254,186,244,246,204,204, 76,228,229,229,225,230,205,155,236, 79, 63,253,
-148,150,155,155,251,181,169,245, 87, 28, 23, 43, 43, 43,139,145,201,100,148,193, 96, 48, 52,108,216, 80, 34, 20,154, 22,243, 10,
- 0,110,221,186,213,181,162,109,173, 90,181,138,185,124,249,114,221,210,185, 9,141, 70,163, 80,171,213,122,245,234,213,171,202,
-254, 67, 42,149, 14,248,245,215, 95,119, 74, 36,146, 6, 26,141,230,179,212,212,212,173, 0, 92,121, 60, 30, 30, 63,126,156,110,
- 52, 26,251,204,156, 57,115,115, 65, 65,193, 93, 51, 51,179,129, 38,246, 27,199, 9, 33, 3,253,252,252,126,158, 51,103,142,188,
- 93,187,118, 2,165, 82,137,192,192, 64, 68, 71, 71,227,200,145, 35,250,181,107,215, 22, 22, 22, 22, 14,103, 89,246, 84, 37,131,
- 14, 22, 0, 49, 26,141,175,228, 48, 21,137, 68, 16, 8, 4, 40,212, 82, 24, 49, 51, 86,205, 64,160, 94,184,116,199, 17,150, 5,
- 81, 37,165,167, 39,167,100, 95,231, 27, 12, 23,226, 84,121, 57,149,149,147, 78,151,193,221,194,191,100,112, 71, 8, 1,197, 80,
- 32,122, 2, 30,205, 3,207,192, 3,225,243, 95, 90,183, 76, 75,119,197, 26,141, 70,132,132,132,224,240,225,195,248,224,131, 15,
- 88, 84,226, 43,114,248,240, 97,152, 98,189,229,192,129,195, 91, 18, 88, 0,112,239,222,189,108, 0,163,154, 52,105,178,109,252,
-248,241,135, 25,134, 17, 48, 12,211,227,214,173, 91, 23, 95,231,224, 73, 73, 73, 17, 74,165,242,107,123,103,171,208,174, 3, 91,
-161,126, 19, 55,208, 70, 26,151,143,222,194,150,133, 7,119, 39,196, 39, 12, 43,157,171,176, 34,152,226,131, 85,214,130, 85, 17,
- 87,106,106,234,236, 5, 11, 22,224,187,239,190,171,246, 42,194,138,246,185,114, 51,113, 84,139, 32,133,203,199,239,183,234, 66,
- 17,194,106, 43,241,179, 33, 4,108,177,167, 5,159,207,123,116,254, 90,124,195,138,246, 77, 78, 78,238, 56,118,236,216, 63, 40,
-138,114, 43, 53,170, 64, 37, 15,251,164,140,140,140,206,166, 92,155,228,228,228, 99, 46, 46, 46,245,206, 31, 63, 52,227,210,233,
- 99,237,104, 90,239, 73, 64, 32, 20, 10,159, 24,104,227, 57,131, 78, 23,154,144,144,240,218,129,216,102,140,250, 0,207, 85,233,
-224,243,121, 47, 99, 79, 21, 93,238, 95, 87, 77, 70, 64,192, 47, 21,254, 79, 44, 22, 31,251,249,231,159, 67, 62,249,228, 19,194,
-231,243, 75,166,221,138,207,159,162, 40, 92,187,118, 77,173,211,233,176,101,203, 22, 86, 42,149, 86, 26,184,246,175,186, 70,249,
-249,249,195,123,245,234,181, 21,128, 24,192,227,156,156,156,209, 42,149, 42,161,244,246, 15, 62,248, 96, 43, 0, 49, 33,228,255,
-182, 87,133,226,144, 13,214,214,214, 15,138, 44, 87,146,154, 56,186, 87,210,190,121, 21, 77, 31,154, 50, 85, 88,148, 91,240,163,
-226,239, 65, 65, 65,243,198,140, 25, 83, 58,217,243, 5, 0, 30, 53, 24,156,157, 34,132,212,159, 57,115,230, 68,169, 84,218, 94,
-173, 86,251, 0,128, 76, 38,123, 88, 88, 88,120, 86,175,215,255,192,178,108,118,101, 28, 79,158, 60,209,213,169, 83, 39,218,104,
- 52,250, 59, 56, 56,148,172, 62, 20,137, 94, 90,147,174, 61,180, 9, 79, 76, 76,108, 82,195,193, 99, 66,101, 22,229,138,254, 83,
-217,118,157, 78,151,118,229,202, 21,155,211,167, 79,243,104,154,198,241,227,199, 75, 6,125,229,205, 6,198,198,198, 66,167,211,
-105,184,199, 28, 7, 14,111, 7,228,175,156,166, 55,213,132,168, 84, 42,251, 73,228,226,177,110,245, 20, 13, 85, 79, 83,163,242,
-178, 11,127, 73, 74, 74,218,192,178, 44,205,153, 79,255,189,156, 34,153,197, 9,194, 19,186, 85,248,192,161,245,207,117,133,185,
- 93,202,227,108,214,172,153,179, 80, 40, 92,170,213,106,187, 85, 22,165,157,199,227, 25,165, 82,233, 49,141, 70, 51,165,108,178,
-231,127, 98,125,206,157, 59,183, 92,147,132,169,171, 8,103,207,158,205, 84,167,156,141, 26, 53, 58, 43,147,201,202, 13,168, 89,
- 88, 88,248,226,246,237,219,157,223,133,250, 44, 94, 45,103,138,223, 81,105,206, 26,173, 34,124, 75,247,145,139,139,139,196,194,
-194, 98, 41, 69, 81, 10, 19,197,177, 46, 53, 53,117,114,122,122,122, 50,215, 47,113,156,220, 20,225, 59,106,193,250,171,161, 82,
-169,246, 0,216,195, 93,142,255, 22,138,197, 83, 77, 80, 36,150,250,255,215,234,172, 88, 32,149,243,251, 67, 0,111,124, 73,190,
- 41,225, 24,222, 5,212,212,161,187, 72, 64,181,254, 39,156, 99, 66, 66,130, 6,192, 56,174,231,224,192,225,159, 1,110,130,158,
- 3, 7, 14, 28, 56,112,224,192,225, 13,131, 0,240,175, 96, 68,104,178,233,143, 16,226, 95,131, 17,231, 61,142,147,227,228, 56,
- 57, 78,142,147,227,228, 56,255, 91,156, 85,113,255, 91,166, 30,223, 9, 31, 44,142,147,227,228, 56, 57, 78,142,147,227,228, 56,
- 57, 31,172,127, 19,184, 41, 66, 14, 28, 56,112,224,192,129, 3,135,183, 37,176,204,156,124,125,237,221, 27,109,181,169,213,240,
-142, 77,173,134,119,236,221, 27,109, 53,115,242,245,253, 47, 86,154, 82,169,148, 42, 20,138,129,174,174,174,167, 26, 55,110,156,
-235,236,236,252, 5,215,148,170,143,118,132,240,251, 19,242,249, 16, 66, 94, 12, 33,228, 69,127, 66, 62,111, 71, 8,255,223,118,
-158,243,199, 57, 55,191,120,124,208,177,249,227,156,203, 13,192, 54,247, 43,165,237,229, 19,125,127,248,122,156,179,205, 27, 26,
- 89,154, 59, 58, 58,254,228,228,228, 20,231,232,232,248,220,209,209,241,103, 66,136, 37,215,226, 56,112,224,192,225,239,131, 73,
- 15, 51, 27,183, 6,159,249,250,120, 79,153, 55,123, 6,113,118,178,151, 25,140,180,254, 89, 92,130,223,236, 5,139,246,217,184,
- 53, 88,158,249,252,238,166, 26, 60, 4,136,139,139, 75, 63,129, 64, 16, 2,160, 88,168, 61, 48, 24, 12,135, 19, 18, 18,246,152,
-186, 42,168, 97,195,134,151,120, 60,158,107,117,142,205, 48, 76,220,237,219,183,219,212,164,194,156,157,157,251, 56, 59, 59,255,
-220,188,121,115, 89,227,198,141, 33, 20, 10,177,100,201,146, 47, 1,172, 48,249,220,219,181,227, 59,100,219,124,194,227,243,123,
- 2,104,200,178, 0, 8,239, 14, 99,208, 31, 73,181,206,216,202,158, 59,103, 82, 24,113,133, 66,241, 53, 33,100, 40, 94, 46, 43,
-223,164, 82,169,150,254, 21,141, 68,169, 84,214, 34,132,180,103, 89,214,135,162,168,187, 12,195,156, 84,169, 84, 25,175,203,235,
- 8,140,106, 25, 28,252,195,144, 47,191,228,169, 47, 92,192, 15, 63,255,188, 18,185,185, 0,176,166,186,109,169, 89,179,198,189,
-205,205, 17, 66,128, 0, 16, 16, 10,236,173,204,108,234,232,205,155,145,123, 76,137,165, 86, 17, 2, 3, 3,143, 0,232, 94,244,
-245,104, 68, 68, 68,143,234,114,100,197, 50,179,196, 2,159,214, 89, 79,206,206, 2,208,173,236,118,163, 70, 50,132, 39,168, 21,
-194, 99, 35,227, 1,124,255,154,226, 74,102,111,111,127,231,224,193,131, 46,205,154, 53,227, 3, 64,120,120,248, 39, 33, 33, 33,
- 29,138, 76,250,185,111,163,163,105,209,162,133,181,209,104,220,198, 35,164, 57,195, 48, 86, 0, 64, 81, 84, 54,205,178,215,248,
-124,254,144,154, 6, 43,230,192,129, 3,135,127,172,192, 50,115,244,241,171, 95,223,247,203,227, 7,182,213,202,206,204,214,172,
- 89,186, 53, 82,205, 23, 21,214,246,243, 18,174, 90,190,216,106,220,164,175, 38,153, 57,250, 92,207, 79,121, 24,101,234, 65, 21,
- 10,133,171,187,187,251,254,175,191,254,218, 63, 56, 56, 88,224,224,224,128,148,148, 20, 60,122,244,200,255,242,229,203, 31, 28,
- 60,120,240, 75,133, 66,241, 81, 85, 17,220, 1, 64, 46, 18,214,217,179,120,161,147,200,202, 26, 44,109,132, 85,253, 70, 0, 0,
-150, 97,144,116,238, 20, 24,131, 1, 44, 67,195,165,235,251, 47,127,103, 89, 52,109,218, 84, 88,147,202,114,113,113, 81,214,171,
- 87,111,199,244,233,211,133, 90,173, 22,183,110,221,194,213,171, 87,153,212,212,212, 69, 38,139,138, 6, 31,250, 57,241,157,246,
-245,250,160,155,123,143,247, 28, 68,110, 78,246, 96, 24, 9, 30, 61,213,187,158,186, 24,217,245,232,241,147, 83, 28,252, 62,236,
-147, 26,117,224,110,101, 60,254,254,254,205, 41,138,250, 46, 49, 49,177, 88, 4, 45,105,214,172,217,183,165,247, 41,171, 81, 25,
-134, 1,159,207, 79, 41, 44, 44,236,119,239,222,189,200,242,120,103,141, 32, 6,163,241,101,187,224,243, 65,111, 59,233,114,160,
- 83,167, 78,181,135, 15, 31,142,128,128, 0,132,135,135,183, 15, 11, 11,155, 88,171, 86,173,155, 6,131,225,168, 88, 44, 62, 23,
- 23, 23, 87,163, 4,139, 66, 96,234,144, 47,191,228,153,197,197,193,236,214, 45, 12,202,205,229, 47, 6,166, 86, 71, 96, 5, 6,
- 6,214,233,220, 41, 96,223, 7, 31,181,245,117,114,242, 19, 10, 4,118, 96, 89, 22, 6, 67,102,189,180,180, 7,189, 45, 45, 49,
-189,105,211,166, 31,223,184,113,227,177, 41,124, 77,154, 52,113,100, 24,102, 61,203,178, 66, 66,200,120, 0,221,143, 31, 63, 14,
-154,166,209,163, 71,143,238,129,129,129,117, 88,150,253,209,204,204,140, 85,171,213,159,222,188,121, 51,165, 50,203, 85,246, 19,
-102, 86, 50,223,163,171,119,208, 80, 36,243, 79,116,157,220, 69,113,204,202,131,154, 63,107,117,226, 53, 0,232,230,233,105, 94,
-199, 71, 54,205,204,194,223, 38, 39,241,212,180,110,158,158, 27,143, 61,121,146,247, 26, 98,120,233,182,109,219,106, 53,111,222,
-188, 36, 72,110,227,198,141,121, 75,150, 44,113,158, 60,121,242, 74, 0,195, 76,228,169,103,107,107,123,130, 97, 24,237,253,251,
-247,235, 21,255,238,208,232,163,150,182,230,242,142,105, 89,121, 23,210,239, 31, 60,111, 10, 87, 80, 80,208,112, 33, 69,253,180,
-124,230, 56,158,111,195,134,144,217, 57, 64,175, 82,161,192,104,176,185,118,251,126,143,197, 43,126, 74, 11, 10, 10, 26, 25, 30,
- 30,254, 51,215, 37,115,224,192,225, 63, 35,176,196, 98,209,244,217,223, 76, 35, 89, 25,217,106,125, 94,174, 94,198,234,140, 22,
- 50, 9,201, 77, 77,203,126,102, 33, 43,156, 60,105,130,100,218,244,111,166, 3, 24,100,170,184,242,241,241,185,177,113,227, 70,
- 7, 27, 27, 27,228,228,228, 32, 35, 35, 3, 55,110,220, 0,203,178,232,214,173,155,184, 81,131, 6, 1,203, 87,172,184,170, 80,
- 40, 90, 84, 37,178,248, 2, 62, 17,200,229,248,181,109, 0, 40,161, 16, 31, 63, 76,122, 41, 46, 12,122, 28,239,223, 19, 0,192,
- 19,137,208, 55, 38, 21, 0, 32,145, 72,106, 92, 89, 44,203,182,104,213,170,149, 16, 0,190,252,242,203,220,130,130,130, 80, 66,
-200, 78,149, 74,149,104,202,255,237, 26,188,239,229,104,239,116,126,217,130, 17, 54,254,117, 60,160, 51, 24,144,144,154, 8, 22,
- 34, 56, 57,200, 49,232,131, 70,194, 86, 65,194,186,223,175,249,227,156,163,127,175, 54, 41,247,126,187, 95,161,176,148,203,183,
-173, 92,185, 18,123,247,238, 5, 0,156, 61,123, 22, 94, 94, 94,242,170,202,240,232,209, 35,143,161, 67,135,238, 6, 80,183,188,
-237, 70, 35,248,161,223,237, 4, 0,108,219, 56,144, 23, 29, 29, 93, 91, 42,253, 51,151,114,219,182,109,209,182,109, 91, 42, 52,
- 52,180,217,217,179,103,155,237,222,189, 91,239,236,236,188, 50, 49, 49, 49,172, 38,117,170,190,112, 1,102,183,110, 1, 23, 46,
- 84,251,191,141, 27, 55,118,173, 95,223,254,234,247,203,190,181,255,253,240,125, 44, 91,246, 51,158, 60,121, 2, 0,240,240,240,
-192,192, 1,125, 4, 59,127, 89, 95,127,250,244, 57, 87, 2, 3, 3,131, 35, 34, 34,170,140,110,206, 48,204,250,208,208,208,247,
-205,204,204, 48,125,250,244,232, 58,117,234,192,194,194, 2, 27, 54,108,128,181,181, 53, 12, 6, 67,244,146, 37, 75,248, 42,149,
- 10,171, 86,173,218, 92,202,186,245,127,104,211,189,237, 44,177,192,167,181,119,208, 80,152, 89, 40,176,113,215, 30, 60, 10,223,
-218, 90,107,120, 56,235,235,113,206,131,121,172,120,168,179,151,217,244,218, 65,237,108,235,214,239, 5,247,192, 91,118, 90,250,
-194,211, 89,159,123, 44,226, 75, 52,219,102, 47,251,127, 43, 33,233,179,143,231,159,123,211,230,222, 41,121, 6,203,150, 4, 13,
- 37, 40,138,129,229,164, 80,246,108,219,182, 45,175, 88, 96,199,197,197, 65,167,211,193,207,207,143,210,233,116, 38,197,180, 82,
- 42,149,245,218,180,105,115,105,199,142, 29,182,173, 91,183, 78, 43,189,205,201,214,170,203,249,253, 43, 39,124,247,195, 47, 62,
- 14,126, 31,102, 87, 53, 16, 8, 10, 10, 26,222,160,158,199,166,149, 75,102, 19, 94, 65, 2,248, 86, 25, 0,147,129,164,221,155,
- 1,153, 13,122,140,158,140, 38,205,154,241, 38, 76,250,122, 83,147, 38, 77,216,155, 55,111,110,225,186,101, 14, 28, 56,252, 39,
- 4, 22,195, 50, 13,237,237,109, 36,171,150,110, 13, 87, 72, 40,226,228,162, 36, 34, 11, 43, 62,204,228, 98,138, 39, 80,123,120,
-184, 8, 25,150,105, 88,129, 32,121,101,133, 1, 33,132,184,187,187,239,223,178,101,139,131, 64, 32, 0,195, 48,176,183,183,199,
-211,167, 79,145,149,149,133,252,252,124, 60,121,240, 0,238,181, 92, 48, 97,228, 8,197,252,101,223,239, 39,132, 4,149,158, 46,
- 44,203,201, 50, 44, 24,227,171, 51,106,132, 16,148, 55,191, 88, 81, 26, 25, 83, 87, 66, 48, 12,243, 76,165, 82, 65, 38,147,193,
-215,215,215,236,230,205,155, 23, 19,139, 77, 72, 85,157,123,159, 62, 60,133, 72,124,104,233,130,126, 54,132, 23,141,232, 23,217,
-240,116,105, 10, 91,203, 90, 72, 76,203, 71, 68,212, 81, 68, 63, 57, 2, 79, 23, 87,140, 28,232,105,181, 98,125,218, 97, 18, 56,
-202,147,141,216, 96, 40,143, 51, 47, 47,207,204,213,213, 21,206,206,206, 96, 24, 6, 52, 77,227,254,253,251, 37,159,139,243, 37,
- 22,127, 94,185,243, 50,172,121,233,232,247, 97,119,100,102,102,154,153,122,238,197,226,106,223,247,202,250,234,130, 36, 33, 0,
- 72,229, 10,253,199,147, 19,239, 55,105,210, 4,246,246,246,194, 43, 87,174, 76, 6, 16, 86,221,250,212, 3, 75,126,216,178,101,
-213,160,156, 28, 10, 0, 54, 17,194,232, 95, 70,213, 54,169, 45,117,126,175,241,129, 21, 43,102,217, 19, 54, 10, 54,150,139,113,
-227,198,115,232,245, 47,175,124, 70, 70, 42,198,127,158, 11, 62,223, 28,223,127, 63,219,182,111,191, 49,191, 22, 77,145, 49,149,
-149,147,101, 89,225,195,135, 15, 81,191,126,125,236,222,189,155,207,227,241,112,253,250,117, 72,165, 82, 12, 29, 58, 20,254,254,
-254,124,169, 84,138,139, 23, 47, 34, 55, 55,151, 84, 86,206, 11, 71,207,207,207,138, 61, 59, 43,153,119,162,235,198, 93,123, 48,
- 98, 64, 63, 56, 25, 99, 47, 90,123, 82,243,187,245,104,249, 45, 79, 80, 43, 68,110,238,111,237,229,223, 11, 66,145, 25,198, 77,
-157,135,232,123,135,172, 11,243,238,126, 78, 27,226,107, 1,152, 88,150,147, 13,235, 77, 47,223,234, 16,120,218, 53,210, 77, 25,
- 56,234,122, 82,228, 79,119,254, 60,186, 47, 31,148,218,170, 88, 92, 61,126,252, 24, 79,158, 60, 1,143,199,131, 90,173,126, 37,
- 81,112,105,206,128,128,128, 81, 52, 77,127, 11, 0, 58,157,110,171,163,163,227,240, 31,127,252,209,150,199,251, 51, 83, 84,177,
-229, 42, 51, 59, 55,235,202,205,251,143, 38,143,234,221,238,194,181,123,241, 86,141, 62,120,145,125,251, 96, 78,121,245,217,162,
- 69, 11,107, 17,143,247,211, 15,203,230, 18, 58,246, 15,136,125,219,129,111,230, 5,218,144, 8, 77, 86, 62,212, 79,147,161,223,
-176, 26, 30,163, 39, 97,233,146,239,200,128,193,159,254,228,233,233,185,255, 73, 41, 11,222, 95,177, 74,137,227,228, 56, 57,206,
-119,147,243, 63, 39,176, 8,161,114,245,122,131,192,162,150,179,225,227,143,218, 52,136,188,126, 47,218,204,198,146,106,212,180,
-129,223,189,232,132, 8, 24,105, 61, 33,148, 73,126, 29, 46, 46, 46,253,102,207,158,221,192,194,194, 2, 12,195,192,210,210, 18,
-105,105,105,208,235,245,200,205,205,133, 54, 63, 15,250,188, 92,220,126, 17,135,224,118,237,240, 94,139, 22,190, 71, 13,134,126,
- 0,118, 87,196, 73, 83, 60,214, 54,160, 41,250,196,102,128,209,235, 16,230, 97, 91, 98,181,234, 31,151, 13, 66, 8,104,157, 22,
- 71,155,214,133,216, 76,142,134, 83,102,215,184,178,146,146,146, 34,221,220,220,142,117,237,218,181,219,200,145, 35,169,228,228,
-228,227,142,142,142,173, 82, 82, 82,170,156, 30,117,136,161,135, 14, 25, 25,224, 97,103, 69,225,247,203, 39,208,220,231, 67,200,
-196, 2,164,101,169, 65, 17,130, 39,207, 78,131,166,229,184,253,240, 5, 90,248,203,209,186,153,165, 75,254, 31,153, 35, 81,241,
-116, 25,201,202,202, 66,106,106, 42, 12, 6, 3,140, 70, 35,122,247,233,131,109, 91,183,162,160,160, 0, 26,141, 6, 58,157, 14,
- 12,243, 82, 79, 36,167,229,227,198,237,227, 8,106, 80, 15,168, 36,226, 55,159, 15,227,143, 43, 7,242,205,101,128, 80,108,175,
-207,203,203,131, 92, 46,135,186, 32, 73, 56,100, 68,137,101, 75,120,246,236, 89, 68, 68, 68, 64,169, 84,154,212,142,202,195, 19,
-224,167,103, 52, 61,179,219,129, 3, 14,151, 15, 28, 96,174,253,254,123,130, 56, 47,111,131, 41,255,109,214,172,113,239,113,227,
-122,248, 74, 37, 82, 36,188, 88, 9, 31, 31, 33,190,252,194, 22,161,139,211, 1, 0, 19,198,185, 32, 40,200, 22,185,217,251, 96,
-231,240, 53,190,156,252,129,103,126, 62,251, 9,128,173,149,183,119, 50,254,151, 95,126,137,238,220,185, 51, 63, 50, 50, 18, 98,
-177, 24, 82,169, 20, 18,137, 4, 82,169, 20,201,201,201,208,233,116, 8, 11, 11, 51, 22, 77, 33, 86,136,162,105,192,110,147, 59,
- 43,142, 61, 10,223,218,218,153,122,122,251,131,201, 45,159, 69, 94,191,157,127,230,143,203,243,141, 26, 73,124,118,194,169,105,
-117,154,220,182,251,124,202, 92,172, 94, 58, 27,143,174,159,207,116,116,205, 91, 67, 19,237,214, 86,229,196,185,111,215,110, 46,
-127,236,204, 1,134,177,195, 63,182, 60,172,184, 50,226, 48, 31,233, 41,153,119,151, 33,246,134, 90,236, 85,127,112,189, 58, 68,
-119,230,204, 25,105,155, 54,109,160, 86,171, 95,222, 11, 60, 30,126,249,229, 23,198,104, 52,158, 45,175,156, 6,131,225,219,136,
-136, 8, 69, 97, 97, 33, 6, 12, 24, 48, 97,206,156, 57,114,129, 64,240,242,254,162,233, 87, 44, 87, 11, 86,108, 63, 49,233,219,
- 53,103, 79,236, 94,172, 92, 48,125,120,187, 65,227,190, 59, 11,224,120,249,214, 80,227,182, 21,139,103,240,196, 86,122,144, 38,
-157,161, 79, 85,227,249,166,145,208,229,168, 81,111,254, 60, 0, 66,232,244, 60, 28,254,160, 15,120, 54, 74,124,214,166, 21,127,
-195,249, 75,219, 0,124,192,117,205, 28, 56,112, 40,131, 38, 0,236,139, 62,167, 23, 61,199,108, 1, 20, 91,217,237, 1,232, 0,
-136, 74,253,167,236,247,210,251,150,253, 94,250,115, 58, 94,250, 54,219, 3,160, 1,220, 0, 80,109, 63, 81,170,232,161,194,150,
-122,192,176,101,172, 54, 23,158,196,198,169,219,181, 13, 82,156,189, 17, 19,217,245,195,247,154,182,233,208,172,121, 74, 70,110,
-172,147,189,133,252,202,245,107, 98,134, 97, 76,154,223, 17, 8, 4, 33,193,193,193,252,172,172, 44,200,100, 50,164,165,165, 33,
- 49, 49, 17,122,189, 30,234,156,108,104,179,179,160,206,202,132, 33, 47, 27, 79,110, 94,135,183,171,179,184,200, 9,222, 36,148,
-181, 80, 21,103,176, 39, 20, 5,137,133, 57,164, 22, 22,224,241,170, 23,153, 66,169, 84,246,242,241,241,185,230,236,236, 60,179,
-104,132,255,121,104,104,104, 58,203,178,152, 54,109,154,133,133,133, 69,152,187,187,187,184, 42, 30,115, 27,186,119,179, 6,117,
-121,209,207,239, 34,200,235, 99,212, 86,180,193,147,196, 28,164,229,104,144,156, 89,128,122,245,166,192, 94, 57, 2,150, 78,163,
-113,247, 81, 60, 20, 78,181, 41,158, 64,216,181, 50,206,228,228,228, 87,190,239,218,185, 19,133,133,133,168, 91,183, 46,250,247,
-239,143,169, 83,167,162, 95,191,126, 80, 42,149,104, 93,151,143,225,131,123, 35, 53, 53,181,210,114,206,223,200, 10, 22,237, 84,
- 68, 14,153,205, 70,214,237,120,236,254,147, 39, 79, 16, 29,253,255, 51,107,127,252,241, 7,114,114,114, 74, 30,192,166,192,209,
-209,113,134, 66,161,184,163, 80, 40,238, 43, 20,138,163, 41, 74,229, 67,131,135,135, 99,171, 15, 62, 32,126,125,251,242,226,229,
-114,242,172, 86, 45, 51, 83,184, 44, 44,208, 35, 40, 40, 88,148,157,245, 51,128,151, 34,114,248, 48,123, 92, 58, 95, 31,151, 47,
- 6, 98,252, 56, 15, 80, 68, 2, 66, 9, 81, 88,240, 7,252,234,251, 11,205,205,217, 74,219, 82,145, 67,123,108,253,250,245,249,
- 99,198,140,129, 88, 44,198,182,109,219,176,110,221, 58, 44, 95,190, 28,209,209,209,112,115,115,131, 66,161,128,163,163, 35, 31,
- 64,108,209,127, 42,133,149, 39, 53, 95,107,120,120,209,218, 75, 30, 75, 40,135,150, 90,163,228,227,217,203, 84, 25,243,215,196,
-126,255,236,145,218,227,225,245,243, 25,209,247,126, 99,158,222, 60,155,174,138,201,247,152,191, 38,246,251,133,171, 19, 51,203,
-227, 58,127,126, 54,125,240,232,121,125, 65,126, 33,191, 87,183,142,234,209,195,250,215,179,145,121,255, 2,231,206,141,221,107,
- 41, 6,207, 94,184, 74,247,217,152, 73,250, 77,155,127,102,243,242,242,144,155,155,139, 31,126,248,193,248,251,239,191, 39,210,
- 52, 61,169,130, 34,242,138, 4, 17,250,244,233, 35,151, 74,165,136,143,143, 47,177,130, 2, 64, 82, 90,198,221,203, 55,239, 61,
-156, 60,186, 79,219, 2,173, 86,123,226, 92,248, 3, 63, 47, 55, 23, 66, 88,247,138,206,155, 71, 72,243,250, 13, 27,130,101,179,
- 65,241, 93,145,176,125, 25,212,201,153, 40, 76,203, 4, 37,144,195, 0, 9,244,172, 8,146,134, 77,241, 60,226, 22, 28,205, 44,
-192, 39,164, 21,247, 28,225,192,225,191,137,202,180, 8, 0,123, 66,200, 97, 66,200,225, 25, 51,102,180, 7, 96, 75, 8, 57, 92,
- 36,130,236,139, 62,139,138,247,169,224,187,125,105,158, 50,255, 45,253,217,110,198,140, 25, 29, 8, 33,135, 91,182,108, 57,184,
- 72,200, 85, 27, 85,170, 13,158, 70, 23, 58, 99,230,108,202,194, 76,100,238,231, 91,219,250,247,147, 23, 34, 47, 95,187,245,192,
- 92, 38, 17,231, 23, 20,136,150,255,184,206,149, 20,170, 77,117,242,246,181,179,179,131, 94,175,199,227,199,143,145,144,144, 0,
-189, 94, 15, 99, 97, 1,180,217,217,208,100,101,129, 41,204,135,144,102,160, 78, 79,131,181, 68, 4,252,185,194,176, 50, 83,101,
-137,152, 42, 79,112, 17, 66, 32,177, 48,135,200,220, 12, 20,159,103,114,229, 40, 20,138,192,198,141, 27,239, 61,115,230, 76,179,
-224,224,224,249,238,238,238,150,201,201,201,207, 83, 82, 82, 58, 46, 93,186, 84,107,111,111,143, 65,131, 6,121, 27, 12,134, 33,
- 85,113, 9, 37,218, 6,110,142, 94,112,117,236, 5,165,109,115,100,228,106,145,150,173, 70,114, 70, 33,246,252,218, 31,167,142,
-245,199,173,139,131,241,248,250,112,100, 20, 88, 64, 98,211, 30, 0, 91,105, 4,221,107,215,174, 97,253,250,245, 37,175,213,171,
- 87, 35, 51, 51, 19,245,235,215, 71,124,124, 60,142, 31, 63,142,228,228,100,216,219,219,227,214,173, 91,216,176, 97, 3,174, 95,
-191, 94,237, 70,162,209,104, 32, 16,217,234,183,109, 28,136,109, 27, 7,130,102,229,250,210,117,111,114, 99,163,168,161, 73, 31,
-124,208, 32,201,202,202,175, 97,195,134,221,250,246,237,235,209,172, 89,179,146,237,158,158,158,174,124, 62, 63, 89,169, 84,110,
- 82, 42,149,141, 43, 37, 99,216, 0,107, 27, 95,232,180, 15,139,174, 49, 31,132,136,209,225,189, 7,104,213, 58, 2,122,131, 8,
-132, 18,131, 34, 18, 24,141, 25,176, 48,119, 4,203, 86, 25,145,184,251,241,227,199,177,126,253,122, 60,125,250,180,100,122, 52,
- 36, 36,100,252,128, 1, 3,246,211, 52,141,195,135, 15,227,224,193,131,168, 83,167, 14, 26, 55,110, 12,189, 94,223,189,170,243,
-158,181, 58,241,218,206,229,199,250, 11,140, 86,141, 69, 98,183, 58, 84,158,172,215,231,237,236,229, 0,112,236,201,147, 60, 71,
-215,188, 69,133,121,247, 94, 88,187, 20, 44,174,202,193,157,101,193,134, 71,223,191,190,251,215,147, 57, 41,233, 25,130,128, 70,
-254,234,239,230, 78, 17,186,215,174,187,100,246,180,177,142,137,185,146,156,247, 38, 28,123,184,255,248,141,252, 79,134,143, 52,
-126, 58,114,156,230,196,201, 63, 14, 48, 12,211,176,162, 21,132, 12,195, 32, 41, 41, 9,247,238,221,195,211,167, 79,145,158,158,
-142,180,180, 52,228,229,229,149, 76, 43,202,242,114,143,172,222,242,251,109,185, 84, 42,107,214,192,203,245,122,100, 84,170, 92,
- 42,149,121,213,118,173, 71, 72,249, 9,168, 25,134,177,122, 89,135, 4,121,247, 46, 64,147,153, 7,117,118, 62,212,153,249,208,
-234,121,208,104, 41,104,244, 20,236, 90,119, 70,126,129, 26,154,204,108, 48, 44,107,205, 61,102, 56,112,224, 80,201,243, 62,100,
-209,162, 69, 11, 43,219, 94,234, 93, 87,230, 59, 8, 33,135, 89,150, 13, 97, 89, 54,164, 72, 76, 21,235,132,195,165,121, 22, 45,
- 90,180,144,101,217,144, 43, 87,174,236, 2, 80, 88,147,178, 86, 57,181,147,158, 30,157,111, 97,239,247,209,164,105,223, 30,253,
-101,227, 42,135,204,204,172,104,161, 68,170,145, 72, 68, 54, 83,167,205,181, 42, 40,204,249, 40, 63,211,244, 85, 79, 89, 89, 89,
- 37, 15, 47,161, 80, 8,186,176, 0,180,186, 16,154,172, 12, 16,189, 22, 66,154,134,141, 76, 6, 87,165, 35,220, 29,157,170,228,
-227, 49, 52, 81,157, 58,138, 19,131, 63,124,101, 90,144,209,235,112,188,165, 55, 68,102,114, 72,173,172, 17,124,240,226, 75,161,
- 35, 20, 2,179, 23, 87,201,235,228,228,100,167, 84, 42, 15,253,248,227,143,194,244,244,116,220,191,127,255,118, 92, 92, 92,142,
-141,141,141,185, 64, 32, 96, 98, 98, 98, 78, 63,122,244, 40,164,118,237,218, 96, 89,214,179, 42,190,188,108,185, 94,111, 96,144,
-152,250, 28, 9, 73,247, 96,105,230, 10,150,170,133,148,204, 66, 16, 56,192,160,121, 84,226, 75,166, 85, 39,160, 64,107, 90,222,
- 94,189, 94, 15,131,193, 0,131,193, 0,157, 78,135, 79, 62,249, 4, 87,174, 94,197,206,131,231, 16, 31, 31,143, 58, 78, 50,244,
-239,215, 7,141, 26, 53, 66,120,120,120,141, 27,181, 87,167, 19,247,165, 82, 41,214,173, 91, 7,153, 76,134,234, 10, 44,133, 66,
-241,189,143,143, 79,221, 71, 5, 5,136,122,248, 16, 77,251,244, 1, 0, 92,186,116,169,100, 31,181, 90,141,129, 3, 7,138,158,
- 62,125,250,233,195,135, 15, 63, 85, 40, 20,203,147,146,146,190,172,136,243,200,145,171, 24, 61, 58, 10,105,105, 47, 45,187,123,
-118,249,149,108,123,246, 84,143,174, 61, 94,206, 92, 89, 89, 89,225,251,239, 77,203,246, 64,211, 52, 54,108,216, 0,169, 84, 90,
- 34,176,132, 66, 97,171,201,147, 39,127, 84,222,254,126,126,126, 85,114, 78,238,227, 34,185,245, 92,250,185,101,221,218,254,150,
-246, 13,145,110,188,213, 32, 50, 49,121,252,228, 62, 46, 43,151,135, 37,104,104,162,221, 74, 27,226,107,241, 37,154,109,166,148,
-241,201,177, 85, 58,235, 58,163,182, 37,167,230,124, 51,110,228, 32, 91, 43,107,199,252, 77, 63,134, 90, 81, 20,133,223, 35,116,
- 89,245, 61,108,173,123, 53,255, 33,127,244, 23,179, 34,117,198,231,227, 17,127,248, 81,145,185, 27, 21, 9,172,196,196, 68,164,
-167,167,227,197,139, 23, 72, 75, 75, 3, 33, 4,105,105,105,213,178, 80,150,103, 81,214, 37, 36, 34,249,192,102, 56, 13, 28,132,
-122,243,230,129, 97, 4, 80, 23, 26,177,175,117, 71,228,230,168,161, 99, 8,172, 2, 91,226,189,195, 23, 65, 49, 70,224,234, 21,
-238, 9,194,129, 3,135,202,250,149,195,211,167, 79,255,218,196,221, 79, 3, 48, 41,180, 78, 89,193, 53,125,250,244,175,139,143,
- 21, 26, 26,170, 6,160,122,227, 2, 11, 0,114,211,162, 98,109,221, 26, 38,229, 23,170, 37,214, 54,214,133,230,102, 34, 54, 39,
- 59,135,247,240,113,180, 38, 63,233,241,163,106, 28,239,193,253,251,247,253, 19, 19, 19,241,226,249,115, 24, 10, 11, 64,116, 90,
- 64,163, 70,167,214,173, 32, 1, 32, 33,128,144,209,131,199, 19, 33, 63, 63, 23, 0, 30, 84, 69,202, 24, 12,175,116,234, 37,211,
-130,230,230, 16,153,201, 33,182, 48,127,197,162,101, 10,164, 82,233,206, 13, 27, 54, 40, 20, 10, 5, 86,172, 88, 1,133, 66,225,
-211,169, 83,167,194,182,109,219, 74,237,236,236, 80,175, 94, 61, 4, 5, 5,225,236,217,179, 32,132, 60,169,138,207,168, 19, 69,
- 60,136,165,107,229,230,223,194,245,136, 29, 48,232,116,168,237, 53, 3, 90,163, 29,228, 14,159, 66,173, 63, 4,125,246, 57, 0,
-128,200,162, 29, 82, 82,210, 1,144,123, 85, 89,238,202,126,191,115,231, 14,182, 30,184, 4, 87,223,118, 72,206, 60,142,123,247,
-194,225,104,125, 18, 94,126,245, 97, 40, 85, 79,166, 88, 5, 77, 21, 36, 38,222, 20, 3,103,204,152,129, 28,169, 20,232,209, 3,
-194,216, 88,232,245,122, 52,111,222, 28, 77,154, 52, 1, 0, 52,111,222, 28, 60, 30, 15,117,235,214,133,141,141, 13,246,239,223,
- 63, 16, 64,185, 2,139, 37,228, 22, 67,103,248,120,120,120,148, 8,172,109,219,211, 16, 25,222, 9, 4, 34,172, 90,253,231, 37,
-113,117,117, 69,114,242, 83, 16, 82,165, 83,230,209, 30, 61,122,116,183,182,182,198,176, 97,195, 32,149, 74,241,225,135, 31, 66,
-173, 86,247, 45, 26,209, 96,198,140, 25, 0,128,217,179,103, 99,206,156, 57, 40, 44, 44,172, 48, 68,197,250,239, 26, 42,243,212,
-204,112,133, 66,249, 97,123,187,218, 13, 59,116,233,132, 58, 94, 29,209,161, 75, 60, 0, 44,180, 19, 60,235,179,228, 27,255, 3,
-181,107,217,108,185,114,240,244,183,193,221,218,207,156, 59,193,102,254,236, 85,153, 85, 14, 88,178,159,253,148,247, 80,208,115,
-229,170,245,198, 21,179,191,158, 44,126,158,174,207, 84,101, 49,249,114, 49,223,220,211, 17,102,227,167,206,127,170, 82, 61,254,
- 10,241, 39,163, 77,185,134, 79,159, 62,133, 86,171, 5, 77,211,208,106,181,200,207,207, 71, 66, 66, 66,201,245, 85,203, 45,186,
-142, 27,214,179, 81,129, 90, 93,120,253,110,204,139,153, 19, 6,181, 40, 80,171, 11, 99,158,189,136,102,217, 31,152, 10,174,121,
-118, 97, 94,190,141, 46,207,128,236,219,209,176,235,224, 6,157,145, 64,107,228, 33, 51, 61, 15,122, 26, 48, 80, 2,184,244,254,
- 4, 70,194, 71,110, 90, 50, 40, 66,184,120, 88, 28, 56,112,168, 82, 8,133,134,134,134,252, 85,220, 0, 16, 26, 26,122, 63, 52,
- 52,244,181,142, 85, 44,176,218,149,154,239,108, 87, 78, 71, 73, 26, 55,116,117, 94,248,245, 71, 74,131, 65,231,147,159,159, 79,
-243,249, 34,126, 45, 75,117,114,117, 14,102, 48, 24, 14, 95,188,120,241,131,214,173, 91,139, 99,238,222,134, 54, 39, 7,218,156,
-108, 8, 25, 35,108, 36, 65,160, 12, 58, 16,157, 22,206,222, 12,212,185, 18, 92,189,249,200, 96, 48, 24, 14, 87, 90, 33, 96, 89,
-198,248, 82, 56, 80, 20,239,149,169, 66,177,185, 25, 68,102,102, 16,155,153,151, 59,133, 88, 17, 28, 29, 29,101,221,186,117,235,
- 24, 16, 16, 0,150,101,177,116,233, 82,232,116, 58, 81,177,165, 72,175,215, 35, 47, 47, 15,191,254,250, 43,182,111,223,126,217,
-210,210,178,202,165,229,140, 81,123,236,236,229,219,221, 7,127,216, 65,116,234,220, 38, 24,180, 70,228,107,173, 80,160,209, 33,
- 79, 45,128, 78,220, 5,132, 92, 4,197, 19,163,101, 99, 79,156,185, 20,163,161, 13,250,227,213, 17, 67,132, 16,104,181, 90,164,
-166,166, 33, 51,239, 44,144,151, 8, 59,125, 30,242,159, 61, 65,227, 79,134, 64,167,211, 85,201, 53,107, 4, 49, 76, 31, 8,254,
-246,121, 20, 4, 34, 91,189, 87,167, 19, 21,134,138, 48, 51, 51, 43,241,209, 49, 73,168,231,230, 98,199,142, 29,104,222,188, 57,
-218,182,109,139,196,196, 68,196,198,198,162,123,247, 63,103,217,110,223,190,141,200,200, 72,120,122,122, 86,193,197, 30,205,204,
-124,220,167, 87,175, 94,194,107,215,174,129,101, 89,120,121, 89,194,194,220, 12,132, 18,195,215,215, 30,192, 35, 16, 66,208,174,
- 93, 59,232,245, 42, 99, 65, 1,142, 86,198, 25, 17, 17,209, 35, 48, 48,176,142,193, 96,136,246,247,247,231, 39, 39, 39,163,119,
-239,222,216,179,103, 79,241,136, 6,211,167, 79,127,229, 63,249,249,249,154,138,248, 26, 53,173,247, 21,205,218,182, 21,137,221,
-234, 88,218, 55, 68, 29,175,142, 0,128,247, 66,134,163, 78,221, 90,200, 73,187, 83, 71,167,125,254, 33,143,100, 88,255,114, 45,
- 49,170,181,204,127, 88,122,252,185, 24, 0,155, 76,184,230, 44, 33, 36,229,133,192, 98,239,190,223, 14,143,234,217,243,125,190,
-129,102,140,254,174,124,203, 61,251,143,164, 38, 62,127,241, 3, 94,156,188, 95,122,255, 74, 4, 22,157,157,157, 13, 51, 51, 51,
-196,198,198,106,123,246,236, 41, 86,171,213,136,137,137, 41, 17, 88, 14,118, 54,126,173,154,248,251, 44, 88,177,253,132, 92, 44,
- 22,119,105, 23,228, 27, 21,243, 60,129,101, 73, 92,133,188, 44,123, 45,230,193,131, 30,246,118,174, 72, 58,119, 5,242,224,110,
-208,106, 9, 52,122, 6, 58, 26, 48,242,132,176,108,212, 20, 82, 15, 95, 48, 44,240,224,238,109, 24, 89,246, 50,247, 8,225,192,
-225, 63,139, 74,181, 72,177, 5,171, 69,139, 22,187, 75, 91,153,138, 63, 3,208, 2,168,204, 39, 58,173,180,136, 42,158, 54,172,
-232, 56,101,120,107, 38,176, 88,150, 61,143, 74, 86,150,217,217,217, 57,248,122,215,247,216,184,121, 19,244,218, 28,196, 70,109,
- 65, 65, 94, 10,102, 45,188,234,233,226,226,210, 54, 33, 33,225,188, 41, 7, 75, 72, 72,216,179,127,255,254, 47, 27,213,175, 31,
-224,238,226,130, 59,113,207, 32,100,105, 8,105, 26,148, 94, 11, 62,173,131,139, 31, 3,138,146, 35, 57, 57, 15, 27,142,255,113,
- 47, 33, 33, 97, 79,165,163,111,194, 67,173,158, 31, 99,192,123, 61,192, 26,244, 56,217,218, 15, 18, 51, 51,136,173,172,208,242,
-215,115, 47, 67, 54, 24, 13,136, 91, 52, 5, 66,185, 25,108,154,183,171,178,156, 41, 41, 41,133,117,235,214, 13,127,248,240, 97,
- 19,111,111,111,204,157, 59, 23,241,241,241, 96, 89, 22,169,169,169,154,180,180,180,196,140,140,140, 56, 66,200, 1,149, 74,181,
-209,148, 72,225,169, 94,188,173,167, 78,255,241, 85, 96, 99,191,122,157,218,206,193,225,195,223, 34, 59, 55, 23, 5, 90, 62,242,
-213,122, 20,104, 88, 40,205, 61,209,172, 97, 0,210, 50,116,136,185, 31,145,144, 46,180,249,169,154,166, 83,220,190,125, 27,110,
- 54, 4, 81,209,145,176,211,100,194,219,202, 12, 1,193,173,241,244,233, 83,147, 44, 83, 70, 35,248,227, 39,253,185, 90,208,202,
-202, 10, 57, 57, 57,175,252, 79, 38,147, 65,169, 84, 34, 55, 55, 23,251,246,237, 3,107,218, 67,209,160,211,233,224,227,227,131,
-155, 55,111,226,244,233,211,232,208,161, 3,218,180,105,131,115,231,206, 33, 60, 60, 28,145,145,145, 32,132,192,214,214,182,216,
-218, 86,161,201,237,198,141,219, 97,102,102,100,198,176, 97, 99,252, 7, 13, 26,132, 95,127,221,141,225,195,188, 65, 40, 49, 8,
- 17,227,253,158, 62,152, 55, 63, 28,205,154,181,131,157,157, 16,167, 79,223,127,202,231, 91,110, 55, 65,184,252,184,100,201, 18,
-190, 68, 34,129, 78,167, 67,126,126, 62, 50, 50, 94,134,163, 42,207,130,165, 86,171, 43, 12,172,118,255,214,163,239,179,114,217,
- 44,170, 48,226,195,116,195,173,134, 29,186, 36,224,189,144, 97, 56,117,120, 11,206,156, 56, 13, 59,193,179,167,180, 52,255, 88,
-218,211,244, 60, 85,190,215, 6,191,160,207,120, 73, 5, 39,214,127,222,203,154,231,162, 96,194,166,175,205,201,174,170,188,153,
- 81, 59, 14, 29, 98,241,126,112,243,166,158, 13, 92,149,162,204,140, 84,236,255,237,216,125,253,179, 95, 15,227,229,180,160, 41,
-166,200,121,171, 86,173,250, 22, 0, 24,134,217,186, 98,197,138,207,190,250,234, 43,251,196,196,196, 18,129,149,154,158,121,166,
-101,143,241,116, 70,118,142,238,231, 21, 83,123, 75, 37, 98,209,204, 69, 63,159, 51,240,112,173,194,206,133,207, 31,242,245,218,
- 95,210,246,133,109,225,217, 75,132,184, 52,109, 54, 98,255, 56, 11, 61, 17,162,203,201,235,208,233,105,228,166,102,224,204,176,
-177,176, 86,216,224,104, 70, 12,157,147,151, 59,132,123,198,112,224,240,159,181, 78, 85,166, 69,210, 74, 9,162, 76, 0,113,161,
-161,161,233,165,172, 75,105, 0,110, 3,104, 84,180, 95, 90,153,255,165, 1,184, 9,160, 73, 41,158,180, 82, 66,171,244,103, 93,
-153,125,110,191,142, 5,171, 82,164,167,167,167,222, 8,191,135,203,167,214,193,104,208, 34, 39,243,101,236, 79, 85,138, 6, 22,
- 22, 22, 87, 43,121,224,191,146,109,155,101, 89, 86,161, 80,124,180, 98,229,202,107,163,134, 12,118,106,211,177, 35,158,223,189,
- 3,109,102, 58,120, 52, 13, 30, 17, 32, 63, 93,130,148,228, 92,132, 30, 58,150,170,214,104, 62, 42, 59,242, 46, 47,131,119,177,
-147, 59, 75, 8, 36,150, 22, 16,203,229, 16, 91, 90,252,105,177, 34, 4, 34, 51,115, 8,228,102,224, 9, 69, 85,150, 19, 0, 10,
- 11, 11, 63, 30, 57,114,228,157,163, 71,143, 90, 15, 24, 48, 0,239,191,255,126,100,118,118,118,251,204,204, 76,147,252,205,254,
-239,220,195,194,104,187, 6,239,247, 90,179,110,227,149,161, 67,135,218,188,223,107, 13, 34,163,238, 35,187,192, 1, 0,160,180,
-147,163,153,247, 20,164,102,104,113,226,216,225, 44,198,168,249,152,189,183,219, 80, 17, 39,203,178,172,157,157,221, 43, 86, 57,
- 30,143,135,115,231,206, 97,226,196,137,176, 51, 63,135,188,184, 88, 52,104,221, 22,239, 13, 26,130,225,195,135,131,199,227,193,
-214,214, 22,165, 31,186, 85,101, 68,207,201,201,129,187,187, 59, 78,110,244,174,175,211,164, 10, 3,108, 0, 2, 75,253,169, 51,
-221,239, 95,184,112, 33, 31,192, 70, 47, 47,175,176,170,234,147, 16,242,205,194,133, 11,215,181,106,213, 74,106,102,102, 6, 47,
- 47, 47, 92,190,124, 25,151, 47, 95,198,197,139, 47,253,227,108,109,109, 97, 99, 99,131,236,236,108,196,199,199,171, 9, 33,223,
- 84,210,150,152, 38, 77,154,124,112,234,212,129,235, 61,123,126,100,215,181,107, 11, 56, 57,229,193,104, 76, 7,161,132, 16, 75,
- 28,176,113,227, 34,164,166,100,226,202,213,171,153,249,249,252,143,195,195, 95, 77, 65, 84, 65, 57,245,199,143, 31,135, 68, 34,
-193,175,191,254,106,116,116,116,228, 91, 89, 89, 85,104,193,210,104, 52,226,138, 56, 63,155,122, 55, 17,192,252,201,125, 92,150,
- 93,185,159,242, 1,128,157,117,234,186,224,204,137,211,184,120,230,202,244,230,254,204,170, 30, 3,155,206,147,116,232, 59,197,
- 47,240, 51,158,153,133, 2,219,246,255,202,139,138,216,244,157,166,224,158, 7,128, 41, 85, 92, 35, 22, 0,242, 83, 83,102,132,
- 46, 95,189, 53,116,238,183,210,165, 63,172, 85,169,211,147,191,198,203,165,149,108,233,253, 42, 42,103,108,108,236, 6, 0, 37,
-225, 49,148, 74,229,142, 69,139, 22, 93, 24, 60,120,176,125,177,133, 50,245,254,111, 87, 1, 92,245,111,255,233,172,150, 77,234,
-123,127,247,195, 47, 39, 94,196,167,252,146, 29,245, 50, 6, 86,121,229,188,122,245,106, 86, 80, 80,208,200, 41,211,230,108,154,
- 59,111, 54,241,153, 52, 29,209,151,111, 66,171,214, 67,207,242, 96, 0, 65,196,130,229, 48,183,183,192, 37, 54,147,213,242,168,
- 17, 79,202, 56,249, 87,213, 62,107, 2,142,147,227,228, 56,223, 77,206, 42,112,179, 60,123,136, 9,251,221, 52,129,231, 47,129,
- 73, 2,203,217,217,185,205,123, 29,155,163,213,123, 99,160,215,102, 35,246,254,207,200,207, 75,129,179,147, 24,177, 47,114, 91,
- 0, 56,111,234, 1,147,146,146, 94, 40, 20,138,230,223,173, 92,181,191, 75,211, 38,190, 94,206, 10,177,149,187, 27,228, 14,142,
- 72, 79, 75,195,245,136,104,195,218, 19,103,238,169, 53, 26,147, 82,229, 48, 12,195,178, 44, 11,161, 80, 8,150,199,131,223,248,
-105,160, 40,170,204,106, 65, 2,139,160, 96, 80,124, 1, 12, 38,250, 12,169, 84,170, 4,103,103,231,143,199,143, 31,255,199,214,
-173, 91,169,118,237,218, 53, 62,116,232, 16,243, 58,149,157,126,247, 80,140, 99,131, 15,219,174,250,113,237,190,128,160,230,110,
-238,181,221,197,173,106, 89, 66,111,160,145,146,154,129,243, 87,162,180, 49, 81,183,227, 25,189,174, 79,106, 84,197, 81,220, 1,
-192, 96, 48,188, 80, 42,149,142,115,230,204,129,209,104, 4, 77,211, 48, 26,141, 72, 79, 79, 71,100,100, 36, 2,155,183,128,207,
-167,159, 33, 51, 51, 19,155, 55,111,134,139,139, 11,186,119,239,142,188,188, 60, 92,184,112,225, 69,197, 86, 7, 24,103,124, 51,
-144, 15, 0, 2, 1,140, 95,135,132,156,171, 95,191,126,240,251,141, 82,133, 99,198,191,180,108, 45, 94, 52, 80,120,238,220,185,
- 48,177, 88,188,225,233,211,167,149,198, 64,243,244,244, 20,105, 52,154,198, 44,203,242,115,115,115, 87,106,181,218,161,147, 39,
- 79, 86, 44, 89,178, 4, 13, 27, 54, 68,122,122, 58,108,108,108,160, 80, 40,144,159,159,143,167, 79,159,210,122,189,126, 61, 77,
-211,243, 82, 82, 82,210, 42,189,219,110,222,124, 22, 16, 16,208, 34, 37,121,221,254, 49,163, 59,123, 25, 12, 65, 34, 11,203,214,
- 96, 89, 35,178,179,226, 65,216, 59,250, 3, 7,255,120,146,157,205,251, 40, 60, 60, 60,198,148,107, 68, 81,212,232,223,127,255,
- 29,197,169,114, 84, 42, 85, 44, 69, 81, 21, 90,176, 76,193,242,176, 4, 13,128, 93,203,190,104, 49, 41, 39,237, 78, 61, 59,193,
-179,167,205,253,153, 85,203,195, 18, 52,139, 71, 89, 47, 72, 76, 59, 23,173,202, 63,177, 97,219,254, 95,121, 67, 62,252,152, 86,
-152,197, 76,183,171,133,176,246,239, 87, 57,218, 99, 27, 53,106,228, 74, 81,153,181, 83, 51, 30,133, 15, 31, 49,170,175,165, 80,
-125,180,161,115,122, 93,163,163,159, 36, 42, 42, 42,174,104, 55,182, 58,237, 84,165, 82, 69, 43,149,202, 54,223,127,255,253,137,
-178,166,241,212,244,204, 51, 45, 66,198,177,217,217, 57,183, 82,163,126,187, 91, 21, 87,120,120,248,207, 65, 65, 65,248,100,240,
-240,159, 70,124, 58,146,231, 63, 97, 42, 18,206,254, 1, 24, 13, 72,186,120, 30, 50,115, 26,135,211,227,232, 66, 30, 53, 50, 60,
- 60,156,139,226,206,129, 3,135,127, 13,136,169,125,175,167,135,203, 9,143,218,206,157, 61,106, 43, 1, 0,177,207, 84,136,125,
-150,120,242, 73,108, 66,151,154, 40,220,210,201,158, 73, 81, 40, 6,214,132,100,207,101, 57,253,253,253, 35, 41,138, 82, 86,231,
-164,105,154, 78,184,127,255,126,144, 41,229, 84, 42,149, 3,106,213,170,181, 72,165, 82,237,143,143,143,255,226, 77,168,251,226,
-100,207, 20, 79, 24,194,178,108, 67, 0,132, 80, 84,149,201,158, 75,115, 58, 59, 59, 55,144, 74,165, 27,248,124,190,107,177, 73,
-181,184,202,244,122, 61, 47, 39, 39, 71,162,211,233,120, 0,136, 80, 40, 52,154,153,153,105, 4, 2,129,145,166,233, 23, 6,131,
- 97, 84, 98, 98,226, 93, 83, 71, 33,126,126,126,242,144,160, 7,249,197, 41,116,102,124, 51, 16,161, 91, 88, 98,202,185, 63,126,
-252,184,158,181,181,117, 63, 66, 72,111,150,101,189,243,242,242,180,223,126,251,237,173,243,231,207,231,186,186,186,118,109,221,
-186, 53,185,115,231, 14,226,226,226,216,252,252,252,125, 20, 69,125,147,144,144, 16, 91,205,182, 68,181,108,217,184,191,185, 25,
-122, 48, 44, 26, 1, 44, 33,132,220,205,207, 39, 71, 21,138,218,191,132,133,133,209, 53, 29,129, 5, 6, 6, 30,201,207,207,239,
- 30, 19, 19, 83,209,185,130,101,255,172,139,202, 56,151,125,211,224,155, 22,109,131, 63,190,124,254,226,129,169,223,221,155, 95,
-122,219,184, 15,109,134, 15,252,124,226,146,157,107,126,152,186,250, 64,230,207,166,148, 51, 48, 48,176, 14,128,254, 44,203,214,
- 39,132,120, 49, 12, 36,132,176,153,132,144, 40,134, 97,110, 51, 12,243,251,157, 59,119, 84,239,194,136,182,116,178,103, 66,211,
- 86, 52, 33, 38, 37,123,230, 44, 4, 28, 39,199,201, 89,176,254,169, 48, 57, 2,119,177,144,242,242,242, 98, 31, 63,126,252,202,
- 67,165, 38, 40, 18, 80,187, 81, 73,148,118, 83,112,239,222,189,128,191,178,130, 84, 42,213, 46, 0,187,222, 36,103,145,128,250,
-185,232, 85, 35, 20, 9,164,102,127, 71, 35,137,138,138, 42,152, 53,130,148, 88,182,248,124, 24, 77,253,111,231,206,157,159,235,
-245,250,211, 0, 18, 0, 88, 1,200, 52, 24, 12,199,211,210,210, 82,156,156,156,130,158, 63,127, 62,171,200, 18, 57, 63, 57, 57,
- 57,188,134,109,137, 1,176,179,232,245, 70, 17, 17, 17,209, 67,169, 84, 70,218,218,218,122,106, 52, 26,145, 70,163, 17,148,110,
-251, 82,169, 52,205, 84, 46, 75, 11,108,227,145, 12, 91,107, 11,242,127,150, 26, 59,103,252,170, 46,184, 87,207,206, 25,191, 86,
-163,108, 79, 27, 55,110,188,131,162,168,218, 12,195, 56, 2,176, 96, 89,164,179, 44,155, 78,211,116,194,221,187,119, 85,239, 74,
- 71, 83, 36,160, 66,192,129, 3, 7, 14,156,192, 42, 31, 49, 49, 49,132,171,182,255, 30,230,111,100, 5, 53,249, 95, 92, 92,156,
- 22,192,149,162,215, 43, 40, 18, 84, 61,223,245,115, 87,169, 84,111, 68,196, 23,249,100,125,209,180,227,255,111, 43, 10,205, 48,
-181,195,251,213,227,188,117,235,214, 11, 0, 47,184, 22,202,129, 3, 7, 14,239, 22, 40,174, 10, 56,112,224,192,129, 3, 7, 14,
- 28,222, 44, 8,128,114, 67, 92, 87,103,110,149, 16,226, 95,221, 3, 87,197,207,113,114,156, 28, 39,199,201,113,114,156, 28,231,
-191,143,179, 42,238,127,139,111, 23,169,230, 2,163,234,145,115, 14,128, 28, 39,199,201,113,114,156, 28, 39,199,201,113,254, 7,
-193, 77, 17,114,224,192,129, 3, 7, 14, 28, 56,188, 97, 84,232,228,238,225, 81,203,143,162,153, 86, 44, 75,241, 88,138, 53,144,
- 92,245,158, 39,101,130,108,186,186,186, 90, 9, 40,244, 36, 44, 43, 39,132,161, 25, 30,117, 57, 54, 54, 62,202,148, 3,251,249,
-249, 9, 1, 12, 21, 8, 4,193,122,189, 94, 33, 16, 8,146, 52, 26,205, 37,129, 64,176, 53, 42, 42, 74,255, 46, 85, 82,112,112,
-112,255,125,251,246, 89,133,132,132,104,245,122,189, 81, 40, 20,242,119,239,222, 45, 30, 54,108, 88,246,165, 75,151,106,180, 10,
- 50, 32, 32,160,253,226,197,139,235,116,236,216, 17,193,193,193, 5,221,186,117, 19, 6, 5, 5, 9,167, 77,155,246, 52, 50, 50,
-242,108,117,184, 28, 29, 29,253,248,124,254,118, 66, 8,143,101,217, 79,138, 67, 48,252, 21, 32,132, 12, 0,208, 7,128, 2, 64,
- 50,128,189, 44,203,238,170, 33, 87, 87,188,116,114,111, 88,244,211, 29, 0,191,179, 44,123,252, 53,202,215, 21, 64, 79, 66, 72,
- 35, 0, 96, 89,246,246, 27,228,108, 88,196,249,198,202,249,186,231, 30, 24, 24,248,173, 72, 36, 26, 1, 0, 58,157,238,103, 51,
- 51,179,208,242,246, 59,127,254,188,174,162,208, 39,126,117, 8, 27,245,187,207,203,207, 61, 31, 2, 0,170,252,254,180,134,171,
-136, 31,248,178,229,241,194,247, 65,141, 23,207, 40,149,202,177,221,187,119,159,118,252,248,241,239, 18, 18, 18,126, 2, 7, 14,
- 28, 56,188,171, 2,203,195,163,150, 95,239, 15, 62, 90, 56,122,212, 24,194,227, 81,120,240,240, 33,255,243, 9, 95,116,246,245,
-245,117,150,107, 52,190, 44,192,168,165,210,123, 60, 30,149,184,110,205,143,230,222,245,234,209, 52,205, 96,253,134,117,221, 60,
- 60,106,125, 93,149,200,114,112,112,168,163, 80, 40, 86, 78,152, 48,193,161,115,231,206,148,163,163, 35, 18, 18, 18, 44, 14, 28,
- 56, 80,119,243,230,205, 33, 14, 14, 14,147, 82, 83, 83,159,214,228,132, 20, 10, 69,107,133, 53,186, 74,197,108,123,228, 18,168,
-141,228,108,146,142, 61,158,148,148,116,177,166,149,164,211,233,198, 23, 22, 22, 54,247,243,243, 99,214,173, 91, 71, 70,142, 28,
-201, 18, 66, 40,181, 90,189, 5, 53, 12, 51, 33,149, 74,215,116,236,216,209, 43, 56, 56, 56,246,242,229,203, 61, 0, 28,233,211,
-167,143,135, 84, 42,141, 1,224, 93, 29, 46, 30,143,183, 37, 42, 42,170,145, 90,173, 70, 80, 80,208,102, 0,129,127,145,184,218,
-108,109,109,109, 88,187,118,237,134,198,141, 27,123,102,101,101, 21,140, 26, 53,170, 19, 33,164, 3,203,178,159, 86,131, 71, 14,
- 96,149, 76, 38,227, 77,154, 52,233,216,135, 31,126,120, 91, 46,151,155, 61,122,244, 72, 48,113,226,196, 79, 8, 33,189, 1, 76,
- 96, 89,182,160,186,156,182,182,182,210, 5, 11, 22, 68,180,108,217, 50, 85, 34,145, 72,159, 62,125, 74, 38, 77,154, 52,242, 53,
- 57,133,243,230,205,187,220,174, 93,187, 88,177, 88, 44,123,241,226, 5,239,171,175,190, 26,254, 58,156, 86, 86, 86,162,111,191,
-253,246,106,219,182,109,227, 36, 18,137, 60, 54, 54,150,154, 60,121,242,103,213,225,108,219,182,109,127,138,162,230, 94,184,112,
- 1, 0,208,162, 69,139,111,117, 58,221,204,178,251,177, 44,139,224,224, 96, 77,219,182,109, 71,156, 63,127,190,220,246,186, 53,
-124, 74,127, 0,248,106, 86,241,247,151,239,229,125, 31, 26,180,180,218,109,222,175,206,203,252, 98,159,127,181,118,240,203,247,
-151,191,175, 43,186, 43,215,244, 36,108,117, 68,155,179,179,243,168,166, 77,155,206,184,126,253,250,182,160,160,160,137, 63,253,
-244,147, 32, 36, 36,100,129, 82,169,244,236,218,181,107,239,171, 87,175, 46,125,248,240,225, 26,174,139,231,192,129,195, 59, 37,
-176, 40,154,105, 53,122,212, 24,210,111, 64,255,228,164,148, 84,198,204,220,114,192,222,176, 48, 89,189,122,245, 40,205,170, 85,
- 48,166,167,131,254,242,203,150,231,207,159, 55,140,155,244,165, 90,171, 41,220,162,112,116,144,237,217,181,219,105,255,175,251,
- 90, 1,136,170,204,114,165, 80, 40, 86,254,250,235,175, 78,117,234,212,129, 78,167, 67, 90, 90, 26,244,122, 61, 62,252,240, 67,
- 94,243,230,205,157,134, 15, 31,190,210,207,207,239,163,234, 88,178,236,237,237, 29,189, 93, 5, 71,231,124,209,181, 94,251, 54,
- 65, 82, 39,231,218, 64, 2,131,196,216,152, 38,127, 92,139,152,208,166,174,115,244,163, 28,125,247,180,180,180,148,234, 86, 82,
- 70, 70,198,180, 81,163, 70,237,107,216,176,161,189, 88, 44,134,163,163, 35,249,236,179,207, 82,146,146,146,230,213,180,226,139,
-163,131, 83, 20, 69,151,121,175, 9,157,139,165,165, 37, 44, 44, 44, 0,192,249,117, 26, 68,159, 62,125,120, 47, 94,188, 24,193,
- 48,140,111,233,223,147,146,146, 60,236,237,237,211,159, 61,139,107,164,209,233,155,141,253,106,238,130,126, 61,219, 91, 92,189,
-122,149,234,209,163,135,128, 16, 50,160, 26,150,172, 85,222,222,222,119,151, 44, 89,162,123, 16,243,212,255,228,185,171,148,131,
-141,156,169,227,238,110,118,255,254,125, 97,104,104,104, 90,104,104,232, 42, 0,195,171, 81,244, 85,239,189,247, 94,252,140, 25,
- 51,120, 15,162,159,120, 92,188,122, 11, 22,102, 34,218,213, 69, 41,185,122,245, 42,127,221,186,117,248,250,235,175,171,205,217,
-190,125,251,152,249,243,231,179,201,169,153,117,159, 62, 75,130,185,153,200,104,107,107, 43, 61,119,238, 28,217,186,117,171,110,
-226,196,137,213,230,108,217,178,229,147,217,179,103,147,135,143,159,214,189,116,245, 22,204,228, 66,163,187,171,139,228,198,141,
- 27,228,199, 31,127, 52,124,251,237,183, 38,113,178, 44,187,126,233,210,165,248,237,183,223, 0, 0,187,118,237,130,135,135,199,
- 43, 13, 72,173,209,128, 16,130,184,103,207,100,163, 71,143, 94, 95,222,128, 32,234,119, 31,108, 13, 7,134, 14, 29,106, 90,242,
-246, 7, 75,171,109,181, 42, 22, 86, 99,198,140, 73,168, 96,175,193,126,117, 76, 23, 89,173, 90,181,154,182,103,207, 30,187,176,
-176,176,175, 14, 28, 56, 0, 0,144,201,100,178,213,171, 87,143,237,213,171, 23, 62,253,244,211,105, 0, 56,129,197,129, 3,135,
-119, 75, 96,177, 44,197,227,241, 40,164,166,164, 27,222,235,212,121,248,234,181,107,197, 34,145, 8, 58,157, 14, 5,103,206,128,
-213,106, 97, 41,149,162,123,247,238, 2,127,127,127,139,145,195,135,127,150,154,146,188,129,199,163,156, 88,150,226, 85,113,204,
-161, 19, 38, 76,112,168, 83,167,206, 43, 9,132,105,154, 70, 74, 74, 10,204,205,205,209,183,111, 95,187, 29, 59,118, 12, 5, 96,
-146,185,223,209,209,209,221,219,195,225, 74,216,166,175,156, 28,172, 8,144,246, 43,240, 60, 6,216, 41,129,151,131, 27,188, 58,
-180,145,246,108,230,223,168,255,146,173,183, 28, 29, 29, 91,166,164,164,196, 85,167,146,158, 61,123,118, 73,169, 84,142,208,104,
- 52, 7, 1, 80,151, 47, 95,102, 95,188,120, 49, 58, 57, 57,249,121, 77, 43,158,166,105,100,103,103,131, 97, 24, 30,128,146,119,
-218,196, 84, 62,127, 5,250,244,233,195,139,143,143, 31,229,235,235, 91,119,227,198,141, 72, 77, 77,133, 68, 34, 1,195, 48,104,
-209,162,133,107,167, 78,157,158,164,101,230, 88, 27,141,180, 62,225,249,179,160, 69, 75,111,165, 53,242,243,190, 20, 22, 22,214,
-216,206,206,174, 47, 76, 8,200, 74, 8,233,106,110,110,206,255,238,187,239,212, 78, 46, 30,253, 20,174, 94,130, 43, 55,239, 70,
- 11,101, 34, 54, 35, 39, 47,239,214,173, 91,209,115,231,206,109,115,244,232,209, 84, 66, 72, 87, 83,166,204, 8, 33, 93,109,109,
-109,165,211,167, 79, 39,150,182,202,247,130,219,184, 10, 34,238, 68, 61, 17,201, 68, 76,112,112,112,207, 43, 87,174,108,158, 60,
-121,114,227, 35, 71,142,228, 86,135,211,198,198, 70, 48,111,222, 60,218, 81,233,214,203,181,118, 93,129,179,147,157, 31, 0, 60,
-138,126,188, 41, 37, 37,229,201,232,209,163,155, 29, 59,118, 44,175, 58,156,150,150,150,194,111,191,253,150,245,245,111, 60,188,
-126,195, 64,234,247,147, 23,174, 74,229, 34, 58,183, 64,157, 31, 21, 21,245,100,234,212,169, 77,143, 28, 57, 98, 18,103, 97, 97,
-161,185,139,139, 11,156,156,156,192,168,213,200,205,205,197,254,253,251,145,151,151, 7,154,166, 33,149, 74,241,195,241, 76,104,
- 30,255,142, 13, 43,231, 65,173, 86,155,191,137,118,226,215,243, 33,162, 76,181, 47, 63,240,101,215, 93, 28, 55,184, 18, 97,133,
- 82,194,107, 48, 30,248,178,149, 77, 23,150,178, 92, 37,132,133,133, 57,120,122,122,162, 93,187,151, 9,220,135, 15, 31,142, 78,
-157, 58,225,183,223,126,195,201,147, 39, 95,124,248,225,135, 79, 35, 34, 34,150,198,199,199,175,231,186,122, 14, 28, 56,252,221,
- 40,215, 92,194, 18, 82,112,255,193, 3,129,153,149,213,224,213,107,215,138, 5, 2, 1,226,226,226, 16, 21, 21,133,194, 51,103,
-160,190,114, 5,169,169,169,200,203,203,131,189,189, 61, 66,151, 46,149, 11,165,242,225, 49,143, 31,243, 88,138, 53,148, 26, 97,
-255,223, 10, 3,145, 72, 20,220,189,123,119,170,162,213,139,201,201,201,232,220,185, 51,159,207,231, 7, 87, 48,106, 47,155,156,
-151, 40,237,201,239,123,127,154,228,228,192,191, 11, 60,158, 8,100, 95, 4,140,217,128, 58, 31,120,118, 23, 56,240, 61, 92, 50,
- 31,147,157, 19,250, 56, 58, 75,133,191,147,210, 25,146, 81,245,146, 80, 23, 23, 23, 15, 79, 79,207,141, 31,127,252, 49, 5, 0,
-193,193,193,196,211,211,115,131,139,139,139, 71, 37,214,133, 74, 57, 53, 26,205,181,172,172, 44,210,163, 71, 15,219,150, 45, 91,
-158,234,209,163,135, 45, 0,162,209,104,174,213,148,179, 8,182, 29, 58,116,200,240,240,240,216,229,238,238, 46, 54,193, 10, 82,
-194,249,226,197,139, 17, 62, 62, 62,117, 55,110,220,200,227,241,120,248,233,167,159,176,119,239, 94, 92,184,112, 1,105,105,105,
-178,201,147, 39, 91, 29, 58, 19,121,250,212,197,219,135, 39,141, 25,197,188, 23,216, 88, 33, 78, 79,206,176,181,181,237, 6,192,
-201,196,114,246, 28, 63,126,252,209,200,168,103, 78,132, 39, 22, 11,133, 66,137,147,163,157,131,194,193,209, 93,225,224, 88,207,
- 92, 38,179, 46, 40, 40,120,113,240,224, 65, 22,165,130,144, 86,197, 57,119,238,220, 27, 81, 49, 47, 28, 88, 74, 40, 18, 10, 5,
- 66, 59,107, 43,155,222,239,119,238, 9, 0, 50,177, 88, 86, 80, 80,144,180, 99,199,142,106,113,206,158, 61,251, 98, 98, 74,182,
- 19, 95, 32, 20, 75,196,226,146, 44,225, 54,214,150,206,102,114,185, 76,167,211,197,111,220,184,209, 88, 29,206,153, 51,103, 94,
-126,240,248,133, 35, 69,241,120, 20, 69,248,246,182,214,118,182,182,182, 10, 91,107, 27,103,169, 72, 36,207,207,207, 79,216,181,
-107, 23,109, 42,103, 74, 74, 10, 30, 62,124,136, 90, 77,154,224,244,233,211,168, 85,171, 22,250,244,233,131,126,253,250, 65, 42,
-149,162,169,213, 19,124,216,181, 37,158, 60,121, 82,225,117, 47,246,135,170, 12, 74,165,242,124,117,218, 18,240,114, 90,176, 50,
-113, 85,150,179,188,253,202,114,182,106,213,106,218,254,253,251,237, 86,172, 88,209,248,139, 47,190,136,221,191,127, 63, 26, 54,
-108,136, 7, 15, 30,192,217,217, 25,187,119,239,198,184,113,227, 98,231,204,153,211,120,239,222,189,142,254,254,254,211,107,120,
- 31, 85, 11, 28, 39,199,201,113,114, 48,201,130,101, 96,240,251,248,137,147,123,254,186,127,191, 76, 36, 18,225,217,179,103, 72,
- 73, 73,193,209,195,135,233,163, 13, 26, 20,242,120, 60,246,163, 95,127, 53,239,211,175, 31, 17, 10,133,168, 91,183, 46,186,119,
-239, 46,253,108,228,152, 84,126,129,122, 79, 21, 23,197,193,222,222, 30,211,167, 79, 71,104,232,171,254,184, 67,135, 14,197,202,
-149, 43, 97,110,110, 14, 66,136,131, 41, 39,160, 80, 40,250, 12,255,170,125, 45, 11, 55,139, 20, 54,114,139,128,128,178, 1, 95,
- 6, 80, 34, 64,102, 6, 48, 52, 96,208, 65, 27,126, 37,147,109,183, 58,183, 75, 64,129,115,178,110, 87, 31, 0,123, 77,173, 36,
- 59, 59,187,153, 97, 97, 97,246, 83,167, 78,101,243,242,242, 72,106,106, 42, 59,117,234, 84,251,153, 51,103,206, 4, 48,180, 38,
- 21,175, 82,169, 22, 12, 31, 62,188,203,207, 63,255,236,244,241,199, 31, 91, 21,141,192,147, 85, 42,213,130,215,185,160, 2,129,
-128,119,230,204, 25,155,245,235,215,247, 95,176, 96, 65,253,142, 29, 59, 58,101,103,103,199, 37, 37, 37,245,174,202,226,198, 48,
-140,239,198,141, 27,193,227,189, 52, 66,242,120, 60,136, 68, 34, 72, 36, 18, 88, 90, 90,102, 63,125,250,212,232,110, 43,228,191,
-120,145, 92,232,166,116, 49,183,108,228,231,232,224,226,250, 81, 65, 65, 65, 4, 76,207, 10,208,176,107,215,174,151, 15,157,189,
-131,177,159,118,170,199, 39, 58,190, 68, 34,172, 39, 19, 10,136,128, 98, 89,198,200,210,155,247, 92,254,205,205,205,205,151, 16,
- 98,210,116, 39, 33,164, 81,235,214,173, 19, 79, 95,139,162,174,223,138,137,117,180,145, 91,125,216, 45,184,121,201, 1, 3, 2,
-250,149,218,215,212,212, 54, 13,219,181,107,247,240,113, 66, 6,229,170,180,123,197, 39,206,222,222,190, 11, 0, 20,230,231,110,
- 85, 40, 20,222, 98,177,216,212, 92,152, 13, 59,116,232, 16,115,250,218,125,202,201,222,170,184,125,191, 50,144, 72, 79, 73,218,
-225,230,230, 86,143, 16,226,100, 10,225,193,131, 7,113,235,214, 45,204,243,243,195, 84, 55, 55,216,219,219,227,204,153, 51, 96,
- 89, 22,114,185, 28,217,217,217, 8, 11, 11, 43,177,242,188, 14,148, 74,229,121,149, 74,213,182,196, 49,253, 13,160,152,211, 84,
-235,216,165, 75,151,246,135,133,133,141,245,244,244,196,176, 97,195, 60,182,108,217, 18,235,237,237,237, 17, 28, 28,140, 75,151,
- 46, 97,234,212,169,177,115,230,204,241, 24, 58,116, 40,182,110,221,138,219,183,111,111,227,186,121, 14, 28, 56,188, 53,129, 69,
- 8, 97, 89,150, 37,197,239, 47, 94,188,200,246,245,245,117,246,244,244,164,116, 58, 29,114,114,114,112,226,216, 49,122,247,222,
-189, 71,116, 58,221, 4,138,162,132, 91,183,111, 95,239,224,232,216,190,119,159, 62,196, 96, 48,160, 99,199,142,162, 51,103,206,
-216,222,121,241, 34,175,178, 3,242,120,188, 18,235,209,216,177, 99,177,114,229, 74, 0,192,144, 33, 67,254, 20,120, 6, 3,202,
- 24,153, 42,132,204,146, 14,105,219,169,190,121,188,252, 71,115, 77,203,220,188, 58,209,206, 87,204,242,228, 77,193,151,240, 33,
- 51, 3, 99,132, 49, 38,191,121, 68,236,243,218,190,146,163,169,181, 91,121, 55,197,222,171, 7, 66,170, 35,176,164, 82,105, 83,
-185, 92,142, 7, 15, 30,100, 6, 5, 5,101, 91, 88, 88, 88,122,121,121,217, 73,165,210,166, 53,173,248,148,148,148,103,206,206,
-206,109, 63,250,232,163,207, 41,138,234,196, 48,204,233,140,140,140, 53, 41, 41, 41,207, 76,249,191,179,179,243, 24,150,101,103,
- 3,216, 87,252,155, 94,175, 7, 69, 81, 96, 89, 22, 61,123,246,196,162, 69,139,252, 78,159, 62,141, 11, 23, 46,216, 12, 28, 56,
-240,154, 82,169,204, 38,132,124,154,152,152, 88,161,149, 44, 35, 35, 3,235,214,173, 3,143,199,131,149,149, 21,204,205,205, 33,
-145, 72,208,174, 93,187,148, 37, 75,150,120,133,133,133, 25, 50,234,166,178,162,252,156, 2, 91,169,151,146,178,179,175,243,249,
-200, 81,215, 1,132,153,122,238,102,102,102,230,230, 60,117, 62,143,213,240, 86,172,218,192,151,241, 41,200, 5, 66, 72,168,124,
- 50,227,219,249,172,132,240,100,168,102, 26, 39,161, 80, 40,179, 20, 65, 39,148, 9,104, 51,153,232,141,164,115,146, 74,165,114,
- 51, 33,116, 21,109, 23, 81,124, 17, 0, 9, 33,164,208, 84, 78,137, 68, 98,102, 33, 98,181, 21,109, 55, 23, 8,133,132, 16, 9,
-128,114,157,220,251,116, 34,108,216,202, 98,129, 35, 41,249,157,166,105, 52,105,210, 4,123,127, 59,141, 19, 23,239, 35, 51, 33,
- 10,131,251,116,131,187,187, 59, 24,134,169,180, 76,197, 62, 88, 38, 12, 10, 94, 10,162, 83,150, 85,239, 92,228,119, 85,213,212,
- 96,105,206,151,226,170, 98, 31, 44, 23, 23,151,145,141, 27, 55, 30,114,224,192, 1,180,111,223, 30, 33, 33, 33,240,246,246,246,
- 24, 56,112, 32, 0,160, 77,155, 54, 8, 13, 13,245,232,223,191, 63, 14, 30, 60,136,163, 71,143, 34, 40, 40,104,162, 82,169, 76,
- 85,169, 84,107,185,238,158, 3,135,119, 27,101,181,200,191,210,130, 5, 0, 98,189,222, 91,179,110, 29, 10, 79,159,134,232,212,
- 41, 28,105,212, 40,223,104, 52,126,169, 82,169,226, 1,192,209,209,113, 82,216,190,125,151, 59,159, 61,107,161,123,240, 0,181,
-238,221, 3,191, 94,189,198,166, 30,184,216,122,165,215,191,244, 99,223,182,109, 27,114,115,115,145,147,147, 3,163,209,228, 92,
-194, 16, 8, 72, 43, 7, 59, 87, 36, 33, 6, 12,159,111,254,204, 79,215, 82,174,182, 72,172,245,204, 46, 63, 71,208,136, 68,167,
- 54, 50,215,228, 25,154, 81, 66, 29,116,217, 26, 40,109,157,193,167,248,173,170, 83, 73,197, 22, 29,169, 84,154, 25, 17, 17,241,
-126,235,214,173, 15, 1,176, 43,254,189,166, 72, 76, 76,124, 12, 96, 98, 77,254, 75, 81,212,236,115,231,206, 57,132,133,133,141,
- 91,189,122, 53, 11, 0, 58,157,174,196, 73, 94,167,211,129,207,231,131, 97, 24,200,229,114,240,249,124,199, 3, 7, 14, 56,246,
-234,213,107, 13,128, 10,175,147, 76, 38,131,163,163, 35, 4, 2, 1, 44, 45, 45, 81,144,155, 37, 95,183,112,102, 59,153,181,163,
-205,196,137, 95, 82, 67,135, 14,189,191,122,245,106, 23,165,103,221,250, 15, 31, 62,124, 49, 96,216,240,203,187,119,239,206,175,
-134,131,251,157,216,216, 88, 81,125,223,186,146, 35,251,242, 25, 25,159,133, 44,253, 59,200,164, 10,136, 68, 46,144,137,197, 16,
-138, 68,118, 73,201,201, 41, 44,203, 62, 49,133,144,101,217,219, 79,159, 62,229,213,118,117, 18,229, 21, 26,243,100, 60,218,252,
-113,228,157,232,186, 1, 13,235, 1,128,230,193,157,115,226,218,158,162,164,172, 28,177, 82,169,140,170, 70, 57,133,142,142,142,
-162,251, 15, 30,111,180,179,177,112,117,116,116,120, 15, 0, 12,234,194,251, 68,167, 81,241,248,124, 69,102, 86, 86,154, 70,163,
-121,108, 42,103,116,116, 52,223,211,221, 69,188,255,240,169,159, 29, 44,204,106,217, 73,197,142, 22,114,161,153,136,166, 11, 68,
- 12,173, 18,138,197, 78,170,228,228,116,150,101,163, 43, 34, 89,119,113,220,224,151,159, 54,239, 40, 58,255, 98,235, 14,174,196,
-178,176,182, 87, 34, 35,254, 17,206,252,126, 16, 67,198,142, 51,233,126, 90, 54,127,216,238,101,243,135, 85, 24,158,161,140, 32,
-130,234,117,211, 72, 63,240, 61,255,255,156,149,119,168, 93,187,118,253,230,167,159,126,146,149, 80, 60,120,128,224,224,151, 6,
-192,185,115,231,162, 75,151, 46,240,242,242, 66, 84, 84, 20,220,220,220,176,127,255,126,240,120, 60,193,200,145, 35,167, 1,224,
- 4, 22, 7, 14, 28,254, 86, 84,184,100,141, 97, 89,134,206,202, 2,171,211, 21, 91, 8, 88,150,101,101,127, 10, 27,129,204,202,
-202,138, 8,156,157, 65, 36,146, 98,249,249,218, 30,218,124, 62,191, 90, 2,139,166,193, 3, 49,128, 5, 11,128, 2, 1,133, 66,
-169, 8,115, 28, 67,200, 12,197, 52, 94,154,204,154, 16, 30, 5, 66, 17,128, 0,172,129, 1,205,210,213, 85, 70,108,126,126, 62,
-180, 90,173,181,167,167,231, 17,141, 70, 99, 93,244, 96, 99,223,214,133,163,105, 58,150,162, 40,124,242,201, 39,192,203,148, 71,
-208,233,116,136,142,142,134, 70,163,129, 78,167, 67, 84, 84, 20,114,115,115,161,211,233, 16, 30, 30, 14, 55, 55, 55,240,249,124,
- 69,101,188, 70,163, 17,246,246,246, 80, 40, 20,208, 22,228,202,127,253,105,101,143, 37,115,103,216, 13,240,100,169,205,171,190,
-103,234,213,171,151, 93,191,126,125, 59,169, 84,154,213,176, 97,195,140,221,187,119, 31,168, 78,136, 6, 0,191,207,152, 49,163,
- 89,187,118,237,188,172,204,165, 6,185, 4,144,241, 10, 32, 98,213, 16, 24, 83,224, 85,167, 46, 67,100, 50,239,254,253,251,107,
- 1,252,110, 42,231,228,201,147, 61,253,253,253, 21,214, 22,226, 2,169,144, 36, 75,120,116, 82,118,212,157,107, 0, 32,182,178,
- 81, 67, 44,245, 31, 50,100,136,186, 58,156, 83,167, 78,245,173, 93,187,182,147,144,207, 22, 18,218,248,167,164,208,106, 82,120,
- 2, 97, 33,132,194,128,137, 19, 39,234,171,195,249,213, 87, 95,249, 52,106,212,200,209,222, 82, 82, 32, 21, 64, 37,229,209, 42,
-129, 78, 27, 47, 52,234, 82, 36,214,214,133,144,202, 26, 15, 30, 60, 88, 87, 17,103,177,245,170,172,101,136,207,231, 67,165, 82,
- 33,243,217, 21,100, 62,187,139,122, 84, 30,154, 57,218,195,204,204,172,234,251,201,247, 1,137,122,202,146,168,167, 44,129,239,
- 3, 82,222,247,114, 68, 86,165,109,191, 82,191,174, 7,190,231,107,194,121,244,232,209,197,189,122,245, 50,244,235,215, 15,167,
- 78,157, 2, 33, 4,151, 46, 93, 66, 98, 98, 34,186,116,233, 2,150,101,113,235,214, 45,232,245,122, 60,120,240, 0,189,123,247,
- 70, 72, 72, 72,225,241,227,199,191,227,186,122, 14, 28, 56,188, 45,129,213,142, 16,194, 2, 40,113,212, 48,136,197,247,153,241,
-227, 97,249,219,111, 16,196,196,160,247, 71, 31, 89,136,197,226, 85, 10,133, 34, 80,169, 84,182,146, 74,165,107, 38, 79,158,108,
-110, 27, 26, 10,229,133, 11, 72, 58,117, 10, 6,129,224,102,117, 14,174, 86,171,139,173, 49,208, 21, 9, 57, 43, 43, 43, 48, 12,
- 3, 83,181, 11, 75,227,106, 82, 90, 12, 68,112, 7, 11,228, 29,203,235,112,117, 64,236, 60,199,211,121,245,234,197,228, 10, 60,
-151, 56, 52,179,219, 88,187,229, 77, 53, 17,228, 11, 45, 68, 80,169, 84, 96,193, 92,173, 78, 57, 53, 26, 77, 78, 65, 65, 1,241,
-244,244,180,139,136,136,240,172, 91,183,174, 45, 0,162,213,106,111,188, 78,229, 43,149,202, 22, 1, 1, 1,123, 3, 3, 3,159,
- 6, 4, 4,236, 85, 42,149, 45,170,241,247,205,145,145,145,224,241,120, 24, 57,114, 36,242,242,242,160,211,233, 16, 31, 31,143,
- 23, 47, 94, 64,167,211,225,254,253,251,120,248,240, 33,116, 58, 29,110,221,186, 5,173, 86,107,138,112,131,185,185, 57,178, 51,
- 82,229,123,214,125,223,227,187,185,179,164, 57,143, 35,144,160, 74, 1, 67,171, 85,179,102,205,138,245,244,244,188,164,213,106,
-125,140, 70, 99,119,150,101,247, 84,195,252, 75, 1,184,229,237,237,221,110,217,178,101,173,230, 45,222, 46,178, 52,203,133,216,
-202, 6, 34,107, 25, 68,110, 65, 24, 50,101, 57,127,195,134,181,119, 46, 93,186,148,102,226,202, 60, 10,192,173, 38, 77,154,180,
- 74, 78, 78,110, 27, 16, 16, 16,228, 92,187,182, 92,238,164,200, 18, 59, 41,211, 25,173,230, 26,156,156,219,108,219,182,237,198,
-217,179,103,147,170,195,233,230,230,214,102,237,218,181,205,220,221,221,155,201, 44, 44,204, 52,121,121, 59,140,133,133, 97, 60,
- 51, 51, 17,164,242,206,199,143, 31,191,180,123,247,238,228,234,112,250,250,250,182, 14, 13, 13,109, 18, 24, 24,216,204,197,195,
-195, 76,234,224,148, 33, 87,186,164, 74,189,252,132,112,114,233,180,109,219,182, 43,231,206,157, 75, 50, 53,224, 40, 69, 81,224,
-243,249, 48, 51, 51,195,249,243,231, 17,210,218, 27, 10, 42, 19, 13,221, 21,232, 54,236, 83,156, 60,121, 18, 2,129, 0,175,107,
-109, 45, 11, 83, 4, 81,117,197, 87, 85,156, 42,149,106,109,120,120,248, 15,125,251,246, 69,167, 78,157,112,251,246,109, 76,157,
- 58, 53,246,220,185,115, 0,128,219,183,111, 99,193,130, 5,177, 87,175, 94,197,176, 97,195, 16, 28, 28,140, 91,183,110,109,227,
-130,143,114,224,240,143,193,255,105,145,127,188,192, 98, 89,246,124,233,119, 79, 27, 27,115,141,166, 48,225,252,249,243,122,138,
-162, 32,149, 74,209,167, 95, 63,106,225,119,223,181,254,160, 81,163, 51,131, 90,182, 60,182,103,207,158,128,128,128,128,146, 78,
-254,208,161, 67,234,156,156,236, 12, 87, 87, 87, 43, 83, 15,158,158,158, 14,224,229, 20, 92, 65, 65, 1, 88,150, 45, 25,113,155,
-234,131, 85,144, 75,157,186,116,254,126, 54, 75,143,125,209, 57,102,181, 97, 81,210,199, 45,242, 24,150,159,207, 24,144, 83,200,
- 34, 79,203,242,175,179, 86, 77, 70,121,133, 24, 98,219, 53,125,116,245, 89, 68,166,154,213,157,170, 78, 37,101,101,101,205, 28,
- 59,118,108,186,163,163, 35, 49, 55, 55,135,163,163, 35, 53, 98,196,136,180,248,248,248,249, 53,173,120, 63, 63,191,254, 45, 91,
-182, 60, 20, 25, 25,217,123,239,222,189,238, 97, 97, 97,125, 90,182,108,121,200,207,207,175,191,137, 20,123,151, 45, 91, 86, 32,
- 18,137,208,188,121,243, 18,129, 85,217,171,120, 58,182, 50, 48, 12, 3,137, 68,130,176, 77, 43, 59,127, 55,119,150, 52,227,193,
- 85,220,185,116, 10,199,159,105, 11,103, 47,250,225,154, 68, 34,169,217,249, 58,200, 27, 52,247,114,122,248,205,248,225,177,179,
-102,205,146,223,185,115, 71, 54,113,194,120, 54, 41, 57, 7,226,122, 63,128,170, 61, 27, 15,147,237,208,173,123, 27,118,198,148,
-207,155, 0,152, 80, 29,206, 9, 19, 38,200, 22, 47, 94, 92, 24, 28, 28,156,147,155,155, 43,145, 91,219,250, 11, 45,173, 27, 38,
-103,102,137,218,180,105,115,123,248,240,225,153, 12,195,140,175,110, 57, 47, 95,190, 44,238,222,189,123, 65, 94, 94,158, 76, 32,
-149, 6, 80, 18, 73, 96, 78,126,161,168,255,128, 1,145, 61,122,244,200, 99, 24,102, 66,117, 57, 31, 61,122, 36, 14, 14, 14,206,
-207,205,205,149,153,219,217, 55,230, 91,217, 4,168, 50, 50, 69,193,173, 91,223, 26, 62,124,120,110,101,231,222,103,210,159,226,
- 68, 42,149,102,248,250,250, 98,230,204,153,152, 61,123, 54,250,244,233,131,196,196, 68,116, 29, 56, 8,141,134,140,192,217,123,
- 81, 72, 74, 74,194,215, 95,127, 13, 47, 47, 47, 80, 20,149,244,119,137,172,138, 28,225,253,234,144,243,149,249, 89, 85, 37,178,
- 58,119,238, 60,172, 87,175, 94,248,237,183,223, 74, 28,218,251,245,235, 7,161, 80,136,198,141, 27,227,203, 47,191,244, 88,182,
-108, 89,236,242,229,203,209,162, 69, 11,184,184,184,188,207, 61,179, 56,112,248,103,160,172, 22,249,167,131, 95,234,196, 74, 58,
- 61,214, 66,218,239,167,181,107, 44,199, 77,250,178,192,207,207,207,218,209,209, 17, 20, 69,161,107,183,110,164,197,137, 19,230,
- 2,133, 2,182, 13, 26,128,101, 89, 48, 12,131,139, 23, 46,224,204,153, 51, 5, 59,126,222,236, 60,252,179,207,122, 2,216, 86,
- 73, 5,178, 69, 35,122,164,165,165,193,201,201, 9, 60, 30, 15, 18,137, 4, 42,149, 10, 78, 78, 78, 16, 10,133,224,241,120,252,
-162,212, 47,149, 78, 59, 58, 57, 57,109, 15, 93, 16, 53, 61,190,225, 87,117,130,101, 20, 57, 86,144, 12, 10, 4, 70,150, 1,165,
-102,193, 48, 44,180, 6,160,190, 51,207,250,180, 22, 86, 55,238,159,122,234,228,228,180,189, 58,149, 20, 27, 27,123, 86,161, 80,
-140, 46, 40, 40,216, 7,128,186,118,237, 26,243,236,217,179,207, 77,117, 72, 47, 15, 82,169,116, 74, 88, 88,152,205,252,249,243,
-179,206,156, 57,147,211,161, 67, 7,203,208,208, 80,219,254,253,251, 79,129, 9,209,225, 85, 42,149, 90,169, 84,110, 75, 73, 73,
-249,188, 73,147, 38,200,204,204,132, 78,167, 67,100,100, 36,234,214,173,139,240,240,112,120,123,123,227,198,141, 27,240,241,241,
- 1, 77,211,208,104, 52,160, 77, 8,180,165,138,127,110, 38,211,102, 89,168,174, 31,197,163, 59,225, 56, 26,171, 45, 92,250,243,
-158,163, 13, 26, 7, 21,152, 42,124, 75,195,219, 81, 94, 95,105,111,123, 98,249,178, 69,230,137,215,143, 97,239,134,229,236, 31,
-135, 15, 7,138, 45,240, 73,139,247,198,245, 49,232, 81,139, 97, 33, 12, 14,110,137,158,129,247,137, 64,139,172, 63,194, 43,143,
-100, 94, 30,231,190,237,187, 2, 52, 64,253, 58,117,234,244,228,241,120,246, 0,244, 52, 77, 71,193,196, 20, 52, 21,149, 83, 3,
-212, 87, 40, 20, 61, 37, 18,137, 51, 33, 68,173, 86,171, 99,222, 4,167,135,135, 71, 79, 30,143,167, 4, 80, 72,211,116, 52,170,
-153, 42,167, 83,167, 78, 75, 55,111,222, 60, 89,171,213,218,150,178,182,146, 99,199,142, 65,167,211, 65, 36, 18,177,114,185, 28,
-241,241,241, 44,128, 36,150,101, 71,191,169,142,227,227,143, 63,198,181,107,215,230, 2,152, 93,217,126,153,153,153,124, 27, 27,
- 27, 99, 85,194,203, 84,206,235,215,175, 47, 30, 49, 98,196,148,227,199,143, 39,204,153, 51,167,241,208,161, 67,113,240,224, 65,
-184,186,186,226,209,163, 71,152, 60,121, 50, 8, 33, 30,203,150, 45,187,181,123,247,110, 69,114,114,242,247,220, 99,139, 3,135,
-127,148,200, 34,255,150,115, 41,215,201,157, 48, 68,224, 85,183, 46,173, 43,204,223,242,217,176, 97,163, 67,151, 44,145,249,249,
-249,193,104, 52, 66,115,227, 6,116, 18, 9, 44,191,253, 22, 20, 69,225,250,181,107,152, 48,126,124,190,166, 48,127, 83,237,218,
-238,254,132,101,229, 37, 60,229,100,219,214, 21,207, 5,226,229, 20,161, 90,173,134, 80, 40,132,153,153, 25,210,210,210, 32, 18,
-137, 32,149, 74,209,168, 81, 35, 42, 55, 55, 55, 4,192,111,175,148,173, 12,103, 68, 68,132,193,217,217,185,247,111, 67, 38, 30,
-237,188,109,133,211, 72,171,218,228,146, 58, 3,105,180, 22, 44, 0,123,115, 10, 94, 78, 20, 12, 5,169,236,221, 45, 3,146,136,
- 49,167,119, 68, 68,162,161, 50,206,178, 80, 42,149,245,234,215,175,191,166, 75,151, 46, 20, 0,180,110,221,154,146,203,229, 63,
- 42,149,202, 40,149, 74, 85,174, 51,114, 85,156, 18,137, 68, 12, 0,167, 78,157,202,188,124,249,114, 8, 77,211,135, 7, 12, 24,
- 96, 93,252,187, 41,156, 20, 69,253,180, 97,195,134,207,151, 46, 93,138,212,212, 84,232,116, 58,104,181,218,114,173, 87, 78, 78,
- 78, 56,125,250, 52, 24,134, 57, 82, 85, 57,125,253, 27,230,111,227, 91,165,108, 61,244,135, 99, 38, 35,201, 95,250,243,158,227,
-213, 17, 87,165, 57,235, 43,204,188,157,237,109, 79,124,191,116,145,121,198,131,171,120,124, 55, 28, 71,175, 39,222, 82,179,108,
- 34,128,133, 69, 47,180, 15, 36,113, 39,246, 77,183, 71,108, 8,142, 95, 1,251, 26,156,137, 0,142,191,225,114,190, 51,156, 97,
- 43,125, 74,210,203,204,154, 53,235,198,172, 89,179,250, 86,248,199, 7,190,231,225,123,151,212,164,125, 86,114, 47, 64, 85,228,
-225,174, 82,169,230, 0,152, 83, 46,167,239, 3,178,166, 39, 97, 1, 84,185,146,208,100, 78, 0, 69,233,111,214,244,232,209,227,
-121,113, 40,134,125,251,246, 97,254,252,249,216,181,107, 23,178,178,178,208,178,101, 75,184,184,184, 56, 92,191,126,189,206,155,
- 60,119, 83,175, 17,199,201,113,114,156, 28,128, 10,156,220, 9, 97,104,154,102,224,224,232, 96,158,150,154,186,122,236,216, 49,
- 25,243,230,205,211,156, 63,127, 30,186,135, 15,161,137,140,196,233,211,167, 49,113,226,196,194, 81,163, 71, 39,105, 10,243, 87,
- 58, 57, 58,216,209, 52, 3, 66,152, 74, 45, 36, 20, 69,197,198,196,196, 0, 0,180, 90, 45,126,252,241, 71,131, 94,175,135,133,
-133, 5, 88,150,197,198,141, 27, 25, 0,232,216,177,163, 92, 32, 16,152,148,130, 36, 49, 49,241, 78,110,188,170,243,175,253,199,
-196, 62,216,253,123,110,131, 12, 29,250, 74, 20,248,160, 1,139, 58,146,231,120,113,245,231,156,171,235, 63,138, 45,204,138,239,
-146,152,152,120,167,186,149,228,228,228,244,237,206,157, 59, 29, 34, 34, 34, 88,173, 86,139,196,196, 68,118,202,148, 41, 14, 78,
- 78, 78,223,190, 78,251,204,206,206, 6, 69, 81, 76, 81,189, 20,175,165, 55, 89,189, 39, 36, 36,220,219,183,111,223,111,103,207,
-158,133,139,139, 11,104,154, 46, 17, 88,165,223,249,124, 62, 8, 33, 88,191,126,125, 54, 33,100, 70, 85,188, 34,145, 8, 27,246,
- 30, 61,246,213,186,253,123,247,158,190,177,191,166,150, 43, 0,144,153, 91,204,255,126,233, 34,203,226,169,198,157, 17,170, 92,
- 66,179,229, 79,213,233, 19, 95,182, 17, 2,246,141,113,254, 21,229,124,139,156,111, 19, 69, 66,136, 40,149, 74,252,250,235,175,
-213,246,193,242,171, 67,254,207,185,189,166,156,247,238,221, 91,212,183,111,223,148, 57,115,230,172,213,104, 52, 5, 69,131, 55,
-253,247,223,127,191,108,220,184,113, 41,137,137,137,156,229,138, 3, 7, 14,239,158, 5,139,225, 81,151,215,111, 88,215,109,207,
-174,221, 78, 60, 30,229,244,244,233,179,155,159,124,250,105,226,133, 11, 23,108, 4,117,235, 54,165, 40,138,209, 77,159,126, 53,
- 63, 55, 39,115,251,150,159,221,106,215,118,111, 84,148,236,153,101,120,212,229,202, 14,152,153,153,185,117,210,164, 73, 77,183,
-109,219, 38, 92,186,116,105, 65, 98, 98,226,201,235,215,175,119, 91,187,118,173,100,227,198,141,133, 57, 57, 57,135,142, 30, 61,
-218,171,125,251,246, 70,157, 78,103,114,124,161,148,148,148, 40, 66,136, 15,181,124,227,192,232, 13, 59, 58,179, 60,170, 37, 52,
- 66, 16,150,190, 66, 25,243, 79,166,170, 84, 59, 89,150, 53,214,164,146, 36, 18, 73, 35,169, 84,138,199,143, 31,103, 53,109,218,
- 84, 39, 18,137, 4,238,238,238,182, 18,137,164,209,107,152, 65,217,172,172, 44,176, 44,203, 7, 64,104,154,230, 3, 0, 83, 85,
-208,162, 50, 16, 10,133,253,135, 15, 31,254,219,218,181,107, 59,119,236,216, 17, 30, 30, 30, 48, 24, 12,240,246,246,134, 78,167,
-131,151,151, 23, 52, 26, 13,126,248,225, 7,228,231,231, 79, 78, 76, 76,204,170,140,143, 97, 24,136,197, 98,136, 68, 34,120,251,
-250, 23, 74, 36, 18,212, 84, 92, 1,128, 92,132, 58,241,215,142,224,241,221, 8,236,137, 76,202, 46,208, 51, 93, 31,165, 22,220,
- 47,187, 95,161, 14, 5,237,187,142,121, 41,188, 13,200,127, 19,156,127, 69, 57,223, 54,103,159, 73, 15,209,238, 67,211,247, 13,
- 59,253,102, 58, 10,149, 74, 85,237, 70, 16,245,148, 37,120,224,203,226,193,234,114, 99, 92,213,132,179, 24, 69,233,111,214, 3,
-128,139,139,203,147, 9, 19, 38, 76, 73, 76, 76, 92, 81, 20,239,106, 54,215,181,115,224,192,225,157, 20, 88,177,177,241, 81, 30,
- 30,181,190,222,255,235,190, 86, 44, 75,241, 88, 66, 10, 0,234,247,251,247,239,103,151,222,207,211,198,198,124,248,136,225,253,
- 8, 67, 4,132, 48, 52,195,163, 46,199,198,198, 71, 85, 97,109,186, 59,100,200,144,213,237,219,183,255,148,166,233, 37, 49, 49,
- 49, 39,189,189,189,111,117,237,218,245, 43,163,209,184,236,201,147, 39, 39,125,124,124, 78,237,217,179,103, 42, 77,211,213,178,
- 16, 21, 9,168,109,168,196, 7,172,134,152, 7,192, 82, 44, 22,231,132,135,135,239, 14, 14, 14,238, 79, 8,177, 4,144, 83, 83,
- 66,173, 86, 59, 33, 47, 47,207,174, 95,191,126, 6, 0,222, 31,126,248,225,140,152,152, 24, 65, 65, 65, 65,108,117,120,226,226,
-226,180,238,238,238,189,198,142, 29,187, 73, 40, 20,118, 44,178,128,177,165,234, 4, 44,203,130,166,233, 67, 42,149,170,210,122,
- 17, 8, 4,249, 61,122,244, 48, 51,193,194,149,111,106,249,146,211,243, 38, 44,216,122, 52, 84,107, 96, 24, 35,195,142,126,148,
- 82, 80,238, 18,178, 27,247,217,250,111,154,179, 58,248,167,112, 2,192,152,214,171,119,224,193,234, 18,135,247,226,208, 13,101,
-191,255, 85, 40,178, 56,177, 0,230, 86,185,115,145,197,170,170,220,133,213,226, 44,131,162, 85,130,220, 74, 65, 14, 28, 56,188,
- 83, 32,127,101, 40, 39,110,126,154,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,255, 34, 40,174, 10, 56,112,224,192,129, 3,
- 7, 14, 28,222, 44, 8, 0,255,242, 54, 84, 71,153, 18, 66,252,171,123,224,170,248, 57, 78,142,147,227,228, 56, 57, 78,142,147,
-227,252,247,113, 86,197,253,111,177,140,113, 83,132, 28, 39,199,201,113,114,156, 28, 39,199,201,113,190,117,206,127, 27,184, 41,
- 66, 14, 28, 56,112,224,192,129, 3, 7, 78, 96,189,125, 16, 66, 62, 33,132, 28, 39,132,220, 35,132,156, 32,132,124,242, 26, 92,
- 82, 66,200,244, 82,124,199, 8, 33, 83, 9, 33, 98,174,166,223,233, 54,192,227,106,129,195,187, 4,165, 82, 89,207,207,207, 47,
- 66,169, 84,214,227,106,131, 3,135,183, 15,126, 69, 27, 60, 61, 61,175, 80, 20, 85,135,162,168,226, 7, 74,233,135, 75,185,239,
- 44,203, 62,141,138,138,106, 89, 17,103,157, 58,117, 74, 56, 41,138, 2, 33, 4, 20, 69,193, 96, 48,152,243,120,188,188,242, 56,
-105,154, 78,120,244,232, 81,208, 59,244, 96,221, 97,109,109,109, 88,187,118,237,154,128,128,128,186,153,153,153, 5, 35, 71,142,
-236, 66, 8,233,196,178,236,224,106,114,249, 19, 66,182, 55,105,210,100,255,184,113,227,194,252,252,252,204, 11, 10, 10,196,123,
-246,236,113, 90,191,126,253, 69, 66,200,112,150,101,163,184,102,250,238, 64,161, 80, 4, 16, 66, 86,123,121,121, 5, 41,149,202,
-155, 0, 62, 87,169, 84,183,185,154,249, 91,239,193,207, 68, 34, 81, 87, 47, 47,175,166, 90,173, 54,235,233,211,167, 55,104,154,
-254,150,101,217,228, 55,196,111, 9,224, 91,177, 88,220,204,211,211,179, 86, 76, 76, 76,188, 94,175,191, 14, 96, 30,203,178, 57,
-239,170,184,106,214,172,217,165,133, 11, 23,218,206,152, 49,227,146, 82,169, 12,174, 40,203, 4, 7, 14,165,225,234,234,106, 85,
- 80, 80,176,137,162,168, 0,137, 68,226,100,110,110, 14, 51, 51,179,100,177, 88,124, 75, 38,147,125,122,228,200,145,108,174,150,
-222,176,192,226,241,120, 46, 55,110,220,112, 48, 55, 55, 7, 77,211, 96, 24, 6, 12,195,148,228, 31, 44,237,187, 85, 20,103, 9,
-237,219,183,175, 52,155, 48,159,207,175, 21, 17, 17,225, 96,102,246,103,168, 37,189, 94,143,134, 13, 27, 50,145,145,145, 14,101,
- 19, 9,235,116, 58, 4, 6, 6,178,239, 74,101, 17, 66, 6,217,218,218,234,158, 63,127,209, 66,163,213,183, 28, 59,101,254,183,
-253,222,111,107,121,245,234, 85,170,103,207,158, 2, 66,200, 39, 44,203,110, 55,145, 75, 74, 8,217, 60,115,230,204, 69,124,161,
-204, 97,223,209, 43,252, 31, 55,236,140,247,247,173, 77, 38,141, 31, 43,155, 48, 97,194, 13, 31, 31,159,159, 9, 33,173, 89,150,
-213,114, 77,245,157,184,254,252, 90,181,106,253, 22, 26, 26,234,156,156,148,132,229, 43, 86, 52, 7,176, 22, 64,115,174,118,254,
-182,107, 48,125,238,220,185,161, 3, 7, 14,132,209,104,132, 90,173, 86, 62,121,242,164,254,204,153, 51, 63, 36,132, 52,101, 89,
- 54,246, 53,249,237,189,188,188, 30, 78,154, 52,201,166,105,211,166,160, 40, 10,217,217,217,202, 75,151, 46, 53,223,188,121,243,
- 39,132, 16, 31,150,101,211, 94,131,159,178,181,181,157, 0,160, 61,195, 48, 98, 0,215,179,178,178, 22,176, 44,171,127,157,114,
- 91, 91, 91,255,178,108,217, 50, 91,177, 88,140, 45, 91,182,216,246,237,219,247,162, 82,169,108,205,137, 44, 14,149,193,206,206,
-238,179,188,188,188, 53, 50,153, 76,104,101,101, 5,169, 84, 10,161, 80, 8,145, 72,228,106,109,109,237,106,102,102,214,125,192,
-128, 1,159,239,218,181,107, 19, 87, 91,111, 80, 96, 81, 20, 5,169, 84,138, 61,123,246,128,199,227, 65, 40, 20, 66, 32, 16, 64,
- 32, 16,188,242,185,248,123,173, 90,181, 76,233, 92, 0, 0,135, 14, 29,130,165,165, 37, 44, 44, 44,224,235,235, 11, 66, 8,196,
- 98, 49, 78,159, 62,253, 10,111, 80, 80,208,107, 69, 17,175, 9,250,116, 34, 44, 80,126,240,198, 30,109,204,208,115,224,194,143,
- 11,181,134, 54, 44, 75,212,201, 89,134,204,121, 75,215, 68, 53,174,239, 75,246,238,221, 27,104,103,103, 55, 0,128,169,137,164,
- 39, 54,109,218,244,144, 17, 34,199,225, 67,135, 13, 29, 70, 17,227, 71,195,190,156,123, 41,242, 73,214, 38,191,128,157,105,105,
- 9,163,127,252,241,199,232,177, 99,199, 78, 0,176,196,212,242, 55,105,210,228, 5,195, 48,181,138, 68,114,186, 84, 42, 85,156,
- 59,119,206,248,182, 27, 26, 33, 68, 9, 96, 41, 0, 3,128,197, 44,203, 62, 44,181,173,158, 80, 40, 92,162,215,235, 51, 1,204,
-102, 89, 54,254, 93,188, 89,156,157,157,125, 6, 15, 30,108,151,145,150,134,229, 43, 86, 20,255, 28,100, 74, 82,242, 55,141,192,
-192,192, 58, 18,137,100, 41,128, 0,173, 86,235, 12, 0, 82,169, 52,145,101,217, 3,106,181,250,155,136,136, 8,117, 13,175, 83,
- 45, 0,245, 81,113,202, 38,118,201,146, 37,209, 83,166, 76,121,250,119,115, 18, 66,220, 29, 29, 29, 23,246,233,211, 7, 71,142,
- 28,193,209,163, 71, 13, 18,137,132, 63,116,232, 80,242,249,231,159, 91, 79,154, 52,169, 59,128, 31, 94,179,106,187,207,157, 59,
-215,198,215,215, 23,251,246,237,195,237,219,183,213,245,234,213,147,182,109,219, 22, 60, 30,207,230,155,111,190,233, 6, 96,107,
- 53,235, 84, 12, 96, 2,128,246, 60, 30,175,245,208,161, 67,141,227,199,143, 23, 80, 20,101, 88,185,114,165,253,166, 77,155,250,
-217,217,217, 5,164,167,167,231,215,180,208, 89, 89, 89, 11,230,207,159,191,109,245,234,213,230,177,177,177,152, 59,119,174,221,
-184,113,227,206, 43,149,202,182,156,200,170, 24, 60, 30, 79,207, 48,140, 0,128,132,101, 89,109, 85,223,255, 77,231,110,107,107,
- 59, 38, 43, 43,107,173, 82,169,132,189,189,125,201,179,150, 97, 24, 20, 20, 20, 64,173, 86,163, 78,157, 58, 66, 95, 95,223,141,
-227,198,141, 19,172, 94,189,122, 29,215, 98,170, 41,176, 8, 33,109, 89,150, 61, 95,170, 51,104,203,178,236,121, 66, 8, 24,134,
-129, 64, 32, 0,143,199, 3,159,207, 47, 17, 62,165, 63, 23,191,202, 19, 66,101, 87, 24, 80, 20, 69,242,242,242, 74,196,149,165,
-165,101,137, 37,204, 96, 48,252, 31, 39, 77,211,160, 40,138,173,140,243, 77,160, 52,103,216, 74, 31,108, 13,159,210,127,107,248,
-203,239,221, 6,190,124,223, 26, 14,156,190, 62,122,233,146,117,173,106, 77, 92,176, 37, 52, 35, 35, 59,213,207,197,222, 56, 96,
- 96, 91, 55, 81,122, 74,186,109,237,218, 33, 0, 82,171, 81,206,224,209,163, 71,239,219,119,246,177, 92, 44, 22,137,120, 20,120,
-245, 60,234, 8,156, 45,234,218,216,119,105, 42,138,139,141,189,248,201, 39,159,140, 30, 59,118,172,109,177,192, 50,229,220, 89,
-150, 85,156, 60,121, 18,124, 62, 31,157, 58,117,178, 46, 18,209, 70, 83,206,253,175,168,207, 82,152,153,146,146,210, 95,163,209,
- 32, 40, 40,232,125, 66, 72,123,150,101,111, 17, 66, 26,244,234,213,235, 98, 88, 88,152,121,100,100, 36,154, 55,111, 46, 5,208,
-247, 45,150,243,255,160, 84, 42, 79, 2,120,143,199,227, 65,167,209,232,150,126,255, 74,154,187,240,210,226,234,239, 40,103,227,
-198,141,125,100, 50,217,149,239,191,255,222,194,207,207,143, 8, 4, 2, 24,141, 70,196,196,196,212,218,177, 99,199,168,155, 55,
-111,118, 11, 12, 12,244,139,136,136, 48,212,224,220,235, 95,188,120,177,192,195,195,163, 92,193, 88, 88, 88,200,243,240,240,104,
- 7,224,233, 91,224, 76, 72, 73, 73,249,224,189,247,222, 27,157,156,156,252,208,104, 52, 78, 3,224,111,103,103, 23,249,241,199,
- 31, 67, 42,149,182, 55, 69, 96, 85,118,141, 28, 28, 28,122,181,108,217, 18,171, 87,175,198,226,197,139, 59,177, 44,251, 7, 33,
-164, 99,110,110,238,233,247,223,127, 31, 86, 86, 86, 31,148, 39,176, 42,226, 36,132,248,137,197,226,173,187,118,237, 50,243,240,
-240,240, 16, 10,133,148,135,135, 7, 50, 51, 51,161,209,104,196, 11, 22, 44,104, 32,145, 72,110,255,240,195, 15, 91, 1,124, 84,
-195,246, 89,175,105,211,166, 27, 39, 79,158,108,126,248,240, 97,120,121,121, 33, 55, 55, 23,195,135, 15,119, 88,181,106,213, 57,
-165, 82,217,174, 88,100,253,221,247, 17, 33, 36, 7,128, 5, 0,171,234, 76,175, 86, 82,159, 57, 0, 74,252, 83, 5, 2, 1,196,
- 98, 49, 36, 18, 9, 36, 18, 9,158, 62,125,250, 43,143,199, 27, 86, 52,144,171,146,147,252,249,224,106, 68, 8,185,193,227,241,
- 42,253,206,178, 44,243,182,251, 37, 66,136, 11, 33,100, 37,128,246,120,233, 71,125,222,193,193, 97, 98,114,114,242,115, 83, 57,
-149, 74,165,109,126,126,254, 15, 74,165, 18, 14, 14, 14,197, 98, 19, 65, 65, 65,208,104, 52,184,127,255, 62, 24,134,193,147, 39,
- 79, 96, 97, 97,129, 6, 13, 26,252, 48,119,238,220,125,179,103,207,206,248,171,206,189, 34, 45,242, 79,183, 96,157, 43,106,103,
-197, 39,115,174,120,164, 73,211,116,137,192, 42, 43,126,202, 10, 46, 66, 8, 88,150, 37, 85, 84, 32,165,211,233, 74,196,149,133,
-133, 69,137, 56, 51, 26,141,229, 10,172,154,194,218,218,250, 68,118,118,246, 10,150,101, 79,214,228,255, 67,135, 14,253, 63,127,
-142,233,211,167,199,167,165,165,209,189,130,235,137,183,111, 63,146,241, 73, 72, 59, 39, 63, 79, 23,111,185,173, 67,163,194,194,
-194,155, 0, 4,213, 49,136,248,249,249,153,175,219,117, 62,117,224,132,165,243, 92, 28,205,232, 38, 94,142, 22,158, 54,114,145,
-173,132,111,180, 98,141,217, 50,153,172, 62,128,140,234,150,221,210,210, 18,135, 14, 29,122,215,218,154,181, 90,173, 70, 86, 86,
- 22,214,175, 95,111, 49,122,244,232,179,132,144,137,189,122,245, 90,189,111,223, 62,121,118,118, 54,244,122, 61, 0,168,223,193,
-251,100,190,181,181,117,155,246,237,219,139,118,239,221, 43, 98, 89,182, 0, 47,211, 17,229,179, 44, 59,238,239, 46,140, 68, 34,
-249,106,193,130, 5, 22,126,126,126, 36, 61, 61, 29, 44,203,130,162, 40,216,217,217, 97,202,148, 41,146,111,190,249,198, 57, 58,
- 58,250,107,212, 32,237, 12, 0, 82,145, 16, 2, 0,153, 76, 70,163,250,139, 99,202,229, 52, 26,141,164, 85,171, 86, 83,210,211,
-211, 27,168,213,234,239, 76,120,240, 24, 1, 28, 42,122, 21,247, 41,183, 31, 62,124,168,230,243,249,210,218,181,107, 55,123,221,
-186,173, 87,175, 94, 11,129, 64,128,235,215,175,107, 1, 20,119,238,231,239,220,185,163,253,232,163,143,196,181,106,213,106, 81,
- 29,203,149, 88, 44,222,250,248,241, 99,111,133, 66, 33,189,118,237, 26, 26, 54,108,136,244,244,116, 36, 39, 39, 35, 63, 63, 31,
-201,201,201,248,244,211, 79, 29,150, 47, 95,174, 48, 85, 76,121,122,122,158,178,179,179,147, 22,167,193,234,209,163,135, 96,201,
-146, 37,230, 9, 9, 9, 48, 26,141,152, 49, 99, 6, 66, 66, 66, 96,109,109,141, 97,195,134, 57,110,220,184,241, 23, 0,129,111,
-249, 30,202, 22, 8, 4,144,203,229, 86,217,217,217, 57,175,193, 35, 6, 32, 2, 0, 62,159, 95, 34,174,196, 98, 49,196,226,127,
-255,186, 32, 66,136, 51, 33, 36, 74, 32, 16,136,229,114,185,144,162, 40,200,229,242, 46, 46, 46, 46,247, 63,249,228, 19,255,237,
-219,183,199,153,194,163,209,104,182, 75,165, 82,129,189,189, 61, 0,160,115,231,206, 24, 58,116, 40,210,210,210, 24,149, 74, 5,
-111,111,111,234,252,249,243, 72, 73, 73,193,237,219,183,209,164, 73, 19,129,141,141,205,118, 0,221,254,194,211,171, 80,139,252,
-147, 5,214, 43, 39, 87,122, 35,195, 48,175,136,171,242, 44, 87,165, 45, 88, 85, 77,231, 17, 66, 64,211, 52,156,156,156, 32,147,
-201, 32,147,201, 74,182, 21,139,185,210, 47,150,101,107, 60, 69, 88,183,110,221, 14, 50,153,172, 53, 33,228,125,150,101, 77, 78,
-121,219,103,210,195, 18,171, 85, 89, 52,106,212,232,202,140, 25, 51,186,158, 57,115, 38,171, 69,195, 58,140, 88, 21,159, 33,179,
-182,107, 72,236, 29, 58,141, 29, 49,242, 42,128, 93,213, 40,162, 74,163,209,136,221,157, 40,181, 42, 39, 87, 87,199,194,210,170,
-142,165,153,204,221,206,210,214, 90, 34,162,228,142, 14, 74,131,193,144, 13, 64, 85, 21, 81,233,105, 65,137, 68,162, 35,132,240,
-173,172,172, 96,105,105,169,207,202,202,210, 4, 6, 6, 66, 36, 18,165, 11,133, 66,147,167, 11,155, 54,109,154, 66,211,180, 67,
-101,251, 8,133,194,212,171, 87,175, 58,154,120,190,223, 52,106,212,168,237,218,181,107,237,189,188,188,176,126,253,122,139,125,
-251,246,109,253,229,151, 95,144,157,157,141,103,207,158, 97,248,240,225,185,120, 57,141,248, 78,193,198,198,230, 82,239,222,189,
-177,105,211, 38,182,104, 16, 33, 39,132, 52,180,180,180,124, 20, 21, 21,165,255,187,203, 67, 81, 84, 23,111,111,111,146,147,147,
- 3,150,101,193,227,241, 94,121, 77,153, 50, 69,250,233,167,159,206,108,209,162,197, 20,129, 64,144,107, 52, 26,119,231,231,231,
-127,119,239,222,189,119,202, 89,181,117,235,214, 95,196,199,199,135,184,185,185,253,254, 26,163,125,182, 73,147, 38, 58,150,101,
-165, 60, 30, 79,240,186,101, 42, 94, 29, 74,211,180,166, 56, 57, 60,203,178,198,192,192, 64, 77,209,195,189, 58,171, 71, 39,132,
-133,133,153, 43, 20, 10,169, 90,173, 70,108,108, 44, 2, 3, 3,145,151,151,135,130,130, 2, 20, 22, 22, 66,175,215, 35, 39, 39,
-199,138,166,105,157,137,109,241,151, 29, 59,118,184,184,184,184,192, 96, 48,192, 96, 48,160,160,160, 0,231,207,159,135, 86,171,
- 45, 73,244,190,104,209, 34,205,231,159,127, 46,217,187,119,111,170, 90,173, 30,244,182,175, 53,143,199,131, 88, 44,134, 64, 32,
-200,118,117,117, 5, 69, 81,146,184,184,184,154, 76,185, 89, 0,200,229,243,249,162,210,194, 74, 34,145,224,222,189,123,123, 42,
-178, 94, 85,214,126,170,243,253, 29, 16, 88, 43, 5, 2,129,216,214,214, 86, 88,252,155, 94,175, 23, 90, 91, 91,195,205,205,109,
- 53,128,238, 38,242, 52,182,181,181, 5, 33, 4, 66,161, 16, 35, 70,140,192,141, 27, 55, 14, 36, 36, 36,124,146,154,154,138,252,
-252,252,237, 22, 22, 22, 31,166,166,166,130,166,105,196,197,197,161, 81,163, 70,141,255,166,211,252,199, 11,171, 87, 4, 22, 33,
-164,109,233,247, 98, 49,196,178,108,149,150,171,202,166, 8,203, 66,175,215,155,133,132,132, 48,197, 98,172,120, 21, 33, 0, 66,
-211, 52,132, 66,225, 43,156, 69, 2,171, 70, 13, 92, 44, 22,163,123,247,238, 18,153, 76,118,176, 72,100,157,169,105, 37, 29,218,
-183,211,113,201,236, 25,179,109,148,181, 61,191,254,250,107,126,183,110,221, 78,239,222,189,187,137, 93,112,135,174, 23,254,216,
-227,184,126,218,161,223,247,236,217,147,103,170,131,123, 17, 46, 31, 56,112, 64,241,213,248,177,194,182,109,219,254, 58,164,193,
-100,190, 66,196,152,219,136,133, 60, 25,143, 79,137,107,185,119,253,227,252,133, 36, 0, 23, 76,232, 36, 20,167, 79,159,134,149,
-149, 21, 0,136,116, 58, 29,172,172,172,176,126,253,122,137,133,133, 5, 44, 44, 44,208,178,101, 75,107,161, 80, 88,233,116, 97,
-105,208, 52,237,112,238,220, 57,152,153,153,161,160,160, 0, 90,173, 22, 70,163, 17, 44,203,150,140, 28,219,181,107,231, 80,141,
-142, 44,150, 16,210,102,236,216,177, 23,214,174, 93,107,239,233,233,137,121,243,230, 33, 35, 35, 3, 47, 94,188,192,160, 65,131,
-114,159, 62,125,218,190,180,111,214,187,128, 6, 13, 26,176,151, 47, 95,198,177, 99,199,208,179,103, 79,114,232,208, 33, 61, 77,
-211,194,196,196,196,187,111,171, 76, 70,163,209, 92, 36, 18,193, 96, 48,128,207,231,151, 76,225, 23, 11, 44,103,103,103,156, 58,
-117,138, 95, 88, 88,200,207,200,200,144,109,222,188,121,124,120,120,184, 2,192,128,183, 89,151,235,214,173,115, 27, 49, 98,196,
- 11, 62,159,207,118,237,218,117,240,243,231,207, 63, 80, 40, 20,127,156, 61,123,246,123, 0,213, 14, 45,224,239,239, 31,206,227,
-241, 92, 0, 8, 15, 30, 60,104,160,105, 90,216,160, 65,131,148, 98,203, 78,241,179,209,104, 52, 38, 68, 71, 71, 7,153,194, 39,
-145, 72,132, 63,253,244,147, 65,163,209, 8, 27, 54,108,152, 82,138, 71,248,219,111,191, 25, 12, 6,131,208,219,219, 59,220,196,
-149,205,237,154, 53,107,230,150,157,157, 13, 75, 75, 75,228,231,231, 35, 60, 60, 28,126,126,126, 80,169, 84,160, 40, 10, 86, 86,
- 86, 88,183,110, 93, 33, 33, 36,211,148,115,206,204,204, 28, 52,105,210,164,139,123,246,236,177,227,241,120,120,254,252, 57, 50,
- 51, 51, 97,101,101,133, 29, 59,118,192,221,221, 29,167, 79,159,206,164,105,250,179, 77,155, 54,205, 84,171,213,131,222,182, 15,
- 22, 69, 81, 37, 66,168,148, 32,210, 52,111,222, 28,151, 47, 95,222, 89, 29, 81,196,178,172,174,120, 90,176,244,212,160, 88, 44,
- 6,143,199,171,246,148, 7, 77,211, 66, 66, 72, 99,252, 57,107, 83,233,247,119, 0,109,229,114,185,176,236,143, 89, 89, 89, 66,
-111,111,239,214,213,120, 62,218, 74,165,210,151,132,109,219, 34, 53, 53,149,246,240,240,232,215,183,111, 95, 3, 0,140, 26, 53,
-170, 95, 90, 90,154,198, 96, 48,240,248,124, 62,210,210,210, 80,167, 78, 29,219,191, 65, 64,254,159, 22,249, 71, 11, 44,150,101,
- 9, 33,132, 45,253, 94,218,130, 85,149,229,170,120, 91,177, 80,170,226, 70,203,142,136,136,144,203,229,242,146,223, 12, 6, 3,
- 26, 55,110,204, 48, 12, 67,202, 30,235,117, 44, 88, 98,177, 24, 86, 86, 86, 24, 48, 96,128, 44, 49, 49,113, 43, 0, 23, 83,254,
-247,210, 7,235, 85,113,181, 97,241,188,213, 63, 46, 89, 96,251,228,216, 22,108, 90,181,140,150,203,205, 34, 27, 53,106,212, 38,
- 39, 39, 71,107, 37,215, 34, 57, 3,251, 88,150,253,165, 26,141,136, 2,176,231,234,213,171,183, 58,119,238,124,245,217,179,103,
-214,207, 31, 63,190,100,161,203,207, 55,171, 85,219, 40,116,112,236,165,214, 27,248,189,123,247,118, 4,176,202, 4, 62, 48, 12,
-131, 35, 71,142,192,220,220, 28, 22, 22, 22,176,178,178, 66,177,184,170, 41,158, 62,125,138,132,132, 4,200,229,114,200,229,114,
-152,153,153,193,204,204, 12, 34,145,232, 21,235, 99, 53, 68, 86, 52, 33,100,226,254,253,251,119,135,134,134, 34, 43, 43, 11, 5,
- 5, 5,152, 61,123, 54, 98, 99, 99, 39,177, 44,123,235, 93,186, 57, 26, 54,108,200, 94,189,122, 21,151, 46, 93, 66, 65, 65, 1,
- 86,175, 94, 13,133, 66,209, 1,192,172,183, 89, 46,134, 97,132,197,161, 78, 40,138,250, 63, 11, 86,177,216,146, 74,165,176,179,
-179,195,140, 25, 51,132,189,122,245, 10,121,155,101, 94,178,100, 73,221,149, 43, 87,110,222,182,109,219,177, 65,131, 6,237,189,
-119,239,222, 48, 75, 75,203,187,103,206,156, 89, 32, 22,139,153, 26,117, 94,124,190,203,173, 91,183, 74,139,124, 1, 77,211, 50,
-154,166, 97, 52, 26, 97, 48, 24, 80, 88, 88,136, 78,157, 58,153,204,119,227,198, 13, 25, 0,204,154, 53, 75, 0, 64,198, 48, 12,
- 74,243,169,213,106, 65,199,142, 29, 93, 76, 44,162,210,218,218, 90,240,226,197, 11, 24,141, 70, 4, 4, 4, 96,221,186,117,232,
-219,183, 47,234,215,175,143,188,188, 60, 68, 69, 69, 97,235,214,173,214, 66,161,240, 99,147,204,222, 42, 85,180, 82,169,108,221,
-175, 95,191, 43,187,119,239,182,118,115,115, 67, 66, 66, 2, 84, 42, 21, 60, 61, 61,177,106,213,170, 2,150,101, 91, 21,137,170,
-223,222,246, 61, 68, 81, 84,137, 8, 42,239, 85,195, 1,134,133, 68, 34,201,149, 72, 36,162, 98,161,117,243,230,205,106, 91,175,
- 74,245, 75,183,170,243,253,109,162,184, 15, 54, 24, 94, 61, 77,185, 92, 14, 47, 47, 47,147,121,228,114, 57, 41,126,198, 26, 12,
- 6, 36, 37, 37,209,247,238,221,163, 3, 2, 2, 0, 0, 10,133,130,190,118,237, 26,173,213,106,121,230,230,230, 0, 0, 43, 43,
-171,191, 84,100, 86,166, 69,254,209, 22,172, 82, 86,146, 11,101, 45, 88,197,130,167, 50, 39,119, 62,159,111,170,192, 2,143,199,
-195,241,227,199, 97,102,102, 6,115,115,115,248,248,248, 20, 87,110,185, 86,177,154, 10, 44,145, 72, 4, 75, 75, 75,156, 60,121,
- 82,115,251,246,237, 17, 53,181, 92,109, 88, 60,111,245,162,239,230,218,102, 60,184,138, 4, 85, 18, 50, 82,244,225,151,239,197,
-157, 0,112, 2, 0,240,192,247, 60,124, 31,152, 44,174,124,237,101,141,154,123, 57,253,214,254,189,174,206, 31, 12, 25, 75,125,
-254,249,231, 45,134, 14, 29,154, 57,120,240,224, 9, 82,169,180,190,209,104,204, 58,125,254,124, 92,159, 62,125,108,115,114,114,
-134,178, 44, 91,165, 79, 18,143,199, 75,234,220,185,115, 45, 0, 48, 55, 55,215,253,252,243,207, 34, 43, 43, 43, 12, 28, 56, 80,
-147,156,156, 44, 41,170,143, 44, 83,173, 87, 69, 15,155,212,207, 62,251,204,161,138, 58, 78,173,230,232,164,113, 72, 72,200,198,
- 61,123,246, 32, 35, 35, 3, 5, 5, 5, 16, 10,133, 88,186,116, 41, 94,188,120,241, 3, 33,228,222,187,210,153, 53,106,212,136,
-189,126,253, 58,238,222,189, 11,173, 86,139, 17, 35, 70,148,246, 49,236,252,182,103, 10, 18, 19, 19,177, 99,199, 14,208, 52,141,
- 65,131, 6,193,221,221,189, 68, 96, 37, 39, 39,227,231,159,127, 6, 77,211,248,236,179,207,224,234,234, 10,131,193, 32,105,215,
-174, 29,255,109,173, 40,157, 60,121,242,147, 3, 7, 14, 28,139,143,143,239,182,120,241,226,182,132, 16,102,202,148, 41,139, 44,
- 44, 44, 94,107,245,101, 86, 78, 30, 30, 61,126, 14,163,209, 88,238,203,222,206,166,218,124, 49,177, 47, 96, 52,210, 37, 28, 52,
-253, 39,159,173, 77,181,248, 18, 51, 51, 51,189,120, 60,158,240,241,227,199,112,115,115, 67,211,166, 77,177,112,225, 66,164,165,
-165,193,104, 52,194,193,193,129, 49, 24, 12,145, 58,157,238,130,169,164, 73, 73, 73,133, 25, 25, 25, 5,159,125,246,153,213,198,
-141, 27,137,151,151, 23,158, 61,123, 6,129, 64, 0,115,115,243,194,135, 15, 31,190, 51,171, 6,203, 90,174,138, 95, 69,150, 43,
- 10,192,239, 0,170, 37,176, 89,150,213,213,170, 85,235, 21,255,171,154, 88,175,254, 42,252,149, 43, 19,189,188,188,206, 91, 88,
- 88,132, 60,124,248,240, 21, 43,214,128, 1, 3,244,158,158,158, 23, 77,229,177,176,176,200, 18,137, 68,182, 26,141, 6, 87,175,
- 94,133,143,143,143, 48, 39, 39, 39,148, 16, 50,189,104,112, 25,154,146,146, 34,116,118,118, 6, 0,120,123,123, 35, 39, 39, 39,
-203,148,104, 1,175,137,255,211, 34,255,120,129,197,178,108,219,210,239,165, 26,178, 73,211,131,165, 44, 88, 85, 90, 90,212,106,
-117,137, 69, 68, 46,151,131, 97,152, 87,166, 35,203, 10,172,178,171, 8,171,115, 99,159, 61,123, 86,179, 97,195,134,222, 44,203,
-158, 48,245,127,165,125,176,126, 90,190, 96, 73,177,184,186,115,233, 20,126,123,152,147, 62,101,225,242,149, 53,173,108, 63,123,
-121, 67, 39, 71,187,115,203,151, 46,178, 72,188,126, 12,123, 55, 44,103,239,220,184,209,100,204,141, 27, 31,143, 25, 51,198, 6,
- 47,253,173, 18, 1, 92, 2,240,131, 41,226, 10, 0,174, 93,187,230, 90,252,185,105,211,166, 6, 11, 11, 11,152,153,153, 33, 45,
- 45, 77,104,102,102, 38, 57,119,238, 92,181,125, 29,174, 95,191,238,248, 38, 27, 26, 33,164, 94,207,158, 61, 47,252,250,235,175,
-242,236,236,108,196,197,197, 97,234,212,169, 88,179,102, 13, 44, 44, 44,112,228,200, 17,243,144,144,144,115,132,144,150,111, 59,
-184,106,227,198,141,217,155, 55,111, 34, 46, 46, 14, 70,163, 17, 31,124,240, 1,222,165,209, 20,195, 48,236,164, 73,147,176,113,
-227, 70, 80, 20,133, 33, 67,134, 32, 55, 55,183,100,187,141,141, 77,121,219,120,168, 98, 69,233, 95,218,209,240,249,236,249,243,
-231, 23,183,109,219, 22,241,241,241,221, 2, 3, 3,127, 28, 54,108, 88,226,235,242, 90, 91,154,163,145,159, 7,180, 90, 45,180,
- 90, 45,148, 74, 37,242,242,242,240,228,201, 19,104,181, 90, 56, 58, 88, 85,155,175,113,253,186,208,233,116,208,106,181,112,112,
-112, 64, 65, 65, 1,158, 61,123, 6,173, 86, 11,123,123,235,234,208,157,191,116,233,146, 91,167, 78,157,188,163,162,162,112,225,
-194, 5,232,116, 58, 52,110,220, 24, 49, 49, 49,104,209,162, 5,114,115,115,175,223,188,121,243, 80, 53,238,163, 90, 93,186,116,
- 57,187,115,231, 78,219, 95,126,249, 69,247,209, 71, 31,137,230,205,155, 71, 44, 44, 44,144,146,146,130,119,204,101,232,255,132,
- 85,120,120,248, 30,161, 80,200, 2,168,145,181,169, 24,241,241,241,226, 6, 13, 26,104,197, 98,177,232,202,149, 43, 59,107,106,
-189,250, 75, 70, 63,175,185, 50,177, 50,212,173, 91,119,146,139,139, 75,167,128,128, 0, 68, 69, 69, 9,197, 98, 49, 6, 15, 30,
-172,239,222,189,187,158,207,231,155,188,224, 70, 34,145, 60, 48, 55, 55,111,163,213,106,161,211,233,112,250,244,105,216,216,216,
- 76, 13, 9, 9,153,152,148,148, 4,149, 74, 37, 18,139,197, 37, 86,242,246,237,219, 35, 51, 51,243,193, 95, 93,119, 21,105,145,
-127,186, 5,171, 92, 49, 84,218,130, 85,217,244,160,169, 2,139,162, 40,232,116, 58,200,100,178, 18,129, 85, 58, 82,124, 77, 56,
- 43,194,173, 91,183,174,196,198,198,126,207,178,236,209,154,252, 63,236,151,109, 10, 75,166,176,150,234,250, 81, 60,186, 19,142,
- 3, 81,217,233, 83, 22, 46, 31,255,126,239,129, 41,101, 5, 89,152, 9, 46,244,245, 28,228,254,206,142,182,231,150, 47, 93,100,
-145,241,224, 42, 30,223, 13,199,209,235, 9, 17, 90,150,141, 1,240,221,155,188,168,197,115,235,239, 88, 71, 59,169,120,181, 96,
-108,108, 44, 6, 13, 26,148, 29, 23, 23, 55,246,131, 15, 62, 88,115,226,196, 9,107,107,107,107,156, 60,121,210,188, 86,173, 90,
-161, 0, 66,222, 98,231,200,210, 52,141,140,140,151,139, 55, 91,181,106,133,119,205, 84, 29, 30, 30, 46,236,217,179,231, 31, 0,
- 58, 60,120,240, 0, 12,195, 92,137,136,136,104, 85,188,189,178,109,166,232,183,188,188, 60,129,185,185,121,185, 15, 43,161, 80,
- 40,172,174,197,161, 52,231,229,203,151, 23,125,255,253,247, 7,190,252,242,203,199,175,201, 89,174, 5, 43, 36, 36, 4, 26,173,
- 1, 9, 41, 57, 48, 26,141, 40,212,165,188,150, 5, 43, 36, 36, 4,106,141, 14, 47,146, 50, 97, 52, 26,145,175,169,150,161,100,
-213,128, 1, 3,122, 95,190,124, 57,211,219,219,219,230,230,205,155, 72, 77, 77,133,193, 96, 64,135, 14, 29, 32, 22,139,159,135,
-134,134, 10, 97,130, 27, 64, 81,219,148,189,247,222,123, 39,118,239,222,237,116,229,202, 21,232,116, 58, 38, 60, 60,252,217,200,
-145, 35, 45, 62,253,244, 83,219,151,213,248,206,221,247, 16,139,197,120,240,224, 65,177,176, 26,242,166,132, 80,177, 5,235,191,
-132, 95,126,249, 37,113,203,150, 45,126, 10,133, 98,229,224,193,131,219, 43,149, 74, 74, 36, 18,157,231,243,249, 19, 1, 60,175,
- 70,221, 13,179,182,182,126,194,227,241,120,137,137,137,120,252,248, 49,120, 60, 30, 88,150, 21,169,213,106, 56, 58, 58,130,199,
-227, 21, 91,199,224,226,226, 66,199,196,196, 12, 3,135, 55, 35,176,138, 49,127,254,124,108,216,176, 1,163, 70,141,170,116,191,
-162,176, 0,164, 76,135,240, 74,182,237,226, 85,132,115,230,204,121,229,127,197, 83,129, 99,199,142,125,133,243,224,193,131,255,
- 55, 69,104,106, 6,239, 39, 79,158,152,172,128, 75,115, 22,251, 96,245, 25, 52, 36,105,245,162,217,119,183, 30,250,163, 65,146,
-154, 77,154,178,112,249,228,178,226,202, 84, 78, 95, 39, 51, 95, 23, 7,219,243,223, 47, 93,100, 89,108, 13,219, 29,153,156, 3,
- 35, 59,170,154, 15,255, 42,207, 93, 32, 16, 36,181,108,217,178, 22, 96,218,180,224,223,149,101, 93,171,213,226,218,181,107, 0,
-128,225,195,135,103,199,197,197,181, 97, 89,246, 62, 33,228, 65,215,174, 93,207, 31, 63,126,220,186,104,244,157,241, 54,203, 9,
-188, 92,209,202,231,243,225,229,229, 85,109,113,245,119,149, 51, 41, 41,105,212,232,209,163, 55,104,181, 90,126, 65, 65,193, 40,
- 83,183, 85, 85,206,176,176,176,199, 94, 94, 94,109, 81,113, 40, 6, 6,192,213,215,225, 92,185,114, 37, 0,120,191, 14,103, 69,
- 22,172, 61,123,246,128,166,105,184, 56, 90, 66,171,213,162,180,191,167, 41,156,101, 45, 88,123,247,238, 5,195, 48,112, 85,216,
- 64,171,213, 86,232,123, 88, 30, 39,203,178, 90, 66,200,176,150, 45, 91,110, 95,176, 96,193, 83, 31, 31,159, 90, 45, 91,182,180,
-206,204,204, 76,189,117,235, 86,220,134, 13, 27,204,140, 70,227,176,138,166,137,202,114,218,218,218, 46,223,182,109,155,203,131,
- 7, 15,144,152,152,136, 21, 43, 86, 60, 79, 75, 75,235,206,231,243,197, 63,254,248,227,185, 30, 61,122, 56, 26,141, 70,237,187,
-208, 62,139,161, 82,169, 14,225,101,248,154,106, 9, 43, 83,202,121,227,198,141,189, 69,220, 71, 77,225,254,187,206,253,117, 87,
- 38, 86, 85,206, 97,195,134, 37,160, 76,204,180,234,150,243,228,201,147,113,253,251,247,159,239,239,239, 63,199,204,204, 12,209,
-209,209, 37, 97,145,138, 7,232,132, 16,244,233,211, 7, 99,198,140,193,201,147, 39,231,247,238,221, 59,238,175,174,207,255,140,
-192,162,105, 58, 62, 46, 46, 78,177,109,219, 54, 30, 33, 4, 59,118,236, 64, 89,199,218,226,119, 0,184,118,237,154,145,101,217,
- 39,149, 29,140,166,233,248,240,240,112,199, 45, 91,182, 8,164, 82, 41,196, 98, 49, 84, 42, 21, 24,134, 97, 82, 82, 82,168,157,
- 59,119,190,226,172,123,245,234, 85,163, 94,175,127,241,182, 42,231, 98,212,243,137,199,143, 28,176,107,209,188, 77,182,133,141,
- 77,185, 66,165, 56,226,123,101,144,155, 91, 44,250,126,233, 34,171, 98,113,181, 39, 50, 57, 91,163,165,219, 63, 72, 43,188,243,
-166,203,124,249,242,101,215,119,180,173,205,110,219,182, 45, 3,192, 14,192, 76,246,165,229, 14, 69, 34,171,185,151,151,215,151,
- 0,164, 0,102,191, 77,235, 21,195, 48, 37,150,211,119,217,201, 50, 34, 34,226, 41,128,142,213,221, 86, 21,122,247,238, 29, 11,
- 32,246, 77,150,245,175,224, 44, 70,102,118, 46,158, 60, 75, 44, 74,229, 69,131,126,158, 92,202,127,202,128,204,220,234,133,145,
-203,202,201,195,147,103, 9, 96, 24,246, 37, 31,157, 88,226,228,110, 52, 26,145,158, 93,189, 48,109, 44,203, 70, 17, 66, 90, 76,
-155, 54,109, 2,128, 96, 0,174, 0, 94,224,165, 27,192, 42, 83,125,112, 4, 2, 65,240,202,149, 43,187, 83, 20, 69, 93,187,118,
- 77,187,116,233,210,248,180,180,180, 94, 44,203,190, 0, 0,165, 82,217,238,224,193,131,191,188, 11, 33, 25,202, 96,200, 63,148,
-187,198,248,167,172, 76,220,189,123,247,220,177, 99,199,242,155, 53,107,246,117,147, 38, 77,168,103,207,158, 33, 53, 53,181,100,
-112,217,165, 75, 23,184,185,185, 49, 71,143, 30, 93,248,225,135, 31,206, 5,135, 55, 39,176,210,211,211,187, 12, 25, 50,228, 20,
- 69, 81,181, 43, 74,238, 92,218,186,196, 48, 76, 92, 74, 74, 74,165, 65,200,210,211,211,187,204,158, 61,251, 20,159,207,175, 93,
- 42,153,179, 54, 35, 35, 99,108,159, 62,125,214, 10, 4, 2,113,105,107, 23,195, 48,207,147,146,146,254, 86,135,226,178,113,176,
-186,246,248, 48,253,117, 57,229, 34,120,196, 95, 59,130,199,119, 35,176, 39, 50, 57, 43, 79, 71,183,139, 78, 43,248, 79, 41,127,
-150,101, 83, 1,140,173, 96,219, 99, 0,163,222,129, 50,254,107, 86,175,252, 23, 96, 52, 26, 19, 58,117,104,135,178, 97, 25,202,
-126,167,105, 58,193, 84,190,142,237,219, 86,200, 83,252,217, 84,190,210,150, 44,188,204,198,176,164,166,231,202,227,241,190,108,
-214,172, 25,239,203, 47,191, 76, 57,118,236,216, 31, 89, 89, 89,147, 89,150, 45, 44,101, 41,138,198,219, 15, 38,202,225,207,107,
-254,143, 88,153,184,118,237,218, 89, 83,167, 78,221,170, 84, 42,119, 4, 7, 7,123,123,122,122, 90,152,155,155, 35, 55, 55, 55,
- 47, 51, 51,243,209,145, 35, 71, 6, 13, 25, 50,228, 41,119, 69,223,176,192, 74, 75, 75, 43, 0,208,226, 77, 30,172, 10, 78,183,
-119,165, 82,134, 6, 45,221,141, 7, 75, 95,201, 67, 88, 44,190,202,253, 94,133, 15, 86, 82,122,238,152, 5, 91,143, 44,211, 26,
- 89, 70,111,100,134, 71,167, 22, 68,113, 77,239,157,237, 24, 57,113,245, 15,193,189,123,247,130,222,101,190, 55, 9,157, 78, 55,
-177,101,203,150, 63,208, 52,253,189,193, 96,184,196, 93,125, 14,111, 10, 75,150, 44,121, 90,252, 92,238,211,167, 15, 15, 0,194,
-194,194,232,119,176,168, 77, 0,216, 3, 40, 78,182,110, 15, 64,135,151,145,253,211, 0,220,252,199, 8,172,255, 42,194, 78,255,
-249,128, 45, 43,156,170,250, 94, 17, 30, 37,231,159,231, 70,151, 28, 56,112,120, 13,225,255, 2, 64, 47,174, 38, 56,252,165,207,
-191,119, 83, 88, 21,195,158, 16,114,152,101,217, 16, 0, 40,254, 92,250,183,119, 13, 20,215,164, 56,112,224,192,129, 3, 7, 14,
- 28,222, 44, 8, 0,255, 10, 70, 76, 38,251, 8, 17, 66,252,107, 48, 34,187,199,113,114,156, 28, 39,199,201,113,114,156, 28,231,
-127,139,179, 42,238, 10,254,223,163, 10, 11,214,145,119, 78, 96,253,149,129,233,254,238, 37,193, 28, 39,199,201,113,114,156, 28,
- 39,199,201,113,254, 51, 57,171,192, 63, 78, 96,113, 62, 88, 28, 56,112,224,192,129, 3,135,119, 29,234,233,211,167,127, 77, 8,
- 57, 12, 0,211,167, 79,255,250, 93, 47, 48, 39,176, 56,112,224,192,161, 20,148, 74,101, 79, 0,115,241,210,133, 34, 84,165, 82,
-237,229,106,133,195,191, 9,246,246,246,114, 91, 91,219, 63, 40,138,114, 3, 94, 13,185, 84, 94,254, 95,134, 97,146, 50, 51, 51,
- 59, 39, 39, 39,167,255,157,156,101,112, 37, 52, 52,180, 48, 52, 52,180,216,161, 61, 13, 47,103,225, 66,240,231,202,194,127,182,
-192,154,222,185,118,107,165,179,243,206,236,140,140, 72,109, 97,222,167, 11,255, 72,204,172,201,129, 9, 33,182, 34,145,168,159,
- 92, 46,239,196,178,172, 7,143,199,123,152,147,147,115,218, 96, 48,236,102, 89, 54,159,187, 5, 56,188,109, 52,110,220,184,129,
- 72, 36,154, 74, 8,105,110, 52, 26, 93, 4, 2,129, 10,192,117,173, 86,187, 52, 50, 50, 50,146,171,161,127, 7, 8, 33,148, 66,
-161,248,193,202,202,170, 89,118,118,246, 32, 0, 95, 71, 71, 71, 55,164, 40, 10,126,126,126, 95, 43,149,202, 39,230,230,230,155,
-242,242,242,174, 36, 37, 37, 77,172, 78,238, 56, 14,239, 46, 60, 61, 61,195, 41,138,114, 41,157,174,173,172, 32, 40,251,206,178,
-236,211,168,168,168,150, 21,113,186,184,184,120, 88, 88, 88,172, 5,208,164, 60, 81, 81, 26, 69,238, 57, 55,115,115,115,199, 38,
- 36, 36,148, 27,136,215,198,198,198,220,193,193, 97, 46, 33,164, 15, 69, 81,188,170,206,137, 97, 24,154,101,217,176,212,212,212,
-217,153,153,153,121, 21,237,103,107,107,123,250,194,133, 11, 77,236,236,236,170, 12, 75, 99, 52, 26,145,144,144, 96, 31, 18, 18,
-114, 1,128,207,223,201, 89, 6, 58, 0, 55,254, 73,109,172,218, 2,139,208, 24,252,233,136, 33,206,217,241,209,206,219,118, 31,
-175,247, 77, 23,183,118,223,157,120,158, 92, 29, 14,169, 84,218,207,223,223,127,213,170, 85,171,108,107,215,174, 77,164, 82, 41,
-146,146,146,124,110,223,190,253,225,156, 57,115,102, 11, 4,130, 97, 6,131,225,212,107,118,154, 86, 54,102,252,169, 25,121,134,
- 25, 92, 87,194,161, 58,232,211,167, 15, 47, 62, 62,126,142,157,157,221, 87,211,166, 77, 19,215,169, 83, 7,102,102,102, 72, 77,
- 77,117,141,137,137,169,181,118,237,218,158, 45, 91,182,252, 81, 40, 20,126,115,238,220, 57, 35, 87, 99,255,108, 40, 20,138, 31,
- 46, 92,184, 48, 78,169, 84,162, 85,171, 86, 87, 26, 55,110,108, 33,147,201,112,236,216, 49,120,120,120,212,183,180,180,188,190,
-126,253,122,193,220,185,115, 27,237,223,191, 31, 0,198,115,181,246,207, 7, 69, 81, 46,145,145,145, 14, 50,153, 12, 52, 77, 23,
-101, 3, 96,192,178,108,201,123,105, 49, 68,211, 52,218,183,111,175,175,140, 83, 34,145,172,185,123,247,110,167,226, 12, 39,165,
-132, 84,185, 80,169, 84,157,218,183,111,191, 6, 64,185, 1,181, 29, 28, 28,230,246,237,219,119, 82,253,250,245, 75, 82,205, 49,
- 12, 83,242,158,158,158,142,207, 63,255,188,228, 24, 12,195,224,194,133, 11, 19,190,248,226, 11, 0,248,162,146,115,119,179,179,
-179, 35, 85,165,192,155, 51,103, 14,230,204,153,131, 85,171, 86, 17, 62,159,111, 85, 69,125,190,113,206,127, 58,170, 47,176,192,
- 30, 61,186,111,239,167, 33,109,189,201,208, 94, 1, 94,191, 28, 10,191, 58,189, 83,157, 54,139, 78, 63,141, 55, 81, 92, 77, 24,
- 61,122,244,162,121,243,230, 73, 30, 61,122,132,168,168, 40, 24,141, 70,152,153,153,161, 65,131, 6,212,209,163, 71, 21, 19, 38,
- 76,216, 39, 18,137,134,235,116,186,253, 53, 61, 49, 39,107,222, 82,185,148, 55, 80,196,231, 95,215, 25,141,135,222,197,202,111,
-214,172,217, 73,131,193,176, 56, 50, 50,242,236, 63,165,193, 4, 6, 6,182, 18, 10,133,179, 69, 34, 81,215,127,171,184,120,254,
-252,249,236,214,173, 91,127, 53,103,206, 28,241,179,103,207, 16, 29, 29,141,164,164, 36,212,174, 93, 27,181,107,215, 38,171, 86,
-173,146,252,248,227,143,227,111,223,190, 77, 1,152, 82, 29, 75,137,147,147,211,103, 29, 59,118,252,216,206,206,206, 50, 49, 49,
- 49,231,242,229,203,191, 37, 37, 37,253,196,178,108,141,234,146, 16, 66,217,217,217, 13, 13, 9, 9,249,216,198,198,198, 38, 41,
- 41, 41,243,143, 63,254,248, 45, 53, 53,117,211,235, 88, 90, 8, 33, 10, 0, 13, 1,216, 22,253,148,228,238,238,126,255,217,179,
-103,169,111,144, 83,229,238,238, 30, 85, 19, 78,123,123,123, 57,159,207,223, 75, 8, 81, 86, 98, 33, 80, 25,141,198,190, 69, 1,
-142, 43,132,133,133, 69,115,133, 66,129,235,215,175, 99,230,204,153, 54,237,219,183, 71, 76, 76, 12, 40,138,194, 87, 95,125, 69,
-252,252,252, 4,201,201,201, 8, 10, 10,194,233,211,167, 91,114,210,164, 90,215, 60, 12,128, 21,128, 1, 44,203,166,151,250,221,
- 14,192, 65, 0,169, 44,203,126,244,182,202, 39,149, 74,177,107,215, 46, 8, 4, 2, 8,133, 66,100,101,101,193,217,217, 25, 66,
-161, 16, 2,129,160,228, 37, 20, 10, 81,171, 86,173, 42,249, 24,134,105,202,227,241,144,159,159, 15,154,166, 75,210, 44,229,228,
-228,128,101, 89,136, 68,162,146,223,139,183, 49, 12,211,180,146,250,235,163, 84, 42,177,123,247,110,232,116,186,242,218, 46,238,
-221,251,211,207,156,199,227,161, 81,163, 70, 20, 33,164, 79,101, 2,139, 16,194, 2,192,136, 17, 35, 94, 73, 79, 87,246, 85,156,
- 59,152,101,217,146, 20, 98,127, 39,231,191, 90, 96,205,232, 88,103,108,253,128, 70, 75, 69, 34,129,148,161, 13, 96,140, 6,212,
-247,247, 2,195, 24,241,244,121, 18, 60, 28, 68, 24,222,205,211,109,251,201,152,123, 95,119,246,106,182,240,100, 76,116,153, 14,
-238, 94,153, 11,224,222,164, 73,147,185, 11, 22, 44,144,252,241,199, 31,120,244,232, 17, 22, 46, 92, 8, 0,144,203,229, 56,118,
-236, 24,104,154,198,242,229,203,205,187,118,237,186,150, 16,114,158,101,217,204,202, 56, 43,184,208,110,109,130, 92,122,237, 95,
-214, 70, 92,255,195,125, 43, 9, 33, 71, 88,150,165, 43,233,136,223,248, 74, 8, 83, 56,141, 70,227,123, 2,129,160,101, 64, 64,
- 64, 79, 83, 68,214,219, 42,103,105,113, 37, 16, 8,142,235,245,122,153, 72, 36,226,163,130, 68,210,111,187,156,175,195,217,184,
-113,227, 6, 54, 54, 54, 95,205,158, 61, 91,124,237,218, 53,100,101,101, 33, 53, 53, 21, 19, 39, 78,196,186,117,235, 80,191,126,
-125,200,229,114,140, 31, 63, 94,242,249,231,159,143,109,210,164, 73,216,205,155, 55,195,171, 42, 39, 33,132,106,219,182,237,174,
- 29, 59,118,212, 54, 26,141, 20, 0, 24, 12, 6,235,231,207,159, 15,153, 49, 99, 70, 91, 66,200,128,138, 68, 86,101,156, 45, 91,
-182,220,241,203, 47,191,120,138, 68, 34,170,168,179,182,255,228,147, 79, 62,253,230,155,111,218, 19, 66, 6, 86,212,238, 43,171,
- 79, 66, 72, 99,153, 76,230, 59,118,236,216,244, 94,189,122, 37, 2, 64, 68, 68, 4,185,117,235, 86,171,185,115,231,198,205,158,
- 61,251, 86, 13, 56, 3,101, 50,153,247,184,113,227,210,186,119,239,174, 18, 10,133,204,181,107,215,120,247,238,221, 11, 94,184,
-112, 97,236,215, 95,127,125,167, 58,156, 2,129, 96,207,254,253,251,219, 58, 59, 59,211, 0,216,226, 14,158, 16,194, 82, 20,197,
- 82, 20,133,216,216, 88,247,222,189,123,239, 4,240,126,101,156,217,217,217, 67,130,131,131, 47,204,156, 57,211, 6, 0, 46, 92,
-184, 0, 62,159, 95,242, 64,120,244,232, 17,180, 90, 45, 86,173, 90,165,207,203,203,251,236,223,214,230,255, 98,206, 90, 0,154,
- 2, 56, 67, 8,233,192,178,108,122,145,184, 58, 11,192, 15,192,229,183, 85, 78,138,162, 64,211,116,137,136, 58,117,234, 20,214,
-173, 91,135,221,187,119,195,217,217,249, 21,129, 37, 16, 8,202,245, 35, 42,231, 25, 87,220,183,131,166,105,220,184,113, 3,155,
- 54,109,130,131,131, 3,236,108,109, 97,103,111,143,102,205,154,161,216,106, 70,211,244,255,241,150,229, 76, 79, 79, 7,195, 48,
-166,158, 35,114,115,115, 77,174,207,202,132, 80,233, 87,117,174,209,235,112,254,167, 4,150,194,201,238,155,222, 31,191, 39, 5,
-109, 4,244, 5,128,190, 16,172,190, 16,172,174, 0, 68, 36, 5,107,208, 64,206,203,192,168,142,142, 22,251,174,166, 60,152,222,
-193,173,199,162, 51,207,143, 87, 50, 82,156,181, 97,195, 6,203,187,119,239, 34, 58, 58, 26, 43, 86,172,192,188,121,243, 74, 70,
- 14,239,191,255, 62,174, 92,185, 2,157, 78,135,153, 51,103,218, 76,155, 54,109, 28, 94, 58,155, 86,207,122,101,203, 95,183,119,
-251, 42, 27, 27,105, 58,134,247,186,105,187,102,111,220, 88, 0, 63,190,139, 23, 96,218,180,105,178, 37, 75,150,252,110,170,200,
-122,155,150, 43,177, 88,124,124,214,172, 89,242, 89,179,102,209,111,136,179, 62,159,207,223, 99, 48, 24,190,140,140,140, 60, 81,
-131,209,177,107,147, 38, 77, 22, 70, 71, 71, 31,207,205,205,253,165,236,118,145, 72,244,126, 96, 96,224,160,171, 87,175,126, 93,
- 85, 34,242, 98,136,197,226, 9, 95,125,245,149, 36, 33, 33, 1,217,217,217, 16,139,197,175,116,110, 98,177, 24, 20, 69, 65, 36,
- 18,225,147, 79, 62,145,108,222,188,121, 50,128,254, 85,182, 73, 39,167,207,182,111,223, 94, 91,175,215, 83, 5, 5, 5, 16, 10,
-133, 16, 10,133,104,208,160, 1,111,202,148, 41,181, 38, 77,154, 52, 26,192,234,234,156,191,181,181,245,144, 29, 59,118,120,138,
- 68, 34, 42, 41, 41, 9,173, 90,181,194,245,235,215,209,172, 89, 51,222,148, 41, 83, 92,199,143, 31, 63, 18,192,186,234, 90,153,
-100, 50, 89,253, 11, 23, 46,196, 43,149,127, 26,135,106,215,174,205,118,235,214, 45, 51, 58, 58,218, 59, 50, 50, 50, 35, 32, 32,
- 32,190, 26,156,206, 50,153,204,231,196,137, 19, 73,243,230,205,235,184,110,221,186, 94, 0,208,180,105,211, 67, 11, 23, 46,252,
- 35, 35, 35,195,239,198,141, 27, 25, 77,155, 54, 77,172, 70, 81,109,157,156,156,140, 99,199,142, 53, 47,187, 97,246,236,217,152,
- 59,119, 46,182,110,221,154, 1,192,161, 50, 18,165, 82,217,147,162,168,185,245,235,215,183,232,208,161, 3, 46, 92,184,128,241,
-227,199,107, 13, 6, 67, 12, 0,116,234,212,169,222,156, 57,115, 68,145,145,145,176,182,182, 22, 36, 37, 37,253,172, 84, 42, 57,
-199,119,211,209, 11,192, 57, 0,245,139, 68, 86, 95, 0,251, 0,248, 2,136, 6,208,251,109, 22,174, 88, 96, 37, 38, 38, 98,243,
-230,205, 88,184,112, 33,188,188,188,160,215,235,193,231,243, 75,196, 21,159,207, 7, 33,196,228, 84, 90, 52, 77,227,230,205,155,
-216,190,125, 59,102,126,243, 13,204,205, 95, 54, 83,189, 94,143,204,172, 44, 72, 36,146, 18, 17, 86,133, 96, 10,123,252,248,241,
- 36,103,103,231,146,105,202,210, 83,132, 0, 96,102,102, 6,134, 97, 96, 52, 26,161,213,106,177,113,227, 70, 35,203,178, 97, 85,
-220,147, 37, 98,232,139, 47,190,128, 86,251,103,206,241,134, 13, 27, 2, 0,220,221,221,209,168, 81,163,146,239,197, 22, 42, 83,
- 56, 55,181,106, 0,117,169,189,189,231, 44, 3, 0,184,184,184,192,219,219, 27, 10,133,194, 36,206,127,133,192, 42, 78,112, 91,
- 54,209,109,114,114,234,226,173,235,127, 94, 38, 18, 80,130, 78, 45,189, 97, 45, 54,130,200,108, 32,108, 59, 29,196,202,237,101,
- 3,200,140,133,238,196,116,244,109,148, 78,109,215,242, 14,206,237,230,105, 63,251,216,147,114,157,235, 40,138,106,238,234,234,
-138, 11, 23, 46,160,118,237,218,152, 53,107, 22,124,124,124, 32,147,201,144,146,146,130,130,130, 2,200,229,114,208, 52,141,128,
-128, 0,158,185,185,121,251,234, 10, 44, 66, 72,192,103,125,155, 53,229, 91,248,160, 85,215, 22, 56,185,182,173,124,235, 97,213,
- 12, 66,200,207,165,147,163,190, 43,248,224,131, 15,144,146,146, 34,219,177, 99, 71,141, 69, 86,179,102,205, 78, 26,141,198,247,
- 76, 48,135,159,189,120,241, 98,135,154,138,171,205,155, 55,203,173,172,172, 80,149,243,102, 53,196,213,165, 33, 67,134, 88,236,
-216,177,227, 64, 64, 64,192,135,213, 17, 89,132, 16,215,190,125,251, 30,217,180,105,147, 79,143, 30, 61,204, 0,252,159,192,170,
- 95,191,254, 7, 39, 79,158,252,112,204,152, 49,245, 9, 33, 61,139,146, 74, 87,197,219,178, 78,157, 58,120,241,226, 5, 82, 82,
- 82,160,213,106,145,146,146, 2, 0, 72, 72, 72,128,139,139, 11,172,173,173,225,226,226,130,122,245,234, 17,138,162,154,153, 82,
-222,246,237,219,247, 2, 64,197,198,198, 34, 45, 45, 13,150,150,150,144,203,229,112,118,118, 70,135, 14, 29,248,158,158,158,221,
-171, 43,176,186,117,235,246,177, 76, 38,163,158, 63,127,142,184,184, 56,104,181, 90,196,196,196,192,210,210, 18,157, 58,117, 18,
-120,122,122,134, 84, 87, 96, 1,240, 31, 57,114,100,106,105,113, 85, 12,185, 92, 78,188,189,189, 51,173,172,172,130, 0,196, 87,
-135,115,252,248,241, 41,161,161,161,109, 78,159, 62, 61,173,248,199,211,167, 79, 79, 5,128,213,171, 87, 95,176,177,177, 9, 2,
- 80, 29,129, 5,150,101,153, 79, 63,253,244,177, 72, 36, 66,241,171, 88,184, 46, 91,182, 12, 20, 69, 89,154, 64,243,117,116,116,
-116, 67, 51, 51, 51, 68, 71, 71,131,199,227,129, 16,242, 88,165, 82, 53, 44, 26, 0, 61,209,104, 52, 30, 26,141, 6,189,123,247,
- 38, 61,122,244,104,176, 98,197,138,111, 0,188, 19, 2,139, 16,210, 4,192,114,188,116, 0,254,134,101,217,235,239, 82,255,198,
-178,108, 10, 33,164, 93, 41,145,117, 11,128,184, 72, 92,181, 99, 89, 54,229, 45,214, 29, 24,134, 1,159,207,199,178,101,203,160,
-215,235,241,203, 47,191, 96,223,190,125,160, 40, 10,132, 16, 16, 66, 96, 97, 97,129, 31,126,248,161,228,187, 41, 48, 26,141,216,
-178,101, 11,166, 79,155, 86, 34,174, 0, 64, 40, 20,194,201,209, 17,182,118,118,136,141,141,173, 82, 96,165,166,166,206,190,113,
-227, 6, 42,115,114,255,232,163, 63,103, 88, 75, 59,185,155, 82, 78, 30,143, 7,173, 86,139,247,222,251,243,241, 49,110,220,184,
-146,207, 89, 89, 89,197,247, 4,136,137, 39,207,227,241,160,102,129, 15, 36,127,254,214,253,203, 47, 95,177,200, 85,196, 89,145,
- 22,249, 87, 90,176, 68,193,207, 87, 63,187, 66, 53,234, 19,210, 98,168,141,133, 20, 76,158, 10,194,142,115,112, 55, 83,134,149,
-235, 95, 62, 11, 39,245, 14,128,255,123, 11,160,253,185, 51, 58,184,235, 68, 63, 71, 74,167, 0,152, 85, 30,159,157,157,157,157,
-209,104, 4, 69, 81,144,203,229,176,177,177,129, 84, 42, 69,122,122, 58, 38, 76,152,128,227,199,143, 67,167,211, 65, 40, 20,162,
- 78,157, 58,208,235,245, 30,213,182, 94, 89,243, 55,173, 88,182,208, 42, 35,118, 39, 34, 30,101, 67,102,233,130,111, 70, 6, 89,
-207, 89, 27, 62, 27,192,212,119,241, 34,248,249,249, 97,226,196,137,178, 31,127,252,177, 70, 34,203,104, 52,206,231,243,249,173,
-190,252,242, 75,105,239,222,255, 63, 32,140,138,138,194,232,209,163,213,133,133,133,223,213, 68, 92,137, 68,162,227,155, 54,109,
-146, 91, 90, 90,226,197,139, 23,111, 76, 92,173, 90,181,202,194,195,195, 3, 2,129, 64,178,101,203, 22,147, 69, 22, 33,164,222,
- 71, 31,125,116,116,211,166, 77,110, 35, 71,142, 76,184,112,225, 66, 28, 33,164, 60, 33,158, 53,116,232,208,231, 91,183,110,245,
-100, 24,230, 4, 33, 36,132,101,217, 7, 85,212,165,171, 76, 38, 67,122,122, 58, 38, 77,154,244,138,131,106,241,116, 54, 0, 68,
- 71, 71,195,197,197, 5, 26,141,198,217,148,115,182,177,177,177,102, 89, 22, 35, 70,140, 64,124,252,159,218,196,217,217, 25,241,
-241,241, 48, 26,141, 54,213,173, 71,107,107,107, 27,131,193,128,182,109,219, 66,163,209, 0, 0,250,246,237, 11,129, 64,128,212,
-212, 84,232,245,122,219, 26, 92, 30,187, 30, 61,122,168, 42,218, 40,151,203, 13,214,214,214,238,213,228,180, 13, 9, 9, 73,220,
-176, 97,195,251,101, 55,220,184,113,227,125, 75, 75,203,211, 54, 54, 54,222, 53, 40, 43, 35, 22,139, 33, 22,139, 33, 16, 8, 32,
- 18,137, 32, 22,139, 33, 18,137, 32, 16, 8,192,227,241, 76,154, 87, 97, 24, 6, 71,142, 28, 1, 69, 81,175, 76, 93,204,154, 53,
-107,148,149,149,149,227,249,243,231, 75, 6,128,249,249,249,168, 91,183,110,157, 78,157, 58,221, 78, 78, 78,142,139,138,138,250,
-240, 45,119, 31, 75, 1, 20,251,133,173, 3,208,232, 93,235,223,138, 68, 86, 31, 0,225, 69,226, 74, 7,224,227,183, 41,174, 74,
- 95,123, 62,159, 95,114,159, 75, 36, 18, 4, 4, 4,148,136, 41, 66, 8, 10, 11, 11, 75,166, 8, 77,125,232,231,228,228, 64,161,
- 80,192,220,220, 28,117,189,188,240, 56, 38, 6, 0, 74, 62,139, 68,162, 18, 33, 86, 25,138, 86, 2,126,129, 74,252,169,106, 40,
- 46, 89, 0,224,243, 43,119,195, 86, 40, 20, 96, 24,166, 88, 88,178,111,130,211,206,206, 14,249,249,249, 38,113,254, 43, 4, 86,
-121,138,113,238, 92, 66,105,175,212,222,220,167,123,211,161,190, 46,114,104,211, 99, 33, 50,179, 5,177,114,199,202,245, 39,240,
- 32,238,165,107,212,202,125,145,216, 58,163, 11,136,204, 6, 10,245, 35,152, 75,196, 31, 86, 36,176, 50, 50, 50,242,245,122,189,
-141, 84, 42, 5,159,207,135, 80, 40, 68,122,122, 58,190,253,246, 91,236,221,187, 23,238,238,238, 48, 26,141, 16,137, 68, 72, 75,
- 75,131, 80, 40,172,214,234, 68, 62,159,244,152, 51,177, 91,109,185,173, 23, 50, 34,231,189,252,209, 34, 0, 35,251,242, 68,223,
-111,191, 63,132, 16,242, 61,203,178,169,239,218, 69, 48, 51, 51, 67,163, 70,141, 48,112,224, 64,217, 47,191,252,178, 13,128, 75,
-117,254, 31, 17, 17,113, 57, 48, 48,176,243,242,229,203, 79, 38, 37, 37, 73, 27, 55,110, 12, 51, 51, 51,152,153,153, 33, 54, 54,
- 22,243,230,205,211,104,181,218,144,154, 88,199,248,124,254,150, 79, 63,253, 84,110, 97, 97,129,216,216, 88,216,216,216,188,214,
-185, 6, 6, 6,214, 23, 8, 4,151, 86,173, 90,101,225,233,233,137,135, 15, 31, 34, 48, 48, 16, 78, 78, 78,146,208,208, 80, 83,
- 69,214,154,157, 59,119,186,139, 68, 34,178,107,215, 46,215, 93,187,118, 77,168,234,184,219,183,111,119,223,181,107,215, 42, 66,
- 72,167,202,156,191,133, 66, 97, 66, 90, 90,154,103,173, 90,181,176,121,243,102, 80, 20, 5,149, 74,133,111,190,249, 6,161,161,
-161,104,214,172, 25,204,205,205, 81,171, 86, 45, 60,126,252, 24, 18,137, 36,201,148,243, 78, 76, 76,204, 4,224,112,252,248,113,
-164,165,253, 25,178,197,205,205, 13,153,153,153,208,106,181, 25,213,173,203,196,196,196, 12, 0,142,183,111,223, 70, 92, 92, 28,
-186,118,237,138,131, 7, 15, 34, 40, 40, 8, 52, 77,195, 96, 48,100,212,224, 18,209, 60, 30,143,173,164, 19, 37, 0,172,171,201,
-105,172,140, 19, 47,227, 77, 85,151, 19, 44,203,178, 21,137, 43,145, 72,132, 42,142, 89,162,155,125,124,124,230,214,169, 83,199,
-247,155,111,190, 17,240,249,124, 4, 7, 7,215,155, 50,101,202,115,169, 84,106, 59,125,250,116, 89,121,198, 96, 0, 13,125,125,
-125,229,239, 64,247, 81,218, 74,247, 78, 46, 58, 33,132, 56, 20, 89,252, 68, 0,244, 69,239,187,139,125,178,222,182, 5, 75, 40,
- 20, 98,206,156, 57, 24, 51,102, 12, 28, 29, 29, 49,109,218, 52,240,249,252,146, 87,177, 85,166,216,170,101, 98,219,132,163,131,
- 67,229, 55, 90,145,147,123, 21, 3,179,191, 36, 76, 67,177, 24, 50,197, 23,170,148,181,201, 36,209,246, 58,156,255, 38,235, 85,
-137,192, 42,107,150, 43, 17, 87, 93, 3,135,250,184, 72,113, 43,242, 30,252,157, 12, 96, 5,130, 74, 90,139, 1, 68, 40,135,149,
-148,239, 82,201, 5,136,140,139,139,115,179,178,178,130, 94,175,135, 72, 36,130,191,191, 63,174, 94,189, 10,173, 86, 11,157, 78,
- 7,177, 88, 12,161, 80,136,251,247,239, 67,175,215, 95,168,198,205,194,115,180,230,173,154,250,245, 60,115, 36,110,134,149,185,
- 8,237,155,123, 2,114, 95,240, 10, 30, 97,249,204, 16,155, 81,223, 28, 92, 9, 19,252,101,222,134,192,122,254,252, 57,118,237,
-218, 85,168,213,106,135,212,132,163, 88,100,237,221,187,247,164,149,149,149,180, 89,179,102,136,137,137,193,119,223,125,167,209,
-106,181, 61,106,234,223,101, 52, 26,135,109,220,184,241,184,209,104,148, 23,139,139,215,181, 92, 77,152, 48,193,188,110,221,186,
-120,242,228, 9, 44, 45, 45, 97,110,110,142,218,181,107, 67,161, 80, 72, 38, 76,152, 96,138,200,250,124,224,192,129, 71,183,110,
-221,234, 54,114,228,200,132,221,187,119, 31, 2,144, 83, 94,213,126,244,209, 71,239,111,221,186,213,109,212,168, 81, 47, 0, 76,
-168,106,101, 29,195, 48, 87,158, 60,121,226,225,227,227, 67,234,213,171, 7,145, 72, 4,103,231,151, 70,170,134, 13, 27,194,199,
-199, 7, 66,161, 16, 0,240,228,201, 19,192,196,184, 44, 23, 47, 94,252, 45, 58, 58,250,179,160,160, 32,158,147,147,211, 43,171,
-147, 66, 67, 67,245,207,159, 63,175,118,154,135, 51,103,206, 28,188,119,239,222,136,224,224, 96,190,181,181, 53,196, 98, 49,252,
-253,253,161, 80, 40,240,221,119,223,233,159, 61,123, 86,147,212, 17, 47,110,223,190, 45,241,242,242,162, 43,104,171,230, 0,170,
-107,121, 72,136,136,136, 16, 54,111,222,252,208,177, 99,199,234,151,222,208,180,105,211, 67,102,102,102,150, 0,146,106, 80, 86,
-166,244,212, 96,233,169, 66,145, 72, 4, 62,159, 95,165, 5, 75,165, 82,253,238,228,228,244,212,209,209,241,114,203,150, 45, 45,
-195,195,195, 49,107,214, 44,161, 86,171,117, 61,125,250,116,201,131,184,188, 7,104, 65, 65,129,228, 29,232, 62, 38, 1, 88, 1,
- 64, 6, 96,218, 59, 40,174, 28,241,210,161,221, 27, 47,167, 5,251, 22,137,173, 98,159,172,183, 42,178, 24,134,129, 64, 32,128,
-183,183, 55,190,248,226, 11, 44, 94,188, 24, 99,199,142, 69,221,186,117, 75,174,125,177, 15, 86,209,138, 55,147, 30,252, 66,161,
- 16,142, 78, 78, 48, 24, 12, 37,214, 43, 0,120, 28, 19, 3, 62,159, 15,134, 97,160,213,106,171,156, 34,116,112,112,152,187,100,
-201,146, 9,221,186,117,163, 74,175,184, 99, 89,182, 36,156, 68,233,151,193, 96,192,239,191,255, 62, 33, 52, 52, 20,166, 88,189,
-120, 60, 30, 26, 54,108,248,202,180,224,234,213,127,122, 42, 4, 4, 4,160, 83,167, 78,213, 90,237,199,227,241,224, 61,103,217,
- 43,211,130, 71,237,255,172,182, 90,159,140, 68,221,239, 86,149,203,249,159,152, 34,212, 95,117, 91,208,187, 75,163,161, 62,206,
- 98,220,142,188,143,195,225,105,143,156, 90,242,189,237, 10,210,192,164, 61,196,164,222, 1, 88,185,239,101,156,197, 73,189, 3,
-192,164,222, 7,155, 21, 11, 88,212, 66,106, 1,163,170,196,220,185,116,254,252,249,237,214,175, 95,111,157,155,155, 11,129, 64,
-128,132,132, 4,180,111,223, 30, 15, 30,188,156,185, 17,137, 68,160, 40, 10,179,102,205, 74, 75, 75, 75, 91,111,234,137,200,165,
-212,200,197,223,244,119, 20,138,205,129,204, 11,176,176,176,194,230,245,203, 0,173, 10,160, 68,232,217,169, 17,111,238,143,231,
- 59, 16, 66,234,177, 44, 27,253, 46, 93,132, 23, 47, 94, 96,206,156, 57,133,106,181,250,181, 28,221,139, 69,214,250,245,235, 79,
-166,167,167, 75, 15, 28, 56,240, 90,226,170, 20,103,215,109,219,182, 29,119,114,114,146,187,187,187,215,248, 60,133, 66,225,116,
-189, 94,111,177, 98,197, 10,122,229,202,149, 21,117,120, 98,153, 76,182, 4,192,137, 74, 70,135,209,132,144,246,124, 62,255,200,
-166, 77,155,124,146,146,146,220,207,159, 63,223,179, 28, 65,183,117,235,214,173,110, 99,198,140,121,178,107,215, 46,147,124,176,
-180, 90,237,234,117,235,214,245, 89,179,102,141,212,204,204, 12,132, 16,216,219,219,151, 8,225,226, 7,185, 94,175,199,218,181,
-107,213,106,181,122,165, 41,231,158,145,145,177,121,202,148, 41,237,103,204,152,225,214,172, 89, 51,129,173,173, 45, 84, 42, 21,
-118,237,218,165,255,233,167,159, 18,179,179,179,127,170,110,125,230,230,230,110,153, 58,117,106,199,111,190,249,198,173, 83,167,
- 78,130,172,172, 44,104,181, 90,124,247,221,119,250,159,126,250, 41, 49, 47, 47,175,218,156, 45, 90,180,120,146,152,152,216, 74,
-171,213,102,137,197,226, 87, 58, 56,129, 64, 64, 36, 18, 73, 83, 0,219,171,195, 25, 20, 20,244, 36, 46, 46,174,197,130, 5, 11,
-206, 27, 12, 6,193,141, 27, 55,122, 21,139,171,181,107,215,158,149, 72, 36,157, 0, 84,187,172, 20, 69, 49,101, 69, 85,105,177,
- 37, 16, 8, 76,154, 34,244,241,241,217,185,125,251,118,203, 7, 15, 30, 32, 55, 55, 23,105,105,105,208,104, 52, 37, 83,185, 21,
-197, 49, 42, 44, 44,148,190,237,190,131,101,217,115,120, 25,250,226, 93,197,190, 82,226,170, 93, 57, 62, 89,191,225,207, 41,206,
-191,221,130,197,178,108,201, 96,167,127,255,254,232,216,177, 35,220,220,220, 74, 68, 85,233, 85,132,213, 17, 25, 52, 77,195,223,
-223, 31,218, 34,151,151,226, 54,196,231,243, 97,111,111,143,199, 79,158,152,228,228, 78, 8,233,211,173, 91, 55, 42, 42, 42, 10,
-253,250,245,195,142, 29, 59, 42,220,119,240,224,193,216,189,123, 55,186,116,233, 66, 45, 90,180,168, 79, 21, 2,171, 90,214, 38,
- 19,173,119,127, 5,231, 63, 95, 96, 21, 43,197,226,119, 71,107,249, 48, 95, 5, 31,183,111, 63,192,161,136,204,173,132, 80,251,
- 35,159,105, 15,119,169,147, 7,253,222, 1,240,239,179, 3, 91,103,116,121,249, 64, 76,189, 15,125,216, 96, 16,153, 29, 30,231,
-202,161,214,101, 31,169,164, 51,184, 97,109,109,189,103,251,246,237,159, 14, 29, 58, 84,196, 48, 12,164, 82, 41, 38, 79,158, 92,
- 18, 35,132,199,227, 97,236,216,177,249,169,169,169, 43, 76, 93,249, 69, 8,145, 58,219,139,102, 14, 26, 49, 75,130,248, 13, 0,
- 37, 68, 58, 26,163, 97,155, 79,145, 26,119, 21, 40,120, 0, 16, 33,214, 47,250,204,238,253, 97,223,255, 4,160,245,187,114, 1,
- 30, 62,124,136,217,179,103,191,182,184, 42, 43,178, 14, 29, 58,180, 77,171,213,142,120,131,156, 93, 23, 47, 94,124,220,193,193,
-161,198,211, 34,206,206,206,159,164,167,167,127,106,138,225,204,132, 7,203, 11, 66, 72,143,184,184,184,133,209,209,209,229,174,
- 92,189,127,255,254,193,206,157, 59,203,170,179,138, 48, 50, 50, 50,178,121,243,230,235, 86,172, 88, 49,118,226,196,137, 18,169,
- 84, 10, 11, 11, 11, 68, 71, 71,195,213,213, 21, 0,160, 86,171, 49, 99,198, 12,181,193, 96,216,122,243,230,205,171, 38, 62, 8,
- 25, 66,200,160,209,163, 71,127, 86,175, 94,189,247, 25,134,177,213,233,116, 25,207,159, 63, 63,146,151,151, 87,163, 56, 88, 69,
-156, 3,199,140, 25, 51,212,203,203,235, 99,189, 94,111,107, 52, 26, 51,226,227,227, 15,229,230,230,110,174, 9,231,149, 43, 87,
-210, 54,109,218, 20,155,156,156,236,167, 80, 40,114, 44, 45, 45,117, 58,157,142,103,102,102,102, 46, 18,137, 2, 1, 92, 5,240,
-160, 58,156, 55,111,222, 76, 89,191,126,125,156, 86,171,173,183,113,227,198, 11,114,185,252, 15, 66, 8, 17, 10,133,214,114,185,
-188, 61,128,243, 0, 30, 87,183,172, 20, 69, 49,197,211,130,101,173, 88, 66,161, 16,132, 16,147, 4,214,147, 39, 79, 46,207,159,
- 63,191, 65,157, 58,117,176,126,253,250, 76, 51, 51, 51,243,143, 63,254,152,159,147,147, 67, 42,179, 96,169,213,106, 9, 56, 84,
- 57,182, 40,178,242,246, 42,246,185, 42, 37,178,246, 1,200,126,203, 2,245, 21, 33,229,234,234,250,138,168, 42,189,173, 58, 2,
-203,104, 52, 66, 40, 20,130,207,231,195, 73,161, 40, 17,115, 44,203, 34,230,241, 99,100,101,101,149,132,105,168,162,141,243, 8,
- 33,232,215,175,159, 73,199,237,223,191, 63,206,159, 63,143,170,166, 19, 75,175,248,171,106,208, 92, 44,152, 40,138, 50,121, 21,
-161,139,139, 75,141, 56,203,106,145,127,165, 5, 75,149, 89,184, 96,211,129, 91, 51, 84,185,198,253,226,150,207,191,152, 51, 7,
-236,140,142,238, 39, 93,228,162,206,190, 84, 34,180, 63, 5,131, 88,188,124,216,176,249, 42, 16,185, 19,178, 4,174,248, 61, 50,
- 57,153, 18,240,150, 84,118,192,236,236,236, 73, 63,252,240, 3,239,248,241,227,125, 22, 46, 92,104,229,237,237,141, 65,131, 6,
- 65,167,211,225,238,221,187, 24, 61,122,116,102, 90, 90,218,134,236,236,236,197,166,158,132,157, 5,255,219,149, 95,119,182,165,
-152,124, 32, 55, 2,224, 91,194,206,198, 28,119,194, 47, 0, 57,225, 0, 37, 4, 40, 17,130, 26,251,160, 97,125, 79, 31, 66, 72,
- 48,203,178,151,222,133, 11, 48,106,212,168, 55, 38,174, 74, 11, 34, 0,117,222,100, 57,139, 69,214,151, 95,126,121,156, 97, 24,
- 89, 77, 56,194,194,194,104, 0,244, 27,236, 28, 95, 0, 24, 88,209,118,157, 78,119, 8, 64,181,131,204, 26, 12,134, 25, 81, 81,
- 81, 24, 55,110,220,152,193,131, 7, 75,189,189,189,225,230,230,134,152,152, 24, 68, 71, 71, 99,221,186,117, 26,134, 97, 54,103,
-103,103,127, 85,205,242,210, 0, 54, 20,189,222, 84, 29, 48, 0,126, 46,122,189, 17,124,246,217,103,247, 30, 63,126,156,233,236,
-236,220,140,199,227, 53,192,203, 64,145, 73, 69,199,120, 92, 19,206,209,163, 71,223,142,141,141, 77,119,114,114,106, 38, 20, 10,
- 61,139, 56, 19, 1,108,174, 33,103,198,157, 59,119, 60,155, 54,109,202,240,120, 60, 86, 32, 16,176, 69, 15, 67,150,207,231,179,
-132, 16,246,196,137, 19, 18, 0, 85,250, 92, 38, 36, 36, 76,216,186,117, 43,107,102,102,214, 44, 63, 63,127, 16,128,109,106,181,
-186,105,118,118,118,165, 22, 44,141, 70, 35,230,244, 83,149,237,243,131, 10,126, 79, 1, 16,252, 46,148,113,254,252,249,216,176,
- 97, 3,170,138, 64,126,232,208, 33,160,138, 41,194,226,182, 82,236, 95,165,211,233, 16, 21, 21, 5, 66, 72,201,247,210, 65, 70,
-105,154,174, 52,210, 59,195, 48,180, 78,167,195,158, 61,123, 76, 18, 89,187,118,237,130, 70,163, 1,195, 48, 38,245,179, 69,129,
- 73,145,149,149, 85, 18, 58, 33, 32, 32,160,100,187, 94,175,175,118,125,242,120, 60,120,123,123, 35, 61, 61, 29,118,118,118, 0,
- 94, 78, 11,150,136,207,130,130,255, 76,251, 39,149, 93,220,210,152,219,206,221, 82,195,167, 14, 52,114,102,218, 5,185,137, 97,
-103, 37, 1, 79, 32, 70,174,134, 32, 74,165,193,165, 7,185,241,180,145, 13,249,238,143,103, 38, 5,136, 35,132, 52, 87, 40, 20,
- 95,211, 52, 93,159,162, 40, 25,203,178,249, 60, 30,239,150, 74,165,154,203,178,236,253,234,156,132,149, 57,239,177,181,156,103,
- 41, 16,137, 88,218,200, 0,160, 0,138, 2, 8, 5,128, 87,244,254,242,187, 90,173, 23,210, 12,217,159,146,150,254,217,219,174,
-252, 54,109,218,156, 44, 40, 40,248,199, 69,114,151, 74,165,179,121, 60, 94,215,127,123,154,152, 38, 77,154, 4, 73,165,210,175,
- 25,134,105,162,209,104,156,164, 82,105, 10, 33, 36, 60, 47, 47,111,209,173, 91,183,174,113,143,207,183,135, 55, 25,201,189, 44,
-138,147, 61,219,217,217,121,221,185,115, 71, 82,218,130, 85,186,191,172,206,170, 50, 14,239, 30,124,125,125,175,239,220,185, 51,
-200,213,213,149, 42,118,184,166, 40,170,228, 85, 60,141, 85,108,109,185,118,237,154,241,243,207, 63,191,122,251,246,237, 54, 21,
-113,214,173, 91,247,228,233,211,167,223, 43,109,161, 42, 22, 82,101, 63,211, 52,141,194,194, 66,204,158, 61,251,212,227,199,143,
-203, 77,149,227,227,227,179, 98,230,204,153, 19,186,119,239, 78, 81, 20,245,127, 62, 87,101,253,176,244,122, 61,246,239,223,207,
-108,217,178,101,213,195,135, 15, 43,156, 34,108,220,184,113,252,173, 91,183, 92,138, 67, 38,148,125,149, 93, 81, 11, 0,205,155,
- 55, 79,186,126,253,186,242,239,228,252,207, 8,172,162, 14,133, 76,235,224,214,151,128,234, 67, 17,198, 31,132,136, 24, 22,209,
- 4, 56, 41,146,232,214,206,254, 93,165, 46,179,191,255,155,142,200,203,113,114,156,111,131,147, 16, 66,153,146,122,134,171,207,
-127, 15,103,221,186,117, 31, 63,126,252,216,179, 18,158, 18,129,197,213,231, 63,143,211,222,222, 94,110,111,111,255, 7, 69, 81,
-110, 21, 37,119, 46, 45,174, 25,134,137, 75, 73, 73,233,152,146,146, 82, 88, 17,167,139,139,139,135, 68, 34, 89,195, 48, 76, 83,
- 83,146, 61, 83, 20,117, 67,163,209,124, 94, 58,217,115,105,206, 55,181,138,176,108, 57,235,215,175,255,228,198,141, 27, 30, 82,
-169,180,100,234,178,116,187, 46,139,103,207,158,225,227,143, 63,126,126,251,246,109,247,191,146,243,223,134,106,229, 34,100, 95,
-214,216,158,162, 23, 7, 14,255, 25,188, 78, 94, 63, 14,255, 76,168,213,234, 44,123,123,251,124,141, 70, 35,208,106,181, 2,163,
-209,248,202, 3, 78, 42,149,166,113,181,244,207, 69,145,101,179,217,155,228, 44, 18, 74,157,223, 20,223, 95, 21, 7, 43, 43, 43,
- 43,164, 73,147, 38, 39,248,124,190,184,172,248, 41, 79, 12,209, 52,173,201,200,200,232,250,119,115,254,167, 4, 22, 7, 14, 28,
- 56,252, 87,144,152,152,216,140,171, 5, 14,255, 70,168, 84,170,104, 0,110,239, 58,231, 63, 29, 20, 87, 5, 28, 56,112,224,192,
-129, 3, 7, 14,156,192,226,192,129, 3, 7, 14, 28, 56,112,224, 4, 22, 7, 14, 28, 56,112,224,192,129, 3, 39,176, 56,112,224,
-192,129, 3, 7, 14, 28, 56,212, 24,255, 27, 0, 30,206, 65, 61,139,248,242,231, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
+
+137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 2, 88, 0, 0, 2,128, 8, 6, 0, 0, 0, 64, 11, 6,
+158, 0, 0, 10, 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,
+120,218,157, 83,103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42,
+ 33, 9, 16, 74,136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,
+228, 33,162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8,
+ 12,150, 72, 51, 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,
+253, 35, 1, 0,248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153,
+ 92, 1,128,132, 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0,
+ 96,203, 99, 98,227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,
+101,136, 68, 0,104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,
+183, 0,192,206, 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242,
+ 87, 60,241, 43,174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23,
+ 43, 20, 54, 97, 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206,
+ 14,174,206,206, 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44,
+ 47,179, 26,128, 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,
+248,126, 60, 60, 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126,
+ 60,252,247,245,224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,
+183, 11,255,252, 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,
+210,255,100,226,223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247,
+ 0, 0,242,187,111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94,
+ 68, 36, 46, 84,202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96,
+ 54,132, 66, 36,196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192,
+ 81,104,134,147,112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136,
+ 1, 98,138, 88, 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84,
+ 32, 85, 72, 29,242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181,
+ 67,185,168, 55, 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,
+143, 62, 67,199, 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176,
+ 86,172, 3,187,137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168,
+ 32, 28, 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44,
+ 35,214, 18,143, 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82,
+ 35,233, 44,169,155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228,
+ 33,242, 91, 10,157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,
+221,168,161, 84, 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211,
+ 26,104, 23,104,247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,
+131,199,136,103, 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,
+153,111, 85, 88, 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203,
+ 84,143,169, 94, 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,
+168,111, 84, 63,164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,
+107, 13,171,134,117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179,
+ 82,243,148,102, 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185,
+ 49,101, 92,107,170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199,
+ 74, 39, 92, 39, 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,
+119,191,110,167,238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88,
+ 6,179, 12, 36, 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,
+132,145,185,209, 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,
+238,154, 82, 77,185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,
+223,183, 96, 90,120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179,
+ 70,173,157,173, 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216,
+ 6,219,174,182,109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171,
+ 29, 90, 29,126,115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182,
+ 19,203, 41,196,105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,
+189,228, 74,116,245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,
+158, 89, 51,115,208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,
+145, 87,173,215,176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,
+200,183,203, 79,195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,
+251,248,122,124, 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,
+236,144,173, 33,247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134,
+ 63,142,112,136, 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42,
+ 62,170, 46,106, 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,
+223,252,237,243,135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64,
+ 76,136, 78, 56,148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67,
+ 92, 42, 30, 78,242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155,
+ 58,158, 22,154,118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,
+133,178,254,197,110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,
+101, 87,102,191,205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,
+134, 75, 87, 45, 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213,
+ 79,171,237, 87,151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237,
+ 93, 79, 88, 47, 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,
+191,153,220,148,180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180,
+ 13,223, 86,180,237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,
+164, 84,244, 84,250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,
+219, 85, 1, 85, 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210,
+ 3,253, 7, 35, 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13,
+ 85,141,156,198,226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,
+106, 66,154,242,154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121,
+ 74,243, 84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106,
+ 15,111,239,186, 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,
+109,234,116,234, 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,
+244,189,121,241, 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119,
+ 39,238,173,188, 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,
+247, 6,133,131,207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167,
+ 67,207,100,207, 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,
+165,253,234,192,235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,
+228,124, 32,127, 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 6,
+ 98, 75, 71, 68, 0,255, 0,255, 0,255,160,189,167,147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66,
+ 40,155,120, 0, 0, 0, 7,116, 73, 77, 69, 7,217, 6, 17, 13, 13, 30,217,121,242, 96, 0, 0, 32, 0, 73, 68, 65, 84,120,218,
+236, 93,119,120, 20,213,226, 61,119,202,246, 77, 39,141, 4, 66, 71,186, 16, 64, 9, 96,144, 14,242, 80,121,162,128,160,226,243,
+ 61,236, 15,177,128, 29, 20,136,250, 20,108,136,242, 84,120, 32,250, 19, 21, 36, 54,154,116, 8, 16, 68, 8,197, 8, 18, 8, 37,
+132, 68, 82,183,239,206,253,253,145,157,113,179,217, 50,193, 4, 81,238,249,190,249,182,204,204,153,219,231,220,115,239,157, 1,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,174,100,116, 97,156,140,147,113, 50, 78,198,201, 56, 25,
+ 39,227,188,210,192, 93,196, 57,180, 17,194, 65,189, 91,230,159,128,179,177,226,222,144,220,153, 94,190,231,255, 36,225,204,188,
+140, 57,105, 35,240,210, 70, 40, 83,180, 17,202,125, 99,115,162,145,226, 78, 27, 33,223,159,255,147,132, 51,243, 50,228,244, 47,
+ 63, 13,193, 27,168, 76,210, 6, 14, 39,109,132,112, 54, 22, 39, 26, 41,238,180,145,242,190, 33,239, 77,151, 45,132,203, 64, 96,
+ 0, 0,241,225, 39,151, 49, 39, 26,137,179,161,195,183,177, 17, 56, 73, 35,148,129,231,189,188,155, 26, 80, 16,201,113,111,136,
+ 60,162,141,192,219,152,226,170, 33,203,125, 99,115,162,145, 56, 73, 3,167,231,198, 70,224,108,168,186, 68, 27,161, 46, 53, 70,
+153,247, 47, 63, 13,193,235,207,217, 16,117,201,159,179, 33,202,253,165,224, 68, 35,113,146, 70, 72,211,198,184, 55, 93,182,224,
+ 46, 50,177, 26, 3, 20,192,128,203, 92, 8, 53,150,200,108,104, 23,167, 49, 57, 27, 50,143,158,111,132,222,204,128, 6,204, 35,
+ 18, 32,188, 13,201, 73, 26, 41,156, 13,145, 79,164, 17,234, 18,105,132,186, 68, 26,161,220, 95, 42,206,134,204,163,134,170, 75,
+164,145,234,146,127,124,159,111, 96, 78,210, 72,225,108,136,124, 10,196, 73, 26,129,179, 49,226,158,121, 25,243, 94,246, 16, 46,
+147,112, 52,134, 16, 66, 3, 58, 25,141,233,226, 52,150,211, 70, 26, 41, 93, 55, 53, 32,215,198, 70, 8,231,166, 6,236,209, 6,
+ 18,132,207, 93,230,117,154,213, 37, 86,151, 46,183,186, 68,131,116, 86,158,187,204,202,121, 67, 58, 66,161, 56,126,111, 62,209,
+ 32, 29, 53,218,128,225,108, 72,215,154, 92,162,250,116,217,129,187,140,194,210,208,243,123, 40, 26,199, 21,107,172,120, 55,100,
+ 56, 7,252, 73,226,222, 24,225,124,190,145,226,254,103, 73, 83, 86,151, 88, 93,186, 28,235,146,111,153,108,168,176, 54,116, 57,
+ 15,196,217,144,243,144, 26,178,140, 54,118,220,233,101,158,247,127, 10, 92,140,131,213, 88,189,227, 63, 3,103, 99,112, 55, 70,
+ 56, 55,253, 73,210,180, 49,194,249, 60, 26,118,200,145, 52, 66, 88, 27,115,152,176, 49,202,102, 99,150,119,114,153,135,243,207,
+146,239,141, 17,206,134,170, 75,164, 17,234, 61,105,132,246,169, 49,203,102, 99,114, 54, 4,119, 99,132,179,177,242,158,129,129,
+129,129,129,129,129,129,225, 74, 69, 80, 37,217,189,123,247,108,189, 94,223, 38,216,126,139,197,114,246,199, 31,127,188,158, 37,
+ 33, 3, 3,131, 10,112,248,109, 74,130,132,198, 25,226, 96, 96, 96, 96,184,108, 16,116,136, 80,163,209,180,218,188,121,115, 59,
+ 73,146,224,118,187,225,241,120,224,241,120,224,118,187,225,112, 56,240,247,191,255,189,222,195,139,221,186,117,219,204,113, 92,
+139,250,156,227,241,120, 78,238,223,191,191, 95,176,253, 9, 9, 9,219, 1,180, 34,228, 55,173, 72, 8,129,252,219,247,127,142,
+ 83,166,156,157, 57,117,234, 84,143, 80,156,132,144, 86,190,124,254, 92, 1,120, 67,114,182,111,223,126,143, 32, 8,169,129,206,
+ 15,198, 45, 73,210, 47,121,121,121, 25,172,152, 94, 26,116,235,214,109, 51,207,243,245, 46,159, 63,254,248, 99,208,242,217,185,
+115,231, 31, 56,142,107, 26, 40,143,131,148, 39,222,227,241,252,228,229, 12, 40, 64,146,146,146,182, 83, 74, 91,169, 44,151, 50,
+ 78,157, 58,117,170,103,184,122, 20, 42,156, 1,184, 67,114,250,138,171,148,148,148,172,248,248,248,123, 45, 22,139, 13, 0,229,
+ 56,142,202,220, 50,175,199,227, 57,127,228,200, 17,246,240, 66, 6, 6,134,191,182,192,146, 36,137,179,219,237,200,207,207, 7,
+165,117,219,121,142,227, 60,245,189, 24,165,180,221,250,229, 75, 19, 12,241,137,240, 56, 29,208, 53, 73, 80,184,203, 14, 29,128,
+199,233,132,228,114,162, 73,207,107,229, 48, 96,192,128, 1,124, 24,218,212,169, 83,167, 38, 68, 68, 68,192,102,179,193,102,179,
+193,110,183,195,110,183,195,225,112,192,225,112,192,233,116,194,233,116,194,229,114,193,110,183,227,192,129, 3, 33,195, 78, 8,
+ 73,125,232,161,135, 20, 78,187,221, 14,155,205,166,112,217,237,118,133,211,225,112,192,110,183,227,224,193,131, 33, 57, 5, 65,
+ 72,221,187,119,111,130, 70,163, 1,165, 20,146, 36,129, 82, 90,107,243, 75, 43,244,237,219,215,201,138,232, 37, 69,187,149, 47,
+205, 78,208,197, 53,129,228,114, 33,238,234,116, 37, 47, 78,175,255, 22,146,203, 5,201,229, 66,218,223,198, 40,255,103,102,102,
+134, 43,159,105,159, 61, 59, 35, 90, 19, 17, 1,183,205,134,150,163,110, 86,118,228,189, 51, 15,212,229, 2,117, 59,209,245,145,
+167, 1, 0, 37, 37, 37,214, 14, 29, 58,156, 65,232,213, 91,169,199,143, 31, 79,144,195,224, 47,212, 57,142,171,181,109,221,186,
+ 21, 19, 39, 78, 12, 23,247,212,167,158,122, 42, 65,174, 35,190,101,221,229,114, 41,245,199,237,118,195,229,114,193,225,112,224,
+135, 31,126, 80,229, 92, 37, 39, 39,191,212,191,127,255,201,203,150, 45, 51,125,241,197, 23,166,150, 45, 91, 66,163,209,128,231,
+121,240, 60, 15,142,227,192,243, 60,110,188,241, 70, 54, 55,131,129,129,225,175, 47,176,156, 78,231,241,161, 67,135, 82, 0,112,
+ 56, 28, 41, 90,173, 86,227, 39,192,154,102,100,100,252,228,127, 94,184,161, 67, 67,124, 34, 62,104, 25, 11, 0, 24,123,172, 84,
+185, 41,172,184,174,187,114,204,248, 19,229, 53,199, 26, 12,224, 56,142,132, 17, 67, 48,155,205, 24, 58,116, 40,180, 90, 45,210,
+211,211,161,209,104, 32,138, 98,208, 77, 13, 76, 38, 19,102,206,156, 41,139, 35,152,244, 58,220,215,255, 90,232, 9,197, 7, 63,
+ 30,129,221, 35, 65, 16, 4, 8,130, 0, 81, 20,235, 56, 82,129,160,209,104,112,224,192, 1,240, 60, 15, 65, 16,106,125,242, 60,
+143,213,171, 87,227,150, 91,110, 1,207,243, 48, 26,141, 0,155, 12,120,201,161,139,107,130,207, 50,107,140,200,219, 11, 43,149,
+255,191, 29,247, 55,229,251,164,211,213, 32,132, 64,163,209,168,203,247,136, 8,124,125,203, 8, 0,192,152,252, 98,165,204,236,
+159, 55, 27,162, 86, 11, 65,212,160,203,212,167, 80, 82, 82, 98, 29, 51,102,204, 86,189, 94,255,157,138,206, 10, 78,158, 60,169,
+112,137,162, 88,167,220,115, 28,135, 15, 63,252, 16, 39, 78,156, 80, 21,119,171,213,138, 57,115,230, 40,113, 11,196,235,251, 93,
+ 69,220,185,164,164,164, 23,251,247,239, 63,113,217,178,101, 49,132, 16, 44, 88,176, 0,130, 32,224,134, 27,110, 64, 92, 92, 28,
+214,172, 89, 3,141, 70,131,199, 30,123,140, 21, 62, 6, 6,134, 43, 67, 96,253,248,227,143, 35,228,239,215, 92,115,205,225,173,
+ 91,183, 94,229, 99,229,195,237,118,107,220,110,119, 59,121,216,208,237,118,195,110,183, 99,252,248,241, 33,123,244, 30,167,163,
+142, 64, 10, 38,156,212,194,225,112, 96,236,216,177,138,136, 9, 37,174,212,220, 24, 8, 33,176,219,237, 16, 4, 1,173,155,199,
+227,233,177, 61,209,151,167,176,150, 2, 40,169,198,157,201, 2,246,165,182,195,155, 39, 75,113,162,162, 10,130,160,110,180, 84,
+146,164, 90,130,202,255,251,194,133, 11, 49,110,220, 56,240, 60, 95,103, 8,137,225,210, 64,114,185,194,150,195,250,230,141,219,
+102, 3, 0,240, 62,130, 92, 20, 69,104,245,122,240,162, 8, 65,171, 65, 73, 73,137,117,200,144, 33, 59, 13, 6,195,146,164,164,
+164,211,167, 78,157, 10, 89, 62, 41,165, 16, 69, 17,130, 32, 4, 45,243, 31,126,248, 33,150, 46, 93,138,222,189,123,171, 42,243,
+ 14,135, 3, 26,141, 6,179,103,207,174,179,255,157,119,222,169, 35,176,194,128, 0,224, 18, 19, 19,239, 91,190,124,121,164,124,
+253,184,184, 56,136,162,136,206,157, 59, 35, 34, 34, 2, 91,183,110,133,199,227, 81, 45, 86, 25, 24, 24,174, 76, 80, 74, 69, 0,
+ 87, 3,136, 7,224, 1, 80, 9, 32,218,231,144,243,222,207,120,249, 55, 33,100,119, 0,158, 94,222, 99,206, 19, 66,118,251,252,
+118, 0,208, 6,248,191, 20,128,193,187,217, 1,108, 7,208,217,231, 58,242,121,240,191,174,172, 12, 50, 81,243,160,186, 1, 8,
+240,240, 59,121,184,240,200,145, 35, 1,135, 11,253, 2, 31,178,149,212, 53, 73, 80,156,171, 79, 91,199, 41,255,143, 43, 40, 83,
+ 26,216,175,123,183,133,206,108, 66,207,231, 95, 9,155,232,242,141,161,184,184,184, 78,207,251, 98, 5, 22, 0,184, 92, 46, 24,
+ 12, 58,124,255,238,117, 56,251,139, 27,179,179, 11,177,106,215,113, 8,130,128, 81, 87,181,197,223,221, 64, 86,172, 30,255,114,
+123,224,148,168,170, 27, 24,165,180,142,184,242, 21, 89,132, 16,229, 63,118,179,249, 99, 16,119,117,186,226, 92, 45,107, 22, 81,
+199,181, 2,128, 85,221, 91, 64, 31, 97, 70,231,135,167,171, 42,159, 45, 71,221,172, 56, 87, 95,165,183,130,160,209, 64,212,105,
+241,247, 31, 11, 1,212, 12, 11, 14,236,218,113, 83, 25,175, 93,124,199, 29,119,252,178,126,253,122,163,154,176,106, 52,154, 90,
+130, 45,144,184, 18, 4, 1, 46, 63,209, 24,170, 83, 17, 76, 56,201,245,170,158, 14, 22, 44, 22,139, 99,213,170, 85,120,243,205,
+ 55, 17, 23, 23,135,161, 67,135, 34, 41, 41, 9, 43, 86,172, 0,165, 20, 15, 60,240, 0, 12, 6, 3, 12, 6, 3, 43,243, 12, 12,
+ 12,161,180,200,117, 51,102,204,232,153,149,149, 53,167, 79,159, 62, 31,111,223,190,125, 57, 33, 36,219, 71,123,140,242,182,101,
+217,242,111, 74,105, 47, 95,145,229, 21,105,241,132,144,108,249,120,223,223,242, 39,165,116, 48, 0,173,252,123,198,140, 25,157,
+179,178,178,230, 76,159, 62,253,201,185,115,231,106,102,204,152,209, 53, 43, 43,107,142,124,157, 64,225,240, 21, 88, 33,159, 2,
+236,116, 58,143, 15, 30, 60, 88,213,138, 31,171,213, 90, 20, 70,128, 5,116, 6,124, 93, 1, 93,132, 25,134,136, 8, 16, 78, 93,
+131,235,114,185, 32, 8, 2, 56,142,195,218,181,107, 97, 48, 24, 48,114,228,200,139, 30, 34,148, 69,155, 86,171,129, 16,205,225,
+142,215,246,224,252, 5,139, 50, 36,184,174,160, 16,187, 12, 6, 60,221,177, 43,204, 85, 5,168,176, 59,126,151,131, 53,110,220,
+ 56,216,108, 54,112, 28,167,252,199,113, 92, 88,177,202,208,120, 8,182, 8,129, 16, 2,125,100, 4,244,102, 51,120,129, 87,197,
+ 69, 41,253, 77, 8,105,181, 16,117, 90, 8, 26,141, 34,174,134, 12, 25,178,179,140,215, 46, 62,125,250,244, 78, 0,122,181, 2,
+ 75,118,176, 66,137, 43, 65, 16,224,116, 58, 85,137, 23,187,221, 14,141,230,183,153, 0, 39, 79,158, 12, 41,176,194, 69, 27,128,
+ 68, 8,145, 90,181,106,165,156,147,152,152,136,232,232,104, 72,146, 4, 73,146,160,215,235, 97, 48, 24,106, 93,151,129,129,225,
+138, 69, 40, 45,162,203,202,202,154,227, 43, 96,252, 5,141,175,112,242, 19, 81,190, 34,173,115,152,182, 63,219, 95, 52,201,215,
+ 37,132,100,207,157, 59,119, 84,152,112,156,247, 23, 88,114,131, 24, 16,190,195,133, 13,117,243, 10,117, 3, 51, 68, 69, 66,107,
+ 50,193, 59,253,138,134,227,114, 58,157,202,156,147,123,239,189, 55,104,175,222,119,110, 74, 56, 56, 28, 14,240, 28, 15,232, 90,
+ 66, 66,142,114,179, 82, 54,141, 6, 5,205,187,129, 20,157,134, 32,168,155,239, 47, 59, 88,178,136,122,224,129, 7,176,104,209,
+ 34,101, 98, 50, 0,240, 60,143,246,237,219,227,216,177, 99,172,170,253, 1,160,148,134, 29,182,214, 71, 70, 64,103, 54,131, 87,
+225, 52,202,251,149, 57, 76,122, 29,120,141, 6,130,166,102, 88,112,244,232,209,155,202,202,202, 22,119,234,212,233,103,212, 60,
+198,128,168,173, 63,129,202,249,226,197,139,107,137,171,250, 56, 88,114, 61,242, 69,160,225,194, 49, 99,198,168,117,176, 40, 33,
+132,138,162,136,193,131, 7,163,107,215,174, 88,181,106, 21, 36, 73,194,253,247,223, 15,131,193,128,249,243,231,195,237,118, 35,
+ 43, 43,139, 57, 88, 12, 12, 12,161,238,249,214,233,211,167, 63, 73, 8,201,246, 58, 73,121, 33,132, 84,160,182,189,151,159, 72,
+ 59, 31,228,184, 81,129, 68,150,239,119, 25, 51,102,204,232,236, 31, 14, 95,199,204, 87, 96, 53,214,251,219,106,161,236,208, 1,
+101, 66,187, 60, 44, 72, 8,193,183, 25, 87, 65,107, 54, 65,111, 54,163,223,202, 45, 74,175, 25, 47,190,170,202,193,146,133, 83,
+105,105,105,216, 33, 66,181,174, 24,175, 17,177,211, 44,130,138,124,173, 27,150, 40,138,224, 4, 17, 5,241,237, 64,132, 53, 16,
+ 60,110, 85, 55, 7,217,201,240, 93, 61,117,199, 29,119,128,227, 56, 69,100,117,239,222, 29,126,121,194,112, 9,113,102,195,119,
+248,230,182,154,186,234, 59, 44,152,221,187, 13,116, 17,102,232, 76, 38,100,174,222,174, 12,231, 98,254,123, 97, 57,143,188,255,
+ 54,242, 94,159, 11, 65, 20,113,243,222, 2,197,185,234,123, 85,219,157, 14, 83,228,226,147, 39, 79,238, 4,192,221,118,219,109,
+209, 61,122,244, 80,101,139, 17, 66,106, 77, 60, 23, 4, 33,160,184, 18, 4, 1,110,183, 91, 85,220,157, 78,167, 42, 39, 73,118,
+177,212, 52,148,114, 58, 69, 69, 69, 33, 34, 34, 66, 89, 65, 43, 59, 87,242,252, 77,181,245,146,129,129,225, 47,143, 96, 90,196,
+ 62,119,238,220,188,185,115,231, 42, 78,146,191,131, 21,228,190,123,131, 87, 76,197,203,226, 12,128, 61,208,252,172, 64,174,152,
+191,240,242,253, 47, 43, 43,107,142,127, 56,124,135, 37, 3,206,206,238,214,173,219, 55, 70,163,177,165,218,212,168,207, 67, 71,
+ 61, 78,103,157,158, 56, 33, 4,122,179, 25,218, 8, 51,116,102,115, 80,151, 43,216,141, 70, 30, 34,228,121, 94,185,233, 44, 89,
+178, 4,102,179, 25,119,221,117,215, 69, 77,114,175, 17, 88, 60,190,212,228, 3, 26,161,206, 77,139, 23, 69,156,140,106, 6, 78,
+ 20, 33,120,212, 57, 4,229,229,229,224,121, 30,207, 61,247, 28,178,178,178,148,101,244,190, 75,235,125, 93, 15,134, 75, 15,223,
+ 73,238,181, 92,213,136, 8,165,124,250,254, 31,110, 78, 34, 33, 4,240,184,107, 86, 11,234,180,138,184, 26, 61,122,244, 38,135,
+ 41,114,241, 85, 87, 93, 37, 59, 87,156,209,104, 12,187,106,214,183,110,200, 66,199, 95, 92,201, 46,169,252,221,229,114,169, 42,
+243,178,192, 90,180,104, 81,200,206,136,124, 93,181,229,148,227, 56,108,222,188, 25,123,247,238,197,189,247,222, 11,131,193,128,
+ 55,222,120, 3,110,183, 27,179,102,205,130,193, 96,128, 86,171,101,133,143,129,129, 33, 20, 98,100,129,227, 21, 73,181,156, 37,
+239,220,169, 81,190,191, 3, 57, 92, 94,199,105,115,152,246,240, 43,175, 48, 11, 8,217, 73,243, 59, 39,219, 95,156, 9,126, 78,
+ 9, 1, 0,173, 86,219,114,219,182,109,237, 36, 73,130,199,227, 65,168, 79,135,195,129, 91,111,189, 85,245, 67, 71, 37, 87,141,
+192,226,252, 86,202,233, 34, 35,160, 53,255,118, 3,243,185,137,133,109,197,101, 7,203, 87, 96, 61,247,220,115, 16, 4, 1,139,
+ 22, 45, 2, 0, 60,250,232,163,245,118,176,168, 4,108,247,108, 68,211, 5,221, 64, 23,235,113,110,243, 97,136,162,136,164,222,
+ 67, 32,245,252, 59, 74,181,145, 48,121,231, 85,169, 25,118, 44, 45, 45,197,137, 19, 39, 64, 8,193, 35,143, 60, 18, 82, 92,173,
+ 93,187,150,205,193,250, 3, 5, 22,199,243,181,242,195,183,124,250,137,175,240,227,100,110, 55, 68,157,174,214,106,193,178,178,
+178,197, 39, 79,158,204, 1, 64, 38, 78,156, 24,109, 52, 26,241,254,251,239, 91, 0,104, 86,174, 92,105, 8,199,233, 59,143,207,
+223,185,242, 23, 88, 30, 79,248, 33,108,185, 83,161,198,237,173,143,192,146,203, 55, 33, 4, 30,143, 71,113,174, 92, 46,151,242,
+ 91,167,211,177,130,199,192,192, 80, 71,139,248,225,188,223, 60, 39,226,231, 52,157, 15, 36,172,124,135, 3,229,239,132, 16, 87,
+ 0, 94,135,223,208,161,255,255,242,103,233,220,185,115,191,151,157, 43,159,255,107,133, 35,168,131,197,113, 28,236,118, 59, 14,
+ 29, 58,164,182,135,170,250,161,163,113,233,215, 96,252,137,114, 16, 66,176,166,127, 39,232,205,102,104,204, 38,100,124,182, 81,
+105,176, 11,178, 30,131,198,100, 70, 92,191, 33,170, 26,112,143,199, 83, 71, 96,149,149,149, 65, 20, 69,188,248,226,139,224, 56,
+ 14, 47,189,244, 18, 82, 82, 82,112,246,236, 89,100,102,102,170,186,217,112, 18, 7,253,157,177,208,255, 43, 2,220,189,109,208,
+249,111,255, 66,121,101, 11,236,119,152,208,161, 58, 31, 49, 27,158,135, 83,114,171,122, 76, 3, 33, 4,110,183, 27,223,127,255,
+ 61, 68, 81,132,219,237, 86,110, 62,148, 82,229, 41,249,242, 67, 29, 95,122,233, 37, 86,213,254, 0, 52,187,225, 38,220,113,198,
+ 2, 0,248, 38,227, 42,232, 76, 38,104, 35,204,232,247,197,102,165,124,254, 50,103, 26, 52, 38, 51,162,123,245, 87,197,217,241,
+254, 71,209,225,190,105, 40, 41, 41,177, 14,238,222,121,115, 57,175,251,176, 75,151, 46,202,156, 43,163,209, 8,189, 94, 79, 80,
+251,117, 50, 97, 69, 11,199,113, 97,197,149,252, 93,109,167,194,127, 21,110, 40,129,165, 22, 28,199,225,174,187,238, 66,114,114,
+ 50,222,124,243,205, 90,206,213,147, 79, 62, 9,151,203,133,249,243,231,179,194,199,192,192, 16,170,221,219,173,246, 88, 74,105,
+ 47, 31, 49,181,251, 98,120,235,115,189, 96, 8,216,242,218,237,246,130, 65,131, 6, 33,200,190, 20,157, 78, 87,171,117,149, 31,
+ 58, 26, 96,168,176, 11,128, 3,126, 17,255,109, 88,208, 59, 89, 88,235, 55,236,162, 53, 71, 64, 52,153,193, 5,110,196,235,112,
+ 6,114,176,228,161,147,242,242,114,136,162,136, 55,223,124, 19,145,145,145,176,219,237,129,122,222, 1, 57,121,158,135,229,132,
+ 5,199,159,217, 15,157,233, 40,218, 15,137, 64,132,120, 12,109,183,172,132,219,237, 0,124,134, 12,213,112,182,111,223, 30,207,
+ 61,247, 92,157,199, 51, 4, 67,122,122,122, 88,206, 6, 0,227, 12, 34, 98,116, 17,102,232, 35, 34,130,150, 79, 33,240,179,155,
+106,113,202,251,101,231,170, 74, 99,252,240,228,241,227, 57, 0,184,137, 19, 39, 70, 25,141, 70, 44, 92,184,208, 2,128,123,225,
+133, 23,140,105,105,105,188,154,112,114, 28,135, 37, 75,150,212,153,115, 21, 76, 96,169, 9,167,219,237,174, 35,176,198,142, 29,
+ 91,231, 65,163, 33, 28,172, 58,225,148,231, 96, 53,105,210, 4, 70,163, 81,121,237,150, 94,175,135, 94,175, 87,158, 14, 31, 98,
+168,149,149, 79,198,201, 56,175, 28,206, 75, 46,198, 26, 19, 1, 5,214,190,125,251,134, 7, 59, 33, 35, 35, 35,127,219,182,109,
+109,125,223, 77,232,118,187, 53,118,187,189,221,141, 55,222, 24,182,171, 44, 73, 18,116, 58, 29, 40,165,184,250,233,172,154, 46,
+ 60,247,219,144, 32,165, 20,209,125, 7,131,240, 60, 60, 30, 9, 46,151, 43,236, 42, 66,155,205, 86,107, 2,122,160,229,235, 85,
+ 85, 85, 33,159,243,227,207,105,181, 90,107,205,235, 34, 30,138, 95,214,173,168,187,154,208,123, 29,181,208,235,245,181,134, 77,
+ 84,218,165, 12,151, 8,242, 3, 60, 41,165,232,252,208,244, 26,167,136,231,106,237,143,234,213, 31, 68, 16, 33,213,204, 91, 10,
+183, 48,132,156, 63,127,222, 58,122,244,232, 77,148,210, 15,110,188,241,198,159, 80,243,176, 58,106, 54,155,117,162, 40, 74, 0,
+126, 5, 64, 47, 92,184, 16,117,250,244,105,201,102,179, 53, 15, 23,206,205,155, 55,227,232,209,163,232,209,163,135,226,124,202,
+155, 60,124,127, 49, 14, 86,160, 39,194, 7,123,146,123,125, 28,172,168,168, 40,104,181, 90,188,248,226,139,208,104, 52, 48, 24,
+106, 70, 65,231,207,159,175,164, 57, 3, 3, 3,195, 95, 9,245,126, 97,179, 36, 73,124,176,225,195,112, 67,133, 30,143,231,212,
+ 53,215, 92, 83,223,235,157, 11,115, 67, 60,181,101,203, 22,141,255, 11,105, 3,189, 0,215,231,191,176,156,187,119,239,214,132,
+ 56, 63,208,247,115,245,137,187,154,249, 43,110,183,251, 52, 43,162,151, 14,110,183,251, 84,239,222,189, 3,239,124,238,165, 96,
+249,122, 46,140,104,249,185, 93,187,118,103,204,102,243, 87,137,137,137,165,219,182,109,139,235,213,171, 87,156,239, 49,189,122,
+245, 74,246, 59,205,129, 16, 43,122, 9, 33,167,238,184,227, 14, 77,152,242,232,255,253, 84,152, 78,197,169,188,188, 60, 77,160,
+242, 30,236,147, 82,122, 74, 69,178,158, 24, 49, 98, 4, 23,168, 14, 5, 72,203,243,172, 20, 50, 48, 48, 92,177, 2,203,102,179,
+ 21, 14, 26, 52, 40,224,186,111,139,197,114, 50,212,185, 7, 15, 30,236,217,208, 17, 56,125,250,116,198,159,129,179, 49,226,206,
+112,249,231,209,193,131, 7,123, 3, 64,121,121, 57, 66,189,254,166, 62, 40, 44, 44,108,240,242,217, 24,156, 0,112,232,208,161,
+ 62,172,100, 49, 48, 48, 48,129,165, 2,106, 31,199,192,192,192,192,192,192,192,192,112,165,130, 99, 73,192,192,192,192,192,192,
+192,192,208,176, 32,168, 89, 9, 16, 8,245, 89, 29,208,229, 34,174,125,128,113, 50, 78,198,201, 56, 25, 39,227,100,156, 87, 28,
+103, 56,238,203,114,117,226,229,134, 46,140,147,113, 50, 78,198,201, 56, 25, 39,227,100,156, 87, 26,216, 16, 33, 3, 3, 3, 3,
+ 3, 3, 3, 67, 3, 67, 96, 73,240,135,129, 7,224,105, 40, 50, 74,105, 52,128, 96, 47,116,115, 16, 66,202, 46,146, 87, 11, 64,
+244,110, 0,224, 2,224, 34,132, 56, 88, 22, 50, 48,252,181,144,158,158, 62,153, 82, 58, 27, 53,111,129,122, 49, 55, 55,247, 45,
+150, 42, 12, 12, 13, 44,176, 90,183,110,189,135,227,184,212, 64, 47, 32, 14,246, 92, 28,143,199,115,234,200,145, 35,106,151,186,
+ 11,201,201,201, 99, 77, 38,211,245, 60,207,247,245,158,191,173,186,186,250,251,179,103,207,126, 10,192,125, 49, 17,106,217,178,
+101,164,205,102,187,149, 16, 50,193, 43, 16, 62,210,235,245,255,119,252,248,241,138,139, 76,163, 54, 73, 73, 73, 31,137,162,200,
+ 23, 22, 22, 94, 15, 0,205,154, 53,251,222,225,112,120,138,139,139, 39, 0, 56, 90, 79, 62, 78,163,209,100, 93,115,205, 53,253,
+182,108,217,242, 63, 0,239, 52, 80, 94,234, 56,142, 59, 17,104,135, 36, 73,105, 23, 33,172, 52, 0,162,230,207,159, 31,187,116,
+233,210,238,103,207,158,237, 10, 0,201,201,201,251, 39, 78,156,248, 3,165,244, 87, 0,229,132, 16, 39,171, 70,127,110,180,109,
+219,118, 15,199,113,169,245,121,150,156,247, 21, 85,167, 14, 29, 58,212, 51, 24, 39,207,243,169, 97,158, 71, 87,231,187, 36, 73,
+191, 28, 60,120, 48,224, 35, 35,218,181,107,183,131,231,249,150,225,194, 22, 40,156,193, 30,193,209,174, 93,187, 61, 60,207,167,
+214,151, 83,146,164, 95,242,242,242, 50, 26,146,243, 82,135, 19, 0, 50, 51, 51,117,213,213,213, 31,153,205,230,110,213,213,213,
+147, 37, 73,122,118,227,198,141,137, 28,199, 97,240,224,193,207,166,167,167, 31,215,233,116, 11,108, 54,219, 15,102,179,121,252,
+166, 77,155,236,172,198, 48, 48,252,254, 70,247, 92, 85, 85, 21,149, 33, 73, 18,117,185, 92,212,110,183, 83,171,213, 74,171,171,
+171,105,101,101, 37,173,168,168,160,229,229,229,180,180,180,148,118,238,220,217,255,161,139, 1,199,104, 83, 82, 82,186,180,111,
+223, 62,255,173,183,222,178, 23, 22, 22, 82,167,211, 73, 93, 46, 23, 45, 44, 44,164,111,191,253,182,189,125,251,246,249, 41, 41,
+ 41,193,198,119, 3,253,207, 37, 39, 39, 15, 73, 78, 78, 94, 62,108,216, 48,199,250,245,235,169,221,110,167, 22,139,133,174, 94,
+189,154, 14, 24, 48,192,145,156,156,188, 60, 57, 57,121, 8, 2, 15,139, 6,187, 86,247,150, 45, 91, 30, 61,117,234,148,103,203,
+150, 45,206,184,184,184, 47,227,226,226,190, 44, 44, 44,244,156, 60,121, 82, 74, 77, 77, 61, 10,160,123, 61,194, 9, 0, 55, 79,
+155, 54,173,224,248,241,227,150,204,204,204, 29, 62,255, 19,132,127,114,123,151, 64,206, 21,165, 52,145, 82,154,132,154,135, 83,
+214,217, 40,165, 73,222, 99,162, 85,114,154,142, 29, 59,150,154,152,152,152,229,117,170,106,241, 17, 66, 28,137,137,137, 89,199,
+142, 29, 75,165,148,154,234, 17,247,223, 3,198,217, 72,156, 87, 93,117, 85, 81,117,117, 53,165,148, 82,143,199, 67,157, 78, 39,
+181,217,108,212, 98,177,208,170,170,170, 90,245, 92,222,202,202,202,104,151, 46, 93,206,133,224, 60,103,177, 88,106,181, 29, 14,
+135,131,218,108, 54,106,181, 90,169,197, 98,161,213,213,213,181,182,170,170, 42,218,189,123,247,194, 16,156,103,229,112, 74,146,
+ 68,221,110, 55,117, 58,157,212,225,112, 80,187,221, 78,109, 54, 91,173, 77,254,175,119,239,222, 65,195,217,161, 67,135,115, 86,
+171, 85, 53,167,188,245,232,209,227, 76, 67,113,202,255, 93,125,245,213, 69,161, 56,109, 54,219,197,132,179, 48, 84, 89, 74, 79,
+ 79,255,252,248,241,227,212,106,181,210, 33, 67,134,216, 31,121,228, 17,234,241,120,104,118,118, 54, 29, 59,118, 44,189,231,158,
+123,104,105,105, 41,157, 49, 99, 6,237,209,163,199, 23,172, 30, 49,206, 70,230,188, 50, 28, 44,142,227, 96, 50,153,240,241,199,
+ 31, 7,124,253,140,255,247,180, 52,117, 38, 73, 98, 98, 98,207,212,212,212, 77, 43, 87,174, 52, 36, 36, 36, 40,255, 59,157, 78,
+ 68, 70, 70,226,174,187,238,210, 14, 30, 60,184,237,237,183,223,190,211,237,118,103,158, 59,119,110, 79, 40,190,164,164,164, 49,
+113,113,113,111, 77,157, 58, 53,113,244,232,209,136,137,137,169,181,127,212,168, 81, 24, 57,114,164,230,151, 95,126, 25,247,233,
+167,159,142,251,223,255,254, 87, 84, 85, 85,245, 96, 81, 81,209,231,161,120,141, 70,227,224,182,109,219,190,191,126,253,250,212,
+232,232,104, 52,109,218,148,123,230,153,103,186,180,110,221,218,144,156,156,204,157, 57,115, 6,159,127,254,121,235,137, 19, 39,
+174, 58,121,242,228,100,187,221,190, 94, 69,244,181,177,177,177,143,253,235, 95,255,138,171,172,172,116,239,221,187, 87,118,191,
+180, 58,157,238,217,107,175,189,182,199,198,141, 27, 63, 1,176,248, 98,156, 43, 74,105, 5,126, 27,202,147,225,146,247,171,113,
+178, 40,165,218,189,123,247,198,244,237,219,247, 11,187,221,222,227, 31,255,248,199,233, 87, 94,121, 69, 27, 25, 25, 25, 9,128,
+148,149,149, 93,152, 57,115,166,231,141, 55,222,120,162, 83,167, 78,131,182,109,219,118, 51,165,148, 13, 25,254,201, 97, 52, 26,
+177,122,245,234,128,175,153, 10, 84,231,163,163,163,195,190,141,192, 96, 48, 96,237,218,181,202,121,190,175,150, 10,244, 61, 58,
+ 58, 26,148,210,144,164,122,189, 30, 91,183,110, 85, 94, 3, 20,172, 93,146, 63,141, 70, 35, 8, 33, 92, 56,206, 77,155, 54,133,
+229,146, 63,205,102, 51, 80, 51,196, 31, 54,156,225,226, 44,127, 55,153, 76, 97,211, 83,167,211, 41,156,190, 28,193,126,155, 76,
+ 38,132,235,180, 25, 12,134,110,137,137,137,200,201,201,193,243,207, 63,175,237,220,185, 51,242,243,243,193,113, 28, 38, 79,158,
+140, 78,157, 58,161,168,168, 8,157, 58,117,194,214,173, 91,187,179,154,194,192,208, 0, 2, 75, 70,176, 6,214,255, 59, 16,240,
+ 53, 24,181,150, 90,166,165,165,233, 68, 81,252,108,245,234,213,134,184,184,223,222, 22,226,112, 56, 80, 89, 89,137,170,170, 42,
+ 84, 86, 86,194,100, 50, 97,193,130, 5,134, 9, 19, 38,124,166,211,233,218,157, 56,113,194, 30,140,147, 16, 50,111,223,190,125,
+137,110,183, 27, 90,173, 54,168, 88,108,211,166, 13, 30,124,240, 65,244,235,215, 47,105,220,184,113,243, 0,124, 30,140, 19, 0,
+146,147,147,223,222,182,109, 91,170, 86,171, 69,126,126, 62, 78,157, 58,133, 41, 83,166,164, 73,146,132,194,194, 66,228,231,231,
+227,204,153, 51,120,239,189,247, 82, 39, 76,152,176,224,244,233,211,109, 67,197,221,139,123, 30,121,228,145,182, 49, 49, 49,220,
+ 43,175,188, 82, 94, 85, 85,245,158,247,255, 25,243,231,207, 31,159,153,153, 25,255,143,127,252,131,110,219,182,237, 99,212,188,
+ 46, 37,104,122,250,206,185,242, 14,231, 1,128,135, 82,122,216,239,156, 14, 62,251, 65, 41, 77, 4, 96, 39,132,148, 7,224, 36,
+ 0, 34,135, 15, 31, 62,205,110,183,247,216,178,101,203,209,126,253,250,165, 1, 56, 75, 41, 61, 15, 0, 49, 49, 49,166,215, 95,
+127, 61,113,212,168, 81, 63, 13, 30, 60,184,199,240,225,195,167,157, 63,127,126, 54,165,180,132, 16, 66, 67,196,253,247,130,113,
+ 54, 18,167,119, 40, 9,130, 32, 96,196,136, 17, 32,132, 4,124,223,230,142, 29, 59, 48,104,208, 32,136,162,136,187,239,190, 91,
+ 53,231,176, 97,195,224,118,187,235,240,249, 11, 16,249, 29,157,161,226, 78, 41,173,245,142,208, 64,226,194,119, 11,192, 87,135,
+ 83,146,164,128, 92,193, 68,150,252,178,122, 53,113, 87, 43, 46,195,133,211,151, 83, 20, 69,100,100,100, 96,239,222,189, 33,197,
+ 86,184,112, 2, 64,117,117,245,157, 55,222,120,227,154, 41, 83,166,232, 1,160,164,164,164,214,139,232,143, 28, 57, 2,187,221,
+142,101,203,150,193,110,183,223,203,234, 17,227,108,100,206, 80,157,127, 17,192,213, 0,226, 81, 51,127,185, 18, 64,180,247, 94,
+169, 5, 80, 10,192,224,221,236, 0,170, 0, 52,241,158, 94,226,237,108,248,190,166,236,188,239, 75,161, 41,165,189,188,220,242,
+ 43,187,226,125,142,149,175,225,255,219,255,179, 22,183, 92,171,229,225,159, 76,223, 10, 45,191,132, 53,156,184,146, 27, 71, 21,
+ 9,244,192,140, 25, 51, 18,125,197,149,221,110, 71, 69, 69, 5, 42, 43, 43,149,207,252,252,124,104,181, 90,140, 29, 59, 54,145,
+ 82,250, 64, 24, 90, 13,207,243,216,187,119, 47, 86,174, 92,137,227,199,143,215, 57,224,216,177, 99,120,253,245,215,241,234,171,
+175,162,162,162, 2, 0, 52,193,200,186,117,235,246,252,248,241,227,119, 14, 24, 48, 64, 39, 8, 2,246,237,219,135,118,237,218,
+ 97,251,246,237, 56,121,242, 36, 46, 92,184,128, 35, 71,142,160, 75,151, 46, 56,122,244, 40, 42, 42, 42,208,185,115,103, 93,143,
+ 30, 61,182,164,165,165, 61, 31, 42,156, 41, 41, 41, 79,254,235, 95,255,210,157, 61,123, 86, 90,178,100,201, 54, 0,219, 1, 76,
+121,234,169,167, 38, 13, 27, 54, 44,254,240,225,195, 21,187,119,239,222, 19, 68, 92, 5,114,174, 78,114, 28,119,130, 82, 90, 65,
+ 41,181,162,102, 2,122,173,155,145,219,237,182, 91,173,214,242,210,210,210, 18,142,227, 78,112, 28,151, 15, 64, 23,140,115,226,
+196,137,173, 75, 74, 74,238,255,247,191,255,125,188, 95,191,126,105,148,210, 35,148,210, 82,111,129,181,187,221,238,210,178,178,
+178,159,250,246,237,155, 60,126,252,248,163, 37, 37, 37,247, 79,156, 56,177,117, 8, 78,134,203, 31,212,227,241, 64, 20, 69,108,
+220,184, 17, 91,183,110,197,214,173, 91,177,109,219, 54,108,223,190, 29, 59,118,236,192,142, 29, 59, 32, 8, 2,182,111,223,142,
+237,219,183,227,193, 7, 31, 12, 91,231, 61, 30, 15, 4, 65,192,166, 77,155,176,107,215, 46,101,219,189,123, 55,118,237,218, 5,
+131,193,160, 70, 12,249,118,166, 20,206, 64,219,219,111,191,173,136, 67,185,109,226, 56, 46,164, 43,230, 47, 92,252, 5, 75, 90,
+139, 22,117,246,133, 11,167, 44,218, 4, 65,192,127,255,251, 95,156, 62,125, 26,111,190,249, 38,142, 29, 59,134,151, 95,126, 25,
+121,121,121,152, 53,107, 22,118,239,222,141, 25, 51,102, 96,203,150, 45,242,203,223,105, 56, 78, 89, 92, 57,157, 78, 37, 60, 71,
+142, 28,193,156, 57,115,176,111,223, 62, 60,251,236,179,216,177, 99, 7, 30,123,236, 49,240,124, 72,147, 13,233,233,233,147, 9,
+ 33,159,182,111,223, 94, 55,112,224, 64, 8,130,128, 57,115,230, 72,207, 62,251,108,241, 83, 79, 61, 85,156,157,157, 77, 91,183,
+110, 13,135,195,129,136,136, 8, 80, 74, 23,167,167,167, 63,192,170, 11, 67, 99,182, 69,254, 90,196, 7,215,205,152, 49, 99, 32,
+ 33, 36, 59, 35, 35, 99, 34,128,104, 66, 72, 54, 0,173,247, 51,110,198,140, 25,189, 9, 33,217, 51,102,204,232, 9,160, 9, 33,
+ 36,219,251,251,122, 0,113,242,111,239,241,241,126,226, 45,222,231,255,120,191, 99,181,129,126,251,127,250,115,251, 58, 88,196,
+ 27, 49,226,219, 64,214, 71, 96,133,107,112,205,102,243,200,225,195,135,107,124,197,149,175,115, 37,127, 86, 86, 86,226,167,159,
+126, 66,151, 46, 93, 52,102,179,121, 36,128,255,132,181,226, 4, 1, 77,155, 54, 69, 73, 73, 9, 14, 28, 56,128,180,180, 52,184,
+ 92, 46,124,247,221,119, 40, 43, 43,131, 70,163,129, 70,163,129,195, 17, 90,187,116,232,208, 97,196,210,165, 75,123,254,239,127,
+255,187, 32, 8, 2,142, 28, 57,130,143, 62,250, 8,148, 82, 52,105,210, 4, 22,139, 5,197,197,197,152, 55,111, 30,156, 78, 39,
+204,102, 51, 82, 82, 82,244, 15, 60,240, 64,191,153, 51,103,138, 39, 78,156, 8, 38,178,174, 25, 51,102, 76,100, 68, 68, 4, 30,
+126,248, 97,201,233,116,190, 10,224,218, 49, 99,198, 60,249,224,131, 15,198, 22, 20, 20, 56,238,185,231,158, 61, 78,167,115,158,
+108, 30,250, 11,166, 0,130, 53,168,115,229,118,187,229, 52, 61, 94, 89, 89,137,132,132,132,230,148, 82, 77,152, 60,210,108,223,
+190, 61, 3, 0,255,194, 11, 47,232, 41,165,231,124,195,224,116, 58,101, 78,119,121,121,121,241, 99,143, 61,230, 94,190,124, 57,
+239, 61,231, 16, 0, 27,107, 31,254,124,144,133,139, 40,138, 24, 49, 98, 68, 45, 65,177,121,243,102, 12, 31, 62, 92,169,239, 26,
+141, 70, 57, 46, 28,167,175, 43, 38, 59, 79, 50,239,247,223,127, 95,199,121, 81,217, 73, 83, 28,150, 64,194,199, 95,116,201, 29,
+ 69, 53, 98, 40,144,200,146,219, 22,127,103, 72, 77, 56, 69, 81,196,131, 15, 62, 8, 65, 16,240,216, 99,143, 65, 20, 69, 92,125,
+245,213, 16, 4, 1,125,250,244,129, 32, 8,184,254,250,235, 85,119, 80,229,112,238,216,177, 3,233,233,233, 74,120,174,190,250,
+106,244,234,213, 11,130, 32,160,127,255,254, 16, 4, 1, 67,135, 14, 13,203, 73, 41,125,118,227,198,141,137,102,179, 25, 63,253,
+244, 19,120,158, 7, 33,164,116,239,222,189,137, 0,112,195, 13, 55,148,216,108,182, 56,155,205,134, 65,131, 6, 33, 35, 35, 35,
+126,249,242,229,207, 0, 96, 43, 11, 25, 26,181, 73,242,215, 34,178, 1,144,149,149, 53,135, 82, 58, 42,216,137,242,126, 66, 72,
+246,220,185,115, 71,121,203,121,157,223,178,203,228, 39,222, 58,251, 58, 80,242,121,190,215, 11,117,109,191,227,207,251, 11, 44,
+ 10, 96, 64,160, 70, 55,144, 85,238,255, 93, 77, 3, 97,179,217,174,150,221, 43,155,205, 86, 75, 80, 85, 85, 85,213, 18, 90, 14,
+135, 3,173, 90,181,130,205,102,187,186,190, 55,139,228,228,100, 56,157, 78, 44, 90,180, 72, 17, 86,190, 34, 33, 20, 14, 30, 60,
+120,124,231,206,157, 61,210,211,211, 99,190,248,226,139,243,131, 7, 15,142, 31, 54,108, 24,244,122, 61,108, 54, 27,220,110, 55,
+174,185,230, 26,116,232,208, 1,197,197,197,248,230,155,111, 74,218,181,107,215, 36, 39, 39, 71, 42, 42, 42, 58, 17,130,122,208,
+160, 65,131, 64, 8,193, 55,223,124,243, 43,128, 92,189, 94,255,249,156, 57,115,162,237,118,187, 52,105,210,164,194, 95,127,253,
+245, 49, 0, 46,173, 86,251,159,235,174,187,238,154,245,235,215,127, 34, 73, 82,189, 27, 51,187,221, 94, 43,109, 43, 43, 43, 97,
+ 52, 26,213, 60, 18, 66, 44, 43, 43,235, 10, 0, 70,163, 49, 22, 62, 43, 36,173, 86,171,146, 71,222,252,177,197,198,198,154, 0,
+192,123,142,200,218,133, 63, 47,228,155,247,198,141, 27,107,213,111,217,129,242,175,243, 90,173, 22,171, 87,175, 86,197,233, 43,
+166, 84, 12,231,133,116,155,100,129, 37, 8, 2,222,123,175,102,132,253,225,135, 31, 86,206,247,191,134,154,246, 66, 22, 67,130,
+ 32,160,195,115, 18, 0, 39, 78,189,166,135, 40,214, 20,105,255, 48,123, 27, 83, 85,174,216,155,111,190,137, 81,163, 70, 33, 59,
+ 59, 59,228,231,200,145, 35, 85,133, 83, 16, 4,232,116,186, 90,194,111,223,190,125, 1,121, 23, 46, 92, 24,118, 78,155, 36, 73,
+248,234,171,175,192,113, 92, 45,199,235,233,167,159,254,151,201,100, 50,111,218,180, 9,231,206,157, 67,117,117, 53,170,170,170,
+ 16, 19, 19, 19, 61,104,208,160,125, 69, 69, 69, 5,135, 14, 29,186,153,213, 28,134, 70,114,177, 6, 4,248,223, 58,125,250,244,
+ 39, 9, 33,217,211,167, 79,127,114,238,220,185,121,222,186,145,237, 87, 87,178,195,212,165,108,175, 24,218,237,173,203,218,130,
+ 51, 63, 0, 0, 32, 0, 73, 68, 65, 84,189,252,196,219,121, 66,200,110, 74,233, 13,193,206, 5,224,240, 19, 84,181,134, 8,101,
+238,144, 14,150,255,220,132, 80,223,189, 22,119,184, 6, 87, 32,132,212, 17, 0,129, 28, 44,151,203,133,210,210, 82, 72,146,212,
+160,207,234, 10, 39,176, 14, 28, 56,112,215,228,201,147,207, 68, 69, 69,117, 43, 45, 45, 61,171,211,233,250,111,222,188,185,153,
+203,229, 66,100,100, 36, 34, 35, 35,241,245,215, 95, 35, 42, 42, 10,255,254,247,191, 79, 90,173,214,237, 38,147, 41,209,106,181,
+254, 88, 84, 84,244,116, 80,229, 34,138,131,250,247,239,143,220,220, 92,148,149,149,109, 0,208,109,194,132, 9, 67,155, 53,107,
+ 70,102,207,158,109, 59,122,244,232, 91, 0,206,155, 76,166,255, 46, 93,186, 52,179, 71,143, 30,230, 73,147, 38, 97,211,166, 77,
+239,215,199, 25,178, 88, 44,181,132,149,156,166, 17, 17, 17,170,158,185,229, 77,111, 74, 8,161,114,207,223, 87, 88,249, 8, 96,
+202,243,188, 4,128, 54,116, 30, 49, 92,122, 7, 75,174,235,127,251,219,223,234, 76,110,215,104, 52, 88,179,102, 13,110,186,233,
+ 38,165,195,146,158,158,174,218,109, 26, 61,122,180, 34, 8,214,172, 89, 19, 84, 96,133, 27,210,242,119,155, 30,122,232, 33,136,
+162,136,183,222,122, 11, 83,167, 78, 5,207,243,120,237,181,215,192,113, 28,158,121,230,153,122,139, 75, 81, 20,113,252,165,154,
+207,212, 71, 42, 80,250, 78, 34, 0, 32, 34, 50,178, 38, 62,146,164,254, 14,225,141,123, 56,231,202, 87, 88,133, 27, 34,244,117,
+ 1,243,243,243,149,239,125,250,244,169,229, 92, 9,130, 16, 86,176,121,175, 55,107,224,192,129,179, 83, 83, 83, 19,166, 76,153,
+ 66, 4, 65, 64,207,158, 61,155, 12, 30, 60,184, 92, 16, 4,253,163,143, 62, 26,104, 42,133, 8,160, 91,199,142, 29, 77,172,230,
+ 48, 92, 98, 7,203, 62,119,238,220,188,185,115,231, 6,116,168,252,157,164, 80, 78,147, 44,172,188, 66, 40, 94, 22,109,168,153,
+159,188, 59,220,185,240, 14, 9, 6,114,185,124,225,239, 96,205,244,111,120,212, 8, 44, 53,243, 39,188,174,200,254,146,146,146,
+ 62, 58,157, 14, 21, 21, 21,117,110,218,190,162,128,231,121, 20, 23, 23,195,104, 52,238,111,200,156, 11, 55, 68, 8,192,246,243,
+207, 63, 79,243,249,221,107,236,216,177,203, 63,249,228,147, 86,235,214,173, 67, 78, 78, 14,154, 52,105,130, 57,115,230,252, 82,
+ 80, 80, 48, 30,192,238,226,226,226,176,215,109,221,186,117, 39,179,217,140,109,219,182, 1,192, 22, 0,119,222,119,223,125,196,
+233,116, 98,193,130, 5, 22, 0,235,162,162,162, 62, 95,177, 98, 69,183,110,221,186,233,214,173, 91, 87,153,147,147,179, 81,165,
+184,242, 80, 74, 3, 10,171,202,202, 74, 84, 87, 87,195,108, 54,171, 17, 88,238,200,200,200, 3,149,149,149,183, 90,173,214, 10,
+157, 78, 23, 81, 81, 81, 97,247,117, 24,171,170,170, 80, 93, 93, 13, 65, 16,196,252,252,252, 51, 0, 90, 71, 70, 70, 30,192, 69,
+ 62,183,140,225,143, 7,199,113, 84, 22, 25,235,214,173, 11, 88,215, 69, 81,196,119,223,125, 87,171,190,127,243,205, 55, 97, 69,
+155, 32, 8,202, 74,194,112, 14,150, 79,227, 26,218,102, 21, 69,240, 60,143,119,222,121, 7,148, 82,197,185,226, 56, 14,211,167,
+ 79,135, 78,167,195,139, 47,190,136,233,211,167,171,114,177,124, 93,177,150, 79, 88,127,107, 28,189,231, 58, 29,142, 26,151,158,
+227,124, 69,150, 42,167, 45,220, 4,247,250,136, 96, 95,167, 77,167,211, 5,157,220, 30,224,102, 21, 16,185,185,185, 31,116,239,
+222,253,104,124,124,252,218,140,140, 12,221,158, 61,123,240,224,131, 15, 18,187,221, 30,185,110,221, 58,229,186,129,210,171,186,
+186, 90,207,106, 14, 67, 35, 58, 88, 51, 3,252, 31, 35, 11, 39,175, 24, 82, 91,119,178,125,143,151, 57,252, 69,145,215, 17,219,
+ 28,142, 43,208,185,193, 32, 4,171,132,254,141, 68, 56,161,165,166,247,105,181, 90,215,111,220,184,177,215, 77, 55,221, 36,132,
+ 26, 30,172,170,170, 66, 98, 98, 34,142, 29, 59,230,182, 90,173, 97, 31,127,224,241,168,127, 32,122, 56, 7, 43, 0,118,151,148,
+148,184,157, 78, 39,218,182,109,139,148,148, 20, 88,173, 86,188,254,250,235,110, 0,187, 85,114,104, 76, 38, 19, 15, 0,229,229,
+229, 64,205,106,135,118,237,218,181, 67,110,110, 46, 46, 92,184,176, 10,192,160,153, 51,103,118,191,246,218,107, 53,159,124,242,
+137,229,222,123,239, 93,229,114,185,102,171,236,129, 59,220,110,119, 75,142,227,156,101,101,101,167,125,133, 85, 98, 98, 98,140,
+217,108,230,138,139,139, 93,106,146,167,107,215,174,187, 78,157, 58,133, 23, 94,120,225,252,156, 57,115,218, 85, 86, 86, 94, 40,
+ 47, 47,119,203,194,170,162,162, 2, 86,171,149,139,143,143,215, 45, 92,184,208, 8, 0, 93,187,118,221, 5,128, 61,112,244,207,
+220,162,249, 45,104, 9,244,168, 6,181,147,209,253,133,203,141, 55,222, 88,199, 17,147,183, 21, 43, 86,212,154,215, 20,110,232,
+ 77,230,124,251,237,183,241,240,195, 15, 67,167,211, 97,254,252,249,181,230, 96, 5,233, 17, 7,229,148, 69, 91,203, 39,172, 40,
+122, 35, 22,162, 40, 34,238,222,115,181,134, 8, 3,196, 77,149, 16,156, 51,103, 78,131, 12, 17,250,138, 62,249,145, 56,139, 22,
+ 45,194,216,177, 99,177,101,203,150,139, 30, 34,108,217,178,229,210,215, 95,127, 93,119,232,208, 33, 84, 84, 84,224,252,249,243,
+176,217,108, 40, 44, 44, 84,242, 48,136, 83,110, 96,181,134,161,145,220,171, 96, 56,239, 55,127,138,248, 14,215,133,248,244, 63,
+ 30, 62,255,249,242,158, 39,132,184, 2, 92,239,124, 0, 81,229,127, 13,223, 99,206, 7,114,176, 2,221,184, 85, 63,166,193, 59,
+ 65, 50,156, 16,152,247,220,115,207,221,223,175, 95,191,216,200,200, 72,156, 57,115, 38,160,131, 21, 25, 25, 9,167,211,137,141,
+ 27, 55, 86, 72,146, 52, 47, 76,134,184, 92, 46, 23, 18, 18, 18, 80, 82, 82, 2, 41,136,141,207,113, 28, 12, 6, 3,170,170,170,
+128, 48,147,199, 3,221, 40, 92, 46, 23,156, 78, 39,156, 78, 39, 92, 46, 87,125, 11,141,193,251, 76, 26, 84, 87, 87, 3, 64,117,
+211,166, 77, 91,235,245,122,121,213, 99, 62,128,129,195,134, 13, 19, 75, 75, 75,233, 61,247,220,179,131, 82,250, 96, 24, 87,200,
+177,113,227,198, 22, 0, 96, 48, 24,242, 1,160,176,176,208, 85, 86, 86,134,170,170, 42,197, 33, 52, 24, 12,184,249,230,155,147,
+ 40,165,216,184,113, 99, 11,141, 70, 67, 67,136, 33,123,118,118,246,193,168,168,168,229, 89, 89, 89,227,111,184,225,134,188,174,
+ 93,187,182,172,170,170, 42,182, 88, 44, 86,171,213, 74, 5, 65,208,196,197,197,233,214,174, 93,123,116,199,142, 29, 67, 34, 35,
+ 35,151,103,103,103, 31, 68,205, 42, 67,134, 63, 99,139,230, 55,183, 41,144,168,170,207, 10, 58, 95,225, 34, 8, 2,190,251,238,
+187,144, 46,142, 90, 78, 95,145, 49,109,218, 52,188,241,198, 27,117, 28,172,217,179,107,250, 36, 79, 61,245, 84,189, 28, 34, 65,
+ 16, 80,244, 70, 44,146, 30,250,181,142,131, 69,188,225,171,207, 16,161,124,254,172, 89,179, 32,138,162, 50,132, 55,100,200,144,
+ 90, 67,131,106,133,149, 47,103,113,113, 49, 4, 65, 64,108,108, 44,198,143, 31,143,161, 67,135,214,225, 83,203, 91, 88, 88,248,
+195,171,175,190,218, 60, 37, 37, 5,159,124,242,137,195,100, 50,105, 7, 14, 28, 72,203,203,203, 73, 40, 7,203,106,181, 50, 7,
+139,225, 82,183, 83,187, 47, 37,111, 67, 92, 79, 8,215,232,254,206,199, 52,116,129,207,179, 50, 78,156, 56, 81,158,148,148, 52,
+ 97,220,184,113, 95,188,243,206, 59,134,214,173, 91,227,200,145, 35,184,112,225, 2,156, 78, 39, 52, 26, 13,154, 54,109,138,170,
+170, 42,124,246,217,103, 22,139,197, 50,161,168,168,168, 60, 20, 39, 33,228,169, 17, 35, 70, 44,124,250,233,167,245,157, 58,117,
+194,133, 11, 23, 80, 85, 85,165,244,188, 8, 33,136,140,140,132,209,104,196,129, 3, 7,176, 99,199, 14, 43, 33,228,169, 80,156,
+129,132,166, 44,172,100,161, 21,110,101,146, 31,167,201,104, 52,202, 61, 63, 0,112, 55,111,222, 60, 17,128, 44,176, 78,180,106,
+213,234,233, 54,109,218,144,165, 75,151, 82, 74,233,186, 32,226, 74,225, 36,132, 92,160,148,150, 1, 72,116, 56, 28, 26, 0,168,
+168,168,112,198,197,197, 37,232,116, 58, 73,167,211, 73,122,189, 94, 58,123,246,172,219,237,118,107, 0, 32, 51, 51,211, 1,224,
+156,223, 92, 15, 95, 78,137, 82, 90,185, 96,193,130,231,239,188,243,206, 62,125,251,246,237,124,207, 61,247, 28,186,247,222,123,
+145,146,146, 18, 83, 85, 85,101,203,207,207, 47,123,231,157,119,108,187,118,237, 26, 34,138,226,137, 5, 11, 22, 60, 15,160,146,
+ 16, 34,169, 77,207,139, 4,227,108, 36, 78,185, 60, 4, 18, 86,190,191, 85, 8,161, 90,225,148, 69,219,173,183,222,170,172, 62,
+244,119,174,234,203, 9, 64, 89, 65,248,248,227,143,215, 10,223,211, 79, 63,173,182, 87,236, 27,119,197,109, 18, 4, 1,229,139,
+ 82,106,137,191,122,136,170, 58,156,130, 32,224,217,103,159, 85,237, 96, 5,152,131, 21, 52,156,153,153,153,168,174,174,134, 40,
+138, 88,179,102, 77, 80, 7, 43, 92,122, 26, 12,134,241,171, 86,173,250, 72,167,211,117,117, 56, 28,119,151,148,148, 44,177, 88,
+ 44,205,203,202,202, 66, 58, 88, 54,155, 77,199,234, 17,227,196, 37,126, 22,214,159, 13, 33,187,120,110,183, 27,205,154, 53,171,
+245,110, 43,121, 50, 59,207,243,202,202, 19, 53, 43, 8,101, 20, 21, 21,173, 1, 48,230,230,155,111, 94,118,231,157,119, 70,116,
+232,208, 65, 76, 75, 75,131,213,106, 69, 65, 65, 1, 10, 10, 10,220, 27, 54,108,168,176, 88, 44,183,123,143, 13,137, 51,103,206,
+252,207,237,118,127, 55,113,226,196,103,187,119,239, 62,101,234,212,169,124,171, 86,173, 80, 94, 94,142,152,152, 24,196,199,199,
+163,160,160, 0,159,125,246,153,167,172,172,108,161,199,227,153, 85, 92, 92,124,190, 62,137,228,118,187,121,151,203,133,113,227,
+198, 65,146, 36,204,159, 63, 31,110,183,155,175, 7,133,211,233,116, 82, 0,164,164,164, 4, 0, 44,178,224,250,249,231,159, 1,
+224,100,139, 22, 45,204, 0,176,126,253,122,130,154,231, 99,169, 81,222,148, 82,170, 56, 89, 29, 58,116, 40,240,111, 20,101,231,
+ 74,118,189,194, 77,164, 37,132,216, 40,165,231,237,118,251,176, 71, 30,121,228,217, 69,139, 22,141, 95,180,104, 81,157,227, 34,
+ 35, 35,151,191,246,218,107,179,198,143, 31,127,158, 16,194, 30,207,240, 87,104, 12,252,220,170,250, 78, 1, 8,198,249,229,151,
+ 95,214,231,225,154, 33, 93, 49, 66, 72,192, 21,137,161,218, 32, 21,157,161,160, 15, 20,253, 61,174,160, 32, 8,120,229,149, 87,
+ 20,231,202,119,242,249,197, 56, 88, 50,103,108,108,108, 77,175,205,100,130, 36, 73, 24, 57,114,228, 69,243,122,223, 45, 56, 70,
+254,157,158,158, 62,235,227,143, 63,158, 77, 41,141, 3, 32,248,166,129,154,116,100, 96, 96, 80, 33,176, 60, 30,207,169, 1, 3,
+ 6,192,183,247, 20,238,101,173,110,183,251,148, 74,145,245, 93,203,150, 45, 91, 45, 90,180,232, 97,147,201, 52,216,102,179,117,
+ 5, 0,189, 94,191,191,186,186,122, 29,199,113,175, 23, 21, 21,169,126, 57,179, 87, 48, 61,192,113,220,252,137, 19, 39,206,206,
+200,200,184,229,158,123,238, 33,130, 32,224,211, 79, 63,165,167, 79,159, 94,193,113,220, 83,103,207,158, 61,118, 49,137,100, 52,
+ 26,127, 90,177, 98, 69,235, 47,191,252, 18, 46,151, 11, 11, 23, 46,132, 78,167,251,169, 30, 20,231, 55,108,216,176,172,111,223,
+190,227,119,236,216,177, 28,192,129, 45, 91,182,124,116,221,117,215, 77,216,190,125,251,255, 1, 56,180,113,227,198,143, 50, 50,
+ 50, 38,236,218,181,235,115, 0, 63,214,163,209, 85,156, 44,183, 59,240,136, 98, 16,231, 42, 20,103, 5,165,212, 57,121,242,228,
+ 71,110,185,229,150, 69,185,185,185,215,200,143,111,136,142,142,222,159,158,158,158,179, 98,197,138, 35, 94,231,138,137,171, 63,
+ 57,228, 9,233, 49, 49, 49,224, 56, 78,217,228,167,121,215, 87, 8,201,156,148, 82,196,196,196, 4,236,152,133,224, 12,169,106,
+ 40,165, 48,155,205, 10,167,202,213,203, 97,109, 40,179,217, 92, 43,140, 42, 64,195,197,221, 63,156,106,210, 44, 28,167,201,100,
+130,211,233, 84,205, 9, 21,139, 6,124,145,155,155,251, 1,128, 15,218,180,105,243, 51,128, 54, 76, 84, 49, 48, 52,130,192, 58,
+114,228, 72,207,198,188,240,241,227,199, 43, 0,204,242,110, 13,130,211,167, 79, 31, 3,112,235,214,173, 91,255,179,125,251,246,
+103,188,141,235, 11,225,222,103, 24, 14, 63,254,248,227, 77,162, 40, 46, 88,188,120,113, 6,165, 20, 81, 81, 81,219,143, 30, 61,
+122, 95,125, 56, 60, 30,207,148, 29, 59,118, 76,133,119, 85,160,195,225,152,178,117,235,214, 71, 1, 84,203,251,119,238,220,169,
+252,174,231,205,140, 82, 74, 29,148,210,228, 32,135, 56,212,138, 43, 63, 39,203,177, 98,197,138, 42, 0,251,240,219,115,174, 92,
+222,205,238, 55, 44,200,240, 39,133,219,237, 62, 61, 96,192, 0, 33, 92, 7, 42,192,121,167, 66,117,208,250,247,239,143,139,224,
+ 60, 29, 34,168, 39, 50, 50, 50, 56,181, 92, 50, 92, 46, 87,113, 8,241,117,170, 79,159, 62, 1,195, 25, 38,205, 66,198,189, 79,
+159, 62,245, 10,163, 55, 44,167, 27,154, 51, 76,122, 6,133,213,106,189, 16, 31, 31, 95,101,179,217, 68,187,221, 46,250, 59,246,
+ 6,131,225,188,213,106,101,149,135,129,225, 15, 4,123,211, 56,227,100,156,140,147,113, 50, 78,198,201, 56,175, 56,112, 44, 9,
+ 24, 24, 24, 24, 24, 24, 24, 24, 26, 22, 36,132, 10,173,207,234,128,139, 81,178, 7, 24, 39,227,100,156,140,147,113, 50, 78,198,
+121,197,113,134,227,102,171, 19, 27, 73,120, 49, 78,198,201, 56, 25, 39,227,100,156,140,243,202,227,252, 75,129, 13, 17, 50, 48,
+ 48, 48, 48, 48, 48, 48, 48,129,197,192,192,192,192,192,192,192,192, 4, 22, 3, 3, 3, 3, 3, 3, 3, 3, 19, 88, 12, 12, 12,
+ 12, 12, 12, 12, 12,191, 3, 36, 37, 37, 37, 51, 57, 57,185,207,149,154, 0, 2, 43, 3, 12, 12, 12, 12, 12, 12, 12, 13,129,102,
+205,154, 69,123, 60,158, 59, 1,220,215,186,117,235,214, 0, 64, 8, 57, 64, 41,125,221, 96, 48,124,116,236,216, 49,199, 21,163,
+ 48, 89,113, 96, 96, 96, 96, 96, 96, 96,248, 61, 72, 78, 78,238, 14,224, 62,131,193,112,251, 53,215, 92,163, 29, 56,112, 32, 98,
+ 98, 98,224,118,187,113,246,236, 89,108,216,176, 1,251,246,237,251,213,229,114, 45,112,185, 92, 11, 74, 74, 74,206, 93, 73, 2,
+107,147,247, 51,147, 21, 21, 6, 6, 6, 6, 6, 6, 6, 53, 72, 74, 74,122,117,248,240,225,143,196,196,196,160,109,219,182, 72,
+ 74, 74,130,221,110,135,213,106, 5,165, 20,130, 32,128, 82,138,202,202, 74,236,217,179, 7, 57, 57, 57,238,138,138,138,229,132,
+144,215,207,158, 61,251,131, 31,221, 95, 70,139,200, 2,139, 2, 24,224, 23, 57, 6, 6, 6, 6, 6, 6, 6,134,144, 72, 78, 78,
+ 62,183,126,253,250, 4,143,199,131,146,146, 18,216,237,118, 88, 44, 22, 69, 96,241, 60, 15, 74, 41,220,110, 55, 0, 64,146, 36,
+ 28, 58,116, 8, 59,118,236, 64, 97, 97,225,107, 69, 69, 69,211,254,138, 90,132,243, 83,141, 76, 92, 49, 48, 48, 48, 48, 48, 48,
+212, 11,118,187, 29, 75,151, 46, 69, 73, 73, 9,154, 53,107,134,148,148, 20, 68, 69, 69, 65,175,215, 3,128, 34,174, 0,128,227,
+ 56,116,238,220, 25, 19, 38, 76, 0, 33,100,130, 31,213, 95, 70,139,176, 73,238, 12, 12, 12, 12, 12, 12, 12,191, 7, 46,167,211,
+137,158, 61,123,226,248,241,227,200,205,205, 69,143, 30, 61,208,177, 99, 71,148,148,148,224,204,153, 51,181, 14,222,181,107, 23,
+246,238,221,139,235,174,187,238, 47,157, 40,188,247,147, 0,120, 30,192,157, 0, 22,179,178,194,192,192,192,192,192,192,160, 6,
+ 17, 17, 17,191,110,218,180,105,104, 90, 90,154,152,158,158, 14,157, 78,135,147, 39, 79, 34, 39, 39, 7,102,179, 25, 93,187,118,
+133,205,102,195,230,205,155,177,122,245,106,148,149,149,161, 69,139, 22,192,187,239,225,231,215,204,229, 85, 85, 85,243,254,138,
+ 90,196,119,146,123,166,247,115, 19, 43, 46, 12, 12, 12, 12, 12, 12, 12,106,145,156,156, 28, 71, 8,121,170,105,211,166,247,223,
+126,251,237, 98,155, 54,109,112,234,212, 41,148,148,148,224,194,133, 11,216,185,115, 39, 0, 32, 37, 37, 5, 41, 41, 41, 40, 40,
+ 40,192,129, 3, 7,172,118,187,253,222, 51,103,206,252,239,175,168, 69,216, 99, 26, 24, 24, 24, 24, 24, 24, 24, 26, 74,104, 53,
+ 3, 48,179, 77,155, 54,147,198,142, 29,203, 53,109,218, 20,167, 79,159,198,134, 13, 27,208,186,117,107, 20, 23, 23, 99,207,158,
+ 61,158,138,138,138,133, 30,143,103, 86,113,113,241,121,150,106, 23, 7,246,166,113,198,201, 56, 25, 39,227,100,156,140,243, 10,
+227, 76, 76, 76,236,144,156,156,188,114,232,208,161,244,157,119,222,161, 15, 60,240, 0,237,209,163,135,148,156,156,252,105, 74,
+ 74, 74,235, 43, 65, 0,177, 73,238, 12, 12, 12, 12, 12, 12, 12, 13,138,115,231,206, 29, 6,112, 19, 33,228,154,188,188,188, 39,
+ 1, 64,146,164, 23,206,157, 59,183,231, 74, 73, 3, 38,176, 24, 24, 24, 24, 24, 24, 24, 26, 5,103,206,156,201, 1,240,183, 43,
+ 49,238,236,101,207, 12, 12, 12, 12, 12, 12, 12, 12, 76, 96, 49, 48, 48, 48, 48, 48, 48, 48, 48,129,197,192,192,192,192,192,192,
+192,112, 69,129, 32,248, 74,128, 3,245,224,185,152, 21, 10, 7, 24, 39,227,100,156,140,147,113, 50, 78,198,121,197,113,134,227,
+ 62,128, 43, 8, 23,251,188, 44,182,132,149,113, 50, 78,198,201, 56,255, 60,156,164,129, 56,137,119,227,188, 27,169, 39,247,165,
+ 10,231,159, 37,238, 87, 10,231, 95, 10,225, 86, 17,250, 38,146,228,221,104, 3, 9, 54,174, 1,249, 24, 26, 71, 84,203, 21,131,
+178,124, 98, 96,248, 75,163, 33,219,122,185,237,224,125, 56, 61,222, 13,191,179, 45,105,140,123,210,229, 30,247, 43,153,243, 47,
+ 41,176, 8, 0, 18, 31, 31,191, 38, 33, 33,225,250,146,146, 18, 9, 0, 8, 33,224, 56, 14, 28,199, 65, 16, 4,107, 65, 65, 65,
+100,125, 47,152,144,144,240,126,124,124,252,157,165,165,165,146,204, 69, 8, 1,207,243,224,121,222,122,236,216,177,200, 63, 58,
+ 81,122,244,232,113,193,225,112,152,253,255,215,106,181,182,189,123,247, 70, 92, 9,229,162, 93,187,118,183, 25,141, 70, 67,144,
+253,244,135, 31,126, 88,164,150,172, 69,139, 22,187, 12, 6, 67,180, 32, 8,224,121, 30,130, 32,160,186,186,186,236,240,225,195,
+189,189,251,183, 25, 12,134, 56,158,231,229,178, 5,155,205, 86,122,232,208,161,190,236,190, 87, 23,153,153,153, 2,234,255,136,
+ 21,247,166, 77,155,220,151, 42,140,148, 82,206,145, 27,209,134,184,173,221, 8, 71,163,168, 68,202,169, 96,248, 81,155, 94,121,
+ 84, 85, 75, 77,136,244, 7, 39,115,115, 0,110, 0,103,234, 29,247, 0, 61,118, 1, 24,238, 1,198,121,127,218, 56,160,148, 0,
+249,113,192,103,231, 0,171, 95,227,123, 41,111, 68, 4, 0, 73, 77, 77,125, 61, 49, 49,241,174,202,202, 74, 11,207,243, 32,132,
+ 80, 66,136,156, 23,190,249, 2, 73,146, 78, 29, 60,120,176,103,152,155,172,216,188,121,243,215,226,227,227,239,176, 88, 44, 22,
+ 66,136,194, 41,111,190,220, 30,143,231, 84, 94, 94, 94,207, 75, 24,206, 63, 36,238,190, 92,242,111, 73,146, 66,197, 93,225, 76,
+ 77, 77,125, 45, 49, 49,241,142,170,170, 42,139,247,190,249,187,195,121,153,115,254,101, 5, 22,151,144,144,176,170,119,239,222,
+ 3,190,252,242, 75,238,240,225,195, 92,135, 14, 29,224,241,120, 32, 73, 18, 40,165, 72, 79, 79, 55,214,247, 98,137,137,137, 75,
+122,246,236, 57,110,245,234,213,220,170, 85,171,184, 94,189,122,129, 16, 2,143,199, 3,143,199,131, 65,131, 6, 25,126,103,124,
+204,130, 32, 76,213,106,181,153,110,183,187, 35, 0,136,162,120,200,110,183,111,114,187,221,243, 0, 84,169, 33,113,185, 92,198,
+188,188,188, 58,105,211,187,119,111,237,197, 6,172,109,219,182,219, 57,142,107,229, 91,200,194,125, 82, 74,127, 57,120,240, 96,
+ 70, 48,206,246,237,219,135,229,244,255, 79,146,164, 95,242,242,242, 50, 66,149,137,182,109,219,142,235,212,169,147,254,211, 79,
+ 63, 69, 97, 97, 33, 76, 38, 19, 36, 73,130,199,227,129,203,229,194, 77, 55,221, 84, 47,203,215, 96, 48, 68,110,216,176,161, 77,
+ 66, 66, 2,138,139,139, 81, 82, 82,130, 41, 83,166,228,251,236,143,251,254,251,239,219,197,198,198,194, 98,177,160,188,188, 28,
+ 19, 38, 76,248,211, 87,174, 33,253, 91,189, 72,128, 88,249,183, 71,194,175,235,183,253,242,244,239,229,181,219,237,103, 61, 30,
+ 79,140,159, 32, 9,121, 14,207,243, 23, 0,196,135,211,194, 0,254,198,243,124, 91, 81, 20,175,162,148,182,112,187,221,137, 0,
+160,209,104,206,241, 60, 95,224,114,185,142, 56, 28,142,159, 1,172, 6, 80, 16,140,200,145, 27,209,198, 99,183,220, 82,109,151,
+ 70, 74, 20, 73, 28, 65,145, 73,103,249,218,145, 27,177, 66,173,200,250, 3,209,178,105,211,166,175, 0,192,153, 51,103, 30, 3,
+112,252,247, 18,122,128,113,148,210, 40, 0, 40, 47, 47,143, 42, 44, 44, 76, 90,189,122,117,231, 57,115,230, 12,212,218,108, 47,
+ 59,128, 67,161,206, 31,124, 93,235, 61, 2, 33,169,138, 90,166,210,169,117,155,127,105,136, 27, 19,151,146,146,242,250,136, 17,
+ 35, 38, 46, 92,184,208,152,147,147, 99,236,218,181,171,183,227, 11,165,189,167,148, 42,101,236,218,107,251,132, 19,108, 66,211,
+166, 77,231,143, 24, 49, 98,252,130, 5, 11,140, 71,142, 28, 49,182,108,217, 82,225,244, 45,179,114, 7,251,234,171,187, 95,234,
+112, 54,106,220,135, 13, 27, 54,126,225,194,133,198,253,251,247, 27,219,181,107,167,112, 82, 90, 91, 59,115, 28,135,158, 61,123,
+169,226, 28, 62,124,248,248,119,223,125,215,152,155,155,107,236,216,177,163, 87,164, 65, 9,227,197,132,243, 50,231,252, 75, 10,
+ 44, 46, 62, 62,126,105,207,158, 61,135,125,249,229,151, 60, 0,228,230,230,162,180,180, 20, 41, 41, 41, 48,155,205,208,235,245,
+176,217,108,245,234,101, 37, 36, 36,188,223,171, 87,175,113, 95,126,249,165, 8, 0,159,223,126, 19,126, 17,129, 7,139, 29,208,
+104, 52, 56,122,244, 40,120,158,255, 61, 61,183,235, 34, 34, 34,254,183,114,229,202,152, 30, 61,122,112, 37, 37, 37,104,217,178,
+ 37,126,253,245,215,222,155, 55,111, 78,191,251,238,187,239,174,172,172,156, 4, 96,179, 90,194,175,190,250, 10, 38,147, 73,217,
+156, 78,231, 69,143, 37,243, 60,159,154,147,147,147, 96, 54,155,225,241,120, 64, 41,173, 85,129,253, 43,158, 36, 73,232,223,191,
+191, 51,100,230, 9, 66,106, 78, 78, 78,130,193, 96,168,195,229,241,120,160,213,106,193,113,156,220, 67,132,219,237, 70, 70, 70,
+ 70, 40, 78,210,174, 93,187,219,100,113,197,113, 28, 62,249,228, 19, 36, 37, 37, 33, 33, 33, 1, 38,147, 9, 6, 67,253, 53,176,
+ 32, 8,136,139,139,195,253,247,223,143,219,110,187, 13,203,150, 45,131, 40,138,181,246,199,198,198,226,219,111,191, 69,100,100,
+ 36,210,210,210,106,237,255,179,130, 0,177,223,109,254,205,145,189,101,212,213,194,160,126, 45, 23, 40, 21,173,230, 32, 42,121,
+ 93, 11,201,227,185,176, 97,251,201,103, 85,116, 0,154,108,219,182, 13, 58,157, 78,221,205,221,227, 65,239,222,189,155,132, 57,
+108,100,151, 46, 93, 62,191,255,254,251, 53,109,218,180, 33,162, 40, 66, 16, 4, 8,130, 32,151,199, 52, 74,105,154, 36, 73, 3,
+206,157, 59, 71,223,124,243,205,151, 55,110,220,120, 51,128,175, 3,198,221,109,237, 86,109,151, 70, 82,138,164,196,193,180,121,
+241, 58,130,106,187, 52, 50, 74,176, 30, 5,112, 57, 11,172, 72,131,193,240,204,167,159,126,170, 1,128,193,131, 7, 63, 99,181,
+ 90,255, 13,160,162,161, 46, 16, 21, 21,133,168,168, 40,116,233,210, 5, 99,198,140,137,238,222,189,251,163, 45,236,246, 41, 5,
+128, 35,104, 29,226,184,212,111,190,207, 79,144,127,143,191,169,135,102,104,102,235,115,212,107,153,249,123,104,146,135,158, 90,
+191,237,120, 56, 1,198, 37, 37, 37,253,103,248,240,225,183, 46, 92,184, 48, 2, 0,222,127,255,125,140, 28, 57, 18, 73, 73, 73,
+ 48, 24, 12,208,104, 52,208,104, 52, 16, 69, 81,249, 12,115,147,229,147,146,146, 94,190,225,134, 27,110, 89,176, 96, 65, 4, 0,
+ 44, 89,178, 4,163, 70,141, 66, 92, 92, 28, 34, 35, 35,161,211,233,160,213,106,189, 92, 4, 52,124,171, 95, 39,156,247, 12, 29,
+136, 86, 6, 29,254, 54,251, 21, 68, 71, 71, 99,195,180,251, 32,114, 28,238,251,118, 19, 34, 35, 35,213,180, 31,117, 56,115,115,
+115,113,238,220,185,128,113,231,121, 62, 92,125, 83,226, 62,114,228,200, 91,100,206, 37, 75,150, 96,216,176, 97,136,139,139,131,
+217,108, 86,226,254, 27, 55,167,138,115,216,176, 97,183,188,251,238,187, 10,231,160, 65,131, 16, 27, 27,139,136,136, 8,104, 52,
+ 26, 37, 61,235,147, 71,151, 57,231, 95, 82, 96, 17,175,123,117,107,118,118,182,146,243,162, 40, 66,167,211, 41,133,195,247,198,
+173,246, 94, 19, 31, 31,127,231,151, 95,126,169,156,228,240,171, 84,122,189,190,190,156,181, 58,120,215, 95,127,253,199,217,217,
+217,122,141, 70, 3,171,213,138,188,188, 60, 68, 69, 69, 65,171,213,226,198, 27,111,228, 51, 50, 50,226,174,191,254,250,207,126,
+250,233,167,241, 0,214,169, 24,226,128,217,108,174, 37,176, 40,189,120,253, 71, 8,129,193, 96,192,170, 85,171, 32, 8, 66,173,
+ 66, 22,168, 17, 75, 76, 76, 12,235, 74, 0,128, 78,167,195,246,237,219,193,113, 28, 68, 81, 84,182,175,190,250, 10,211,166, 77,
+195,185,115,231,148,125, 17, 17, 97, 71, 55,137,209,104, 52,200,226, 74,206,123,131,193, 0, 81, 20,137, 32, 8,132,231,121,185,
+ 73, 39, 80, 57,148, 33, 8, 2, 10, 10, 10,112,251,237,183, 99,241,226,197,120,225,133, 23, 48,126,252,248, 90,251, 43, 42, 42,
+ 16, 19, 19,131,232,232,104,232,116,186,223, 83, 22, 46, 27, 72,126,169, 51,235,133,151,141, 18, 0,137, 74,128, 4, 80, 80,229,
+251,217,179, 71,241,234,127,222,224,213,114,235,116, 58,108,219,182, 13,190,195,174, 28,199, 65,163,209,212,250, 79, 16, 4, 36,
+ 39, 39,171,225,155,185,114,229, 74,237, 39,159,124,130, 47,190,248, 2, 30,143, 7,162, 40, 66,175,215, 35, 50, 50, 18,177,177,
+177,202,150,150,150, 70, 62,248,224, 3, 77,183,110,221,102, 86, 84, 84, 4, 22, 88, 28,141,146,188,226, 10, 0, 18, 6,211,230,
+199,190,228, 99,162, 35,106, 92,156,203,184, 61,156,241,214, 91,111,197,165,167,167, 3, 0,222,122,235,173,184,201,147, 39,207,
+ 0,240, 52,106,134, 12, 47,174,131, 5,124, 76, 8, 25,231,117,108,245, 67,134, 12,209,190,253,246,219,184,234,170,171,240,208,
+ 67, 15,197,190,250,242,203,127, 3,176, 34,120, 89,170, 93,152,230,190,242, 70,180,111,135,234,183, 13,248,245,124, 1,158,121,
+230, 69, 21,250, 31, 92,211,166, 77,239,126,239,189,247,148,233, 16,177,177,177, 74, 27,228,223, 70,201,159, 33,218, 37,226,117,
+133, 38, 47, 92,184, 80,225,140,143,143,175,197, 33,138, 34, 10, 14,253,128,111,222,207,130, 41, 46, 25, 19,166,205,173,119, 56,
+ 83,116, 90,164, 26,180,232,214,173, 27, 12, 6, 3,114,197,154, 91,153, 44,174,212,132,211,159,147,231,121, 37,140,148, 82,216,
+108, 54, 84, 86, 86,194,227,241,192,225,112, 32, 61, 61, 93, 85,220,223,125,247, 93,133,179, 73,147, 38, 74,251,238,219,206,203,
+155,220,129, 9, 19,206,201,255,253,239,127, 21,206,184,184, 56,133, 75, 16, 4,104, 52, 26, 44, 89,178, 4, 42, 29,109,213,156,
+245,205,119,127,206,227,199,143, 99,206,156, 57,208,104, 52,242, 20, 32,197,177, 76, 73, 73,193,155,111,190,169,234, 30,247, 87,
+115,176, 72, 73, 73,137,116,248,240, 97,110,207,158, 61,208,104, 52,136,143,143, 71,239,222,189, 1, 0, 78,167, 19,130, 32,192,
+ 96, 48,144,182,109,219,158,147, 19, 77,254,244, 27, 75,151,151, 90,114,191,254,250,171,180,102,205, 26,110,217,152, 97,112, 80,
+160,251, 51,115, 49,108,212, 40,124,151,162, 5, 15,160,247,225, 18,104,181, 90, 33, 41, 41,201, 37,103,130,204,235, 55, 55,203,
+127,249,102,132,201,100,250, 96,245,234,213,122,142,227, 80, 89, 89, 9, 73,146,208,183,111, 95, 16, 66,176,127,255,126, 60,253,
+244,211,248,252,243,207,177,114,229, 74, 67,143, 30, 61, 62,176, 90,173, 29, 1, 84,250,112, 28, 8, 84, 56, 35, 35, 35, 97, 48,
+ 24, 20,129,101, 48, 24, 72,251,246,237,207, 5,153, 71,112,250,224,193,131,233,193, 56,101, 39,225,230,155,111, 86,230,156,201,
+ 55, 64,223,202, 38,127,207,203,203, 11,148, 95,117, 56, 37, 73, 66,191,126,253, 0, 0, 38,147, 9,102,179, 25,223,127,255,189,
+178,191, 71,143, 30,112, 56, 28,104,210,164, 9, 14, 29, 58,164,138,179,168,168, 8, 75,151, 46,133, 40,138,136,139,139,131, 40,
+138,154,117,235,214,189, 96, 50,153,162,120,158, 71,116,116, 52, 70,141, 26,181,208, 39, 12,158,175,191,254, 90, 8,198,201,243,
+ 60,244,122, 61,150, 44, 89,130, 57,115,230,224,201, 39,159,244,119,247, 96,179,217, 16, 23, 23,135,152,152, 24,196,196,196,168,
+ 10,103, 3,160, 81, 57, 41, 40,242,246,126,135,131,251,214,193, 67, 61,144, 60, 18,168, 68,225,145, 36,236, 93,187,171,221,217,
+ 95,206,164, 80,208,154, 41,181, 0, 60, 85,213,238,204, 56,237, 85, 0, 86,109, 42,117,204, 15, 23, 78,158,231,225,116, 58,241,
+221,119,223,225,232,209,163, 88,179,102, 13,172, 86, 43,154, 52,105,130,232,232,104,100,100,100, 96,242,228,201,193, 4,214, 1,
+191,178,185,228,244,233,211,221, 51, 50, 50, 72,121,121, 57, 74, 74, 74, 80, 89, 89, 9,167,211, 9,167,211,169,228,161,201,100,
+ 66, 82, 82, 18,172, 86, 43,181,219,237, 75,130,198, 93, 34,229, 28, 65,209,177, 85, 66,147,214, 55,186, 13,231,190,143,179, 91,
+ 29, 26,247, 59,171,140,147,191,122,162,245, 80,142,114, 20,168,137, 58, 33,160,146,199, 83,178,110,203, 47,247,255,193,249, 62,
+101,234,212,169, 29,125,135,167, 39, 76,152,128,188,188,188,142,243,230,205,155, 2,224,173,250,114, 26,128, 20,212, 40,179,111,
+ 81,179, 97,166,213, 74, 94, 88,181,234,102, 0,119,172, 92,185, 18,227,199,143,199,127, 94,126,185, 75, 0,129,117,192,183,195,
+ 87,144,191, 25,199,243,183, 65,146, 36,239, 70,131,126,167,234,194, 73,170,170,170,108, 57, 57, 57,230, 15, 63,252, 16,177,177,
+177,104,209,162, 5, 34, 34, 34,160,211,233,234,136, 1,121, 11, 23,119,139,197, 98, 59,124,248,176,249,227,143, 63, 70, 92, 92,
+ 28,210,210,210, 96, 50,153,160,215,235,149, 14,122,206,154,149,152, 50,233, 70,148,158, 60,130, 55,254,125,155,234,112,222, 51,
+100, 32, 82, 13, 90,220, 56,107, 46, 58,118,236,136, 21,183,141, 6, 71,128,123, 55,236,132, 40,138,248,112,228,117,208,233,180,
+184,119,195,110,213,156,187,119,239, 6,165, 20,105,105,105,176, 90,173,138,203,166,209,104,176,110,221, 58,140, 30, 61, 26,203,
+150, 45,195,181,215, 94, 27, 54,238, 85, 85, 85,182,253,251,247,155, 63,250,232, 35,196,198,198,162, 89,179,102, 48, 26,141, 10,
+159,175,136,105,213,170, 21,202,202,202,208,186,117,235,144,156,213,213,213,182,220,220, 92,243,178,101,203, 16, 27, 27,139,212,
+212, 84, 24,141,198, 90, 78,216,204,153, 51,107, 17,116,235,214,237,119,115,214, 55,223,253, 57,199,140, 25,131,214,173, 91, 35,
+ 50, 50, 82, 73, 3,127,161, 93, 31, 80, 74,123,161,246, 52, 7, 7, 0,173,207,231,121, 66,200,238, 0,199,201,255,139, 0,174,
+246,238,243,120, 53, 64,116, 0,190, 96, 60, 37, 94, 83, 33,222,239,248, 90,215, 9, 36,176,228,250, 56, 0,192, 86, 0,232,208,
+161, 3, 74, 75, 75,161,211,233,208,187,119,111,156, 63,127, 94,177,249, 36, 73,194,216,177, 99,249, 39,158,120, 34,129,227, 56,
+184, 92, 46, 80, 74,193,243, 60,228,158,159,191, 14,224, 56, 14, 25, 25, 25, 56,232, 77,211, 97,163, 70, 33, 53, 53, 85,153,196,
+161,211,233, 48,126,252,120, 50,109,218, 52, 65,118, 47, 40,165,176, 90,173,232,214,173,155, 33,132, 59,242,239,207, 62,251, 44,
+ 74,171,213, 42,226, 74, 14,203,225,195,135,241,234,171,175,226,142, 59,238,192,201,147, 39,145,156,156,140, 71, 31,125,212,156,
+149,149,245,111,167,211, 57, 43, 92,134,154,205,230, 90, 2,107,210,164, 73, 66, 70, 70, 70,130,209,104, 84,220, 45,175,168, 68,
+ 70, 70, 6, 9,231, 96, 73,146,132,111,191,253, 54, 96,239,208,191,199, 64, 8, 1,165, 84, 21,103, 78, 78,142, 34,206,100,247,
+ 66,222,159,151,151,167, 56, 88, 94, 33, 24,138,147,202, 66, 77,182,201, 69, 81,212,228,228,228,204, 78, 78, 78, 54, 79,154, 52,
+ 9,149,149,149,104,218,180, 41,134, 14, 29, 10, 73,146,224,116, 58,241,224,131, 15,134,116, 94, 68, 81,196,174, 93,187,144,149,
+149,133, 39,158,120, 2, 11, 23, 46,196,224,193,131,107, 57, 88,114, 79, 55, 50,242, 15, 95,227,208,128, 22, 22,224,116,187, 96,
+177, 88, 65,169, 7, 30,137, 66,242, 72,216,191,113,111,187, 95,246, 29,237,156,189,124,169, 8, 0,182, 77, 43,125,207, 74, 30,
+179,224,255,218,103,198,136, 57,155, 46,184,114,194, 12, 59,227,190,251,238,195,179,207, 62,139, 91,111,189, 21,107,215,174,197,
+ 83, 79, 61,133,187,239,190, 91, 17,239,114, 89, 80, 49,236,248,222,132, 9, 19,254,181, 98,197,138,171, 30,121,228, 17, 78,174,
+147, 70,163, 17,132, 16,216,108, 54,101, 59,124,248,176,244,207,127,254,243, 39,135,195,241, 94,208,130, 36, 24,126, 52,233, 44,
+ 95,159, 45,229,218, 22,109,136,229,136, 16,233,140, 79, 27, 80,126, 67,187,193,116,240,109, 45, 98,168, 84,227,240, 81, 80,216,
+109,213,120,242,137,199,248, 63, 56,183, 70, 14, 25, 50,100,232,236,217,179,235,236,152, 61,123, 54, 14, 29, 58, 52,116,237,218,
+181, 5,193,134, 68,131,136,171,212,168,164,164,121, 0, 96, 40, 42,154,106, 5, 78, 1,192, 11,192, 48, 15, 48,122,237,218,181,
+ 0,128,230,205,155, 67, 2, 58, 17,224,127, 60,240, 49,128,111, 2, 57,234, 78,151, 27, 86,171, 13, 18,173, 41, 71, 18,149, 32,
+121,106, 92, 80,127,145,165, 98,220,141, 2,144,120,158, 71,151, 46, 93, 48,108,216, 48,104,181, 90,152,205,102,165,157,247,111,
+147, 84,220, 20, 41, 0,137, 16,130, 86,173, 90, 97,232,208,161,208,104, 52, 48,153, 76,136,140,140, 84, 4, 22,207,243,232,146,
+ 49, 16, 31, 47,123, 5, 19,135,117,198,164,235, 18,241,217,254, 18, 85,225, 76, 51,106,145,102,208,161, 67,135, 14,136,136,136,
+ 0, 33, 0,207,115, 74, 56, 77, 70, 61, 52,202,240,163,186,184, 23, 21, 21,161,160,160, 0, 5, 5, 5,224, 56, 14,125,251,246,
+133, 86,171,133, 32, 8,200,207,207,199,172, 89,179,224,112, 56, 84,113,114, 28,135,182,109,219, 98,224,192,129,208,106,181,144,
+239, 21,190, 67,131,162, 40,162,178,178, 18,109,218,180,193,170, 85,171,208,191,127,255,176,156, 29, 59,118,196,128, 1, 3,160,
+209,104, 96, 48, 24,148,169, 58, 90,159,184, 86, 85, 85, 41,233,208,189,123,247,122,113,174,217,117, 18,139,214,124, 15,187, 67,
+ 66,133,197, 85,235,132,228, 38,145,216,250,209, 19,170,226, 46,115,190,247,222,123, 40, 43, 43, 83,218, 33,121, 65,155,108,158,
+164,166,166,226,221,119,223, 13,122, 15,242,106,145, 77,126,251,226, 9, 33,217, 62,117, 98, 20, 33, 36,219,247, 51,216,113,222,
+175,215,205,152, 49,163,103, 86, 86,214,156, 62,125,250,124,188,125,251,246,229,193,248,130,241,204,152, 49,163,115, 86, 86,214,
+ 28,223,227, 3, 92, 39,160,131, 37, 15,249,112,178, 51,147,146,146,162,140, 59,155,205,102,104, 52, 26,229, 96,183,219,141, 15,
+ 62,248, 0, 9, 9, 9, 72, 76, 76, 84, 62,131,101, 0,199,113,160,148,226,161,243, 53, 83,128,190,109,170, 65, 1,128, 27,206,
+ 83,133,207,227,241, 96,197,138, 21,136,136,136, 80, 42,186,217,108, 14, 57, 92,164,213,106, 7,244,234,213,139,179,219,237,138,
+ 77,206,113, 28, 14, 31, 62,140,172,172, 44,140, 31, 63, 30,237,219,183,135,199,227, 65,117,117, 53,174,191,254,122,241,141, 55,
+222, 24,160, 86, 96, 25,141, 70,101,222,145,221,110,199,250,245,235, 17, 29, 29,141,152,152, 24,196,197,197, 33, 54, 54, 22, 58,
+157, 14,132,144,240, 45, 26,165,184,249,230,155,107, 57, 87,190,174,149,111,131, 38, 15,251,169,225,188,246,218,107, 21,247,202,
+108, 54,227,155,111,126,107,159,123,247,101,240, 54,107, 0, 0, 32, 0, 73, 68, 65, 84,238, 13, 74, 41,226,227,227,177, 99,199,
+ 14, 53,141, 46, 36, 73, 66, 66, 66, 2, 68, 81, 36,235,214,173,123,193, 43,174,136, 40,138,248,225,135, 31,144,151,151,135,248,
+248,120,165, 87, 26, 14,213,213,213,103,223,120,227, 13,207,219,111,191, 13, 0, 24, 52,104, 16,202,203,203,139,125,246,151, 78,
+156, 56,177, 86,124, 47, 92,184, 80,250, 23,208, 87,112, 59,221,176, 88,109,168,170,172,134, 75,242,192,229,246,160,248,244,249,
+232, 39,166, 77, 21,255,243,224,100, 0,192,180,249,111,161,242,221,223, 26,176, 47,166,141, 75,184,249,213, 79,166, 3,184, 49,
+ 20,191,197, 98,129,205,102, 67,243,230,205,177,123,247,110, 84, 86, 86, 98,240,224,193,181,220,223, 48, 67, 16,190,112,156, 62,
+125,186,239,168, 81,163,118,191,246,218,107,173, 59,117,234, 68,170,171,171, 81, 93, 93, 13,139,197, 2,249,251,129, 3, 7,232,
+242,229,203,127,177, 88, 44, 25, 8, 49,103, 72,155, 94,121,212,145, 27,177, 98,203,143,154, 81,127, 31, 51, 58,234,212,233, 66,
+119,169, 85, 95, 85,110,253,201,238,161,135, 64, 61, 20, 30, 74, 65, 61, 18, 60, 84,250,163,215,111,167,182,107,215,238,159,203,
+150, 45, 11, 40, 72,121,158,199,178,101,203,208,175, 95,191,127,230,231,231, 31, 70,136,201,253, 50, 90, 0, 90,183, 40, 62,241,
+127,255,247,127, 26, 0, 24, 56,112,224, 19, 45, 92,174,105, 5,128,163, 83,215,174,183,108,223,190, 61,202,104,172, 89, 39, 20,
+ 21, 21, 5, 74, 41,111,177, 88,162, 50, 50, 50,110,217,191,127,127, 93,129, 37, 81,184, 92,110, 88,109,118,148,149, 87,193,229,
+112,193, 45,185,225,113, 75,112, 75, 53,238,168,219,227,129,228,246,192, 45,121,192, 11,124, 68,230, 53,205,170,106,188, 44, 82,
+182, 57,167,176, 89,160, 34, 90,179,194, 11, 72, 74, 74, 82,134,132,125,231,202,168,112, 49,234, 24,245, 53,109, 33, 85,218,198,
+ 31, 55,102,163,248,208, 86,104, 8,133,228,113, 65,114, 59,225,113, 57,193, 67,194,161, 99,167,209,169,105,216, 54, 68, 9,231,
+240,103, 94, 68,239,222,189,241,217,184, 27, 65, 8,112,239,250, 29,208,104, 52, 88,126,211, 96,104,245, 90,252, 99,205, 78,181,
+225,172, 21,247,220,220, 92, 60,244,208, 67,120,233,165,151, 96, 48, 24,148,206,201,145, 35, 71,240,201, 39,159, 96,200,144, 33,
+170,227, 78, 72,205, 80,171,156,134, 51,102,204,192,153, 51,103, 48,111,222, 60,244,236,217, 19,162, 40,162,172,172, 12, 25, 25,
+ 25, 56,119,238,156, 42, 78, 74, 37,196,198,198, 42,211,117,252,231,136,201, 29,217,250,228,145, 47,231, 93, 55, 37,227,203,109,
+203, 65, 64,176,243,163,169,181,238, 71,239,124,178,165,222,156,207, 62,251,108,173,112,214,211,189,146,181, 8, 9,114,207, 27,
+165,210,241,146,143,147, 19, 89,151,149,149, 53,199,255,252,112,124,190,251,253,206,119,248,137,178,115,106,134, 8, 41,199,113,
+144, 36, 9,102,179, 25, 90,109,141, 3,230,127, 35, 53,153, 76,181, 20,121,184,241,100,158,231, 65, 41, 85, 18,150, 15,176,127,
+199,142, 29,117, 68,192,127,255,251,223,144,227,180,110,183,187, 99, 68, 68, 4, 42, 43, 43,149, 57, 82, 90,173, 22,211,167, 79,
+199,196,137, 19, 21,113,165,213,106,177,120,241, 98,164,167,167,195,225,112,116, 12,149,160, 26,141,198,210,181,107, 87, 78,118,
+129, 12, 6, 3, 25, 63,126, 60,239,116, 58,161,215,235,107,185, 78,242,220,180,112, 98, 72,118,155,190,251,238, 59, 85, 14,150,
+218, 57, 72,148, 82,236,221,187,183,150, 80,243, 46, 53, 6, 0,236,219,183, 79,185,209,170, 29,239,246,120, 60, 48, 24, 12, 68,
+163,209, 16,147,201, 20, 53,105,210, 36,133, 87,206,115, 57,222,106, 38, 90,239,223,191,255,250,144,227, 53, 7, 14,252, 37, 31,
+199, 32, 73, 18,156, 46, 23,172, 86, 27, 42,171, 45,152, 57,215, 59,162, 54, 19, 57, 0,114,250, 78,121, 8,247, 13, 27, 50, 16,
+225, 87,247, 5, 68,108,108, 44, 62,255,252,115,136,162,136, 85,171, 86, 33, 50, 50, 18,163, 71,143, 70,100,100, 36,158,120,226,
+ 9,220,118,219,109,245, 17, 88, 0, 80, 94, 90, 90,218,119,234,212,169,187, 95,126,249,229,230,205,155, 55,135,211,233,132,195,
+225,128,211,233,196,177, 99,199,176,124,249,242, 66,139,197,210, 23, 64,121, 56, 50,109,122,229,209,236, 71, 90,159,237, 55,230,
+ 38,219,161,162, 53, 56, 87,116, 30,110,207, 41,184, 61, 30,184, 93,238, 26, 65, 32, 73,112, 59,221,224,121, 46,242,250, 62,105,
+235,106, 38,252, 19, 7,128, 17,151, 48,171,104,126,126,126,105,124,124,188,220,131,140,116, 56, 28,196,219,150, 80,252, 54,193,
+189, 26,128, 83, 13, 97, 33, 48,229, 63, 47,189,212, 76, 30,190,127,233,165,151,154, 61,250,200, 35, 83, 0,188,126,104,255,254,
+165,119,221,117,215,212, 79, 63,253,180,214, 57,119,221,117, 23, 14,237,223,191, 52, 88,207,199,229,114,193,106,181,163,164,228,
+ 87,220,115,239, 51, 62,221,125,170,244,251,107, 38,189, 83, 0,208, 3, 64,201,185,159,241,224, 67,143,234, 66,117,168,188,245,
+ 29,162, 40,214,153,132,236,219,190,171,104, 63,168,255, 20, 11,141, 70,131,163,219,179, 49,117,202, 45,128,199, 13, 56,171, 1,
+167, 5,212,105, 1,117, 84,131,104, 13,160, 46,155, 42, 94,143,199,163, 76,219, 16,120, 14, 58,237,111,237,166,209,104,128, 86,
+175, 85, 27,206, 58,113, 63,113,226, 4,238,191,255,126, 56, 28, 14,140, 25, 51, 6, 54,155, 13,118,187, 29, 54,155, 13,173, 90,
+181,130,213,106, 85, 29,119, 73,146, 20, 23,112,234,212,169,232,217,179, 39,102,205,154,133,199, 31,127, 28,173, 90,181,194,148,
+ 41, 83,240,241,199, 31,163,115,231,206,176, 88, 44, 97, 57,229,182,196,108, 54, 67, 16, 4,165, 13,246,205, 43, 89, 96,169,205,
+163, 64,156,132,252, 54,239,214, 55,223, 31,158, 52,168,222,156,115,230,204, 65, 73, 73, 73, 29,231,202,215,193, 90,176, 96,193,
+ 69, 85, 86, 63,151, 41,236,113,132,144, 92,239, 95,214,233,211,167, 63, 73, 8,201,158, 62,125,250,147,115,231,206,205, 83,195,
+ 23,104, 63, 33,228, 43,239,253,247, 6,159,255,114,213, 8, 44,200,110,147,108,107,202, 9, 39,239, 3, 0,163,209,136,236,236,
+108,172, 88,177,162,214, 13, 37, 24,100,209,246,117,124, 77, 1, 24,233,117,174,228,223, 35,138, 37,140, 26, 53, 10,173, 90,181,
+170,229, 94, 25, 12,134,144, 98, 67,146, 36,156, 56,113, 2, 7, 14, 28, 64,159, 62,125, 80, 94, 94, 14, 1,192,180,253,251,209,
+105,210, 36,216,189,194, 79,171,213,226,159,255,252,167,170, 12,220,179,103, 79,173, 73, 64, 29, 59,118, 60,149,145,145,145,178,
+ 99,199, 14,197,209,210,233,116,208,235,245,138,200, 80, 83,169, 41,165,184,229,150, 91,106,137, 33,127,129, 37, 87,158,111,191,
+253, 86,213, 16, 33,165, 20,153,153,153,138,123, 21, 17, 17,129, 47,190,248, 66, 57,230,186,235,174, 3, 33, 4, 9, 9, 9,248,
+230,155,111,194,114,202,105, 42,231, 61,207,243,168,174,174, 70,110,110, 46,180, 90,173, 50, 63,195, 96, 48, 40,241,103, 8,150,
+225, 18, 28, 46, 23, 44, 86, 27, 42, 43,107, 26,210,163, 7, 62,171,117,136,211,126,241,139,211,100, 39,180,162,162, 2,235,215,
+175,199,231,159,127,142,158, 61,123,214, 26, 30, 84, 59, 68,232, 59,143,224,215, 95,127,237,247,248,227,143,239,124,225,133, 23,
+154,198,197,197,193,233,116,226,196,137, 19,248,224,131, 15,206, 88, 44,150,126, 0,206,171, 79, 3, 10,183,203, 13,155,197,138,
+242,202,106, 60, 63,123,113,208, 38, 2, 0,156,142, 74,140, 26,145,169,189,196, 57,117, 26,192,221, 62,191,151, 2,144, 39,227,
+ 87, 0,152, 88, 31, 50, 17, 24, 48,230,150, 91, 6, 78,157, 58, 85,249,111,234,212,169,216,185,115,231, 64,113,197,138, 3, 46,
+ 96, 35,191, 98, 69,151,121,243,230, 41,199,204,155, 55, 15,159,175, 88,177,193, 3,108, 12,210,109,175,113,176,172, 54, 84, 85,
+ 91, 17, 25,157,140,211,199, 55,133, 13,139,134,183,131,134,104,151,229, 54, 36,216,188,155,122,136, 43, 37,164,242,177,242,188,
+163, 46, 3,111,193,107,175,255, 23, 58,142,226,230,129,157, 16,111,144, 64,140,177,208,100, 78, 7,137, 78,171, 57,235,249,171,
+161,166,173,219,244,212, 52, 28, 51,233,241,207,181,219, 32,138, 34, 62, 31, 55, 18, 26,173, 6,119,124,181,185,102,113,207,228,
+155,161,209,105, 49,244,157, 79,212,220,168,149,184, 31, 61,122, 20,219,182,109, 67,135, 14, 29,240,243,207, 63, 43,115,108,229,
+251,150,202, 14,175, 18,119,185, 29, 47, 42, 42,194,168, 81,163,160,209,104,176,120,241, 98,108,218,180, 9,143, 63,254, 56,238,
+186,235, 46, 92,127,253,245,193,230,197,214,225,244,205,163, 96,243,163,234,155, 71,254,156, 74,249,253, 29,249, 46,115,202,147,
+219, 3,137,245,223, 59,177,221,199, 45, 74, 12,176,239, 6,127,231,137, 82,218,203, 59, 55,202, 62,119,238,220,188,185,115,231,
+142, 34,132,100,207,157, 59,119, 84, 48, 7, 43, 16, 79,128,253, 97,219, 65,193, 79,133, 14,240, 21, 81,218, 16, 99,217, 38,147,
+ 9,119,223,125, 55,158,120,226, 9,101, 34, 99, 40,200,202, 53, 20,178,179,179,235,252,183,106,213,170,112, 67,132,135,163,162,
+162,122, 14, 28, 56, 16,229,229,229, 56,121,242, 36,204,102, 51, 58,189,250, 42,246,223,119, 31,174, 94,184, 16,220,192,129, 74,
+133,223,191,127, 63,116, 58,221, 97,155,205, 86,175, 76, 53,155,205,136,137,137,129, 94,175, 71, 68, 68, 4, 34, 34, 34, 96, 50,
+153, 20,161, 21,110,136, 80, 46,124, 95,125,245, 85, 72,231,202,215,242, 85, 35,134, 40,165,216,177, 99, 71, 29, 7, 75,190,166,
+188, 79,118, 50,212,112,122, 29, 75,170,211,233,192,243, 60,140, 70,163, 98,247,235,245,122,101, 83,235, 96,133,123,144,104, 90,
+ 90, 90,173, 7,145,254, 63,123,231, 29, 30, 69,181,134,241,119,102,182,111, 54, 13, 82, 72, 15, 1, 2,129,208, 66,151, 38,160,
+ 8, 72, 17, 68,176, 97,167,169,112,189, 82, 45, 24, 80, 1, 69, 64, 16, 1, 1, 5, 1, 1, 43, 77,138,244, 38,229,146,208, 99,
+ 66, 40,233, 33, 36, 33,109,179,117,202,185,127, 36, 27, 55, 33,101, 55, 4, 80, 56,191,231,217,103,119,167,188,115,206,204,153,
+153,119,190, 83, 70, 46,151,151, 27,136,244,223, 95, 69,104, 70,177,190,184,206,245, 45, 22, 11,100, 50, 25,126,253,245, 87,116,
+234,212,169,204, 92,217,140,149,253,113,119,146,180, 91,183,110, 61,186,120,241,226,147, 11, 22, 44,240,212,235,245, 88,179,102,
+ 77,129, 94,175,127, 20,165,237,136, 28,190, 24, 2,224,173, 2, 12,102, 51,244, 69, 37,251,224,234,197, 95,106, 52,101,255,102,
+154,183,106,245,226,234,213,171,111,155,190,122,245,106, 36, 38, 38,190,136,243,231, 15, 6, 1,203,167, 78,157,218,184, 93,187,
+118, 65, 0, 48,117,234,212,212, 32, 96,121,117,231,185,173,138, 80, 95,106,214, 77,197, 57,117, 22,105,173,248,192,119,167, 55,
+ 68,134, 97,202, 76,198,227, 35, 94, 67,198,181,120, 68,104,115,224,227,225, 2,169, 40, 3,138, 62,209, 56,127, 75,139, 47,151,
+239,118, 42,157, 90,165, 2,106,205,223,213, 77,106,141, 26,170,210, 90, 5,134, 97,160,214,106, 32, 87, 42,157,206,123,124,124,
+ 60,180, 90, 45, 68, 81,188,237,126,227,108,143,102, 66, 72,217,189,115,193,130, 5,152, 60,121, 50,214,172, 89,131,243,231,207,
+163, 77,155, 54,120,236,177,199,112,243,230, 77,156, 59,119, 14,102,179,217,225,116,218,223, 47,226,226,226,176,119,239, 94, 36,
+ 36, 36, 32, 53, 53,181,214,199,189, 98, 53, 99,105, 13, 78,137,121,221,123, 6, 79, 63, 30, 85, 43,205,232,232,104,220,188,121,
+243,182,200,149,125,243,163,106, 34, 88,101, 94,164,154,242, 21, 99,111,130,108,145, 38,123, 67, 84,241, 63, 0, 79,219,180,105,
+211,166,189,231,232,122,246,255,109, 17, 48, 71,170, 22,237, 13, 22, 83,177,186,142, 97,152,178,157,110, 31,153,178,253,214,106,
+181,101, 81,166,144,144,144,106,163, 87,182, 19,142,227, 56,116,191, 86, 4,165, 82, 89, 86,157,215,255,166, 84, 46, 68, 30, 22,
+ 22, 86,174, 13,150,253, 65,169, 12,179,217,124,240,224,193,131,109, 7, 15, 30,204,197,197,197, 65, 38,147, 65,146, 36,152, 59,
+119, 70,155,229,203,113,225,157,119,208,227,250,117,152,121, 30,106,181, 26,187,118,237,178, 26, 12,134,131,206, 20, 26,150,101,
+ 25,155,193, 82,169, 84,112,117,117,133,155,155, 91, 89, 52,199,153,139, 80, 85, 79,136,246, 31,103, 78,104, 91,131,126,251, 27,
+171,237,248, 25,141,198,114,134,203, 81,236,171, 12,108,166,200,221,221,189, 92,181,168, 45,138,231,136,193,170,105, 32, 81,149,
+ 74,229,118,248,240,225,198,110,110,110, 32,132, 32, 39, 39, 7,207, 62,251,236,229,127,125, 0, 11,164,164,145,187,209, 4,189,
+209, 84,231,250, 63,252,240, 3,174, 92,185, 2,171,213,138, 57,115,230,220,102,172,106, 25,193,178,113, 69,163,209, 72,253,250,
+245,195,241,227,199,161, 82,169,120,212, 98,252, 42, 34, 73,176,242, 2, 76, 70, 51,244,197,197,120, 24,184,116,254,252,207, 46,
+ 46, 46,207, 2,208,229,231,231,115,238,238,238,208,106,181, 48, 26,141, 5, 92,105, 79,193, 36,192,162,225,249,207, 70,140, 24,
+177, 16, 0,100, 60,255, 89,117,227, 96,149, 25,172, 58,222,143,182,235, 86, 85,209,171,218,154, 43,134, 97, 74,186,231,179, 44,
+214,204,153,140, 8,109, 54,162, 26,186,192,116,243, 10, 84,110, 94, 96, 60, 66,241,229,242,221,136, 75,186,229, 84, 58,159, 91,
+247, 11,130,130,130,176,253,165, 33, 80,169, 84,120,246,151,189, 37,141,180,199,142,132, 66,173, 66,159, 37, 63,212, 42,239, 6,
+131,161,202, 72,149, 19, 17,172, 50, 77,155, 1,140,138,138, 66,147, 38, 77,112,240,224, 65, 68, 69, 69, 33, 49, 49, 17,137,137,
+137, 72, 74, 74,194,249,243,231,145,151,151,231,244, 49,218,180,105, 19,178,179,179,161, 80, 40, 80, 88, 88,136,235,215,175, 87,
+215,254,217,225,227,110,163,217,147,209, 0, 0,127,111,119,167, 12,150,189,230,188,121,243,156, 25,230,161,156, 76, 53,243,114,
+ 42,180,117,178,253,183, 84, 48, 59, 21,255, 87, 92, 30, 0,110, 2,224,106, 88,175,226,255,156, 57,115,230, 28,180, 69,190, 74,
+117,185,170,218, 95, 85,140, 96,217,155, 0, 99,179,102,205, 52,246,245,167, 44,203,194,213,213,149,153, 52,105, 18,199, 48, 12,
+116, 58, 29,220,221,221, 17, 30, 30, 14,171,181,230,102, 9, 10,133,194,216,177, 99, 71,141,125,232,149, 97, 24,184,184,184,112,
+ 83,166, 76, 97, 86,173, 90, 85,233,122, 91,183,110,173,182,112, 11,130,176,112,212,168, 81,175,167,165,165,121,250,250,250, 34,
+ 51, 51, 19, 10,133,162,100,180,216, 94,189,208,253,218, 53, 88, 75, 13, 67,124,124, 60, 86,174, 92, 89,108,181, 90, 23, 58,123,
+209,208,233,116,168, 95,191, 62, 84, 42, 85,185, 94, 49,118,161, 85,135, 34, 88,117,105,174,108,154,246, 55, 86,219,239,177, 99,
+199,150,253,119,230, 34,169, 80, 40,200,147, 79, 62, 89,246, 14, 66, 15, 15, 15,120,121,121, 33, 43, 43,235,239,158, 58,165,145,
+ 59, 71, 13, 86, 77, 3,137,202,229,114, 88,173,214,178,234,204, 37, 75,150,220,137, 49,248,231, 24, 44, 65, 98,116, 58,111,248,
+251, 55,133,183,143, 9,146, 36,214,153,182, 32, 8, 24, 55,110, 92,185, 49,175,108, 55, 98,219, 32,182,182, 30,190,246,225,127,
+103,159,196,239, 56, 58, 66, 0, 94, 40,141,226, 25, 44,255,186, 99, 24, 18, 18,226,150,156,156, 92, 89,187,168, 74,123,251, 1,
+127, 15,201,192, 1,159,164,164,164,180,116,119,119, 71,223,190,125,177,109,243,230,173, 31, 2,101, 33, 27, 35,144,166,185,113,
+227, 63,165,191,211,107, 10,234,217,170, 8,139, 13,117,109,214,153,219,162, 87,119, 90,149,195,178, 37, 15,102,191,125,243, 25,
+ 34, 52, 89,104, 19,172,194,177, 19,231,208, 41,136,128,152, 21,181, 78,167, 78,167, 43,105,140,175,213, 66,165,250,187,205,149,
+ 74,171,129, 66,169,170,117,222,237, 35, 85,119, 26,193, 98, 24,182,220,126,124,253,245,215, 49,117,234, 84,244,237,219, 23,137,
+137,137, 56,124,248, 48, 46, 95,190,140, 9, 19, 38, 32, 50, 50, 18, 79, 60,241,132, 83,199,232,183,223,126, 67, 65, 65, 1, 8,
+ 33,200,206,206,134,201,100,194,140, 25, 51,238,248,184,219,184,182,103, 54, 0,224,151, 61,177,181,214,156, 62,125,122,217, 24,
+140,182,123,126, 13, 81, 43, 71,238,119,167,170,251,239,236,250,247,130, 74, 13,214,229,203,151, 43,237, 43, 31, 17, 17,145,213,
+167, 79, 31,159,132,132, 4,232,116, 58,132,135,135,195,108, 54, 87, 87, 13,209, 18,165, 99,101, 92,186,116,169, 82,205,176,176,
+ 48,235,227,143, 63, 46,111,208,160, 65,185,200,149,173,135,141,189, 51,174,168, 89, 74,145,201,100, 26,221,181,107,215,181, 59,
+119,238,212,132,135,135,163,160,160,164,253,237,154, 53,107,240,214, 91,111, 65,163,209, 32, 33, 33, 1, 67,134, 12, 49, 24, 12,
+134,209, 40, 63, 6, 86,101,154,183, 25, 25,133, 66, 81, 86, 77,102,171, 42, 83, 86, 31,138,190, 77,147, 97, 24, 44, 94,188,184,
+210,177,160, 42,178,124,249,242,202,220,124,165,233,252,226,139, 47,234, 76,243,228,201,147,229,222, 49, 56,112,224,192,111,158,
+120,226, 9,164,166,166,150,171, 22,172,193, 96,149,211,172,105, 32, 81,142,227,224,235,235,139,143, 63,254, 24, 94, 94, 94,104,
+208,160, 65,101, 6,171,218, 99, 84, 75,238,170, 38, 97, 73,204,162, 5,209,221,190,249,246, 23,185, 74,201,226,248,225, 95, 80,
+152,119,163,124, 4,214,250,119,151,104,101, 84, 31, 88, 98,247, 57,148, 78,179,217,140,207, 63,255, 28,209,209,209,136,142,142,
+174, 54, 65, 85,116,135,174, 49,239,246, 6,203, 65,179,117,155,166, 36,137,140, 90,235, 9,173,139, 63, 34, 35, 61, 33,145,154,
+199,234,148,238,255,113, 55,164,166,166,186, 7, 5, 5,225,242,229,203, 12,254,110,143,245,247,177, 82, 42,159,173, 96,176,110,
+ 63,223,129,243, 27, 54,108,104,217,170, 85, 43, 44, 89,178, 4, 0, 94,250,252,143, 63, 70, 70, 27, 75,194,153, 28,176,177,212,
+140,213,152, 78,145,136,140, 90,235, 1,141,174,116, 63, 74,142,143,121, 74,170,201,187,237,230,119, 39, 15,122,149,105,218,214,
+191,122,252,119, 60,217, 63, 16,127,158, 60,143,125,105, 46, 8, 82,101,192,207,144, 13, 41,251, 47,252,103,120, 20,190,252,185,
+228, 38,126,254,116,205,154, 12,195,224,232,164,209,208,169, 85,120,122,195, 14,200,229,114, 28,124,231,101, 40, 20, 10,244, 92,
+ 80, 82, 37,123,225,243,233,144,169,148,136,152, 16,237, 80, 58, 43,214,212,216,218, 92,217,155,171, 26, 34, 88, 85,230, 93,175,
+215, 35, 47, 47, 15,107,215,174,197,171,175,190,138,155, 55,111,226,250,245,235, 72, 72, 72,192,198,141, 27,203,221,227,224,196,
+ 49,154, 54,109, 26,222,125,247, 93,176, 44,139,150, 45, 91, 34, 58, 58, 26, 93,186,116,113,250, 24, 85, 60,238, 21,113, 32,122,
+ 85,165,230,162, 69,139,156,238,176,245, 32,226, 84, 3, 13, 91, 36,203,203,203, 11, 46, 46, 46, 0, 80,238, 6, 91, 83, 53, 97,
+ 85,154,130, 32, 64,163,209, 64,163,209,148, 27, 22, 97,240,224,193, 53, 70,176, 74,217,149,144,144,240,124,139, 22, 45,190,139,
+142,142,118,121,244,209, 71,229,254,254,254,104,215,174, 29, 18, 18, 18,240,251,239,191, 91,151, 46, 93,106, 48, 24, 12,175, 2,
+216, 83, 27,243,108,107,248,109, 63,162,189, 51,136,162,152,122,253,250,117,191, 47,190,248,130, 99, 24, 6, 11, 23, 46, 44, 55,
+ 64,107,197, 60,158, 56,113, 66, 32,132, 92,169, 33,138,145,122,253,250,117,191,249,243,231,151,211,180,125, 42,154, 20, 71, 52,
+171,194,150,231,138,251,192,145,147,167,166,129, 68,101, 50, 25,226,227,227,241,209, 71, 31,129, 97,152,114, 29, 39,254,205,252,
+249,191,204, 85, 93,218,193,243,217,225,189, 91, 49, 96, 97,169, 36,210,203,229,230,151,153,171,161,243, 55,225,183,119, 71, 58,
+114, 44,174, 31, 58,116, 40,120,246,236,217, 28,199,113,152, 55,111, 94,185,178, 84,241,184,239,223,191, 95,212,104, 52, 41,181,
+205,135,213,106,117,164, 23, 85, 85, 39,248,177,197,243, 62,234,251,205,234,109,114,134,177,224,248,161, 95, 80,144, 95,121,215,
+116,165, 92,134,117, 27,182, 10, 50,142, 77,189,207,135,238,155,199, 30,123,108,198,222,189,123,101, 65, 65, 65,181, 22, 9, 4,
+182, 45, 94,188,184,255,168, 81,163,234, 53,111,222,220,214,249, 68, 89,250, 65,233,200,238,187, 28, 52, 73, 91,190,252,226,163,
+151, 86,172,222,166,100, 25, 43,142, 31,254, 5, 5, 21,204,250,237,209,104, 57,214,111,216, 98,149,201,184,248,154,174,193,181,
+233,193,236, 8,109,159,124, 21, 95,239, 88, 9,159, 86,253,241,204,160,110, 56,186,228, 37,140,104,110,132,245,199,231,208,242,
+153,117, 88, 51,189, 36,122,211,230,167,233, 14,221, 43,220,116,127, 15, 88,201,178, 44, 84,106, 13,228,202,191,163, 47, 74,173,
+ 22,156, 19, 17, 91, 91,222,171,139, 84, 57,187, 63, 56,142, 67, 88, 88, 24, 26, 53,106,132,174, 93,187,162,109,219,182,232,213,
+171, 23,206,157, 59,135,115,231,206, 97,194,132, 9,213,153,171, 26,143, 81,223,190,125,209,175, 95,191, 59, 62, 54, 21,143,123,
+ 93,224, 72, 89, 26, 63,126, 60, 0,220, 81, 52,235,129, 54, 88,222,222,222, 80, 42,149,181, 50, 84,149,105, 90, 44,150, 50, 99,
+165,209,104,202, 34, 86, 91,183,110,117,166,128,239, 49, 26,141,145, 31,124,240,193, 68,141, 70,211,203,104, 52, 70, 0,128, 86,
+171,253,203, 96, 48, 28,176, 90,173,139, 0,228,223, 73, 90,237, 13, 70, 37, 81,174,106, 31,241,179,179,179,159,120,241,197, 23,
+247,176, 44,219,176,186, 23, 51,219,153,213,164,172,172,172,254, 53,105,190,240,194, 11,149,106, 86,166,235,136,102, 21,230,176,
+156,169,178,239, 97,232, 80, 33,171, 97, 32, 81,185, 92, 14,157, 78,135,205,155, 55,163,126,253,250, 15,212, 9,118, 60, 38,243,
+243,234,230,247,172,175, 60, 4,192,123,232,252, 77, 41,135,114,173, 33, 67,231,111, 74,254,237,221,145,193, 53, 24,158, 71,230,
+206,157,123,148,231,249, 16, 7,203,109,178,217,108,238,230,108,218, 9, 33,136,143,143,151, 94,127,253,245,156,236,236,236,103,
+106,147,255,195,199,147, 23,116,235,232,239, 53,124, 72,183, 14, 96, 24, 88, 44, 85, 52,234,101, 64, 8, 33, 68,198,177,169,135,
+ 78,164,190,126,159, 95,161,113, 54, 57, 57,121, 86,227,198,141,199, 0,168,234, 78,184,177, 38,145, 36,192,162, 52,155,191,104,
+223,190,253,148,247,222,123,207, 99,208,160, 65, 8, 10, 10,130,187,187,243,111, 11, 58,118, 42,125, 76,231,118, 98,224,211,131,
+187, 61,193, 50, 12, 49, 91,170,111, 28,205,216,246,167,140,139, 63,124, 50,173,117,117,209,121,155, 41,191, 27,209,134, 62,195,
+ 95, 65,159,225,175,148,149,167,125, 63, 63,138,152,244, 63,208,142, 77,135,121, 69, 55, 48,110,182,162, 94,243, 48, 55, 44,203,
+ 98,208,234,205, 80, 40, 20,101,233,124,100,110,249,126, 1,225,111, 58,254, 46,117,251,188,219, 71,176, 42,185, 22, 59,213, 6,
+139,227, 56,228,228,228, 32, 33, 33, 1, 89, 89, 89, 48, 24, 12,136,139,139,131,197, 98, 65, 94, 94, 30, 90,182,108,233,220,211,
+253, 93, 56, 70,247, 83,243, 97, 48, 86,181, 50, 88,132,144,180, 78,157, 58,213,116, 51,118,170,151,145, 76, 38, 51,117,235,214,
+141,169,172,183,129,237,183, 70,163,113,244,241, 57,223,106,181, 70, 91,173,214,104,148, 86,133, 89,173,214, 59,110, 72, 34,138,
+ 98, 70,199,142, 29,185,234, 46,250,146, 36, 85, 59, 98, 92, 78, 78, 78,113, 78, 78, 78,157,190, 58,252,110,104, 86,114,210,136,
+ 99,198,140,169,214, 73,185,184,184, 84,219,184,168,166,129, 68, 13, 6, 67,230,139, 47,190, 40,218, 87, 53,219, 15, 68,250, 64,
+195,144,228, 1,207,190, 22,114, 40,215, 26, 2, 0, 54,147, 5, 66,146,171, 90,229,244,233,211, 89, 0, 26,223,237,164, 93,187,
+118,205,210,169, 83,167,245, 69, 69, 69,227, 1, 24,106,171,115,244, 84,198,244,127,225,145, 57, 11, 96,236,157,138, 88,128, 56,
+ 95,147,105, 92,244,135, 31, 62,253,209,135, 31,134, 75, 64,125,148,142, 81,197, 57, 96,210,236, 57, 17,115,163,206,199, 6, 19,
+ 69, 49,237,145, 71, 30,113,122,157,154,230, 87, 51,146, 56,126, 64, 16,112,218,121,205,187,145, 78,155,102,171, 86,173,208,166,
+ 77,155,178,111, 27,246,211,219,182,109,235,144,102, 84, 84, 20,154, 55,111, 94,229, 8,237, 21,219, 92,221,239,188,219,176, 61,
+250,182,109,187,187,206, 52,239, 52,157,148,234,105, 73, 53,169, 38,213,252,215,106,114,116,127, 82, 77,170, 73, 53,239,161,230,
+ 3, 5, 75,119, 1,133, 66,169,234, 1,147,238, 2, 10,133, 66,169, 29, 76, 53, 46,212,153,158, 59,181,113,178, 23,168, 38,213,
+164,154, 84,147,106, 82, 77,170,249,208,105,214,164, 93,215, 61,135, 31, 72,104,248,148,106, 82, 77,170, 73, 53,169, 38,213,164,
+154, 15, 29,180,138,144, 66,161, 80, 40, 20, 10,165,142,145,209, 93, 64,161, 60,220, 68,223,225,131, 86,244,109, 99,131, 62,220,
+233,164, 80, 40, 20,128, 70,176, 40, 20, 10,133, 66,161, 80,168,193,162, 80, 40, 20, 10,133, 66,161, 6,139, 66,161, 80, 40, 20,
+ 10,229, 33,131,161,187,128, 66,121,184,137,166,109,176, 40, 20, 10,165,206,161, 17, 44, 10,133, 66,161, 80, 40,148, 58,198,214,
+139,208,254,125,125, 52,170, 69,161, 80, 40, 20, 10,229, 94,243, 64,121, 17, 25, 53, 86, 20, 10,133, 66,161, 80,254, 33, 60, 48,
+ 94,132,173,194, 57, 82, 40, 20, 10,133, 66,161,220,107, 30, 24, 47,194, 62,136,174,145, 66,161, 80, 40, 20,202,191,146, 7, 54,
+130, 69,163, 88, 20, 10,133, 66,161, 80,238, 23, 15,140, 23,145, 61,104,142,145, 66,161, 80, 40, 20,202,191,146, 7,202,139,220,
+237, 97, 26,232,155,198,169, 38,213,164,154, 84,147,106, 82, 77,170,249,208, 65,199,193,162, 80, 40, 20, 10,133, 66,161, 6,139,
+ 66,161, 80, 40, 20, 10,133, 26, 44, 10,133, 66,161, 80, 40,148,135, 10, 25,221, 5, 20,202,195, 77,244,191,228, 29,125,209,244,
+ 93,130, 20, 10,229, 95, 4,141, 96, 81, 40, 20, 10,133, 66,161,212, 49, 12,170,238, 9,112,193, 9,157,218,244, 38,184, 64, 53,
+169, 38,213,164,154, 84,147,106, 82,205,135, 78,179, 38,237, 11,160,220, 21,227, 69, 53,169, 38,213,164,154, 84,147,106, 82,205,
+135, 79,243,129,130, 86, 17, 82, 42, 34, 67,245,109,243,106,154,127,175, 52, 41, 20, 10,133, 66,249, 71,223, 76, 41, 20, 27, 93,
+ 0, 12, 44,253,189, 29,192,113, 39,231,223, 43,205,251, 66, 84, 84,148, 70,173, 86,247,221,191,127,191, 34, 62, 62, 30, 39, 78,
+156, 32, 63,252,240, 3,111, 50,153,254,136,141,141, 53,210,226,243, 96,208,182,109,219, 39, 24,134,153, 10, 0,132,144,207,206,
+156, 57,179,251, 14,228,152,198,141, 27, 79, 80, 42,149, 3,228,114,185,191, 40,138,140,217,108,206, 48, 26,141,123,210,211,211,
+231,163,118, 13,247, 59,120,121,121,141,141,140,140, 12,191,118,237, 90,106, 74, 74,202, 58, 0,187, 1, 60, 17, 28, 28,252, 98,
+ 88, 88, 88,208,197,139, 23, 47,231,228,228, 44, 7,240,191,251,152, 78, 10,133, 26, 44, 7, 96, 61, 61, 61, 31,215,104, 52, 19,
+245,122,125,148,155,155,219, 69, 65, 16, 22,103,102,102,110,167, 39,222, 3, 85, 22, 6, 18, 66,228, 0,192,113,220,144,142, 29,
+ 59,134, 48, 12, 35, 49, 12, 67, 8, 33,204,201,147, 39,219,138,162,200, 2, 0,195, 48, 3, 75, 47,222, 66,109, 53, 5, 65, 96,
+ 78,159, 62,237,172,230, 93,161, 69,139, 22,179, 9, 33,254,213,238, 32,153,172,253,190,125,251,154,109,217,178, 69, 88,183,110,
+ 93,254,200,145, 35,117, 47,191,252,178,108,205,154, 53, 95, 3,248, 79,197,229,155, 55,111,190,128,101, 89, 47, 71,182, 47, 73,
+ 82, 78, 92, 92,220,127,105, 49,188,255, 48, 12, 51,245,181,185, 7,123, 72, 4,248,110, 90, 79,182,212,188,212,214,172,125,255,
+212, 83, 79, 61,219,180,105, 83,153, 36, 73,224,121, 30,102,179,185, 89,108,108,236,163,187,119,239,110,159,148,148,244,140,147,
+146, 3,167, 77,155,182,114,214,172, 89,222,114,185,156,225,121,190,243,143, 63,254,216,111,236,216,177,103,151, 47, 95,222,102,
+196,136, 17,174,182,233, 31,125,244, 81,255, 57,115,230,188, 3, 96,227,125, 72, 39,133, 66,111,170,213,205,212,233,116, 77,188,
+189,189,223, 45, 44, 44,236,223,190,125,251,130,209,163, 71, 95, 61,119,238, 92, 92,100,100,164,126,245,234,213,159,242, 60,191,
+212,211,211,243,143,194,194,194,249, 89, 89, 89,113, 78,110,187, 9,128,209, 0,250, 3, 8, 4,144, 1, 96, 39,128,149, 0,226,
+107,147, 25,127,127,255, 86, 46, 46, 46, 83, 24,134,233, 92, 92, 92, 28,232,226,226,146, 65, 8, 57, 89, 84, 84, 52,239,198,141,
+ 27,177,181,209, 12, 8, 8,104, 4,224,109,153, 76,214, 93, 20,197,134, 28,199, 37,139,162,120, 68, 20,197, 37,153,153,153,151,
+107,163,249, 72,160,110,144,164,115,155,207,115,154, 32,189, 73, 80,232, 84, 50, 94, 46,153, 82,165,226,252,105,167, 82,139,127,
+249, 39, 20, 12,165, 82,201,174, 91,183,174,141, 82,169, 4, 0, 88, 44, 22, 68, 70, 70,222,209,123,162,228,114, 57, 59,111,222,
+188, 54, 10,133, 2, 0, 96,181, 90,209,187,119,239,127,196,187,167, 24,134, 9,140,137,137,113,183,165,173, 34,162, 40, 98,200,
+144, 33,161, 74,165, 18,203,151, 47, 23,114,114,114,162,190,251,238,187,152,175,191,254,218,235,251,239,191, 31, 94,153,193, 98,
+ 89,214,171, 42, 77, 81, 20, 97,181, 90, 33, 8, 2, 44, 22, 11,122,245,234, 69,175, 70,255, 16, 8, 33, 33, 4,192,206,115, 38,
+ 0,168,127, 39, 90, 26,141, 38, 98,232,208,161,178,236,236,108,200,229,114, 88,173, 86,220,184,113, 3,141, 26, 53,226, 44, 22,
+ 75, 83,103,245,154, 53,107, 54,118,206,156, 57, 62, 59,118,236,176,174, 95,191,222,252,216, 99,143, 41, 94,125,245, 85,183, 30,
+ 61,122,116, 15, 12, 12,100,191,251,238, 59,243,222,189,123,173, 47,188,240,130,106,246,236,217, 62, 59,119,238,124,246,252,249,
+243, 27,239,117, 58, 41, 20, 74, 53, 6, 75,167,211, 29,210,233,116,141,223,120,227,141,248,241,227,199,255,161,211,233, 68, 0,
+184,113,227,134,106,200,144, 33,217,195,134, 13,187,105, 48, 24,184,165, 75,151, 6,127,245,213, 87,123,116, 58, 93,186, 94,175,
+239,232,200,189, 12,192, 68,150,101,223,238,219,183,239, 33,158,231,179, 55,111,222,252,211,240,225,195,187, 73,146,228,178,127,
+255,254,223, 69, 81,252, 6,192, 23, 78, 68,199,184,176,176,176,104, 47, 47,175, 73,203,150, 45, 83, 53,108,216, 16, 90,173, 22,
+ 69, 69, 69,193,151, 47, 95, 14,154, 56,113,226, 96,141, 70,179,216,221,221,253,131,216,216, 88,222,209,123,174,191,191,255,127,
+ 92, 93, 93, 63,249,244,211, 79,213, 45, 90,180, 96,180, 90, 45,146,146,146, 90, 30, 63,126, 60,242,219,111,191,125,149,101,217,
+153,233,233,233, 14,167,179, 39, 32, 51, 55,246,222,237, 26,218,178,215,242,149,223, 50, 94, 46, 90,200, 24, 6,188,213, 42,207,
+ 50, 24,195,222, 26, 55,230,167,206,170, 75,199,138,228, 89,125,226,226, 96,189,199,101, 65, 0,176,157,227,184, 33, 74,165,146,
+ 29, 50,100, 8,246,238,221,203,152, 76, 38, 25, 0,168,213,106, 97,200,144, 33,208,104, 52,176, 88, 44, 18, 74,170,243, 4, 0,
+170,210,245,205,213,105,202,229,114,182, 87,175, 94,134,211,167, 79,231, 26, 12, 6,185, 77,179, 87,175, 94,245, 84, 42,149,150,
+231,121, 71, 53,239,166,169,196,149, 43, 87,110, 51, 66, 55,111,222, 68,110,110, 46,204,102, 51,147,151,151, 7, 81, 20, 97, 54,
+155,179, 69, 81, 4,203,178,182, 50, 93, 41, 10,133, 2, 9, 9, 9,183, 77,183, 90,173, 48, 26,141,224,121, 30,133,133,133, 26,
+181, 90,221,184, 91,183,110,105, 0,182,232,245,250,249,231,206,157, 75,166,151,167,251, 70,202,239,103, 76,193, 0,172, 0,174,
+221,161,113,151, 0,224,200,145, 35,200,202,202, 66,118,118, 54,178,179,179, 17, 20, 20, 4, 66,136,211,209,255,248,248,248, 69,
+109,219,182,101,206,158, 61,187, 13,192,202, 77,155, 54, 13,189,117,235,214,178,201,147, 39,215,155, 55,111,222,173, 41, 83,166,
+140, 3,240,219,166, 77,155, 94,105,213,170,213,160,243,231,207,127,121, 63,210, 73,161, 80,170,105,228, 78, 8,241,111,210,164,
+201,173,133, 11, 23, 54,155, 54,109, 90,125,189, 94,207,149, 70,137, 76, 0, 96, 48, 24,184,169, 83,167,122,207,157, 59,183,153,
+ 74,165,202, 19, 4,193,187, 18,153,202,186, 90,190,237,230,230, 54,248,234,213,171,155,154, 53,107, 86,111,206,156, 57,103, 92,
+ 92, 92,200,151, 95,126, 25,219,168, 81, 35,191,228,228,228,181,110,110,110,189, 1, 76,170, 34,105,183,105,134,134,134,126, 52,
+124,248,240, 73,199,142, 29, 83,181,110,221, 26,174,174,174,224, 56, 14, 30, 30, 30,232,212,169, 19,115,248,240, 97,213,128, 1,
+ 3, 38, 20, 20, 20,204,115, 84, 51, 32, 32, 96, 82,191,126,253, 62, 61,125,250,180,166, 79,159, 62,140, 82,169, 68,126,126, 62,
+148, 74, 37,186,116,233,194, 44,251,122,137,166,101,139,230, 31, 5, 6, 6,206,114, 84,211,220,196,107,207,200,241, 83,123,111,
+223,185,155,241,245,245,197,213, 47,102,225, 72,143, 72, 36,126, 60, 13,126,126,126,216,182, 99, 23, 51,112,212,248,110,110,188,
+239,126, 71, 53,235, 0,123,205,227,145,145,145, 49,113,113,113,232,222,189, 59,126,250,233,167,214,147, 39, 79, 30, 63,121,242,
+228,241, 63,253,244, 83,235,238,221,187, 35, 46, 46, 14,145,145,145, 49, 40,105, 43, 53, 30,192,173,210,207,248,234, 52, 15, 29,
+ 58,132,222,189,123,231,109,218,180,169,209,140, 25, 51,102,207,152, 49, 99,246, 79, 63,253, 20,214,187,119,239,188, 67,135, 14,
+ 57,171,121, 55,242, 94,102,168, 42,126, 8, 33,144, 36, 9, 62, 62, 62, 55,119,236,216, 65, 6, 14, 28,200, 53,104,208, 32, 99,
+200,144, 33,170,147, 39, 79, 18,134, 97,182, 59,147, 78, 66, 8,140, 70, 35,140, 70, 35,174, 93,187,166, 89,188,120,113,183, 73,
+147, 38, 53,249,241,199, 31, 3, 38, 76,152, 48,206,205,205, 45,182,117,235,214, 33,247, 58,239, 84,179, 44,242,120,163,212, 92,
+ 21,179, 44,155, 82, 91,205, 97,195,134,181, 12, 9, 9,241,253,241,162, 39,242, 20,205, 32,202,221, 33, 41, 60, 32,214,239,128,
+ 68, 69, 63,248,251,251,251, 6, 7, 7,119,113, 50,157,123,206,158, 61,219, 31,192,114, 0, 34,128,159,167, 76,153,242, 58,195,
+ 48,191, 76,153, 50,101, 12,128,159, 75,167,175, 58,127,254,252, 32, 0, 7,238, 83, 58,105, 89,162,154,117, 10, 33,164, 3, 33,
+228,201,210, 79, 71, 66, 72,167, 10,255,149, 21,150,123,172,138,239, 39, 43,252,239, 80, 97,189, 14,117,109,176,136,221,199,246,
+ 68,195,127,254,249,231, 39,190,253,246,219,189,153,153,153,126, 97, 97, 97, 79, 14, 29, 58, 52,164,176,176,144, 29, 54,108, 88,
+168,159,159,223,192, 3, 7, 14, 52, 24, 54,108,216,254,225,195,135, 31,103, 24,198,145,118, 51,141, 56,142,123,231,236,217,179,
+ 71, 67, 67, 67,173, 25, 25, 25,174,109,219,182, 45, 2,128,240,240,112, 67,110,110,174,198,213,213, 21, 59,118,236, 56,197, 48,
+204,104, 0,205,106, 18,244,243,243,107,235,229,229, 53,233,147, 79, 62, 81,113, 28, 87,233, 50, 42,149, 10,159,124,242,137,202,
+205,205,237, 13,127,127,255,206, 53,105,250,250,250, 70,184,186,186, 70, 47, 94,188, 88,109,177, 88, 96,181, 90,225,235,235, 11,
+157, 78,135,204,204, 76,164, 95,191,142,155, 73, 73,152,240,218,107, 26, 23,141,230, 29, 63, 63,191, 54, 53,105,118, 11,209, 13,
+209, 5, 52,127,244,173,183, 39,226,210,196,215,176, 55, 64,137, 6,111, 79, 69,235,131, 23, 16, 56,115, 62, 14,132,185, 33,230,
+153,199,241,206, 59,239, 66,225, 19,246, 72,151, 64,151,145,247, 37,164, 41,147, 17,149, 74, 5,147,201, 36, 59,114,228, 72,119,
+ 65, 16,228,130, 32,200, 15, 31, 62,252,232, 31,127,252,209,127,206,156, 57, 79,104, 52,154,113,157, 59,119,254,158, 97,152, 69,
+132, 16, 13, 33, 68, 3, 96,158, 93,228,233, 54, 77,185, 92, 14,163,209, 40, 63,125,250,244, 24, 81, 20,149,162, 40, 42, 79,159,
+ 62,253,230,129, 3, 7, 94, 92,190,124,185,211,154,247, 10,142,227, 32,147,201, 32,151,203,209,166, 77,155,171, 27, 54,108,224,
+253,253,253,101, 43, 86,172,240,244,241,241,113,249,254,251,239,243,243,242,242, 62,119, 70,211, 98,177,192,108, 54,195,104, 52,
+226,200,145, 35, 13,223,120,227, 13,153,197, 98, 17, 71,141, 26,117,139,231,121,243,155,137,186,117,110, 0, 0, 32, 0, 73, 68,
+ 65, 84,111,190,233,166,211,233,222,165,207,127,247, 7, 66,136, 8,160, 24,128,158, 16, 98, 6,128,144,144, 16,149,191,191,127,
+171,144,144, 16,135,203,163, 94,175,255,102,193,130, 5,129,172,202, 3, 71, 45, 3,176,137,204,194, 30,143,175,145, 29, 58, 25,
+190, 65, 77,208,175, 95, 63, 31,134, 97,150,212, 65,146,183, 0, 24, 14,224,215,218,172,124,183,211,217,190,125,251,238,237,218,
+181, 59, 29, 21, 21,149,217,174, 93,187,211,237,219,183,239,126,167, 25,158, 57, 6,143,205,125,139, 77,155, 53, 22,100,238, 91,
+108,218,204, 49,120,140,150,220, 7,227,244,171,232, 69,236,240,102, 24,102, 59,195, 48,219,167, 79,159,222, 11, 64,253, 10,255,
+ 31,177, 95, 14,128,178,178,111,219,199,110,186, 55, 33,228, 73,187,245,188,235,236,126,106,247,187,210,106, 14,111,111,111,203,
+123,239,189,119,214,100, 50, 93,248,254,251,239, 27,143, 31, 63,190,109, 72, 72, 72,194,176, 97,195,126,215,106,181,130,173,141,
+142,131,188, 54, 96,192,128, 29,245,234,213, 99,114,114,114, 20, 22,139, 69,118,227,198, 13,133, 40,138, 12,199,113,196, 96, 48,
+200, 18, 19, 19,229, 86,171, 85,234,220,185,243,214,227,199,143,143, 6,240, 78,117,130, 90,173,246,205, 21, 43, 86,168,171, 50,
+ 87,162, 40, 66,175,215, 67, 16, 4,204,156, 57, 83, 61,105,210,164,137, 0, 78, 84,167, 41,151,203, 39, 44, 92,184, 80,109,171,
+ 2,146, 36, 9,177,177,177,200,185,121, 19,230,162, 66, 88,138, 10, 97, 41,200, 3,171, 47,192,139,253,159, 80, 47,255,117,243,
+127, 1,188, 88,237, 77, 85,165,155,251,253,202,111, 33,138, 34, 50, 54, 87,222, 36,226,214,177,131, 16, 5, 30,179, 63,155,199,
+188,243,218,136, 57, 64,241,166,127, 74,169, 87, 42,149,236, 23, 95,124,209, 76,169, 84,130, 97, 24, 98,177, 88,208,162, 69, 11,
+230, 14, 53,185, 69,139, 22,181, 85, 40, 20,140, 77,179,101,203,150,204, 63,237,140, 87, 40, 20,208,104, 52, 8, 13, 13, 53, 14,
+ 26, 52,232,248,162, 69,139,130, 57,142,211,202,100,178, 93, 5, 5, 5,115, 46, 93,186,228, 84, 53,146,217,108,134,201,100,130,
+201,100, 66, 74, 74, 74,131,198,141, 27, 51,255,249,207,127,196,226,226,226,176, 85,171, 86, 93,217,180,105,147,118,201,146, 37,
+195, 0,188, 77,175,183,247,150, 70,141, 26, 41, 1,184, 7,215,151, 21,203, 57, 20,103, 10,130,111, 64, 64,192, 84, 65, 16,218,
+135,135,135,123, 38, 38, 38,230,249,251,251,159, 96, 89,118, 99, 90, 90, 90,102, 13, 70,141, 17, 4, 1, 99, 58,230, 99, 92,103,
+ 22,130, 32, 32, 63, 63, 31, 41, 41, 41,184,120,241, 34, 78,158,188, 88,171, 52,134,134,134,190,166, 86,171,251, 42,149,202, 80,
+ 81, 20, 89,131,193,144,108, 54,155,247,102,100,100,124, 83,197,141, 9,247, 35,157,118,250,243,135, 14, 29,234,239,238,238,142,
+ 51,103,206,248,159, 59,119,110, 62,128,246,119,116,237,144,179,223,141,122,125, 73, 64, 61, 15, 15, 36,197,109, 11,216,178,243,
+199,239, 0, 41,144,150,224, 7,130,170,238, 1,217,132,144,129,165, 1,160,237,115,230,204, 25, 88, 90,190, 6,218,255,119,160,
+ 60,222,182, 28,195, 48,219, 43,155, 94,151, 6,139, 84,147, 49,168,213,106,113,236,216,177, 9, 91,183,110, 13,109,223,190,253,
+ 95, 85, 53, 6,174,129,174,205,154, 53, 75, 62,117,234, 20,241,246,246,182, 72,146,196,104,181, 90, 81,163,209, 72, 5, 5, 5,
+224,121,158, 36, 39, 39,203, 82, 82, 82, 20, 94, 94, 94, 10, 0, 53,134,234,228,114,121,151,134, 13, 27, 86, 25, 41,208,235,245,
+ 40, 42, 42,130,217,108,134,175,175, 47,195,178,108,167, 26,195,122, 44,219,173, 89,179,102, 76, 94, 94, 30,252,253,253,113,244,
+232, 81,232, 11,242, 97, 46, 42,130,185, 32, 31,214,194, 2,136,133,249,200,191,153,137, 80,191, 64,134, 97,152, 46, 53,105, 10,
+156, 38,196, 71,231,130,196, 89, 83,209, 33, 54, 25,140, 92,129, 83, 45,253, 64,248,146,166, 86, 29,207,103,128, 81, 40,241,215,
+132,151,209,224,249, 55,192,179,170,128,251, 81,178, 5, 65, 96,204,102, 51,212,106,181,208,189,123,247, 35, 28,199, 61,170, 84,
+ 42,217,113,227,198,225,198,141, 27,229, 78,128,113,227,198, 65,163,209,192,108, 54, 11, 0, 38,163,138, 54, 83,130, 32, 48, 60,
+207, 67,163,209,240,237,219,183,255,134,227,184, 55,149, 74, 37,215,180,105,211,172,185,115,231,102,184,184,184,184,164,164,164,
+220, 82, 42,149,105,161,161,161, 29, 53, 26, 77, 72, 77,154,247, 18,149, 74, 5,153, 76, 6,150,101, 81,191,126,253,226,220,220,
+220,147,215,174, 93,123,174, 54, 90,162, 40,194, 98,177,128,231,121,152, 76, 38, 72,146,132,115,231,206, 65,165, 82,201, 69, 81,
+188, 40,138,162, 86, 46,151,131,227, 56, 58, 70,221, 61, 38, 42, 42,234,209, 80, 13,230,143,243, 51,123, 54, 26,232,162,215,170,
+184,226,103, 55,243, 29, 30,123,236,153, 39, 38, 79,158,170,243,242,242, 82, 94,191,126,221,244,229,151, 95, 54,252,237,183,223,
+ 24,148,180, 19,173,146,140,140,140, 95,230,206,157, 91,239,209, 71, 31, 13,147,203,229, 76,126,126, 62,178,179,179,113,243,230,
+ 77,164,164,164,144,164,164,164,171,130, 32,252,228, 76, 26, 91,181,106,181,106,224,192,129,163, 90,180,104, 33, 39,132,128,231,
+121, 24, 12,134,182, 39, 79,158, 28,124,244,232,209,238,215,175, 95,119,186, 92,102,102,102,254,244,217,103,159,185,244,236,217,
+179,153, 92, 46,103,235, 34,157, 21,110,104,254, 58,157, 14,123,247,238,133,155,155, 27,106,234,173,235, 8, 86, 65, 10,168,231,
+ 81, 31,166,203, 11,224,239, 22, 2,171, 32, 5,208, 18,252, 64, 69,177,152, 74, 76,208,255, 8, 33, 79,222,169, 25,186, 91,102,
+170, 86, 17, 44, 27, 55,110,220, 80,233,245,122,153, 36, 73,172,217,108,150, 75,146, 4,185, 92,206, 59,185,189, 22, 67,135, 14,
+ 61,209,161, 67, 7, 67,105, 4, 67,112,119,119, 23, 10, 10, 10, 80,106,176, 36,153, 76,102,210,233,116,166,176,176, 48,192,129,
+ 42, 66,163,209, 24,172,209,104,110,155,110, 48, 24,160,215,235,203, 12,150,193, 96,128,155,155, 27,138,139,139,107, 60,185, 69,
+ 81, 12,213,106,181,200,200,200, 0, 0,232,243,243, 96, 42, 44,132,181,168, 0,214,252, 60,240, 5,249,224, 11,242,192, 26,141,
+240, 8, 12,130, 32, 8, 65, 53,105, 22,155, 69, 37, 7,130,155,219,127,129,239,155,147,171, 92,238,214,145, 3,208, 53,110, 10,
+163,209,122, 63,198, 40,235,114,241,226,197,118,205,155, 55,199,144, 33, 67,240,204, 51,207,156,211,104, 52, 62, 75,150, 44,105,
+145,158,158,126,219,194, 79, 61,245, 20,222,126,251,109, 12, 29, 58,116,237,217,179,103,151, 86,167,217,179,103, 79,244,234,213,
+171,222, 51,207, 60,147,164,211,233, 98, 86,174, 92,217,113,230,204,153, 89, 6,131, 33, 61, 38, 38,166, 85, 90, 90,154, 54, 60,
+ 60,252, 96,100,100, 36,187, 99,199,142,144, 26, 52,239,181,233, 4,207,243,176, 90,173, 48,155,205, 32,132, 56, 28,101, 35,164,
+124, 64,129,231,249,178, 30,132, 38,147, 9, 60,207, 51, 91,182,108,198,182,109,219,216,184,184, 75,129,211,166, 77, 71,126,126,
+ 62, 68, 81,164,151,217,123, 68,187,118,237,250,203,136,180, 98, 68, 3, 94,253,130,175,160,151,177, 68,127,249,219, 15,138,207,
+121,200,204,230, 98,198,245,253, 15, 62,240,188,114,229,138,245,179,207, 62,203, 28, 50,100,136,250,245,215, 95,111,190, 99,199,
+142,238, 65, 65, 65,223,166,166,166,230, 87, 21,248,236,220,185,243, 9, 79, 79,207, 70,235,215,175,207,202,200,200,168,199,243,
+188,214, 98,177, 88, 45, 22,203, 21,171,213,122,212, 98,177,236,189,113,227, 70,140, 51,105,213,233,116,173, 71,142, 28, 41,207,
+203,203,131, 76, 38,131,213,106, 69,118,118, 54,162,162,162,184,125,251,246,181,168, 77,254,227,226,226, 22,228,231,231, 31,220,
+182,109, 91, 95, 23, 23,151,118, 74,165,178,129, 40,138,162,201,100,202, 50,153, 76,103,107,147,206, 10, 55,180,140,216,216, 88,
+127, 87, 87, 87,164,167,167,131, 97,152,140, 59, 61,102, 10, 57,155,154,244,215,214, 32,127,183,134,136,143, 63, 1,133,156, 77,
+165, 35, 6, 61,216, 17, 44,187,182, 82, 3,107, 48, 73,198,105,211,166,189,199, 48,204,246,105,211,166,189, 87, 77, 4, 75,180,
+ 95,206,110,249, 58,123,168,175,246, 38, 94, 84, 84, 36,251,223,255,254, 87, 63, 37, 37, 69,215,160, 65, 3, 67,100,100,100, 62,
+195, 48, 68, 20, 69,246,214,173, 91, 46,105,105,105,106, 79, 79, 79,115, 80, 80, 80,129,131,219,187,252,214, 91,111,245,156, 49,
+ 99, 70,204,227,143, 63,158, 3, 0,121,121,121,200,206,206,182,245,210, 66, 70, 70, 6,123,250,244,233,122,187,118,237,106, 11,
+ 7,122,240,104, 52,154,148,162,162,162,166, 30, 30, 30,101, 55, 52,155,169,178,255,182, 90,173, 40, 42, 42,130,139,139, 75,141,
+ 39, 55,203,178,233,233,233,233,141,141, 70, 3,146, 19, 19, 97, 46, 42,128,181,176, 0,124, 97, 62,248,252,124,136,249,183,192,
+234,139,160,211,104, 80,116, 43, 23, 28,199,221,168, 73,211, 69,197, 89,120, 65, 84,122,247, 27, 12, 48, 85,223,159, 61, 58,117,
+ 3,137,104, 13,141,230, 87,254, 30, 23,106, 25,128,129,182, 49,169, 52, 26, 13, 62,253,244, 83,196,196,196, 72,213, 85, 3, 43,
+149, 74,176, 44, 43, 58,162,169, 82,169, 52, 51,102,204,208,156, 61,123, 86,173, 84, 42,161,211,233,180,103,207,158,109,245,231,
+159,127,178, 6,131,129,107,220,184,241,208,128,128, 0,125, 13,154,119,213, 72, 85, 54, 77,175,215,151,181,155,186,117,235,150,
+ 76,173, 86,135,119,239,222,253,184,197, 98,249, 73, 16,132,213,177,177,177,133, 85, 62,105, 91,111,239, 12, 42, 73, 18, 4, 65,
+128, 32, 8,144,201,100,210,150, 45, 91,241,213,210, 69,248,121,211,175,164,103,207,158,204,142, 29, 59, 32, 73, 82, 26,189,206,
+222, 27, 36, 73,154,127, 96,234,211,106,136,162,222,124,112, 67,241,238, 92, 89,241,183, 23, 14,156,206,229,205,170, 38, 77,194,
+ 34,220, 92,221,217,239,215,125,123, 43, 51,235,234,229,175,190, 74, 11,154, 61,123,182, 71, 88, 88,152,123, 66, 66, 66, 0,128,
+252, 42,140, 80,232,203, 47,191,252,234,173, 91,183,228, 43, 87,174, 92,147,158,158,126, 24,192,213,138, 65, 51,148,180, 51,148,
+ 3,240, 69, 73, 15,218, 61, 0,214, 86, 99, 86, 36,134, 97,112,240,224,193,219,122,251, 73,146, 84,107,135,145,153,153,153,215,
+169, 83,167,214,151, 47, 95,222,146,159,159,191,190,146,235,236,224,200,200,200,103, 79,157, 58,245, 33,128, 43, 78, 70,176,222,
+137,139,139,251, 92,146,164, 16,150,101,147, 9, 33, 83,238,244,152, 89,172,210,235, 91,119,110, 90,105,225,197, 96,165,156, 75,
+177, 88,165, 55,104, 73,126,224,177,181,145,130,189,113,170,196, 24,253, 57,103,206, 28,205,220,185,115, 49,103,206,156,139,149,
+ 69,176,108, 70,107,206,156, 57, 23,109,203,217, 45,127,184,174, 13, 22, 83,201,141, 69, 55,125,250,244,174,109,219,182,205,120,
+244,209, 71, 51, 27, 54,108,104,176,205,211,106,181, 22, 15, 15, 15,139,217,108, 86,101,100,100,120,255,245,215, 95, 13, 37, 73,
+210, 56,176,189,253, 30, 30, 30,245, 78,159, 62, 93,127,227,198,141, 77, 98, 99, 99, 67,158,127,254,249,158,102,179, 25, 22,139,
+ 5,215,174, 93, 11, 89,177, 98,133,164, 80, 40,242, 25,134,249, 31, 74,122,195, 84, 11,207,243,199, 47, 95,190, 28,222,169, 83,
+ 39,134,231,249,114,166,202,254,183, 82,169, 68,122,122, 58,145, 36,233,164, 3,233, 60,113,250,212,169,198, 45,155, 55,135,185,
+ 32, 15,150,194,124, 88, 11,242, 33, 20,228, 67, 42,204, 7,171, 47, 66,253,122,114,104, 52, 46,184,156,145,137,210,180, 86,139,
+ 92, 48, 38,165, 23, 20, 54,109, 28,253, 5, 14,132,185,129,240,214,178,106, 65, 0,101,213,133,143,252,149,141, 35,127, 30,135,
+ 76, 52,167,223,207,146,108,177, 88,164, 97,195,134,157, 98, 89,182,206,222, 55,197,243,188, 52,126,252,248, 50,205,212,212,212,
+ 91,169,169,169,106,163,209,200,234,116, 58,253,253, 62,123,121,158,175,212, 32, 89, 44, 22, 24,141, 70,100,102,102, 42,247,236,
+217,211,253,248,241,227,138, 75,151, 46,225,248,241,227,109,182,108,217, 50,189, 89,179,102,173,227,227,227,111, 56, 98,218, 36,
+ 73,130,237, 62, 72, 8, 1, 33,132, 3,128,173,191,109, 71,191,126,253,152,162,162, 34,108,219,182,173, 78,170, 81, 40, 14, 83,
+ 12, 65,212, 88, 14,109, 40,126, 55, 81, 89,120,209, 32,251, 36, 38, 38,102,247,128, 1, 3,142,248,251,134,185, 1,128, 74,161,
+243,230,136,171,206,219,219, 91, 5, 0,254,254,254,237,120,158, 95,154,158,158,222,173, 50,193,167,158,122,234, 17, 31, 31,159,
+182, 59,119,238, 60,155,158,158,126,164, 18,115,133,166, 77,155,206,188,112,225, 66,127,185, 92,206,216, 93,252, 73, 85, 6,107,
+216,176, 97, 77,149, 74,101,253, 29,151,221, 81,168,104, 12,137,205, 7,225, 84, 16, 61, 90, 35, 89,209, 2,190,190,127,213,215,
+106,181,109,174, 94,189,122,214,201,252, 7,143, 24, 49,226,247, 85,171, 86, 69,244,235,215, 79,121,236,216,177,219, 12, 86, 68,
+ 68,196,176,125,251,246, 13, 31, 55,110, 92,235,245,235,215, 15, 2,144,232,168,120,108,108,236, 49,148,188,177,161,206,248,232,
+ 27,236, 5,196,144,210, 64, 4, 45,193, 15,120,244,170,148,108,187,232, 83, 54, 0,166,194,255,179,165,231,144,133, 16, 98, 91,
+ 54,219, 46,106,101,169, 16,245,170,108, 94, 54,195, 48,117, 22,220,144, 85,243,228,189,231,218,181,107, 29, 70,140, 24,145,109,
+111,174,236,171, 71,116, 58,157,217,205,205, 77,127,234,212, 41,127, 81, 20, 15, 58,176,189,149,251,246,237, 59,176,120,241,226,
+ 13,245,234,213,227, 95,124,241, 69,118,234,212,169, 71,114,115,115, 73,110,110, 46,150, 44, 89,210,163,123,247,238, 71,146,147,
+147,197,152,152,152, 87, 0,244,171, 73,208, 96, 48,124,253,230,155,111, 62,123,228,200, 17,181,197, 98, 65,126,126,254,109,209,
+ 43,158,231,193,113, 28,150, 46, 93,106, 46, 46, 46, 94,228, 64, 36,227,155,175,191,254,122,248,138,175, 22,171,101,188, 21,134,
+252, 60,136,165, 31,206, 84, 12,157,154, 69,227,182,222,200,207, 80, 97,221,206, 99, 70, 65, 16,190,174,209, 96,153,244,147,199,
+141, 25,189,125,207,254, 3,168,223,173, 55,114, 14,236,186, 61, 26,228,237, 11,139,213,138, 79,102, 69, 19,198,152, 63,245, 94,
+ 7,112, 0,108, 47, 29, 77, 29, 0,182,159, 61,123,246,120,155, 54,109,250, 91, 44,150,234,140, 24, 36, 73,226,106,163,169, 82,
+169,210,154, 54,109,186,191, 81,163, 70, 67, 1,160,121,243,230,191,177, 44,219,187, 6,205,187,106,176,102,204,152,129,185,115,
+231, 98,218,180,105,101, 6,201,246, 0, 96, 54,155, 27,238,218,181, 75,121,236,216, 49,178,110,221,186,156,167,159,126,218,227,
+249,231,159,247, 88,191,126,253,127, 0, 76,173, 74,115,202,148, 41, 88,190,124, 57,198,142, 29,123,219,124,142,227,164,244,244,
+ 52,152, 45,102,178,117,235,214, 12,153, 76,230,249,229,151, 95,106, 38, 77,154,196,208,107,237,189, 65, 20,197,247,187, 45,216,
+ 50, 17,208,240,130, 32, 44, 58,127, 62,230, 96,105,212,198,103,193,130, 5, 74, 0,248, 98,222, 23,114, 66,136,220, 54, 48,236,
+199, 31,127,172, 30, 51,102,140, 79, 85,154,191,252,242, 75,222,199, 31,127, 92,255,245,215, 95,239,119,224,192, 1,245,169, 83,
+167,118,161,228, 45, 5, 57,165,142,192, 43, 33, 33,225,152,183,183,183,223,166, 77,155, 26,247,237,219,215,165, 70, 23, 88, 92,
+252,237,178,101,203, 66,231, 31,118,197,142,226,161, 72, 37,207,128,212, 35,168,167, 40, 66,115, 93, 10,122,250,165,250,175, 95,
+191,126, 37,128,118, 78,100,191,197,211, 79, 63,189,121,213,170, 85, 13, 71,143, 30,157,118,236,216,177, 84, 0, 51, 43, 46, 20,
+ 19, 19,147,251,242,203, 47, 39,175, 89,179,166,177, 36, 73,187, 55,108,216,208, 15,192,101, 90,122, 40,247,204,121, 57, 16,200,
+168,205,178,119, 19, 89, 53, 23,157,215,242,242,242, 34,167, 77,155,246,185,191,191,127,112,116,116,244,245,230,205,155, 23,219,
+230,231,230,230,234, 14, 29, 58, 20, 86, 88, 88, 88, 36, 8,194, 40, 0,231, 42,145,105,137,242, 99,101, 36, 75,146,244,121,155,
+ 54,109,158,253,241,199, 31, 15,185,186,186, 22,158, 56,113,194,205,205,205,173,224,210,165, 75, 46, 28,199, 25,174, 94,189,138,
+189,123,247,246, 0,240, 85, 21, 79, 73,229, 52, 51, 51, 51,207, 40,149,202, 47, 38, 77,154, 52,233,195, 15, 63, 84, 75,146, 4,
+163,209,136,162,162, 34,152, 76,166,178,198,201, 27, 55,110, 52,155,205,230, 21, 25, 25, 25, 39, 28,208, 60,206,113,220,242, 69,
+ 95, 46, 26,255,198,179, 35,148, 36, 63, 23, 5,153, 70, 48,166, 98,232,212, 74,180,232, 29,128,226, 92, 6,171, 14,157,182,220,
+178, 88, 55,101,100,100, 28,172, 73,243, 88,170,254,247, 78,202,196,189, 31,207,138,126,108,250,234, 95, 33, 73, 18,254,122,243,
+ 69,228, 29,222, 11,109,243, 86,120,228,175,108, 88, 44, 22, 76,155, 50, 9,156, 33,235,200,201,212,226,159, 29,216,159,117,129,
+189,230,113,252,253,238, 50, 1,192,248,115,231,206,141,138,136,136,192,184,113,227,240,212, 83, 79,149, 91,113,243,230,205, 88,
+182,108, 25,204,102,243, 40, 0,177, 0,150, 58,163,217,176, 97,195,142, 45, 90,180,224,252,253,253, 13,165,102,163,247,197,139,
+ 23, 59, 68, 68, 68,212,164, 89,231,121, 39,132,228, 37, 38, 38,186,205,155, 55,143,177, 90,173,152, 57,115, 38,108,198,210, 22,
+113,122,255,253,247,253, 93, 93, 93, 49,127,254,124, 75, 78, 78, 78,159,220,220,220,125,139, 23, 47,246,218,184,113,227,115,118,
+ 6,203, 94,243,102, 92, 92,156,235,242,229,203, 89, 65, 16,176, 96,193,130,219, 34, 90,239,188,243, 14,172, 86, 30,114,153,220,
+ 98, 54,153, 91,104, 52,154, 43,158,158,158, 26, 73,146,200, 61, 60,238, 15,181,230,249,243,231,247,160,164,106,174, 82,108,237,
+232,140, 70, 35,114,114,114,144,147,147, 3,119,119,247,138, 79,219,229, 52,141, 70,227,217, 41, 83,166,196,124,243,205, 55,253,
+254,252,243,207, 17,135, 15, 31, 30,176,119,239, 94, 83,114,114,178,192,243, 60,241,243,243,147,117,235,214, 77, 61, 96,192, 0,
+ 23,149, 74,197,190,255,254,251, 57,159,126,250,169, 23,128,220,170, 52, 9, 33,156, 36, 73,248,111,247, 66, 76,233, 37,131,217,
+ 92,242, 64,153,145,145,142,139, 23, 47,226,248,241,120, 48, 12,195, 58,185, 63, 23,173, 95,191, 62, 76,169, 84, 50, 27, 54,108,
+ 8,222,176, 97,195,132,154,118,222,218,181,107, 67, 55,108,216,176, 20,192, 99, 40,105,248, 68,203, 18,213,164, 56, 99,176, 74,
+185, 40, 8, 66,191,148,148,148,110,163, 71,143,254, 44, 34, 34,194, 44, 8,130,124,247,238,221,205,114,114,114,148,130, 32, 76,
+129,243,245,149,203, 77, 38, 19,134, 12, 25, 50,165, 81,163, 70,251, 98, 99, 99, 91, 63,249,228,147,187, 55,111,222,220, 77, 16,
+132,171, 23, 46, 92, 24, 5, 96, 81,169,193,114,136,164,164,164,153,123,247,238,101, 78,156, 56,241,238,180,105,211, 84,222,222,
+222,140,135,135, 7,140, 70, 35, 82, 83, 83,201,154, 53,107,204,102,179,249, 43,119,119,247, 15, 28,213,244,246,246,158,122,248,
+244,105,101,194,149,196, 87, 94,233,255,184, 58, 56,188, 41,116, 12,160,191,149,139, 67,135, 50,177,250,228, 89, 83,142,197,250,
+ 3,199,113, 14,119,165, 15,188,146,221,111,207,166, 85, 59, 15,238,223,255,216,236,185,159, 51,254, 47,188, 1,151,144,134,144,
+ 66,155,224,208,193,131,248,244,227,153,132,211,103, 29,230,175,100, 61,126, 31,203,132,205, 1,168, 0,204,147, 36, 73, 86,250,
+ 52,143,183,223,126, 27,246,175,206, 89,182,108, 25,140, 70, 35, 0,200, 24,134,153, 7,224, 59, 84, 61,162,123,101,154, 65,191,
+255,254,123,144,189,102, 68, 68,132,163,154,117, 74, 86, 86,214, 7,175,189,246,218, 92,185, 92,238, 46, 73,210,109,141,211, 1,
+192,197,197, 5,133,133,133, 16, 69, 81,168, 87,175, 94, 60,207,243,144,201,100, 85,158, 71,197,197,197, 31,140, 29, 59,246, 19,
+134, 97,170,140,116,104, 52,154,228,163, 71,143, 54,121,254,249,231,217, 77,155, 54, 93,123,238,185,231, 84,127,254,249,167,136,
+ 90,142,105, 68,185,251, 16, 66, 80, 92, 92, 12, 84, 63, 36, 66,202,143, 63,254, 56, 37, 38, 38, 70, 61,118,236,216,118, 47,188,
+240,130, 91,175, 94,189,116,246, 11, 24,141, 70,105,219,182,109,197,203,151, 47,207, 61,124,248,240,255, 94,125,245,213,161, 0,
+170, 12, 23,103,100,100,252,190,100,201, 18,247,158, 61,123,134,139,162,136,156,156,156,178, 54, 88,105,105,105, 72, 78, 78, 78,
+150, 36,105,171,147,217,121,243,249,231,159,223,177,102,205,154,144,209,163, 71,167,109,220,184,113, 43,128,202,218,212,234,134,
+ 13, 27, 54,120,205,154, 53, 33, 99,198,140, 73, 1, 48, 1,180, 85, 57,133, 82,167, 12,225, 56,238, 79, 0, 67,156,112,184, 85,
+ 17, 2,224, 19,148,212,155, 22,148, 58,225,217, 0, 26,213, 86,211,223,223,191, 85,120,120,248, 15, 77,155, 54,189, 30, 16, 16,
+192, 55,109,218, 52, 57, 60, 60,124, 83,131, 6, 13,162,106,171,233,231,231,215, 53, 40, 40,104,119, 96, 96, 96, 78,112,128, 63,
+ 9, 12, 12,188, 21, 28, 28,188, 55, 32, 32,160,103,109, 53, 59, 5,233, 6,118,106, 26, 16,223, 46,178,137, 57,188, 81, 67, 18,
+213,162,137,185,115,179,160,132,142,193, 46,195,238, 96,127,222,201, 83, 72,101,168, 0, 24, 72, 41, 12,195,240,109,218,180, 89,
+ 30, 21, 21,181, 52, 42, 42,106,105,235,214,173, 87, 48, 12,195,219,230, 3, 48,224,239, 65, 65,239,165,230,221,200,123,165,116,
+235,214,109,237,134, 13, 27,196,217,179,103, 23,116,238,220, 57,119,246,236,217, 5, 27, 54,108, 16,187,117,235,182,182,182,154,
+173, 91,183, 14,233,222,189,251,173,181,107,215, 10,151, 47, 95, 38,107,215,174, 21,186,119,239,126,171,194, 72,238,247, 61,239,
+ 15,163,230,240,225,195, 19,137, 29, 22,139,133,100,103,103,147,132,132, 4,114,228,200, 17,242,248,227,143, 39, 58,160, 41, 3,
+208, 11,192,130,192,192,192, 61, 93,187,118,189,220,189,123,247, 43,141, 26, 53,250, 83,161, 80,172, 7,240, 50, 74,222,119,232,
+135,146, 97, 73,124,171,211,244,243,243,235, 18, 17, 17, 49,187,109,219,182, 91, 59,119,238,124,172, 93,187,118,199,155, 54,109,
+186,189, 97,195,134,115,253,252,252, 30,169,101,222,131, 71,140, 24,113, 81,175,215,139, 61,122,244,216, 86,217, 74, 81, 81, 81,
+107,244,122,189,248,194, 11, 47, 36,160,228, 61,178,180, 44, 81,205,187,161, 73,121, 88, 11,138, 51,163, 56, 63, 32,121, 31, 95,
+106,114, 12, 40,255,218,154,154,230,223,107,205,123,178, 63,155, 55,111,238,249,216, 99,143,189,185,117,235,214,119,175, 94,189,
+250,238,214,173, 91,223,237,219,183,239,155,205,155, 55,247,188,147,116,182,110,221, 58,164, 91,183,110, 95,117,237,218, 53,173,
+ 91,183,110, 95, 85, 48, 87,244, 34,126,159, 52, 7, 13, 26,180,115,196,136, 17,137, 35, 71,142,188, 50,114,228,200,196,225,195,
+135, 39, 14, 29, 58, 52,113,208,160, 65,137,253,250,245, 75,236,213,171,215,206, 7, 40,239,193, 29, 58,116,248,193,213,213,245,
+133,202,102, 42, 20,138,193, 93,186,116,249, 25, 64, 99, 90,150,168, 38, 53, 88,212, 96, 81,205,186,209, 84,161,250,215,213, 84,
+ 54,255,126,104,210,227, 78, 53,169, 38,213,164,154,212, 96,253, 99,144,209, 93, 64,169, 1,243, 29,206,191, 87,154, 20, 10,133,
+ 66,161,252, 99, 96,170,113,161,206,244, 14,168,141,147,189, 64, 53,169, 38,213,164,154, 84,147,106, 82,205,135, 78,179,162,246,
+211, 21,166, 87, 28, 7,114, 5,181,107,117,115, 96,168, 38,213,164,154, 84,147,106, 82, 77,170,249,240,105, 86,198,232,127,171,
+ 1,162, 47,148,165, 80, 40, 20, 10,133, 66,161, 6,139, 66,161, 80, 40, 20, 10,229,159,141, 67,141,220, 21, 10, 69, 36, 33,228,
+ 85,134, 97, 26, 48, 12,115,131, 16,242,157,213,106,189,248,176,237, 44,133, 66, 17,201, 48,204,171,132,144, 6,132,144, 27, 12,
+195,220,215,253, 64, 0,102,102,116,201,104,210, 31, 69,131, 48,213, 15,124, 72,161, 80, 40, 20, 10,229,126, 27,172,144,192,192,
+ 17, 44,199, 44,182,242,162, 39, 47, 8,236,146, 37, 75,216, 65,131, 6, 97,219,182,109,152,240,246,219, 19, 88,142,149, 20, 50,
+ 89, 30,145,132, 9,201,105,153, 63, 58,178,177,161, 67,135,102,241, 60, 95,229,168,214, 28,199,221,220,178,101,139,239,157,102,
+202, 63,234,153, 44,222,106,173,114, 59, 50,153,252,102,230,217,159, 29,218, 78, 96,160,223, 8,142, 97, 23,243,162,228, 41,138,
+ 18,251,213, 87, 95,149,237,135,183,222,122,107,130, 92, 38,147, 20,114, 46, 79, 18,201,132,228,180,180, 31,239,213,129,179, 55,
+ 87, 0, 48, 51, 26, 12,137, 6,168,201,162, 80, 40, 20, 10,229, 31,108,176, 24, 22, 75, 55,124, 51,207, 51,247, 86, 30, 54,110,
+222,141,136,136, 8, 92,186,116, 9, 17, 17, 17,232,214,177, 53,251, 68,151, 54, 44,199,194,123,198, 87,235,150, 2,112,200, 88,
+240, 60,239,243,219,111,191,129, 97, 24,136,162, 8, 65, 16, 32, 8, 2,120,158, 71, 81, 81, 17, 38, 78,156,232, 83, 23,153,226,
+173, 86,159,171,255,251, 21,114,142, 1, 47, 18,240, 2, 1, 47, 72,176,138, 4,133, 6, 1,189,159,124,222,225,237,176, 96,151,
+126,183,120,158,103,126, 65, 1,126,221,177,167,220,126,232,221,181, 3,251,204,128, 71, 89,173, 70,225, 61,122,234,103, 14,239,
+135,186,192,222, 92,149,155, 22, 77, 13, 22,133, 66,161, 80, 40,255, 88,131,101,225, 69, 79,223,122,238, 88,253,221,119,152, 50,
+237, 99, 52,107,214, 12,132, 16, 48, 12,131,247, 62,156,133,133, 31, 79,195,200,254, 61,192, 11,146,103, 53,250,183,117,213,100,
+ 24, 6,215,175, 95,135,209,104, 44,247,137,140,140,116, 52,205, 14,117,255,148,115, 12,126,143, 45,130,149,151, 96, 21, 74, 63,
+188,132, 94, 45, 93,157,210,228, 69,201,211,195, 77,135,149,223, 44,195,148, 89,243,202,237,135,169,239,125,136,175,231,126,128,
+119,198,189, 4, 11, 47,122,214, 38,157, 78, 66, 53,169, 38,213,164,154, 84,147,106, 62,168,154, 15,164,193,234, 9,224,160,205,
+ 3,149,153, 11,139, 9, 45,130,234, 99,217,252, 79, 64,192, 66, 34, 4, 32, 0,145,120, 52,244,210,194,104, 48, 56,189, 65, 73,
+146, 96,181, 90,193,243, 60, 86,172, 88, 1,189, 94, 15, 73,146, 16, 17, 17, 1, 0,136,138,138,178,143,192,164,196,198,198,134,
+212,164,233,221,114, 72, 50, 8,130,237,167,125, 52,239, 91, 28,139,189, 10, 66, 0,149, 70,139,225, 47,140,129, 40, 17, 88,121,
+231,223, 79,106, 50, 24,224,167,147, 99,225,167, 31,130,149, 43,192,130, 1,203, 50, 96, 25, 9,205, 2, 61, 97, 46,121, 57,241,
+ 61,229,163,104,144,138, 81,172,143,162, 65,162,105,153,166, 80, 40, 20,202,191,147, 74,189,200,191,221, 96, 29,172, 44, 51, 22,
+147, 17,129,158, 10, 52,208,185, 67, 16, 68, 92,180,250,161,200, 96,130,213,202, 35,217,106,197,149, 51,153,120,228,145, 71,192,
+243,188,104,181, 90,161, 80, 40, 10,182,108,217, 82,175, 38,131,197,243, 60,172, 86, 43,138,139,139,177,126,253,122,200,100, 50,
+ 72, 82,137,241, 41,121,199,111,201,119,215,174, 93,131, 29,202, 5, 65,240,149, 83,191,192, 85,205, 65,144, 8, 4,129,128, 23,
+ 1, 81, 34, 48, 88, 36, 12,123,237, 3, 8,146, 4, 65,146, 96,113,192, 96,217, 27, 54, 1,192,144,233, 27, 1,232,202,230,187,
+169, 8,166,116,101,161, 80,170,160, 84,112, 48, 27, 13,247,252,192, 49, 0, 33,209,127, 87, 21,210, 70,238, 20, 10,133, 66,249,
+151,115,240, 65, 48, 86, 21, 13,150,189,123, 60,244,183,193, 50, 64,224, 69,240,130, 8,129, 23, 80,160, 55,226,243,207, 63,135,
+ 74,165, 2,195, 48,101,102, 73,146, 36,150,231,121, 12, 24, 48,192,179,166, 13,138,162, 8,171,213, 10,171,213, 10, 66, 8, 56,
+142, 67,167, 78,157,110, 91,238,196,137, 19, 78,101,196, 85,205,161,225, 99,211,111,155,126,242,151, 79, 64, 8,129, 40,150,124,
+ 28, 49, 88, 53, 25,182,182, 61,159,129,217,194,131, 16, 0,164, 36,194,117, 63, 96, 0, 98,107,115, 21, 77, 79, 76, 10,133, 66,
+161, 60, 24,148,243, 34, 15,138,193, 42,231, 30,205, 70, 35,120, 94,128, 32,136,224,249, 18, 99,164,209,104,208,163, 71,143, 18,
+ 31, 98, 23,109,218,189,123, 55,172, 86,107,141, 27,180, 53,106, 47, 53,102, 32,132, 96,227,198,141,144,203,229,101, 31,133, 66,
+225,116, 70, 4,145, 96,250,212,255, 66, 33, 99, 33,151,177,101,223, 34, 33, 32,164,196, 28,137, 18,129,153,119, 44,200, 83,157,
+ 97, 3, 0,139,217, 10, 16, 2, 2, 2, 99,113, 49, 61, 29, 40, 20, 10,133, 66,169, 27, 30,136, 72,150,205, 96, 61,138, 74,170,
+151, 44,198,226,210,232,149, 8, 94, 16,202, 12,212,252,249,243, 33,147,201,160, 84, 42, 33,147,201,202, 12,145, 35, 6,203,100,
+ 50, 33, 44, 44, 12, 22,139, 5, 17, 17, 17, 32,132,224,217,103,159,189,109,185, 83,167, 78, 57,149, 17, 94, 36,152,243,217,130,
+219,166, 31,253,233, 99,180,106,222, 16, 29,155,184,192,100,149, 80,104, 16,238,216,176, 1, 40,137, 96, 1, 32, 4, 48, 22, 27,
+232,233, 64,161, 80, 40, 20,202,157, 81,169, 23,249,183, 27,172, 67,149,185, 69,147,193, 0,129, 23,202, 76,150,197, 98,129, 36,
+ 73,120,251,237,183,111, 19,218,183,111, 31, 44, 22, 75,245, 27,147,201,110,190,241,198, 27,229,134, 72, 32,132,224,151, 95,126,
+129, 74,165, 42, 23,197, 98, 24,231,204, 43, 47, 18, 68,191, 63, 9, 74, 57, 87,206, 16, 73, 18,176,237,247, 63,176,237,247, 63,
+202,150,229, 56,249,205, 59, 49,108, 0, 96,177,148, 70,176, 8, 65,177,190,136,158, 22, 20, 10,133, 66,161,220, 25,149,122,145,
+127,187,193,170, 20,147,177, 24,188, 93, 27, 44,171,213, 10, 65, 16,176, 98,197,138,114,213,121,114,185, 28, 44,203,214, 24,193,
+218,188,121,115,185,193, 61,163,162,162, 8, 33, 4,195,135, 15, 47,171,110,124,229,149, 87, 48,122,244,104,167, 13,150, 32, 18,
+204,156, 61,191, 76,103,192, 99,221, 49,164,127, 79, 72,165, 94, 56,251,226, 22,167, 4,171, 51,108, 0, 96, 49,151,180,193, 34,
+ 0, 12, 69,180,138,144, 66,161, 80, 40, 20,138, 3, 6, 75, 46, 99, 11,174, 36,223,112,247,114, 81, 67,144,204, 16,164,146,158,
+127,162, 40, 98,244,232,191, 95,110,253,220,115,207, 97,212,168, 81, 85, 25,172,150,168, 97,172, 12, 73,146,112,244,232, 81, 48,
+ 12, 3,150,101,203, 62,213, 80,169,102,177, 89,194,177, 31,103, 65, 34, 4, 18, 1, 36, 82,226,167, 44,130, 67,209,198,219, 52,
+107, 50,108, 42,157, 7, 56,150,128, 97,128, 43,105, 89,144,113,108,129,179,121,175, 5, 84,147,106, 82, 77,170, 73, 53,169,230,
+131,170,249,112, 24, 44, 34,146, 9,203,183,159, 88,204,139,146,187,109, 90,139, 22, 45, 96,181, 90,177,107,215,174, 50,227,193,
+113, 92, 89,149,158, 35,109,176, 42,144,210,163, 71,143,234,134, 98, 72,113, 72,133, 65, 74,251, 94, 35,130,171,155,239,108,194,
+106, 50,108,171, 14,255,253, 10, 66, 25,203, 22,128,144, 9,180, 56, 81, 40, 20, 10,133, 66,169,214, 96,165,102,100,172, 3,176,
+206,126, 90,155, 54,109,244,131, 7, 15,214, 8,130, 0,139,197, 2,171,213, 10,139,197, 82,246, 81,169, 84, 78,141,184,233,200,
+ 32,162,142,144,125, 97, 75, 72,157,238, 21, 7, 12, 91,102,102,102, 8, 45, 62, 20, 10,133, 66,161, 80,156, 50, 88,149, 97, 48,
+ 24, 60, 24,134,145,101,100,100,220, 54,239,198,141, 27, 64,201,184,156,255,122,234,220,176, 81, 40, 20, 10,133, 66,161, 6,171,
+ 42, 14, 29, 58, 36, 60, 40, 38,138, 66,161, 80, 40, 20, 10,229,110,193,210, 93, 64,161, 80, 40, 20, 10,133, 82,183, 48, 40,233,
+ 9, 80, 25,206,244, 14,104, 89,139,109, 95,160,154, 84,147,106, 82, 77,170, 73, 53,169,230, 67,167, 89,147,182,253,250,163, 1,
+172,160,118,173,110, 14, 12,213,164,154, 84,147,106, 82, 77,170, 73, 53, 31, 62,205,202, 24,253,111, 53, 64,180,138,208, 25,162,
+ 70,203,233, 78,160, 80, 40, 20, 10,133, 82, 19,178,123,181,161,232,232,104,246, 14,215,151,238,219, 94, 10, 24,214,152,147,225,
+243,214,193, 1,253,207,228, 14,221, 65, 68,102, 42,210,127,189, 66,139, 79,237,104,227, 2, 47,158,145, 15,244,212,169,135, 4,
+187,202, 58, 39,230, 24,254, 52, 88,165,109,132,225,183,196, 21, 33,143,238, 33, 10,133, 82,233,165, 56, 32,192,243,216,177, 99,
+193, 93,187,118, 77, 73, 79, 79,207,115,116, 94, 85,248,134,181, 27,229,170,211,190,105, 50,155, 27,186,187,185,221,188,149,155,
+187, 60,243,218,153, 37,182,249, 13, 27, 54,116,219,176, 97,131,255,115,207, 61,151,113,253,250,245, 66,122, 4, 40,247,212, 96,
+181,111,223,190,161, 36, 73, 47, 1,120,129, 16,114,246,204,153, 51, 79,215, 70,103,223,190,125, 1, 60,207,119, 16, 4, 33, 10,
+ 64,148, 70,171,107, 99, 54,155,110, 50, 32, 47,247,239,223,255,140,179,122, 81, 81, 81,191, 3, 24, 80,217, 60,134, 97,102,198,
+196,196, 68, 59,170,197,201,240,249, 31, 91, 86, 13,201, 52,104,112, 40, 38,249,169,239,190,152, 6, 0, 67,255,137, 7,212,207,
+207, 79, 3,224,101,150,101,251,168, 84,170,112,147,201,148, 4,224, 60,195, 48, 75,211,211,211, 51,106, 41,203, 70,234,228,175,
+105, 53,218,126,126,174,202,168,244,188,194,116,147, 85, 58, 34, 49,214,121,206, 26,162, 70,128,210,167,158,199,161,119,135,117,
+139,104,221,162, 9,164,228,179, 48,229,103, 15,142, 73, 55, 12,254,230,228,205,255, 90,138, 12, 81, 87, 1,139, 35, 90,129,129,
+129,126,162, 40,202, 50, 51, 51, 83,109, 23, 67,179,217,220, 30, 64, 4,128,191, 84, 42,213,233, 59,189, 40,254, 91, 52, 3, 2,
+ 2,252, 37, 73,122,221,215,215,247,201,172,172,172,223, 89,150, 93,117, 7,199,155,242,144, 16,210,233,197, 5, 12,203,120, 57,
+179, 14,145, 72, 78,242,201,117,255,189,151,233, 36,164,100,164,231,128,128,128, 87,130,131,131,155, 16, 66, 18, 8, 33, 95, 86,
+ 56, 7,110,155,199, 48, 76,149,175,242, 8,105,209,101,243, 27, 47, 61,215,123,226,184, 87,116, 90,173, 6, 6,163,169,254,210,
+149,223,127,177,116,229,250, 1, 73,151,142,245, 7, 0,127,127,255,161, 65, 65, 65,161, 22,139,229, 58, 33,228,251,154, 52, 41,
+148, 59, 54, 88,205,155, 55,119, 81, 42,149,195, 89,150,125,185, 85, 84,231,110,131,159,121,153,225, 25, 45, 62,157,244,156,211,
+ 67, 56,196,198,198,170, 50, 51, 51, 63,110,216,172,221,127, 30,237, 59,132,109, 30,209, 12, 94,245, 61, 33,177, 74,172,217,117,
+185,254,193,111, 94, 89, 2,160, 75, 45,146, 57,224,199, 29, 39,145,153, 47,130, 97, 0,134, 1, 88, 6,208,155, 36,188,247,106,
+183,143, 0, 56,102,176,162, 70,203, 35, 26,248,244,191,124, 75,141, 93, 23,120, 0,254,208,122,250,246, 55,120,143,150, 35,118,
+ 5,255, 79, 58,152, 13, 26, 52,136,170, 87,175,222,215,175,188,242,138,103,120,120,184,159, 82,169,212,154, 76,166, 38,201,201,
+201, 13, 23, 46, 92,248,120,131, 6, 13,230,222,184,113,227, 87,103, 52,155,185,171,130, 67, 27,248,254, 56,117,220, 75, 29,195,
+195,130, 32,179, 20,131,152,245, 65,201,215,175,118,153,189,234,215, 55, 24,198,244,236,165, 66, 97,175,163,122,106, 87,197,251,
+239,141,126, 54,162,177, 43,129,229,210, 81,200, 56, 2,181,171, 39, 58, 6,115, 96, 64,154, 71,239,207,120, 15, 69,214,143, 28,
+ 48,146,179, 68, 81,124, 15, 0,211,160, 65,131, 31,229,114,249,169,246,237,219, 55, 27, 57,114, 36,211,170, 85, 43,156, 57,115,
+166,249,182,109,219,158, 22, 4, 33,222, 98,177,156,172, 95,191,254,217,184,184, 56,171,131,229, 91,145,155,155,219, 70,169, 84,
+118,250, 39,107,250,249,249,105, 44, 22,203, 75,129,129,129,163, 31,121,228,145, 86,131, 6, 13, 98,154, 54,109,138,248,248,248,
+118, 59,119,238,252,232,200,145, 35,231,211,210,210, 86, 40,149,202,239, 51, 51, 51, 29, 26, 4,120,120, 31,196,255,188, 15,205,
+106, 59,191, 2, 30, 0,212, 0, 50, 29, 9, 38, 0,208, 2,184,118, 31, 52,239, 70,164, 37,142, 97,152,122,165, 55,100,219,131,
+ 93,185,223,246,223,162, 40, 22,167,164,164, 52,170, 78, 51, 40, 40,168,185, 36, 73,156,253, 52,185,188,234, 86, 11,130, 32, 72,
+105,105,105,151,170,211,100, 88,198,107,197,215, 11,220,101, 44, 32,146,210, 15, 79, 32, 18, 2, 73, 2, 68, 9, 16, 37, 9,130,
+ 72, 32, 4,150,212,198, 0, 0, 32, 0, 73, 68, 65, 84, 17, 9,188, 64, 48,243,163,247,238,231,101,238, 73, 0, 61, 0, 28, 6,
+176,168,154,121, 95, 86, 39,226,221,168,205,139, 47, 61, 59,188,215,123,147,222,212, 17, 66, 64, 8,129, 70,173,194,228,137, 99,
+149, 38,147,165,171, 95,147,246,163, 51, 19, 79,175,100, 24,166, 23,128,246, 0, 78, 3,248,158, 90, 6,202,221, 50, 88, 76,187,
+118,237,122, 16, 66, 94,110,224, 31, 56,124,216,243, 99, 52,161, 77, 90, 66, 47,185,225,122,142,132,216, 3, 27, 0, 96,147, 51,
+ 27,223,189,123,119,123, 66,176,122,220,180, 5,205, 90,183,237,128, 11,233, 2,142,165,138, 40,190, 34, 66,198, 25, 33, 73, 0,
+ 33,196, 92,219,204,165,229, 9, 56, 18,111, 1,199, 2, 44, 11,112, 44, 3,206,217,247,116,199,174,224, 47, 5, 15,221,241,199,
+169,244,167,160,246,133, 33, 47, 29,134,188,172,157, 72,219,252,143, 50, 87,254,254,254,189, 67, 67, 67,191,156, 56,113, 98,131,
+204,204,204,122, 39, 79,158,132, 74,165,130,167,167,167,204,203,203,171,217,180,105,211, 10,102,207,158, 61,217,199,199,231,204,
+205,155, 55,147, 28, 50, 5, 46,138,136,238,173, 34,254,156, 49, 43,218,221, 28,179, 19,249, 63,255, 12,142,149,160,112,209,193,
+ 79,163,197,162, 39, 67,235, 77,219,157,250, 43,107,181, 68, 92, 48,153,210, 29,209, 12,242,169,215,183,113,120, 83,228,111, 95,
+138,196,124, 51,142,103,153, 49,184,103,123, 52,246,212,160,173, 32,162,190, 90,214,187, 38,131, 21, 16, 16,224, 41, 73,210,212,
+164,164, 36, 86,161, 80, 48, 13, 27, 54,124,118,197,138, 21,164,121,243,230,101,111,221,238,210,165, 11,186,116,233,194,232,245,
+250,136, 99,199,142, 69,108,222,188,153, 47, 40, 40,136,201,200,200, 88, 83,117,100, 41, 44,197,108, 54, 5,153,204, 22,211,194,
+133, 11,127,232,220,185,179,164, 84, 42,113, 39,154,165,198,119,189, 86,171,213,206,152, 49, 35,167, 67,135, 14,164, 46, 52, 67,
+ 67, 67,255,232,216,177, 99,175,190,125,251,202,186,118,237, 10,127,127,255,178,121, 94, 94, 94,232,222,189, 59,147,154,154,218,
+250,200,145, 35, 75,255,248,227,143,197,103,206,156, 57,144,148,148,212,215,129, 67,212,244, 14,231,151, 11,254, 2,152, 3, 96,
+ 37,128, 99,213, 61,198, 0,120, 14,192,231,247, 73,179,250,135, 2,181, 58,203,100, 50,249,148,254,190,105, 50,153,124,107,188,
+ 88, 50,140,110,225,194,133, 62, 10,133, 2, 44,203, 66, 20, 69,136,162, 8, 73,146, 64, 8, 41,251,182,189,114,108,214,172, 89,
+ 98, 77,154,146, 36,177, 11, 22, 44,144,107, 52, 26, 0, 0,207,243,229,190,109,216,254,207,154, 53,203,161,107,148, 70,201,225,
+195, 73,163, 59,178,162, 69, 93,237,246, 57,165,233,181,201, 95,158,186, 15,102,213, 51, 32, 32,224, 37, 0,131, 0,216,206,241,
+ 86, 1, 1, 1,251, 43, 44,218,170,244,187, 56, 32, 32,224, 0,128,223, 3, 2, 2, 86, 87, 86, 93,232,238,226, 58,246,221,183,
+ 95,119, 37,132, 96,230,207, 57,152,249, 75, 14, 62, 28, 90, 15,147, 7,104,241,234, 11, 79,187,172, 94,247,211,152,210, 50,102,
+ 35, 1, 37,189,238,105,244,138, 82,247, 6,171,109,219,182, 59,250, 15, 29,213,175,115,143,190, 16, 20, 62,136,191,201, 32,245,
+ 58,129,140, 19,192, 66,194,181,255,109, 33, 44,203, 86,116,248, 85,118,213,220,177, 99,199,127,131, 27,183,153,251, 94,244, 28,
+238, 66,150, 18,171,143, 24, 33,154, 11, 96,204,185,130,226,155,151, 81,116, 35, 14,249,233, 23,206,179, 44, 27,237,168,230,237,
+ 97,101, 64, 34, 4, 12, 97, 0, 9, 37,231, 6, 91,169,195,170, 86,147,136,204,212,152, 63, 86, 63,213,118,200,116, 92, 62,178,
+ 14, 32,236, 84, 7, 54,127, 55, 94,130,121,161,138, 72,198,227, 33, 33, 33,243,198,140, 25, 19,120,238,220, 57, 55,131,193, 80,
+124,234,212,169, 67,153,153,153,190, 94, 94, 94,169, 35, 71,142,124,196,199,199,199,167, 71,143, 30,218,221,187,119,191, 15,224,
+245,154, 52, 35,181,138,200,174, 29, 90, 30,255,100,222,124,151,156, 95, 23,195,114,253, 28,142,103,153,112, 46,219, 72, 2,220,
+ 10,152, 17, 45, 61,225,162,148, 97,116, 39, 31,221,127,182, 37,125, 6, 19,158,119, 36,239, 13, 3,124, 27,241, 70, 35, 76, 70,
+ 43,118, 92, 46, 48, 30,207, 43,240, 97, 93,211,178, 39, 63,213, 94,205,229,100,160,129,171,188, 9,110, 58,183, 63, 25,134,129,
+ 86,171,173,116,158,187,187, 59,186,116,233,130, 70,141, 26,201,159,123,238,185,206, 0,214, 84,165,105,181, 90,253,210,211, 51,
+ 16,222, 52, 92,213,167, 79, 31,134,227, 56, 88, 44,150, 59,210, 4, 0, 23, 23,151, 65, 81, 81, 81,178,181,107,215,230, 39, 37,
+ 37, 93, 28, 54,108, 88,186, 86,171, 45,119, 67,213,106,181, 8, 14, 14,198,248,241,227,229,111,188,241, 70,141,154,190,190,190,
+143,175, 91,183, 14, 12,195,148,221,188, 43, 18, 18, 18,130, 6, 13, 26, 96,192,128, 1,178,167,159,126,250,241,164,164,164, 42,
+247,231,240, 62,136,183,153,167,225,125,170,191,137,148,206, 79,168, 36,146, 85, 49,157,185, 0,150, 3,248, 13,192,240, 42, 12,
+ 81, 87, 0, 63, 3,232, 15, 84,122,228,171,212, 84, 40, 20, 10,171,213,234, 89,137,241,113, 86,179,236, 84,143,137,137, 65,187,
+118,237, 80,241,219,102,132, 24,134,241,113,244,220,228, 56, 14,203,150, 45, 3,203,178, 80, 40, 20,144,203,229, 80, 40, 20,183,
+125,218,182,109,235,240,249, 46,151,203,177,108,217, 50,136,162,200, 38, 37, 37,189, 44,138,226, 16,147,201,228,163,209,104,178,
+ 21, 10,197,246,158, 61,123,126,167, 82,169, 4,103, 52, 89, 14, 96, 69,139,122,239,238,173, 46, 85,173,100, 54,155, 49,112,200,
+ 8,176, 12,123,207,175,117,199,142, 29, 11, 14, 14, 14,110, 90, 26,157, 2,128,195,233,233,233, 61,236,254,219,115, 56, 61, 61,
+221,214, 52, 36, 49, 37, 37, 37, 56, 36, 36, 36,175,162,166,197, 98,109,168,211,185,128, 16,130,153,191,228,192,180, 54, 12,234,
+ 81,215,240,106, 39, 51, 92, 93, 93, 33, 8, 66,179,128,128,128,239, 1,132,151, 70,175, 6, 7, 4, 4, 52, 37,132, 28,104,216,
+176,225,111,118, 85,250,247,236, 58,255,144,104, 86,115, 63, 39, 29, 0,120,219, 77,178, 0,176, 61,173,230,148, 26,224,250, 21,
+166,219, 47,103,251,206,182, 5, 50, 75,215, 35,118,186,217, 12,195,252,175,174, 13, 22,177,115,231, 85,197,120,220,210,140, 30,
+208, 95,247,130,140,149, 32,227, 24,200, 56, 0, 96,144,155, 22, 7, 75,113,238,209,152,152,152,235,142,108,116,215,174, 93, 93,
+ 66,155,119,252, 44,250,147, 47,216,239, 14, 27, 81, 96, 48, 33,231,210, 86,100,158,250, 54, 83, 18,172, 91, 89,150, 61,205,178,
+108,108, 84,235, 86,241,126,126,126, 98,109, 51, 39,145,146, 16,119,153,177,146, 0,166, 54, 15, 32,233,191, 94, 65,216,251,229,
+255,255, 67, 8, 8, 8,232, 31, 22, 22, 54,103,204,152, 49, 33,177,177,177,174, 69, 69, 69,217,123,247,238,141,183, 90,173,103,
+ 88,150, 93,148,145,145,209,115,221,186,117,218, 41, 83,166,244,109,218,180,105,211, 63,254,248,195, 80, 99,228, 74, 43,111,253,
+194,139, 35,142, 15, 25, 61, 65,125,241,151, 37, 80,197,199, 98,197,165, 60,241,116,150,241,125,147, 94,248, 82,163,149,117,205,
+ 55, 9,123,222,237,238,199,250,185,202, 17,228,174,120,244, 92,145, 99, 47,250, 86,202, 85, 50, 34, 83,195, 98, 22, 80,108,145,
+ 44,113, 57, 40,126, 92, 16,173,196,197, 75, 13, 0, 50,142,173,209,244,167,167,167,231,249,249,249,125, 22, 26, 26,250, 1,195,
+ 48,164, 71,143, 30,151,218,181,107, 87, 44, 73, 18,140, 70, 35,172, 86, 43,228,114, 57,140, 70, 35,146,147,147,113,242,228, 73,
+184,187,187, 59,181, 95,243,243,243, 17, 26, 26, 10,173, 86,123,199,154,146, 36, 49, 75,151, 46, 85, 95,188,120, 81,253,219,111,
+191,213,251,239,127,255, 91,208,182,109,219,184,167,158,122, 42,181, 94,189,122,214,179,103,207,226,248,241,227,200,203,203, 67,
+199,142, 29, 29,210,180, 90,173,144,201,100, 48, 26,141, 80,169, 84,144,201,100, 16, 4, 1,146, 36,149,153, 46,189, 94,143, 91,
+183,110, 65, 46,151,215,248, 34,118,155, 89, 26,222, 7,228,167,159,255,188, 89, 82, 55, 84,200,195, 90,192, 67, 40,224,193, 23,
+240,224,243,249,103, 38,206,111,253,243, 62, 56, 19, 7, 62, 81,106,174,126,174,196,100,117,181,155,126,214, 89, 77,171,213,122,
+212,102,124,212,106,181,143, 45,186,160, 82,169,120,179,217,220,203, 73, 77,196,196,196, 32, 42, 42,138, 43,213, 36,132, 16, 91,
+123, 27,167, 47, 26, 12,195,128,227, 56,200,229,114,112, 28,135,168,168, 40, 12, 26, 52, 8, 77,155, 54, 69, 90, 90, 26, 14, 30,
+ 60,136,203,151, 47, 67,161, 80,148,171, 58,172, 9,185, 92, 14,150,101,217,132,132,132,239,250,244,233,211,120,194,132, 9,202,
+224,224, 96,196,199,199, 55, 88,186,116,233,168,125,251,246,245, 28, 58,116,232, 40, 0, 66,117,213,135,229,140, 96,169,105, 50,
+155,205,136,139,139,171,126, 89,167,171, 0,238,156,174, 93,187,166, 16, 66, 18, 81, 82,245,215, 42, 61, 61,189, 71, 64, 64,192,
+ 14, 0, 21, 13, 97,113,122,122,250,128,128,128,128, 2, 0,231, 1, 36, 48, 12,147, 82,153,166,135,187, 91,182, 94, 95,236,235,
+226,162,197,251, 67, 60,160, 30,117, 13,111,247,226,192,243, 60,174, 94,189,142,134,161,129,204,166,213, 91,108, 85,131,237, 79,
+159, 62, 13,148, 84, 21, 38,165,166,166,250,119,234,212,137, 54,120,191, 75, 62,170, 26, 47,226,205, 48,204,118, 59,195, 53,208,
+246,127,218,180,105,239,205,153, 51,231, 34,195, 48,219,237,167,219, 47,103,255, 93,122,142,110, 39,132, 12,156, 62,125,122,228,
+220,185,115,103,219,150,189, 47, 17, 44,142,227,134, 93,216,245,229,137, 38, 86, 18,226, 27,249,100,185,253,144,124,118, 23, 36,
+ 73, 90,227,136,206,241,227,199,213,130,132,239,166,188, 55,139,253,230,128, 17, 89, 55, 50,144,113,232,115, 24,111,198,173,214,
+104, 52,239,246,233, 55,240,142, 11,110, 84, 84, 84,164, 71,253, 6, 48, 91, 73,169,193, 42,111,178, 30, 20,252,252,252, 6,133,
+133,133,205,218,186,117,107,136,209,104,116, 61,118,236, 88,254,158, 61,123, 18,173, 86,235,170, 27, 55,110,172, 47, 93,108,171,
+ 76, 38,251,152, 16, 2,157, 78, 39,227, 56, 78, 83, 93,168, 59,210, 77, 30,245,210, 11, 47, 28,253,239,162,149,234,196, 11,103,
+177,120,211, 14,168,136, 85,188,148,107,121,234,162, 94, 40, 41,180, 6, 97,127, 64,142, 49,157, 16, 4,201, 89, 6,245,180,242,
+ 6,157, 1,245, 9,192, 84, 83,154,189,130, 66, 88, 33, 32, 12, 71, 12,102,232,220, 20, 74, 0, 8, 8,111,193,157, 45, 20,112,
+236,212, 95, 80,171, 61, 21,142,228, 61, 51, 51,115,134,191,191,127,232,158, 61,123, 88,131,193, 80,124,238,220, 57,212,175, 95,
+ 31, 62, 62, 62,112,115,115, 67,124,124, 60,246,238,221,139,132,132, 4, 16, 66,170,139, 18, 84, 74, 86, 86, 22, 10, 11, 11,235,
+ 68, 83, 16, 4, 6, 0, 34, 35, 35, 17, 25, 25,169, 76, 79, 79,247,217,190,125,187,231,236,217,179,111,248,249,249,237, 54, 26,
+255,110, 30, 85,177,186,167,186,136, 2, 0,152, 76, 38,152,205,102, 40, 20, 10,168,213,106, 40, 20, 10, 20, 22, 22, 34, 43, 43,
+ 11, 69, 69, 69, 37, 55, 19, 15,143,178,229, 29, 66,148,128, 19,221, 78,223,238,230, 95,246,169,101, 81, 61, 86,106,162,246, 3,
+176, 29,223, 44, 91, 64, 12,213, 87,245, 85,167, 89,110,127,216, 69,153,228,181,209,180, 69,170, 24,134, 41,119,149, 80,171,213,
+ 55,109,145,171,210, 72, 89,141, 90,182,106, 65,165, 82,137,200,200, 72,188,251,238,187,136,143,143,199,209,163, 71,225,227,227,
+131, 39,158,120, 2, 50,153, 12,169,169,169, 96, 89,214, 33,131,165, 80, 40,192,243, 60, 18, 19, 19, 95,238,221,187,119,216,226,
+197,139,149, 73, 73, 73,136,143,143,135,155,155, 27, 62,254,248, 99,213,212,169, 83, 3,119,239,222,253, 70,155, 54,109,150, 57,
+124,109,103, 74,170,255, 6, 14, 25, 81,137, 17,113,145,175, 93,243,173,210,102,188,216,251, 48,176, 79,122,122,122, 30, 33,100,
+ 1,128,133,165,213,130, 61, 0,184,164,167,167,247,178,187, 9,147,210,106, 65, 0, 56,159,158,158,222, 27, 0,169,170, 65,122,
+230,205,204,229,159, 47,250,102,225,204,247,222, 81, 78, 30,160,197,171,157,204, 16, 69, 17, 28,199, 97,241,242,213,252,229,184,
+ 11,231,218,183,111,191, 29,192,224,211,167, 79,163,125,251,246, 69, 0, 46, 3,184,174, 84, 42,105,231,145,251,233,192, 42,152,
+ 32,155,113,154, 51,103,206,192,202, 76, 85, 37, 15, 63,229,166,207,157, 59,119,182,221,255, 58,237,197, 46,171,224, 28,171,123,
+ 10,247,243,240, 14,168, 55,230,249, 39,176,249,156,237,133,132, 4, 86,179, 1, 55,226, 15, 24, 44, 22,203,207,142,108, 48, 55,
+ 55,247,227, 87,223,157,223,248,116,138, 12,153,121, 6,100,236,155, 69,172,249, 73,195, 7, 13, 26,180,185, 46, 50, 20, 21, 21,
+ 21,233,233,229,127,240,131,207, 86, 98,127,162, 5, 18, 1, 24,130,191,141,213, 3, 50,242,151,191,191,127, 19, 15, 15,143, 47,
+182,108,217,226,163, 84, 42, 93,207,159, 63, 47, 30, 58,116, 40,131,231,249,165, 55,110,220,216,104,183,220, 11, 45, 91,182,228,
+ 93, 92, 92,144,153,153,105,226,121, 94, 95,213,177,110,161, 86, 7, 70,181,138, 56,252,223, 69, 43,213, 38,139, 5, 5, 70, 51,
+188,253,252,196,163,231,227,158,138,211,139,101, 79, 4,205,117,178, 71,218,135, 7, 4,176, 26, 87,192, 80,136,244, 66, 75,134,
+ 35,230, 10, 0, 92, 92, 61,216,192,246,143,162,253,196,175,112, 41,250,125, 2,228,194,195,215,159,237, 53,254, 83,232,218, 13,
+194,178, 9, 47, 75,127, 71,112,107,196, 24, 30, 30,142, 51,103,206,216,202, 22,114,115,115, 17, 22, 22,134,197,139, 23,151, 91,
+208,145,155, 98, 21,229,245,142, 53, 37, 73, 98, 42, 68, 29, 49,110,220, 56,249,206,157, 59, 93,236,205,149, 51,154, 22,139,165,
+204, 80, 16, 66, 96,177, 88, 96,177, 88,224,226,226,130,196,196,196,242,126, 73, 20, 43,173,234,172, 58,193, 5,149,135,187,248,
+220, 59,105,119,120, 12,128,194,206, 4,249, 2,232, 86, 75,115,117,155,241,169, 11, 98, 98, 98, 42,189, 14,218,170, 30, 99, 98,
+ 98, 72,187,118,237,124, 29,213, 35,132, 64,169, 84, 98,240,224,193,248,235,175,191,144,145,145, 1, 87, 87, 87,152,205,102,152,
+205,102, 68, 69, 69, 33, 43, 43,203,225,232,149,157,110,255,183,223,126, 91,125,253,250,117,220,186,117, 11,106,181, 26,130, 32,
+ 64, 20, 69,188,241,198, 27,234,241,227,199,247, 3,224,184,193,226, 24, 60,246,242,103,149,182,173,218,255,237,127,122,170, 84,
+170,178,234, 22,142,253, 71, 93, 64,237, 31, 20,157,218,137,217,215, 47, 44, 91,183,241,183,199, 5,171,181,215,107, 47,141,112,
+213,185,104,113,245, 90, 18,150,173, 90,203,239, 63,114,106,127, 86, 90, 98,127, 0, 76, 64, 64, 64,211,210,200,213,229,244,244,
+244,151,170, 51,109,148, 58,141, 98, 85,100, 52, 74, 59,182, 84,101,156,156, 49,104,246, 17, 46, 27,211,167, 79,143,156, 51,103,
+ 78,157,182, 49,148, 85, 81, 88, 43,154,150,182, 30, 94, 1, 7,166,207, 94,169,251,237, 28,135,188,204, 4,152,110, 38, 32, 40,
+106, 8,178, 18,142,129,136,252,175,113,113,113,197, 53,109,108,247,238,221,225, 65, 77,219, 79,108,211,174, 19, 62,255, 93, 15,
+253,165,141,176,228, 93, 95, 54,112,224,192,186, 51, 87,245,253, 14,190, 55,119,101,189,109, 23,229,200,205, 72, 64,252,150,169,
+ 16,173,183,213,138,237,112, 70,183, 39, 32, 19, 60,173,120,188, 57,131,155,127, 26,144,217, 19, 50, 28,186,191, 47,189,206,200,
+200, 72,244,240,240,248,126,229,202,149, 99, 91,183,110,173,157, 56,113,226,229,194,194,194, 79, 50, 51, 51,127,180, 51, 87,189,
+195,194,194, 38,205,154, 53,171,113,114,114, 50, 14, 31, 62,156,200,113, 92,149,245,203,151, 76,166, 52,246,252,165,165, 71,127,
+ 88, 53,153, 13, 14,199,166, 89, 83,132, 63, 47,196, 13,142,211,139, 59,203,204,149,139, 34,162, 75,100,163,237,111, 78, 24,195,
+138,103,119, 33, 62,249, 38, 50,245,252, 62,135,159, 70,139, 12,188, 92,165,129,174, 65, 40,146,141,146,194,223,223,255,100, 90,
+190,241,255,236,157,119, 84, 20,215,223,198,159,153,237,187,176, 75, 93, 96,169,162, 2, 82, 5, 4,172,216,162,177,196, 22,147,
+ 88,163,198,196,104,138,198,168,137, 53,118,209, 24,141, 53,197,216, 73, 20,219, 27, 19,107,140,138, 88,176, 3,118, 68, 68,250,
+210, 59, 44,108,155,251,254, 1,248, 67, 66, 89, 74, 98,202,124,206,217,179,187, 51,179,207,222,153,185,115,239, 51,223, 91,134,
+ 79,115,184,160,185,124, 36,228, 87, 52,169, 18,103,152, 63,134, 36,107,155, 22, 0,141, 54,145, 53,234,228, 90,160, 89, 29,193,
+250,131, 95,209,106,169,230,106,214, 52, 88,181,205, 84, 93,199,168, 73, 6, 75, 83, 84,247, 57, 80,231,182,198,192,142,234,132,
+ 8, 90, 98,174,170,141, 79,117, 7,116,161, 80,248,220,168, 24, 26,101,170, 47,130,213,208,122,131,107,126,138, 2,195, 48,224,
+241,120,112,113,113,193,213,171, 87, 33,147,201, 96,108,108, 12,137, 68, 2,161, 80, 8,153, 76, 6,129, 64, 0,154,166, 65, 27,
+104, 92,180, 90, 45,212,106,181,141,189,189, 61,158, 60,121, 2,145, 72,244,252, 37, 16, 8,224,230,230,134,146,146,146, 38,153,
+206,166,152, 38,206,191,104,106,234,164,135,145,175,219,184, 6, 77, 56,240,127,199, 63,172,168, 80,123,119,112,107,143, 71,247,
+162,238,100,166,198, 15, 98, 61,206,223,198, 56, 87,243, 3, 42, 71,137,182, 74, 51, 94, 93, 38,107,205,154, 53, 33, 53,163, 96,
+173,109,176,208,144,185,154,187,234, 7,217,161, 40, 26, 5,202, 88, 36,157, 94, 80,172,215,148,229, 51,140,214, 41,255,233,101,
+224,197, 14,185, 13, 85,134,129,221,250, 14,167, 47, 60, 82, 67, 83,156,142,162,251, 7, 18,133, 66,225,188,214, 52, 87,243, 86,
+111, 55,255,249, 14, 23,121,233,143,241,244,228,252, 66,189,166,172,111, 84, 84, 84,147,231,209,122, 31,224,253, 0,104,135,201,
+229, 35,100, 66,122,237,228,145, 82,244,236, 39,134,140, 47,195,242,175,232, 71,165,221,152, 57, 89,145, 56, 6,127,240, 16,133,
+151, 50,162,240,193,131, 7,171,182,111,223, 78,235,116,186,201, 26,141,102,169, 82,169,124, 30, 69, 84, 40, 20,253, 29, 29, 29,
+215,174, 88,177,194, 62, 49, 49, 81,112,237,218,181,188,232,232,104, 70,175,215,175,105, 72,243, 94,145,250,243,143, 63,158,206,
+105,239, 96, 59, 61, 62, 53,117,216,253, 98,253,233,234,117, 94, 18,190, 87, 55, 95,247, 43, 43,150,205,151,106,174, 29, 65,105,
+ 70, 42,182, 94,203, 40, 98,244,218,249, 6, 70,221,204, 47,159, 63,135,249, 83, 38, 49,197,197,197,144, 8,248, 76,106,236, 83,
+206,132,126, 61,245, 95,206,157, 77,103,100,100,160,172,180,148, 99,107,107,107,158,158,158,158,103,136,102, 93,134,162,174,202,
+181, 73, 6,163,238,202,188,217,154,181, 35, 88, 13, 25, 44, 67, 53,107, 54,137, 53,118, 60,244,122,125,211,154, 8,117,245, 24,
+ 44, 77,182,166,133, 89, 54,153,162, 40,199,234,207,173,113, 13,148,151,151, 91,213,136,138, 1, 0,213,220,104,101, 85, 4,171,
+193,245, 77, 49, 89,213, 17,172,248,248,120,200,229,114,232,116, 58, 24, 25, 25, 65, 44, 22, 67, 44, 22, 67,165, 82, 65, 32, 16,
+128,195,225, 52, 41,157, 66,161, 48, 35, 54, 54,214,201,204,204, 12,122,189,254, 5,147,245,236,217, 51,152,152,152,100, 25,218,
+255,170, 50,130, 5,156,221, 51,183,206, 81,132,166, 38, 70, 47, 8,113, 40, 10,127, 35,106,246,211,105, 86, 84, 41, 35,238,198,
+143, 0,126,180,179,179,219,187,111,199,137,128,128,128,128, 19, 45,213,100,249,147,221, 87,149, 49,170,217,151,106,222,188,121,
+205,158, 59,100,222,188,121, 11,234,138,104,181,166,193,162,106,189,255,207, 92, 89,216,134,207, 89,177, 77,182,239, 22,141, 66,
+229, 35,164,159, 93, 84,200,104,202,250,210, 52,173, 76,137,252,225, 48,128,178,168,168,168, 8, 3, 43, 67,255, 14,174,174, 56,
+116, 95,135,242,140, 59,160, 41,178,167, 95,191,126,101, 45,221,137,106,115,245,121,200, 15,230,135,162,185,200,175, 52,129,133,
+ 76, 51,204,213, 88,129,160, 61,143,166,215, 58,248,186,191, 54, 58, 33,185,164, 79, 59,145,233,224,246, 66,112,174, 29,197, 49,
+219, 44,228, 89,158,199, 7, 27,236,218, 71,254, 82,244,107,148,176, 52,207,215,199, 91,118,203,232,222, 9, 45,209,127,158,115,
+ 9,127,121,231,247,248,248,248, 21,214,214,214, 63,103,102,102, 62,239,157,106,103,103, 55,200,209,209, 49,100,249,242,229,109,
+ 82, 82, 82,164, 49, 49, 49, 69,135, 15, 31,126, 70,211,244,242,140,140,140,172,198, 52,239,151,104,103,147,100,229,142, 7,165,
+250,216,231,145, 43, 9,175,227,132, 9,163,175,246, 27,243,142, 40,225,194, 94,152,167, 62,192,198, 27, 89,250,212,194,242,177,
+177, 42,100, 24, 98,174, 4, 2,193,161,205, 71,142, 60,241,246,246,166,202,202,202,160,213,106,145,157,157,141,175,126, 58,116,
+159, 97, 24,152,153,153,225,220,185,115,204, 39,159,124,114,200,214,214,246, 45, 67, 76, 22,195, 48,207, 43,171,250,162, 64, 98,
+177,184,105, 6,163,234, 55, 53, 13, 76, 75, 52,235, 51, 88,181, 35, 91, 77,212,172,188,128,171, 58,183,215, 23,209,227,112, 56,
+ 96, 24,166,206, 72, 95,253, 97,146,130,122, 12, 86, 86, 75,111, 36,156,208,240, 64,154,151,134, 72, 36,202,172, 50, 79, 76,125,
+ 83, 49, 52, 53,130, 5, 0, 2,129, 0,145,145,145, 24, 56,112, 32, 24,134,129, 80, 40,132, 88, 44,134, 72, 36,194,141, 27, 55,
+192,231,243,193,225,112,154,212, 76,200,227,241, 78,109,221,186,117,210,154, 53,107,196, 12,195, 64, 32, 16, 64, 44, 22, 67, 40,
+ 20,226,235,175,191, 86, 9, 4,130,211, 77, 50, 88,104,124, 20, 97, 77, 51,246, 87, 83,107,154,134,218, 83, 49,212,164,246, 20,
+ 14,245, 78,211, 96,107,107,107,110,111,111,255, 30, 33,196,179,106,209, 11,163, 5,107,108, 90, 93,176,184,218,217,217,237,173,
+ 99, 20, 33, 75,235, 71,175, 80, 79, 25,145, 93, 43,122,165,174,241, 61, 27, 0, 85,245, 61,187,134, 1,171,249, 89, 93,199,178,
+220,213,171, 87,135,215,136, 92,101,183,230,206,212, 27,193,242,245,245,117, 55,181,176, 13,159,181, 98,155,108,239,117, 14, 10,
+149, 15,145, 19,254, 69, 33,209,169,106,154,150, 30, 77,252, 63, 63, 43, 43, 11,228, 68,150, 67,155,255, 4, 20, 69, 69,181,116,
+ 7, 2, 3, 3, 93,164, 38,242, 11,115, 86,254, 96,190,255, 54, 23, 5,233,255, 51,129,205,137, 92,113,105,250,171,245,191, 29,
+ 24, 38,204,120, 4,213,157, 11,166,188,188, 84,220,207,210,224, 80,100, 70,241,133, 43,219, 47,211, 30, 36,184,239, 88, 83,227,
+190, 99,205,177,241,131,211,230,153,229, 15,112, 61,238,248,240,144,249,199, 9, 94,210,236,238, 53,205,149, 66,161, 24,106,107,
+107,187,236,196,137, 19, 78, 58,157, 78,122,241,226,197,226,195,135, 15, 63,213,233,116,155, 51, 50, 50, 78, 24, 28, 29, 43,213,
+ 60, 55, 87, 94, 50,158,255,228,137, 19, 47,127,178,225,123,209,131,219, 55,177,118,239, 9, 72,121, 90,253,237,244,242,183, 30,
+148,254,175,249,176,193,227,202,229, 46,223,191,127,191,145,135,135, 7,149,155,155,251,188,194,215,104, 52, 40, 42, 42, 66, 97,
+ 97, 33,212,106, 53,188,189,189,233, 37, 75,150, 24, 45, 94,188,120, 57,128,143, 26,137, 16,100, 45, 91,182,204,234,253,247,223,
+135, 76, 38, 67,110,110, 46,180, 90,237,243,104,147, 80, 40,132,169,169, 41, 10, 10, 10,112,246,236, 89, 16, 66, 26, 52,151,124,
+ 62, 95,105,103,103,235, 32,150, 24,169, 37, 18, 9, 49, 54, 54,110,177,102, 85,101,155, 49,120,240, 96,155,101,203,150, 9,106,
+ 86,210, 26,141,134,106,174, 38, 33,164,236,213, 87, 95,149,108,222,188, 25, 78, 78, 78, 80,171,213, 96, 24,230,121, 4,171,122,
+106,128,228,228,100,172, 90,181, 10,132, 16,195,111,100,180,249, 90,216, 79,148, 67,147,171,133, 38, 87, 11,117,142, 22,154, 44,
+ 45,116,101,127,187, 33, 34,205,233,128,110, 64, 36,204,170,165, 17, 44,138,162, 64, 8, 1,159,207, 71, 74, 74, 10,206,157, 59,
+135,160,160, 32, 72,165, 82,148,150,150,226,234,213,171,200,200,200,104, 86, 4,171,111,223,190,123,206,156, 57, 19,252,241,199,
+ 31, 59, 79,155, 54, 77,236,238,238,142,196,196, 68,108,216,176,161,252,225,195,135,105, 51,102,204,216,222, 20, 61,186,106,234,
+ 26,131, 70, 17,210,127,189, 55,174,103,154,134,193,245,108, 94,115, 10,135,218,211, 52, 60,231,232,209,163,206,118,118,118,238,
+168,236, 95, 5,252,113,180, 96, 77,110,221,186,117, 43, 0,236, 40,194,151, 29,185,186,249, 79, 75, 51,183,254,139,142,254,180,
+243, 27, 11,101,123,174,113,145,159,118, 31,133,151,150,212, 54, 87,134,224,141, 26,115,101,240, 68, 82,111, 29,225, 3, 40,135,
+174,224, 41, 4, 2, 65,116, 51,210,252,130, 38,195, 48,179,187,188,177,208, 60,244, 38, 23,133,233, 15,145,125, 97,113,115,204,
+149, 55,128,123,239, 3, 60, 7, 63,207,215,132,153,143, 81,126, 33, 12, 20,128, 29,209,165,184,154,170,254, 90,163, 86,175,124,
+ 88,164, 46,176, 19,195, 44, 44, 36,107,241,160,215,125, 62,113, 27,125, 22,215,179,191, 3, 36,128,153,156, 59, 40,203, 95, 87,
+179,185,240,133,116,182, 18, 13,106,218,218,218,186, 24, 27, 27,127,117,234,212, 41,185, 64, 32,144, 61,120,240, 64,127,228,200,
+145, 20,189, 94,191,190,102,199,247,166,104,122,138, 68,246, 30,109, 29, 34,102,172,255, 86, 84, 92, 82,138, 82,181, 6,182,142,
+118,250,136,219,143,222,120, 80,170,249,197, 16, 77, 43, 43,171, 62, 35, 71,142,236,216,169, 83, 39,186, 62,115, 85, 84, 84,132,
+146,146, 18,164,166,166, 34, 56, 56,152,118,119,119,247,174,168,168,232,147,149,149, 21, 94, 95, 58,149, 74,229,210,176,176,176,
+238, 7, 15, 30, 28, 50,101,202, 20,233,200,145, 35, 33, 22,139, 81, 90, 90, 10, 7, 7, 7, 48, 12,131, 75,151, 46, 33, 46, 46,
+174, 24,192,113,165, 82,121,165,161,116, 62,123,150,224, 8,128,182,183,183,239, 62,112,224,192, 86,209, 4,128,236,236,236,246,
+ 17, 17, 17,115,135, 15, 31, 62,115,192,128, 1,210, 5, 11, 22,240,157,157,157,161,215,235,169,230,106,230,231,231,155, 68, 69,
+ 69,173,235,209,163,199, 71, 3, 7, 14,228,134,132,132,192,196,196, 4,122,189, 30, 98,177, 24, 69, 69, 69, 88,190,124, 57, 46,
+ 95,190,172, 35,132,124, 83, 88, 88, 56,167, 33,205,154,243, 96,189, 53,227,107,223,134, 50, 97, 3,243, 96,253,229,121,190, 42,
+210, 68,208,180,166,193, 70,211, 89,213,161,253, 15,243, 97, 25,170, 89, 61,245,130, 64, 32, 0,151,203, 69,118,118, 54,206,156,
+ 57,243,194,252, 87, 2,129,224,249, 52, 14,245, 68,176,234, 76,167, 84, 42,101,222,124,243,205,201,167, 78,157,154, 52,123,246,
+236,225,197,197,197, 86, 50,153, 44,219,200,200,232,248,140, 25, 51,118,153,154,154, 54, 52, 69,195, 31, 52, 57, 52, 85,239, 40,
+194, 23,162,166, 28, 65,121, 61,221,181,254,212,243, 94,107,154,134,218, 83, 49,212,164,246, 20, 14,181,167,105,120,174, 57, 98,
+196,136,103,168,156, 60,148,174,122,175, 61, 90,176, 26,215, 91,183,110, 5, 4, 4, 4, 92, 4, 32,198, 31, 71, 17,254,229,121,
+254, 95,174,249,175,162,161, 62, 88,162, 43,183,227, 64, 11,179, 80,124,253,171,230,152,171, 63,160,171, 40,141, 95,113, 32,193,
+ 79,175, 86, 65, 87,148,244,120,224,107,131,179, 90,186, 3,132, 16,163,203, 81,241,224,138,114, 81,112,237,203, 2, 74, 95,209,
+ 55, 42, 42, 42,166, 57, 90, 63, 0,218,113,119, 30, 93,120,122,249,220, 43,182, 0,146,242,212,136,137,205, 59,115, 84,165,154,
+ 93,189, 77,218, 53,228, 3,152,249, 27,247, 94, 7,115,215,194,254, 38,182, 64, 86,178, 22,249,217,186, 83, 47,171, 47, 86, 53,
+233,233,233, 79, 60, 61, 61,247,238,220,185,243, 3,127,127,127,227,233,211,167,199, 21, 22, 22,190,208,241,189,169, 60, 40, 47,
+ 79, 69,124,226,119, 23,118,108,248, 76,228, 30,132, 35, 33,243,245, 23,111,199,142,184, 95,162, 49,184,205, 90, 40, 20,246,254,
+224,131, 15,248,101,101,101,245,154,171,162,162, 34, 20, 23, 23,163,168,168, 8, 49, 49, 49, 24, 57,114,164,240,209,163, 71,189,
+ 1,132, 55, 84,230,167,166,166, 94,106,215,174,221,141,239,190,251,174, 95,104,104,104,255,119,223,125, 87,208,187,119,111, 60,
+120,240, 0, 55,110,220, 80,107, 52,154,223, 69, 34,209,217,167, 79,159, 26,218, 9,235,207,208,212,169, 84,170, 85, 98,177,120,
+243,225,195,135, 87,158, 63,127,254,237, 73,147, 38, 25,233,116, 58,170, 37,154,133,133,133, 51, 45, 45, 45, 23,157, 60,121,114,
+207,153, 51,103, 70,188,253,246,219,244,140, 25, 51,176,101,203, 22, 28, 57,114,132,209,235,245,191,240,120,188,137, 57, 57, 57,
+141, 14, 64,169, 57, 15, 86, 67,243, 92, 53,182,222, 0,254,140,187,208, 22,107,214,142,132, 85,143, 22,172, 54, 85, 77,105, 30,
+172, 73,199,142, 29, 95,152,231,170,186, 67,123,245,139,195,225,128,203,229, 54,169,137,208,203,203, 11, 60, 30,143,241,243,243,
+219, 5, 96, 23,240,226, 35,115,120, 60,222,243, 73, 77, 13,161, 66,199, 96,199,206,189, 55,116, 12,129,158, 33, 32, 12,160, 37,
+ 0,163,103,160,103, 8,244, 12, 83, 57, 45, 26, 1, 84,229,250,191,188, 92,171, 49, 77,195,215,117, 76,197,240,156, 58,166,112,
+168,247,185,129,233,233,233,121,132,144,234,254,168,117,141, 22,172,214,220, 91,181, 92,156,150,150, 54,161, 33, 77, 22,150,166,
+ 24,172, 5, 37,183, 55,105, 1, 88, 80, 20, 53, 63, 42, 42,234, 65, 75,255,140,195,161,231,103, 29,123,103, 51, 1,242, 57, 20,
+230,183,198, 14,232,245,250,133,165, 81,155, 25, 66,136, 41, 69, 81,243,110,223,190,221,162,116, 18,157,238,195,175,182, 95,250,
+ 90,110, 34,232,159, 83, 80,113, 18, 20, 85,231,172,237, 58,144,143,127,252, 50,249, 75, 51, 57,119, 80,126,182,238, 20, 67, 99,
+238,223,225,132, 62,120,240, 32,100,251,246,237,156,239,191,255,126,178, 90,173,126,161,227,123,179, 53, 75, 52,159,127,250,249,
+ 34, 78, 7,103,251,233,177,137,201,195,239,151, 24,214, 44, 88, 3,129,157,157,221,253,178,178, 50, 80, 20,133,138,138,138, 23,
+ 12, 85, 77,131,165,209,104,144,149,149, 5,103,103,103, 80, 20,101, 80, 13, 81,101, 74, 78, 88, 88, 88, 92,220,180,105,211,107,
+ 91,182,108,233,198, 48, 76,164, 70,163, 57,145,155,155, 91,210,156,125,254, 51, 52,171,126,247,137, 78,167, 91,179,101,203,150,
+117, 34,145, 40, 32, 43, 43, 43,162, 37,154, 85,230,233, 13,115,115,115,219,189,123,247, 30,218,185,115,103, 23, 46,151,123,141,
+162,168,183, 10, 11, 11,155, 51, 95,207,227, 22,174,111,140, 35,127, 66,182,111,177,102,205, 62, 87,205,109,102,124,161,124,208,
+233, 74,230,207,159,159, 85,251,153,131, 53,231,188,170,249,174, 86,171,203, 13,208,100,190,248,226,139, 6,111,226,106, 26,173,
+242,242,242, 70,155,116, 9, 67,114, 6,143,250,176,105,101, 36, 67,114, 94, 98, 17,119, 12,192,147,170, 23,105, 96, 93,147,118,
+ 9,149,115,180, 37, 18, 66, 18,107,233,214, 92,206,194,210, 58, 6, 43, 42, 42, 42, 5,192, 59,173,249,103, 3, 7, 14, 60, 7,
+192,189, 53, 53,239,220,185,147, 4,224,237,214,210,219,175, 86,199, 3, 24,242,126,150,154,247, 19,234,143, 72, 85,117,104,127,
+189, 86,179,224,223,130,186, 58,190,183,148,251, 37,218,217, 36, 33,237,133,142,239, 77,168,108,126, 19, 10,133, 84, 81, 81, 17,
+ 52, 26, 13,138,139,139,159,155,171,154, 38, 75,167,211,129,162, 40, 20, 23, 23,195,216,216, 24, 90,173,182, 73,119,138, 85, 38,
+ 37,172, 87,175, 94,135, 35, 34, 34, 90,101, 26,141, 63, 67, 83,165, 82,101,168, 84,170,113,189,122,245,226,182,150,102, 94, 94,
+ 94, 58,128,110,237,218,181, 19, 52, 33, 10, 86,111, 36,171,185,235, 13,224,251, 63, 33,203,255,244,119, 43, 88,147,146,146, 60,
+ 90, 91, 51, 37, 37,229, 97,171,167,243,250,143,179,254, 9, 21, 85,117,212,200,206,206,110,111,114,114,178, 35, 69, 81,201,181,
+ 35, 73, 13,173,107, 72, 19, 0,156,157,157,143,166,164,164,216, 10,133,194,116, 67,150,179,176,252, 29,240,102, 53, 89, 77, 86,
+147,213,100, 53, 89, 77, 86,147,213,108, 38,239,255, 83, 13,208,191,104,218, 56, 22, 22, 22, 22, 22, 22, 22,150,191, 7, 84, 3,
+ 46,180, 41,163, 3,154,227,100,239,177,154,172, 38,171,201,106,178,154,172, 38,171,249,159,211,108, 76,187,230,239,223, 71,229,
+ 76,238, 44,173,112, 98, 88, 77, 86,147,213,100, 53, 89, 77, 86,147,213,252,239,105,214, 5,219, 68,200,194,194,194,194,194,194,
+194,194, 82, 9,151, 61, 4, 44,134, 96,103,103,183,186,115,231,206, 31,222,188,121,115,125, 74, 74,202,242,102,106,216, 90, 88,
+ 88,172, 2,208,141, 16, 34,228,112, 56, 15,115,114,114, 66, 82, 83, 83, 47, 53, 55, 93, 10,133,194, 65, 46,151,175, 2,208,133,
+ 97, 24, 62,143,199,187,159,153,153,185, 50, 61, 61,253, 90,115, 53, 45, 45, 45,141, 20, 10, 69, 0, 33,196,138, 16, 66,243,120,
+188,252,180,180,180,152,236,236,236, 44, 54, 39,176,176,176,176,176,180,216, 96, 45,253, 24, 10,104,192, 93,250, 3, 82,170, 22,
+201, 80, 57,233,154, 59,128, 71,168,124,188, 64, 75, 31, 25,240, 79,209,252,187, 67,155,154,154,190, 42,145, 72, 62, 41, 41, 41,
+241,147,201,100,247,117, 58,221,102,165, 82,121, 28, 64,139, 30,113, 34,151,203,173, 70,140, 24, 49,111,211,166, 77,152, 60,121,
+242,162, 19, 39, 78,108,104,234,188, 77,238,238,238,195,164, 82,233,182, 21, 43, 86,202,131,130,130, 40,145, 72,132,248,248,120,
+187,133, 11, 23,248, 91, 90, 90, 30,138,142,142,254,168,169,233,242,244,244,124, 75, 42,149,110, 14, 9, 9,145, 7, 4, 4, 80,
+ 92, 46, 23,119,239,222,181, 95,182,108, 89,144, 92, 46,223, 27, 19, 19, 51,187,169,154, 94, 94, 94,206,198,198,198,221, 86,174,
+ 92, 41, 10, 10, 10,130, 80, 40,196,195,135, 15,141, 22, 44, 88, 32, 87, 42,149, 79,162,163,163,175, 55, 69,207,255,253,219, 60,
+190, 68,195, 5, 0, 77, 25, 95, 23,245, 67, 39,173,161,203,216,226,137,133,133,133,229, 95,104,176,150, 77,195,114, 74,135, 5,
+160, 65,125, 50, 6, 7,183, 28,164,111,244,237,219,183,195,187,239,190, 75, 85, 61, 58,194, 35, 44, 44,236,141,227,199,143,199,
+ 50, 12,115, 29, 64, 12, 0,141,129,255,203, 7,224, 75,211,116,231,191,185,230,223, 30, 99, 99, 99, 23,185, 92, 62,187,168,168,
+104, 80, 64, 64, 64,209,180,105,211, 18,175, 93,187,150, 16, 24, 24, 88,190,115,231,206, 16,173, 86,251,173,169,169,233,239,197,
+197,197,235,154, 59, 47, 22,143,199,115,167, 40, 10,105,105,105,224,241,120, 60,129, 64,224, 1,192, 96,163, 97,111,111,175,144,
+ 74,165,223, 31, 60,250,155, 85, 81, 5,141, 39,217, 12,128, 50,232,105, 75,172, 88,187,197, 98,221,170, 69, 99, 75, 75, 75, 47,
+ 63,121,242,228,128,161,154, 10,133,194, 65, 42,149,110, 62,127,254,188,149, 80, 40, 4,195, 48, 40, 46, 46,134,149,149, 21, 86,
+175, 94,109,190, 98,197,138,119, 11, 11, 11, 47, 38, 38, 38, 30, 51, 84,211,210,210,210,200,216,216,184, 91,120,120,184, 72, 32,
+ 16, 80, 90,173,150,170,168,168,128,141,141, 13,249,250,235,175,133, 11, 23, 46,116, 43, 40, 40,200, 72, 76, 76, 76, 54,200, 92,
+109,187,205, 43,250, 45,188, 43, 73, 81, 45, 2, 0, 74, 36, 94,217,107,105,226,141,180,187,135,131, 26, 91,230,191,237,246,213,
+168,169,172,201, 98,249,107, 81, 40, 20,221,157,157,157,143, 38, 39, 39, 71,114, 56,156,209, 73, 73, 73, 21,173, 32,107, 15,192,
+ 25,128, 25, 42, 7, 86,229, 1, 72, 4,158,223,184, 55, 25,139,118,189,135, 66, 40,121, 7,132,248,210, 0, 64,211, 49,140,166,
+116,119,110,220,133, 99, 45,210, 20, 25, 77, 6,195,248,210, 32, 12,104,206, 29,162, 43,221,158, 19,123,225, 20,155, 51, 88, 90,
+205, 96, 45,125, 23,102, 20, 48,119,254,180,247,105, 46,135, 67,133,108,251, 97,204,205,200, 99, 68,225,232,251,252,145, 27,193,
+193,193, 8, 14, 14,166,214,174, 93,235,126,254,252,121,247,125,251,246,105, 35, 35, 35,111, 3,216, 83,223,159,133, 76, 23, 39,
+235,180, 42, 7,208,226,242, 54, 93,190,221,215,173, 91, 48, 35, 20, 10,209, 18, 77, 0,248,240, 77,238,239, 21,148, 3,213,123,
+200,226,164,214,210,252,135,152,171, 8,169, 84,218,126, 55,110,175,251, 0, 0, 32, 0, 73, 68, 65, 84,234,212,169, 79, 62,248,
+224,131,139, 70, 70, 70, 4, 0,178,178,178,140, 94,123,237,181,252, 17, 35, 70,228,150,149,149,225,187,239,190,115,216,188,121,
+243,239, 82,169, 52,173,184,184, 56,168, 41,249, 67,161, 80,172,233,215,175,223,172,113,227,198, 65, 42,149, 98,210,164, 73,168,
+168,168,136, 60,127,254,252, 90,165, 82,185, 8, 64,163,207,206, 48, 51, 51, 91,178,108,217, 50,171, 18, 53, 7,139, 66,227,145,
+ 87, 82,233, 27, 36, 2, 26, 31,189, 34,196,132, 9, 19, 77,162,163,163,215, 2, 48,216, 96,201,229,242, 85, 33, 33, 33,242,234,
+115, 93, 82, 82,130,146,146, 18, 20, 23, 23,163,164,164, 4,227,198,141,147, 61,121,242,100, 35, 42,103,119, 54,180,114, 9, 88,
+185,114,165, 72, 32, 16,224,216,177, 99, 29,203,203,203,185, 90,173, 22,132, 16, 93,135, 14, 29, 98, 38, 78,156,200,143,139,139,
+235, 10,192, 32,131,165,200, 0,175, 80,165,250,102,235,151,159,201, 1,224,227,185, 95,125, 3,168, 58, 19, 3,150, 41, 50, 16,
+ 24, 5,176, 6,171, 97, 56, 0, 94,231,241,120, 35,219,183,111, 31,240,228,201,147,104,157, 78,247,127, 0,254, 15, 45, 63,118,
+175,216,218,218,174, 74, 79, 79,223, 10,224,199,255,202, 1,109,215,174,221,207,251,246,237,179, 56,121,242,228,176, 21, 43, 86,
+140, 2,176,183, 5,114, 60, 0, 93,171, 76,213,163, 42, 99,133, 42,163,213, 1, 64, 59, 0, 87,154,114,195,107,225,218,205, 24,
+ 92, 89, 88,215,238,189,122,188,245,198, 8,169,220,220, 4,165, 21,122,196, 37,102, 56,158, 57,249,115,175,199,124,113,164, 78,
+ 83, 56, 38, 55, 46,178,164,169,154,125,250,246,239,209,247,149,126, 82, 19, 19, 83,228, 22,107,241, 52, 49,213, 41,226,247, 95,
+130,105,174,248, 34, 40,237,219, 89,247,126, 47, 99, 47, 57,150,166, 96, 80, 39,119,138,162, 96,100,108, 84,231, 58, 19, 19, 19,
+244,238,221, 27, 33, 33, 33, 60, 0, 93,106,173,126, 97,168,166, 94,175, 86, 44,250,104, 58, 4, 92, 34,124,109,208, 0, 74, 38,
+147,181, 88, 19, 0,172,205,117,253, 58,187,169,122,101,198,204, 24, 31, 19,177,202, 91, 93, 94,240,135, 39,157, 74, 36, 18,184,
+184,184, 96,225,194,133, 6,105,182, 2,127,186, 38, 33,196,214,195,195,163,120,195,134, 13,110,139, 23, 47, 54, 43, 47, 47, 55,
+ 2, 96,239,225,215,221,150,166,105, 7,181, 90, 45, 93,186,116,169,229,151, 95,126,233, 38,151,203, 11, 8, 33,242,166,164, 83,
+161, 80,108, 8, 9, 9,153,189,123,247,110, 42, 48, 48, 16, 82,169, 20, 93,187,118, 69,104,104, 40,189,100,201,146,121, 10,133,
+ 98,141,129,251, 30, 28, 20, 20, 68, 49, 0,242, 75,116, 8, 95,221, 9, 87,190, 10, 68,153,154, 65, 97,113, 9, 84, 42, 21, 68,
+ 34,145,216,194,194,194,184, 9,199,179, 75, 64, 64, 0, 5,224,185,169, 42, 46,174,124,149,148,148, 66,173,214,128,166,105,153,
+147,147,147,176, 9,199,211, 42, 40,168,210,127,150,151,151,115,135, 13, 27,134, 33, 67,134,160,184,184,152, 91, 84, 84, 4,181,
+ 90, 13,154,166,249, 85, 21,123,163,154,106, 9,143, 98, 8, 99,109, 36, 17, 91, 26, 73,196,150, 12, 97,172, 1,192,144,101,106,
+ 9,143,122,201,249, 83, 78,211,244,174,118,237,218, 61,164,105,122, 47, 0,155, 22,106, 6, 2, 8, 17,139,197,103,221,221,221,
+ 83, 36, 18,201,121, 0,107,170, 42,224,230,104, 10, 36, 18,201,249,144,144,144, 67,209,209,209,163,206,157, 59,231,124,247,238,
+221, 55,214,174, 93, 27,102,108,108, 92,253, 96,222,102, 95,155,206,206,206, 59,175, 95,191, 30,216,173, 91,183, 29, 0,132,173,
+116,189,115, 0,248, 85, 25,142,191, 69, 25, 82, 19, 59, 59,187,246,126,126,126,150, 28, 14, 7,193,193,193, 32,132, 4,183, 80,
+179, 27,128, 12, 0, 17, 0,178,171,110,198,244, 0,114, 0, 92,170,186, 81, 9,110,146, 38, 87, 22,246,201,167,159, 15,156, 51,
+253, 61,105, 84,146, 30,219,207, 40,113,240,114, 54,210,138,133,232, 63,124,178, 73,175,193,227, 6,112,249, 38, 97, 77,213,156,
+ 55,111,193,192,247, 38,141,151,222, 75,167,113,232, 74, 14, 46, 63, 42, 66, 25,101,134,222,195,223, 55,243, 8, 26,244, 26, 5,
+254,158,191,195, 57,250, 15,104,254, 7, 34, 88, 59,145,191,108, 26,190, 12,249,238,135, 69, 52, 69, 17,123,215, 1, 15,156, 93,
+186,148, 50, 12, 3,149, 74, 5,141, 70, 3, 30,143, 7,149, 74,133,164,164, 36, 92,191,126, 29, 38, 38, 38, 77,250,227,130,194,
+ 66,216,217, 59, 67, 34,145,180,138,230,148, 55, 71,112,147,149, 74,110,100, 84,120,167, 3,155,246,117,114,104,215,255,145,111,
+239,207,239, 25,155, 56,170, 98, 98, 98,112,245,234, 85,228,231,231,163,186, 2,253, 55, 64, 81,148,118,221,186,117, 81,233,233,
+233,184,116,233,146,223,178,141, 63,181,185, 87,212,142,155, 93, 66,120,114,227, 76, 39,119,241, 99,125,126, 94, 94,194,236,217,
+179,207, 43, 20, 10,245,244,233,211,123, 25,162,107,103,103, 39,162, 40,170,211,128, 1, 3, 62,154, 56,113, 34, 18, 19, 19, 49,
+103,206, 28,117, 76, 76, 76, 65,167, 78,157,204,214,173, 91,199,127,255,253,247, 17, 25, 25, 57, 59, 60, 60,252, 48,128,251,105,
+105,105, 13, 61, 75, 77, 32, 18,137,128,194,202, 27, 85,141,142,160,186, 91, 88, 73, 73, 9,104, 82, 0, 62,159, 79,211, 52, 45,
+ 7, 96,208,157, 39,195, 48,124,129, 64,128,210,210, 82,148,148,148, 32, 45,187, 4, 73,153,165, 40, 46,173,128, 74,165, 69, 69,
+ 57,129, 80,106, 77,107,179,179, 45, 0,164, 25,162, 73, 8,161,171,155, 27,213,106, 53, 84, 42, 21,212,106, 53,212,106,245,243,
+199,249,112, 56, 28,169,157,157,157, 44, 45, 45, 45,191,209,218, 84, 32,214,113,104,126,200,130,149,223, 44, 5, 0, 14,205, 15,
+ 49, 70, 57, 99,200, 50,142, 64,172,123,137, 89, 75, 40,151,203,195, 15, 29, 58,228,225,226,226,130,103,207,158,185,191,245,214,
+ 91,157,149, 74,165, 31,128,166,222,197, 75,104,154,254,114,226,196,137, 31,142, 29, 59,150,114,117,117, 5,151,203,133, 78,167,
+179,143,143,143,239,115,240,224,193,185, 59,119,238,220,174,215,235,103, 27,122,238, 1,208, 2,129,224,192,182,109,219,122,118,
+238,220, 25,123,247,238,197,141, 27, 55,152,192,192, 64,122,194,132, 9,112,114,114,234, 50, 97,194,132, 35, 21, 21, 21, 67, 12,
+137,176,214,129, 83,215,174, 93, 29, 56, 28, 14,186,117,235,198,143,140,140,244, 7, 16,217,210,128,179,189,189,125, 68,239,222,
+189,253,206,158, 61, 27,149,145,145,209,187, 9,251, 11,133, 66, 49,220,218,218,122,173, 84, 42, 53, 51,244, 55, 37, 37, 37,101,
+153,153,153,115,210,211,211, 15, 27,152,255,187,249,248,248, 64,167,211,193,196,196, 4, 54, 54, 54, 61, 40,138,154,109, 98, 98,
+242,122, 81, 81,209,172,180,180,180, 27, 77,216, 95,187,170, 27,248,234,231, 2,182,169,138, 90, 1,149,207,179,124, 6, 32, 1,
+128, 45, 0, 7, 24,208, 92,104,209,174,247,208,110,193,125,122, 4,119,246,166, 87, 31, 78,132,158, 97,192,133, 30, 92, 14,131,
+ 28, 61, 15, 20, 69,193,201, 45,144, 99,125,239, 86, 23,157, 70, 51, 52, 55,238,236, 49, 67, 52, 7, 14, 24, 16,220,193,205,149,
+ 94,127, 52, 25, 5,105,247,244,153,143,206,231, 80, 52,141,182,190,253, 45,157,220,252, 56,237,253, 94,225,101, 38,222,235,163,
+105,223,179, 95,126,252,197,179,172,109, 96,105,142,193, 34, 53,239,172,150,124,143,197, 22,166,104,243,224,222, 29, 58, 37, 67,
+ 93,122,231,206, 29, 88, 88, 88,192,202,202, 10, 50,153, 12,177,177,177, 56,123,246, 44, 30, 63,126, 12, 66, 8,252,252,252,154,
+244,199,153, 25, 25,200,205, 43,110, 85, 77, 71,133, 2,142, 10, 5, 55, 39,191, 0, 87,239,220,245, 56,182,189, 95,135, 76,122,
+234,110,149, 74,245,124, 27,173,246,223,215,234, 98,101,101,165,255,248,227,233,185, 83,190, 73,104, 55,166,175, 29,103,120, 87,
+ 27, 28,141, 84,114,194, 46,112,200,162,119, 59,230,196,199,199, 25,188,211,142,142,142,171,122,246,236,249, 25,151,203,229,189,
+255,126,229,244, 35, 51,102,204,168,184,123,247,174,103,106,106,106, 66, 69, 69, 69,135, 89,179,102,221, 61,114,228, 8,239,189,
+247,222,163,202,203,203,111,240,120, 60, 18, 17, 17,177, 92,169, 84, 46,173,211,104,112, 56,209, 15, 30, 60,104,163, 19,217,194,
+ 82, 74, 99,192,162,168,202, 26, 71, 72,144,147,153,134,251,241, 55, 33,151,203, 77, 44, 45, 45, 31,101,101,101, 85,100,102,102,
+126,146,144,144,176,167,161,116,242,120,188,251,119,239,222,181,183,182,182, 70, 73, 73, 9, 82,178, 74,177,235, 42,133,178, 10,
+ 49, 0, 49, 56,144, 66,106,233, 32,109, 75,202, 98,204,204,204, 52,106,181,122,222,147, 39, 79,126,108, 68, 51,255,225,195,135,
+ 70,118,118,118,224,112, 56,154,131, 7, 15,242,213,106, 53, 8, 33,186,147, 39, 79,142, 46, 40, 40,232,214,174, 93, 59,218,201,
+201,105,157,163,163,163, 74,169, 84, 78, 73, 76, 76,172,247, 65,195,167,103,180,215,244, 90,122,225,219,130,103, 41, 7, 1,192,
+174,179, 71,222,241,165,254,234, 94, 75, 75, 26, 93,118,122, 70,251,151,217, 79,240,157, 5, 11, 22,120,152,155,155, 99,218,180,
+105, 88,182,108, 25, 22, 47, 94,236, 50,109,218,180,247, 1,108,104,130,142,216,198,198,230,230,166, 77,155,220,187,119,239,142,
+147, 39, 79, 98,255,254,253, 72, 72, 72,208, 57, 59, 59,115, 59,119,238,140, 37, 75,150, 96,192,128, 1, 83,166, 79,159,222, 43,
+ 61, 61,221,223, 64,211, 49,121,201,146, 37,195,123,244,232,129, 73,147, 38, 85, 92,184,112, 97, 20,128, 51,191,255,254,123,223,
+136,136,136,195, 63,253,244,147, 56, 36, 36,100,224,172, 89,179, 62, 0,176,181, 25,251, 63,162,103,207,158, 0,128, 30, 61,122,
+ 96,237,218,181, 3, 90,104,176, 4, 22, 22, 22, 39,246,238,221,235,231,230,230,134,183,223,126,219,127,212,168, 81, 39,242,243,
+243,251, 3, 48,232,185,145, 10,133,226,203,109,219,182,181, 23,139,197, 6,255,169, 90,173, 54,159, 58,117,234,154,166, 24, 44,
+111,111,111, 92,184,112, 1,253,250,245,131,151,151, 87,251,169, 83,167,174, 27, 48, 96, 0, 62,253,244,211,203, 58,157,206, 54,
+ 51, 51,211,208, 7, 61, 59, 1,168,126,110,169, 35, 0, 23, 84, 54, 7, 2, 64,231,170,247,103, 85,102,171,131, 33, 6, 11, 34,
+163,119,134, 13, 25, 34,253,191,200, 44,232, 25, 6,238,118, 34,120, 56,202,144,152, 85,142,196,180, 92,240, 40, 13,164, 98, 33,
+124,186,189,102,150,151,153,248, 14, 12,233, 30, 32,148,188, 51, 98,216, 16,227,159,175,102,161, 32,237, 62, 73,186,121,240,188,
+182,188,116, 10, 0, 60,184,248,227,247,214,102,162,254,174,190,157, 56,101,193,195,205, 34,142,126,247, 78, 62,192, 26,172, 63,
+ 31,210,132, 40,239, 63, 47,130, 85, 77,110, 1, 84, 22, 54, 30, 72,201,136,174,252,158,155,139,220,220, 92,180,109,219, 22,155,
+ 55,111,126, 97,219,230, 62,129,254,207,208,180, 52, 51,197,176, 62,189, 56,247, 98,191,227,168, 24, 85,171,104,254,109,115, 34,
+ 33,132,162, 40, 42, 41, 71,107,154, 83,164,229,143,238,227, 64,120, 28, 26, 99,250, 56, 82, 91,143, 37,241,115, 84, 18, 83, 14,
+135, 67, 19, 66, 26,189,147,247,247,247,231,121,123,123,127,182,115,231, 78,158, 82,169,132,169,169, 41,180, 90, 45,162,163,163,
+211,149, 74,101, 2, 0,100,100,100,196,222,184,113, 35, 83,175,215,219,187,187,187, 99,234,212,169,232,208,161, 3, 53,123,246,
+236,185, 7, 14, 28, 88,142, 58, 70, 44,102,102,102,134, 44, 92,184,176,231,170,181,155, 45,198,119,166, 80, 90,166, 70, 73, 73,
+ 9, 18,227,238,131,148,168,177,126,253,215, 16,139,197, 20, 0,126,118,118, 54,127,233,210, 37, 59, 76, 77, 77,135,220,190,125,
+123,100,189, 6, 61, 51,115,229,146, 37, 75,130,214,175, 95,111, 94, 82, 82, 2, 85,121, 57,138, 85, 2, 92,255,186, 50, 66,217,
+121,214, 13,108,253,106, 29,237,237,100,100, 81, 82, 82,130,207, 62,251,108,147, 68, 34,233, 18, 19, 19,243, 97,125,154,105,105,
+105, 49, 11, 22, 44,144,111,217,178, 69,216,161, 67,135,187, 69, 69, 69,200,207,207,167,143, 28, 57,178,194,201,201,201,124,211,
+166,205,148, 68, 34, 1, 0,164,164,164,240, 23, 45, 90,120,192,216,216,248,167,123,247,238, 77,170,239,244, 68, 44,237, 93, 1,
+ 16,165,173,109,219,246,101, 87,233,165,182,182,229,151, 35,150,166,135, 2, 68, 89, 21,135, 36, 54, 54, 54,227,147,247, 10,123,
+ 84, 84, 48, 27, 51, 50,146, 30, 3, 47,247,161,178,150,150,150,211,135, 15, 31,142, 53,107,214,224,216,177, 99,179,204,205,205,
+191, 94,182,108, 25,108,109,109, 63, 78, 79, 79,223, 88, 85, 0, 26,194, 87, 27, 54,108,112,119,119,119,199,196,137, 19,213,103,
+207,158, 93, 0,224, 40,128,164, 75,151, 46, 57,238,217,179,103,232,129, 3, 7,214,108,218,180, 73,180,101,203,150,246,111,188,
+241,198, 70,134, 97,222,109, 76,212,218,218,250,211,177, 99,199, 98,221,186,117,184,112,225,194, 27, 0, 78, 86,173, 58,117,229,
+202,149,161, 33, 33, 33,231, 22, 45, 90,132, 13, 27, 54,204, 76, 77, 77,109,170,193, 50,246,240,240,248, 98,224,192,129,184,116,
+233, 18,130,131,131,209,181,107,215, 89, 87,175, 94,221,140,202,166,173,166, 66, 27, 27, 27, 31,216,189,123,119,112,155, 54,109,
+176,114,229, 74,124,246,217,103,216,185,115,103,240,219,111,191,125,160,180,180,116, 36, 12, 24,229,107,108,108,108, 44, 22,139,
+177,102,205, 26,146,156,156,220,104,244, 84,161, 80,152,125,241,197, 23,148,137, 97,205, 0, 28, 91, 91, 91, 19,107,107,235,158,
+ 54, 54, 54,216,180,105, 19,172,172,172, 48,107,214, 44, 88, 88, 88,160,180,180, 20, 35, 71,142,228, 93,187,118,109, 12,128,205,
+ 6,238,183, 5,128,234,136,151, 71,149,185, 42,174,250,126, 13, 64,143, 42,131,149, 7,192,220,160, 3, 73,136,183,153,169, 12,
+233,119, 51,193,133, 14,238,142, 82,220,138, 47,133, 70, 79, 32, 49, 50, 70,105,113, 1,124,219,203, 81, 84,102, 15,128, 49,104,
+ 18, 76, 62,135,238, 36, 16,138,145, 85, 84,136,140,135,231,114, 53,250,138,169,133,207,174,164, 0,128, 89,219,224,169,247,175,
+159,190, 53,114, 80,176, 85,118,190, 35, 8, 97,130,192,194,210,148,139,191,177, 13, 24,230,143,215,126,205,136, 80, 53, 26, 77,
+203,110,184,255, 12,205,186,248, 51, 52,255, 14, 62,203,206,140, 91,104, 36,162,117,191,223,202,210,107,117,122,252,118, 43, 67,
+ 47, 17, 82, 58, 51,161,186,136, 97, 24,131, 42,196,168,168, 40,237,165, 75,151,246,206,159, 63, 31, 27, 54,108,192,211,167, 79,
+193,227,241,224,230,230,102,109,111,111,175,168, 42,184, 29,188,188,188, 44, 57, 28, 14,226,227,227,177,127,255,126, 44, 93,186,
+148,220,190,125,123,103,125, 21,133, 82,169,140,206,204,204,220,182,122,249,130, 2, 94, 69, 58, 36,250,108,232, 11,158,130,167,
+ 47,196,244, 89,243,241, 44, 71,143,232,103,197,136,126, 86,140, 12,149, 8, 95,172, 92,207,113,113,113, 25,106,103,103, 55,160,
+190,180,166,167,167, 95, 83, 42,149,161,139, 23, 47, 46,204,201,201,121,158,127, 52, 58, 6, 26, 29, 83,187,114,194,234,213,171,
+ 77, 21, 10,197,104, 91, 91,219,222,245,105,102,103,103,103,165,167,167,199,207,159, 63, 95,147,157,157,141,162,162, 34,156, 62,
+125,250,141,182,109,219,154,207,158,191,156,122,150, 67,158,167,179,144, 49,197,186,205,219, 57,237,218,181, 27,167, 80, 40, 26,
+236, 71,100,107,107,215,222,195,163,221,161,107,215,174, 77,106,223,190,253,135,213,198,170,218, 72, 57, 59, 59, 79,187,125,251,
+246,100, 63, 63,207, 67,214,214, 54, 29, 94,114, 94,234, 51,122,244,232, 14, 12,195,224,208,161, 67,119, 1,108,248,249,231,159,
+111, 86, 84, 84, 96,204,152, 49,206, 0, 6, 26,168, 19, 56,110,220,184, 15,131,131,131, 49,115,230, 76,205,217,179,103, 59, 1,
+248, 26,149,163,199, 8,128, 36, 0,155, 35, 34, 34,124,167, 79,159, 94, 17, 20, 20,132, 73,147, 38, 77, 70,253,125,114,170,233,
+ 54,118,236, 88,119,134, 97, 16, 22, 22,118,167,134,185,170,230,252,225,195,135,175,169,213,106,140, 31, 63,190, 45,128,190, 77,
+216,119,190, 80, 40, 60,180, 98,197, 10,211,180,180, 52, 76,152, 48,161, 34, 54, 54, 22, 75,151, 46, 21,155,152,152,156, 4, 96,
+220,212,131, 41, 20, 10,127,248,238,187,239,134,251,248,248,224,131, 15, 62, 80,127,251,237,183, 51, 62,252,240, 67,117,167, 78,
+157,240,205, 55,223, 12, 23, 8, 4, 77,122, 4, 72,102,102,102, 65, 68, 68,132, 69, 99,175,140,140,140, 76, 67,244, 28, 28, 28,
+ 76,189,188,188,238, 6, 6, 6,230,116,236,216,177, 29, 0,220,191,127, 63,251,208,161, 67,196,194,194, 2,167, 79,159,198, 15,
+ 63,252,128,238,221,187, 67, 42,149,142,105, 98, 20,130,212,248, 92,215,250,218,219, 53, 12, 69,145,194, 50, 29,184, 52, 13, 30,
+135, 32, 41,179, 28, 26, 61, 1,159, 71,131,199, 1,184, 52,129,133,148, 7, 30,143, 3, 67,111, 82,104,138, 66,126,169, 22, 92,
+ 14, 5,158,128, 79,209, 58,253,243, 16, 33,205,213,139,133, 34, 33,101,101,194, 7,159, 75,129,162,192,194,210,122, 17, 44, 0,
+208,235,255, 24,248,168, 43, 10,164, 86,171, 91,148,144, 63, 67,179, 46,254, 12,205,151, 73, 81, 81, 17, 55, 34, 34,194,132,199,
+227, 25, 13,241,233,158,251,229,193, 56,203,101,251, 30, 67,192, 1, 53,180, 35,173,188, 16,126,150,202,207,207, 55,115,113,113,
+201, 55, 68, 47, 33, 33, 97, 74,104,104,232, 74,154,166,131,244,122,253,193, 13, 27, 54, 96,235,214,173,146,105,211,166,197,234,
+245,250, 52, 87, 87, 87,135,141, 27, 55, 10, 1, 32, 52, 52, 20,191,253,246,219, 8, 30,143,119, 35, 57, 57, 57,163, 33,221, 59,
+119,238, 44, 42, 40, 40,136, 76, 72, 72,216, 76, 81,148,169, 84, 42, 53,251,249,231,159, 41,101,129, 26,139, 66,159, 62, 31, 89,
+104, 36,228, 96,254,235,114,188,249,230, 91,220, 39, 79,158,124,149,150,150,246, 91,125,154,209,209,209,179, 10, 10, 10, 34,226,
+226,226, 54,240, 45,220, 44, 68,222,239, 75,251,206,175,108,126, 84,152, 11, 65, 87, 21,136,133,133,133,200,201,201,193,228,201,
+147, 77, 87,173, 90, 53, 55, 61, 61,253, 66,125,154, 49, 49, 49,215, 10, 11, 11,149,113,113,113, 93, 8, 33, 2, 19, 19,147,238,
+ 27, 54,108,160,146,242,212,152,183, 39, 30,197,229,149,233,148,138,120, 88, 62,214, 30,147, 38, 77,226, 62,123,246,236, 75,165,
+ 82,217,163,110,115,101,235,226,225,225,113,104,223,190,125, 30, 27, 55,110,204,123,242,228, 73,169, 66,161, 88, 86,115,155,196,
+196,196,138,213,171, 87,231,134,134,134,186, 77,152, 48,225, 80, 84, 84,212,168,230, 78,169,209, 82,100, 50,217,154,169, 83,167,
+226,192,129, 3,200,207,207,223, 88,149,199, 54,236,219,183, 47,108,202,148, 41, 8, 13, 13, 93,147,157,157,125,218,128, 74,113,
+208,152, 49, 99,112,234,212, 41,156, 59,119,238, 11, 0, 15,234,217, 46,238,210,165, 75,115,127,249,229,151, 77, 99,199,142,197,
+174, 93,187, 6,162,178, 3,116,125,244, 31, 48, 96, 0, 78,158, 60,137,220,220,220,111,234,218,160,160,160,224,219, 95,127,253,
+181,203,128, 1, 3,176,122,245,234,254, 0,206, 27,176,235,238, 38, 38, 38,187, 55,109,218, 20,232,227,227,131,113,227,198,149,
+107, 52,154,129,159,125,246,217,177,253,251,247, 75,247,238,221, 27,240,254,251,239, 95,207,202,202,122,175, 42, 2,211,120,229,
+ 77,211, 33,235,215,175,127,183,119,239,222,152, 53,107,150,238,183,223,126, 27, 6,224,204,233,211,167,227, 63,255,252,243, 19,
+235,215,175,231,172, 91,183,238,221, 79, 62,249, 36,155, 97,152, 5, 47,227,124, 83, 20,181,110,253,250,245, 30,158,158,158, 40,
+ 47, 47,199,211,167, 79,145,153,153,185,239,244,233,211,103,238,221,187,183, 54, 35, 35,227,136,181,181,245,148, 89,179,102,217,
+ 7, 6, 6, 6,150,150,150,154, 25,210,255,176, 70,100, 42, 11,192, 67, 84, 14, 44,170, 62,110,157, 81,217, 52, 8, 84,142, 40,
+204, 55, 48,177,119,227,158,165,181, 53, 51,150, 33,159, 17,224, 89, 90, 14,196, 70, 70,160, 9, 13,157, 42, 31, 46, 78, 86, 96,
+ 8, 80,148,147, 6,154,166,238, 26, 34,169,213, 51,183, 19, 83, 50,237, 76,141, 68,112,233, 52,216,226,206,249, 93, 63,202,218,
+118,127,159,203,161, 56, 60,129,241,182,113, 99, 39, 90,106,245, 4, 37,249, 74, 80, 28,250, 6, 88, 88, 90, 59,130, 85,187,221,
+191,118, 20, 72, 44, 22,163,162,162,105,211,165,252, 25,154,134,252,103,107,107,190, 76,180, 90,173,244,195, 15, 63,236,145,154,
+154, 42,115,115,115,139, 31, 28, 40,191,186,115, 70,219,171,157,101, 15,202, 22,190, 70, 93,117, 16,101,222, 20, 10,133,201,249,
+249,249,130,208,208, 80,127,173, 86, 43, 49, 68, 55, 35, 35, 35, 57, 61, 61,253,208,225,195,135,127, 60,126,252, 56, 58,116,232,
+128,139, 23, 47, 74,227,226,226,220,195,195,195,141, 92, 92, 92,112,228,200, 17,252,250,235,175,219,149, 74,229, 47,141,153,171,
+106,146,147,147, 79,199,196,196,180,207,205,205,109,111,106,106,170, 53, 53, 53, 69,237,145,133,165, 21,122, 20, 20, 21,195,212,
+212, 20, 18,137,196,185, 49,205,196,196,196, 99,119,238,220,105, 11,115,247, 96, 78,194,190,194,111, 63,238,128,111, 63,238,128,
+ 21,111,183,131,141,153, 0, 5, 5, 5,200,206,206, 70,118,118, 54, 8, 33,208,235,245, 30, 6,104, 38,199,196,196, 28, 72, 75,
+ 75, 59, 43,151,203, 41, 99, 99, 99, 16, 0,249, 37, 26, 92, 89, 27,136, 43,107, 3,145, 95,162, 65,113, 73, 41,236,236,236, 32,
+149, 74,235,108,142, 48, 51, 51,147, 18, 66,246,236,216,177,195, 93, 42,149,114,166, 76,153, 98,122,245,234,213, 30, 87,175, 94,
+157, 87,235,213,227,227,143, 63, 54,147, 72, 36,156, 93,187,118,185,114, 56,156,221, 78, 78, 78, 38,127,113,118,226, 0,248,104,
+202,148, 41, 1, 34,145, 8, 91,183,110, 77, 0,240, 83,213,186, 67,223,126,251,109, 44, 0,204,152, 49,195, 11,192, 44, 52, 60,
+146, 18,124, 62,191,147,135,135, 7,174, 94,189, 10, 0, 63, 55,242,223,135, 35, 35, 35,225,226,226, 2,145, 72, 20,216,200,182,
+206, 14, 14, 14,136,141,141, 5,128,232,250,188,119,108,108, 44, 28, 28, 28, 64, 81,148,179, 1,251, 62,252,213, 87, 95,189, 27,
+ 30, 30, 30,216,173, 91, 55,188,251,238,187,234,235,215,175, 15, 6,112, 49, 58, 58,186,207,248,241,227, 75, 93, 93, 93, 17, 17,
+ 17,225, 62,126,252,248, 72,154,166, 87, 26,160, 57,121,249,242,229,243, 71,140, 24,129,229,203,151,147,131, 7, 15,142, 3,112,
+166,106,221,111, 97, 97, 97, 19, 86,173, 90, 69, 70,142, 28,137,101,203,150,205, 7,240, 65, 67, 98,101,101,101,133,122,189, 30,
+101,101,101, 6,221, 33, 26,186,125,219,182,109, 7,121,122,122,226,151, 95,126,129, 64, 32,192,239,191,255, 14,154,166, 79,100,
+100,100,156,185,125,251,182, 79,122,122,250, 10,165, 82,121, 56, 62, 62, 30,193,193,193,180, 94,175, 31,105, 96,126,122, 6,192,
+167,234,115, 10, 42,251, 99,117, 3,208, 29, 64, 92, 85, 36, 19,168,124,158,221, 51, 67, 4, 25,117,201,222,115, 39, 15, 23,154,
+ 25,243, 97,105,102, 4,107, 75, 25, 56,218, 82, 64, 93,128,246, 78,214, 8,242,176,193,179, 44, 53, 34,207, 30, 42, 40, 43, 41,
+ 51,104,122, 9,189,166,116,247,185,211,191, 20,154, 27,243,209,166,189, 39,134,142,155,233,231,238,211,249,119,111,255, 30,191,
+ 45, 90, 18,210,241,213, 30, 30,212,131,148,114, 92, 59,119, 52,191,172,184,104, 55,107, 25, 88,154, 27,193,170, 43, 0,154, 53,
+107,214, 44,171,217,179,103, 67, 38,147, 33, 55, 55, 23, 90,173,246,121,180, 73, 40, 20,194,212,212, 20,185,185,185, 8, 11, 11,
+ 67,213,221, 74,253, 37, 56, 71,160, 92,249,205, 22, 7,138, 99,164, 22,138, 37,196, 92,210,114, 77, 0, 80,107,185, 89,223,133,
+ 29, 49, 31,212,179, 43,215, 81,161,248,195,250,230,104,254, 67, 12,214,239, 25, 25, 25, 1, 29, 58,116,200,112,114,114, 82,149,
+151,151,131,168, 84,197, 39,195, 54,182,115, 48,249,224, 41, 77,211, 68, 44, 22, 51,166,166,166,165, 79,159, 62,165,116, 58, 93,
+120, 83,244, 9, 33,211,166, 77,155, 70, 95,186,116,105,220,219,111,191,141, 54,109,218, 32, 58, 58, 26,161,161,161, 56,124,248,
+240, 30, 62,159, 63,163, 57,233, 78, 73, 73, 41,241,240,240,120, 33, 2, 82,123,100,161,182, 34, 27, 12,195, 24,220, 57, 63, 63,
+ 42,244, 49,199,210, 82,235,229,248,191,233, 68,242,243,243,145,157,147,131,236,236,108,228, 84,189, 19, 66, 12, 14, 97, 82, 20,
+ 85,172, 86,171,107,165,243,127,205,143,165,165,165,208, 84,100, 65,175,215,215,169,153,159,159, 95,172, 80, 40,182,108,222,188,
+121,253,138, 21, 43,172, 54,108,216,144,247,232,209,163, 34,154,166,203,107,221,196,136,218,183,111, 47, 93,183,110,157,245,230,
+205,155,243, 24,134,217,146,148,148, 84,248, 23,102,165, 17, 62, 62, 62,123, 6, 13, 26, 36,253,240,195, 15,177,121,243,102, 40,
+149,202,121, 0,170, 71, 50, 50, 57, 57, 57,159,127,243,205, 55,199,231,206,157, 11,141, 70,179,238,228,201,147,203,162,162,162,
+166,213, 48, 97, 47, 32,151,203,237,185, 92, 46,162,162,162,138, 0, 60,109,204,211, 71, 69, 69,101, 82, 20,101,173, 80, 40,218,
+ 37, 36, 36,212,187,161,185,185,121,123,169, 84,138,180,180, 52, 52, 80, 49, 39,166,167,167, 19,129, 64, 64,217,218,218,186, 84,
+109, 91, 47,102,102,102,159,239,216,177,131, 27, 30, 30,142, 37, 75,150,164, 38, 37, 37,141,175, 17, 69,139,186,125,251,118,112,
+159, 62,125,246,207,157, 59,215,237,203, 47,191,164, 98, 99, 99, 63,136,138,138, 90,212,144,166,147,147,211,180,201,147, 39, 99,
+203,150, 45,216,182,109,219, 7, 0, 14,213,218,100,255, 55,223,124, 99,102, 97, 97,177,101,234,212,169,216,189,123,247,248,103,
+207,158,125, 87,159, 94, 90, 90,218,220,209,163, 71, 47,206,203,203, 11, 49,228,132, 26,178,189, 66,161, 24, 22, 16, 16, 96, 77,
+ 8,193,230,205,155, 51,182,108,217, 82, 86, 84, 84,244,147, 82,169, 12,175, 21,137, 59,114,250,244,233, 89, 31,126,248, 33,194,
+195,195,183, 70, 68, 68, 16,165, 82,185,163,145, 36, 40, 81, 57,207,149, 71, 85, 4, 43, 5,127,236,200,238, 86,245,158,106,200,
+ 62,229,198, 93, 56,198,225,137,174,196,220,184,240,170,179, 87, 48,207,202, 76, 10, 59, 23, 75,152, 27,243, 65, 0,220, 75, 82,
+225,218,197, 51,218, 44,101,114,164, 33, 35, 8,171, 53,159,240,197,145, 18, 75,167, 87,219,122,246,224, 58,187,184,162,127,247,
+142,102, 22, 50, 30,212, 90,130,223, 99, 10,113, 53,226,148, 54, 43, 51, 37,156, 29, 65,248,215, 5, 86,255, 75, 17,174, 96, 46,
+151,251,213,231,159,127,190,237,225,195,135,219,226,226,226,182, 69, 69, 69,109, 91,185,114,229,182,165, 75,151,110, 11, 8, 8,
+216, 70,211,244, 87,168,236, 59, 81, 59, 34,230,253, 87,104,246,234, 5,238,184,129, 88,185,124, 26,183, 44,116,165,131, 54,251,
+226, 40, 66,238,127, 64,150, 79, 3,105, 65, 58, 91,202, 95,165,233,197,229,114, 79, 59, 57, 57, 93,219,187,119,239,129,168,168,
+168, 93,230,230,230,233, 43, 87,174,220, 49, 99,198,140, 48, 27, 27,155, 27, 60, 30,239, 44,128,142,205, 77,167,181,181,245, 27,
+111,191,253, 54, 57,117,234, 20,121,243,205, 55,137,173,173,237,224,150,238,123,151, 46, 93, 50,238,221,187, 71, 30,166,148,146,
+ 55, 86,197,144,238,115,110,146,238,115,110,146,129,139,110,144,239,247,159, 33, 75,150, 44, 37,222,222,222,103,155,162,233,235,
+235, 27,151,149,149, 69, 8, 33, 36, 47, 47,143,196,198,198,146, 75,151, 46,145, 35, 71,142,144,109,219,182,145,144,144, 16,166,
+ 99,199,142,123,154,162,217,181,107,215,188, 39, 79,158,144, 7,201,165,100,196,138, 59, 85,233,188, 65,134, 44,185, 77,194, 78,
+ 92, 35,203,151, 47, 39,158,158,158, 7, 27,210, 84, 40, 20, 99,230,204,153,163,204,203,203,211, 6, 6, 6, 70,212, 94,239,239,
+239,127, 52, 39, 39, 71,187,112,225,194, 76, 91, 91,219,137,127,117, 94,178,176,176,184,146,154,154, 74, 18, 18, 18,200,103,159,
+125, 70, 56, 28, 78,157,149, 39, 77,211, 91,103,206,156, 73,158, 62,125, 74,210,211,211,137, 66,161,136,110, 32,157, 67,172,172,
+172,110, 1, 24, 97, 96,122,134, 88, 89, 89,221, 0, 48,178,161,125,119,116,116,124,144,154,154, 74, 60, 61, 61,243, 26, 18,115,
+113,113, 73, 73, 77, 77, 37,174,174,174,105, 6, 28,207,215,172,173,173,111, 3, 88, 5, 64,212,192,205,232,167, 54, 54, 54, 87,
+ 0,124,100,128,230,112, 55, 55,183, 40, 0,211, 27,217,239,247,157,157,157, 99, 0,188,246, 87,159,119, 47, 47,175,171,105,105,
+105,100,251,246,237, 68,161, 80,204,109,232, 71,109,218,180,249,229,216,177, 99, 68,169, 84, 18, 63, 63,191, 40, 3,211,201, 5,
+208, 11,149,253,224,108, 80, 57,241, 40, 15,128, 53,128,222, 0,250,160,242, 9, 28, 6,151, 33, 22,174,221,140,173,189, 7, 29,
+247,124,117,122,222,164,213,225,100,238,158,120,242,197, 79, 9,100,230,230,203, 36,112,200,204, 60,219,142,175, 29,183,112,237,
+102,220, 84, 77,133,207,224, 19, 29, 7,127,154,247,206,234,115,100,193,222,167,100,233,254, 4,242,201,198, 8, 18, 52,108,102,
+174,125,199,161, 63, 91,121,247,151,188,228,114,254,191,162, 89,231, 53,242,111, 55, 90, 2, 0,175, 73,165,210,205, 75,150, 44,
+217,118,253,250,245,109, 67,134, 12,217, 38, 16, 8, 54, 87, 21, 12,130,102,156,128, 86,215, 28, 24, 4,233,228, 97,244,174, 21,
+ 31,112, 53, 71, 55,116,208, 46,159, 6,210, 10,233,252,167,100,232, 30, 60, 30,239,170,143,143, 79,184, 84, 42,205,110,211,166,
+205, 37, 30,143,119, 3, 64,207,150,166,211,218,218,218,242,221,119,223,101,158, 61,123, 70, 38, 78,156, 72, 12,104,190,106, 84,
+211,193,193,161,239,200,145, 35,181, 41, 25, 5,228, 82, 76, 10, 57,126,241, 1,217,119,252, 42,217,182,255, 12,217,248,221, 30,
+210,191,127,255, 10,107,107,107,167,166,104, 58, 58, 58, 14, 28, 54,108, 88, 65, 78, 78, 14,137,141,141, 37, 23, 47, 94,124,110,
+174,190,251,238, 59,210,177, 99,199, 92, 59, 59, 59,219,166,104, 58, 57, 57, 13, 31, 63,126,188, 86,153, 91, 74,174, 63,200, 32,
+191, 95,143, 39, 71,207,223, 33,251,143, 95, 37,123,246,255, 76,122,245,234, 85,110,105,105,105,221,152,166, 66,161, 24, 61,106,
+212,168, 39,110,110,110,223,215, 97, 6,190, 25, 53,106, 84,146,173,173,237,132,151,148,151, 6,218,217,217,197,242,249,252, 19,
+ 0, 38, 52,242,187, 49, 92, 46,247,152,141,141,205, 77, 0,175,191,132, 60, 63,196,202,202,234, 26,128, 97, 6, 24,182,107,245,
+ 24, 60,182, 82,172,204,147, 67,124,125,125, 99,108,108,108,214,163,145, 38, 95, 59, 59, 59,145, 66,161,248,202,207,207,239,170,
+141,141,205,200, 38,166,211,190,234,198,118,120,213, 43, 24,149,115, 95, 53,123,223, 45, 92,251, 13,181,243, 27,118,212,182,227,
+107, 73,182, 29,135, 36,217,251, 15, 63,106,225,218,111,104, 75, 53,237,253,135,255, 98,235, 59, 36,217,222,119,104,162,163,255,
+240,163,150, 29,250, 13, 98,205, 16,107,176,254, 42,140, 1,140,161,105,122, 43,128, 49,104,124, 84,141,247,203,208, 28,216, 11,
+118, 31,190,201, 57, 57,111, 18, 47,187, 21,211,249, 79,201,208,195,185, 92,110,100, 85, 65,214,106,233,116,113,113,217, 49,117,
+234, 84,189,163,163,227,150,214,210,244,240,240, 88, 63,116,232, 80,205, 15, 63,252, 64,126,253,245, 87,178, 99,199, 14,242,217,
+103,159,145,222,189,123, 87,184,185,185, 77,106,142,166,143,143,207,138,190,125,251,230,132,133,133,145, 3, 7, 14,144,173, 91,
+183,146,144,144, 16,198,207,207, 47,203,205,205,109, 72,115, 52,189,189,189,127, 24, 62,124,184,102,239,222,189,228,252,249,243,
+228,192,129, 3,100,209,162, 69,164, 87,175, 94,229,174,174,174,111, 24,170,217,174, 93,187,250, 12, 62,252,253,253,121,108,129,
+203,106,178,154,172, 38,107,176,254,187, 6,171, 26,238,159,112, 2,254, 41,154,255,217,139, 68,161, 80,136, 91, 91,211,214,214,
+182,163,151,151,215,185,206,157, 59,231, 7, 6, 6,102,121,123,123, 31, 81, 40, 20, 14, 45, 76,167,159,191,191,255, 33, 63, 63,
+191, 39,254,254,254,247,125,124,124,190,175,158,102,162, 5,233,236,236,227,227,115, 33, 40, 40,168, 32, 48, 48, 48,211,211,211,
+ 51,172, 86,228,138,205, 75,172, 38,171,201,106,178,154,172,193,106,178, 1,169,205,159,241, 24,143,127,138,230,127, 22,165, 82,
+169,106,109,205,244,244,244, 59,233,233,233,175,180,114, 58,163,149, 74,229, 91,173,156,206,235,233,233,233,189,217, 92,192,194,
+194,194,194, 98, 8, 52,123, 8, 88, 88, 88, 88, 88, 88, 88, 88, 90, 23, 10,245,135,249,154,242,164,236,230,132, 10,239,177,154,
+172, 38,171,201,106,178,154,172, 38,171,249,159,211,172,173, 93,187, 47,107,237,209,191, 63,128,165, 85, 78, 12,171,201,106,178,
+154,172, 38,171,201,106,178,154,255, 61,205,127, 21,108, 19, 33, 11, 11, 11, 11, 11, 11, 11, 11,107,176, 88, 88, 88, 88, 88, 88,
+ 88, 88, 88,131,197,194,194,194,194,194,194,194,194, 26, 44, 22, 22, 22, 22, 22, 22, 22, 22, 22,214, 96,177,176,176,176,176,176,
+176,176,176,176,176,176,176,176,176,176,176,252, 87, 32,236, 33, 96, 97, 97, 97, 97, 97, 97, 97,189, 72,203, 96,155, 8, 89, 88,
+ 88, 88, 88, 88, 88, 88, 88,131,197,194,194,194,194,194,194,194,242,207, 48, 88,108,211, 32, 11, 11, 11, 11, 11, 11,203,203,228,
+ 95,233, 69,122, 85,237, 88, 47,246,252,178,176,176,176,176,176,176,176, 94,132,133,133,133,133,133,133,133,133,133,133,133,133,
+133,133,133,133,133,133,165,249,176, 79, 26,103, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,243, 63, 7, 59,138,144,133,133,133,
+133,133,133,133,133, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44,172,193, 98, 97, 97, 97, 97, 97, 97, 97, 97, 13, 22, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11,107,176, 88, 88, 88, 88, 88, 88, 88, 88,254, 54, 80,168,127, 36,192,189, 38,232, 52,103, 52,193, 61, 86,147,
+213,100, 53, 89, 77, 86,147,213,100, 53,255,115,154,141,105,223, 3,203,159, 98,188, 88, 77, 86,147,213,100, 53, 89, 77, 86,147,
+213,252,239,105,254,171,224,178,135,128,133,229,159, 13, 57, 4, 14,172, 58, 56,131, 33,182,224, 10,148, 56,127,247, 41,181, 20,
+ 76,139, 53,109, 61,157,160,214, 90, 67, 44,202,198,111,119, 18, 90,170,201,194,194,194,194, 26, 44, 22, 22,150,127, 14, 10,119,
+ 55,232,177, 26, 28, 40, 64, 52,241,232,238,185, 26,120,208,178, 16,187,133,187, 27,180,204, 74,112,105,123,168, 53,143,209,179,
+195, 26, 32,246, 1,123,176, 89, 88, 88, 88, 12,227,165,116,114, 15, 8, 8,184, 29, 16, 16,176,162, 87,175, 94, 66,246, 20,176,
+176, 52, 31,114,215, 91, 2,157,126,144, 90,203,216,157,142, 44,176, 42, 43,215,187,129,175, 27, 76,174,184, 26,183, 72,147, 71,
+189, 90,174,101, 28,127,252,189,204,186,180, 92,231, 1, 26, 45,210,172,198,203,203,203, 52, 48, 48,240,180,175,175,175, 37,123,
+246, 88, 88, 88, 88,131,213,202, 48, 12,227,111,101,101, 53, 75,165, 82, 37,117,234,212,105,216,127,233,128,119,238,220, 57,178,
+ 75,151, 46,153, 93,187,118,205,236,218,181,107, 84, 99,203,255,141, 40, 20, 10, 55,111,111,239, 36, 79, 79,207,199, 53,151,203,
+ 59,190,222,205, 61,120,194, 18, 11,207,225,189,216, 75,211, 64, 74, 25,107,208,156, 62, 15, 18,203, 36, 25, 5, 90,235,219,177,
+101, 82, 16, 78,111,104,160,104,145, 38, 67,250,198,196,171,140,174, 62,149, 91, 95,186, 87, 33, 3,161,251,128, 80, 54, 45, 77,
+174, 64, 32,248,128, 16,210,159,199,227,205,100, 79,222,127, 30,111, 0,195, 0, 4,182,162,230,151, 29, 58,116, 72, 3,240, 9,
+123,120, 89,254, 49, 6,235, 77,103,116, 31,219, 22, 17,163,156, 81, 60,186, 45, 74,198,183,197,229, 55,218,161,217, 21,225,145,
+ 35, 71,196,161,161,161, 86,158,158,158, 97, 65, 65, 65,151, 59,117,234,228,218, 28,157,128,128,128,211, 1, 1, 1,111,213, 94,
+214,169, 83,167,209, 53,151, 5, 6, 6,222, 15, 12, 12, 44, 12, 8, 8,120,106,136,174,191,191,255, 19,127,127,255,210,128,128,
+128, 39, 53,151,119,234,212,105,116, 96, 96,224,233, 90,255,247, 86,237,101,245, 30,112,154,182, 63,118,236,152,213,137, 19, 39,
+172,184, 92,174,117,237,229,199,143, 31,127, 97,121, 51,142,199,148,128,128,128,200, 90,251,242, 94,237,234,112, 30, 91, 0, 0,
+ 32, 0, 73, 68, 65, 84,101, 13,209,169, 83,167, 72,127,127,255,247,106,233, 70, 6, 4, 4, 76,105, 13,115,213,179,103,207,203,
+209,209,209,142, 82,169,212,180,230, 58, 27, 11,211, 1,145,199,191,153, 53,233,173, 87, 63,144,123,140,240, 97, 47,207,134, 33,
+ 15, 61,248,208, 49, 61, 25,134,200, 31, 60, 45,151, 15,126,237, 77,110,204, 19,149, 92,171,211,155,131,226,244, 38, 23,156,132,
+205,210,212,106,131, 25, 66,172,207,197,240,229,189,135,126,204, 9,191,203,149,107,245,122, 11,104,209,171, 57,154, 53,242, 33,
+143,195,225,204,154, 58,117, 42, 77, 81,212,199,237,218,181, 19,252,151,206, 87,144, 55,236,250,118,226,220,240,247, 64,247, 86,
+148,245,146, 72, 36,183, 0,184,253,195, 14,135, 63, 0, 9,128, 95, 1, 88,163,117,186,171,108, 88,190,124,249,231,247,238,221,
+179,109,219,182,237, 50, 0, 28,182,148, 96,249,219, 27,172,209,206, 88,106,109, 99,119,102,225,134,125, 61,119, 68, 36, 24,127,
+123, 44,202,104,214,220,144,238, 54,102,242,147,227,219, 97, 77, 3, 63,189,215,192,157, 44,158, 62,125,138,205,155, 55,139,150,
+ 46, 93,218,205,196,196,228, 78, 80, 80,208, 70, 15, 15, 15,163, 70,146,243,130, 38, 33,164, 59,143,199,219, 17, 20, 20,180,187,
+186,192,166, 40,170,187, 80, 40,252, 33, 40, 40,232,199,234,102,200, 78,157, 58,181,189,113,227,134,140,162, 40,107, 67,210, 25,
+ 20, 20,164,184,125,251,182, 4,168,140, 4,244,234,213, 75, 24, 24, 24, 24,106,103,103,183, 13,168, 44, 32,219,181,107, 39, 8,
+ 10, 10,218,237,224,224,176,157,162,168,238,134,236, 59, 77,211, 48, 53, 53,197,190,125,251,192,225,252,239,250,167, 40, 10,166,
+166,166,248,233,167,159, 64, 81, 84,147,143,167,135,135,135, 81, 64, 64,192, 17,133, 66,177,145, 97,152,174, 0,224,237,237, 45,
+ 9, 12, 12, 60,108,103,103,183,169,122,153, 33,154,132,144,174,124, 62,127, 99, 96, 96,224, 97,111,111,111, 9, 0, 48, 12,211,
+149,203,229,110, 8, 8, 8, 56,210,148,115,228,231,231, 55,213,199,199, 39,221,199,199, 39,221,205,205,109,149,181,181,245,133,
+ 45, 91,182, 88,212,220,247,234,200, 85,102, 86,110,126,228,205,251,177,179,166,190,217,219,209,193,122,188, 73,199,225, 38,134,
+236,123, 11,248,103,107,230, 82, 86,160, 72,191,216, 36,149,168,141, 75,128,145,149,251,155,144,155,114,133, 87, 31,150, 74,193,
+193, 43,224, 73,228,205,211,228,190,114, 63, 65, 37, 54,107, 59, 72, 18,216,165, 39, 40, 35, 87,225,133,232, 82, 25,184,116,243,
+ 52,107,220,167,117,237,218, 85,208,175, 95, 63,216,218,218,114, 76, 76, 76,198,255,235,207, 81, 13,115, 37, 21, 9,174,175, 95,
+254,105,128,173,133,228, 23, 3, 77, 86, 99,233,244,178,178,178, 10,255,230,155,111, 58, 73,165,210,139, 6,154,172,191,195,241,
+244, 7,192, 7,112,173,234,251, 3, 0,193, 45,212,220,176,116,233,210,153,243,231,207, 71,113,113, 49, 38, 77,154, 36, 3,176,
+222, 80, 77, 99, 99, 99, 23, 31, 31,159, 31, 61, 61, 61,147,125,125,125,213,238,238,238,229,110,110,110,137, 94, 94, 94,123,132,
+ 66,161,243,191, 61,127,254,141, 52,235,191,249, 35, 68, 64, 8,233, 67, 8,121,141, 16,242, 10, 33, 36,168,234,115, 96,213,235,
+ 53, 66, 72,191, 90,239,129, 85,191,173, 94,223,185, 30,141,215,106,255,174,198,111,106,127,127,225,179, 33, 6,139,212,122,127,
+206, 91,109,209,205,194,198,238,243, 47,143,222, 20, 51,113, 49,184,253,110, 95,196,126, 50, 2,226, 39, 49,152, 55,125,158, 88,
+ 42, 53,155,254,102, 91,244,105,206, 1,123,252,248, 49,194,194,194, 96,105,105, 73,237,220,185, 83,248,214, 91,111,125, 32,147,
+201, 82, 2, 2, 2,198, 27,170,193,225,112,244,187,119,239, 54, 30, 62,124,248, 24,115,115,243,251,254,254,254,109,105,154,214,
+239,221,187,215,120,244,232,209,111,169,213,234,135,157, 58,117,114,141,138,138,210,223,188,121, 19, 52,109, 88,208,238,246,237,
+219,186, 83,167, 78, 85, 71,116, 92, 9, 33, 15,215,172, 89, 51,230,231,159,127,150,154,152,152, 48,254,254,254,109, 29, 28, 28,
+238,127,249,229,151,227, 15, 31, 62, 44,149,201,100, 6,141,176,162, 40, 10,229,229,229, 16,137, 68, 47, 24, 41,138,162,160, 82,
+169, 32, 20, 10, 13, 78, 99,141,200,128,151,133,133,197,163,213,171, 87, 15, 63,122,244,168, 88, 42,149, 34, 32, 32,192,195,212,
+212, 52,118,237,218,181, 35,126,249,229, 23,177, 84, 42, 53, 88,143,207,231,227,167,159,126,146,140, 27, 55,110,152, 80, 40,124,
+ 20, 16, 16,224,193,231,243,177,127,255,126,201,248,241,227,135, 72, 36,146,135,254,254,254, 94,134,104,105,181,218,197, 55,111,
+222, 84, 92,184,112, 65,225,228,228, 52,227,219,111,191,181,230,241,120, 0, 0,189, 94,255, 66,228,106,252,200,254,157,103, 46,
+254, 38, 92, 85, 94,161, 94, 57,111,114,111,158, 30, 93,216,123,160,122, 10,155, 67,224,128,209,251, 3,104, 31,245, 88,101,233,
+219,115, 60, 23, 89,191, 34,200,195,152, 27, 17, 85, 98, 69, 8,113,130,142, 4,145, 11,189,184, 77,210,228, 16, 95, 80,140,235,
+153,104,202,178, 91,191,241,220,164,164, 36, 56,123,244,230, 28,191, 9,107, 66,136, 51, 24, 4, 52, 69,179, 38, 60, 30,111,201,
+168, 81,163,140, 18, 19, 19,209,173, 91, 55,137, 64, 32, 88,220, 26, 81, 60,114,205,205,137, 68,184,246, 38, 87, 92, 21,205, 77,
+219,159, 29,185,146,137, 4,215,246,255,120,192,214, 39,120, 10,181,237, 83, 39,115,185,148,247, 75, 11, 35, 89, 94, 86, 86, 86,
+231,175, 95,191,110,241,234,171,175, 98,233,210,165,114,153, 76,102,168,201,122,217,145,171,106,115, 37, 70,101,243, 96, 26, 0,
+251, 22,104,110, 90,186,116,233,204, 5, 11, 22,224,218,181,107, 88,187,118, 45, 6, 13, 26, 4, 51, 51,179, 70,203,143,183,223,
+126, 91,210,173, 91,183,219,195,134, 13,139,153, 57,115,230,248,227,199,143, 59,236,222,189,155,255,206, 59,239, 8, 71,141, 26,
+229,244,233,167,159, 78, 28, 60,120,240,189,160,160,160,235,111,190,249,166,168,153,198,128, 34,132, 80,108,169,101,216,225,170,
+207,139, 0,232, 56,127,254,252, 32,138,162,142,207,159, 63, 63, 0,128, 37, 69, 81,199, 1,200, 1,200,171, 62, 11,106,189,203,
+ 9, 33,253,106,172,183,168, 75,163,250, 85,243,119,213,191,169,227, 63,106,127, 54, 40,130,213, 11,192,197,218, 27,112, 9,150,
+ 79,157,181, 66,244,108,207,215, 80,254,184, 1,116, 78, 26, 56, 5, 25,168,184,248, 43,180,151,142, 97, 66,215,174, 98, 49, 69,
+173,108,206,145,148, 74,165,224,243,249,136,139,139,195,195,135, 15, 49,120,240, 96,254,230,205,155, 77,189,188,188,126,232,214,
+173, 91, 76, 64, 64, 64, 71, 67, 12,139,139,139, 11,198,140, 25, 35,248,228,147, 79,218,137, 68,162, 40, 66, 8,207,217,217, 25,
+163, 71,143,230,207,157, 59,183,141, 72, 36,186,201, 48, 12, 95, 34,145, 52, 20, 29,250,131,174, 88, 44, 6, 0,158,171,171,235,
+173,176,176, 48,231,238,221,187,115,207,156, 57,131,162,162, 34,174,155,155, 91,204,254,253,251,219,119,235,214,141,123,249,242,
+101,148,150,150, 18, 67,117, 75, 75, 75, 33, 22,139,255, 96,176, 74, 75, 75,255, 96,188, 26, 35, 32, 32, 96, 74,251,246,237,111,
+134,133,133,217, 7, 7, 7,115,194,195,195, 81, 92, 92, 12, 39, 39,167, 91, 97, 97, 97,246,221,187,119,231, 68, 70, 70,162,184,
+184,216, 96, 77,129, 64, 0,103,103,103,140, 26, 53,138, 55,103,206, 28,123, 30,143,119, 83, 32, 16,192,201,201, 9,163, 70,141,
+226,207,158, 61,219, 94, 32, 16, 92, 55,176,201,144, 3, 0, 58,157, 14,111,189,245,150,145, 88, 44, 70, 74, 74, 10, 24,134, 1,
+195, 84,122, 82,101,118,238,221, 43, 55,239, 61,154, 53,237,173, 94,165, 21, 21, 21,191, 93,184,245,208,211,213,201,158,162, 72,
+ 27,182,188,169, 7, 51, 79, 11,112,208, 63, 41, 93, 45, 20, 24,217, 75,141, 45, 59, 0,121, 23,209,214, 86, 8, 16, 74,116,243,
+ 81,153, 17,104,210, 31,200,177,104,146,166,158,233,159,144,166, 22,106,196,222,198,182,118,142,200,205,205,133,131,179, 59, 42,
+ 32, 23, 68,222, 43, 53, 6,105,162,102, 21,190,190,190,193, 14, 14, 14, 54,109,218,180, 65, 78, 78, 14, 92, 92, 92, 96,108,108,
+108,230,239,239,223,191,217, 37,241, 5, 39, 33, 10,209, 29, 26,106, 61, 40,122, 25, 8,119, 53,184,217,254,228,182, 63,239,111,
+103,174,126, 58, 96,103,161,112, 7,238,189, 11,107,115, 1,118,206,247, 53,151, 75,133,205, 53, 89, 94,214,214,214,231,175, 95,
+191,110, 41, 18,137,112,251,246,109,120,122,122,226,235,175,191,150,155,153,153,253,157, 77, 86, 77,115,101, 14, 64, 5,128, 1,
+ 48,182,153,209, 16, 10,192,214, 21, 43, 86,204, 88,176, 96, 1,174, 94,189, 10, 59, 59, 59,100,101,101, 33, 56, 56, 56, 41, 63,
+ 63,191,193,122,201,211,211,211, 62, 46, 46, 46,237,211, 79, 63,245, 15, 13, 13, 21, 27, 25, 25,161,160,160, 0,219,183,111,199,
+252,249,243, 65, 81, 20, 8, 33,216,181,107,151,100,242,228,201, 65,241,241,241,105, 78, 78, 78, 6,117,223,168, 50, 85, 2, 66,
+136, 4,128, 17, 0, 9, 33, 68, 52,125,250,116, 1, 0, 97,149,185, 20, 1,224,177,133,217, 31,168,211,139, 0,176, 92,179,102,
+ 77, 8, 33,100,200,154, 53,107, 66,106,212,157,199, 27,168,111,107,154, 38, 0, 64,109, 13, 66,200,144,154,239, 53,127, 75, 8,
+ 25, 66, 8, 25, 82,243,247, 13,253, 95, 67, 6,235, 66,213,142,213,182,147, 29,109,218,118, 64,193,239,135, 32,230, 80, 47,188,
+232,132,187,112, 16,113,161, 37,196,171, 57, 71,209,216,216,248,249,139,166,105, 40,149, 74,112, 56, 28, 44, 94,188, 88, 52,125,
+250,116, 31, 62,159,127, 53, 56, 56,120,117, 99,134, 5, 0,110,220,184, 1, 23, 23, 23,106,193,130, 5,178, 94,189, 42,239, 98,
+239,220,185,131,246,237,219, 83,171, 86,173,146, 14, 29, 58,148,146, 72, 36, 6, 71,135,104,154,134, 88, 44, 70,239,222,189,169,
+221,187,119, 27, 11,133, 66,156, 56,113, 2, 57, 57, 57,120,245,213, 87,185,187,119,239, 54, 22,137, 68,136,136,136, 64, 97, 97,
+161,193,186, 20, 69,161,162,162,162, 78,131, 85, 87,100,171, 33,186,118,237,186,211,198,198,102, 99,104,104,168, 80, 44, 22, 35,
+ 60, 60, 28,133,133,133, 24, 51,102,140,238,167,159,126, 18,201,100, 50, 68, 70, 70,162,176,176,176, 89,185,252,198,141, 27,104,
+223,190, 61,181,112,225, 66,113,215,174, 93,181, 0, 16, 29, 29, 13, 87, 87, 87,106,225,194,133, 98,153, 76,182,161,123,247,238,
+ 59, 27,210, 96, 24, 6, 74,165, 18,247,238,221, 67, 66, 66, 2,114,114,114,144,157,157,141,226,226, 98,232,116, 58, 0,128,164,
+184,232,196,214,221,199, 98,140,196, 98, 73,103, 31, 87,199,235, 81, 15,178,140,196, 98,137,171,179,163, 27,176,148,125,156,211,
+ 31,175, 73, 10, 60,181, 43, 8,229,127,237, 65,137,121,240,128,177,124,100,159, 2,136, 22,160,184,232,211,217,158,251,203,229,
+ 82,107, 48,232, 8, 62,220, 9, 1,101,144, 38, 87,227, 2, 80, 1,103,110,235, 44,122, 12,248,128,159,154,154, 10, 62,159, 15,
+161, 80, 8,191,238,111,112,247,135,107,109, 0,248,130,135, 14,134,104,214, 68, 40, 20,126, 49,121,242,100,163,180,180,180,231,
+154,131, 6, 13, 50,146, 72, 36, 75,154,109,174,104, 73, 87,232,200,204,251, 9, 42,167, 85,123,148,238, 79, 83, 84,238, 32,152,
+ 13,173,214,175,165, 38,203,209,209,177,183,171,171,107, 66,155, 54,109,122,180,208, 92, 93, 13,251,233,128,157,185, 77,165,185,
+130,190, 12,224,136, 97, 99,101,134,157, 75,122,155,203,101,226,166,154, 44, 47,107,107,235,115,215,174, 93,179, 20,137, 68,184,
+117,235, 22, 4, 2, 1, 68, 34, 17,124,124,124,176,109,219, 54,185,185,185,249,223,197,100,153, 1, 24, 0,224, 77, 0,111,212,
+ 48, 87,206, 0,250, 2,232, 15,192, 6, 64, 4,128, 24, 3, 53,123,112, 56,156, 19, 29, 59,118, 76,231,114,185, 15, 66, 66, 66,
+ 62,154, 59,119, 46, 54,109,218,132,222,189,123, 63,157, 55,111, 30, 98, 99, 99,117,101,101,101,195, 0, 52, 88, 17,150,148,148,
+252,186,112,225, 66,147,215, 95,127,189,250, 59, 46, 95,190,140,189,123,247,194,200,200,168,166, 89,194,208,161, 67, 49,101,202,
+ 20, 51,181, 90,125,164, 33, 77, 43, 43,171, 87,194,195,195, 93, 1, 8,170, 12, 84,181,193, 50, 58,123,246,172,169, 72, 36, 50,
+ 15, 10, 10,146, 85, 45,151,188,254,250,235, 22, 92, 46,183, 7, 91,170,189, 64,157, 94,164, 62,131, 83,219, 0,213,181,174, 46,
+243,212,236,242,183,129,255,107,200, 96,245,174,202,232,127, 64,147,151, 9, 33,244,144,112, 40,136,185, 84,229, 59,135,130,152,
+ 98,192,205,207, 4,213,204,224,167,177,177, 49,164, 82,233, 31,140,150, 74,165, 66, 73, 73,137, 65, 70,163,186, 47,143,153,153,
+217,243, 74,219,216,184,114, 52,185,185,185, 57, 42, 42, 42, 64, 81, 20,140,140,140, 96,100,100,212,164, 8,150, 72, 84, 25, 17,
+142,140,140,196,149, 43, 87,192,229,114, 97,110,110, 14, 0,184,117,235, 22,238,222,189, 11,129, 64, 0, 11, 11,139, 38,233,106,
+ 52,154, 58,155, 8,213,106,117,147,154, 8,105,154, 70,121,121, 57,185,117,235, 22,238,221,187, 7,161, 80, 8,185, 92, 14,129,
+ 64,128,148,148, 20, 60,122,244, 8, 2,129, 0,114,185,188, 89,231, 71, 38,147,161,160,160, 0, 12,195, 84, 71,243, 32,147,201,
+ 80, 82, 82, 2,154,166, 13, 74, 39,195, 48, 72, 75, 75, 67, 78, 78, 14,146,147,147,145,157,157,253,220,100, 85, 55, 17,178, 52,
+145,203, 94, 38,160,120,175,102, 23,104,133,217, 37, 2, 19,235,246,253,128,156, 83, 0,197, 1,120,102,232,226,223, 22, 73, 25,
+122,163,216,100,181, 8, 90, 12,192,121, 55, 51,131, 52, 57,188,254, 89,133, 90, 97, 98,129, 92,230,225,221, 9, 89, 89, 89, 16,
+ 10,133, 16, 10,133, 8,232,242, 10, 18,210, 25,201,131,103, 42, 9, 8, 94, 53, 72,179, 10, 63, 63,191,118, 98,177,184,171,191,
+191, 63,149,153,153, 9,161, 80, 8,145, 72,132,174, 93,187,130,166,105, 31, 95, 95, 95,247, 38, 21,112,241,237, 4,224, 73,186,
+ 0,100,230,163,103,101,182,191, 68,170,220,134,142,120,195,124,195,193, 44,247, 71,207,202,157,161,214,205, 65,169,166, 83,115,
+ 77,150,147,147, 83, 47, 99, 99,227,227, 95,124,241,133,179, 80, 40, 60,213,166, 77,155,224,102,149,111, 66,206,247, 95,204, 28,
+107,103, 86,109,174,116,165, 0, 71, 12,112, 36,149, 38,203,218, 18, 43, 63,233,103, 46,225,243,254,207, 80, 77,177, 88,188,127,
+235,214,173,242,106,115,197,231,243, 33, 18,137,158,191,252,253,253,177,120,241, 98,185,185,185,249,190,151,156, 75,205, 81,217,
+175,234, 14,128, 35, 0,206,213, 48, 87, 46, 0,254,175, 42,106, 21, 5, 32,201, 64,205,110, 3, 7, 14, 12,127,250,244,233,224,
+152,152, 24, 69, 70, 70,134,251,236,217,179,177,113,227, 70,204,157, 59,119, 31, 33,196,237,208,161, 67,126, 55,110,220,240, 49,
+ 36, 34,150,145,145, 49,110,222,188,121, 57, 57, 57, 57, 0, 0,111,111,111, 20, 20, 20, 96,206,156, 57,152, 57,115,102,117,222,
+ 5, 0,100,101,101, 97,221,186,117,153, 25, 25, 25,147, 26,210,212,235,245, 41, 63,255,252,115, 87,181, 90,237, 88,101, 40,133,
+ 0, 36, 73, 73, 73, 38,165,165,165, 50, 14,135, 35, 53, 50, 50,146, 9,133, 66,163,201,147, 39,243, 31, 60,120,224,161,211,233,
+210,216, 66,237, 5,234,245, 34,117, 69,154,234, 91,214,220,237, 13, 53, 89, 77, 53, 88, 17, 0,122,254,193,192, 80,184,147,124,
+ 51, 2,230,158,254, 47, 70,176,184, 20, 36, 82, 25, 18,210, 82,192, 7,117,191, 25, 9,124,110,170,106,154, 44,165, 82,137,121,
+243,230,149,253,248,227,143,119,213,106,117,215, 75,151, 46,205, 55, 36,130,101,101,101,133,228,228,100,242,213, 87, 95, 21,157,
+ 58,117, 74, 87,189, 44, 37, 37,133, 44, 90,180,168,248,192,129, 3,164, 41, 77,132,213, 17,172,136,136, 8,178,100,201,146,194,
+244,244,116, 98,110,110, 14, 11, 11, 11,156, 61,123, 86, 55,127,254,252,194,248,248,120, 98,110,110, 14,115,115,243, 38, 25, 44,
+157, 78, 7,177, 88,252,130, 65,161, 40, 10, 90,173,246, 15,145,173,134,184,114,229,202,187,133,133,133,159,206,153, 51, 71,245,
+240,225, 67, 34,151,203, 33,151,203,177,103,207, 30,238,196,137, 19, 85,119,238,220,121,190,172, 57, 88, 90, 90,226,241,227,199,
+ 36, 36, 36, 68,117,238,220, 57, 30, 0,200,229,114,196,198,198,146,229,203,151,171, 10, 10, 10, 62,189,114,229,202,187,141, 20,
+ 56, 72, 72, 72, 64, 81, 81, 17,244,122, 61, 42, 42, 42,144,157,157,141,212,212,212,231, 6, 75,101, 36, 27,248,241, 59, 67,125,
+ 75, 85,170,178,235,119,227,146, 59,251,123, 90,149,170, 84,101,113,207,146, 31, 3, 75,217,217,195,255,112,241, 48, 54, 32,164,
+199,229,187, 37,166,253, 95, 27, 45,160,138,110, 0,218, 18,128,103, 6,240, 76,193, 21, 89, 96,208, 43,126,156,221,191, 21,217,
+128, 98,186, 65, 36,108,188,127, 11, 67,172,193, 48,193,103,111,149,155,245, 24, 60, 93,144,151,151, 7,154,166,159, 27, 44,137,
+145, 17, 94, 25,242, 54,189,235,183, 10, 27, 48,164, 59, 56, 28,131,251,204,240,249,252,207,223,121,231, 29,126,126,126,254, 11,
+154, 98,177, 24, 35, 70,140, 16, 74,165,210, 69, 6,239,250, 67, 15, 62, 50,133, 93,192,144,153,177,137, 42,219,159,175,168,220,
+102, 47,222, 37,246,234,216, 25,211,134, 91,137, 87,133,102,121,198,196,151, 57,131,214,207, 66,153, 58,128,108,107,154,201,106,
+211,166, 77,176,145,145,209,137,163, 71,143, 74,250,244,233,131,217,179,103, 27, 9,133,194, 83, 78, 78, 78, 61,155,122,154, 74,
+139,245, 31, 47,223, 16,154,121,231,224, 0, 64, 87, 92,101,174,254,247,202, 42,100,176,120,107,120,161, 86, 79,198, 26,170,169,
+ 82,169, 38,190,247,222,123,185, 71,142, 28,249,131,185, 18,137, 68,120,246,236, 25, 86,173, 90,149,151,151,151, 55,233, 37,231,
+ 82, 63, 0,209, 0,202,171,162, 17, 18, 84,142, 20,236, 10,224, 44, 0, 61,128, 76, 0, 74, 67, 5, 57, 28,206,220,111,191,253,
+150,171, 82,169, 48,101,202, 20,164,164,164, 32, 61, 61, 29, 11, 23, 46,124,198, 48,204,196, 42,205, 24, 0,143, 12,209,211,104,
+ 52,177,249,249,249, 67, 6, 14, 28, 88,144,159,159,143,142, 29, 59, 98,200,144, 33,176,177,177,129,173,173, 45,134, 13, 27, 6,
+ 87, 87, 87,228,230,230, 98,236,216,177,121,217,217,217, 3, 0, 52, 56, 10, 61, 55, 55, 55,254,224,193,131,241, 31,125,244, 81,
+ 96, 74, 74,138, 55, 0,133, 86,171, 53, 87,169, 84, 82,157, 78,103, 44,147,201, 44, 58,117,234, 36,159, 54,109,154,233,205,155,
+ 55, 61, 83, 83, 83, 75,154, 96, 48,255, 43,212,233, 69,154, 11, 69, 81, 39, 90, 18,169,170, 43, 2,102, 40,213, 53, 60, 85,235,
+253,127,153, 16, 88,188,247,240,222,114,129,147, 43, 76,220,125, 33, 17,137, 32, 22, 10, 32, 54, 53, 71, 57,195, 96,199,179,140,
+178, 82, 66, 22, 53, 35,241, 47, 68,174, 24,134,193,182,109,219,202, 87,174, 92, 89,144,145,145, 49,237,210,165, 75,190,183,110,
+221,186, 99,136, 17, 42, 42, 42,194,161, 67,135, 84,187,119,239,126,170, 82,169,252,249,124,190, 86,173, 86, 99,223,190,125,229,
+ 27, 55,110, 76, 44, 43, 43, 11,228,241,120,154,166, 52,191, 85,247,193,226,241,120,218,242,242,114,255,176,176,176,248, 19, 39,
+ 78,168,100, 50, 25,120, 60,158,182,172,172,204, 39, 52, 52, 52, 54, 44, 44, 76, 37,147,201,154,100,220, 24,134,169, 51,130,165,
+215,235, 33, 20, 10,155,212, 7,235,214,173, 91,219, 53, 26, 77,231,125,251,246,165,238,218,181,171, 92, 38,147, 1, 0,180, 90,
+109,224,222,189,123, 83,191,255,254,251,138,166,116,112, 7, 0,181, 90, 13,189, 94,143,208,208,208,138,253,251,247,167,234,116,
+186,192,234,101,187,118,237, 42, 15, 13, 13, 77,213,104, 52,157,111,221,186,181,189, 49, 45,189, 94,175, 47, 40, 40, 0,151,203,
+197,211,167, 79, 43,132, 66, 33, 56, 28, 14,226,226,226,158, 27, 44, 43, 75,115,207,238,129,222,238, 95,127,127, 40,194, 72, 40,
+ 20, 14,232, 29,224,241, 32, 46, 41,149, 16, 42,145, 45,107,234,170, 25, 32, 1, 5,113, 92, 74,133, 84,196,211, 82,200,248, 63,
+128,111, 86,101,176, 42, 95,182,118,246,184,249,168, 76, 10, 10, 2,168,181, 86,141,106,106,137, 17, 40, 72,238, 37, 65,202,229,
+139,169,140,140,140,231,145,166,106, 67,228,220,222, 3, 81,113, 37,198,160,136, 16,149, 67,235, 13, 46,168,140,141,141,185, 74,
+165,242,185,214,115, 77,103,103,142, 86,171, 29, 96,240,190,103,235, 21, 96,152,143, 31, 39,151,219, 30,189,162,114,157,181,120,
+151, 88,204,201, 7, 18, 55,193,203,213, 6,179, 39,249, 10, 22,238,200,246,186,249,160,172, 29, 40, 50, 13, 94, 37, 6,223, 93,
+180,105,211,166,135, 68, 34, 57,117,244,232, 81,137,145,145, 17,158, 62,125,138,142, 29, 59, 98,197,138, 21, 18,137, 68,114,210,
+209,209,177,119, 83, 78,211,245,199, 72, 42, 41,214,119,253,124, 91, 74,198,157,103,250, 74, 99, 69, 87,154,171,236, 66,130,247,
+190, 56, 86,144, 95, 84,254,198,181,123,186,243, 77,144,141, 46, 44, 44,124,245,139, 47,190,200,205,201,201,121,193, 92, 37, 37,
+ 37, 85, 27,129,222, 0,238,191,228, 92,106,132,202,206,235, 29, 0,180, 7,224, 11, 64, 7,160,184,202, 8, 53, 25, 79, 79, 79,
+127, 39, 39, 39,124,247,221,119,216,177, 99, 71,254,215, 95,127, 13, 66, 8, 92, 93, 93,101,205,213,204,202,202,186, 17, 27, 27,
+ 59,192,215,215,247,225,150, 45, 91, 82, 21,255,207,222,119,135, 71, 81,237,239,191, 51,179,189,164,145, 30, 8,129, 64, 72, 72,
+ 8, 37,244,222,164, 74, 23, 5, 20,165, 72, 85, 4, 47,136, 32,160, 72, 7,169,162, 20,165, 55,129, 0, 82,165, 72, 71, 66, 13,
+ 37, 9,164, 64,122,223,180,221,108, 47, 51,231,247, 71, 18,164,164,108,128,251,189,247,231,157,247,121,246,201,206,236,204,155,
+211,230,156,119, 62,159,207, 57,199,219,155, 27, 55,110, 28,198,142, 29, 11,119,119,119,118,221,186,117,169, 29, 59,118,140,122,
+242,228,201, 59,122,189,254,161, 61,205, 61, 47, 47,239,250,214,173, 91,111,117,239,222,221, 97,244,232,209,158, 91,182,108,241,
+122,252,248,113,109,189, 94, 95, 51, 55, 55, 87,113,229,202, 21,201,206,157, 59,189, 98, 98, 98,146,140, 70,227, 45,148, 31,208,
+253,191,138, 10,181, 8, 0, 85,169,208, 49,191,244, 87, 85,197,111,246,222, 91,238,119, 59,174,171, 16, 85,206,184, 57,152,136,
+235, 31,213, 43, 90,177,112,219,230,175, 70, 54,110, 40,171, 83, 55, 24,172,182, 8, 15,179,179,177, 51, 75,173,183, 18,242, 83,
+120, 34, 46,190,174,192, 98, 24, 6,103,206,156, 97,247,238,221,107, 33,132,252,162,209,104,230, 62,122,244, 72,103, 47, 15,199,
+113,204,152, 49, 99,180,133,133,133,135,179,178,178, 38, 62,125,250,212,220,161, 67, 7,230,195, 15, 63,212, 22, 20, 20, 28,163,
+ 40,106,220,221,187,119, 77,237,219,183, 7, 33,246,183, 99,138,162, 32, 18,137, 64, 81, 20,238,220,185,147, 20, 28, 28,220,232,
+198,141, 27, 63,199,197,197,125, 64, 8, 97, 34, 35, 35,211,194,194,194,154, 92,191,126,125,253,227,199,143, 71,112, 28,199,216,
+203, 91,102, 29,123, 94, 72,209, 52,253, 76,212, 81,213,244,185, 70, 70, 70, 70, 7, 7, 7, 7,223,186,117,107,199,248,241,227,
+123, 1,144,223,185,115,231, 81,104,104,104,195, 27, 55,110,236,248,228,147, 79,122,151,190, 65,218, 55,126, 91, 44, 24, 52,104,
+144, 94,173, 86,159, 46, 46, 46, 30, 21, 21, 21,165, 15, 11, 11, 43, 59,119,166,168,168,104, 84, 53,234,104,193,143, 63,254,248,
+109,105, 93,237, 88,179,102,205,167, 51,102,204,112,207,200,200,120, 38,176,114,243, 10, 46,180,123,119, 10,155, 95,164, 54,111,
+ 91, 51,115,168, 76, 42, 17,207, 93,182,237,146,149,121, 54,141,155,199,243, 16,179, 26, 16, 58,115,104, 55, 23,201,186,159,182,
+138, 70, 15,168, 39, 13,109,232, 87, 34,174, 68, 46,184, 29, 83,132,111,127, 56,200, 45,159,228,158, 8, 14,105, 96, 17, 91, 37,
+167, 82,160,129,209,154,251,105, 47,145,100,233, 47,211,252,219,247,251, 74, 18, 28,218,234,153, 16,122, 28,125, 7,107, 22, 79,
+225,150, 79,172,145, 8,142,202,132,205, 62, 43, 1, 0,216,108,182,161,203,150, 45, 59, 61,122,244,104, 69,163, 70,141,158,113,
+ 38, 37, 37, 97,249,242,229, 6,147,201,244,158,125,125, 6, 40, 92, 21, 52, 99, 89,214, 99,207,217,252,128, 47,191,152, 40,151,
+209, 5, 64,226,202, 18,241, 34,116, 66,179, 80, 55,124,251,133,151,112,250,210,227, 33,215,126,246,215,194, 42, 10, 6,144,105,
+ 15,191, 64, 32, 56,185,100,201, 18,185, 76, 38, 67,124,124, 60,100, 50, 25,164, 82, 41,154, 55,111,142,181,107,215,202, 63,251,
+236,179, 63, 58,119,238,172,188,124,249,178,173, 58, 34,171,117, 32,219,118,230,134, 39, 17, 43,166, 58,123, 53, 9,114, 67, 94,
+ 49,240,233,119, 39, 10, 11, 52,134,247,171, 41,174,158,137,172,162,162,162,158,211,166, 77, 59,187,125,251,118,215,224,224, 96,
+164,165,165, 97,248,240,225,249, 42,149,170,235,127,129,184, 2, 0, 29,128,154, 0,226, 80, 18,139,148,128,146,184,164,215,158,
+229, 25, 19, 19, 19,153,146,146,226, 61,118,236, 88,104, 52, 26,151, 97,195,134,225,233,211,167,136,139,139,187,247, 38, 9, 53,
+ 26,141,183,211,211,211, 27,127,249,229,151, 35,103,206,156,217,222,193,193,161, 46, 33,132,104, 52,154, 68,150,101,175, 1,216,
+ 11, 84,107, 31, 78, 2, 32,225,201,147, 39,137, 79,158, 60,241,220,177, 99,135,115,105, 25, 0, 37,129,253,234, 82,235, 29, 31,
+ 35, 81, 61, 75,212,237,255,196,189,255, 39, 24, 90, 23,237, 71,215,163, 46,127,232,143,226, 17,254,208,142,174, 79,217,179,208,
+104,185,187,109,135,133,133, 17,155,205, 70,206,158, 61, 75,250,244,233,163,235,208,161, 67,117, 22, 26,125,129,179, 75,151, 46,
+175, 44, 52,218,165, 75,151,211,173, 90,181,122, 97,161,209,206,157, 59, 71,119,238,220, 89,221,169, 83,167,167,246,164,179, 83,
+167, 78,143,219,183,111,175,235,212,169,211, 11, 3, 73,203,150, 45, 7,118,235,214,237, 5,147, 99,171, 86,173, 6,188,124,174,
+162,188,191,243,206, 59,105,113,113,113, 36, 53, 53,149,244,237,219,247, 89,199,223,189,123,247,180,251,247,239,147,184,184, 56,
+210,187,119,239,204,234,148,231,243,104,209,162,197,184,142, 29, 59, 94,127, 41,205,159,190,124,174, 50,206,142, 29, 59, 94,111,
+217,178,229,167, 47,159,171,198, 66,163, 21,166,211,219,219, 59,176, 89,179,102,185,107,214,172, 33,254,254,254,185,207,255,214,
+168,203,152,121, 69, 26,173,102,198,130,141, 7,202, 89,104,148,223,181,190,172,247,126, 20, 44, 34,127, 5,183, 39, 87,130, 79,
+ 62,222,229,247,104, 84, 79,133,233,238,222,222,132, 60,254,138,220, 56, 56,150,180, 13, 22,179,127,253,236, 27, 71,174, 52,252,
+131, 92, 13,236, 68,254, 40,119, 65,207, 87, 57,175,212,239, 72,174, 52,252, 35,102,135,223,163, 65,157,220,205,123,119,109, 38,
+ 9, 9, 9,228,216,145,189,164, 77,176,188,148, 51,248, 44,185, 18,220,213, 30,206,151,158,249,246,109,219,182,213, 30, 56,112,
+128,196,199,199,147,115,231,206,145,118,237,218,233,155, 53,107,214,213,222,188, 19, 2,138, 92, 14, 25,100,187, 24,116,109,246,
+112,101,209,167,189,164,166,225, 93,197,230,129,109, 69,150,158, 97, 34, 91,251, 96, 1,219,196,159,230,130,125, 65,122, 54,151,
+153,200,149,160,171,228, 90,112, 47,123,211,217,160, 65,131,212, 58,117,234,144,138, 62,129,129,129,170,178, 9, 52,213,173,247,
+214,129,240,123,167,165, 36,235,252, 47, 93, 73,255, 78, 14,249,109, 66, 5,221,222, 66, 91,106,230,230,230,150,183,125,251,118,
+226,233,233,169, 2,208,232,191,168,205,215, 0, 48, 16,127, 79, 99, 87, 2,232, 10,192,255, 13, 56,219,245,236,217,211, 26, 25,
+ 25, 73,158, 62,125, 74, 78,159, 62, 77,218,183,111,111, 67, 73,204,206, 63,246,121,255, 31,227,252, 71,154,227,254, 93, 8, 69,
+ 57,193,134, 97, 97, 97,164, 87,175, 94,134,203,151, 47,107,205,102,243,132,187,119,239, 30,123, 83,206,127, 71, 58,255, 29,156,
+ 93,187,118,189, 78,211,180,127,233, 20,224,204,243,231,207,135,149,138,194,235, 12,195,248,151, 90,247, 50, 47, 92,184, 16,246,
+ 79,203,251,243, 34,139,166,233, 51, 0, 76, 25, 25, 25,207,102, 59,185,135, 12,104, 91,195,197,169,107, 81,145,250, 94, 78,244,
+177, 63,254,137,121,127, 91,156,228,143,122, 98, 56,136, 91,128,197,172,168,167,250,186,115,183,230,213,235,215,179,157,112,199,
+193, 43,220,138,201, 30, 79,218,133, 40,146, 64,113,203,193,154,110, 81, 93, 82, 76,118,115,202,169, 86,128,112,214,253, 39,122,
+191, 25, 27, 10, 3,222,233,255, 41,115, 60,124, 51,247,195,100,215, 39,237, 66,148,169, 0,150,131,211, 71,216,203,249,178,200,
+146, 72, 36,127,140, 24, 49, 66,185,111,223, 62,131,209,104,236,119,239,222,189,139,213,201, 59,185, 30, 84, 27, 54,106, 49, 64,
+124,171, 46, 54, 58, 1, 54,110, 33,213, 45, 54,245,191,161,222, 91, 7,194, 79,225, 32, 57,161, 55,217,166,217,105,185,178, 39,
+157,205, 92, 92, 92,118, 23, 22, 22, 14,179,211,114,245,127,153,119,119,148,172,115, 37, 40, 29,107,162, 81, 69, 12,147, 29,156,
+ 29, 24,134,249,186, 94,189,122, 77,158, 62,125, 26,197,178,236, 15, 40,153,117,246,143, 31, 59,254, 71, 56,121,129,245,166, 21,
+208,161, 67,135,187, 44,203,158, 22,137, 68,139, 47, 95,190,108,226, 27, 31,207,201,115, 86,159,243,121,145,117, 55, 78,231,191,
+116, 79,129,223,191,134,185,164,218, 33,174, 42,231, 44, 21, 89,183, 98,245,117,150,239, 45,246,155, 62, 76,153,106,135,184,178,
+ 43,239, 97, 97, 97,237,165, 82,233, 78,131,193, 48,206, 14,113,245,170,192,122, 20, 44, 66,161,181, 38,108, 76, 40,104, 84,188,
+213, 14, 71,244, 16, 50, 81,200, 66, 14,245,254, 35, 11,223,150,120, 78,158,147, 23, 88,255,215,248,143,172,122,124,237,218,181,
+230,124,209,243,224,241,134,111, 71,125,158,154,201, 31,245,238,192, 65,188,172,121,160,108,202,225,197, 50, 61, 56, 42, 29, 20,
+183,182, 10,113, 85, 21,231, 45,200,173,203, 90, 5,202,166, 29, 89, 44,211, 3,200, 6,193,154, 42,196,149, 93,136,140,140,252,
+ 11,246,187,137, 94, 77, 95,240, 35, 11,128, 36, 66,144,140,239, 43,121, 65,252, 14,132,162,248,224, 97, 30, 60,120,252,143, 9,
+ 44, 30, 60,120,188, 69,145,245, 40,248, 54,242,153, 25, 96,225, 15,137, 45, 5, 69,182,108,170, 79,138,249, 13, 57,111, 34,159,
+154, 10, 14,129, 16,219,158,160,200,252, 70,156,111, 61,223, 37,226,169, 98, 1, 53,159,111, 27, 60,120,240,224, 5, 22, 15, 30,
+ 60,222, 68,108,148, 88,117,210, 75, 63,255,181,156, 60,120,240,224,241, 63,213, 55,163,226,153, 0,213,241,173,190,206,108,130,
+ 40,158,147,231,228, 57,121, 78,158,147,231,228, 57,255,231, 56,171,226,230, 99,187,254, 77,194,139,231,228, 57,121, 78,158,147,
+231,228, 57,121,206,255, 61,206,127, 20,248,141,116,121,240,224,193,131, 7, 15, 30, 60,222, 50,254,163, 49, 88, 50,215, 6,222,
+ 16,208, 77, 40,142, 52, 4, 0, 66, 83,143, 97,227, 30, 24,242,227,179,222,152,220, 35, 84,174, 20, 50,123,181, 86,246, 67,228,
+ 70,233,223, 82,146, 59, 0,240, 67,201,222, 81,215,248,230,195,131, 7, 15, 30, 60,120,240,168,150,192,106,208,118,208, 85,133,
+ 76, 17, 0, 0, 28, 33, 96, 57, 64, 83,152, 27,145,250,240,207,193, 0,224, 29,210,237,136, 88,225,214,150,227, 8, 56, 66, 96,
+227, 8,108, 38, 67, 66,222,163, 83,118,237, 60,175,112, 15, 28,220,237,157,238, 67,250,245,123, 55,168,113,104,227,250, 0,240,
+ 48,234,225,147, 19, 39, 78,198, 94,248,147, 58,172, 83,197, 29,121,147,140, 41,133,194,121, 45, 91,181,238,117,251,246,205, 57,
+ 90,224,155,183, 84, 94, 34,114,173,239, 46,170,195,169,238,124,211,225,193,131, 7, 15, 30, 60,120, 84, 91, 96, 41,100,138,128,
+ 11, 71,183,122, 28,185,154, 6, 0,120,167,185, 23,190, 95,181,125,208,150,135,127,198, 2, 64,219, 78,125, 2,231,126, 57, 10,
+215,163, 85, 32,132,160, 89, 64, 13, 12,250,232, 51,187,254,169,212, 51,184,229,208,161,239,125, 56, 99,198,244, 1, 9, 9, 9,
+201,251,246,237,187, 10, 0, 29, 59,117, 10, 88,178,100,201, 7, 43, 93,106, 72,246,135, 31,202, 48,230, 60,122,173,253,131, 20,
+158,245,220, 26, 6, 5,124,186,247,215, 31, 4,221,250, 14, 31,155,106,213,172,209,229, 60,205,123, 29, 46,113,173, 16,127, 39,
+161,232,123,138,166, 5, 38,109,129, 7, 0,184,248, 54, 59, 33,113,240, 96,165, 82,217, 67,157,193,176, 51,247,209,233, 45,224,
+ 55,236,228,193,131, 7, 15, 30, 60,120, 84, 37,176, 0, 64, 41, 21, 32, 54,169,196, 91,231, 44, 7,198,127,242, 30,114,114,178,
+ 3, 45, 54, 14, 35,135, 13, 70,100,108, 22,226,146, 84, 32, 4, 8,172,101,247, 94,194, 96,192,181, 24, 51,118, 76,231, 51,103,
+207,222,154, 55,119,222, 46,138, 66, 4, 0,108,254,229,215,182,223,126,247,237,184,145,159,140,236, 17, 30, 30, 30, 13,224,181,
+ 4, 22, 45,114, 94,179,124,241,247,202,140, 60,163,241,139,233, 95, 49, 51,190,156,186, 18,192, 39,175, 35,174,130,125,107, 45,
+190,122, 54, 92, 46,151,203,177,101,203, 22, 9,112, 20,243,103,140,145,190,219,175, 31, 88, 48,237,126,248,121, 95,147,179, 98,
+241, 88,189, 94, 63, 56, 63,254,207, 44,190, 73,241,224,193,131, 7, 15, 30, 60, 42, 21, 88, 44, 71,240, 56, 49,187, 68,180, 48,
+ 2,188,219,222, 9, 43, 23,125, 13,131,137,197,253, 68, 53,126,255, 43, 13, 38, 93, 17, 8, 1,218,135,122,148,103,195,121, 97,
+170,229,202, 47,100, 97,140, 88, 56, 44, 34, 78, 81,167,134,139,139, 75,252,173, 93,186,111, 63,202, 9, 22,216, 44,119, 23, 29,
+111,153,168,112, 16,183, 59, 24, 30, 30,210,191, 95, 63,177,163,163,211, 76,145,115,143, 90,156,209, 50, 93,157,114, 89, 93, 17,
+231,203, 80,120,134,116,238,255,110,223,119,189,188, 60,217, 17, 75, 34, 30,255, 52,165,121,237, 6,129, 13,187,196, 89,245,157,
+117, 57,113,151, 43,184, 45,170, 60,113, 85,223,219,115,241,229,211,225,114,163,209,136,196,196, 68,228,231,231,151,252, 72, 81,
+160,105, 6, 53,189,189,177,126,233,116,249,190, 35,141,155,207, 91,186,241, 40,128, 86,248,187, 20,254, 29,211, 76,121, 78,158,
+147,231,228, 57,121, 78,158,243,159,202,249,143, 66,217, 44,194,114,221, 91, 79,210,242, 17,155,152,133,176,134, 53, 81,191,142,
+ 23,110,197, 23, 98,239,133, 52,108, 59,155,140, 11, 15, 84,224,132, 14,200, 46,166,144,144,146,131,184,228,188, 42,125,100,140,
+ 88, 56,108,218, 10,245,140, 16,127, 77,155, 75, 7,166,192, 71, 25, 31,242,245,170,162, 41,140, 88, 56,204,195,203,121,223,140,
+169, 19, 63,114,144,203,196,102,147, 25,117,235,248, 74, 39,141, 27, 51, 90,164, 84,236,179, 55, 51,110,110,193, 10,177, 76,177,
+107,241,183,211,165,171,143,196,167,234,204, 68, 23,126, 61,243,233,140, 89,223,106, 24,161,236, 23, 55,183, 96,133, 61, 60,226,
+ 90, 33,254,126,174,174,139,175,157, 9,151, 91, 44, 38,100,102,102,194,108, 54,195,102,179, 61,187,134, 0, 40, 54,216,144,152,
+101, 64,231, 78,237,153,176,102,141, 26,186, 55,236, 51,129,111, 82, 60,120,240,224,193,131,199,107,225, 31, 21,106, 83,225, 50,
+ 13, 58,131, 46,225,227, 9, 51,114, 3, 28,178,204,131,187, 6, 3, 4, 80,101, 37, 35,230,214, 25,196,223, 61,139, 98, 85, 42,
+ 8, 1,234,212,169, 13,145, 33,209,188,121,211,134, 92,206,102, 76,168,136,111, 64, 15,239, 90, 9, 25, 10,122,197,140,218, 17,
+241,113, 89,110,147,103,108, 71,124, 92,150,219,138, 25,181, 35, 18, 50, 20,180, 92,196,182,251,100,248, 64,106, 96,191,222,248,
+250,235, 25, 24,216,175, 55,102, 76,252,128,146,138,133,109,236,205,140, 81, 44, 93, 54,107,222, 2,135,236, 34,139,249,102,156,
+198,164,148,203, 37,127, 61,214,233, 77, 68,102, 25, 48,108,188,202, 36, 18, 44,176, 71, 92,121, 59, 58, 46,190,254,231, 33, 57,
+ 33, 4,233,233,233,176, 88, 44,176, 90,173,176, 90,173,207,174, 43,210, 90,145,170, 50, 32, 37, 87,143,168,100, 13,250,244,238,
+ 45, 23, 8,197, 31,241,207, 7, 15, 30, 60,120,240,224,193,163, 66,129, 21, 31,241,123,199,200,243,187, 61,243,114,114,212, 10,
+137, 0, 2,154, 70,110,124,167, 94,155, 0, 0, 32, 0, 73, 68, 65, 84,250, 83,236, 92, 53, 21,225, 63, 77, 71, 81, 86, 2, 8,
+ 1,100, 34, 6, 38,109,190, 58,251,126,184,103,126, 37, 51, 8, 41, 88,123,252,188, 59,169,110,114, 22,113,218,123, 90, 43, 4,
+128,189,167,181,194,228, 44,226,244,243,238,164,186, 98,162, 2,199,178,232, 55,240, 61,236,218,177, 5,109,187, 13, 68,248,149,
+ 84,232, 13, 22,187,246, 63,147,120, 52,168,227,225,229,245,222,180,145,221, 29, 90, 5,186, 40, 27,248, 58, 51,140, 80,100, 19,
+ 11, 37,220,241, 59,234,140, 94,253, 6,211,114,133, 99,111,137, 71,131, 58,149,241, 56, 9, 69,223,255,117,246,144,156, 97, 24,
+164,166,166,194, 98,177,192,108, 54,195,100, 50, 61,179, 96,105,244, 86,100,228, 27,144,166,210, 35, 85,165,199,163, 84, 13,196,
+ 10, 23, 88,173, 86,126,225, 53, 30, 60,120,240,224,193,131,135,125, 11,141,102,230, 22,160,134, 3, 3,119,159,186,248,112,234,
+ 74, 0, 0,203,217, 64, 80,178, 60,131, 61, 54, 61, 2,225,185,207, 71,214, 77,172,227, 77,169, 63,234, 35, 55, 0,192, 71,125,
+228,134, 58,222,148,250,243,145,117, 19,245,172,139,133,101, 89, 92,139,206,197,138,253,143, 48,111,251, 3,156,185, 99,127,204,
+184, 64, 40,155,182,124,233, 18,185,128,161,168,232,148, 98,109, 86,129, 77, 43, 18, 9, 45, 66,177,192,170, 53, 83,134,100, 21,
+155,223,251,253,201, 73, 12, 35,156, 92,101, 90, 9, 7, 66, 8, 76, 38, 19,204,102,243,179, 79,153, 5,171, 64,107, 65,102,190,
+ 17,169, 42, 3,210, 74, 63, 57,133, 6, 16,194, 79, 36,228,193,131, 7, 15, 30, 60,120,188, 40,176,202,221,157,158, 3, 16,159,
+172,130, 68,192,161, 86,237,250,127, 95, 65, 0, 66, 0,171,141,179,235, 31, 29, 59,151,149,238, 95, 83, 71,102,174, 76,109, 27,
+218,208,245,193,164, 17,190,143, 67, 27,186, 62,152,185, 50,181,173,127, 77, 29,177,114, 98,150, 16, 2,194, 17, 16, 66, 64, 8,
+192,113,246, 11, 22,138, 98,218, 52,107,232, 39,248,126, 95, 66,202,228, 13,113,143, 41,129,192, 42, 22,139,109,158, 78, 50,170,
+150,155, 76, 80,108,130, 49, 40, 52,204, 74, 1, 97,149,241,168,173,150,239,218,247,122, 95,111,177,216,224,235,235, 11,179,217,
+252,204, 69, 88,102,193, 42,210, 90,144, 81, 96, 68,154,202,128, 84,149, 1, 6, 35,139,135,143,147, 65,209, 12, 31,244,199,131,
+ 7, 15, 30, 60,120,188, 62,202,213, 34,255, 63, 11, 44,234,185,207, 43,240,243,245,196,205,168, 20,212,246,148,192,209,201, 1,
+143,159,164,131,102, 4, 96,104, 10, 54,214,254,114, 32,102,235,254,213, 51,157, 86,166,102,177, 55, 54,236,126,154,144,154,197,
+222, 88, 61,211,105, 37, 49, 91,247, 3, 37,130,141, 35, 4,220,115,127,237,230, 38,156,135,155,147, 68,112,251,137,182,128, 98,
+ 4, 38,145, 80, 96,242,118,149, 80,222,110, 50,129,175,171, 76,172,144, 10,105,111, 79, 79, 14,132,120, 86,198, 99, 78,143, 73,
+204,214,104,230,116,236,249,158, 94, 40, 20,194,223,223,255,153, 5,171, 76, 96,149, 88,176, 12, 72, 85,233,145, 93, 96,132, 76,
+ 66,227,126,196,121, 61,203, 90,119,242,207, 6, 15, 30, 60,120,240,224,241, 90,168, 84,139,252,255,134,170,183,202, 33, 4, 10,
+185, 12, 28, 45,197,181, 59, 79,208, 48,184, 9,182, 31,187,133,250,161,173,145, 85,108, 3,169,198,118,134, 51,126, 52, 68, 2,
+136, 28,208, 67, 94,107,112,159,154, 61, 8,132,231, 54,252,166, 73, 7,128,160, 54, 40, 21, 86, 37,150, 43,142,148, 44, 19, 81,
+141, 90,201, 76,205,213, 41,235,122, 41,240, 40,205,108,114,144, 75,109,206,114,145,192,221, 73,204, 56,202, 4, 2,129,136,166,
+139,138, 84,197, 0,149, 89, 21,151, 57, 61, 38, 49, 21, 33,115, 58,245, 25,190,248,234,233, 3,242,122,245,234,225,254,253,251,
+207, 92,132,122,163, 13, 84,177, 5, 66, 25, 65,131,154, 74, 60,142,188,202,230,231,102,196, 20,198,157,222,194, 63, 31, 60,120,
+240,224,193,131, 7, 15,187,212, 17,199, 17,184,187,185, 64,162,116, 66,162,202, 12, 45,220,161, 54, 80,224, 88,128,181, 85, 42,
+130,202, 13,250, 62,118, 46, 43,253,232,185,188,173,199,206,101,165,191,168,229,254,118, 15, 18, 66, 42,114, 17,134,150,175, 3,
+217, 63, 78,156,187, 86, 48,168,141,135, 51, 45, 20, 26,196, 18,198, 34,147, 10,173,114,137, 0, 30, 78, 34,113, 45, 23,145,228,
+210,201,223,104,138, 35, 23,236,225, 52,167,199, 36, 38,229,230,206,233,214,111,132,222,211,203, 11, 35, 71,142, 68,237,218,181,
+ 1, 0, 53, 20, 52,252, 92,104, 8, 76,217,184,124,108,171,238,241,221,139,119,193,154, 6,227, 69,179, 38,191,203, 58,207,201,
+115,242,156, 60, 39,207,201,115,254,143,194,174,205,158,235,121, 43, 16, 80, 83, 1,163,217, 19, 6, 51, 11,157,201,134, 98,189,
+ 21,106,189, 21,201,217,122,196, 93,122,243,132,144, 82,129, 5, 66,129, 35, 4,160, 74,220,132,196, 78, 67,161, 78,168, 89,185,
+124,201,247,195, 15, 28, 60, 66,190,232,235, 93,235,102,130, 33, 77,194, 8,205,114, 9, 45,112,148,209,108, 82, 98, 82,230,217,
+ 19,191, 53,210, 75,245,163,236, 77,147, 57, 61, 38, 49, 30,152, 19, 20,214,237,123, 16, 8,204, 6,181, 98, 86,251, 16,156, 57,
+125,210, 32,190,118,215, 74, 9,196, 81, 28,107,217, 93,106,185,226, 35,220,121,240,224,193,131, 7, 15, 30,246, 9, 44,189, 65,
+159,208, 99,200,167,165, 27, 62, 19,176,108,137,101,137, 45,115,229,113, 4,172,197,144,240,166, 9, 97, 57,238,214,198,237,251,
+251, 54,109,214,154, 9,241,115,128,166, 40, 15,119,110, 70,216, 8,199, 69,216, 69,144,146, 98,178,121, 72, 63,120,255,189, 65,
+191,141,157,248,133,182, 99,231,174,114, 87, 87, 71, 91, 94,110,190,102,231,150, 3,133, 71, 14,236,105, 68,113,220,199, 72, 73,
+ 49, 85, 39, 93,230,244,152, 68, 51, 80,182,190, 85, 55, 32,164,179, 46,243, 65,127, 29,112,129,111, 62, 60,120,240,224,193,131,
+ 7,143,215, 18, 88, 9, 55,126,239,248,127,145,144,130,130,156,145,187,127, 59,188,104,207,129, 99,237, 77, 22, 75, 77, 14, 76,
+ 26,107,181, 94,150, 20,231,127,107, 47,135, 46, 55, 54, 6,126,126, 45,126,253,105,229,151,191,252,188,186, 59, 56,182, 62, 40,
+ 42,137,226,200, 5,173, 84, 63, 22,153,213, 19, 87,229, 32,143,234,112,170, 39,128, 60,190,233,240,224,193,131, 7, 15, 30, 60,
+ 94, 91, 96,253, 95,161,240,233,173,226, 66,224,139, 55, 38, 74, 73, 49,105,129,165, 40,249,188,109, 68,129,223,127,137, 7, 15,
+ 30, 60,120,240,224, 81, 5,104,190, 8,120,240,224,193,131, 7, 15, 30, 60,222, 46, 40, 84, 60, 19,160, 58,150,154,215,153, 77,
+ 16,197,115,242,156, 60, 39,207,201,115,242,156, 60,231,255, 28,103, 85,220,188,167,232,223, 36,188,120, 78,158,147,231,228, 57,
+121, 78,158,147,231,252,223,227,252, 71,129,119, 17,242,224,193,131, 7,143,255, 57,184, 54,232,175,116,109,208, 95,105,239,245,
+110,193, 67, 61,221,130,135,122,242, 37,199,195, 94, 8,248, 34,120, 43,144,160,100,219, 70,203,127, 42, 1,206,206,117, 29,109,
+ 14,110, 71,104,206,180, 92,147,254,240,220,219,206, 95, 72, 72, 72, 51, 0,136,137,137,185, 7,224, 77,103, 99, 66,238, 17, 56,
+194,197,209,121,130,133, 51,179,122,157,126,163, 46, 39, 62,252,109, 38,216,205, 45, 88, 97,150,200, 86,128, 34,125, 64, 64, 19,
+154, 58,207,104,172,255, 82,171, 31,168, 43,187,207,119,192,146,134, 99,135,190, 59,119,107,248,201, 69,105,199,190,121,252,242,
+239, 46,189,127,116,248, 98,100,247,153, 63,237, 63,177, 60,255,248,215, 90,190,233, 87, 31,190,237, 71, 56,219, 4, 94, 76,214,
+229, 85,249,213,185,175,102, 96,155,104,161, 80,232,110,177, 88,114, 51,227,111,218,245,246, 92, 43,168,109, 36,195,208, 62,172,
+141, 75, 79,143,139,104,193,151,126,213,144,121, 7, 53,163, 88,246,107,194,177, 66, 14,204, 26, 83, 94,194,181, 55,225,243,246,
+246,150, 57, 57, 57,117,114,116,116,244,149,203,229,210,194,194, 66, 67, 97, 97, 97,106, 74, 74,202, 5, 0,182,255, 68, 30,221,
+ 66, 6,206,102,104,124, 87,250,253,251,188,152,163, 75, 43,191,126,192, 34,138,178,206, 46,253,190, 52, 47,230,216,220,255,134,
+186,242, 8, 29,220, 26,132,251,146,166,153,118, 44,177, 45, 81, 69, 29,219, 80,157,251,219,180,105, 51,200,106,181, 74,202,142,
+133, 66,161,233,198,141, 27,191,243, 79,193,127, 72, 96,213, 12, 30,234, 98, 21,144,249, 2,134,126,143, 35,196, 33,251,126,184,
+226,191, 57,131,181, 91,141,188, 67,211,116,173,231,207,113, 28,151,158,122,107,247,219,234,108,107,173,154,214,252,235,156,124,
+131,230,135, 61,143, 23, 86, 36, 62, 60,154, 14,191, 78,209,148, 63, 69, 81,160, 41,128,161, 41, 0,200, 76,187,181,167,188,205,
+167,189, 29, 21,130, 64,141,206, 22, 5,160,202, 65, 72, 90, 35,192, 71,224,226,121,185,203,224, 41,117,239,156,217, 30,204, 90,
+ 44,221,117,185,177, 49,111, 33,111,238,245,235,215,111,201, 48,140,235,148, 41, 83, 68, 0,176,102,205,154, 0,150,101,243,159,
+ 60,121,114, 27,128,234,181,196,149,123,208,200,117, 63,124,191,171, 79,159, 62,200, 84,233,176, 98,205,134, 46,167, 79, 28,120,
+255,173,137, 44,239, 48,153, 77,204, 68,125,246,229,183,181,250,118,109, 41, 40,210, 90,113,234,194,141,145,225,219, 86,116,115,
+ 66,147,198,149,137, 44, 78, 95, 52,215,211,129,244,230,244, 69, 0, 48,226,149,246,175,180,190, 83, 67,142, 62,222, 18,193,253,
+124,224,112,149, 73,105,241,241, 25,161, 72,228, 71, 81,116, 73,189, 51, 20,232,210, 54, 96,179,154, 83,158, 92,219,222,235,191,
+162,163, 14,251, 40,155, 2,229, 74,151,166,143,162, 0,154,166, 33,160, 0, 16,162, 73,140,216,225,250, 22,254,141, 83,104,128,
+115,163,246, 1,186,173,151, 19, 11,148,130, 78,211, 78, 82,132,222,144,122,117,245,125,123,110,150, 74,165, 46,199,143, 31,119,
+239,221,187,183,147, 71,163,129,151,237,185, 71,204,104, 67, 78,156, 56, 38,234,221,187, 87, 53,218,103, 96, 15,208,244,110, 10,
+ 16,114, 28, 89,195,112,228,128, 54, 63,238, 9,170,185,152,176,123,163,129, 11, 64, 33,216,238, 27, 8, 30,169,162,143,126,251,
+154,101,203,200, 60,130, 70,201,164,210, 25, 1,129, 13, 3,147,147,158,198,105, 52,234,213,134,220,184,173,165, 47,127,118,131,
+178,177,211,206, 94,184, 62, 84, 32, 20, 82,189,186,182, 84,152,128, 94,213,229,120, 30,158,158,158,131,214,175, 95, 95,175,109,
+219,182, 0, 0,155,205,230,120,240,224, 65,175,133, 11, 23, 42,226,226,226, 14,191, 14,167,143,143, 79, 77, 39, 39,167,218, 50,
+153,172, 38, 0, 24, 12,134, 12,181, 90,157,154,153,153,153, 81,101,122,154, 14,117, 35,172,117,193,233,195,191, 8, 0,160,215,
+144, 9,139,234,116,158,225, 66, 49, 66, 67,121,215,179, 54,179,194, 84,152,244,229,249,227,219, 41, 0,232, 62, 96,244, 44,183,
+224,161, 63,229, 61, 10,207,249,143, 60,172, 67,135, 50,110,241,150, 65, 20,161,254, 21,214,188,121,155, 33, 3,251, 32,164,190,
+ 15, 6, 13,159, 52, 3, 64,181, 4,150,213,106,149,132,135,135,215,162,105,154,177, 88, 44,198,225,195,135,231,190, 73,210, 2,
+218,127,124, 29, 20,229,107,177,217,126, 77,185, 81,127, 17, 48,159,123, 57,237,222, 73,130, 57,160,232,113,132,227,210,178,239,
+253,214,142, 23, 88,165,112,109,208, 95,105, 21,144,168, 46, 29,219,184,206,158, 52, 88,188,233,192, 85, 28, 3,149,145,117,255,
+ 96,205,255,214, 12,210, 52, 93,235,232,222,245, 30, 50, 9, 3, 0,208, 26, 88, 12, 25, 57,165,234, 7,184,197,135,151, 64, 33,
+168,204,135,202,178, 54,169, 64, 32, 52, 82, 0, 64,149,204, 14,144,201,196, 55,166,183,137, 85,143,238,239,255,241,215, 63, 69,
+238, 0,224, 12, 32,187,220, 78,139,166,107,253,182,109,141, 71, 77, 87, 41, 4, 12, 5,173,193,134,193, 31,255,139, 45, 79,176,
+109,157,211,118,193,200, 62,117,134,121,244, 62, 52,164,168,216,252, 71,101,233, 84,120, 6, 55,148, 59,185,159, 27, 50,126,129,
+143, 1,142,152,187,104,181,199,245,179,225, 87,179, 50, 82, 44,169,233,233,122,155,197, 26,155, 95,144, 53, 93,155, 21, 31,111,
+111, 71,173, 84, 42,235, 41,149,202,166, 77,154, 52,145,206,152, 49, 67,216,165, 75,151,103, 63,142, 31, 63, 94,116,233,210, 37,
+239,149, 43, 87,246,125,240,224,129, 81,171,213,222,215,106,181, 79, 1,176,246,214,137,151,151,251,231,239, 13,234,143,110,239,
+125, 6,150,163, 48,110,242, 52,156,249,227,240, 68, 0,111, 69, 96, 41, 25,250,251,113, 83,190,169,213,185,109,115,193,178,131,
+ 9,112,146,139,208,171,117, 11,129,132,153,233,253,219,182,149,171,161,198,152,242, 44, 87,156,190,104,110,168,155,101,248,128,
+118,254, 56,246,155,101, 56,186,127, 5, 90,238,252,204,146, 85,175,247, 20, 7, 9,155,187,190,166, 51,227, 33, 97,115,215,215,
+235, 61,229,207,167,167,215, 23, 87,150, 22,161, 72,228,183,245,167,197, 13,106, 40, 69, 96, 24, 10, 2,154, 6,195, 80, 48,153,
+ 89,140,156, 52,251,109, 53,115, 70,230,209,160, 47, 13,140, 70,201, 72,184,221,144, 27,127,170, 58,117, 66,209,140,235,193,109,
+ 43, 5, 30, 78, 98, 48, 12, 5,134, 46,249, 36,101, 27,240,197, 87,243,157,222, 84,168,247,105,239,209,242,171, 97, 65,189,218,
+132,214,104,178, 63,130,114,110,211,103,152,107,158, 81, 54,234,183,163,151,134,147,142, 95,222, 36,132,251, 33,253,218,186,179,
+149,145,152, 76,166,156, 94,189,251, 56, 82, 2,133,252,207, 35, 59, 58,149,109, 54,111,101,185,191, 55,135, 39, 64,217, 75, 12,
+ 71,128,241,159,142, 69,175,222,125,244,156,141, 75,175, 70,167,177,251,244,159,215,220,141, 86,130, 85,235,183, 44,208,169,243,
+ 22, 36, 62,118, 77,214,170,243,190, 52,228,198, 31,179, 95,169, 32, 56,238,250,193,193,123, 79, 68, 32, 52, 36, 24, 44, 87,178,
+191,106, 96, 45, 5,246,157,188,129,134, 65, 13, 75, 22,111,230, 8,130,124,149,232,252,238,199,175, 89,188,157, 5, 10, 79,213,
+190, 65,195, 70, 15, 29,252,222,112, 56, 59, 42, 97,182,152, 2, 47,156,253,227,151,141,235, 87,180,215,102,199,142,170,142, 56,
+228, 56, 86,252,247,119,171, 20,128, 16,128,249,117, 43,223,199,199,199,189,101,203,150,207,142,109, 54, 27,234,214,173,139,140,
+140,140,160,106,191, 8,120,120,200,125,124,124,222,157, 62,125,186, 71,215,174, 93,133,238,238,238, 0, 0,149, 74, 85,243,226,
+197,139, 97,171, 86,173,202,205,204,204, 60,153,155,155,171,175, 80, 84,112, 70, 17, 67, 4,140, 68, 34, 43,213,181,160,103, 76,
+249,176,137,187,187,123,185, 47,199,249,249, 5,226,239,190,251,150, 18, 8,132, 37,215, 19, 66, 19,142,173,112,143,145,182,109,
+219, 14,176, 88, 44,210,242,126,203,179,185,247, 53,114,226, 97, 40,221,204, 88,192, 48,133, 89,247, 15,185,219,253, 32, 53, 30,
+208, 83,240,148,108,236, 63,112, 96,157, 65,125,187,192,219,221, 9, 23,110,196, 98,234,156, 85,176,218,216,181,175,213,121, 48,
+140, 32, 55, 55, 55,217,197,197,197,235, 45,140,183,254, 71,247,254,232,113,241,234,157, 89, 63, 73,126,155,100,182,142,178,150,
+109,127,199,114, 4,242,124,145,176,211,192, 30, 14,174, 53, 3,101, 91,126, 90, 38,228, 45, 88,207, 87,132,152, 89,216,161, 93,
+ 75,215,217,211,198,138, 23,110,185,140,136,179, 39, 13, 89,247,195,223,138,184, 82,186, 7,182,165, 24,193, 4,138, 97, 20, 20,
+ 77,137, 57,150, 75,179,153,205,139, 12,249,241, 89,111,202,205,114,192,161,191,170, 41,204, 9, 9,248,229,231, 85, 30,158,206,
+ 18, 24,204, 54,140,249,124, 30, 54,175, 93,224,224,238, 36,134,201,194, 98,251,209,219,121, 77,116,171,201,232,190,254, 31, 47,
+222, 26,125,248,135,221,143, 15, 87,214,137,209, 20, 13, 15, 39, 9, 22,237,139,133,163, 92,136, 26, 74, 49,104,186,124,113, 53,
+186,127, 9,103, 81,177,217, 6, 64, 92, 81,231,166,240,106,212,209,193,205, 39,124,240,167, 11,220,227, 85, 20, 8, 49,227,169,
+147, 4, 67, 70, 78,114,174,239, 37,131, 66,202, 32, 57, 45,171,238, 87, 51,103,182,136, 34,116, 75, 83,118,108,106, 85,217,174,
+ 83,167,206,144,126,253,250,201,167, 79,159, 46,244,245,245,197,238,131,103,252,122, 12,253,162,127, 70,118,190, 47, 71, 0, 79,
+143, 26,105, 99,135,245, 61,126,234,212,169,148,180,180, 52,225,138, 21, 43, 90, 31, 57,114, 36, 36, 59, 59,219,238, 55, 81,150,
+ 16, 24,204, 44, 88,150, 3,203, 81, 80, 21,189,150,199,145,174,248,173,154, 12,236,217,165,149, 96,205,239, 79, 81,172,183, 66,
+ 38, 98,144,144,165, 67,219,182, 45, 5, 7,182, 83, 93,203,187, 99,236,208,119,231,122, 58,144,222, 3,218,249,195,195, 69,142,
+109, 63, 45,198,177,235,137,189,115,138, 41,172, 39,204, 4,111,137,160,135,130,203, 90,223,165, 69,128, 87,247,230,126,184,211,
+ 34,192,235,202,221,199,113,178,247, 87, 77,201,208, 10,255, 44, 60,253, 69,113, 69,245, 94, 67, 41,194,150, 51,201, 80, 72,132,
+ 80, 72, 5, 37, 31,137, 0, 52,253,102, 27,198, 75,189,131,125, 25,142, 29,203, 48,130,177,195, 63,120,223,103,196,240,161,132,
+162, 25, 28, 60,124,124,224,158, 61,187,179,172, 22,243, 22,150,102,182, 26,179, 30,165, 85,169, 5, 40,192,195, 73,140,175,126,
+141,130,131, 92, 8, 71,185, 16, 14, 50, 33,186, 55,117,127,147,116,186, 76, 28, 88,175,239,196,193,117,186, 6,213, 86, 54,184,
+255, 68, 29, 51,118,209,157,181,151,138,186, 78, 91,191, 38,196, 85, 92,104, 18,204,155,241,169, 32, 35, 51,171,235,193,227,151,
+187,177,230, 49,177, 54,139,238, 27,213,131,131, 71,203, 35, 75,143,141, 8,171,217,102,168,212,162,181, 62,188, 31,151, 94,191,
+192, 40, 70, 76,138,166,180, 76,133, 80,150,149,109,105,249,102,165, 39,163, 64,207, 92,203,112,165,187,226,114, 68,181, 92, 81,
+ 6, 11,135,251,137, 90,212, 9, 12,131,151,183, 15,204,125, 63,172,115,235,194,161,163,183, 46, 31, 93,170,207,126,252,141,189,
+ 60,123, 79, 68, 96,225,210,181,241,160,240,168,116, 52, 15,158,254,175, 41, 13, 86,173, 94,255,194,185, 73,159, 77,110,240,186,
+226, 90,238,153,187,231,157, 1,163,134, 54,105,221, 3,241, 79,158, 34, 62,250, 14,186,191,211, 11,125,250, 13,134,217,100,252,
+120,235, 47,235,111,235,114, 98,127,126,165,207,245,106,216,161,113,104,240, 30, 31,111, 31, 95, 66, 74,183, 38, 35, 4, 38,147,
+ 17, 51,191, 28, 7,189,182, 24, 65, 65,161,237,157, 59,246, 52,129, 98,192,113, 4,249,249,121,186,216,199, 49,239, 24,115, 99,
+111,218,155, 64,189, 94,111, 85,169, 84,184,119,239, 30,226,226,226, 16, 29, 29,141,252,252,124, 56, 57, 57,105,117, 58,157,221,
+ 25,117,118,118,118,108,220,184,241,135, 7, 14, 28,144, 58, 57,253,173,249,205,102, 51,228,114, 57, 6, 13, 26, 36,236,208,161,
+ 67,205,209,163, 71,127, 98,177, 88,246, 22, 21, 21,105,202,227, 41,120,120, 50,211, 51,116,224,166,190, 67,199, 79, 2, 0,145,
+ 68,153,184,238,215,195,209,149,253,111,145,212,209,239,157, 65, 99,234,131, 16, 80, 20,181, 46, 63,246, 72,118, 69,215, 90, 44,
+ 22,217,254,253,251,107, 82, 20,245,194,248,186,224,199,253,237, 30,198,103,189,179,113,254,215, 2, 7,133, 4,121,106, 51, 38,
+ 76,154,226,102,183,184, 10, 29, 48,185,101,179,176,159,231,205, 24, 7,133, 92,134,179, 55,158,226,203,217, 75,109, 5,121,185,
+187, 64, 81,107,242, 98,126,127, 83,175,197, 91,217,238,173, 65, 77, 37, 28,122,181,149,142,251,160,139,212,108,101, 81,168,181,
+194,100, 97,193, 17, 2,181,206,138,152,148, 98,184, 57,137,176, 5,255,124, 84, 75, 96, 9,132,226,126, 95,140,234, 43, 94,185,
+247, 38, 34,206,238, 53,100,221, 11,151, 63, 83, 6,205,135, 37,166,223,221,239,255,210, 45, 81,246, 12, 18, 2,138, 89,221,174,
+ 77,139,158,227, 39, 76, 34, 77,130,252, 68, 0,141, 71,241, 73,214,109, 91,183,140,186,120, 77,188, 86,147, 30, 53,247,185,193,
+180, 90,211, 55, 57,142, 75,127,217, 98,197,113,175,188,205, 70,149, 55,224, 56, 43,132,216,116, 50,177,228,205, 24, 4, 78,114,
+ 33,246, 93, 76,135,166, 32, 35,175,137, 97,245, 95, 99,251,122, 12, 88,180, 53,230,232,134,227, 57,119, 1, 68, 3,200,169,136,
+147,162, 1, 1, 67,193, 73, 33,130,147, 92, 8, 39,165, 16, 52, 69, 85, 40,174,230,253,242, 96, 7,128,216,151,196,213, 51, 78,
+185, 71, 96, 35, 7,215,154,191,191, 55,113,137,203,195, 84, 11,104, 26,240,247, 82,192, 69, 41,134,217, 10, 36,171, 44,165,121,
+117,196,228,233,243,221,103,253,107,226,169,156,236,206, 77,128,203,182,202,242,174,215,235,197, 35, 71,142, 20, 90,173, 86,203,
+232,169,139,122,102,229,228, 13, 92,187,228, 43,137,155,155, 43,116, 70, 27,238, 61, 74, 14, 94,250,195, 79,254,127, 92,186,117,
+100,214,196,129,199,122,247,238,237,180,127,255,126,174, 58,245,174,202,201,251,105,251,238,240, 93,107, 86, 46,197,227,228, 2,
+108,251,101, 3, 8,107,219, 84, 69, 85,190,192,185,121,243,102,143, 29, 59,118,208, 55,110,220,200,127, 89,128, 82, 20, 20, 5,
+106, 19,156, 21, 34,200, 37, 2,120, 57, 75,224,234, 32,130, 68, 68,131,166, 95,232, 68,158,113,110, 13, 63,185,136,211, 23,225,
+216,111,150,225,219,126, 90,140, 49,159,207, 65, 84,158,232, 52, 45,119, 94,244,249,176,129, 95,215,144,163, 79, 77,103,218,163,
+123,243, 58, 80, 72, 69,152,253,197, 72,180,188,155,236,145, 94,196,205, 41,208,163,233,252,211,152, 91, 94, 58,105,134,130,128,
+161,225, 32, 19,226,210,201,125,185,250, 98,181,154, 98, 74, 44, 44, 86,179, 37,197,206,102,252, 74,121,202, 61, 2,103, 53,107,
+220,104,241,164,241, 99,233,246,109, 91, 17,154, 22, 32, 79, 99,161, 8, 8,166,125, 62, 17,147, 39,142,243, 74,207,200,249,246,
+231, 13,155,231, 94, 56, 71, 22,234, 84,143,231, 87,198,201, 80, 52,104,154,130, 66, 38,132, 82,250,247,199,104,230, 64, 81, 96,
+106,134, 13, 83,131, 2, 40,138,202, 76,191,243, 91,176, 61,233,244,105,220,231,252,229, 92, 81, 67,253, 41, 99, 68, 66,124,228,
+162, 91, 15, 82,111, 1, 40,240,237,228,252,137,213, 74,160, 53,218,144,148,163,135,205, 76,168, 49,189,253, 80,119, 40, 21,180,
+100, 91,228,174, 63, 30,192,241,185,206,254, 5,206,140, 27,225, 70,215,208,193,195,214,252,184,249,246,202,197,115,152,124,141,
+ 25, 44, 1,100, 98, 6,210,210,143, 76,196,192,168, 83,227,231, 77,191,102,219, 64, 13,193,229,202,219,252,171,157, 6,249,104,
+ 72,223, 78,191, 81,128,152,162, 69,233, 62,126,117,252,186,245, 27, 37,237,222,255, 99,176, 54,203,172,187, 87,201, 69,125,110,
+236,121,123, 56, 67, 67,130, 1, 10,143, 84, 81, 71,135,148, 12,146, 3, 15, 55, 12,106,216,224,229,115, 1, 1,129, 13,236,169,
+247,178,102, 37,115,111, 48, 62,160, 97,227,153,109, 58,116,171,147,153,111,130, 75,205, 0,220,139,188,139, 51, 7,127,142, 52,
+ 20, 23,174, 60,115,226,200,204,133,203,214, 54,237, 55,232, 3, 28,253,253,192,116, 93, 78,236,134,210, 50,125,198, 73, 56,238,
+163, 29, 91, 54,251, 10, 69, 18, 88, 89, 2,171,141,131,149,229, 96,181, 17,100,101,101,162, 88,171,133, 84,230, 0,133, 99, 13,
+ 88,109, 37,150, 66,147,201,170,152,248,113,191,201, 70,224,102,121,233,172,211,234,163, 59,160,169, 90, 37,239,168,165,117,102,
+ 50,234,189,189,189,119, 1,128, 68, 34,129, 68, 34,129,205,102,195,195, 76, 76,243,246,234, 52, 27,164,180,178, 57, 46, 61,251,
+222,111, 45, 42,202,187,175,175,111,255,242,196,149, 86,171,197, 95,183, 31, 56,109,223,127,182,119,114, 90,118, 61,142,245, 48,
+201,188,154,246, 42, 42,186,216,191,162,242,204,137, 58, 58,217,183,243, 84,122,250,164,145, 1,235,126, 13,191,149,112,102, 81,
+165,230,228,186,221,191, 54,207,156, 60,162,197,242,117,219,226, 51,174,172,251,178,170, 58, 18,137, 68, 66,149, 74,245,236,249,
+ 94,176,254, 80,159,212, 28,205, 59, 63, 44,158, 35,186,247, 84,139, 7, 73, 89, 24,213,195,207,238,231,221, 43,100, 80, 80,173,
+218, 53,215,174, 93, 56, 21,113,153, 6,172, 63,116, 11,151, 79,238,186,107, 49, 22,191,171,138, 57,158,251, 58,125,200, 91, 16,
+ 88,175,112,150, 13, 4, 23, 31,228,161,216, 80, 34,172,172, 44,135, 98,131, 13,185, 69, 38,168,117, 86,104,141, 86,140,122,199,
+175,250,234,143,144,150, 0,220, 1,168, 40,138,186,253,252,113,153, 6, 45, 27, 98, 94, 58,206, 43,181, 24,186,150,142, 21,226,
+231,104,205,207, 25, 49,202, 59, 95,118,127, 12,128,224, 82, 78, 22,192, 45,138,162, 10,237, 17, 88,164,204, 92,249, 92, 33,151,
+251,202,202,218,172,181,124,188,189,193,145,244, 23, 46,241,107, 53, 76,255,197,216,247,101, 43, 89,155, 46,235,254, 33,187, 99,
+178,148,238, 13,218,137, 68,226,147, 75,151,173, 32,195,250,119, 22,103,171,173,134,152, 12,163, 74,107, 34, 54, 47,247,250,146,
+101,203,151, 43,151, 44, 91,249,217,145,195, 92,145, 54, 39,230,135,242, 56,188, 91, 12,191, 67, 81,116, 45,250,111,179, 60, 8,
+ 71,210, 51,238,236,107, 1, 0,111, 18,107,165, 51,218,192, 48, 20,132,165, 49, 41,122, 51, 11,125, 81,118,126, 19,253,218,191,
+198,246, 46, 17, 87, 55, 51,188,158, 50,140,202, 2,160, 82, 23, 4, 77, 81,208,232,173,112,148, 9,225,164, 16,193, 89, 46,122,
+222,130, 85,158,184,138,174,140, 83,100,177,164,177, 86,147,145,176, 44,250,182,116,135,135,147, 24,222, 46, 18, 72,197, 2, 88,
+ 89,192, 96,230, 96, 48,179, 72,201,213,163, 88, 47, 65,227,206,195, 3,220,188,111,234,179,147, 90,236,200, 79,185, 51,161, 82,
+ 11, 19,203, 98, 79,248,153,128,140,172,220,129, 71,119,175,150,228,170,173,120,144,172, 69,110,161, 25,132,114,194,236,185,115,
+ 37,243,230,125, 55,248,192,239,231,147,218,181, 8, 76,175,110,185,234, 85,177,187, 15, 30, 10,255,233,221,254,131, 28, 98,110,
+253,129,248,123,231,231,233,114,171, 23,127,229,231,231,199,254,252,243,207,206,155, 54,109, 10, 56,122,244,104,154, 74,165, 74,
+ 44,123,168, 92, 29, 68,153,231, 46, 92,113,237,220,190,147, 32, 45,207, 8, 55, 7, 17,252, 60,229,184,123,253,162,153,166,168,
+211,229,241,149,186, 1, 71,160,251, 87, 56,118, 61,177,119,116,190,228,210,167,227,198, 36,159, 59,121, 43,255,199,221,231, 87,
+212, 84, 90,239, 75,185,220,245,119, 91, 4,120,205,154, 50, 18, 75,127,220,141,203,119, 31,231,234,104,159,197, 89, 38, 91,133,
+147, 10, 24, 26, 16, 10, 40, 56,200,132,208,235,212,234,232,243, 27, 3,223,210,203,209, 39,103,126,223, 77, 23, 20, 91,145,158,
+103,160, 50,243,139, 97,227, 56, 56, 43,196,176,113, 64, 81, 65, 30,181,103,207,110,220,190, 29, 65,131,161, 63, 5, 48,191, 42,
+ 11, 22, 67, 83, 80, 74, 5, 80,202, 74,172, 64, 74,153, 0, 22, 27,135, 6,254,190, 88,187,224, 11, 71,119, 15, 79,244, 28, 50,
+193,238, 4,202, 20, 46, 77,119,110, 92,136, 75, 17,247,187, 92, 76,216,215,210, 35,180,233,143, 66, 86,184, 18,132, 24, 76, 86,
+ 22, 26,117, 33,140,166, 52,180,170,153,135, 26, 10, 22,201, 26,111, 68,101,199, 43,171,234,232,243,163,142,220,163,200,160,185,
+ 7,143, 95, 88,218,171, 71, 23, 68, 39,105, 74,196,149,168, 68, 92, 9, 40, 14,171, 55,109,182, 22,170,139,251,229, 71, 31,205,
+123,141,246,249,103,105,103, 92, 34, 16, 88,173,251,158,245,115,119,142,155,185,162, 87,175,193,159, 80, 81,183, 47,126,163, 7,
+206,219,107, 61,127,245, 28,177,235, 92, 69, 93,137, 71,253, 22,123,183,239,216, 55, 44,164,129, 47,114,138,172,200, 44,180,224,
+234,221, 4, 28,217,252, 77, 81, 81,206,211,143, 96,209,106, 57,202,166, 62,123,230,248,233,207,190,152,137, 70,141,154,214,209,
+164,107, 28, 95,142, 61,228, 24,106,243,199, 99, 39, 14,243,244,240,116,224, 74, 45, 88, 28, 33, 8, 10, 10, 65,223,254, 67,112,
+233,202,117,196, 68, 63, 40, 57,207, 1,132, 16, 20, 21,230,103,219,172,230, 29, 21,182, 35,134,170,181,125,211,106, 15,154, 2,
+ 44, 54, 14,102, 43,135, 89,179,231,153,167,126,187,190, 67,175,246, 77,162, 25,112,154,212,172, 34,231,219,177, 89,141, 41,161,
+163,247,135,227,191, 22, 25, 44, 44, 52,122, 43,206, 31, 92, 87, 97,166,189,253,155,180, 85,214,110, 63,118,252,156, 77, 18, 9,
+ 67, 91, 26, 5,250, 38,118,110,211, 40,173,182,143, 91,241,146,117,123, 90, 93,191, 27,219,119,200,123,131,165,195,234,133, 80,
+ 62,174, 82,135,137,147,167, 52, 97, 3,218,127,156,147,240,215,174, 10, 7, 63,129,164,200,183,150,239, 51, 87,162,123,163,129,
+ 15, 0,188, 60,242,167,168,162,143, 54, 1, 0, 15, 79, 47, 35, 37,148, 20, 87, 67, 16, 16, 0,248,254,199,240,190,233, 42,237,
+208, 31, 22,207, 17,221, 75,212,225,222, 83, 53,196, 34, 6, 38,139,253, 97,109, 44, 69,166,125, 61,101,140,176, 64,103,195,197,
+ 7, 42, 68,221,185, 64,108, 22,205, 40, 66, 9, 70,187, 53, 26,248, 49, 5,212, 37, 64, 18, 77,225, 23, 51,141, 29,234, 7, 71,
+213,175,107,193,114, 15, 30,220,142, 98,208,151, 17,136, 90, 2, 92, 67,155,213,234, 65, 51, 76, 94,206,131, 67,158,213,200, 59,
+244,185,241, 88,177,228, 91,172,221,114, 4,183,226, 10,224,100, 75,195,209,109,139, 49,125,233, 30,232,205,108,101,105,168, 72,
+143,184, 83, 20,117,130, 16,210,143, 16,242, 14, 0,113,217,113, 73, 31, 70,157, 40,253,223, 47, 28,207,154, 53,235,155,165, 75,
+151, 70,151, 93, 91,118,190,236,218,202,206, 63,119,191,235,236,217,179, 67,151, 45, 91,182,164,109,219,182,191, 93,191,126, 61,
+ 17,128, 93, 2,235,249, 76, 84,248,148,123,132, 14,104, 69, 8,199,120,185, 42, 17,224,239, 11,197,251,163,101,167, 40, 74,199,
+ 48, 52,189,125,205,108,105,190, 65, 0, 1,195,216,109,239,149,122, 4,181,150, 41, 21,167,246, 31, 56, 68, 26,212,241, 18, 31,
+186, 81,148,122, 55, 81,255,204,164,171, 81,165,136, 3,106,152,152, 97, 31, 12, 81,156, 62,123,110,154, 22,248,161,252,129,129,
+174,245,227,234,229, 30, 14, 50, 33,104, 10,208, 24,108,152,246,175,175,223,120,244, 34, 32,204,228,127,125, 7,154, 42, 25,124,
+180,234, 2, 44, 94,179, 93, 59,164,214,133,107, 99,123,187, 13, 88,180, 53,230,232,217, 71,178,132,193,131,187,169,147,147,147,
+ 11, 51, 51, 51, 43,119,193, 16, 54,125,232, 39, 83, 69, 52, 93,226, 54,162, 40, 10, 0,155,243, 58,226, 10, 0,138,138,146, 52,
+ 82,177,114,240,238,213, 83,182,212,174, 85,179,134,131, 92, 10,165, 66, 66, 53, 12,170, 47,109,211,186,173,204,175,126, 35,209,
+149, 71, 90,164,170, 12,120,154,161,129,196, 61, 84, 56,172, 75, 15,236, 94,247,117,223,252,148, 59, 85,230,255, 66, 68, 84,255,
+ 13, 43,231, 72,114, 10, 45,120,148, 86,140,236, 2, 19,178, 11,141,200, 46, 52, 65, 41, 21,160, 77,247, 33,146, 99,231,195, 7,
+181,107, 17,248,227,235,148,239,211, 39,137, 71, 82, 50,178, 70, 53,105,214, 10,123,118,110,111,131,154, 53,165,200,200, 48,218,
+123,255,150, 45, 91, 10,194,194,194,220,126,248,225, 7, 93, 80, 80, 80,211,205,155, 55,251,199,197,197, 93,170, 87,175, 94,255,
+141,235, 22, 94,154, 58,103,165,159, 0, 54,167, 54,237,219, 51,114, 49,133, 27, 87,206,154,118,108,217,148,105, 41,210,206,172,
+116,244,146, 59, 47,202, 41,166,224,238,227, 27,165, 16, 90,123, 10,229,150,184,194,221, 95,236, 46, 4, 14,215,235, 61,229,207,
+139,119, 98,227,154,223, 77,246,184,112, 55, 46,183, 64,111, 13,124,122,122,122,165, 29, 46, 67,149, 90,176,228,127, 91, 44, 61,
+154, 12, 77, 32, 20,229, 94, 38,108, 40,148, 88,180,168,146,135, 48, 51, 35,242,128, 29,129,209, 20,225, 56, 32, 46, 93,139, 98,
+131, 13, 70,171, 13,190,110, 10,168,114,210,177,241,199, 29,136,188,115, 27, 61,251, 12,192,207,191,238,193,184,143,223, 55, 86,
+245, 96,210, 52, 5,154,166, 74, 45, 87, 37,226, 74, 41, 21, 0, 20, 80,164,179,226,240,181, 52,212,247,167, 65, 85,195, 91,232,
+160,148, 65, 93,108, 4, 45, 84,226,241,213, 93,242, 63, 46,220,154, 61,127,229,214,175, 52,218,156,212, 39, 49, 17, 8,114,201,
+135,191,143, 25,209, 57, 78,184, 83, 80, 7, 65,245,235,129, 22,221,182,139, 59, 47,186,241,138, 99,244,161,126, 45,155,133,180,
+173,237,225, 4,131,153, 45,181, 98, 9,176, 99,251,118, 36, 39,165,143,205,143, 57, 26,249, 54,148,172, 46, 55, 81, 37,241, 8,
+248,236,225,141,243,137,131, 62,154, 12,175,154,181,155, 22,165,222,179, 51, 60,193, 62, 49,197,217, 39,176,232, 26,117,154,237,
+220,185,251,224, 48,255,218, 94, 56,119, 43, 9,145, 79, 10,225,232,224, 12, 70,225,141,192,206,163,157, 31,158, 94,247,158, 33,
+ 79,187, 83, 40,146,127,218,170, 77,123, 16, 66, 16,251, 56,186, 64,173,118,122,165, 9, 24,178, 98,239, 69,100,197, 58,190, 32,
+138,221, 26, 54,117,112,170,113,207,104, 97,145,145,145,142,191,174, 95, 10, 51,100,197,222,171, 78,121, 73, 68, 52,206,222,205,
+133,197,198,193, 98,229, 16,214,184,161, 81, 40,146,117, 92,190,229,100,155,236,156, 92, 90,174,116,226,156,220,234,137,156,173,
+217,166,251,137,106,145,197,198,161,158,119,229,239,229,242, 26,245,150,124,249,175,169,193, 2,177, 12, 26,157,201,156,149,158,
+225,245,203,190,139,218, 71,177, 49, 53,235,214,169,237,184,112,225,124,145,198, 72,144, 91,100, 66, 94,177,133,250, 96,196, 88,
+159, 93,219,126,254, 8,192,174,106, 36,189,241,111,187, 54, 89,107, 40, 69, 84,177,222, 74, 84, 26, 35, 59,249,179,105,141,223,
+164,237,188, 32,174,158,234,112, 47,177, 8, 18, 17, 3,137,136,129,213,102, 95,136,164, 91,240, 80,133,155,171,226,163,214,205,
+ 2,112,230,174, 10, 2,134,130, 65,167, 49, 75, 37,202,168,134, 13, 27,208,205,154,134,162, 75,135,118,120,146,152, 28,116,230,
+220,133, 53,183,110, 71, 46, 22, 54, 26, 52, 51, 47,250,247,159,171,147,214,148, 12,149, 34,199,230, 59,220,195,203, 45,116,192,
+128,254,146,218, 53, 61, 41, 55, 87,103,176, 16, 97,210,228,207, 61,236,246, 26, 17, 2, 2, 96,217,130,217, 48,153,205,240,112,
+ 22,131, 16, 96,219,250,239, 97, 54,155,225,227, 42,133, 90,103,173, 74,232, 85,168, 71,202, 19, 68, 47, 11,173,178,239,101,215,
+ 45, 93,186,180,223, 75, 2,176, 95, 5,194,240,149,235,202,238, 95,182,108,217,146,231,126,215, 87,199, 69, 72, 85,150, 41,183,
+198,131,218, 75,196,178,179, 63, 47,157, 70, 23,233, 44,144,136,104,212,243,175,139, 41, 95, 76,149,119,111,230, 1, 3, 28,113,
+104,223, 14,141,141,181,158,176,235,205,214, 51,160,133, 66, 38, 63,189,109,231, 62,206,203,195,141,250,229, 79, 85,162, 74, 99,
+123,182,196, 65,220,205, 99,220,157, 51,191,120, 19, 80,167,229, 82, 89,128,201,108,114,169,176,199, 41,173,208,109,103,147,193,
+208, 52,152,183,180,178, 23, 77,211,236,175, 63, 46,132,155, 99, 73,204,213,247,107,119, 23,247,119, 63,125,225,121,113,213,172,
+ 89, 51,117,211,166, 77,139,104,186,234,127,154,118,123,111,121,179, 37, 94, 75, 92,149,193,152,243,240,182, 17, 8, 85, 39,255,
+125,238, 15,132, 9,221,234, 30,156, 62,252,195,143,102,123, 54,234,239,144,148,165,134,152,182,162,101,176, 55, 46,157, 57,204,
+165, 37, 62,154,104, 15,119,110,190,218,215,205,213, 21,145, 79,181,200,204, 55, 34,171,160, 68, 92,101, 23, 24,161, 49,216,208,
+172,174, 7,138,212, 90,223,215, 22,176, 20,249,253,204,233, 51,163,250, 12, 28,134, 41, 95,205,239,179,101,195,170, 7, 90, 15,
+135,143,141,185,143,111,217,115,127,120,120, 56,123,231,206,157,196,188,188,188,150, 51,103,206, 44,174, 91,183,174,215,194,133,
+ 11,199,215,171, 87,207,167,123,215,174,234,219, 23,219,236,156,250,213,252,174,223, 76,221,226, 79,211,116, 14,225,200,177, 76,
+157,245, 59,228, 61, 50, 84, 90, 79,199,190,121,252,221, 83,203,168,238, 29, 93,143,185,202,232, 16, 33,101, 26,129,224,249, 7,
+240,104,190,229,233,233,245,197,178,247, 87, 77,201, 40,226,230, 24,105,175,197, 85,137,171, 18, 11, 22, 5,179,133,131,163, 76,
+ 88, 54,115, 20, 32,240,222,176,126,149,220,221, 73, 2, 1, 67, 65,200,208, 80,235,173,200,215,152,241,213,204,153,246,150, 32,
+199,114, 28,244, 38, 22, 6,179, 13, 20, 40, 20,107,242, 48,251,171, 47, 75, 32,211, 47, 0, 0, 32, 0, 73, 68, 65, 84,209,167,
+255, 16,140,157,248, 47, 20, 25,128, 59,137,197,176, 88,173, 85,202, 34,134, 2,244, 38, 27,198,246,242, 67,126,177, 5, 58,163,
+ 13,102, 11, 7,185, 84, 0,129,128,134, 66, 34,128,131, 76, 8,138, 34, 34, 47, 47,175,241, 0, 32, 20, 10,141,105,105,105,187,
+ 43,118,207, 19,212,241,245,132,193, 66,163,213,176,149,120,167,109, 32,238,157,219, 42,184,114,243,161,255, 87,243,215, 96,242,
+136,182, 8,143,173,143, 26, 30,117,160,148, 75, 97, 37, 52, 0, 98,103, 64,222,124,142,182, 12, 30,177,233,215,109,177, 11,230,
+125, 45, 45,212, 81,144,136, 4,184,112,225, 79, 68,220,188,179, 46, 47,230,232,238,183, 25, 75, 33, 36,180,167,163,147, 35,164,
+ 98, 6, 22,139,201,238,128,111,150, 35, 0, 65,176,123,232,192,195,165,117, 31,204,149,115,206, 14, 11, 22,229,228, 19,186,125,
+211,150, 61, 31,121,123,121,224,200,249, 7,216,185,229, 39,212, 12,237,131,132,187,155,224,219,124, 16,148,254,221, 32,118, 56,
+ 56,158,102, 4,141, 39, 79,157, 61,164,121,139,182,184,126,245, 34,114,179,179, 54, 1,177,118,197,160, 49, 66,234,139,174,239,
+244,131,201,194,162, 99,183,126, 56,125,252,200, 20,148, 78,158,120, 93, 48, 12,205,125, 62,110,184, 48,183,200, 44,204, 85,155,
+144,145,103, 64, 98,182, 14, 71,247,111,181,219,108, 71, 49,116,203,206, 77,107, 9,199,175,184,144,230, 91,203,219, 36, 52, 25,
+100,113, 79,158, 52,252,116,212, 71,194,186, 1, 65,180,170,200, 4,149,218, 12,149,218, 12,157,209,138,250, 62,181,105,147, 77,
+208,182,186,105,245,112,146, 10,127, 62,145, 8, 71,185, 0,237,130, 93, 95, 59, 8,155,227,184,191,197,213,162, 18,203,213,253,
+ 68, 53,164, 34, 6, 98, 33, 3,137,136,134,149, 37,118,142, 69,182,225, 19, 70,125, 32, 51, 91, 9,242, 52,102, 48, 52, 5, 47,
+ 55, 87,137,175,119, 32,182,173,252, 28, 0, 48,238,235, 13,248,116,204, 72, 4, 5, 6, 64,173, 46,150,125, 58,105,234,106, 0,
+118, 9, 44, 66, 8,217,115,244, 74,200,157,168,148,233,159,140,250, 88, 56,108, 64, 39, 58,242,169, 6, 89, 5, 38, 60, 77,208,
+195,108,173,222,106, 52, 54,182,196,231,187,253,192, 9,200, 69, 12, 84,234,146,199,101,209,250, 3, 80,202, 4,200, 46, 52,131,
+227, 42,181,222, 85,170, 71, 42,178, 58, 85, 7,207,139,176,202,206, 83, 20,117, 98,214,172, 89,223, 0, 32,179,102,205,250,166,
+236,120,233,210,165, 6, 0,153,246, 10, 44, 84,228, 22,116,107, 60,168,189, 76, 44, 61,187,107,253, 55,178,243,113, 4,235,206,
+222, 69,223, 54,222, 16, 9, 40, 72,149, 94,184,151, 88,132,243,231,143, 22, 95,141,184,105,164,104,107,149,211,162,100, 94,129,
+ 97,114,137,226,207,159, 54,239,180,121,122,121, 97,223,181,194,204,124,173,205,250,183,123,202, 74,221, 57,243,139,191,141,179,
+246, 54,230, 36,220,174,234,205,155, 35, 68,180,116,227, 49, 16, 66, 0,142, 5, 7, 14,140, 72,162,168,221,234,163, 28, 80, 0,
+203,114, 82, 1, 67, 27,159,249, 65, 74,134,166,244,212, 91,251, 90, 84, 85,195,142,114, 33,246, 95, 78,135,186, 32, 51,175,191,
+251,233,191,202,196,213,233,104, 73, 66,243,230,205,212,173, 91,183, 46,146, 72, 36, 96, 24,230,117,234,248,141,196, 85,197,136,
+180,230, 37, 97,217,161, 67,210, 1,125, 20,161,173,197,148, 16,205, 27,122,227,210,217, 35, 92,196, 31, 91, 7, 27,114,227, 79,
+218,107,226,213, 26,109,200, 44, 48, 32, 35,207,128,172,194, 82, 11, 86,129, 9, 20, 5, 24,205,111,182,124,141, 33, 55,254,248,
+238,221, 91, 55,153,172,152,216,177,231, 32, 76,159,255, 83,192,238, 77, 43,174, 38, 19, 91, 75,189, 42,225,161, 93,111, 92, 41,
+ 41,166, 61,123,246, 68, 22, 23, 23,247, 88,189,122,181, 54, 56, 56, 88, 44,147,201,242, 1, 72,227, 99, 99, 69, 23, 78, 29, 76,
+ 82,101,102, 78,176, 90,173,183,237, 77,151, 95,231, 81, 18,153, 37,114,188,159,188, 93,175,122, 94,114,248,201,117,189, 26, 42,
+239,255,144,223,109,234, 18,213,133,117,185, 89, 38,219,185, 2, 61,154,102,104,133,127,218,213,217, 88,204, 41, 31, 78,152, 5,
+134,166, 96, 49,153, 83,158,185, 35,156, 36,152,191,251, 17, 28,100, 66, 40,101, 66, 56,200, 4,104, 31,236,138,106, 24,136,136,
+213, 70, 96, 48,219, 96, 48,177, 48,152,108,112,171,237,140, 95,119,133, 35, 85,101,192,177,219,121,120,156,172, 65,160,175, 2,
+132, 84,109,119,226, 8,171,251, 96,252, 28, 7,134,166,193, 80,160, 27, 6,212, 65,129,214, 12,145,128,134, 88, 44,134, 92, 42,
+128,163, 92, 8,161, 64,136, 91, 15, 30,192,100, 50,161,117,235,214,210,170, 28, 14, 14, 74, 25, 26,248,251,192, 98,181,225,212,
+149, 24, 44,154, 54, 24, 61, 58,181,192, 87,140, 24,143, 77,205,224, 80,195, 1, 28,197,192, 98,227, 96,178,178, 0,168,202, 4,
+112,187,210,184, 8, 35,128, 27,217,177, 71, 82, 89,102,224,248, 63,206, 94,216,221,191,111, 79, 68,222,143,198,161, 35,199,174,
+230,185,170,103, 60,111,149,192,223,179,224,162, 95,179,185, 82,132,166,167,181,109,223, 5,218,194, 92,228,164, 37,217,221,169,
+135,212,118,192,151,211,166, 52, 8, 10, 10,106,192,114, 4, 28, 71, 16,226,231,128, 9,147, 38, 53,168, 31, 16,216,128, 43,157,
+ 69,216,208,215,161, 82, 30,133,103,208,228,197,171, 55,126,236,235,235,139,211,215, 30, 97,233,156,137,145,114,185,178,110,139,
+ 26, 14,206, 92, 80, 83, 36, 70,157, 67,141, 58, 69,112,244,108, 80,107, 64,143, 81,181,250,188, 59, 8, 15,239,223,197,218, 31,
+ 22, 70,232, 24,217, 18,123,210,170,240,240,119,111, 26,214,234, 67,199, 26,158, 40, 84,107,161,116,241, 64,112,147, 22, 31,198,
+220, 55,125,173,203, 77, 84,189,238,179,206, 17, 2,147,133, 67,129,214,130,116,149, 1, 73, 57,122, 36,101,235,193,113,132, 60,
+239,162,174,188, 63,166, 40,133, 68, 32,168, 97, 77,168,253,224,207, 11,196,207,215,147, 90,177,112, 38, 99, 33, 18,228,170,205,
+ 80,105,204, 80,169, 77, 80,105, 74, 4,150,139, 82, 0,142,112,213,158,157, 81,160,181,192, 65, 38,128,147, 66, 4,150,125,253,
+152,239,249,107,246,181, 75, 87,105,187,255,176,104,142,232, 94,146, 14, 15, 18,213,144,136,232, 18,235, 85,169,192,178,215, 45,
+204, 8,232, 41,239,190,211, 26,105, 42, 35, 4, 12, 13, 1, 67, 35,160, 81, 24,220,228, 28,186, 15,155, 5, 0,232,223,183,100,
+ 25,146,196, 44, 29,142,223,200, 2, 0,145,189,105,205,205,211, 72,143,156,139,156,186,239,215, 21, 98, 35, 43,196,198,147,201,
+ 48,154, 89, 72, 68,165,110,119,113,245,198, 55, 27, 91, 98,193, 74, 83, 89,160, 51,177,208,232, 45, 32, 4,184,149, 80, 12,189,
+137,133, 90,111, 65,155,160, 26, 85, 62,115, 85,140, 79,253,222,200, 67, 85,114,191, 10,127,199,105, 85,105,193, 90,186,116,105,
+244,210,165, 75,203,181,136,217, 35,176,202, 23, 87, 34,233,217,157, 63,126, 35,251, 51,150,224,210,131,124, 12,237, 88, 11,249,
+185,233,216,178, 97, 29, 71, 8, 32,145,138,179, 89, 27,247,135,145,179,205, 84, 63, 56, 81,169,223, 87,238, 22,220, 68, 42,150,
+ 92, 88,186,118,147,197,203,187, 22,119,248, 70, 81,174, 90,207,190, 96, 43,100, 77, 38,154,112, 68,100,204, 73,176,107, 80,164,
+105,202, 50,127,202, 96,112,132,224,187,117, 7,176,116,250,112, 40,165, 2, 57, 69, 81,114,157,209,134,105, 11,183, 98,245,220,
+ 49, 14,114,137,160, 84, 24,176,152, 56,229, 43,251, 68,128,137,133,174, 48, 59,191,177,118,205, 75,226,170,185,186,101,203,150,
+ 69, 46, 46, 46, 80, 40, 20,175, 35,176, 94, 17, 87, 94, 94, 94, 62,114,185,188, 70,153, 53,140, 97, 24,176, 44,171, 75, 72, 72,
+120,173, 69,223, 52, 69,121,191,103, 38, 69,181,110,223,229, 93, 92, 62,251, 59, 23,113,106,203,224,234, 76, 49,119,118,114, 76,
+187, 27,147, 18, 12, 40,145,145,111, 68,118,161, 17, 89, 5, 38, 88,108, 28,252, 60,229, 72, 79, 75,133,179,147, 50,205, 94, 62,
+153,103, 64,111,154, 48, 19, 56, 10,191, 26,114, 98, 79, 1,128, 46, 51,102,210,129,221,155, 30, 70, 71,223, 95,219,111,248, 20,
+113,143,247, 38,137, 54, 47,251,108, 22,128,225,118,119, 14,185,185,250, 99,199,142, 69,248,248,248,244,251,238,187,239, 76, 0,
+196, 38,147, 73, 62,102,204, 24,121, 74, 74,202,151, 0,236, 74, 99,135,209,219,220, 40, 41,233, 45, 34,198, 17,126,114, 93,207,
+110,157,218,162, 93,168, 47,210, 59,181, 5,128, 47, 82,244,202, 64, 83,189, 95,247, 91, 89,252,177,113,199,169,165,227,134,117,
+251,114,183, 96,254,234,172, 19,243, 43,181,136,197, 93,221,214,171,188,174, 67, 88, 26,248,254,188,192,178,177,164, 58, 46, 56,
+ 98,101, 57,232, 77, 54,232, 77, 54,104,141, 86,156,191,151,139,156, 34, 51, 10,117, 22, 24, 77, 44, 8, 0,139,149,148,173, 42,
+ 82,185, 88,141,216,233, 92,246,189,102,216, 48,245,186, 5, 83, 28, 15, 93, 75,135, 66, 82, 18,143,229,164, 16,195, 81, 46, 4,
+ 64,112,233,210, 37,148, 77,143,175,234, 45,254,208,233, 91, 88,189,227, 2, 78,111,157, 9,169,152, 65,211, 65, 11, 48,106, 80,
+107,112, 28,193,147,216,168,156, 6,193,205, 60,105,165, 28, 52,141,178,152,148,202,202,211, 21,192, 49, 0,253, 0,188, 11,128,
+168, 98,142, 22,254,206,230,235, 46,156,220,167,208, 25, 76,182,194,148, 71, 63, 65,151,215,185, 44, 9,165,111,192,151, 0,116,
+122, 93, 99,182,204, 35,112,221,167,147,166, 13,173, 95,191, 30, 14,236,221, 6, 66,168, 67,246,222,188,251,120, 4,214,172,125,
+113,198,224,132, 73,147, 26,108,222,184,241,133,115, 31,143, 25, 95,217, 44, 66,202,217,221,123,102, 80,195, 16,220,136, 78,199,
+138,121,147, 35,141,185,137, 35,204, 74,215, 9, 22, 93,214,191, 66, 66,155,193,203,211, 21,217, 89, 57,232, 58,176, 7,250,244,
+234,133,135,247,239, 98,209,183, 95, 69, 64,111,238, 89,149,213,246,111, 33, 36,156,216,165,215, 32,161,222,100,193,250, 21,223,
+ 98,194,140,197,104,211,181,191, 48,234,222,205,137, 0, 22,216,155,103,179,149, 67,215, 38,238, 48, 91, 89, 88,172, 28,142, 37,
+ 50,130, 87, 45, 5,128,128,161,233,102,245, 74,220,187, 26,131,181,242, 74, 16, 80,217,133,154,226, 58, 63, 45,158,202,232, 76,
+ 44, 84,106, 19,114,139,204, 80,105, 76,200, 83,155, 74,196,149,218,140, 60,181, 9, 2,134, 66,124, 98, 6, 24,134,170,118,252,
+ 93,145,206,130, 86,129, 46, 0, 40,208,175,233, 14,201,179,185,247,185, 31,151,222,125,197,194, 57,162,123,137, 90, 60, 72,210,
+148, 10, 43, 26,226,231, 4, 22,103, 71, 8,150,123,112,255,118, 35,134,244,109,228,168,144, 34, 35,182, 24, 2,154,130,128,161,
+224,232,238, 11, 39,169, 17, 83, 38, 79,128,107, 13, 39,164,230, 25,177,238, 72, 28, 30,196, 36,128, 51, 84, 47,219, 27,246,156,
+ 30,252,241, 71,195, 36,180, 80,138,221,103, 19, 33, 22, 49, 16,192,140,152,155, 87, 76, 57,233, 73,150, 98, 77,145, 66, 32, 16,
+218, 69, 74, 1,196,198,114, 32,132, 96,201,247,179,241,219,142, 13, 56,125, 39, 7, 4, 37, 75, 53,252,117,120, 21,166,205, 90,
+ 4,149,198, 12,128,122,109, 5, 75, 81,212, 73, 66,200,187, 47, 11,161,151, 69,210,115, 22,168,242, 56,110, 63,207, 81,118,125,
+ 69, 2,238,249,152, 44,216,185,216,182,160, 28,165, 72,149,137, 43,169, 88,124,118,199,186,217,178,243,113,120, 38,174, 12,218,
+ 60,236,218,186, 89, 75,192,189,147, 27,125,236,150,189, 5, 34,119,111, 16, 42,145, 75, 46,207, 89,180,206,228, 83,203,223,118,
+234,158, 38,191,216,200,190, 98, 6, 17,201, 21,172,194,201,221, 40, 16, 75, 86, 11, 13,230,111,243,242, 30,233,170,170, 82,142,
+ 16, 28,191,153, 13,112, 37,149,120,224, 74, 70,201, 58, 62, 12, 5,150, 43,241,115,159,139,204,125,118,206,190, 10, 4,246,159,
+141,204,171, 72, 92, 57, 59, 59,195,217,217, 25, 74,165,178,186,109,163, 92,203,149, 92, 46,175,113,230,204, 25,169,163,163, 35,
+ 24,134,129,201,100, 66,143, 30, 61, 94,171,241,201, 61, 2,135,183,233, 54,120,105,135,174,239,226,226,153,195, 92,196,169,237,
+ 67, 12,170,106,172,223, 3,160, 79,167, 38,199, 87,172, 90,239, 63, 99,214, 28,137, 66, 42, 64,161,214, 2,134,166,224,231, 33,
+131,171,146, 65,196,133, 19,198, 17,189,155,217, 45,254,124,107,213,217,181,106,221, 38,215,213,203,191,239,121,239,170,217,179,
+168, 40, 73, 3, 0, 6, 85,252,166,184, 40, 42,182, 86,237,179,151,155,118, 26, 12,143,154, 1,125,147,114, 98,171,149, 95,149,
+ 74,149,123,248,240,225, 71, 33, 33, 33, 45,134, 12, 25, 66,150, 44, 89,226,146,158,158,126,208, 94,113, 5, 0,221,122,181,155,
+166, 16, 90,219,186,202,232,144,122, 94,114,180, 11, 45,241,126, 14,123,183, 3,106,249,214,198,211,108,125,179,124, 3, 39,210,
+ 89,133,245, 54,110,218,118,219,175,134, 96,156, 77,107,136, 1,112,180,218,157, 3, 74, 59, 73,121,169,184,146, 10,160,148, 9,
+193,145,146,223,236,183, 96,113, 48, 91, 56,232,205, 54,232, 77,108,137,216, 50,179,224,184,146, 96,101,138,162, 96,177,178, 85,
+190, 13,150,215, 75, 58,186,184,193,191, 78, 73, 26,159,125,100, 66, 80, 20,224,238,238, 14, 87,215,170,215, 29,229, 56, 14,102,
+139,173,116,208,101,159, 77,234, 48, 91,108, 32,132, 32, 46, 46,126,102,114, 98,242,192,128, 6,245, 59,133, 52,105, 86, 67, 38,
+166, 81,106,157,170,236,173,118, 4, 0, 43,158, 91, 51, 77,200,192,120,228,240, 33, 69,191,254,253, 11, 45,186,188,231, 39, 75,
+ 48, 0,122,151,138, 49, 67,117,171, 73,225, 30, 56,200,197,181,198,226,145,163, 39, 4,118,125,167, 23, 46,157, 63,135, 99,135,
+247,237,212,171,226,206,218, 75, 18, 20, 20,244,202, 44,194,250, 1,129,175,204, 34,172,227,223,160, 66,129,229,228,212,196,177,
+ 73,203, 46,190, 41,121, 22,252,241,199, 41,232,212,217,243,204,102,173, 30, 66,178,229,207,195,191,140, 29, 49,241, 59,199, 54,
+ 45, 91,192,217, 65, 14, 55, 23, 37,238,222,137,192,242, 5,115, 34,160, 55,247,172,186,255, 44, 69,112,176,168,166,204,119,170,
+ 95,189, 70,184,123,243, 26,158,196, 69, 69,223,187, 29,209, 40, 32,180, 53,220,125,252,166,166,184, 49,203,240,232, 81,149, 59,
+ 85, 16,150,164,127, 50,254, 95,165,131, 94,201,185, 54, 77,253,197,175, 54, 66, 10, 54,171,133,221,189,121,121,238,243,179, 8,
+ 43,226, 53, 22, 23,133, 95,189,249,240,171, 1,189, 58, 82,101,174,192, 50, 81,245,242,113, 64, 77, 5,158, 60,124,204, 89,117,
+234, 67,213,171,114,146, 51,105,242, 23,178,146,180,115, 32, 37, 11,171, 85,183,221,192,200,138, 62,220,248,253, 55,212,253,100,
+ 29, 30, 38,105, 74,220,130,165, 2, 75, 34, 98, 32, 46,253, 75,136, 29,250,130,166, 87,124,252,126, 47,228,169,205,224, 8, 41,
+ 93, 75,143,130, 64, 32, 68,138, 6, 72,211,104,161, 42,202, 65, 98, 82, 50,212,217,137,160,105, 6,174, 53, 3,160, 79,181, 47,
+173,197,172, 50,208,202,161,254,251,253, 58, 50,191, 95,207,130, 76, 34, 64,113, 94, 26,174,157, 57, 96, 32, 44,187,201,108, 53,
+255,230, 65,196, 81,143,162,194, 45,118,118, 29, 42,141,206,236, 41, 17, 49, 56,176,253, 39,124, 48,106,210, 51,107, 54, 0,124,
+ 53,103, 33, 40,138, 66,161, 90, 11,128, 82,217, 97,185,122,254, 88,245,156,229,233,149,227,231, 68, 81,121,199, 84,233,177,185,
+ 2, 14,243, 75,162,202,252,210,121,243, 75,124,118, 45,142, 92,161, 5, 75, 72, 51,231,182,175,253, 70, 26,157, 43,193,173,199,
+217, 24,218,177, 22,244,154, 60,108,254,121,141,214,104,181,244,201,139,178, 95, 92,149, 54,148, 94, 31,140,153, 30, 93, 47, 32,
+216,124, 62,170, 56,177, 72,103,173, 48,142,161,245,208,111,162, 35, 79,254,212, 87,109, 77,156,172,240, 14, 97, 57,155,109,133,
+ 65, 21,247,125,249,157, 56, 17,127,183,238, 64,137,184,226, 56,124,189,124, 23, 8,199,150, 46,224,199,130,176, 28, 62,159,183,
+ 1,182,210,239, 44,199,130,178,178,242,170,146,171,148,138,206, 54,214,174,113,122, 89, 92,133,133,133, 21, 57, 59, 59,195,213,
+213, 21, 46, 46, 46, 40, 19, 68,111,234, 22,164,105, 26, 74,165, 18,151, 46, 93,130, 82,169,132, 66,241,122, 11,228, 43, 60,130,
+ 62,104,213,109,208,158,174,253,199,208,127, 30,217,204,222,188,116, 98,168, 81, 21,107,183, 8, 96, 89,150,178, 90,173,232,213,
+165,121,202,189,216,212,211, 11,191,255,190,119,203,110,239, 73,218, 5,121,192, 96,182, 33, 61, 45, 13, 17, 23,143, 25, 3,106,
+187,157,110,215, 34, 48,221,106,181,130,101,217, 42, 7,112,147,201,156, 79, 11,165,174,195,134,127, 40,185,125,235,214, 30,185,
+ 71,224, 62,154,225,238, 19,150,105, 2,194,125,208,164,113, 48, 44, 54, 14, 6,189,166,224,117,242, 29, 29, 29,125,123,213,170,
+ 85, 65, 66,161,176, 86,120,120,120, 94, 97, 97, 97,181,182, 11, 58,119,242,214, 58,129,210, 26, 95,102,193, 74,235,216, 22,195,
+251,117,192,111, 39,175,225,226,149, 8,164,232,149,247,116,102,230,247,244,244, 76, 83,136,139,250,240,160,246,117,153, 67,187,
+ 52,135,162,187,204,124,159, 16,217,185,188,203,243,237,158,224, 65, 81,128,198, 96,125,206,130, 85, 18,223, 68,211,148,221, 22,
+ 44, 10, 72,188,114,253,110,104,243,192, 96,220,123,170,129,170,208, 4,189,185,164,221, 19, 16,184, 58,138, 32, 17, 49, 72, 73,
+ 74, 4, 71, 44, 73,213, 27,103,160,234, 51,116,130,160,244,245, 69, 32, 20, 10,158, 5, 68,200,164, 98,173,135,135,135, 93, 2,
+203,202,178, 24,210,171, 53,218,180,108,130,129, 19, 87, 1, 0,206,239,252, 26, 46, 74, 17,194,195,195,145,246,215,218,221,254,
+109, 39,158,141,122, 24,243, 94,116,228,245, 15,251, 52,151, 53,243, 18,100,137, 42, 81,197, 71, 75, 93,132, 93, 1,244, 40,181,
+ 76, 89, 89, 27,151,218,187,119, 47,142,101,185,231, 99, 34, 92, 0,180, 5, 80, 0,224,110,169, 40,171,228, 5, 48,232, 29,208,
+216, 7,138,146, 42,101,242,148,186,117,235,249,180,108,211,218,105,208,144,247, 33, 22,137,241,231,185, 51,248,113,205,178, 3,
+218,172, 71, 99,170,229, 30,179, 51,160,189, 50,119,145, 90,237,164,139,139,185, 87,152,152, 99,118, 17, 56, 55,128, 80,226, 48,
+129,114,242, 89,199, 72,148,223,213,108, 51,202,241,252,181, 91,136,190,119, 29, 62,110, 50, 36, 62, 73,208, 71,221,143,220,160,
+167,132,223, 35,239,145,222,222,116,202,243,217,247,218,140,236,237, 98,180,176,184,122,225,164,145,179,113,189,111, 92, 62,245,
+196, 55,176,165, 52,180,101,119,151,188,163, 91,134,232,129,223,170,226, 73,190,181,231,149,208, 11,134,188,159,121,234,220, 21,
+165, 79,237, 0, 6, 20, 13,147, 65, 7, 85, 74,148,205,168,201,209,231, 70, 29,245,177, 43, 28,192,150, 49,239,219,101,155, 38,
+ 55,111,218, 72, 65,136,248, 5,139, 85,217,247,252, 98,115, 73,204,172,174, 8, 79, 31, 94, 51,170, 18,212,179, 43,239,235,172,
+242,252,252,130,103, 83,243,101, 90,231, 58,106, 39,181,228,217,176,206, 0, 78,106,231,103,150,138,252,252, 2, 49,203, 90,229,
+246, 60,158,206, 14, 82, 60, 76,202,124, 22,208, 46, 17,209,165,177, 87,127, 91,178,236,124,206,155, 11,196, 10,100,228, 27, 65,
+ 19, 2,142,179,193,102, 53, 67,171,209, 32, 51, 35, 27, 57, 57,185,208, 22,171, 33, 83, 58, 35,180, 89, 11, 56, 56, 56,224,209,
+157,139, 0,168,227,118,137, 65, 78,212,160,101,139, 22,194,232,228, 98, 88,172, 28,132,176,224,234,233,253, 70,155,213,220, 63,
+ 55,234,232, 5,192,142,173, 68,158,119, 15,114,228,207,168,216,148, 70,190,110,222, 84,228,211, 34,236,250,101,125,201,108, 82,
+ 91,137, 53, 51, 58, 85,135,204,124, 29, 50,210, 82, 8, 56,246,207,234, 60, 75, 20, 69,221,174,236,248, 53, 45, 97,111,204,241,
+ 90, 2,203,102,179, 73,107,251,213,193,240, 9, 35,177, 97,195, 70,196, 61, 77,193, 47, 63,175, 45, 17, 87, 15,127,255,203, 78,
+254, 80,148,174,149,161,207,137, 93, 97,116,105,149,126,252,126, 33,109, 48, 19, 91,229,157, 93, 93,116, 28,179,250,140,161,184,
+ 64,204,154,244,130,227,187,199,236, 43,143, 19, 0, 24,154, 50,151,186, 5, 65, 81, 20,202,220,130, 27, 22,140,131, 92,194,128,
+162, 40,232, 77, 54,124,252,229,106,236, 92, 93,242,102,245,233,228,233,250,138,210, 89, 38,132,190,108, 27, 79,141,238,237, 63,
+ 96,209,214,152,163,215,146, 93,159,190,251,110,103,117,179,102,205,138,100, 50, 25, 20, 10, 5, 28, 29, 29,225,232,232, 8,103,
+103,231, 42,243, 94, 10,207,170, 98,174,104,154,134,163,163, 35,100, 50, 89, 69,194,237,101,206, 23,197,149,103,131,247, 91,117,
+ 25,184,175,219,128,177,244,159, 71,126,225,238, 92, 58,254,190, 81, 21,247,187,189,117, 84,106,117,184, 63,100,200,144,198, 19,
+ 38, 76, 16,125, 51,121,200,153, 51,151,238,198, 29, 62,119,168,127, 65, 81,177, 47, 33, 4,206, 78,202,180,161, 61, 26, 31,239,
+216, 50, 40,229,252,249,243,220,190,125,251, 76, 20, 69, 61,172, 42,157,121,121,185,219,207,159,191,176,188, 83,231, 46,248,101,
+199,190,119, 99, 98, 30,189,251, 36, 33, 30,190,126,245, 80,183, 94, 3,232, 41,103,156,191,124, 21,197, 5, 57,219,237, 44,207,
+191,127, 8, 13,173,201, 48, 76,173,162,162, 34,227,188,121,243,130, 88,150, 61, 22, 26, 26,218,130,227,184,172,152,152,152,116,
+123,242, 30,177,251, 99, 21,128, 93,126,157, 71, 29,204,180, 20, 77, 5,176,204,183,118,109, 92,188, 18,129, 27,127,221,220,152,
+ 39,175,253,253,232, 15, 63, 25, 87,199, 85, 56,110, 96,187, 58,140,135,139, 28,123,127, 89,197, 28,189,158,188, 38, 57,223,250,
+235,242,203,243, 23,217, 83, 71,101, 40, 40,182,160,125,136, 43,108, 54, 2,150, 16,208, 20, 5, 7,153,160, 34,129,245, 10,167,
+192, 44, 25, 51,105,226,132, 39,161, 77,154, 77,251,112,212, 4, 81,179,250,181,113, 43,190, 16, 0, 5, 87, 71, 57, 50, 51,179,
+112,245,216,175,182,194,140,199, 27, 25,134, 91, 80,157,242,204,136,220, 31, 80,246,221,203,203,107,252,189,168, 40, 92,186,116,
+ 9,174,174,174, 40, 19, 87, 21,184, 8, 95,224, 44, 44, 44,254,107,225,170, 95,219,143,251,104, 32,250,117,105,132,203,183,159,
+192,108,229, 96,177,113,207,130, 92, 19, 35, 54,137,167, 14,171,103,158, 60, 36, 80,163,183,138,147,191, 75,214, 92,198,139,139,
+200,190,156, 78, 51,128, 51, 0, 90, 3, 24, 8,224,236, 75,123, 12, 82, 40,137,187,106, 4, 32, 2, 64,162, 93,121,167,177,247,
+238,237, 59,174, 22, 27,135,171, 55,239, 7,119,107,223, 12,132, 35,184,125,251, 14,182,108,219, 98,124,248,224,222, 74, 93,142,
+215, 2, 84,188,101, 76,185,229,105,239, 44,194, 10, 4, 86, 41,231,101, 91,118,114,208,198,235,215, 46,207,145,248,180, 64,195,
+190,223, 12,200,184,127,108,128, 87, 72, 47,184,213,111,143,204,251,191, 35,242,175,189,167,238,216,108,179,164, 28,157,162,207,
+139,213,217,251,188,151, 65, 34,149, 79,105, 20,214, 25,105,169,201, 72,138,143,218,105, 44, 72,200, 76,121,194,236,204, 72, 79,
+153, 88, 55,164, 61,174,157,249,237,139, 74, 4, 86,165,109,222, 77,172,222,120,233,218,245,225, 25, 7,143,121, 22,107, 13, 50,
+129,128,214, 75, 24,228,136,244, 79,246,219,157,206, 71,143, 44, 69,245, 28,135,124, 56, 97,238,201, 53,203,231, 9, 61,156, 37,
+200, 46, 52, 66,163,183, 66, 99,176,130,161,128, 0, 31, 37, 12, 58, 13,110,156,218,101, 37,150,130, 33, 64,164,181, 34, 78,183,
+144, 1,139,140,249,137,159,207,157, 59, 27,140,216,209,167,110,183,217,150, 18, 85,254,210, 98,230, 53,128,186,254,179, 97,210,
+100,245,159, 59,119,118, 16, 33,164,187, 91,200,128,226,231,246, 34, 44, 55,239,249,197, 22,124,212,213, 23,102,107,201,250, 97,
+ 44, 91, 18,107,199,149,174,106,142,202,237,202,207, 56, 9, 32, 58,112, 50, 2, 25, 57,133, 48,152,172, 48, 91,108, 48,219, 88,
+208, 52, 3, 23, 23, 23, 4,248,135,193,217,201, 17,185,121,249,184, 29,113, 13, 55,226,238, 37, 18, 96, 81, 94, 13,245, 30,123,
+234,136, 18, 40, 2, 60, 61,220,168,156, 98, 51,164, 18, 6, 55, 46, 93,182, 2,216, 94, 38,174,170, 51,118, 0,128, 90, 95,180,
+122,214,194,117, 35, 54,172,250,206,171, 73, 93, 71,164,229, 25,145,174, 50,160,216,104, 3, 64, 96, 99, 9,204, 70, 53, 98,111,
+159,206,182, 65,191, 26,255,112, 84,108,193, 18, 10, 77,183, 31,196, 73,102,205,255, 1,143, 18, 18,177,101,227,122,157,169,122,
+226,234, 21,108,255,204,255,183,127, 71, 38,202,115, 11,114,132,224,248,141,236,103,219,126,148,185, 10,239, 38, 20, 85, 69, 39,
+252, 97, 74,179,153,101, 66,232,199, 35, 25, 55,254, 31,123,247, 29, 30, 69,185,254, 13,252,187,187,179,125,211,235,166, 27, 82,
+128, 64, 40,161,183,208,133, 32, 45, 8, 10,210,132, 35,130,192, 81,218, 15, 57, 82,130, 98, 59,162, 20, 11,138,116,233, 77,138,
+ 84, 67, 12, 72, 21, 66, 66, 32,164, 39,164,215,205,166,109,159,221,121,255,128,228, 32, 39,101,131,250,158,115,224,254, 92, 87,
+ 46, 72, 50,251,205,204,236, 51,179,247, 60, 83, 30,137,164,204,146,147,147, 83,177,123,247,238,250,162, 71, 32, 16,160,238,122,
+ 41,131,193,208,236, 93, 69,142,118,226,246, 83, 34, 94,120,181,177,226, 74, 32, 16,192, 98,177,212,247, 94,181,244,212,163,220,
+181,245,208,110, 3,198,238, 27, 52,230,111,252,232, 31,191,183,220,252,229,248,248,218,210,148,163, 45, 93,151,106,181,250, 46,
+128,212,181,107,215,118,222,178,101, 75,171,197,139, 23,103,124,255,241,236,141, 15,143,224, 30, 30,203,196,197,197,113,115,230,
+204,209,235,116,186,204,138,138,138, 91,176, 98,144,107, 77,113,242,218,237,223,252,179, 77,110,126,225,244,192,246, 61,224,226,
+223, 29,202,192, 30, 80,213, 24,113, 61, 45, 31, 25,247,162,145,116,229,208,126,109,169,251, 71, 64,138,213,243,219,169, 83, 39,
+ 95, 62,159, 63,138,227,184,214, 10,133,194,159,227, 56, 49,195, 48, 19,120, 60, 94, 42,203,178,247, 66, 66, 66,162,147,146,146,
+172, 30, 51,236, 65,236, 14,189, 95,255,233, 27, 30,104, 20, 3, 50,138, 52, 97, 15, 52,138, 56,141,196,126, 97,233,133, 13,250,
+ 29, 2,175,117, 48,149,223, 61,180,179,242,200,158,205,159, 11, 38,207, 90,100, 78, 84,217,189,205,216,200, 90,212, 91,198,231,
+241, 10, 23, 47, 94,242,175,199, 52,240, 30,158, 24,124,244,200,134, 2,107, 50, 30, 61,211,104,105,194, 61,225, 87,137,239,204,
+254,160, 67,183, 62, 83,250, 15,127,149,111, 35, 82,224,252,209,111,185,204,132,152,131, 12,103,126, 79, 91,154,145,249, 71,183,
+ 47,131,193,240,187,194,202,154,222, 43, 0, 40,117,174, 28,240,211,185, 95,166,159, 60, 19,251,113,196,208,190,206, 95,175,120,
+ 5,255,252,238, 24,108,228, 18,112, 22, 51, 94, 25,232, 51,126,229,223,218,142,242,113,151,122, 29,142,201,187, 56,111, 93,226,
+ 82,141,198,152,130,230,199,189,227, 0, 92, 3, 16, 4, 96,212,163,233, 21, 0,106, 1,212, 60,250,253,143,143,190,183,154,145,
+181, 32,171, 88,135, 99, 71, 14, 33,254,122, 52,146,146,146,171,147,238, 37,125,201, 99,184,117,181,197,169, 42, 32,181,197,235,
+206,220,224, 29,131,104,248,206,194, 38,212, 10,100, 31,197,157,252,108, 64,240,160,191,247,114, 14,236, 3, 71,191,135, 53,101,
+101, 94, 34,114,127, 59,116,172,186, 64, 52, 1,184,107,170,125,202,247,216,211,167, 85,176, 69, 32,198,149, 95, 78,129,179, 88,
+ 54, 1, 0,103,177,108,186,253,235,169,217, 61, 34,102,194,201,205,175,147, 58, 39,174,201, 71,249, 52, 70,198,176,149, 63,237,
+248,232, 96, 86, 86, 22,238,223,191,143,180,180, 52,168, 84, 42,236,217,115,169, 69,207,106, 42,205,184,122,158, 39, 96,134, 77,
+122,253,157, 19,145, 47, 71, 74,125,253, 3,249,109,188,237,224,108,203, 32, 57, 61, 31,233,137,169,150,180,132,139, 58, 78, 91,
+ 50,182, 52,253, 74,163,189, 35, 46, 33,227,221,249,124,211,187,209,199, 31,142, 45, 56,100,204,140, 54,255, 55,111,113, 79, 39,
+103,199, 6,247,227,170,242, 10,113, 84,212,202, 54,117,211, 55, 55, 22, 33, 95, 32,168,158, 53,123,190,130,207,227,215,159, 6,
+228,234, 86, 91,221, 63, 28, 7,240, 0,145,144,105,246, 45,155, 30,217, 23,172,197,130, 26,173, 17, 53, 26, 35,212, 53, 58, 20,
+149,169,113,247, 94, 58,110, 92, 58,141,172,244,180,106,150,101, 99,192,225, 72,169,115,229,254, 6, 30,172,219,120, 15, 43, 4,
+190, 78,142,182,200,170,208, 65, 38, 98, 80,144,147,198, 26, 89,221, 83, 63,100,189, 60,254, 68,161,160,253,232, 23, 95,127,235,
+ 31,103,194,195,251,217,117, 12,235,170,112,177,179,133,136,225, 33, 61,167, 24,119,226,126,171,125,144,114,187,202,108,210, 14,
+ 47,191,123,226, 15,143,210,242, 63, 91, 96, 25,205,236,144, 69,255,248,228,156,217,108,150, 49, 2,129,214,196, 89,134,255,145,
+226,234,175,194,113,150,188,183,222, 94,242,187, 3, 2,147,217, 34,251,219, 91,139,181,143, 31, 32,240, 76,102,121, 93,207, 21,
+199,113, 77,245,106, 8, 74,213,250,234,101,223,196,239,252,116,231,189, 67,120,248, 4,215,188, 63, 58,159, 21, 85,134,120,231,
+161, 7,198, 84,107, 88, 30,128,164, 6, 50,107, 7, 13, 26, 84, 95,108, 61, 58, 93,103,245,254, 82, 44,149,207, 30, 56,106, 6,
+ 63,250,216, 22,203,111, 49,199, 38, 60, 77,113,245,248,219,175,211,233,174,235,116,186,196,247,222,123,175,155,187,187,187,251,
+202,149, 43,165, 85, 85, 85,194,175,191,254, 90, 87, 86, 86, 86, 84, 85, 85,117, 21, 45,187,174,197, 82,145,119,231,245,159, 14,
+155,190,229, 29,218,250,162,163,155,215, 48, 7, 23,159,214, 21,165,121,233, 85,229,121,103,120, 22,156,175, 41, 77,185,218,210,
+ 25,141,143,143,207, 9, 13, 13,253, 81, 32, 16,120,155,205,102, 23, 30,143,103,195,113, 92, 5,203,178, 21, 22,139,165,176, 37,
+197,213,227, 69,150, 79,219,190,123,203,181, 22,177,145, 39,221,251, 32,118,135, 30, 0, 74,206, 47,209, 0, 56,142, 1,255, 23,
+121,236, 74,214,151,119, 43,236,230,151,198,254,243, 68, 75,243, 11,110, 31, 8,250,179,218,191,174,240, 94, 30,128,233,119,110,
+226,243,196,184,171,171,120, 28,132,102,176,107,180, 37,105, 55,255,140,124,161, 80,168,235,218,181,107,131,119, 11, 74, 36,146,
+166,159, 91, 22, 27,203,150, 0, 91,208,191,255,142, 51,209,151,166,159, 62,255,235,199, 61,123,245,117,150, 74, 60,225,231,104,
+196,142, 37, 93,254, 30, 29, 87,122, 99,244,146,139,223,100, 20,232, 18,208,244,245, 87, 13, 73, 3, 80,249,168, 39,107, 51,128,
+ 89,143,182,173,196, 22, 23, 2, 22,188,214,171, 87,247, 61, 60, 30,143,225, 88,203, 63,175, 10, 5,123,117,133, 73,121,248,131,
+195,135,116,244,183,195,172,217,179,131, 3, 2,255,117, 23, 97,251, 23,108, 49,121,250, 27,193,126,173,130,235,127,214,198,167,
+153, 3,170,194, 56,109,141, 91,232,208,228,115,107, 87, 56,167, 95,126, 75,230,228,109, 83, 91,150,173,170,200,190,185, 86, 83,
+226,190,182,129, 17, 26, 90, 36, 43,237,238,186,173,159, 47, 93, 92,152,159,190, 69, 83,154,250,240,172, 67,105,106, 98,210, 45,
+172, 40, 43,202, 91, 92, 94,146,177,246,105,215, 69,109,109,109,193,238,221,187, 29,250,244,233,195,119,119,119, 71,105,105, 41,
+ 98, 98, 98, 44, 22,139, 37,191,165, 89, 37,169,151, 98, 16, 16,224,180,119, 71,229, 63, 25,153,237, 8,214, 12, 79,142,227,192,
+240,121,133, 70,125,229,153, 82, 7,237, 18,220,185,214,100, 59,226, 44,102, 30,199,231,248,117, 99, 11, 90, 44, 22,222,103, 95,
+237,202, 22, 8,197, 13,158, 82, 53,155, 12,114,139,197, 98,245, 88,132,197,130, 7,206,161,166,182,205,223,197,199, 1,137,188,
+251,205, 28,156,114,103,123, 71, 76, 29,198,178,102,211,163,237,163,238,171,132,227,120, 23,192, 51,159, 43,115,170,190,218,146,
+162,234,119, 59,122,163,209, 1,124, 17,108,229, 38,240,193, 67, 85,101,165,196,213, 44, 78, 42,251, 3,109,169,228,238,241,187,
+ 37,253,251,251, 25,126,190, 48, 45,246,210,229, 9,156,197,226,111,230, 0,112,188, 44,131, 81,119,176,196,174,108,231,211,206,
+239,255, 26,222, 95,156,111,213,233,146,255,194, 76, 17, 0, 23, 60,124, 36,126,241,159, 60,159,141,142, 45,248, 71,150,221, 70,
+217,182,175, 68, 42, 95,162,209, 84,111,209,150,164,158,248,147,215,167,189, 68, 34, 9,179,177,177, 17,150,149,149, 93,127,244,
+161,246, 44,190,239,245,250,190,190,205,101,208,176,222,239,156,255,233,198,134, 71,167, 15,235,121,141,255, 66, 58,121, 68,248,
+194, 93, 71, 78,174,107,224, 46,194,255,249,101,255,203, 50,251,247,103,220, 42,236,166,155,205,150, 53,131,130,171, 53, 69,153,
+201,115, 46,221, 41,189, 14,160,250, 15,206,231,164,199,122,176,246,254,183, 44,187,107,251, 49,239,131,135, 16,171, 19, 56, 36,
+149,222, 61,182,178,217,249, 12, 9, 17,201, 75,225,168, 41,115, 41,127,138,194,234, 63,209,150, 4, 29, 58,116,232, 39, 18,137,
+124,205,102,179,220, 96, 48,104,180, 90,109, 86,118,118,246, 21, 52, 62, 32,249, 95, 58,159,110,161, 99,214, 9,133,194,183, 1,
+192,100, 50,109, 40, 73, 60,182,160,169, 23, 54, 49,253, 95,191, 62,199,143, 23,224,208, 33,243, 95,241, 30,121,118,126, 89,109,
+ 50,177,245, 99, 15,137,132, 76,101,254,237,195, 14,255,193,182, 68, 90,248,166, 82, 38,101, 82, 38,101, 62,137, 79,235,147, 50,
+255,147,153, 30, 33, 35,125, 60, 66, 70, 90,253,176,228, 70,166,167,245, 73, 26,197,208, 42, 32,132,252, 7, 88,104, 21,144,255,
+164,194,164,147,185,127,229,244,132,240,154,168, 66, 91,210,245,247, 52,149,108, 34,101, 82, 38,101, 82, 38,101, 82, 38,101, 62,
+119,153,205,101,211,169,199,191,168,240,162, 76,202,164, 76,202,164, 76,202,164,204,231, 47,243,153,194,167, 85, 64, 8, 33,132,
+ 16, 66, 5, 22, 33,132, 16, 66, 8, 21, 88,132, 16, 66, 8, 33, 84, 96, 17, 66, 8, 33,132, 16, 42,176, 8, 33,132, 16, 66, 8,
+ 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132,
+ 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,127, 29, 26,105,156, 50, 41,147, 50, 41,147, 50, 41,147, 50,159, 59,244,
+ 36,119, 66, 8, 33,132, 16, 42,176, 8, 33,132, 16, 66,168,192, 34,132, 16, 66, 8,161, 2,139, 16, 66, 8, 33,132, 80,129, 69,
+ 8, 33,132, 16,242, 95,131,135,198,239, 4, 72,108, 65,206,211,220, 77,144, 72,153,148, 73,153,148, 73,153,148, 73,153,207, 93,
+102,115,217,137, 32,127, 73,225, 69,153,148, 73,153,148, 73,153,148, 73,153,207, 95,230, 51,133, 78, 17, 18, 66, 8, 33,132, 80,
+129, 69, 8, 33,132, 16, 66, 5, 22, 33,132, 16, 66, 8, 21, 88,132, 16, 66, 8, 33,132, 10, 44, 66, 8, 33,132, 16, 66, 8, 33,
+132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16,
+ 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66,200, 95,136, 70, 26,167, 76,202,164, 76,202,164, 76,202,164,204,231, 14, 61,201,157,
+ 16, 66, 8, 33,132, 10, 44, 66, 8, 33,132, 16, 42,176, 8, 33,132, 16, 66,168,192, 34,132, 16, 66, 8, 33, 84, 96, 17, 66, 8,
+ 33,132,252,215,224,161,241, 59, 1, 18, 91,144,243, 52,119, 19, 36, 82, 38,101, 82, 38,101, 82, 38,101, 82,230,115,151,217, 92,
+118, 34,200, 95, 82,120, 81, 38,101, 82, 38,101, 82, 38,101, 82,230,243,151,249, 76,161, 83,132,132, 16, 66, 8, 33, 84, 96, 17,
+ 66, 8, 33,132, 80,129, 69, 8, 33,132, 16, 66, 5, 22, 33,132, 16, 66, 8,161, 2,139, 16, 66, 8, 33,132, 16, 66, 8, 33,132,
+ 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66,
+ 8, 33,132, 16, 66, 8, 33,132, 16,242, 23,162,145,198, 41,147, 50, 41,147, 50, 41,147, 50, 41,243,185, 67, 79,114, 39,132, 16,
+ 66, 8,161, 2,139, 16, 66, 8, 33,132, 10, 44, 66, 8, 33,132, 16, 42,176, 8, 33,132, 16, 66, 8, 21, 88,132, 16, 66, 8, 33,
+255, 53,120,104,252, 78,128,196, 22,228, 60,205,221, 4,137,148, 73,153,148, 73,153,148, 73,153,148,249,220,101, 54,151,157, 8,
+242,151, 20, 94,148, 73,153,148, 73,153,148, 73,153,148,249,252,101, 62, 83,232, 20, 33, 33,132, 16, 66, 8, 21, 88,132,128, 85,
+ 79,218, 0, 0, 32, 0, 73, 68, 65, 84, 16, 66, 8, 33, 84, 96, 17, 66, 8, 33,132, 80,129, 69, 8, 33,132, 16, 66,168,192, 34,
+132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16,
+ 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132, 16, 66, 8, 33,132,252,133,104,164,113,202,164, 76,202,164, 76,202,164,
+ 76,202,124,238,208,147,220, 9, 33,132, 16, 66,168,192, 34,132, 16, 66, 8,161, 2,139, 16, 66, 8, 33,132, 10, 44, 66, 8, 33,
+132, 16, 66, 5, 22, 33,132, 16, 66,200,127, 13, 30, 26,191, 19, 32,177, 5, 57, 79,115, 55, 65, 34,101, 82, 38,101, 82, 38,101,
+ 82, 38,101, 62,119,153,205,101, 39,130,252, 37,133, 23,101, 82, 38,101, 82, 38,101, 82, 38,101, 62,127,153,207, 20, 58, 69, 72,
+ 8, 33,132, 16,242, 39, 99, 26,252, 97,247, 53,197, 44,203,186, 1, 0,195, 48, 37,166, 27,203,149, 77,133,248,120,120, 12, 49,
+ 3,223, 3,128, 0,120, 35,175,176,240,124, 3,153,231, 89,150,117,124,148, 89, 97,186,177,252,197,166, 50,133,221,215,156,123,
+124,122,246,198,242,161, 79, 78,195, 1,124, 97,247, 53,133, 79,204,171,135,181, 11,207, 3, 44,255, 63,230,243,127, 37,243,121,
+ 38,236,177,166,216,100,122,216,142,132, 66,166,196,120,189,233,118, 36,234,177,166,240,241,233, 77,215,151,187, 63, 57,141,184,
+215, 71, 57, 38, 19,235, 1, 0, 18,177,184, 52,200,207,125,125, 83,153, 25,185, 37,239,104,117,122,215, 71,153,133,134,171,255,
+240,253, 95,221, 54,173,229,238,238,222,149,207,231, 47,231,241,120,118,143,253, 56,161,160,160,224, 29,106,149,132,144,103,174,
+192, 98, 89,214,237,214,209, 85,168,213, 3,131,167,174,113,107, 53,118,243,158, 39,167, 49,233, 42,196,154,212, 99,237, 4, 38,
+181,163,131,140,115, 76, 77, 77,229, 3,128,167,167,231,247, 0,124, 27,200,116,188,117,116, 21, 52, 6, 32,124,226,106,199, 78,
+126,126,118, 85, 60,222, 34,153, 76, 54, 72,167,211,181, 7, 0,169, 84,122, 87,171,213, 94,176,227,184,207,159,156,190,177, 5,
+120,124, 94, 7, 77, 89,227,214, 58,242,251,191,155,205,102,177, 62,227, 64,127, 75,245, 3, 70, 96, 54,124, 53,188,176,240,244,
+119,128,217,154, 21,242,248,223,237,255,234, 63,156,125, 60, 60,134,200,228,242,174,114, 27,155,126,102,179, 57,196, 98,177,192,
+ 98,177, 36,105,107,107, 47,177, 38,211, 77,179, 73,227,124,235,199,143, 44, 77,205,231,147,203,210, 5, 96, 74,148,202, 9, 50,
+ 27,155, 1, 2,129,160, 15, 0,152,205,230,203,218,154,154, 95,220,138,138, 14, 90,179,236,214,174,159,167,157,254,121, 99, 50,
+177,110,153,103, 87, 65,111, 2,194, 94,254,216,173,227,107, 59,247, 2,128,161, 36,222,189, 38,245,120, 15, 0, 80, 4,142,188,
+ 46, 81,134, 21, 3, 0,243,160,208, 45,229,228,123,208,155,128,144,145,171,221, 26,202, 52, 24,140, 62,105,167, 86, 64,111, 2,
+254, 22,117,200, 99,201,236,241,114, 0,136,249,241,187,192,115,135, 54,188, 4, 0, 47,142,127,251,167,129, 99,223, 76, 7,128,
+207,190, 61,228,177,251,195,241,208,155,128,208, 49, 31,248, 60,237,182,201,234, 43, 69,234,148,147, 65,166,170, 2, 71, 31, 5,
+163,108,233,182,105, 15,216,215, 0,243,120, 2, 65,223,160,160,160, 46, 0,144,158,158,126,203,194,178,191,218, 0, 95,253,153,
+109, 73, 32, 16,252, 61, 63, 63,127,212,227, 63,243,242,242,162, 6, 73, 8,121, 54, 11, 44, 0,168,213, 3,177,105, 64,255,158,
+ 29, 49,107,242, 75, 54,143,255,238,199,237,159,248,228,223, 61, 23,242,217,190,245,130,214,173, 91, 35, 53, 53,213,170, 63,166,
+ 49, 0,191,164, 2, 18, 93,150,173, 70, 40,204,136, 90,190,220,174,111,223,190,140,167,167, 39, 0,160,164,164,164,231,165, 75,
+151,186,174, 94,189,122,142, 68,151, 85,161, 49,160,250, 23, 43,162,235,230,181,125,235, 23,240,222,252,137,246, 0,176,126,209,
+193,174,167,174,196, 59,101,101,101, 13,254,232,163,143,202,189,174, 94,221,100, 99,177,108, 75, 46, 46,206,181,102, 62,247,159,
+142,147, 5, 25,207,183, 26, 63, 99,198, 17, 95, 95, 95,185,183,183, 55, 79, 42,149, 66, 32, 16,160,166,166,198, 51, 57, 57,121,
+200,237,219,183,181, 23,175, 30, 19,198,199,141,203, 44, 16,134,105,173, 89,118, 17, 91, 38,173, 13, 14,190, 55, 62, 34,194,123,
+228,200,145, 82,127,127,127, 0, 64, 86, 86, 86,240, 79, 63,253, 52,233,212,169, 83, 43, 69,108, 25,171, 49, 64,215,220,178,215,
+101, 2,128, 16,232,237,228,230, 54, 89, 40, 20,134,178, 44,235,245,168,119, 33,223,100, 50, 37,170, 74, 74,118, 63, 57, 61,249,
+119,122, 19,144, 84, 8, 12,233, 23,134, 41,227,134, 40, 0, 96,233,171, 31,246,124,144,149, 38, 50, 24, 12,104,221, 38,164,207,
+ 7, 31,127,113, 22,124, 62,126, 56,242,115,253,244, 77, 22,182, 28, 31,169, 37, 64,194,253, 76,172,250,112, 35, 87,148,112,168,
+ 27, 91,113,111,104,121, 89, 25, 3, 0,206, 46, 46, 19,246,239,221,125, 94,217,113,252,111,233,197,181,245,211, 91,211,222, 27,
+218, 54, 79,237,219,232,153,159,120,161,221, 55,103,183, 8,125,125,125,145,152,152,216,162,109, 19,149,201,182,114, 15,143,164,
+168, 37, 75,148,225,225,225, 80, 40, 20, 16, 10,133, 48,153, 76, 67, 46, 95,190, 60,100,213,170, 85,115,170, 42,147,107,173,221,
+ 54,173,232, 59,252,220,189,117,255,129,145,163, 71,120, 12,234,223, 19,227,134,247,161,134, 72, 8,121,118, 11, 44,134, 97, 74,
+134, 78,251,200,173, 95,143, 80,252, 22,159, 82,153,149, 83, 84, 83,247, 59,245,253,163,193,179, 35, 59,133,110, 62,117, 18, 70,
+163, 17, 87,174, 92,193,205,155, 55,113,229,202, 21,238,243,207, 63,215, 10,128, 55, 26,201,172, 8,159,184,218, 81,162,207,181,
+233,226,156,235,191,127,239, 47, 2,173, 86,139,216,216, 88, 84, 84, 84, 64, 34,145,192,203,203, 11,253,250,245, 99, 98, 98, 98,
+156, 94,157, 52,217,254,197,177, 51, 51,245, 18,159, 26,134, 97, 42,216,198, 22,128, 97, 74, 6, 79, 93,227,214, 46,248, 5,164,
+103, 23, 84,190,247,241,150, 26,139,153, 99,116, 15,242,140, 23, 47, 94, 68,231,206,157,177,127,255,126,231,138,138,138, 21, 59,
+118,236, 88,238,254,229,246, 13,197,121,201,139,208,120, 94, 69,248,196,213,142,173,205,209,190, 7,247,108, 19,197,199,199,139,
+ 54,109,218, 4,149, 74, 5,177, 88, 12,123,123,123, 40,149, 74,180,110,221,154, 55,103,206, 28,249,192,129,169,120,111,209, 12,
+223, 34,199,200,228,198,230,179, 46, 83,100, 40,148, 7, 11,110, 6,126,191,115, 39,191,123,247,238,188,199,167,241,245,245,197,
+128, 1, 3,164,145,145,145,129,115,230,206,183, 12,137,124, 51,221, 40,246,208, 52,151,137,218, 92,153,179,230,170,231,144,137,
+ 19, 79, 68, 69, 69, 57,120,120,120, 64, 46,151, 3, 0, 42, 43, 43,189,179,179,179,123,174, 90,181,106,252,245,132,253, 76,248,
+200,220, 2, 40,124,180, 77,173,207,231,149, 80,200,148,212,245, 68,217, 42,100, 21,185,121,197,181, 15,123,161, 12, 48, 24, 12,
+208,235,245,120,107,206,155,130, 55, 94,238, 30,228,215,239,239,183,179,242,139, 85, 33, 63, 95,115,170,123,173,169,225,204,178,
+118,163, 63,112, 4, 0,126, 85,102,109, 69,246,185,191,189,187, 96,129,151, 82, 57, 27, 34,145, 8, 0,176,125,219, 54,166,188,
+188, 60,226,131, 15, 62, 8,229, 20,131,171,218,141,254, 64,241,232,181, 21,166, 22,110,155, 21, 41, 39, 91,125, 56,111, 88,167,
+239, 63, 62, 9,179,217,140,107,215,174,225,226,197,139,248,226,139, 47,184,211,167, 79, 87,218, 41, 20, 77,110,155,168, 76,182,
+237,235, 81, 20,240,233,167,135,121, 98,177, 24,199,142, 29,195,253,251,247,193,231,243,209,177, 99, 71, 76,153, 50, 5, 67,134,
+ 12, 81,206,154,245, 38, 23, 62,252,213, 12,216,183,169,254, 99,109, 41,138,207, 58,222,249,251,188, 89,175,121,188, 60,102, 24,
+ 54,126,249, 13, 21, 88,132,144,103, 27, 7,240,252,199,110,222,123,240, 22,119,210,127,236,230,189, 28,192,227, 0,158, 4,240,
+ 29, 52,104,144,161,166,166,134,139,143,143,231, 38, 76,152, 80,177,116,201,146,173, 59,183,111,143,210,107, 52,111,117,233,212,
+105, 10,247,240,209, 15, 13,103, 58, 56,216, 5, 4, 4,148,230,230,230,114,167, 79,159,230, 86,175, 94,205,237,217,179,135, 59,
+115,230, 12, 23, 29, 29,205,157, 57,115,134, 59,112,224, 0, 23, 31, 31,207,165,165,165,113,129,129,129,165,254, 14, 14,118, 77,
+100,242, 57,128, 31, 20,249,221,162, 67, 55,205, 81,193,145,223,191,195, 1,252, 64,165,178,205,208,161, 67,205,135, 15, 31,230,
+118,239,222,205,237,220,185,147, 75, 72, 72,224,202,202,202, 56, 47,191,128,210,186,215, 53, 54,159, 28,192, 11, 11, 11, 43, 85,
+171,213,156,175,175, 47, 39, 18,137, 56, 55, 55, 55,174,117,235,214, 92,207,158, 61,185,225,195,135,115,147, 38, 77,226, 86,172,
+ 88,193,169,213,106,206,207,207,175,184,238,117,141,101,246,244,242,146, 6, 6, 6,230,220,185,115,135,107,140, 78,167,227,202,
+202,202,184, 11, 23, 46,112,129,129,129, 57, 61,189,188,164, 77,101, 10,129,176,208,208,208,210,178,178, 50,206, 98,177,112, 26,
+141,134, 43, 47, 47,231,202,203,203,185,138,138, 10,206, 96, 48,112, 22,139,133,179, 88, 44, 92,114,114, 50, 23, 16, 16, 80, 34,
+ 4,194, 26,203,124,206,219, 60,191,161, 47, 47,119,247,225, 74,165, 82,123,248,240, 97, 46, 63, 63,159,219,177, 99, 7,199, 7,
+ 62,124,114,186,134, 50,199,135,140, 23,133,133,205,146, 9, 4,178,151,122,247,238,109,190,114,229, 10,119,235,214, 45,238,221,
+119,223,229, 70,141, 26,197,141, 30, 61,154,139,138,138,226,114,114,114,184,220,220, 92,238,197, 23, 95, 52, 11, 4,178,151,194,
+194,102,201,198,135,140, 23,181,100,219,148, 2, 62, 35, 71,142,212, 26,141, 70, 46, 35, 35,131,107,223,190,125,158, 0,152, 44,
+ 2, 66, 2, 0,113,115,237,211, 14,112,240,240,240, 40,188,122,245, 42,119,248,240, 97,206,207,207,175, 84, 0,188, 46, 1,252,
+ 37,128,191, 0,120,189, 85,171, 86,165, 87,175, 94,229,202,202,202, 56, 95, 95,223, 66, 59,192,225,233,219, 82, 20,223,173,253,
+216,109, 31,124,121,152, 75,206,171,229, 62,248,242, 48,231,222,122, 64, 14,199,113,156,135,135,199,121,106,145,132,144,103,178,
+ 7,171, 49,124,153,108,213,199, 31,127, 44,210,106,181,120,255,253,247, 75,223,154, 61,123,141,139,155,155, 81, 40, 20, 66, 40,
+145, 52, 31, 96,103,247,206,178,101,203, 28, 12, 6, 3,226,226,226,208,165, 75, 23, 72,165, 82, 8,133, 66,136, 68, 34, 48, 12,
+ 3,165, 82,137,178,178, 50,184,187,187, 99,206,156, 57,246, 95,109,220,248, 14,212,234,247,155,138,181,152, 57, 6, 0,204,102,
+179,216,199,211,115, 86,251, 14, 29, 62,159, 51,103, 14, 95,161, 80, 64,175,215, 67,175,215, 35, 57, 57, 25,206,206,206,144,203,
+100, 86, 45, 51,159,207,231,219,216,216, 32, 54, 54, 22,219,182,109, 67,102,102, 38, 10, 10, 10, 96,103,103,135,206,157, 59, 35,
+ 36, 36, 4,125,250,244, 65, 90, 90, 26,120, 60, 94,179, 31, 50,197, 2,193,188, 41, 19, 39,186,133,134, 54,124,103,171, 94,175,
+135, 90,173,134, 90,173,134,187,187, 59, 34, 34, 34,220, 78, 28, 59, 54, 15,192,218,134,166,151, 3, 74,255,224,224, 19, 55,110,
+220,112,225,243,249,136,141,141,133, 70,163,129, 78,167, 3,203,178,224,241,120,144, 74,165,232,213,171, 23,156,157,157, 17, 28,
+ 28,140,163, 71,143,186, 14, 29, 58,244, 39,121,113,113, 24,128, 66,106,254,205,203, 43, 46, 62,215, 5,112,126,237,181,215, 78,
+ 39, 36, 36,132, 79,158, 60, 25,197,197,197,255, 16,188,251,110,133, 25, 88,215,212,107, 15, 38, 29, 98,189, 1,133,147,171,235,
+119,159,124,242, 9,191,168,168, 8, 11, 23, 46, 44, 47,200,205, 93, 38, 5,174, 2,192, 79,199,143,247,218,181,107,215,199,187,
+119,239,118,222,185,115, 39,191, 75,151, 46,155, 75,226, 54,183,187, 5, 84,182,164,114,209, 1,127, 95,191,126,189, 84,167,211,
+ 97,232,208,161, 25,154,172,172,142, 44,160,181,246,245, 53,192,188,168, 37, 75,148, 18,137, 4,139, 23, 47, 46, 43,123,240,160,
+ 61, 11,148, 62, 54, 73,182, 34, 51,243,244,212,169, 83,239, 38, 36, 36,184,172, 91,183, 78,249,114,100,228, 60, 0,107,172,253,
+ 27,255,186,160,157,111,103,182,137, 13, 30, 59, 60,194,189, 77, 43, 55, 28, 62,118, 22, 95,109,222,179, 29,234,244,239,188,188,
+188,230,241,249,252,207,168,229, 17, 66,158,171, 2,203,209,209,177,107, 96, 96, 32,162,163,163,209,182,109,219,163,110,117,197,
+149, 80, 8,179,185,249,107,200,101, 10,197,224,240,240,112,230,202,149, 43,240,247,247,135, 76, 38,171, 47,172,234,138, 44,161,
+ 80, 8,165, 82,137,202,202, 74,244,237,219, 87,184,109,219,182,193, 0,222,111, 46,187, 48, 59,217, 6, 25,219, 94, 91,253,193,
+ 7, 1, 93,187,118,133,209,104,124, 88,136,200,229,208,235,245, 16, 10,133, 48, 26,141,208, 25,184, 42,107,150,213,108, 54,155,
+ 5, 2, 1,124,125,125,177,114,229, 74,232,116,186,250,211, 58, 85, 85, 85, 80,171,213,136,139,139, 67, 86, 86, 22, 44, 22, 11,
+215, 92,158,220,198, 38, 98,244,232,209,226,134,126,103, 48, 24,234,139,171,202,202, 74,232,116, 58,116,234,212, 73,124,225,194,
+133,136,198, 10, 44,158, 84, 58,126,231,206,157,110, 98,177, 24, 58,157, 14,169,169,169, 72, 79, 79, 71,114,114,178, 94,165, 82,
+177, 54, 54, 54, 60, 15, 15, 15, 65,101,101,165,120,234,212,169,188,234,234,106, 0, 64,100,100,164,243,246,173, 91, 95,129,193,
+176,142,154,191,117,110, 1,250, 64,131, 97, 84,247,238,221, 47,252,246,219,111, 93,222,126,251,109, 36, 36, 36,252, 83,190,127,
+255, 69, 13,112,187,201,118, 9,204,249,108,233, 82, 15,133, 66,129, 41, 83,166,168, 52,185,185, 29, 89,160,232,177, 73, 82,156,
+179,178,206, 76,155, 54, 45, 49, 33, 33,193,113,221,186,117,202, 87,198,143,159, 3,224,227,150,204,163,189,189,125,119,165, 82,
+137, 51,103,206, 32, 39, 43,107,105, 75,138, 43, 0,224, 9, 4,125,251,247,239,143, 31,127,252, 17,121, 15, 30, 44,125,162,184,
+ 2, 0,212, 2,165, 76, 70,198,210,237,219,183,111,155, 49, 99, 6,248, 12,211, 23,172,245, 39, 8, 27,186,160,253,173,165,159,
+225,232,153,107,219, 75,238,118,248, 27,240,163, 5,192, 13,106,113,132,144,103, 65,139,158,131,213,170, 85,171, 86, 18,137, 4,
+217,217,217,232,209,163, 71,150, 80, 44,134, 68, 44,134, 68, 38,179,238, 40, 91,167,235,160, 84, 42, 81, 85, 85, 5, 23, 23, 23,
+136, 68, 34,136, 68, 34,136,197, 98,136,197,226,250,239,109,109,109,193,231,243,225,229,229, 5,157, 78,215,161,185, 92,182, 50,
+213,237,236,142,165,115, 79, 29,221, 21, 16, 25, 25, 9, 79, 79, 15,120,121,121, 66,161, 80,128, 97, 24,248,250,250, 34, 48, 48,
+ 16, 91,183,110, 5,207, 46,248,186, 53,243,250,120,209, 36, 16, 8, 96, 54,155, 81, 92, 92,140,228,228,100, 36, 36, 36,224,234,
+213,171,136,139,139, 67, 77, 77,141, 85,203,174,209,104, 58, 55,212,209,245,100,113,165, 86,171, 81, 90, 90,138,244,244,116, 84,
+ 87, 87,135, 53, 90,236, 58, 59,143, 11, 13, 13, 21, 0,128, 84, 42, 69,171, 86,173,240,237,183,223,178,231,207,156,121, 69,246,
+219,111, 14,230, 11, 23,236,247,254,240,195, 43, 51,103,206, 52, 95,191,126, 29, 85, 85, 85, 72, 73, 73,129,171,171, 43, 35,145,
+201, 94,161,166,223, 50,233, 64,173,162,186,122,120,239,222,189, 51, 43, 43, 43,241,217,103,159,241, 25, 91,219,239,222, 4, 4,
+ 77,110, 96, 2, 65,191,129, 3, 7,226,216,177, 99,200,123,240,224,221,242,223, 23, 87, 0,128,114,160, 40, 43, 61,125,233,246,
+237,219, 17, 17, 17, 1,134, 97,250,181,116,254,122,246,236, 25,202,113, 28,238,220,185, 3, 49,112,173,165,175, 15, 10, 10,234,
+ 98, 99, 99,131,251,247,239, 67, 8, 92,108,108, 58, 33,112, 49, 46, 46, 14, 50,153, 12,237,218,181,235,218,178,191, 34,252,220,
+189,117,255,194,183,150,126,134, 35,103, 46, 3, 0,126, 60,113,186,248, 97,113, 21,101,161, 86, 70, 8,121,110, 11, 44, 0,224,
+ 56, 14, 2,129, 0, 34,134,129, 76, 34,129, 88, 34,129, 88, 40,180,254, 72,153,199,131, 68, 34,249,183,162,170,174,208,170,251,
+ 87,161, 80, 88,157,105, 42,252, 53,124,250,180,169, 98, 27, 27, 27,152,205, 44, 24,134,129, 92, 46,135, 82,233,142, 54,109,218,
+ 64,165, 82, 97,212,232,177,186, 7, 42,230,132,208,123,112,194,211,172, 40,150,101, 81, 91, 91,139,138,138, 10,168, 84, 42, 84,
+ 85, 85, 65,167,211,193,138,179,131,245,117, 90, 78, 78, 14,246,237,219,135,242,242,242, 70,139,171,140,140, 12,236,218,181, 11,
+ 89, 89, 89, 16, 8, 4, 86,191, 63,131, 7, 15,198,201,147, 39, 5, 3, 6, 15,222,242,192,207,175,240,129,159, 95,225,128,193,
+131,183, 28, 63,126, 92,224,229,229,133,156,156, 28,196,197,197, 65,165, 82,193, 98,177,208, 53, 88, 79,161, 0,168,208,168, 84,
+ 51,254,241,143,127,112, 54, 54, 54, 88,187,118,109,231,173,192,164,166, 94, 19, 16, 24,216,197,198,198, 6, 73, 73, 73,144, 55,
+ 81,184,200,129,139,183,110,221,130, 76, 38, 67,155,144,144,174, 79,179, 93, 90, 44, 22,152,205,230, 6,159,239,102,205,118, 41,
+ 20, 10,193,231,255, 85,207, 30,142,226,179,142,157,254, 62,111,222,124,143,191,207,127, 11, 23, 98, 31,214,128,130,154,140, 84,
+ 42,174, 8, 33,207,162, 22,157, 34, 76, 79, 79,207,210,233,116, 33,254,254,254,184,123,247,174,127,251, 14, 29, 18,132, 66, 33,
+ 36, 66, 97,211,135,241,143, 72,165,210, 59,197,197,197,125,188,189,189, 97, 50,153,234, 79, 9,214,157, 38,172,251, 30, 0, 36,
+ 18, 9,146,146,146, 32,149, 74,239, 52,187, 16,230, 26,191, 86,173, 90,161,168,168, 24, 18,137, 4,142,142, 14,144,201,100,144,
+ 72,164,248,248,227,143, 45, 91, 54,111,254, 90,210,126,158,122,193,204,165,220,141, 53,223,255, 71, 86,180, 92, 46,191,227,239,
+239,223, 75,161, 80,224,232,209,163,200,202,202,130, 90,173,174,191,110, 74,171,213, 66,175,215, 67, 42,149,162, 93,187,118,112,
+114,114,194,221,187,119, 27, 93,246,138,242,242, 35,137,137,137,189,186,117,235, 86,191,234, 7, 12, 24,192, 27, 48, 96,128,203,
+ 99,189,102, 40, 47, 47, 71,124,124, 60, 98, 99, 99,193,178, 44,238,221,187,103,214,107,181,251,169,233, 63, 29, 29,112, 89,176,
+125,251,182,217,179,103,207,236,211,167, 15, 56, 96, 4,128, 31, 26, 61,130,225,243,121, 12,195,128,199,227, 53, 89,248,240, 0,
+ 11,199,113,117,197, 78,139, 11,224,171, 87,175, 38,154,205,230, 62,173, 91,183,134, 30,232, 14,224,100, 75, 94,159,150,150,118,
+203,100, 50, 13,233,212,169, 19,142, 28, 60, 24, 14, 32,187,193,131, 25, 32, 60, 44, 44, 12, 90,173, 22,247,238,221,187,105,109,
+113,229,214,254,206,150,121,179, 94,123,253,229, 49,195,112,248,216, 89,252,120,226, 76,238, 55,159, 46,241,225, 56,139,145, 90,
+ 21, 33,228,185,239,193,170,172,172,252,237,254,253,251,232,217,179, 39,210, 50, 50, 34,245, 90,173,168,174, 23,139, 47,104,190,
+196,210,214,214, 70,255,250,235,175,108,231,206,157, 81, 83, 83, 83, 95, 84, 61,222,123, 85, 87,112, 41, 20, 10,156, 62,125,218,
+168,173,173,141,110, 46,215,204,154, 45,124, 62, 31, 60, 30, 15,122,189, 30,133,133, 69,208,233,244,248,254,251,239,177,117,243,
+230, 73,121,133,133,239, 64,226,168,253, 43, 86,160,181,159,133, 90,173, 54, 58, 58, 58,218,228,239,239,143,233,211,167, 99,193,
+130, 5, 88,176, 96, 1,222,124,243, 77,188,254,250,235,152, 60,121, 50,198,141, 27,135, 30, 61,122,192,213,213, 21,153,153,153,
+ 38,173, 86,219,232,178,115, 58,221,161,105,211,166,149,232,116, 58,152,205,102,232,245,122,104,181,218,250, 94,182,184,184, 56,
+ 28, 57,114, 4,155, 55,111,198, 79, 63,253,132,218,218, 90, 84, 85, 85,225,214,173, 91,106,129,201,116,128,154,254, 31,218,104,
+ 14,255,250,235,175,112,116,116,132,167,183,119,255, 38, 15, 74,210,210,110,155,205,102,116,236,216, 17,181, 64,163,211,214, 2,
+253, 59,119,238, 12,157, 78,135,164,123,247,226, 90, 58, 79,213,213,213, 55, 50, 51, 51, 49, 96,192, 0,120,120,123,127,238, 14,
+200, 90,242,122, 11,203,254,122,249,242,101, 76,157, 58, 21,126,173, 90,125,170, 0, 92,159,156, 70, 1,184,250, 7, 6,126,250,
+250,235,175,227,220,185,115,176,176,236,175,141,229,185,187,187,119,245,240,240, 56,238,233,233, 25,235, 30,120, 62, 59,114,120,
+207,215, 31,191,160,157, 83,167, 79,240,242,242,218,205,231,243, 23, 83,139, 34,132, 60,247, 5,150, 69,171, 93,189,108,217, 50,
+131, 64, 32,192,220,185,115, 93,191,250,230,155,213, 7, 14, 28,232, 22,127,231,142,210,160,215, 55, 95, 97, 85, 85,173,255,224,
+131, 15,212, 70,163, 17,109,219,182,133, 74,165,130,217,108,134, 64, 32, 0,195, 48, 16, 8, 4,224,243,249,144,203,229, 72, 76,
+ 76,196,254,253,251,171, 80, 85,181,190,217,249,178, 88,238, 28, 61,122, 20, 12,195,112, 82,169,180,190,232,217,184,113, 99,201,
+204,194,194, 35, 0, 32, 16, 8, 12, 0,192, 23,240,172,186, 42,151,207,231, 55,123,225,186, 88, 44,174,187,184,191,249,139,220,
+ 89,118,253,183,223,126, 91,157,154,154, 10,141, 70, 83,127,106,176,166,166, 6,213,213,213,245,223,215, 21,137, 23, 47, 94,172,
+150,179,108,163,203,174, 1,138,178, 82, 83, 71,117,235,214,173, 60, 59, 59, 27, 53, 53, 53, 72, 75, 75,195,213,171, 87,113,242,
+228, 73,196,196,196, 32, 61, 61, 29, 6,131, 1, 14, 14, 14,168,170,170,194,241,227,199,171,244, 53, 53,195, 52, 13, 92, 7, 68,
+254,197,199,195, 99,176,187,155, 91,174,171,139, 75,190,143,135,199,224, 6, 10,141,148,148,148, 20,152,205,102, 4, 4, 4, 56,
+ 53,117, 29,150,153,101,127,189,122,245, 42, 38, 79,158, 12,165,151,215,199,174, 13, 20, 46,174,128,171,135,183,247,199,211,167,
+ 79, 71,116,116, 52,204, 77, 20, 46,141,145, 2, 27,151, 44, 89,162, 21,137, 68,216,191,127,127,128, 93, 80, 80, 50, 3,188, 38,
+ 6,218, 6, 2,162,230, 94,111, 3,124,181, 98,197,138, 34, 0,216,189,123,183,139, 71, 96,224, 93, 6,152, 46, 5, 94,144, 2,
+ 47, 48,192,116,143,192,192,187,251,247,239,119, 97, 89, 22, 11, 22, 44, 40,178, 1,190,106, 44, 79, 32, 16,252,189,160,160, 96,
+ 84,126,126,126,120, 81,218, 21,159,111, 62, 93,130, 11,177,215,240,213,230, 61,219, 75,238,118,248, 91, 73, 73,254,141,130,130,
+130, 41,249,249,249,137,212,226, 8, 33,207,162, 6,187, 95,152,238,107,138, 1,206,173,127,207,142,248, 45, 62,185,210,217,209,
+254, 76,221,239,212,247,143, 6,191, 50,192,175,243,234,213,171,193,227,241,112,255,254,125, 36, 36, 60,188,172,233,179,207, 62,
+211,240, 57, 46,242,177,241,206, 66, 1, 36, 62,202, 60,207,178,172,163, 68,159,107, 19,230,152,217,234,135,157,219, 5,182,182,
+182,168,169,169,129, 64, 32,128, 84, 42,133, 66,161,128, 68, 34, 65, 66, 66, 2,166, 78,159, 97, 78,103, 59,253,235, 65,163,255,
+ 26,239,172, 62,179,238,249, 67,125,156,157,229, 57, 34,209, 34, 87,119,247, 37,243,231,207,151,133,135,135, 67, 44, 22,163,107,
+143,126, 69,178,206, 75, 54,240, 5, 60,182,160,172,114,121,224, 11,158,246,247, 82,179, 1,240, 74, 76, 55,150,123, 60,118,202,
+230,223,230,179,131, 52, 33,224,135,111,222,183,107,223,190, 61, 56,142, 67,101,101, 37,138,139,139, 81, 82, 82, 2,181, 90, 13,
+173, 86, 11,139,197,130,159,127,254, 25, 63, 95,207,168, 42,182,125, 49,163,177,249,252,215,178,103,219,134,200, 82,252, 55,172,
+251, 92,224,232,232,136,226,226, 98,148,149,149,213,159, 42, 52,155,205,168,174,174,198,177, 19, 63,153, 51,204, 29,178,244,146,
+ 23,170,155,203, 68,109,174,204,169,230,178, 87,215, 80,127,238,205, 55,223,180,181,179,179,131,197, 98,129, 74,165, 66, 86, 86,
+ 22, 82, 82, 82,112,233,210, 37, 77, 73,149,137,211,186, 12,205,171,127,208,104, 3,153,127,162,255,185,204,199,159,101,229,233,
+225, 81,248,224,193, 3, 55,179,217, 12, 47, 47, 47, 86,173, 82,125, 34, 6,206,137,128, 2, 30,192, 85, 3, 43,214,109,216, 48,
+ 99,204,152, 49,232,222,189,123,110, 81,113,241, 11, 13,181, 37, 14,224,123, 2,142, 34, 63,191,164,107,215,174,185,166,164,164,
+ 96,218,180,105,165, 5,185,185,139,236,128, 88, 0,168, 2,250,123,250,248,124,190,119,239, 94,215,208,208, 80,116,236,216,177,
+ 84,159,149, 21, 82, 0, 84, 52,210, 62, 27,221, 54, 43, 82, 78,182,154, 27, 25,218,237,173,183,222, 2,203,178,136,141,141,197,
+245,235,215,145,147,147,131,203,151, 47,171,237, 20,138, 87,155,218, 54, 81,153,108, 27, 17, 92, 27,176,123,247, 15, 60,145, 72,
+132,237,219,183, 35, 46,238, 97,103, 90, 88, 88, 24, 94,127,253,117,176, 44,139,201,147,167,112, 63, 37,203,254,245,160,209, 6,
+218,146,151,151, 87,168,197, 98, 89,203,227,241, 68,102,177, 91,183,162,204, 56,169, 71,235,190, 5, 69,169,131,125, 90,120,205,
+ 21,181, 79,202,164,204,231, 39,243,153,210,236, 88,132,107, 54,193,254,247,195,113,188, 81,120,108,251, 39,204,136,151, 70,133,
+ 44,127,111,153,160, 67,135, 14,176, 88, 44,232,222,189, 59,166, 77,155, 38, 15, 9, 9,105,110,188,179,154, 23,199,206,204,124,
+241,197, 23, 29,230,206,157,107,223,191,127,127, 97,221, 80, 57,119,238,220,193,169, 83,167,140,251,246,237,171,202, 23,247, 83,
+ 95, 62,189,181,198,154,241,206, 46,151,151,107, 0,188,223,218,104,220,188,226,189,247,162,218,119,232, 48,243,157,119,222,225,
+219, 40,228,194, 53,203,223,144, 2,192,135, 95,238,179, 31, 51,254, 53,172, 15, 2,250, 79,106,120,236,184,199,231, 51,175,176,
+228,193,107, 51, 38, 4,205,156, 28,105, 25, 59,118,172,220,222,222, 30, 62, 62, 62,112,112,112, 64,102,102, 38,238,220,185,195,
+157, 59,119,174, 38,254,126,142,112,215,129,115, 15,196, 54,110,214,140, 27, 88,253,226,152,105, 89,211,167, 79,119,140,140,140,
+180,109,223,190,189, 80, 40, 20, 66, 34,145,160,172,172, 12,121,121,121,198,152,152,152,154,124, 81,175,138,203,103,118, 84, 91,
+ 57, 22,161, 54,124,226,234,180,232,179, 81,239,196,199,199, 79, 1,208,201,104, 52,122,155,205,102, 30,159,207, 47, 52,155,205,
+ 9,186,154,154,109,108, 88,212,122, 26,139,208, 58,102,179, 89,100, 54,155,161, 86,171,113,254,252,121, 38, 61, 61,125,121,124,
+124,252,242,130,130, 2, 24,141, 70,140, 31, 63, 30, 97, 97, 97,248,229,151, 95, 80, 90, 92,124,162,169,172, 2,160,130,121,240,
+ 96,198,156, 57,115, 78,238,216,177,131,119,231,206, 29,215,109,219,182,253,112,235,214, 45, 0, 64,151, 46, 93, 48, 99,198, 12,
+ 48, 12,131,105,211,166,113, 57, 89, 89, 51, 88,160,162,137,246,217,212,182, 89,122,106,223,198,248,177,227,198,183, 91,181,226,
+ 61, 97,159, 62,125,224,234,234,138,126,253,250,193,104, 52, 58, 88,177,109, 86,135, 15,127, 53,163, 83,167, 78,138,117,235,214,
+ 41,103,204,152,129,121,243,230, 1, 0,180, 90, 45,206,157, 59,135, 5, 11, 22, 20,229, 48, 61,106,111,197,236,111,178,125, 62,
+234,153, 26, 10, 0,158,158,136, 5, 16,206,175,205,206,160, 11,218, 9, 33,207,117,129, 5,252,107,188,179, 75,215, 19,241,248,
+112, 28, 15, 57, 37,153,156, 34, 51,102, 44,248,164,157,192,164,118,148, 49, 6,199,132,248,120,126,102,102,102,147,127,172,110,
+188, 51,189,196,167,198, 92, 88,222,109,227,250,245,239,108,217,178,101,112,221,163, 24,164, 82,233, 29,109,109,109, 52,170,170,
+214,235,253,125, 46,180,116,236,188,148,242,242, 98, 0,179, 3, 45,150, 13,211,103,190,249, 25,207,198,135, 89,182,230,123,157,
+ 64, 32, 48,100,228, 23, 99,125, 16,160,176,226,121,168, 26, 3,112,167,220,141,189,203,245, 79, 94,251,201, 39, 11, 55,125,245,
+ 85, 15,153,141, 77,184,209,104, 12,177, 88, 44, 0,144,164,211,104, 46,178, 70,227,245,124,207, 89, 95,136,109,220, 56,107,199,
+ 13,212, 75,253,171, 21,218, 75,221, 14, 31, 60,248,246,233,211,167,255,109,217,109,129, 13,122, 59,255,104,107,150,253,241,105,
+ 76,192, 21,148,148, 92,105,170,171,146,198, 34,180, 14,159,227,222,112,116,116,252, 97,240,224,193,210, 33, 67,134, 96,196,136,
+ 17,232,221,187, 55, 44, 22, 11, 56,142, 67,117,117, 53, 14, 28, 56,128,127,254,243,159,169,238,192,234,230,242, 88,224, 12,115,
+236,216,232, 46, 93,186,108, 91,183,110,157,243,236,217,179, 33,123,244,104, 19,173, 86,139,152,152, 24, 44, 88,176,160, 60, 59,
+ 35, 99, 6, 11,156,105, 46,175,233,109, 83,154,194, 58,140,201,122,117,222, 39, 65,166,170, 2, 71,103, 57,171,188,155,120,199,
+234,109, 19,246,109,170, 43,227, 14,116,127, 57, 50,114, 30,159, 97,250,214, 61,138,225,222,189,123, 55,235, 6,123, 70,216,235,
+ 63,183,164, 45,113,220,195,103,207,113, 28, 71, 23,180, 19, 66,158,239, 2,139, 97,152,146,186, 94, 30,134, 97, 74, 50,127,156,
+245, 90, 83, 33, 62, 30, 30, 67, 30, 29, 29,163,185,177, 8,235,254,159,169, 86, 87, 63,122, 66,123,131, 15, 17, 21, 62, 49,125,
+ 75,198, 59, 75, 47, 46, 78, 6,240, 18,240, 0, 72,190,244, 48,175,251,154,119, 31, 95,166, 70, 87,200,239,254,174, 72,149, 87,
+ 92,124, 9,192, 37, 0,255,108,112, 62,125, 69,170,230,230,243,201,101,143,127,240,160,234,209,114, 55,188,236,110,205, 47,251,
+147,153,205,190,209,127, 96,125, 62,111, 10, 75, 75,127, 4,160,112, 57,121,210,253,212,201,147,175, 44, 92,184,240,101, 79, 79,
+207, 32, 23, 23, 23, 71, 91, 91, 91,254,181,107,215, 50, 13, 58,221,134, 64, 96, 71, 10,160,177, 38,147, 5, 78, 41, 51, 50,218,
+142, 30, 57,242, 29, 62,195,244, 13, 9, 9, 9, 3,128,164,164,164, 56, 11,203,254,234, 10,172,103, 1,149, 21,239, 99,203,182,
+ 77, 73,203,183,205, 74,160, 18,192, 26,176, 44,144,144,240,135,183, 77,139,197,178,198,203,203,171,154,158,208, 78, 8, 33,127,
+158, 80,202,164,204,103, 40, 83, 0,192,142,214, 39,101, 82, 38,101, 82,230, 95,146,249, 76,225,211, 42, 32,196,106,102, 0, 85,
+180, 26, 8, 33,132, 52,135,215, 68, 21,218,146,187, 3,158,166,146, 77,164, 76,202,164, 76,202,164, 76,202,164,204,231, 46,179,
+185,108,186, 59,241, 47, 42,188, 40,147, 50, 41,147, 50, 41,147, 50, 41,243,249,203,124,166,208, 41, 66, 66, 8,121, 36, 42, 10,
+124,142, 3,143,227,162,248, 28,119, 80,192,113,227, 5, 28,135, 63, 52,118,231,248,241, 13, 63,136,118,254,107,176,165, 53, 78,
+200,179,139,161, 85,240,159,163, 84, 42,125,221,221,221,191,227, 56,142, 87, 82, 82, 50,171,168,168, 40,135,214,202,127, 31, 39,
+ 39,167,193, 0,160, 82,169,162,159,213,101,108,231,143, 72,142,135,182,143,255,140,103, 65,206,189,236,223,143,179,216,238, 5,
+ 76,225,248,191,127,150, 22,143,195,253,123, 89, 56,218,146, 3,187,177,131, 93,215, 2,192,143,209,165,139,241, 20,131, 83, 55,
+199,195,195,163,181,179,179,243, 89,129, 64,192,152,205,230, 57,137,137,137, 39,155, 59,208,124,107, 28,150,177, 69, 46,203, 86,
+204,230, 9, 13,250,207,212,122,157,174,146,207,231,103,137, 68,162, 75,243, 39,115,103,190,220,109,186,219,200,235, 27,157,255,
+246,254,136,224,235,219,141, 10,107,155,153,177,118, 66,247,245,253,103,186, 8, 51,111,222,182,217,116, 52,231, 59,123, 7,247,
+ 81,127,127,181,232,164, 68,102,158,242,207,109,168,161, 45,205, 58, 31, 1, 78, 70,160,131, 72, 34,241, 54,179,172, 59, 0, 8,
+ 24,166,216,164,215,231,138,128,132,101,128,250,191, 36,211,197,196, 48,161, 34,177,216,219,108, 50,185,243, 0, 14, 66, 97,137,
+197, 96,200, 53,179,108, 98, 20, 80,254,180,243, 41,148, 72,124,204, 44,235,206, 3,184, 63,107,217,255,204, 76,210, 76,129, 21,
+ 16, 16,112,147,207,231,123,243,249, 15, 59,185, 30, 31,115,175,238,255, 79,254,107, 54,155,243,146,147,147,187, 90,251,199,253,
+253,253,237,116, 58,221, 43, 60, 30,239, 53, 0,224, 56,110,143, 84, 42, 61,144,149,149,245, 84, 23, 18,251,251,251,219,113, 28,
+183, 88, 38,147, 13,210,233,116,237, 1, 64, 42,149,222,213,106,181, 23,120, 60,222,218,167,204,101, 60, 60, 60, 38, 40, 20,138,
+129, 44,203, 14,228, 56,142,199, 48, 76,140, 70,163,185, 80, 88, 88,120, 16, 64,139,159,120,224,225,225, 33,115,118,118,254,208,
+193,193, 97,210,220,185,115,203,157,156,156,218,172, 94,189,250, 55,103,103,231,189, 42,149,234,189,194,194, 66,237,127, 73,251,
+ 8, 84, 42,149,123,132, 66,161, 32, 55, 55,119, 32, 0,248,248,248,196, 24, 12, 6,115, 73, 73,201,107, 0,210, 91, 18,230,226,
+226,162, 16, 10,133, 61, 21, 10, 69, 87,133, 66, 17,110, 54,155, 67, 44, 22, 11, 44, 22, 75, 82,109,109,237, 69,147,201,116,211,
+100, 50, 93, 43, 43, 43,171,253, 47,218, 70,108, 69, 34,209, 15, 44,203, 2, 64, 48,128,234,103,113, 71,192,241,208,246,222,221,
+164, 54,191, 43,166,218,135,252,251,116,124,248, 54, 50,157,213, 5,214,136,190, 14,195, 71, 69,116,226, 3,128,209,240,219,240,
+ 83,191,170, 79,253,217,197,213,136, 17, 35,174,108,216,176,193, 81,175,215, 99,201,146, 37,123,244,122,253,215,105,105,105,203,
+154,122,157,157,157,253,194,247, 63,250, 74,254,104,127,230,102,177, 88,220, 10, 11,114,131,147,239,223, 25,158,124, 63,241,227,
+249,227,239, 95,213,178,230, 55,183,254,136,251,214,204, 71,200, 11, 24, 57,106, 92,228, 75,239,175,140,194,164, 73,147, 94,184,
+171,210,201,188,238,198,139,107, 57,155, 64, 23, 55,239,209, 75,223,251,148,119,237,202, 47,163, 15,238,219,114,225,255,102,152,
+ 6, 81,145,213, 44,222, 26,134,233,105, 31, 20, 20,254,234,143, 63,194,198,199,135, 97, 36, 18, 62, 0,176,122,189, 79, 77,110,
+174,199,254,209,163,123, 68,165,164,252, 18, 5, 92,255, 79,102,190,207, 48,125,236,131,130,250, 76, 58,117, 10, 54, 30, 30, 12,
+ 95, 36,226, 3,128,197,104,244,174, 42, 40,240,216,255,210, 75,221,163,210,210, 46, 70,177,236, 53, 88, 49,212,218,255,208,178,
+ 19,107, 10, 44, 62,159,239, 29, 23, 23,231,166, 80, 40,240,168,248,129,217,108,134,217,108,198,163, 15,197,250, 7, 47,114, 28,
+ 7,150,101, 49, 96,192, 0,171,142, 94, 61, 60, 60, 6, 1,152, 30, 20, 20,244,242,226,197,139, 69,125,250,244,129,217,108,198,
+133, 11, 23,250,173, 91,183,238, 75,189, 94,127, 4,192,142,194,194,194,104,107,143,110,149, 74,229, 48,129, 64,176,123,249,242,
+229,118,125,251,246,101,234,158, 14, 95, 82, 82,210,243,210,165, 75, 93, 87,175, 94, 61, 71,169, 84, 78, 46, 42, 42, 58,107,237,
+202,241,242,242, 10,149,203,229,135, 34, 34, 34,188,187,118,237, 42,109,221,186, 53, 56,142,195,237,219,183,103, 36, 39, 39, 79,
+ 60,117,234,212, 42,141, 70, 51,190, 5,227,169,241, 2, 3, 3,167,217,218,218,126,184,112,225, 66,167,177, 99,199,138, 19, 19,
+ 19, 43, 2, 2, 2,120, 71,142, 28,113, 61,113,226,196,156,175,191,254,122,130, 92, 46,127, 47, 61, 61,125,167, 53, 27, 94, 80,
+ 80,208, 77, 62,159,239,109, 77, 1,220,194, 34,184,179,191,191,255,129,139, 23, 47,250,103,103,103,155, 35, 35, 35,119, 1,192,
+229,203,151, 59,114, 28,199,235,211,167,207,233,188,188,188, 87, 0,220,182,102,193, 61, 61, 61, 59,218,219,219, 31, 27, 59,118,
+172,147,175,175,175,220,219,219,155, 39,149, 74, 33, 16, 8, 80, 83, 83,227,153,156,156, 60,228,246,237,219,218,203,151, 47,171,
+ 68, 34,209,232,130,130,130,132, 22,180,227,222,110,110,110, 83,132, 66, 97, 40,203,178, 94, 0,192, 48, 76,190,201,100, 74, 44,
+ 41, 41,249, 1,192,149,167,221, 64,220,221,221,191, 92,183,110,157, 75,113,113, 49, 23, 21, 21,245,101,101,101,229,180,103,121,
+135,144,120,251, 26, 46, 93,190,136,111, 55,255, 80,201,113,120,240,111, 5,150, 5,105,237,219,135,184,190,249,198, 20,167,126,
+125,194, 17,218,185,103,179,153, 99, 6, 57,191, 47, 22, 49,206, 26,189,254,122, 89, 30,255,152, 92, 33,138,156, 60,174,107, 6,
+ 0,156,249,249, 78,100,247, 0,199, 95, 93,188, 45, 99,228, 18, 73, 15,131,145, 45, 63,118,161,124,101, 75,138, 41,165, 82,121,
+214,198,198, 70,174, 86,171,139,202,203,137,167, 96,192, 0, 0, 32, 0, 73, 68, 65, 84,203, 55, 69, 68, 68,172, 89,183,110,157,
+ 99, 70, 70, 6,114,115,115, 49,125,250,116,155,252,252,252,185,122,189,254,106,110,110,110,163, 61, 89, 85,213,149,235, 63,140,
+ 90,184,202,214,222, 81, 32,151, 41, 96, 99,107, 7,255, 86,193,232,214,163, 31,134,188, 56, 26, 25,233,201,189, 14,236,222,114,
+123,206,184,188,143,147, 85,248, 32, 54,182,241,125, 83, 59, 63,244, 31,253,242,195,226,106,229,251, 81, 72, 73,190, 95,157,157,
+195,159,255,211, 45,190, 60, 98, 80, 59,137, 65, 95,147,125,237,202, 47,254, 61,123, 15, 0,128,174, 7,247,109,185, 16,245,154,
+105,112,212,158,103,179,128,255, 51,138,171,247,133,194,105,195,214,173,115, 11,155, 51, 71, 84,147,149,101,204,248,246, 91, 77,
+241,197,139,102, 70, 34,225,124,134, 15,231,185, 14, 28, 40,157,147,148, 36,186,252,201, 39,225,194,213,171, 3,222, 51, 26,119,
+255,167, 50, 71,108,220,232,218,121,214, 44, 81, 85, 70,134, 49,229,203, 47,181, 69, 63,255,204,138,164, 82,139,247,136, 17, 2,
+247,161, 67, 37,115,238,222, 21, 93,253,236,179, 62,204,138, 21,173,150,155, 76, 63, 60, 35,203, 78, 90, 80, 96, 65,161, 80, 96,
+223,190,125, 16, 10,133, 16, 10,133, 96, 24,166,209,255,251,249,249, 89, 83, 4,141,115,118,118,254,106,225,194,133,238,163, 70,
+141,130,163,227,239, 71,217, 24, 57,114, 36, 70,140, 24, 33,202,204,204,156,120,240,224,193,137,187,118,237, 42,170,169,169,153,
+ 95, 84, 84,116,164,153, 15,239,129,254,254,254, 71,246,237,219, 39,211,106,181,136,141,141, 69, 69, 69, 5, 36, 18, 9,188,188,
+188,208,175, 95, 63, 38, 38, 38,198,105,226,196,137, 71,248,124,254,200,130,130,130, 24, 43, 62, 88,187, 58, 58, 58,198,110,222,
+188, 89,218,182,109, 91, 94, 90, 90, 26, 58,117,234, 4, 0, 40, 47, 47,199,200,145, 35,165, 99,199,142, 13,156, 59,119,238, 85,
+150,101, 7, 20, 23, 23,223,108,102,217,187,184,187,187,239, 28, 62,124,184,231,187,239,190,107,103, 99, 99,131,236,236,236, 66,
+165, 82, 25, 92, 87, 4,141, 25, 51, 70, 60,116,232, 80,143, 77,155, 54,109, 56,117,234,212,146,210,210,210,105, 69, 69, 69,183,
+154,172, 86,249,124,239, 91,183,110,185,201,229,114, 20, 23, 23, 99,247,238,221,152, 59,119, 46, 24,134, 65, 73, 73, 9, 14, 28,
+ 56,128,249,243,231,131,207,231,163,170,170,202,170, 34, 88, 46,151, 15, 9, 10, 10,218, 26, 29, 29,237,237,224,224, 0, 79, 79,
+ 79,254,138, 21, 43, 66, 3, 2, 2,100, 30, 30, 30,252,130,130, 2, 28, 57,114, 36, 96,202,148, 41,199,114,114,114,102,232,245,
+250,102, 79,157, 57, 59, 59,111,219,181,107,151,111,124,124, 60, 54,109,218, 4,149, 74, 5,177, 88, 12,123,123,123, 40,149, 74,
+180,110,221,154, 55,103,206, 28,249,192,129, 3,229, 81, 81, 81,219, 0,116,182,162,253,118,114,115,115,251,110,224,192,129, 1,
+ 81, 81, 81, 14, 30, 30, 30,144,203,229, 0,128,202,202, 74,239,236,236,236,158,171, 86,173, 26,127,243,230,205,204,146,146,146,
+ 55, 1,196,183,112,251,232,220,174, 93,187,145, 99,199,142, 21, 20, 21, 21, 97,203,150, 45, 35, 43, 43, 43, 59, 91, 91, 84,254,
+ 47,186,116,249, 34, 6, 14,159, 8, 45, 43, 19,158, 56,186,155,171, 62,251,133,179,141,131, 3, 3, 0, 53,106, 53, 59,226,181,
+ 69,150,145,163, 39, 27, 7, 13, 31,163,185,112,102,143,220,154, 2, 75, 44, 98,156,247,111,157,157,123,241, 90,106,200,217, 11,
+217, 67,198,142, 30,194,103, 20,109, 2, 1, 96,209, 59,111,136,127, 60,254,243,215,195, 6,189, 80, 24,222, 51, 56,247,213,153,
+223,250,180,164,184, 10, 8, 8,248,229,236,217,179,238, 98,177, 24, 21, 21, 21,206,219,183,111,255,162,103,207,158,252,244,244,
+116,220,191,127, 31, 89, 89, 89, 80,171,213,232,222,189,187,205,189,123,247, 54, 1,104,180,192,250,230, 48, 62,252,100,169,251,
+ 70, 87, 15, 87,127,147, 65,239,202,234,139,219, 71,159,141,239,120,248,128,166,139,155,210, 59,120,226,228, 89, 88,186,226, 83,
+225,209, 67, 59, 87, 34,230, 28, 98,155,122,138, 63, 15,189,255,241,238, 50, 84,105,244,152,252,218, 27,152, 50,249, 13,103,206,
+ 98,240,224, 44, 58,133, 65, 87,225, 96, 47, 74, 62,185,115,251,129, 72, 0,222,143, 21, 89,209, 84,100, 53,236,125,134,233,241,
+226,231,159,187,117,154, 51, 71, 18,191,122,117,109,217,197,139,218, 86, 35, 70, 84,132,205,158,173, 7,128,234,172, 44, 81,202,
+170, 85,114,215,240,112, 89,159,255,251, 63, 7,147, 70,163,124,255,163,143,186,175, 4,110,180, 52,211,127,210, 36,243,218, 35,
+ 71,186, 93,251,228,147, 1,248,224, 3,193,192,176,176,219, 43,190,253, 54,207,154,204, 53, 12,211, 51,226,235,175,221, 58,188,
+254,186,228,230,178,101,181,234, 27, 55,180,129,145,145,170,110, 11, 22, 24, 32, 16, 64,147,151, 39, 76, 95,189, 90, 97,223,163,
+135,172,215,162, 69, 14,102,131,193, 61,106,213,170, 30, 77,245, 16,189,207, 48, 61,134,175, 95,239,218,105,246,108, 73,252,154,
+ 53,181, 5, 23, 46,232,171, 66, 66,208,249,229,151,203,189,156,157,245, 79,187,236,143,103,150,197,196,252,225,245, 73, 26,218,
+ 13, 52,162,117,235,214,197,201,201,201,110,135, 15, 31,182,170,192,242,244,244, 68,191,126,253, 74, 18, 19, 19,221,155,216, 33,
+230,230,230,230,122,179, 44, 11,177, 88,220,228,140, 85, 87, 87, 35, 33, 33, 1, 19, 39, 78,204, 43, 44, 44,108,116,167,235,232,
+232,104,235,232,232,152, 17, 19, 19,227,114,239,222, 61,220,188,121, 19, 1, 1, 1,112,116,116,132, 80, 40,132,201,100, 66,117,
+117, 53,130,130,130, 32,151,203, 49, 98,196,136, 50,149, 74, 21, 80, 81, 81,209,232, 78,204,207,207, 79, 34, 20, 10, 83, 15, 31,
+ 62,236, 19, 26, 26,138, 27, 55,110,192,199,199, 7, 74,165, 18, 0,144,149,149,133,203,151, 47, 35, 34, 34, 2,137,137,137,152,
+ 61,123,118,174,201,100, 10,126,240,224,129,190,209,211, 5, 33, 33,133, 7, 15, 30,204,107,219,182,173,174,182,182,150, 95, 92,
+ 92, 44,188,120,241, 34, 91, 83, 83, 99,163, 86,171,133,149,149,149, 76,101,101,165,176,182,182, 86,200,231,243, 69,122,189, 94,
+120,237,218, 53,129, 74,165,106,242,193,150,109,218,180, 41,190,127,255,190,219,241,227,199,209,161, 67, 7, 28, 62,124, 24,139,
+ 23, 47,198,229,203,151,225,237,237,141, 67,135, 14, 97,241,226,197,184,127,255, 62, 92, 93, 93, 49,104,208,160, 38,223, 35, 0,
+ 8, 12, 12, 76, 75, 72, 72, 8, 20,139,197, 72, 79, 79, 71, 94, 94, 30,194,195,195, 97,177, 88, 80, 84, 84,132,212,212, 84, 20,
+ 20, 20, 32, 48, 48, 16,175,189,246, 90,122,126,126,126, 80,115, 13, 45, 44, 44,172, 52, 58, 58,218,165, 99,199,142, 40, 42, 42,
+130,131,131, 67,253,151,189,189, 61, 28, 28, 28,208,170, 85, 43, 44, 92,184, 16,157, 58,117, 42,121,240,224,129,123,115,197, 79,
+104,104,232,217, 11, 23, 46,184, 56, 57, 57, 65,167,211, 65,167,211,213, 31, 28,200,229,114, 8,133, 66, 0, 64,106,106, 42, 70,
+142, 28, 89,154,145,145, 49,188, 5,197, 17,223,221,221,253,126,124,124,124,176,173,173, 45,114,115,115,145,152,152,136,153, 51,
+103,166,214,214,214,182,197, 95,112,221,208,127, 82, 72, 43, 44,191,119, 55,169, 77,187,118, 33,149, 83,103,188, 41, 28, 51,106,
+ 76,109,220,245,115, 38,161,254,151,154, 23,251,217, 23, 0, 64,244,181,106, 55,189,176,159,168,107,247, 97,188, 99,199,142, 73,
+119,238,248,142,185,123, 55, 73,217,174,125, 72,114, 82, 38,214, 52,150,253,210, 0,251,169,139,231, 13, 15, 9,239, 19,206, 84,
+213,114,202,173,219,190,239,254, 32, 59,195, 29, 0,252, 94, 8, 40,158, 57,227,141, 27,118, 10, 94,209,197,203, 23,217,181, 95,
+157, 73,250,233,151,202, 93, 86,244, 46, 7,248,248,248, 92,221,190,125,187,139,139,139, 11,236,237,237,161,209,104, 96, 52, 26,
+113,239,222, 61,221,254,253,251, 77,118,118,118,182, 69, 69, 69,168,168,168, 0,195, 48,184,118,237, 90, 78,113,113,113, 67, 71,
+130,245, 55,251, 28, 60, 24,197,244,239,234,235, 40,226,115, 50,177, 57,217,147, 17,112, 98, 30, 28,220,163, 99,175,117,250, 37,
+246,226,228, 17,163, 94,117,237,213,103, 32, 62, 93,179,212,148,149,155,219,249,209,233,194,127,107, 11,109,253, 49,104,236,184,
+200, 9,239,175,140, 66,212,251,171,113,242,196,143,149, 54, 50,190,222,206, 86,104, 31,222,183,143,110,225,252, 87,114, 53,213,
+106,159, 47,214,173,157, 52,116,120,164,119,207,222, 3,112,237,202, 47, 56,184,111,203, 77,145,132, 78, 23, 62, 46, 10,112,116,
+ 8, 8,120,115, 94,106,170,232, 78, 84, 84, 13, 91, 80, 80,209,117,193,130,178,134,166,205, 59,127, 94, 33,246,244,180,115, 30,
+ 61,218,113,157,159, 31, 76, 37, 37,223, 53,116, 13, 81, 67,153, 55, 60, 60, 28,142,198,196, 12,182, 48, 76,255,185,243,230,201,
+134, 12, 25,130,170,170, 42,156, 60,121, 18,123,247,236,209, 43,149,202, 4,135, 27, 55,110, 7, 20, 22, 46,111, 40,243, 35,192,
+201,182,117,235, 89,115,147,146, 68,113,203,151,215, 64,165, 82,133,205,159, 95,110, 54,155,121,179,214,172, 25,145, 81, 88,216,
+191,184,172,204, 15, 0,220, 28, 28,114,219,122,120,196,109,220,181,235,222, 87,109,218,112, 53, 5, 5,223, 69, 53, 48, 6,233,
+147,243,185,255,242,101,247,211,165,165,127,115,116,116,148,149,149,151, 11, 68, 66,161,170, 75,112,240,254, 79,231,207,143,213,
+222,188, 41,126,218,101,239,186, 96, 65, 89,165, 70,195,188,183,113, 99,159,130,242,242, 23,106, 13,134,160,202,154, 26, 37,107,
+ 52,242,109,101,178,242, 23, 2, 3,139,171, 46, 92, 40,242,171,169,121,123,131, 70, 83, 66,173,242, 15,246, 96,241,120, 60,112,
+ 28,103, 85,113, 37, 20, 10,127,119, 26,170, 9, 34,129, 64,128, 27, 55,110,160,164,164, 4, 29, 58,116,128,191,191,255,239, 38,
+200,200,200,192,169, 83,167, 80, 81, 81,129, 46, 93,186, 0,128,168,169, 64, 91, 91,219,119,150, 45, 91,230, 96, 48, 24, 16, 23,
+ 23,135, 46, 93,186, 64, 42,149, 66, 40, 20, 66, 36, 18,129, 97, 24, 40,149, 74,148,149,149,193,221,221, 29,115,230,204,177,223,
+184,113,227, 59, 21, 21, 21,239, 55,150,201,113,220,188,137, 19, 39,186,133,134, 62,188, 11, 53, 55, 55,183,110, 94, 0, 0,110,
+110,110,184,125,251, 54,186,116,233, 2,119,119,119, 68, 68, 68,184, 29, 59,118,108, 30,128,181,141, 46,184, 72,196,111,219,182,
+109, 55, 0, 80, 40, 20,224,243,249, 41,118,118,118,174,238,238,238, 10, 59, 59,187,127, 91,198,237,219,183,171,197, 98,177,201,
+154,149, 90, 84, 84,132,208,208, 80,168,213, 15,183,165,218,218, 90, 4, 5, 5,161,178,178, 18, 0,160,215,235,225,233,233, 89,
+ 95,128, 52,166, 99,199,142, 81,109,219,182,125, 81,161, 80, 72, 24,134, 65,124,124, 60,194,194,194,176,127,255,126,248,249,249,
+ 65, 46,151, 35, 57, 57, 25, 29, 59,118, 68,108,108, 44, 92, 93, 93,209,190,125,123,137,155,155,219, 37,149, 74, 21,243,224,193,
+131,168, 38,122,218,248, 54, 54, 54,136,141,141,197,182,109,219,144,153,153,137,130,130, 2,216,217,217,161,115,231,206, 8, 9,
+ 9, 65,159, 62,125,144,150,150, 6, 94,243,141, 73, 25, 28, 28,124,242,198,141, 27, 46,124, 62, 31,177,177,177,208,104, 52,208,
+233,116, 96, 89, 22, 60, 30, 15, 82,169, 20,189,122,245,130,179,179, 51,130,131,131,113,244,232, 81,215,161, 67,135,158, 42, 46,
+ 46,238, 12,160,168,185,117,234,232,232,248,246,202,149, 43,125,220,221,221, 81, 93, 93, 13,141, 70, 3, 79, 79, 79, 12, 29, 58,
+212,235,212,169, 83,111, 27, 12,134,117,207,212,145,150, 5, 57,237,218,135,128,227,240,224,196,209,221,156,183,171, 52,116, 64,
+ 23,139, 91,202, 61,166,215,181,107,137,237, 1,192, 81,225, 31, 31, 28, 98, 76,137,253,237,124,222,201,227,123,227,205,102,240,
+ 67,218,133,180,225,115,200,111, 42,187, 44,143,127,236,236,133,236, 33, 29, 59,246, 19,108,252, 98,213,152, 89, 51,134, 73,156,
+ 28,251,241,170,242, 14,224,242,173, 59,126, 43, 86,188,235,246,193, 7,159,156, 56,123, 33,219, 92,150,199,255,208,154,249, 13,
+124,193,233,203,195,159, 11, 93,170,171,247, 32, 62,205, 6, 60, 89, 71,248,183, 10, 68, 85, 85, 21, 36, 18,137,116,210,164, 73,
+230,101,203,150,105,108,109,109,229,143,218,114, 9,159,207, 31,214,108,240,253, 36,176, 29,130, 88,161,173,193, 98,225,108,180,
+208, 85,138,238,164,101,160,223,192,136,226,238, 93, 58,175,249,100,237,186,229, 1, 65,109, 92, 39, 77,125, 83,248,249,167,203,
+191, 5,184,126, 13,198,100,225, 2,239,240, 81, 25,128,151,222, 95, 25,133,140,140, 84,199, 89,227,212,171, 25,129,204,179,109,
+135,254,182,223,110, 63, 63, 60,168,117,155, 23,102,205,121,251,167,205,155, 54,188,244,120, 79,214,190, 61,155,143, 1,230,193,
+176,238,218,156,231, 65,199, 41, 39, 79, 66,147,147, 99, 82, 93,186,164, 27,252,213, 87,101, 93,166, 78, 93,103, 52,153, 92,120,
+ 60,222,239, 46,133,224,241,120,128,197,194, 99,214,174,229,115,158,158, 48, 57, 56, 76, 71, 74, 74,235,230, 50, 63, 49,153,198,
+141,237,220,249,165,173,187,119,195,207,207,175, 62,211,222,222, 30,243,230,205,195,156, 57,115, 36, 9, 9, 9, 61, 78,157, 58,
+213, 99,215,215, 95,187,163,180,116,220,147,129, 70,160,195,164,227,199, 81,147,149,101, 84,221,184,161, 27,180, 97, 67,249, 47,
+191,253,230,244,238,215, 95,175,232, 16, 22,230,245, 77, 84,148,196,215,247,225,253, 33, 57, 57, 57, 65, 27,214,175,247, 29, 56,
+116,104,159,165,139, 22,109,191,189,112, 97, 59, 60, 28,146,173,209,249, 44,186,120,209,112, 90,165,250,219,193, 67,135, 28,218,
+180,105, 3,142,227,144,150,150,230,182,109,219,182, 55,251,207,153, 51,101,209,196,137, 43,134,102,102, 86,152,203,203,197, 35,
+191,252, 82,184,111,194,132,246,205,101,214,173, 79, 0,120,121,241,226,119,186,247,238,221, 46, 98,210, 36, 39, 79, 79, 79,158,
+ 76, 38,131,209,104, 68, 81, 81,145, 99,114,114,114, 96,116,101,101,213,185,219,183,127,128, 70, 51,148,154,228, 31, 44,176, 0,
+192,108, 54,183,168,192,178,178,200,170,239,241, 42, 43, 43, 67, 98, 98, 34,252,252,252, 96, 50,153,112,246,236, 89,168,213,106,
+136, 68, 34,136, 68, 34, 24, 12,134,102,179, 20, 10,197,144,240,240,112,230,202,149, 43,240,247,247,135, 76, 38,171, 47,172,234,
+138, 44,161, 80, 8,165, 82,137,202,202, 74,244,237,219, 87,184,109,219,182, 33,104,100, 28, 64, 0,176,177,177, 25, 49,122,244,
+232,250, 46,182,218,218, 90, 8, 4, 15,239,180, 54, 24, 12,168,174,174, 70,121,121, 57, 42, 43, 43,161,211,233,208,169, 83, 39,
+241,133, 11, 23, 70, 52, 85, 96, 61, 78,163,209,212,148,148,148, 56,244,235,215,207,113,199,142, 29,201,189,122,245,250,221, 69,
+195,191,252,242,139, 78,175,215, 51, 98,177,216,170,139,221,119,239,222, 93,191,238, 11, 10, 10,240,221,119,223,193, 98,177,128,
+199,227, 33, 53, 53, 21, 27, 55,110,172,191, 86,174,169,247,168,109,219,182, 17, 63,252,240, 67,215, 93,187,118, 85, 48, 12,131,
+228,228,100,236,217,179, 7, 28,199,193,197,197, 5, 26,141, 6, 37, 37, 37, 88,183,110, 29,140, 70, 35,108,108,108,224,229,229,
+ 37,157, 55,111, 94,223,213,171, 87, 11,155, 42,176,204,102,179, 89, 32, 16,192,215,215, 23, 43, 87,174,132, 78,167,131, 72,244,
+176,174,172,170,170,130, 90,173, 70, 92, 92, 28,178,178,178, 96,177, 88,154,252, 96,145, 74,165,227,119,238,220,233, 38, 22,139,
+161,211,233,144,154,154,138,244,244,116, 36, 39, 39,235, 85, 42, 21,107, 99, 99,195,243,240,240, 16, 84, 86, 86,138,167, 78,157,
+202,171,174,174, 6,199,113,136,140,140,116,222,186,117,235, 43, 6,131, 97,125, 51,171,212, 85,169, 84,254, 99,214,172, 89,210,
+186,245,102,177, 88, 80, 90, 90,138, 9, 19, 38,200, 99, 98, 98,150, 25, 12,134, 61, 0, 74,159,149, 29,193,227,119, 11, 86,159,
+253,194,249,220,185,111, 94, 72,185,199,244, 18,160,188, 71, 88,255,183, 25, 0,184,127,115,123,159,180,164, 27,102, 27, 11, 47,
+227,167, 61,107,175,218, 6,191, 89, 14,224, 88, 83,189,128, 35,250, 58, 12,151, 43, 68,145, 99, 71, 15,225,111,221,246,125,247,
+ 89, 51,134, 73,220, 58,125,207, 3, 0, 71,137, 55,122,155, 22,241,117,134, 90,233,214,109,223,119, 31, 59,122,196,245,172,236,
+ 7,235,156,149, 14, 71, 79,253,170, 62,211, 84, 47,161,135, 11,227,229, 40, 43,131,163,207, 16,248,133, 56, 34, 46, 46, 14,199,
+142, 92, 65, 80,155,110, 48, 24, 12, 48,153, 76,138,145, 35, 71,106, 14, 29, 58,164, 43, 47, 47,175, 54, 26,141,253, 11, 11, 11,
+ 83,154,173,175, 80,102,233,196,183, 24,197,102, 33,171,173, 21,215,206, 95,113,228,149,238,189, 35,186, 56,249,122, 9,157,165,
+236,137, 1,253,195,119,239,221,245,221,194, 69, 75, 63, 64,167,176, 94,189,231,139,126,107,255,229,110,211,157,134,178,146,178,
+113,146,127,244, 40,155,145,146,246,210,131,220,236,188,214, 62, 74, 67,122, 14,103,122,123,217,183, 67,251, 13, 25,223, 49,176,
+ 77, 79,241,221,251, 87,120, 11, 23, 44,220,251,197, 23,159, 77,170, 43,178, 46,198,158,237, 31, 53, 61, 91, 28,181, 3,122,250,
+136, 2, 68, 18,137,183,141,159, 31,147,181, 99,135, 54, 96,212,168, 10, 0, 48,177,172,203,181,235,215,237,229,114, 57, 56,142,
+131,201,100,250,221, 53,194,117,215, 5, 15, 25, 48,192,221,154,204,220,111,190,233, 56,119,238, 92, 20, 21, 21,129,101,217,250,
+222,239,199,246,217,168,170,170,194,184,113,227,176,125,211,166, 6,207,139, 11, 37, 18, 31, 27, 31, 31, 38,107,199, 14,109,224,
+ 75, 47,169, 96, 54,243,150,126,253,245,202, 69, 75,150,248, 79,120,229,149,223, 29, 55,134,132,132,224,155, 77,155,196,123,246,
+236,241,250,100,211,166, 25, 17, 18, 73, 6,244,250, 38,231,179,186,125,123, 56, 38, 38,202,218,180,105, 83, 95, 80, 6, 7, 7,
+227,211, 79, 63,149, 76,158, 60, 89, 60,109,202,148,207,239,182,105,179, 33, 42, 43, 43,205,185,117,107, 59, 70, 34,241,110, 46,
+179,110,125, 2, 64,141,193, 16, 26,245,193, 7,142,215,175, 95, 71, 65, 65, 1, 56,142,171,255, 59, 29, 59,118,228,189,242,202,
+ 43,246, 61,187,118,237, 78, 45,242, 79,234,193,106,168,192,106,172,208,178,182,184,122,242,111,120,120,120,192,104, 52,226,251,
+239,191,175, 47,172,234,143, 8,140,198,102, 51,116, 58, 93, 7,165, 82,137,170,170, 42,180,110,221,186, 62,163,110,190,234,190,
+164, 82, 41,116, 58, 29,188,188,188,160,211,233, 58, 52, 83, 0,117,182,183,183,175,235,205,130,254, 81, 35, 53, 24, 12, 80,171,
+213, 80,171,213, 48, 24, 12,168,168,168, 64, 77, 77, 13,212,106, 53,170,171,171,195,172, 89,102,139,197,130,196,196,196,244, 54,
+109,218,116, 22, 8, 4,176,177,177, 81,212,214,214,162,238,102, 2,149, 74,133,157, 59,119,214, 78,157, 58,213,229,218,181,107,
+ 90,107,214,225,252,249,243, 33,145, 72,160,209,104,176,105,211, 38,204,159, 63, 31, 34,145, 8,213,213,213,216,180,105, 19, 22,
+ 46, 92, 8,134, 97,160,215,235,177,127,255,254,198, 63,100,239,221,203,186,118,237, 90, 88,151, 46, 93, 28,143, 30, 61, 90, 58,
+100,200, 16,215, 97,195,134,213,175, 59,150,101,209,163, 71, 15,180,109,219, 22, 37, 37, 37, 56,125,250,116, 89,112,112,176,203,
+245,235,215, 45, 69, 69, 69, 15,154, 89,238,250,162, 73, 32, 16,192,108, 54,163,184,184, 24,106,181, 26,165,165,165, 40, 40, 40,
+ 64, 94, 94, 30, 24,166,249, 39,135, 56, 59, 59,191, 28, 26, 26, 42,120, 84,108,161, 85,171, 86, 88,180,104, 17,171,213,106, 39,
+ 0, 56,253,104,178,136,189,123,247, 30, 13, 10, 10, 98, 60, 61, 61,145,154,154, 10, 87, 87, 87, 70, 38,147,189,218, 92,129,165,
+ 84, 42,183,159, 56,113,194,169,238, 14,218, 58, 90,173, 22, 44,203, 98,226,196,137, 78, 91,183,110,221,110, 52, 26, 71, 60,139,
+ 59, 5, 27, 7, 7,230,197,126,246, 5,215,174, 37,182, 15,235,255, 54,227,212,122,213,195, 2, 28, 96,226, 46,110, 8,235,215,
+ 35,116, 79,221,117, 89, 77, 25, 59,216,117,237,168,136, 78,252,201,227,186,102, 48,138, 54,129,187,119,110,112,119,114,236,247,
+175, 29, 5,227, 4,133, 20,104,235,103,230, 95, 61,153,225,190,112, 97, 27,195,158,111,255,150,177,251,200,205, 33, 34,113,252,
+160, 31,163, 75, 23, 54,150,125, 55,195,116,188, 82,231, 20, 98, 95,121,132, 7,231, 55, 16, 22, 22, 6, 87, 87, 79,124,179,249,
+ 7,120,189,208, 5, 6,131, 1,118,118,118,242,135,187, 17,227,110,107,138, 43, 0,136,138,138,181,132,135,247, 55, 50,174, 46,
+236,188,121, 95,140, 27, 22, 49, 46,164,255,128,193,220,249,243,103,140,189, 67,140, 5,131,251,247, 44,250, 37, 54, 54,181,168,
+ 40, 63,184,109, 72, 71, 36,223,189, 57,140,227,144,200,227, 53,220,219,116, 55, 19,103,116,188,123, 49,251,151,204,178,104, 13,
+113,178, 53, 95,223,137,120,105,204,180,208,240,190,253, 44,231,127, 62,103, 16, 67,157,100,211,183,119,254,180, 41,175, 30,221,
+127,224,240,139, 49, 63,159, 12,170, 84, 23,159, 92,251, 3, 21, 87,245, 7,103, 44,235,206, 72, 36,252,226,152, 24,182,211,204,
+153,245,235, 69, 46,151,227,216,177, 99, 16,139,197, 16,137, 68, 16,139,197,245, 95, 34,145, 8, 74,165, 18, 60,142,227,183, 36,
+179,176,176, 16, 69, 69, 69,176,183,183,135,171,171, 43,138,138,138,112,249,242,101,164,166,166,130, 97, 24, 68, 68, 68,128,223,
+200,231,230, 19,153,134,191,189,255,254,240,246, 29, 59,122, 62, 89, 92,213,125,182,169, 84, 42,244,239,223,159,119,254,252,121,
+215,139, 25, 25, 99,160,215,255,208, 84,102,135,209,163,203, 75,162,163, 27,252,219,237,218,181,227, 29, 61,118, 76, 50,105,226,
+196, 5,159,110,222,188,126,197,231,159, 23,129,101,149, 45, 89,118, 30,143,199,231,241,120,240,241,241,129, 74,165, 66, 77, 77,
+ 77, 93,135, 3, 28, 29, 29, 97, 50,153, 96,177, 88,132,212, 34,173,199,111,174, 24,120,178,144,106,236,139,207,231, 63, 85,145,
+213, 20,107, 10,172,186, 34, 67, 34,145,252,110,227,170,251,122,124,227,171, 43, 98,172, 32,168,170,170,194,145, 35, 71,160, 82,
+169, 80, 93, 93,253,187,226,170,174,231, 42, 51, 51, 19,123,247,238, 69,126,126, 62, 4, 2,129, 85, 15,109,205,204,204,188,233,
+239,239,223,185,174, 71,108,224,192,129,222,151, 46, 93, 42,168, 43,230,150, 47, 95, 94,214,179,103, 79,151, 39, 63,220,155,156,
+ 89,129, 0,151, 47, 95,134, 70,163, 1,199,113, 16,137, 68, 72, 78, 78, 6,203,178,224, 56, 14, 12,195,160,180,180,180,217, 30,
+172,196,196,196,215,103,204,152,177,126,230,204,153, 49, 75,151, 46, 61, 63,104,208,160, 92, 30,143, 7,147,201, 4, 59, 59, 59,
+ 40,149, 74,164,164,164, 64,171,213,226,157,119,222,201,217,181,107,215,207,155, 54,109,138,217,178,101,203,250,188,188,188, 25,
+ 45,121,111, 89,150, 69,109,109, 45, 42, 42, 42,160, 82,169, 80, 85, 85, 5,157, 78,247, 84,109,104,240,224,193, 56,121,242,164,
+ 96,240,224,193, 91,253,252,252,138,252,252,252,138, 6, 15, 30,188,245,248,241,227, 2, 47, 47, 47,228,230,230, 34, 46, 46, 14,
+ 42,149, 10, 22,139,133,215, 76,239,234,192, 41, 83,166,244,245,245,245,229, 25,141, 70,232,245,122, 24, 12, 6, 24,141, 70,152,
+205,102,228,228,228,160, 93,187,118,124, 95, 95,223, 94, 0, 6,210, 46,164,101,170,242, 14,128, 43,249, 10,156,106, 31, 44, 37,
+ 95,163, 86,247,116, 57, 21, 21, 21, 31,190,245, 81,101,137,185, 50, 6,247,110, 29, 65,181,150,129,119,208, 64,188, 57,115, 34,
+126,187, 30,131,242,242,114, 36, 37, 37, 33, 60, 60, 92,196,227,241, 90,212, 54,247,237, 59,105,158, 52,241,255, 94, 25, 60,108,
+ 92,215,193, 67, 70,152,207,159,143,214,223,184,122,230,102,144,191, 93, 9,199,170,139,237,237,228,183,210, 82,146, 16,220,166,
+ 29, 76,172, 37, 28,136,106,178, 77,101,100,192,240, 83,145,135,249,149,249,137, 83,134,141,154,222,105,240,144, 97,166,179,103,
+ 78,152, 47,157, 59, 20, 55,108,224, 11,177, 31,127,182,199, 71,101,106,221, 94,106,167, 60,213,171,179,188,223,236,177,190,179,
+168,165, 52,208,235, 36,149, 90,240,104,191,201,227,241, 96,177, 88,126, 87, 84, 61,249,101,205,103,210,227,153,117, 56,142,131,
+ 90,173, 70,106,106, 42, 62,251,236, 51,220,190,125, 27,102,179,185,190, 39,171,209,207,161, 71,167,116, 69, 82,169, 5, 0, 50,
+ 10, 11,251,207,157, 59, 87,210, 80,113, 85, 94, 94,142,178,178, 50,228,231,231, 35, 34, 34, 66, 84,229,228,212,185,185,249,244,
+114,115,211,203,165,210,226,148,148,148,127,155,223,234,234,106, 72, 36, 18,124,245,245,215,162,147,137,137,243, 47, 93,190,236,
+208,146,245, 89,151,195,227,241,224,230,230,134,192,192, 64,132,133,133,161, 67,135, 14,144, 74,165,184,123,247, 46,190,251,238,
+ 59, 8,120, 60,150, 90,226,159,208,131,213, 88,129,213,208,255, 25,134, 65, 75, 10, 2,107, 89,115,138, 80, 42,149,222, 41, 46,
+ 46,238,227,237,237, 13,147,201, 84,223,123, 85,119,154,176,238,123, 0,144, 72, 36, 72, 74, 74,130, 84, 42,189,211, 84,166, 92,
+ 46,191, 35, 16, 8,122,117,235,214, 13, 71,143, 30, 69, 76, 76, 12, 50, 51, 51,161,213,106,161,211,233,160,213,106,113,247,238,
+ 93, 88, 44, 22,132,134,134,194,222,222, 30,114,185,252, 78,115,243, 90, 91, 91, 91,200, 48, 76, 27,153, 76,246,175, 83, 29, 30,
+ 30, 40, 43, 43,179,152, 76, 38,236,220,185,179, 74,169, 84, 42,100, 50,153,213,235,147,199,227,161,164,164, 4, 62, 62, 62,168,
+170,122,248,152,175,234,234,106,184,185,185,193,104, 52,194, 98,177, 64,175,215,195,198,198,166,190,203,183,169, 14,193,180,180,
+180, 69,143,125,223,109,194,132, 9,123,247,239,223,223,234,231,159,127,198,245,235,215,225,226,226,130,143, 62,250, 40, 51, 59,
+ 59,123, 18,128,223, 74, 74,254,255, 95,239, 88, 94, 94,126, 56, 49, 49,177, 87,183,110,221,234,247, 14, 3, 6, 12,224, 13, 24,
+ 48,192,229,241, 46,253,242,242,114,196,199,199, 35, 54, 54, 22, 38,147, 9, 73, 73, 73,102,173, 86,187,175,169,125,142,151,151,
+215,142, 21, 43, 86,216,176, 44, 11,129, 64, 0,161, 80, 8,150,101, 33,145, 72,234,123,106,115,114,114, 16, 25, 25,105,191, 97,
+195,134,237,122,189, 62, 16,128,241, 89,218, 41,212,168,213,108,244,181,106, 55, 71,133,127,252,253,155,219,251,180,125,180,159,
+184,127,115, 27, 43, 85,248, 92,191, 30,175,181,237, 33, 85, 55,187,163,253, 49,186,116,177,209,240,219,240, 51, 63,223,137, 92,
+244,206, 27, 98,191, 23, 2,138, 47,223,186,227,215,219,180,136,175,144, 2,181, 58, 64, 85, 9,220,127, 32,176,248,189, 16, 80,
+252,219,173,100,241,231,235,183, 4,104,106, 13,117,167, 8, 27,149,159,159,175,187,196,113, 99, 23,125, 33,143,157, 56, 89, 32,
+ 22, 75,157, 80,173, 74,131,159,159, 23, 94, 25,219, 7, 95,125,127, 14,246, 14,142,112,119,119, 7,143,199, 83,180, 96,241,121,
+ 87,163,227,102, 78,157,241,102,207,161, 47,142, 48,159, 61,119, 10,209,103,143, 92,223,177,126,217, 17, 35, 83,173,224,155,107,
+100, 62,222,202,132,172,204,148,215,194, 7,188, 8,169, 76,254,255,216,187,238,240, 40,170,183,123,102,182,167,247,186, 36,144,
+132,144,132, 36,148, 16, 64,233, 85, 32,128, 20, 65, 84, 16, 16, 21, 80, 64,177, 80, 68, 1, 65, 4,233,216,144, 14,210, 5, 1,
+233, 61, 64, 32,210, 75, 26, 33,189,236,166,183,221,108,223,153,185,223, 31, 36,252, 2,134,100, 19,208,207, 50,231,121,246,201,
+238,100,230,204,189,115,239,204, 61,243,190,239,125,111,115, 32,164,214, 81,188,101, 51,188, 9, 26,190,224,144,253,235,246,249,
+178, 55,223,122,183, 83,191, 1, 47, 51, 39,143, 31,196,201,195, 63,255, 62,111,106,179, 99,233,119,118,138, 99,175,229,202,134,
+142,152, 92,118,228,108,162,241,149, 5,126,201,222, 45,218,234,128,116,126,116,170,126,129, 20, 10, 11, 24,131,193,167, 73,191,
+126, 2,109, 86,150,200,214,195,131,169,126, 73,171,249, 82,253,164, 5,139,166,105,128,166, 57, 75, 56, 45, 45,139, 78,167, 3,
+247,148,220,135, 84, 53,231,128, 1, 2,109,110,174,168,176,164,164, 89,179,102,205, 30,219,199,108, 54,163,164,164,228,209,167,
+188,188, 28, 50,153, 12,165,102,179,135, 37,229,236,214,186,245,182,149, 43, 86,124,178,126,195,134, 71,174, 30,181, 90, 13,149,
+ 74,133,138,138, 10,208, 52,141, 25, 51,103, 74,103, 46, 88,240,254, 32,161,112, 58, 24,198,226,235, 89,253,178, 78,211, 52,132,
+ 66, 33,178,178,178, 30,125,178,179,179, 33,147,201, 64, 40,138,227,123,228,115, 16, 88,213, 65,238,245,137,171,234,239, 2,129,
+192, 50,115,111,213,155,192,243,178, 96,105, 52,154, 51, 49, 49, 49, 29,251,245,235, 39,140,141,141,133,151,151,215, 31,220,132,
+ 66,161, 16, 20, 69,193,218,218, 26,199,143, 31, 55,105, 52,154, 51,245,220, 68,103,207,158, 61, 27,249,209, 71, 31,137,198,141,
+ 27,135,248,248,120, 76,154, 52, 9,101,101,101, 80,169, 84, 40, 41, 41,129, 78,167, 67,199,142, 29, 33,147,201,144,146,146, 98,
+214,233,116,245,165, 42, 32,133,133,133,149,110,110,110, 94, 79,254, 99,196,136, 17, 30, 63,254,248,163, 54, 41, 41,201,220,185,
+115,103,123, 0, 13, 18,172,187,118,237,122,212,102,247,239,223,199,218,181,107, 31,197, 33,220,188,121, 19,203,151, 47, 7,203,
+178,150, 8,172, 39,113,189,184,184,152, 49,153, 76, 8, 12, 12,132, 92, 46,135, 78,167,195,154, 53,107, 24, 0,215,255,140, 14,
+105,137, 5, 75,175,215,239, 27, 59,118,236,204,219,183,111,123,137,197,226,106,211, 53, 56,142,131,201,100, 66,102,102, 38, 18,
+ 19, 19,145,146,146,130,226,226, 98, 16, 66, 96, 52, 26,113,243,230,205,114,179,217,188,247,105,188,110,110,110,159,111,218,180,
+201,211,202,202,234, 15,137,117,171, 31, 58,213,174, 87,119,119,119,244,232,209,195,253,220,185,115,159,155, 76,166,185,255,244,
+ 7, 65,117,134,118,194, 33, 37,234,141,143,185,201,147, 38,136, 91,180, 52, 37,167, 36, 94, 99,111, 93, 92, 19, 1, 0, 50, 27,
+159,171, 45,130,219, 37, 92,138,179,229, 6,190, 57,163,109,136, 63, 4, 20, 65, 48, 69, 80,252,100,198,247,234,119,180, 99, 49,
+229,199, 58, 4, 56,197, 28,252,237,204, 15,179, 62,126,231,218, 23, 95,204,114,215, 27, 53,178,144,166, 44, 13, 60, 20, 87,177,
+241, 54,250,133, 11,223,185,182,100,197, 54, 46, 59,213, 52,253, 90, 90,249, 83,103,248,214, 20, 45, 52,173,148,121, 6, 76, 87,
+250,181,232,213,236,238,239,235, 40, 87,123, 1,236, 90, 14,194,128,254, 47,225,244,217, 24,100,229,233, 80,245, 2, 80,103,218,
+131,150, 77, 49,166,154,147,162, 33, 27, 51,254,221,110, 3, 6,188, 76,142, 29,253,141, 57,248,203,207, 49,187,118, 47,223, 75,
+139,197, 66, 19,103,111,164, 4,250,114, 86,224, 24,175,169, 40, 5, 0,136,132, 98,251, 58,252, 3,190, 9,241, 73,193,161,161,
+ 33,158, 99,198, 79,116,136, 26, 48,132, 28, 59,118,144,219,187, 99,219,249,189,223,182,218,193,153, 85,226,188, 76,173,180, 66,
+109,174, 32, 2,137, 99,165,154,211, 22,232,155,235,189,127, 31, 97, 2,246,241,163, 83,245, 56, 96, 48,228, 86,230,228,120, 57,
+119,239, 46, 77,153, 63,223,218,163, 99, 71, 61, 69, 81,245, 10, 44,129, 64, 0,242,148, 56,190, 39, 57, 27, 34,176, 8, 69,213,
+ 58,249,136, 53, 24,114, 42,179,178,188, 92,187,119,151,165,206,157,107, 93,155,213,190,164,164, 4,165,165,165,143, 9,172,170,
+103,141, 69,229, 92,246,225,135,191,183, 31, 55,174, 52, 54, 54,214,227,197, 23, 95,164, 84, 42,213, 35,113, 85,253,221,205,205,
+141,242,109,214,204,238,140, 66, 17, 80, 91, 12, 86,109,215,211,146,186,211, 52,253,212,235,201,227, 25, 44, 88,150, 10, 44, 11,
+ 6, 71,179,217,108,134,187,187, 59,138,139,139,193,113,220, 83, 27,210,202,202,170,218, 7, 92,231, 76, 58,181, 90,189,122,225,
+194,133, 83,122,246,236,233, 26, 18, 18,130,162,162, 34,184,187,187, 67, 32, 16, 60, 42, 87, 53, 95, 92, 92, 28,246,236,217,163,
+ 82,171,213,171,235,169,247,170,159,126,250,233,253,168,168, 40,103, 55, 55, 55, 56, 57, 57,225,238,221,187,112,116,116,132, 90,
+173,198,253,251,247, 97,103,103, 7,138,162, 96, 48, 24,112,241,226, 69, 53,199,113,171,234,185, 49,201,229,203,151, 77,214,214,
+214,119, 75, 74, 74, 4,197,197,197,130,170,244, 12,162,138,138, 10,209,137, 19, 39, 92, 29, 28, 28,180,231,206,157, 43,242,245,
+245, 21,100,100,100, 8,140, 70, 99,189, 42,139,162, 40,124,248,225,135, 16,139,197, 48, 24, 12, 88,189,122, 53, 62,254,248, 99,
+ 8,133, 66, 24,141, 70, 44, 93,186, 20,115,230,204,121, 36,152, 15, 31, 62,220,160, 14, 82, 29, 64,106, 50,153, 96, 50,153, 96,
+ 54,155,255,212, 14,105,161,139, 48,255,193,131, 7,131,218,183,111,127,234,224,193,131, 46,246,246,246, 80, 42,149, 40, 42, 42,
+ 66, 65, 65, 1, 10, 11, 11,161, 86,171, 97, 48, 24,224,232,232,136,172,172, 44,156, 58,117, 74, 85, 89, 89,249, 18,234,152, 65,
+ 40, 16, 8,198,118,235,214, 77,248,100, 25,104,154,126,212,159, 68, 34, 17, 36, 18, 9, 20, 10, 5,186,117,235, 38,185,112,225,
+194, 88, 0,255,120,129, 85,157,161, 61, 44,172,165,219,160,151, 71,155, 34, 59,244,171,188,112,253,116,174, 45, 71,165,117,237,
+ 24,190, 19, 0,174,222,209,217, 93,138,179,229,218,180,235, 67, 13, 28,164,107,187,117,243,122, 73, 66,124,130, 95,104,120,104,
+157, 25,253, 93,155,112, 67,250,245,106,150,103,111, 67, 9, 23, 46, 92,114,120,211,230, 13, 29, 98,143,252, 47, 77,195,194,133,
+ 15,211, 52,244,235,213,140, 73,184,159, 60, 4,105,248,217, 82,209, 50,104, 80,191, 91,155,182,236,129, 34,229,176,247,170, 79,
+172, 36, 40, 41, 4,172,219,161, 91,164, 11,110,108, 76,196,157, 59,119,242, 57,142,171,219,149, 75,195, 55, 46, 46, 33, 56, 44,
+ 60,212,243,205,241,239, 58, 68, 69, 13,193,177, 99,135,176,125,203,250, 11, 47, 58, 70,108,202,186, 94, 44,144, 7, 59,137,173,
+ 29, 37, 98,161, 88, 38, 20, 11,197,197, 38,243, 67,235,186, 80, 44,178, 7, 70,214, 57,232, 76,154, 56,218,161, 87,223, 33, 56,
+ 90,197,249, 69,219, 17, 27,253,132, 45,169,142,159, 44,155,236,215,212,175,169, 70, 91,160,162,105,137, 73,111,224,236,150,109,
+204, 92,153,150, 58, 54, 13,192, 10,240,179, 8,171,113,119,123, 84, 84,135,105,169,169, 98,183, 46, 93,172,148,231,207, 91, 63,
+233, 34,172, 77, 96, 9,133, 66,128,166, 25, 75, 56,169,211,167,105, 0, 16,139,197, 79,125,177, 23,139,197,208,106,181, 96, 40,
+170,214, 29,196,192,221,237,131, 6,117,156,150,154, 42,114,238,217,211,218,237,246,237,236,140,140,140,160,136,136, 8,176, 44,
+251,152,229,170,250,163,215,235, 97, 52, 26, 33,147, 74,227, 44, 41,103,193,197,139,250, 57,227,199,207,125,255,189,247,190,221,
+179,119,175,204,222,222, 30, 42,149, 10,106,181,250,209,199, 96, 48, 32,178,125,123,209,207,247,239,143, 65, 89,217, 60, 75,174,
+167, 71,207,158,218,250,158,201, 85,130,149,119, 17, 54, 0,116,125, 22,172,103, 76,211, 16,254, 4,231,156, 1, 3, 6,232,211,
+211,211,225,227,227,243, 72,164,212, 60,167,189,189, 61, 28, 29, 29,145,144,144,128, 77,155, 54,233, 40,138,154, 83, 23,103, 89,
+ 89,153, 90,175,215,143,122,237,181,215,116, 34,145, 8,193,193,193,143,220, 58,132,144, 71,177, 87,113,113,113, 24, 59,118,172,
+ 86,175,215,143,170, 37, 7,214, 99,156, 89, 89, 89, 21, 26,141,230,141,209,163, 71,107,147,146,146,208,181,107, 87,220,190,125,
+ 27, 26,141, 6,149,149,149,200,200,200, 64,104,104, 40, 76, 38, 19,246,237,219,167,213,104, 52,111,100,101,101, 85,212,197,169,
+ 86,171, 7,127,243,205, 55,130, 99,199,142,249,121,123,123,135,181,111,223, 62,164, 87,175, 94,205,135, 13, 27,214, 52, 42, 42,
+202,171, 69,139, 22,250,126,253,250,185, 13, 24, 48,192, 77, 32, 16,136, 82, 83, 83,243, 8, 33, 3,234,226,172, 41, 0,146,147,
+147, 97, 50,153,254, 16,115, 85, 61,155,144,101, 89,139,218,168, 54,145, 93, 45,172,170,133,150, 5,150,176,240, 90,202, 88,239,
+ 65, 18,137,164,218,194, 73, 44,224,188,157,152,152,216,183, 83,167, 78,183,198,142, 29, 35,244,127, 68, 0, 0, 32, 0, 73, 68,
+ 65, 84,171,206,206,206,134, 88, 44,134, 92, 46, 71,211,166, 77, 97, 99, 99,131,210,210, 82,236,219,183, 79,123,252,248,241, 56,
+149, 74,213, 3,127,204,129, 21,254, 68, 25, 51,106,123,184, 10, 4,130, 63, 8,172,234,149, 2,104,154,206,104,200,245,108, 36,
+254, 50,206,137,239,140,113, 30, 56,120,136,221,161, 67,135,100,107,215,110, 76,232,218,245,221,109,182, 94,239,159,176,245,122,
+255, 68,199, 23,223,222,249,221, 79, 91, 30, 28,248,237, 55,171,129, 3,135, 57, 76,126,119,140, 55, 40, 74, 88, 31,167,181, 84,
+218,177,219, 11, 45,202, 47, 94,190,200, 44, 89,177,141,237,220, 53,234,234,183,223,253,180,247,219,239,126,218,219,185,107,212,
+213, 37, 43,182,177, 23, 47, 95,100,186,189,208,162,220, 90, 42,237,104, 73, 57, 39, 77, 28,237, 48, 48,106, 8,142, 28, 57,192,
+236,218,182,122,233,161,104, 99,247, 17, 51,245, 5, 89, 15,206, 18,228, 47,130,187, 36, 6,217,217,217, 21, 12,195,244,172, 37,
+192,189, 86,206,201,239,142,174, 41,174, 46, 38,100, 96,195,250, 91,183,216, 31,199,207, 55,239, 60,121, 64,119,228,194, 45,213,
+133, 27,217,101, 69, 15, 42,210, 52,106,149,145,227, 56, 16,142, 21,124,249, 37,168,186,218,168,115,231, 30, 56,119,122, 39,182,
+109, 94, 87,193,113,208,143,220,183,143, 29,249,227,124,210,180,105,179,166, 59,118,236,164, 6, 13, 30,234, 64, 8,184,193, 67,
+135, 56,238,218,177,139,242,247,247,111, 22, 16, 0,241, 63,189, 47, 61, 47,206,249, 64,153, 42, 43,235,194,245, 53,107,140, 30,
+163, 70, 57, 75, 60, 60,236,193,113, 84,125, 49, 88,181, 88,176,158,202,233,225,236,172, 56,121,242, 36,130,131,131, 33,151,203,
+ 31,243,200,136, 68, 34,248,250,250,194,205,205, 13,167, 78,157, 2, 1,110,212,198, 57, 27, 40, 47, 79, 75,139,190,186,108,153,
+193, 99,196, 8,167,182,254,254, 55,190, 93,179,198,200,178,236, 35,171, 85,205,191,101,101,101, 96, 89, 22,231,207,157, 51, 86,
+234,116,155,234, 42,231,205,239,191, 55, 84,215,189,163, 94,175, 25, 26, 25,185,120,204,152, 49,166,140,140, 12,176, 44,139,154,
+150,172,194,194, 66,216,217,217, 65,167,215, 55,113,119,119,183,182,132,179,240,216, 49, 91,212,243, 92, 23, 8, 4, 79,186, 8,
+255,140,118,255,239, 88,176, 24,134,129,143,143,207, 99,121, 70,170, 3, 7,171, 45, 67, 22, 90,174, 0, 0, 74,165,242,103,134,
+ 97, 78,142, 25, 51,102,110,219,182,109, 39, 77,159, 62, 93,224,239,239,143,138,138, 10, 56, 57, 57,193,205,205, 13,153,153,153,
+216,191,127, 63, 91, 94, 94,254, 19,203,178, 11, 10, 11, 11,139, 44,224, 61, 15, 96,208, 75, 47,189,180,231,253,247,223,119,232,
+222,189,187,168,122, 0,188,119,239, 30,142, 29, 59,102,218,189,123,183, 74,175,215,143,178, 36,139, 59, 0,228,231,231,159, 2,
+240,202,184,113,227,118, 12, 27, 54,204, 78,175,215,139,210,211,211, 97, 52, 26,193, 48, 12, 74, 75, 75, 77,209,209,209,149, 90,
+173,118,116,213,190,245,241,221,204,207,207, 15, 53,153, 76, 99,111,221,186,181,232,149, 87, 94,113,233,212,169,147,152, 97, 24,
+196,196,196, 20, 69, 68, 68,184,171, 84, 42,211,229,203,151, 75,244,122,253, 28,165, 82,105,209, 82, 57, 20, 69, 65,165, 82,193,
+213,213, 21,122,189, 30, 28,199,193,104, 52,194,206,206,238,209,242, 70,132,144,135, 55, 71,195, 93,132, 96, 24, 70, 96, 54,155,
+241,218,107,175,129,227, 56,172, 94,189, 26, 12,195, 8, 26,202, 99,107,107,123, 35, 62, 62,126, 80, 88, 88,216,163,242,208, 52,
+ 13,154,166, 33,149, 74,225,234,234, 10, 23, 23, 23,156, 57,115, 6, 52, 77,223,176,144,246, 78,113,113,113,187,147, 39, 79,118,
+186,115,231,206,155, 0,218,152, 76,166, 38, 44,203, 82, 52, 77,231,177, 44,123,183,178,178,114, 19, 44, 92, 42,167,176,176,112,
+209,216,177, 99, 35,118,237,218,101, 43, 20, 10, 31, 93, 47,154,166, 33, 22,139,225,234,234, 10,153, 76,134,230,205,155, 67,167,
+211,225,243,207, 63, 87,105,181,218, 69,255,166, 7, 66,215,206,221,112,238,196, 78,235,109, 91,183,171, 89, 22,116, 85, 42,134,
+ 71, 8,241,135, 96,235,230,245, 18,153, 80,239,212,181,115, 55,139, 92, 43, 70, 19, 83, 50,106,194, 79, 62, 85, 75,229, 44,202,
+200,204, 90,181,243,167,183,211, 0, 96,197,234,141, 1,217,169,166,233, 9,247,147,135,172,221, 24,221,209,104, 98, 44, 90, 0,
+247,127,162,101, 71, 5, 8,244, 74,165,242, 42, 69,201,253,186,190,101,154, 19,220,140,122,185,160,132, 83, 80, 20, 53, 85,169,
+ 84,166, 89, 90,247, 78,157,186, 35,250,244, 46,108,219,178,163,130,226,160,175,190,255,246, 1,100,223,252, 11, 4,184, 80,189,
+171,102,242, 43,248,114,206,140, 73, 31,171,212, 21, 43,215,254, 88,183,219,164,117,155, 23,208,186,205, 11,152, 50,245, 51,135,
+208,176, 16, 95, 0,216,183, 15,108,152, 95,194,225,185, 11,230,191,188, 96,238,124,168,180, 6, 84, 47,171,115, 63, 41,225,104,
+ 90, 58,140,252,240,244, 63,204,101,152,171,248,244,211, 22,250,138, 10,183, 46, 51,103,186, 10,151, 45,163,171, 95,160,159,180,
+ 96, 61,178, 94, 53,128,243,196,217,179, 71, 63,253,228, 19,197,242,101,203,250, 45,249,230, 27,171,150, 45, 91, 34, 63, 63, 31,
+ 33, 33, 33,144,203,229,136,137,137,193,169,227,199, 53,149, 58,221, 28, 79, 79,207,181,121,121,121,181,114,206, 7,174, 10,231,
+204,105,110,212,104, 60,150,111,222,252,160, 87,159, 62, 5,155, 54,109,106,210,191,127,127, 90,171,213,162,162,162, 2, 21, 21,
+ 21, 48, 24, 12, 16,139,197, 80, 42, 20, 92,174, 66,113, 55, 59, 59,123, 83,157,229,252,232,163, 22,218,210, 82,183, 46, 51,103,
+186,154, 75, 74,100, 31,103,102,230,210, 91,183,126, 51,105,226,196, 79,166,127,244,145,180, 73,147, 38,148,193, 96,120, 36,180,
+204,102, 51,172,172,172,204, 12,195,184, 0,208, 90,194, 41, 59,122,148, 41, 41, 41,129,179,179,243,163,180, 75, 52, 77, 67, 38,
+147,193,201,201, 9,149,149,149, 32,132,240, 9,112, 27,226,145,121,218, 63,130,131,131,111, 8,133,194, 38, 53, 77,132,181,173,
+109, 87,243, 59,195, 48,185,241,241,241,145, 79, 40,220, 90, 77,159,114,185, 60,128,227,184,175, 59,117,234,244,202, 59,239,188,
+ 67, 93,184,112, 1,103,207,158, 37, 10,133, 98, 31, 77,211,115, 20, 10, 69, 90, 29,111, 54,181,114, 58, 57, 57,217,217,217,217,
+125,104, 99, 99,211,167, 58, 21,131, 76, 38,187,167,209,104,206,168,213,234,213,117,100,111,127, 42,167,159,159,159, 61,199,113,
+ 31,216,216,216,244, 45, 46, 46,110, 11, 0,174,174,174,183, 53, 26,205,105,154,166,215,212,177,128,244, 83, 57,189,188,188,172,
+108,109,109, 23, 57, 59, 59,191,241,206, 59,239,184, 92,184,112, 33,239,246,237,219, 98,149, 74,181,147, 97,152,186, 22,123,254,
+ 3,103,203,150, 45, 31, 91,139,240,121,182, 17, 0,180,110,221,250,200,224,193,131, 7,190,241,198, 27, 48,155,205,248,233,167,
+159,112,234,212,169,163,169,169,169,131,234,121,251,124,140,211,195,195,195, 85, 46,151, 71,143, 30, 61,186,233,208,161, 67,173,
+ 29, 28, 28, 32, 16, 8,160,209,104,144,150,150,134,123,247,238,145, 83,167, 78, 85, 38, 36, 36,228,234,116,186, 30, 5, 5, 5,
+197,150, 94,207,103,124, 75,126,140, 83, 40, 20,118,247,241,241,217, 61,111,222, 60,187,190,125,251, 90,185,184,184, 64, 40, 20,
+130, 97, 24, 20, 20, 20, 32, 46, 46, 14,199,142, 29,211,252,242,203, 47,154,146,146,146,215, 80, 99,212,253, 43,203,249,188, 57,
+171, 51,185, 63,214,183, 66, 91, 38, 36,101, 96,241, 99,219,252,240, 81, 66,124, 66,171,154,150,171, 26,153,220, 45, 42,103, 84,
+ 23,199,168, 87,134,182,239, 3, 0,251, 15, 94, 63, 83,207, 98,207, 79,150,243,139,132,248,164, 39, 22,155, 14,185,159,152,142,
+133,141,174,187, 31,230,198,197, 37, 60,198, 25, 30, 30,122, 63, 49,227,233,217,233,159, 52,244,214,122,111, 86,199,139, 61,190,
+103,118, 98,230,255, 92,160, 45,155, 97,208,144, 87,134, 13,252,108,214,108,124,189,100, 49, 14,237, 63,112, 52, 49,243,209,114,
+ 62,255,200,190,244, 39,114, 82, 95, 9,133, 47, 88,123,121,117,219,229,234, 58,251,228,233,211,182,213,241,181,213, 49,146, 79,
+ 78,184,138,136,136, 40,188,115,231,142,135, 37,156,131,190,251,206,164,183,179,147, 46,249,233,167,238, 90,163,177,251,199, 31,
+127, 44,188,113,227, 6,118,239,220,201,232,114,114,118,228,179,236, 7, 79,241,126,252,161,238, 95,137, 68, 29,101, 46, 46, 61,
+ 90,204,158, 45, 93,178,103,207, 56,121,147, 38, 30,131, 6, 15, 22, 11,133, 66,104, 52, 26, 40,149, 74, 92,142,137,209,103,101,
+103,199,233,245,250, 97,185,185,185,121,150,214,125,208,119,223,153, 28, 3, 2, 96,235,225,193, 93,186,124,217,113,230,188,121,
+147, 60,188,188, 28,186,116,237, 42,178,182,182, 70, 89, 89, 25,178,179,179,113,233,210,165,194,180,180, 52,111, 0,172, 37,156,
+191,221,187,215,250,220,213,171, 35, 62,253,244, 83, 73, 72, 72, 8,236,236,236,160, 82,169,144,152,152,136,203,151, 47, 27,246,
+236,217, 83,161,209,104, 38,229,230,230,254,246, 39,182,251,127, 67, 96,253, 85, 55,158,135,135, 71, 36, 77,211, 95, 84,185,163,
+ 22,214,183,166,223,191,233,161,227,233,233,233,235,228,228,180, 94,167,211, 17,131,193, 48, 49, 63, 63, 63,251,111, 88, 78, 97,
+100,100,228,143,133,133,133,157, 8, 33,112,112,112,184, 18, 31, 31,255, 30,234,246,197, 63,141, 83,224,233,233,217,201,198,198,
+166,163,141,141, 77,119,147,201,212,178, 42, 14, 47, 81,171,213, 94, 48,155,205, 87,243,243,243,175, 84, 61, 16,254, 63,235, 46,
+ 0,208,215,219,219,251,109,142,227, 2,105,154,118,172,114,149,150, 19, 66, 82,202,202,202, 54, 2, 56,253, 55, 40,231,115,227,
+ 12,245,195, 48, 66, 33,228,177,135, 3,135,236, 39,131,215,171,131,225, 31,219,143, 32, 41, 33, 3, 7, 26, 80, 78,122,104,111,
+183,229,192,195,153,134,168, 59,112,246,113, 49,100,129,104,105,176,192,106,138,177,181,114,102, 97,187,133,124,220,179,180, 81,
+104, 83,116, 7,133, 78, 28,133,171, 73, 25, 56,247,111,124,214, 61, 79,206,175, 1,231, 95,130,130,174,208, 66,161, 39, 69, 81,
+ 52, 0, 80, 52,205,113, 0, 11,154,102,106,186, 5,159,120,161,172,147,211, 4,180, 18, 75,165, 77, 88,134,241, 40, 17,139,237,
+ 46,219,216,180, 51, 0,149,158, 44,251,197,217,210,210,251, 13, 45,231,124,192, 9, 64,168, 80, 42,245,189,108,109, 61,184,212,
+201,169, 93, 25,195,120, 0,224,164, 82,105,124,165, 86,187, 41, 39, 39,103, 99, 45,158,138,122,203, 41,146, 74,125, 88,134,241,
+160, 0, 66, 11,133,133, 39,165, 82,159, 34, 55,183, 55,181, 58, 93, 83,169, 84,106, 6,160, 50,153, 76,163,115,114,114,206, 54,
+132, 51, 91, 32, 8,189,107,103,215,149,181,183,119, 49, 1, 54, 38,142, 51,153,204,230, 28,131,193,112, 79, 32, 16,172, 84, 40,
+ 20,169,127,114,187,243,104,224, 77,194,115,242,156, 60, 39,207,201,115,242,156, 60,231,159,204,233,238,238,110,237,233,233,233,
+ 91,245,146,248, 79,172,251,191, 10, 66,254, 18,240,224,193,131, 7, 15, 30,255,124, 20, 22, 22,106, 81, 75,204, 21,143,255, 31,
+212, 53,251,165, 33,166,191,198, 40,217, 56,158,147,231,228, 57,121, 78,158,147,231,228, 57,255,115,156,245,113,243,174,199, 63,
+ 73,120,241,156, 60, 39,207,201,115,242,156, 60, 39,207,249,223,227,252, 87,129,230, 47,193, 83,225, 81,245,121,222,251,242,248,
+119,247,133, 39, 33,175,250, 52,100,127, 47,254,146,243,224,193,131,199, 63, 27,255, 31, 49, 88,213, 3, 85,193,115,218,239,121,
+ 31, 11, 0,139, 41, 10, 51, 0,128, 16, 44, 5, 48,251, 89,246, 37, 79, 89,209,253, 73,132,133,133,185, 82, 20,213,219,193,193,
+161,149, 90,173,142, 35,132,156,190,119,239, 94, 9,101,225,250, 79, 62, 62, 62,126, 50,153,108, 28, 69, 81, 45,171,206,155,168,
+215,235,183,230,228,228,100, 60,135,118,163, 0,188, 43,149, 74, 95,117,116,116, 12, 44, 43, 43, 75, 49, 26,141,191, 0, 88,135,
+ 70,100,156,246,242,242, 10, 2, 48,150,227, 56, 33, 77,211,187,242,242,242,238, 88,122,172,123,216,144,189, 4,104, 1,128,230,
+ 40,110, 4, 77,232,125, 0, 56, 10,120, 80, 24,127,232,213,231,220, 95, 27,210, 23, 30,127,123,161,233, 37,132,112,159, 2, 0,
+ 69,209,203, 88,150,253,172,174,253, 5, 2,193, 10,194,113, 31,128, 2,161, 40,122, 25,199,113,179,248, 71, 20, 15, 30, 60,120,
+252, 7, 32,151,203, 7,120,121,121,237,240,242,242,218, 33,151,203, 7, 88,112, 72,120, 45,131, 21, 75, 81, 96,129,199,243,235,
+ 52, 96,191,250,204,146, 53,143, 93,110, 97,213,106,114,122, 80, 20, 88, 82, 5,138, 2,231,238,238,190,222,219,219,123,245,147,
+ 31,119,119,247,245, 20, 5,174,198,190,108, 13,113, 23, 94, 83, 96,213,247,137,136,136,112,121,235,173,183,214, 40, 20,138,117,
+ 38,147,105,125,118,118,246,186,145, 35, 71,174, 9, 14, 14,246,180,164,238,254,254,254, 67,135, 12,125, 37,250, 98,236,141,251,
+201, 41, 89,202,132,251,105,153, 39,207, 92,186,218,111, 64,212, 25,127,127,255,161, 13,104, 35, 10,192, 68,161, 80,120,222,214,
+214, 54, 87, 40, 20,158, 7, 48, 89, 32, 16,252,182,120,241,226,204,248,248,248,130,152,152,152,242,232,232,104,197,132, 9, 19,
+ 82, 40,138, 58,140, 63, 90, 66,195,235,179,226,120,121,121, 45,200,201,201,185,145,151,151,119,179, 73,147, 38, 63, 60,193, 81,
+155,213,231, 17,167, 91,216,144,187,133, 21, 38, 82, 88, 97, 34,110, 97, 67, 72,141,239,119, 27,216,165,235,235, 75,127,232, 11,
+ 54, 54, 54,193, 79, 8,121,143,167,112,254,225, 88,103,103,103,111, 66, 8,221,188,121,243, 14,114,185,252,123,185, 92,254,125,
+243,230,205, 59, 16, 66,104,103,103,103,111,153, 84, 90,111, 95,122,142,224, 57,121, 78,158,147,231,252,187,113,254,119, 45, 88,
+132,144, 55, 83, 82, 82,172, 57,142, 67,112,112,240, 24, 0,199, 27, 98, 85,162, 40,204,224,184,135,214, 28,154,166,102,246,236,
+217, 43,194,202,202,234,177,140,197, 58,157, 78,114,254,252,185,222, 28, 71,168,170,253,102, 16,130, 53, 22, 90,163, 60, 40, 10,
+ 51,140, 70, 3, 45, 18, 73, 32, 16,208, 31,135,135,183,138, 44, 46, 46, 62,203,178,236, 79,181, 36,175,172,223,108, 67, 81,216,
+180,105, 83, 75, 15, 15,143, 63,172,161, 82, 80, 80, 32, 30, 60,120, 80,131,248,222,108,213, 74,166, 79, 75,235, 74,139, 68,190,
+ 38,179,217, 21, 0, 68, 34, 81,137,204,214,214,231,243, 57,115,172,109,108,108,184,146,146, 18,168, 84, 42,106,202,148, 41,178,
+ 41, 83,166,244, 5,176,173, 46,206, 38, 77,154,248,135,183,110, 59,109,235,150, 45, 29, 43, 74, 75,245, 27, 87,174,189,101, 16,
+ 74,181, 77, 91, 6,137,191,152,247,149,195,130,185,179, 39,154, 76,166,184,220,220,220,244,250,140, 46, 0, 14,124,248,225,135,
+ 97,131, 6, 13,146,168,213,106,153, 86,171,109,182, 99,199,142,207,219,183,111,111, 27, 17, 17, 33,217,189,123, 55, 85, 94, 94,
+ 14, 66,136,117, 72, 72, 8, 25, 57,114,164,126,239,222,189, 83, 0,124,219, 16, 11, 16,203,178,162,234, 76,233, 12,195, 72,170,
+250,162,201, 18,139, 17, 5, 60, 8,235, 50, 18,160, 16, 24, 31,243,139, 44,172,235, 72, 61, 8, 82, 40,224, 65,213,139,192, 59,
+ 28,199,249, 61,197,170,148,161, 80, 40, 54, 52,230,102, 25, 56,112, 16, 0,172,191,121,243,230,197,162,162,162, 38, 28,199,142,
+182,212,178, 69, 81, 20, 37, 20, 10,199, 2, 88,162,211,233, 38,156, 61,123,182, 45, 0,244,238,221, 91, 12,224, 6, 33,164, 19,
+254,252,188,116, 60,120,240,224,193,227,111, 42,176,196, 0,112,241,226, 69, 16, 66, 36,141, 56, 31, 85, 83,184,124,240,193, 7,
+240,242,122, 60,220, 36, 47, 47, 15,209,209,231,159,165, 78,143, 13, 82,139, 22, 45,114, 40, 41, 41,121,121,211,166, 77,253, 0,
+124, 94, 80, 80, 16, 93,207,241, 5,132, 96, 41, 77, 83, 51, 41,138,130, 68, 34,205,152, 56,113,226,141,170,250, 7, 28, 62,124,
+216,122,240,224,193, 90,138,162,210, 0, 64, 34,145,186, 11, 4,180, 31, 33,164,122,160,125,170, 16,124,197,214, 54,152, 16, 50,
+120,210,138, 21,108,187,168, 40,161,189,187,187, 0, 52,141,162,236,108,151,245, 63,252,208,233,254,169, 83, 82,207,144,144,108,
+163, 68, 82,158,156,156, 12, 47, 47, 47,136,197,226,122,223, 18,172,173,173, 39,124, 56,253, 19,183,138,210, 50,157, 89,173, 54,
+217,114, 44, 99, 47, 19, 81,170,162,146,242,140, 28,123,237,132,201,211,132,115,103,125, 52, 1,192,103,245, 80, 77,153, 62,125,
+122,203, 14, 29, 58,200,247,236,217, 67, 85, 84, 84, 64, 40, 20,218,182,109,219, 22,145,145,145,236,217,179,103, 41,127,127,127,
+132,135,135, 35, 38, 38, 6,151, 47, 95,166, 34, 34, 34,172, 15, 28, 56, 48,198,108, 54,127, 91,159,168, 22, 8,232, 89, 35, 70,
+140, 28, 96,109,109,109,214,233,116,120,231,157,119,160,209,104,208,178,101,203,214, 61,122,244,136, 53, 24, 12,162, 67,135, 14,
+134,179, 44,135,186,196,117,181, 27,176,202, 98,213, 10, 4, 41, 69,241,135, 90, 87,255,159,227, 56,191,251,247,239,135,150,151,
+151,131,227,184, 71,107, 50, 2, 64,183,110,221, 26,210,151, 10, 8,193,210,193,131, 7,205, 4, 40,244,234,213,171,100,218,180,
+105,108, 98, 98, 98,143,225,195,135,189,240,224, 65, 74, 93, 47, 1, 5, 20, 69, 47,163,105,106, 6, 69, 81,212,184,113,227, 11,
+108,109,109,135,249,248,248,220,167, 40, 74, 40, 22,139,171,239, 3, 65,203,150, 45,221,194,195,195, 39, 59, 57, 57, 21, 10,104,
+218,157,128, 16,138,162,151, 17,194, 21,240,143, 40, 30, 60,120,240,248, 15, 8, 44,138,162,138,111,223,190,237,165,215,235, 65,
+ 81,148, 37,214,160,184, 39, 6,156, 31,105,154,122,143,162, 40,132,135,183, 74, 95,189,122,117,109,235,109, 25,195,195, 91,165,
+ 11, 4,180, 63, 33, 4, 20, 69,175,125, 98,160,137,171,111, 64,148, 72,164, 51, 0,192,203,203,187,224,200,145, 35,230, 17, 35,
+ 70, 96,217,178,101,146, 89,179,102,125, 69,211,244,168,188,188,188,220, 58,202, 9, 0,179,221,220,220,157, 55,109,218,212,114,
+226,196,137, 55,148, 74,229,135, 0,224,237,237,189, 26, 64, 43,138,162,210,106,108,195,186,117,235, 34, 39, 76,152,144, 88, 88,
+ 88, 56,251,105,156,175,216,217, 5,186,120,123, 15, 93, 30, 19, 67,132, 12, 67, 85,220,184, 81,158,155,159,111, 50,178, 44,125,
+ 60, 61,189,227,168,241,227,197, 30, 94, 94,228,208,186,117, 77,181, 34, 17, 97,101,178,138,248,248,120, 98, 50,153,238,213, 87,
+119,138,162, 66,156, 28,157,108, 54,174, 88,123,195, 77, 42,160, 92,125,188, 41,177,189,163,144,182,181,147, 18,129, 64,215,212,
+199,219,142,162,168,144,250,218, 72, 44, 22,143,233,215,175,159,245,238,221,187,169,240,240,112, 56, 58, 58,226,226,197,139,184,
+125,251, 54,202,202,202,104,134, 97,208,190,125,123, 44, 93,186, 20, 62, 62, 62,168,168,168, 64,102,102,166,171, 88, 44,118, 51,
+155,205, 79,187,158,143, 9,222, 25, 51,102,192,221,221, 29, 44,203, 34, 47, 47, 15,149,149,149,176,177,177,129,131,131, 3,148,
+ 74, 37, 14, 29, 58,104, 73, 95,178, 8, 47,190,248,162, 22, 64,230,147, 22,172,134,112,202,229,242, 83,133,133, 69, 93,123,246,
+236,137,242,242,114,211,188,121,243,208,182,109, 91,180,104, 17, 84,111, 57, 89,150,253,204,213,213,117,179,139,139,203,138,105,
+211,166,121,186,184,184,192, 96, 48,204, 41, 41, 41,193,140, 25, 51, 0, 0,145,145,145,173, 8, 33, 71, 39, 76,152, 0, 63, 63,
+ 63, 69,105,105,105,246,253,251,247, 39, 22, 22, 22,198,213, 88,226,232,207,152,178,204,115,242,156, 60, 39,207,249,119,227,252,
+ 87, 10, 44, 82, 99, 32, 36,120,138,171,130, 16, 82, 38,151,203,189,172,172,172, 64, 8, 41,107,232,201, 56,142,155,226,226,226,
+ 82, 56,123,246,236, 46, 65, 65, 65,198, 41, 83,166,196,101,102,102,206,169,185, 79,179,102,205, 22,125,255,253,247, 72, 78, 78,
+206, 92,188,120,113, 76, 73, 73,201,194, 6,158,102, 22, 33, 88, 13, 0, 74,165,178,248,240,225,195, 29, 46, 92,184, 48,107,245,
+234,213, 94, 83,166, 76,145, 76,155, 54,109,178, 5,150, 28, 8,133, 66, 93,109,110,193,218,224,225,225, 97, 18, 10,133, 79, 91,
+ 63, 16, 19,219,181,147, 18,142, 27,250,205,197,139, 28,151,155,171, 63,182,101, 11,150, 93,190, 60,201,193,213,213,215,205,205,
+141,248, 53,105, 82,100,197, 48, 5,170,162, 34, 58,162, 95, 63,209,201,109,219,154, 74,253,252, 18,246,237,219, 87,201,113,220,
+ 41, 11,138, 80,105, 52,155, 13, 54, 62,222,230,193, 67,250,181,186,119,237,118,178,149,179, 51,221,170,125,219,208,164,148,204,
+155, 20, 96, 4,234, 95, 60,214,193,193, 33,168,184,184, 24, 42,149, 10,110,110,110, 88,179,102, 13, 60, 60, 60,160,213,106, 17,
+ 31, 31, 79,154, 52,105, 66, 93,186,116, 9,222,222,222, 40, 42, 42,130,209,104,132, 86,171, 45, 52, 26,141, 79,171,123, 1, 77,
+ 11, 54,210, 52,245, 14, 69, 81, 8, 12,108, 81,240,237,183,223,154, 9, 33, 8, 9, 9,193,176, 97,195,112,241,226, 69,196,199,
+199, 87, 91,153,204,126,126,254, 5, 52, 77,185, 63,236,110,117, 91, 4,235,233,107, 0,144,153,151,151, 55,187, 49,199,203,229,
+114, 25,203,178,147, 2, 3, 3, 7,189,254,250,235, 38,177, 88, 12,173, 86, 91,125, 45, 76,253,251,247, 47, 25, 60,120,144,203,
+209,163, 71,235, 44,103,113,113,113, 90,203,150, 45,223,249,228,147, 79,182,175, 93,187,214,241,179,207, 62,123,180, 8, 55,203,
+178,224, 56,238,145,149,237,192,129, 3,200,200,200,248,186,176,176,144,127,112,241,224,193,227,191, 8,139,180,200, 63,209,130,
+245,151, 84, 70, 32, 16,172, 59,117,234, 84,219,110,221,186, 9,123,247,238, 29,126,226,196,137,112,133, 66, 17, 87, 53,168,133,
+247,238,221, 59,220,221,221, 29,107,214,172,209, 10, 4,130,117,141, 60,205,163,193, 46, 47, 47, 47,150,162,168, 47,126,253,245,
+215, 77, 19, 39, 78,132,135,135, 71, 91,165, 82,249,151, 94,228,178,228,228,206,227, 22, 44,224,100,128,224,232,246,237,228,171,
+152,152,111,246,254,242,139, 56, 32, 32, 0,132, 16,100,102,102,218,255,180,105,147,243,168,190,125,227,243, 53, 26, 42, 53, 63,
+159, 77, 56,114,132, 46,161,233,239,210,210,210,138,107, 46,214, 92, 27, 76, 38,211,245,236,172,172,160,206, 93, 59,123, 93,188,
+145,112,107,248,208, 65, 61,105, 33, 77,103,100,229, 93,119,115,113,182,185,124, 37, 70,101, 50,153,174,215, 87, 78,141, 70,147,
+193, 48,140, 51, 33,196, 45, 58, 58, 26,174,174,174, 40, 43, 43,131,217,108,134,201,100, 50,106,181, 90, 89, 82, 82, 18, 12, 6,
+ 3, 12, 6, 3,236,237,237,113,239,222,189, 2,134, 97,206, 61,141,147,101,217,119, 1, 44, 32,132, 32, 57, 57, 89, 81,229,250,
+108,225,232,232,184,147, 97, 24, 40,149, 74, 68, 71, 71,143,206,203,203, 75,174,169,111,170,254, 42, 26,125,151, 18,210,232,246,
+114,115,115, 11, 23,139,197,179,167, 78,157,234, 17, 22, 22, 6,189, 94, 15, 0,176,181,181,133, 86,171,133,189,189, 61, 58,117,
+234,148,184,112,225, 66, 19, 33, 24, 7, 32,191, 46,190,196,196,196,162,160,160,160,169, 19, 39, 78,252, 50, 40, 40,200,159, 16,
+130,192,192, 64,244,235,215, 15,199,142, 29,195,131, 7, 15,160,209,104,216,107,215,174,237,206,201,201, 57,194, 63, 99,121,240,
+224,193,139,172,127,143, 5, 11, 85, 21, 34,127,246, 9, 11, 11, 11,139,146,146,146, 78,220,188,121,115,208,171,175,190,138,232,
+232,232,113, 0, 62, 2, 0,169, 84, 58,238,213, 87, 95,197,205,155, 55,145,148,148,116,162,176,176,176,232,121,156,147,162, 40,
+173,209,248,208,128, 35,147,201,172, 26, 56, 80, 7, 84,185, 6, 65, 8, 9,120,218,182,122,172, 97,190, 47, 14, 27, 70, 87,222,
+190, 93,190,224,228,201, 15,119,253,250,171,216,199,199, 7,106,181, 26, 2,129, 0,246,246,246, 84,191,168, 40,167,141,187,118,
+121,250,216,217, 93,158, 60,126,252,253,175, 79,159,214, 94,174,168,176, 40,189,130, 94,175,223,180,104,225, 23, 61,183,239,216,
+ 27, 18, 28, 18,232,116,236,212,249, 91, 46, 46,246, 86,126,126, 1,210,138,242,114,195,247,171,151, 9, 53, 26,205,230,250,120,
+116, 58,221,129,179,103,207, 14,245,241,241,113,139,139,139,131,209,104, 4,203,178,232,211,167, 15, 8, 33, 82, 0,156, 80, 40,
+ 68, 98, 98, 34, 76, 38, 83,225,131, 7, 15, 20,169,169,169, 82, 0, 75,234,161,126, 76, 40,209, 52, 61,106,208,160, 65, 96, 24,
+ 6,253,250,245,195,193,131, 7, 95, 5,240,229,211,246,127, 6, 11, 86, 51, 47, 47,175,197, 85,231,180, 40,184,221,211,211,179,
+ 75,243,230,205,191, 92,190,124, 41,229,225,225, 5,150,101, 96, 54,155, 80, 84, 84, 2,181, 90,141,208,208, 80,248,250,250, 98,
+201,146, 37, 0,112,176, 62,113, 85,141,228,228,228, 20, 0,175,141, 31, 63, 94,124,241,226,197, 72,189, 94,191,170,111,223,190,
+184,117,235, 22,238,220,185,243,134,187,187,123,161,143,143, 15, 35,151,203,223,161, 40,202, 94, 38,147,237,122, 30,215,129, 7,
+ 15, 30, 60,254, 97,248, 75,180,200, 95, 45,176,234,172,152,187,187,187,117, 89, 73,225, 7,126,126,126, 50, 0,144,138, 5,189,
+ 92, 92, 92,190, 46, 41, 41,169,108,232, 73,181, 90,237,222, 29, 59,118,188,180,114,229, 74,113, 84, 84, 84,243, 95,127,253,181,
+ 3, 0, 68, 69, 69, 53,183,179,179,195,142, 29, 59, 76, 90,173,118,239,243,170, 36,199,113,253,218,183,111,143,210,210, 82,100,
+102,102,222,104,200,177,135, 15, 31,182, 6,208,170,190,109,117,193,104, 54,187,217,123,121, 9, 11, 46, 94, 52,233, 24,198, 55,
+ 40, 40, 8,106,181, 26, 18,137, 4, 6,131, 1, 25, 25, 25, 16,139,197,212,131,244,116,215, 89, 31,125,116,201, 42, 40,200,182,
+122,134,161, 37,200,203,203,211, 1,152,246,213,162,175,118, 46, 95,182,204,189,180,164, 44, 89, 44,177,210, 91, 91, 73,157,103,
+126,178,144, 20, 20, 20,124, 92,181, 70, 85,125, 88,178,115,231,206,254, 47,189,244,210, 93, 31, 31, 31,247,226,226, 98, 79,149,
+ 74, 69, 74, 75, 75,169,170,190, 65, 1,192,221,187,119,145,149,149,197,176, 44,123, 9,192, 2, 88,224,126,124,100,154,146,203,
+157, 58,116,232,208,223,197,197,229,145, 43, 50, 34, 34,162, 63,128,239, 20, 10, 69,217,243,236,220,167, 78,157,178,230, 56, 46,
+ 20, 0,250,247,239,111,169, 24,127,115,212,168, 81,148,149,149, 13, 24,134,129, 84, 42,134, 84, 42,133,173,173, 61,156,157,157,
+145,149,149,133, 94,189,122,113,233,233,233,135,172,173,173,183, 52,180, 76,231,207,159,127,185, 67,135, 14, 31, 77,158, 60, 25,
+102,179, 25, 67,135, 14,133, 66,161, 88,158,145,145,177,199,211,211,115,244,156, 57,115, 92, 93, 92, 92, 48, 99,198, 12, 43, 0,
+243,249,103, 45, 15, 30, 60,120,145,245,239, 16, 88, 79, 27, 20,219, 59, 57, 57, 77, 41, 44, 44,148, 85,187, 94, 40,138,146,181,
+105,222,124,157, 88, 44,254, 49, 47, 47,239,114, 67, 78, 90, 94, 94,174, 74, 79, 79, 63, 20, 27, 27, 59,114,248,240,225, 56,125,
+250,244, 88, 0, 24, 62,124, 56, 98, 99, 99,145,158,158,126,168,188,188, 92,245, 60, 42,232,237,237,253, 74,143, 30, 61,198,118,
+232,208, 1,135, 15, 31, 6,203,178,231, 26,114,124,205, 25,131,181,205, 34,172,222,102, 9,151,228, 97,158, 35,176, 44, 11,129,
+ 64, 0,189, 94,143,188,188, 60,220,191,127, 31,246,246,246, 40, 43, 45,165,236,157,157, 77, 6,131,129,109,104, 61,243,242,242,
+114,111,223,248, 61, 85,167,215,139,156, 92,156,181,118, 54, 18,162, 82,171,233,187,119,111,229, 21, 22, 22,102, 90,170, 5, 9,
+ 33,221, 79,158, 60, 57, 87, 32, 16,188, 42,151,203, 49,114,228, 72,170,119,239,222,144, 72, 36,208,233,116, 40, 47, 47,175,190,
+142,254, 0,224,234,234,234, 97,109,109,189,159,166,233,130,140,140,140, 9,245,157,128,101,217,225, 67,134, 12, 17,154,205,102,
+ 44, 92,184, 16,243,231,207,199,128, 1, 3,132,215,175, 95, 31, 14, 96,195,243,234,216,132, 16,188,244,210, 75,143,130,220,159,
+ 8,110,175, 21,221,187,119, 23,166,167,167, 7,200,229,114,100,102,102,194,218,218, 26, 30, 30, 30,112,116,116,132,171,171, 43,
+ 86,174, 92,137, 85,171, 86,221, 17, 8, 4,107,243,242,242, 82, 27, 90, 38, 95, 95,223,119,198,140, 25,243,206,200,145, 35,161,
+ 86,171, 17, 27, 27,139,206,157, 59, 99,241,226,197,158, 49, 49, 49,211,219,183,111, 15,161, 80,136, 11, 23, 46,128,101,217, 28,
+254, 25,203,131, 7, 15, 30,255,124,129, 69, 61,161, 28, 1, 0,142,142,142,246, 50,153,108, 98, 84, 84, 84,151,161, 67,135,162,
+ 95,191,126,143, 29,188,102,205, 26,219,232,232,232,153,223,126,251,109,119, 0,107,149, 74,101,105, 3,172, 74, 7,118,238,220,
+ 25,245,226,139, 47, 90,247,236,217, 51, 0, 0,164, 82,169,113,231,206,157, 90,142,227, 14, 52,162, 46,143,101,111,151,203,229,
+237, 5, 2,193,184, 1, 3, 6,180,127,235,173,183, 16, 31, 31,143, 29, 59,118, 36, 6, 5, 5,157, 46, 40,176, 60,110,250,137,
+ 25,131,181,205, 34, 92, 93,159, 53, 75, 34, 18, 21,169,242,242, 92,132, 94, 94, 18, 27,137, 36,231,250,245,235, 1,205,155, 55,
+167,210,211,211,145,156,156, 12,147,201,132,219,183,111, 19, 26,200, 21,216,219,211, 89,119,239, 82, 98,145,168,193, 57,187,172,
+196, 92,187,207,103,188, 27,168,215,235, 66, 43, 42, 42, 24,161, 80, 40,148,138,216,244, 6,210, 24,124,124,124,134,176, 44,235,
+106, 52, 26,205, 30, 30, 30,162, 51,103,206, 64, 34,145,224,225,236,207,112, 72, 36, 18,163, 92, 46, 87, 3,128,173,173, 45,189,
+120,241, 98,209,244,233,211,227,235, 35,142,136,136, 16, 73, 36,146, 81, 65, 65, 65,184,114,229, 10, 18, 18, 18,210,174, 92,185,
+ 18,208,174, 93, 59,248,248,248,140,242,242,242,218,122,235,214, 45,243,243, 18, 88,104, 96,144,251,133, 11, 23, 56,111,111,111,
+ 80, 20, 5,129, 64, 0,173, 86,139,244,244,116,116,234,212, 9,155, 55,111,198,234,213,171,127,206,207,207,223,210,152,242,140,
+ 31, 63, 94,220,186,117,235, 55, 71,142, 28,137,180,180, 52, 44, 89,178,164, 36, 63, 63,255,252,201,147, 39,135, 79,158, 60, 89,
+208,185,115,103, 20, 23, 23, 99,235,214,173,204,173, 91,183,182, 68, 69, 69,109, 95,191,126, 61,255,132,226,193,131,199,127,205,
+114, 85,219,247,127,151, 5,203,219,219,123,160, 76, 38,123,123,212,168, 81,130,224,224, 96, 20, 20, 20,192,206, 70,106,164, 40,
+ 74, 2, 0,118, 54, 50,163,217,108,198,228,201,147,209,182,109,219, 14, 51,103,206,108,207,178,236,207, 5, 5, 5,251, 45, 57,
+113, 97, 97,161,150,166,233,125,239,189,247,222,146,219,183,111,249, 3,192,181,107,215,210,149, 74,229, 44, 11,221, 89, 53, 81,
+157,156,146,146,201,172,238, 6, 6, 6,150, 68, 70, 70, 58, 13, 27, 54, 12,174,174,174,184,117,235, 22, 22, 47, 94, 28,175,215,
+235,167, 92,184,112,129,249,171, 47, 50,195, 48,217, 87,143, 28,113,122,105,244,104,167,133,163, 70,125,255,214,248,241, 75,191,
+ 94,188, 88, 44,151,203, 41,123,123,123,220,185,115,135,108,220,176,193,180,103,217,178,239, 5, 86, 86,226,139, 7, 15, 74, 88,
+179, 57,165, 33,231,144,203,229,221,219,119,236, 16,190,124,229,183,208,105, 43,113, 45,246, 8,202, 74,139,177,110,195,175,173,
+228,114,121,119,133, 66,113,161, 1,229, 13,216,183,111,223, 67,113, 40,145, 96,193,130, 5,240,246,246,134,189,189, 61, 42, 43,
+ 43,241,238,187,239, 74, 62,248,224, 3, 0, 64, 66, 66, 2,108,109,109, 45,181,178,245,156, 56,113,162,189,217,108,198,241,227,
+199, 13, 44,203, 78, 59,125,250,244,129, 54,109,218, 72,187,117,235,102,191,125,251,246, 94, 0, 78,254, 63,222, 15, 28, 33, 36,
+251,212,169, 83,190, 35, 71,142,132, 88, 44, 70, 89, 89, 25,236,236,236,176,124,249,114, 98, 50,153,246, 55,150, 88,161, 80, 72,
+ 92, 93, 93, 37, 44,203, 98,223,190,125, 80,169, 84, 19,114,115,115,243,155, 55,111,126, 96,230,204,153, 31, 7, 6, 6,250,165,
+164,164,100,177, 44,187, 76,161, 80,100, 0, 0, 47,176,120,240,224,193,227, 95, 40,176, 0,188,113,226,196, 9, 1,199,113, 88,
+191,126, 61,110,222,188, 73,108,237,157, 63,180,115,160,182,217,219,219,179,229,229,229,111, 44, 93,186,116,232,220,185,115,169,
+174, 93,187, 34, 54, 54,150,242,247,247, 31, 14,160,230, 32, 20,142, 58,114,101, 84, 84, 84, 92, 47, 40,200,247,175,145,181,221,
+ 95, 42,149,213, 55,219,237, 73,206, 39,147, 89,182, 89,180,104, 81,156,187,187,187, 57, 46, 46, 14,107,215,174,229,110,222,188,
+121, 20,192,242,194,194, 66,157,133,156,207, 3,143, 56,157,130,130, 46,111,158, 61, 59,226,197,151, 95, 38,189, 94,125,149, 91,
+ 33,145,124,242,197,188,121,211, 74, 85, 42, 31,142,227,224,226,224,144,253,243,162, 69, 43, 59,119,237,170,187,247,251,239, 54,
+ 49,191,253,102,229,209,172,217,165,134,148, 83,161, 80, 92,136,142,190,132,173, 27, 86,194,100, 50, 32, 79,145, 5, 0, 40, 46,
+169, 64, 61,226,234, 15,156, 52, 77,151,143, 27, 55,206,218,104, 52, 82,163, 70,141, 18, 21, 22, 22,162,121,243,230, 0, 0,149,
+ 74,133,163, 71,143, 34, 36,228, 97, 90,173,123,247,238, 61,250, 94, 95, 57,173,173,173, 95,237,210,165, 11, 50, 51, 51, 17, 31,
+ 31,127,172,176,176,176, 40, 33, 33,225, 88, 86, 86,214,240,200,200, 72, 28, 56,112, 96,100, 29, 2,171, 65,109, 84,157, 88,180,
+129,125, 9, 12,195,204, 60,112,224,192,196,216,216,216,238, 31,125,244, 17,213,187,119,111, 0,128, 70,163, 97, 45,140, 55,124,
+106, 57,171,221,195, 28,199,193,199,199, 71, 3, 0,169,169,169, 25, 0,222,111, 44,231,243,232,159, 60, 39,207,201,115,242,156,
+127, 19,206,255,140,192, 98, 56,142, 67,116,116, 52,126,253,245, 87,214,104, 52,206,206,207,207,191, 95, 53,152, 3,192,150,219,
+183,111, 95, 26, 62,124,248,138,228,228,100, 65, 66, 66, 2, 8, 33, 13,138, 29,210,235,245,230, 39, 51, 16,232,245,250,103,118,
+ 17,109,222,188, 25,249,249,249,198,172,172,172,223, 76, 38,211,142,146,146,146,188,198,114, 61,143, 89,132,235,110,222, 52,188,
+ 98,103,119,112, 86,207,158,195, 23,158, 56, 33, 27, 48,126,188,177, 71,255,254, 95,195,104, 52,138, 68, 34, 14, 86, 86, 2,129,
+149,149, 56,225,247,223,109,150, 79,154,228, 66,209,244,161, 31, 18, 18,116, 13,181, 96,245,232,209, 21,227,222,158, 14,157,174,
+ 18,191, 95, 57,130,242,210, 98,196, 94, 79,134,193,132, 6, 89,176,132, 66,161,175,217,108,150, 50, 12,163, 32,132,224,205, 55,
+223, 4,203,178,208,235,245, 80,171,213, 40, 45, 45,213, 79,157, 58,149,174, 18, 77,120,233,165,151, 44,202,234, 31, 16, 16,224,
+ 43, 20, 10,113,242,228, 73, 8, 4,130,253, 15, 5,177, 96,255,217,179,103,135,143, 26, 53, 10,114,185, 60, 40, 45, 45,173,222,
+224,198, 71,139, 61, 83, 8, 4, 0, 80, 8,116, 11, 27,114,183,122,177,103,154,166, 51,218,182,109,107, 81,220,213,147, 40, 42,
+ 42, 42,196,195,192,253, 95,102,204,152, 49,185, 67,135, 14,225, 95,126,249, 37, 0, 8,158,217, 60,198,113, 96, 24,230,153, 82,
+ 72,240,224,193,131, 7,143,127,184,192,162, 40,106,119,207,158, 61, 95, 35,132, 8,104,154,222, 81, 45,174,106, 34, 55, 55, 55,
+ 93, 46,151,175,247,243,243,123,189,202,242,177,171,129,231, 47, 32, 4,223,208, 52, 85,115,237,185,130, 70,112, 44,173,226,160,
+132, 66,209,142,171, 87,175,126,166, 84, 42,243, 1,176,207,122,129,158,199, 44, 66, 0,216,175, 86,167,188, 98,107,123,104,114,
+155, 54,131,135, 78,155, 70, 34,251,246,117,240,108,214,140, 97,204,102, 54,237,238, 93, 42,230,192, 1,113,204,111,191, 89, 9,
+ 40,234,240,126,141,230,126, 67,203,169, 80, 40, 46,156, 59,127,225,212,136,225, 81, 47, 5,248,121, 3, 0,210, 50,148, 40, 46,
+173, 56,213, 16,113, 5, 0, 89, 89, 89, 6, 0, 6, 79, 79,207,225,123,247,238,221, 71, 81, 20, 85,115,185, 25, 0, 6,161, 80,
+216, 2, 0,212,106,117,211, 3, 7, 14,236, 20, 10,133,185,245,241, 38, 36, 36,236,158, 55,111,222,232,244,244,244,223, 20, 10,
+ 69,106, 85,185, 83, 47, 93,186,180, 86,169, 84,142,206,202,202,218, 14, 11,102,142, 16,160, 69,124,204, 47,173, 0, 32,172,203,
+ 72,196, 15, 89,161,117, 0, 0, 32, 0, 73, 68, 65, 84,199,252, 34, 3,208, 42,172,203,200,234,107,241,204,193,242, 85,121,185,
+ 62,184,118,237,218,139,253,250,245, 27, 71, 8, 41,124, 22, 62,153, 76,102, 54, 24, 12, 12,203,178, 66,147,201, 68,100, 50,153,
+153,127,252,240,224,193,131,199,191, 23,127,118, 16,153,165, 38,196,199, 2,212, 27,201,217, 16,142,122, 57,189,188,188,166, 80,
+ 20, 21, 96, 41, 1, 33, 36, 45, 47, 47,239,251,218, 56, 9,121,232,190, 4,158,190,216, 51, 49,155,179,100, 1, 1,151,126,190,
+119, 79, 95,139,216,229, 26,114, 61, 3, 3, 3, 73, 74, 74,138,165,237, 91, 39,167, 92, 46,151, 9,133,194, 39, 45, 84,134, 42,
+ 17, 86,179, 31, 9, 0, 48, 13,108,247, 70,181,209, 35, 11, 22, 64,115, 20, 55,130, 38,244, 62, 0, 92,181, 5,235, 79,232,159,
+141, 42,103,205,118, 7,128,128,128,128,247, 66, 66, 66, 70,223,189,123,119,111, 78, 78,206,154,122,111,206, 6,182,251,159,116,
+111,242,156, 60, 39,207,201,115,254, 85,156,245,141,179,237, 1,184, 85,253,172,206,147,233,246,196,119, 35,128,154, 99, 86,245,
+239, 34,138,162,174,215,224,120,180,221,130, 99, 1,160, 24,192, 93,138,162,140,248,155, 32,156,231,228, 57,121,206,255,161,123,
+247,238, 66,254,122,242,156, 60, 39,207,201,115, 54, 92, 92, 17, 66, 6,226,161,151,131, 16, 66, 6, 86,255,126,242,123,245, 62,
+ 53,127, 87,253,197,147,251, 89,114, 44, 0, 50,107,214,172,217,132,144,158, 13, 41, 51, 13, 30, 60,120,252,101,248,255,152,197,
+202,131, 7, 15, 30,255, 2,184, 81, 20,117,132, 16, 50,136, 16, 50,136,162,168, 35,117,136,177, 65, 53,255,214,133,218,120,170,
+207, 81,243,247,146, 37, 75,190, 6,208,160,149, 96,132,117,168,208,134,152,254,194, 27,241,191, 56,158,147,231,228, 57,121, 78,
+158,147,231,228, 57,255,115,156,207,235,248,103, 70,109, 98,173, 90,200,213,252, 61,107,214,172,207,208,128, 85, 75,254, 10,240,
+230, 83,158,147,231,228, 57,121, 78,158,147,231,228, 57,159, 85, 8, 61,213,165, 87,151,187,240,201,239,150,184, 8,235,218,183,
+ 33,101, 22,130, 7, 15, 30, 60,120,240,224,193,227,239,141,162,154,214,166, 42, 11, 19, 59,107,214,172,207,170,183, 85, 89,153,
+ 12, 0,164, 79, 30,252,196,113,117,162, 33,251,242, 2,171, 17,104,211,156, 94,232,235,235, 30, 89,117,145, 65,170, 82, 20,112,
+ 85, 89, 4, 72,117, 50, 35,194,129,112, 4,202,188,242,155,247,210,241,197, 83,148,119,189,177,110, 93,187,122, 58, 11,116,149,
+171, 88,142,237, 12, 0, 20,232,139, 34,145,227, 71,103,175, 41,202,107,204, 38,171, 19, 33, 1,104, 41, 19,226, 83,142, 67,107,
+138, 2, 40, 10,119,245, 12,150, 37,165, 33,241, 57, 92, 18, 42,204, 31,239, 74,164,214,163, 28, 28,157, 2,203, 74,138, 31,152,
+ 76,134, 95, 18, 50,176, 14,141, 88,148, 51, 56, 0,109,193, 98, 38,203, 65, 36,164,177, 42, 41, 19, 49,124,175,227,193,131,199,
+ 95,100, 13,121,166,248,227,218,158,201,132, 16,234, 25, 57,249, 4,121,117, 95,159,235, 85,129,238,213,162,167, 8,192,189,197,
+139, 23,151, 45, 94,188,184,230,182, 59, 0,218, 84,237, 87, 84,139, 80, 50, 86,253, 54,214,178,143,209,146,125,255, 20,129, 21,
+218, 4,147, 65, 48, 31, 20, 8,128, 47, 19,114,177,182, 65,199, 55, 71, 31,153, 80,176, 17, 4, 2,189,153,253,152,176,184, 88,
+235,133, 20,160,155, 76, 36, 88, 1, 10,156,158, 97, 39, 36,164,226,140,165,231, 8, 11, 68,127, 33, 69,111,231, 56, 34, 98, 57,
+178, 13, 28,142,216,154,113,249,119, 5,244, 13, 41,171,175,175,123,228,193, 51,121, 47,157,223, 61, 13, 29,219, 6,130,112,102,
+128, 48,176, 14,249, 20,103,127,126, 19, 29, 91,249, 62,220,198,153, 97, 27,177, 2, 3,186, 56,144,123,233,141, 91,159,186,107,
+ 87, 79,103, 43,142,187,187,118,211,118, 79,223,192, 23, 41,194, 25,144,114,251,248, 27, 31,204,152,211,179,119, 7,121,107, 0,
+245,174,241,216, 58, 16,111,251,250, 6,127, 58,125,206, 74,218,219,187,137, 45,199, 24,153,188,156,132,118,223,173,156,183, 95,
+ 76,103,173,184,155,130,141,150,246,227, 80, 63, 76, 20,138, 36, 35,173,172,109, 2,181, 90,117, 10,107, 54,255, 66, 11,132,253,
+151, 45, 93,221,182,123,207, 1,182,156, 33,159, 54, 51, 84,232,158,189,187,154,126,255,227,218,168,184, 52,246,101, 0, 92,131,
+ 42,205,226,195,123,135,222, 29, 33, 18, 10,168,144,129, 27,108, 0,166, 95,131, 57, 0,132,249, 33,140,212,159, 9, 29, 20,240,
+ 67,124, 6,226, 27,211, 62, 33,126,216, 68, 1, 65, 0,246, 81, 4,187, 19, 50, 81,200, 63,238,120,240,248,119, 65, 46,151,159,
+ 87, 40, 20, 61,159, 51,103, 71,133, 66,113,149,191,186,207, 79,100,213,178,249, 90, 45,219,174,255, 29,202,219, 80, 11,214, 87,
+241, 41, 57, 78,224, 76, 8, 11, 10, 88, 8, 52, 76, 96,201,132,130,109,215,239, 22,120,130,152,176, 97,229,123,123,140,102,128,
+ 97, 76, 96, 25, 51, 88,198,252,240, 59,107, 6,199,232, 49,111, 85, 52,192,168, 17,217,182,197, 54,128,245,178,244, 28, 34,208,
+219,111, 94, 62,229, 76, 49, 21,216,179,117,241,212, 44,101,229,212, 51,215,148,197,161, 34,221,236,132, 76,108,105,200, 32,126,
+126,247, 7,216,177,255, 88,238,154, 13,123,147, 56, 16, 56,217, 74,131,199, 12,143,247,249,121,255,249,156,213,155,245, 73,132,
+ 35,112,180,147, 6,143,125, 57,197,247, 89, 26, 65,160,171, 92,245,227,134, 45,158,190, 77,155, 82,230,140,175, 0,179, 1, 62,
+190, 81,130, 57,211,223,246,250,114,233, 15, 43, 1,140,173,211, 26,228,143,208,102, 1, 45, 63,222,182,231,138,175,166,178,208,
+120,238,232,103,169, 20, 33,102, 87,215, 16,241,130,175,150, 91,125, 62,123,250, 71, 70, 54,247,234,253,116, 36,212, 83, 20,186,
+165, 31, 14,125,253,245,178,214,189,251, 14,182,101,141, 69, 2,125,165, 58,104,227,150, 77,243, 67,194, 58, 88,119,137,104, 34,
+ 46,186, 60,137,210,170, 75, 97, 34, 86,210, 94,145,189,237,181, 99, 94, 53,111,250,121,215,148,132,116,124,219, 32,125,197,252,
+ 47,215,136,137,129, 12,128, 8,141, 8, 32, 36,192,251,183, 99,207, 79,100,202,174, 3,156,169, 74,244,154, 0,206, 12, 82,227,
+239, 11,175,111, 1,128, 73,141,105, 31,154,194, 75,103,206, 92,247, 42, 40,200,107,191,106,213,215,179, 9,117,253, 56, 40,108,
+ 79, 76,199,133,198,136, 66, 30, 60,120,252, 61,225,237,237,205, 42,149, 74,193,243,228,148,203,229, 81, 10,133,226,216,179,112,
+120,121,121,125, 10,224,237,170,159, 27,243,242,242,150, 61,107,185, 34, 35, 35,155, 16, 66, 60,171,132, 75,254,141, 27, 55,114,
+249, 30,240,255, 43,176,100, 32, 28,112,121, 40, 64, 53,108,186, 98,213, 96, 40, 3, 37, 0,204,149, 24, 50,168, 15, 92, 93,188,
+ 0, 86, 3,176, 58,128,209, 2,236,195, 79,113, 81, 22,192,104,128,162,227, 96, 8,145, 54,184, 86,230, 10,160,240, 23,188,244,
+162, 47, 28,237,100,248,224,181, 80,215,245, 7,147, 55,110, 60,120,191, 79, 66, 58, 70, 89, 84, 86, 66,208, 49, 34, 16,107, 54,
+104,146, 14, 71, 23,245, 3,128,168,238, 46, 39, 58,182,106,234,179,122,179, 62,233,216,197,178,254, 0,208,191,179,253,241, 14,
+225,158,190,220, 51, 44,127,194,114,108, 23,223,230, 17, 20,147,189, 20, 52, 93,134,202,202, 98,228,164,109,133,171, 71, 63,154,
+225,184,110,245, 29,111, 37,196,172, 15, 62, 93, 34,212, 84, 22, 24, 9, 83,200,121,216, 22,139, 69,160, 4,156,230,146, 81,151,
+ 95, 94,249,225,251, 99,152,143,103,125, 61, 11,192,232,186,120, 66,253, 49,101,197,210,213,173, 58,119, 8,118,207,143,249,128,
+170,172, 40,128,153, 88, 73, 95,238,222, 25, 78, 77, 67,185,130,219, 43, 40,169, 87, 31, 56,249, 5, 32,247,222, 14,100,221,253,
+149,234,218, 97,184,116,219, 78,241, 24,192, 84,171,192, 10,244, 68,151,126, 47,117,216, 19,208,212,219,139, 16, 14, 28,199,129,
+ 16, 14,122, 35,139,217,223,167, 66,163, 99, 48,168,207, 11,157, 93, 28, 4, 6, 26, 0, 33, 28,114,148, 37,218,115, 87,146,122,
+167, 41, 81,239,155, 31, 5,252,208,230,197,158, 93,238, 94,139, 13, 49, 41,143,160,253,176,197, 73, 20,254,231,110, 36, 64,151,
+ 91,103,183,132, 0, 91, 26,253,210, 68, 8,216,236,223,151,160, 73,196,187,130,117, 91, 78,184, 85,148, 40,198,254,186,247,199,
+ 17, 63,174, 95,183, 35, 41,189,113,162,141, 7, 15, 30,127, 63, 40,149,202,231, 46,178,174, 92,185,162,124, 22,145, 21, 25, 25,
+217, 77,169, 84, 46, 85, 42,149,213, 34,112,105,135, 14, 29,230, 86,143, 83, 79,160,130, 16, 50,250,198,141, 27, 23,235,226,156,
+ 62,125,186,247,229,203,151,253,110,220,184, 1, 0,104,223,190,189, 95,100,100,164, 95,109,251, 90, 91, 91,179,109,218,180,201,
+ 92,181,106,149,146,239, 33,127,174,192, 74,202,191,244, 97,132,177, 84, 11, 0, 73, 22,236,255,216, 84, 75,189,153, 93,178,117,
+245,216, 37, 97, 65, 78, 80,169,141, 56,125, 41,179,202,130,197,128,101,205,143,254,246,123,209, 21,157,152, 73,248,118,247,125,
+ 48, 44,183,184, 46,206, 39, 97,226,184,215,219,118,123,117, 47, 71,136,196,218,154,174,104,238,227,226,254,241,152, 54,244, 7,
+175,133, 65,167,103, 94,221,121, 60,245, 92, 98, 38, 54, 88,196,201, 49,181, 8,175, 90,182,113,108,189,117,127, 26,218, 4, 91,
+117, 28, 54,160,171, 61,204,165, 96, 53, 25, 48,178, 28,242,242, 52, 72, 87,138,225,192, 21, 88,196,201,113,104,237,233,233,101,
+125,229,212,204, 12,119,187, 50,177,139, 21, 43, 22, 83, 28,161,205, 68, 96, 52, 38,233,157,188,251,136, 56, 14,173,235,107, 35,
+ 43, 43,187, 55,187,246, 28,232,144,125,246,109,202,202,103, 0,220,253,155, 32,227,230, 86, 20,198, 29, 65, 73, 97, 22,229, 64,
+202, 96,221, 34, 0, 3,134,191,134,165, 83, 34,161, 82, 85,130, 42, 74,115,144, 72,164,142,128,169, 86, 78, 66, 99,244,138,111,
+ 22,121, 9,133,244,195,235, 73, 24,128,152, 1, 98,134,186,210, 0,163,209, 8,153,152,192, 70, 70,128, 42, 55, 44,203, 26,173,
+ 91,247,158,245, 30,192, 94,173,175,238,241, 25,136, 15,245, 67, 12, 8, 19, 66, 88, 29, 40, 32, 38, 33,227,127,162, 39,204, 15,
+ 97,237,122,143,127,159, 2,126,104, 76, 27,133, 55,195,160,200, 16, 91, 27, 43, 38, 9,185,209, 83,145,202,202,136, 71,171,183,
+241,218,232, 41,214,235, 54,174, 31, 12,144,201,120, 60, 6,237,207,152, 94,204,115,242,156,255, 72, 78,123,123,123,255,102,205,
+154,205, 53,155,205,221,196, 98,177,135,201,100, 2,199,113,249, 18,137,228, 82,102,102,230, 2,149, 74,149,254,119,171,251,241,
+227,199, 27, 34,178,234,229, 20,137, 68, 56,118,236, 88, 74, 3, 68,214, 99,156, 52, 77,111,223,183,111, 31,246,238,221, 11, 0,
+ 56,127,254, 60, 90,180,104, 97, 83,219,129, 57, 57, 57, 54,175,188,242,202,118, 0, 62,117,113, 62,120,240,192,127,209,162, 69,
+216,183,111, 31, 0,224,231,159,127, 70, 80, 80, 80,173,133,185,115,231,142,224,243,207, 63,247, 7,160,252, 11,218,232, 95, 43,
+176, 8,234, 95, 90, 37,205,211, 78, 20, 1,179, 25, 0,210, 26,122,178,196, 52,124,179,102,211,137,254,103,127,253,161,155, 76,
+ 66, 99,254,170,143,115,138,138,212, 47, 8, 5, 15,221, 44, 12, 11,218,201, 81, 18,187,120,106, 27,223,178, 10, 61,126,187,160,
+184,152,144,142, 6,153, 66, 19,210,112, 26,224, 28,171,108, 67,208,168, 10,131,198,206, 57,189,123,247, 55,253, 91, 79, 31,221,
+ 26,135,162, 51,167, 3, 76,189,107,213, 17,142, 3, 33,204,163,160,246,170,141, 85, 46,167,255,109,227, 8, 1,136, 25,164,129,
+113,222, 95,126, 57, 82,120,104,247,129,254, 54, 82,225,119,147,222,153,104,111, 46, 73, 64, 69, 57,139,252, 98, 13,178,138, 28,
+193, 90, 53, 71,114,252, 85, 86, 64,211,245,198,159, 81, 52, 84,196,172,177,115,178,178,162, 67, 59,188,231, 85, 17,247,153, 74,
+ 42, 48, 11, 28,219, 46,178, 43,184,183, 34,155, 49, 20, 86, 82,244,227, 10,168,214,135,161,131, 67, 11,131, 58, 83, 80, 81, 94,
+ 2,199, 86,161, 24,240,242, 96,204,159,208, 18,106,181, 6, 69, 37, 87, 72, 96, 83, 7, 74,127,107, 39,230,188, 25,130,146,226,
+ 60, 24,205, 0,173,210,151,234,141,250,202,167, 91, 2,177,238,195,143,103,188,222,180,137,155, 77,245,100, 1,194,177,104, 19,
+ 30,128,190, 61, 59,226,116,236, 21, 92,191,149, 12,142,112, 85,147, 9, 88,228, 22,150, 23,232, 77,236,214, 6, 89, 71, 57,230,
+161, 37,180, 22, 1,134, 70,184, 6,195,195, 97,205,106,240, 69,251,150,118, 19,102,190,217,212,206, 78, 66, 65,111,197, 66,175,
+ 55, 67,157,244, 61, 92,154,180,130,181, 76, 70, 69, 68,232,132,183,110,129, 95, 87,144, 7,143, 26, 24, 49, 98,132,172,160,160,
+ 32,218,199,199, 39,180, 79,159, 62,214,221,186,117,131, 70,163,193,201,147, 39,161,213,106,155,250,248,248, 52, 61,117,234,212,
+240,172,172,172, 4, 31, 31,159, 30,251,246,237,211, 55,244, 28,213, 65,229,207, 59, 56, 92, 34,145, 32, 54, 54,246,185, 90,178,
+ 36, 18, 9,174, 93,187,150,210, 24, 75,150, 70,163, 17,123,122,122,194,197,197, 5, 44,203, 66,163,209,224,224,193,131, 80,169,
+ 84,224, 56, 14, 86, 86, 86, 88,113,188, 2,250,251,251,176,241,187, 69,168,168,168, 16,215,199, 89, 92, 92, 76, 5, 7, 7,195,
+ 96, 48,128, 97, 24,232,245,122,156, 57,115,230,209,111,161, 80,136,133,251, 10, 96, 72,222,141,109,235, 86,160,184,184,152,250,
+ 11,187,143, 37, 90,228, 31, 37,176,170, 43,244,167, 87,140,101,153,217,235,183,238,142,157, 61,117, 20,166,188,217,219,103,193,
+183, 7,250, 36,166, 99, 27, 0,180,244,199,216, 49, 81,129,190,142, 54, 34,124,249,211, 13, 0,100,246,179,158, 47, 62, 11,201,
+161, 1,220,244, 3,209, 89,209,159, 77,136, 64,128,143,125,139, 50, 83,169, 36, 45,205,130,120, 31,206, 12, 39, 91,105,112, 84,
+119,151, 19, 32, 28, 28,109,165, 33, 32, 44, 28,237,164,193,253, 59,219, 31,231, 8,129,163,141, 56,132,112,150, 39,231,238, 16,
+ 46,125,199, 74, 68,191, 99, 99,231,232,251,225,164, 49, 86, 3, 7,190, 98,101, 35, 33, 40, 73, 56, 6, 21, 9,131,209,198, 6,
+ 68, 91,142,244, 7,113,236,241, 11, 55, 20, 82, 23,175, 79,128,140,186,139,201,226,162, 50, 39,113, 88,179,192, 62,142, 69, 55,
+230, 20,250,247,222,233, 71,131,165, 53,177,195, 11,109,236, 66,197, 49,119,226, 24,142,197,149,250,202,166, 86,169, 50,205, 38,
+120,233,205, 34,187,212,107, 91, 48,107, 76, 24,202,203,138,160, 55, 48, 40,215, 48, 38, 47, 87,147, 84, 95,118, 15, 6, 35, 3,
+131,137, 64,100,237,141, 83,177,113,197, 28, 99, 62,254, 84, 69,158,135,219,105, 59,110,219,214,220, 22,224,133, 54, 51,157,172,
+110,131,213, 33, 43, 91,137,109,251, 99, 35,210,242,112,251,217,110, 73, 6,132,249,223, 51,186, 58,248,189, 49,193,237, 33, 77,
+209, 65,204,136,190,251,114,214,192,208, 30, 97,172,148,210,231,129, 2, 96, 45, 19,194, 32, 99,225, 32, 11, 0, 49,169,137, 86,
+175, 47,143,143, 3,159,153,157, 7,143, 26, 8, 14, 14,246, 84, 40, 20,241, 31,127,252,177,243,176, 97,195, 30,137,129,173, 91,
+183, 98,245,234,213,152, 63,127, 62,204,102, 51,214,175, 95,111,189,127,255,254, 14, 63,252,240, 67,174,175,175,111, 88,118,118,
+118,190,133,162, 74, 92, 53,118, 61,140, 42, 32,132,253,242,203, 47,201,252,249,243, 81,189, 13, 0, 11,212,255, 82,249, 52, 49,
+ 36,145, 72,144,148,148,244, 92, 68,150, 72, 36,130, 88, 44,134, 68, 34,193,253,251,247, 27, 44,178, 24,134, 17,228,230,230, 66,
+165, 82,161,239,224,193, 88,189,100, 9,186,117,235,134, 62,125,250,128, 16,130,179,103,207,162,147, 83, 50,156, 7,119, 71, 98,
+ 98, 34,204,102,179, 69,158,169,220,220, 92,148,148,148,160,255,224,193,216,240,227,143,104,215,174, 29,130,131,131, 1, 0,209,
+209,209,232, 45,207,132,109,112, 31, 36, 39, 39,255,149,221,231, 47,211, 34,127,181, 5,235, 47, 65,124, 26,126,231, 14, 92, 56,
+242,218,192,246,131, 6,247, 10,197,134,221,231, 22, 65,170,218, 13, 0, 46, 82,233, 87,111, 14, 12, 64, 66, 90, 25,206, 94, 83,
+ 30, 73,204,192,239,207,227,156, 28, 11, 87, 23, 71,107,128,150, 64,107,100, 25,123,251,250, 3,147, 57, 16, 88,183,156,133, 49,
+195, 18,125, 58,182,242,241, 33,132,169,154, 49,184, 18, 99, 95, 78,241,109, 31,230,225,251,208,229,101,134,125,167,157, 0,103,
+ 83,111, 57,186,182,149,157,250,100,218,212, 23, 7, 14,126,205, 74,108,237, 2, 78,151, 3,115,233, 93,148,164,159,135,193,170,
+ 45,138,114, 51,176,251,208,111, 21, 73,233, 5, 42,129,128, 62, 45,116,240,152,113,230, 76,122, 37, 69,213,221,207,244, 2, 44,
+158, 63,119,246,192,221, 59,118, 57, 88,121,119,197,131, 67, 81,229, 18,129, 89,234, 46, 15,130,142,177, 99,151,111, 62,226,168,
+ 1,150,212, 87, 62,173, 70,245,235,153,179, 39, 70, 5,122,117,177,203,136, 59, 2,173,214, 8,131, 25, 8,111,215, 19, 44, 71,
+ 36, 20, 77,113,246, 2, 1, 85, 80, 80, 10,202,204, 21, 92,186,149,145, 23,115, 61, 77, 96,160,235,231,126,172,211,137, 5,211,
+ 6,247,105, 3,176, 58,188,220, 55, 28,171, 54,159,157, 10,176,227,159,237,182, 52,131,176, 58, 16,160, 75,168, 31,126,226,128,
+ 46, 55,143,175, 10,137, 28, 48, 29, 13,177, 96,133,249, 97, 64,104,144,247,150, 85,139,102, 59, 59,187,251, 8,192,234, 64, 49,
+ 42,194,149,254, 14,161,230, 1,236,155, 12, 4,235,208, 25,235,126, 92, 94,201,113,100, 55, 26,145,162,130, 7,143,127, 51,244,
+122,253,175, 75,150, 44,113, 30, 52,232,225,108,247,202,202, 74, 92,185,114, 5, 27, 55,110,132,141,141, 77, 77,177,132,168,168,
+ 40, 16, 66,156,231,205,155,247, 43,128, 23,159,198,217,169, 83,167,193, 43, 87,174,204, 6,240, 0, 15,115, 28,137,241,112,129,
+121,114,230,204, 25, 26, 0, 58,116,232,192, 94,187,118,141, 3, 64, 70,143, 30, 45, 58,116,232, 80, 11,141, 70,115,161,177, 2,
+ 75, 34,145, 64,161, 80, 60,179,200, 18,137, 68,143,248,196, 98, 49, 20, 10, 69,131, 68, 22,195, 48,194,163, 71,143,226,214,173,
+ 91,248, 50, 34, 2, 31,120,121,193,197,197, 5, 23, 46, 92, 0, 33, 4, 54, 54, 54, 40, 45, 45,197,238,221,187,209,179,103, 79,
+ 48, 12, 35,182,132,247,224,193,131,184,121,243, 38, 22, 70, 70, 98,170,141, 13, 28, 29, 29, 17, 29, 29, 13, 0,144, 74,165, 80,
+ 40, 20, 56,115,230, 12,122,244,232,193,119,234, 63, 91, 96,117, 7,132,165, 20, 60,205, 38, 29, 8, 67, 0, 10,222, 45, 91, 66,
+156,152,216,240,183, 4, 26,152,179,102,243,145,129,171,102,191, 76,189, 59, 34,194,123,193, 15,231, 39, 3,192,132, 87,131,228,
+214, 82, 33,214,236, 78, 32, 52, 48,231,121, 84,176,101, 75,136, 41, 3, 38,247,237, 28, 12,101,177, 17,105,217, 21,231, 18, 51,
+ 44,115,233,156,221, 54, 6, 63,255, 26,157,179,122,203,227, 51, 6,183, 28,188,153,189, 98,155, 62,137,128,192,209, 74, 20, 50,
+254,229, 78,245,206, 34,236, 16, 46,125,103,230,244,233, 47, 14,121, 99,134,149, 57,247, 0, 12,153, 71, 1, 86, 11,173,134,130,
+138, 9, 68, 94,118, 46,190, 92,181, 43,199, 96,166, 95,191,145,160,111,144,176,124,240, 0,149, 66,127,213,176, 37,223,204, 61,
+253,245,151,243,108,165,138,179, 42,145, 16, 26,218,165,155,232,171,185,107,133,234, 10,227, 43,105,217, 80,215,199, 99,160,177,
+228,155, 21,223, 14,124,123,204,176,164, 32,159, 30, 46,108,126,154,139,182,162,162,112,231,241,155,158, 85,111, 19, 20, 0,164,
+102,148,160,168, 84,195,176,140,249,130,157, 9, 11, 18, 20,150,207,254,243,119,135,219,160, 94, 97,111,184, 57, 74,160,211,148,
+193,221, 73,140,126, 93,154,191, 97,214, 39,207, 76, 47,108, 88,142,145,199,244, 85,149,139, 48,118, 99,175, 16,112,166, 16,194,
+153, 97,204,218,222,152,215,167,233,211, 71, 53,117,112,182, 49,210, 20,171, 1, 68, 78,128,196,141,162,173,252, 32,176,242, 69,
+102,202, 13,102,250,123,163, 74, 50, 51,243, 55,185, 18, 44,227, 31, 33, 60,120, 60,142,172,172,172, 55, 63,251,236,179,152,142,
+ 29, 59,122,184,186,186, 34, 60, 60, 28,135, 15, 31,198, 39,159,124,242,104,159,182,109,219, 2, 0, 74, 74, 74,240,205, 55,223,
+228, 43,149,202, 55,235,124, 49,143,143, 79,218,190,125,123,151,214,173, 91, 27,197, 98,113, 89,181,200,202,202,202, 18,106, 52,
+ 26,202,104, 52, 18, 27, 27, 27, 78, 42,149,154, 71,142, 28,105,186,118,237, 90, 11,141, 70,147,245, 44, 22,172,200,200,200,123,
+229,229,229, 21, 20, 69, 61,115, 10,135,106,113, 21, 18, 18,226,102, 52, 26, 89, 0,165,141, 73,225,192, 48, 12, 34, 35, 35,113,
+230,226, 13, 28,191,120, 15,149, 69,105, 24,253, 74, 63,132,132,132,224,228,201,147,141,110,179,200,200, 72,156, 57, 19,131,232,
+ 27,247, 81,144,149,128, 49,175, 13, 69,112,112, 48,206,156, 57,195,119,232,231, 32,176,234, 52,201,133,248,162, 13,109, 47,249,
+121,206,203,205, 67,133,225,243, 65, 9,173,112, 96,203,225,206,179,191,254, 41, 73, 80,145, 61, 58,206,130,217, 94,143,221, 44,
+ 25,136, 39,184,191,235, 78, 66,200, 27, 47,119,243,193,134, 95,172,191, 0,128, 87,251,250,227, 90, 66, 17,174,198, 21,238, 74,
+104,100,206,162,154, 8,119,135, 53,107,192,174,111,102, 12,233,209,180,137, 39, 54,238,141, 1, 69,240,171, 69, 3, 45, 33,164,
+ 99,107, 95,172,222,242,228,140, 65, 47,223, 21,219,244, 73,167,174,168, 7, 0, 64,223, 23,172,143,183,111,233,236, 75, 72,221,
+211, 8,101, 34,250,221, 1, 47,191,105,197, 20,156, 4, 87,250, 11, 68, 18, 49,116, 26, 22,121,133, 6,232,172,173,112,238,210,
+ 5, 93,165,150,153,126, 55,133,105,148,213, 46, 49, 29,105, 98,225,173,108,141, 78,231,101,235,220, 92, 67, 83, 32,149, 70, 17,
+185,153,160,208, 36,100,227,190, 37, 28,105,105, 48,190, 32,103,186,174,219,246,203, 92,145, 72,242,170, 64, 0,202,221,209,198,
+237,167, 53, 11, 97,103,103, 11,194,168, 65, 12,197, 24, 54,225,235,162,184, 20,179, 63, 0,180,104, 1,219,174,173, 69,219,132,
+ 52,149,123,254,182,233,243,250,206, 65, 9, 48,105,244,203,109, 68,156, 89,131,105,243,246, 96,221, 87, 47, 99,204,224,150,162,
+163,231,146, 39, 1, 88,208,120, 51,229, 67, 23,225,139,239, 94, 76,162,128, 24, 2,116,185,113,228,171, 16, 52,192,243, 24, 17,
+ 1, 17, 91, 73,181,108, 41, 55,138,216,220,221,160,100,114, 34,112,237, 1,216,180,160,136,109, 56,190, 95, 51,183,114,195,198,
+141,167, 56, 10, 95,222,207,172, 55,229, 5, 15, 30,255, 85,164, 41,149,202,254, 81, 81, 81,103, 79,158, 60,233, 28, 30,254,112,
+ 69,149,155, 55,111, 2,192, 35, 87, 84, 65, 65, 1, 94,127,253,245,226,188,188,188,254,168, 39,166, 87,173, 86,167, 31, 56,112,
+192, 67,167,211,181,255,252,243,207, 11,154, 53,107,166, 54,155,205, 68,173, 86,131, 97, 24,226,230,230, 38,106,215,174, 29, 21,
+ 22, 22,166, 59,123,246,172, 75, 78, 78,142, 26, 64,102, 99, 10,255,246,219,111, 99,255,254,253, 0,128,231,145, 23, 75, 44, 22,
+ 35, 42, 42, 74,126,229,202, 21, 69, 21,103,163,243, 98, 17, 66,112,247,238, 93, 92, 74, 97, 33,177,113, 66,102,146, 10,103,126,
+ 59,132,209,239, 78, 4,195, 52, 62, 90,225,206,157, 59,216,125,230, 14, 60,228,205, 81, 97,184,139,131, 7, 15, 98,242,228,201,
+207,196,217, 72,252,107,220,131, 79, 90,176,254, 80,161,128, 0, 72,164, 70,204,235,219, 65, 62, 99,100,239,230, 2, 70,171, 4,
+199,113, 16, 0,112,181,163,177,121,195, 58,255, 95, 14, 28,139,253,238,219, 31,190,133,145,155, 19, 87, 8,109, 3,204, 88,243,
+ 86,110,189,252,234,246,133,221,133,147, 71,132, 56, 3,128, 88, 68, 99,205,174,120, 6, 52,230, 61, 75,165, 94,144, 67, 86, 41,
+198,187,238,238, 14, 95,204,126,111,160,115,143,142, 65,184, 16, 27,135,111,119,196, 94,148, 56,225,103, 75,111, 59,194, 49,143,
+ 5,180, 63,220, 86,139,241,139,212,223, 9, 89,142,120, 74,172, 93,161,207, 60, 6,161, 68, 10,134, 49,161,168, 64,139,140,124,
+ 14, 50,111, 17,174,221,205,210, 13,125, 99,216,209,103,233,152, 54,214, 50,239,121, 95, 45,111,162,211,169, 25, 85,121, 49, 35,
+ 20,199, 10,173,173,164,249, 15, 87, 14,176, 12,191, 43,160,239,214, 70,212, 14,132, 19, 72, 5, 68, 59,123,250, 56, 27, 69,242,
+ 73, 4,186, 41, 65,129,192,202,123, 32,236,108, 4,226, 46,173, 69,217, 0, 96, 99,109, 45,249,102,193, 39, 14, 31,206,252,242,
+146, 37,214,196, 32,119,207, 15,195, 3,157,113,225,106, 34, 46, 94,207,138,191,248,123,114, 88,207, 14,222, 8,242,119,252, 64,
+226, 88,190,164, 49, 22,209,135,109,240,208, 69, 88, 61,139, 48,204, 15, 97,237, 7,125,254,180,217,131,181,194,239, 22,184,100,
+127, 2,138, 18,128,128, 2,244, 10, 48, 57,219, 33,240,159, 74,126, 61,244,149,110,227,134,141, 11, 19, 51,121,171, 21, 15, 30,
+245,161,162,162,226,110, 82, 82, 82,191, 54,109,218,108,157, 54,109,154,221, 27,111,188,225,253,246,219,111,211, 0, 80, 80, 80,
+192,173, 94,189, 90,249,221,119,223, 85, 20, 23, 23,143, 55,155,205,247, 44,185,195,243,242,242,174,108,222,188,185, 40, 38, 38,
+ 38,236,133, 23, 94,176,110,223,190, 61,231,238,238, 46,214,106,181,108, 78, 78,142, 46, 54, 54,150, 77, 73, 73,113, 40, 47, 47,
+ 79, 1,144,138, 70,184,239,189,189,189, 65,211,244, 2, 31, 31,159,185, 10,133,162,213,243,136,193, 10, 12, 12,244, 6,144, 34,
+151,203, 3, 27,234, 30,252,195,128, 45, 20,162,172,172, 12,234,220, 84,104, 75,138, 17, 44,208,162,173,179, 43,236,236,236,158,
+ 73, 12, 85, 84, 84, 64,104, 40, 64,218,221, 44,148,231,103, 34,180,105, 36,108,108,108, 96, 48, 24,254, 63,186, 15,245,111,185,
+ 15,158,234, 34, 12,109,130,201, 86,192,234,113, 35,253,197,254, 77,155,192, 88,116, 19,183, 83, 43,241,249,166, 14, 9, 2,177,
+157, 97,202,216,190,237,122,246,113, 67,247, 30, 29,168,102, 77, 29, 63, 88,178,100,237,251,161,146,226, 79, 18,114,176,198,146,
+ 19, 39,164, 33,157,227, 10, 55,158,191,174,152,212,196, 77, 7, 2,130,243, 55,242,112, 47,181,108, 99, 82, 6,210, 27, 82,137,
+208,230,232, 35,164,232, 61,132, 37, 50, 7, 59, 27,117,104, 72, 19,215, 62, 93, 90,211,253,123,182,135, 88, 8,196, 92,189,131,
+233, 95,253,250, 59, 39, 33, 3, 45,158,241, 69,184, 63, 8,167,135, 51, 6,153,199,102, 12, 18, 66, 8, 56, 6,132,212, 29,214,
+ 37,160,169,124, 77,193, 13, 79,137, 93, 40, 76, 37,231, 80, 80, 80,137,248, 52, 19, 42,225,131,178,220, 92, 16,194,102,207,155,
+247, 75,163,239, 16, 87, 87, 87,119,255, 22, 65,205,191,219,176, 15, 38, 67, 5,210, 18,182,160, 82,149,143,175, 22,255,214, 92,
+ 46,119,233,174, 80, 40, 46, 88,222,187,169,160,179,231,118,185,131, 0, 2,161, 20, 71,215,239, 69,177,208, 10,174, 14, 98,112,
+250, 66,188,251,206,104,135,168,129,163, 29, 0, 32, 59,245, 14,124,157, 45,211,213,166,114, 12,127,117,124,176, 35, 88, 45,126,
+ 62,120, 71, 79, 83,232,255,243,111,241,169, 61,219, 57,202, 94,237,219,212,105,193,186,242, 87, 0,236,106,148,190,226,216,199,
+102, 17, 54,102,246,224, 62,128, 13, 33, 72,221,117,166,200,118,100, 84,132,149, 88, 72, 81, 68,175, 0, 71,137,169, 53, 63,108,
+ 86, 75, 40,172,231,135, 78, 30, 60, 44,131, 78,167,187,169,211,233, 90,125,250,233,167,175,127,246,217,103,221,108,108,108,252,
+ 1, 64,163,209,164,155,205,230,139, 85,247, 58,219,144,219, 28, 64, 74,106,106,106,122,106,106,170,199,207, 63,255,236, 8, 64,
+ 86,245, 63, 61,128,114, 0, 5, 13,228,124, 12,213, 98,202,219,219,123,238,243,186, 14,213, 98, 74, 46,151, 7, 54,230,120,129,
+ 64,192,210,244,195,149,125,164, 82, 41, 46, 93,186,132, 1, 93,186,226,206,153, 44,132,120,248,160,231,232,113, 56,120,254, 60,
+ 4, 2, 65,245,254, 13, 26, 71,132, 66, 33, 98, 98, 98, 48, 98, 80, 15, 28, 60,120, 16, 1,145,109, 48,117,234, 84,156, 56,113,
+ 2, 66, 33,191,154,222,159, 34,176, 64,176,224,244,158,175,197,224,204,216,183,115, 41, 78, 95,215, 26,239, 43, 48, 39, 56, 23,
+171,247, 65,205, 21, 22,239,159,116, 52, 58,109,217, 91,227, 7, 89,247,234,222, 23,189,186,245, 20,134,181,233,254, 5,240,152,
+192, 10, 71, 29,185, 50, 88, 51, 22,174,223,159, 52,113,207,177,100, 10,140, 26,163, 94,110, 79, 88, 51, 22,214, 83,230, 63,112,
+ 58, 88,219,238,137,185, 20,235, 4,182, 18,249, 25,231,101,158, 30,254, 0, 49,227,193,131,100,124,191,249, 32, 23, 29,123,127,
+187, 81,128,105,105,137,208, 88,202,249, 80, 81, 49,112,176,149,252, 97,198,160,163,149, 40,164,239, 11,214,199, 9, 33,196,206,
+ 90, 20, 66,106,183, 96, 61,198,169, 55,115,235,183,111,219,176,124,194,132,183,109, 74, 12, 10, 36,231,196, 67, 47,144, 67, 96,
+221, 28,241, 55, 78,234,116,102,110,131, 5,237,245,212,235, 89, 92, 92, 92,120,243, 70, 41,246,108, 93, 12,179,217,128,194,188,
+135, 26, 53,175, 64, 5,123,123,121,172, 66,161,176,152,211,196,112, 21,195,135,189, 43,182,146,193,106,244,171, 3, 37,169, 74,
+ 3, 34,130,237, 30,118, 11, 83, 49,146,162, 47,161,167,251,195, 96,200,212, 36, 1,124, 95,240,182,168,156,118,118,226,105, 3,
+186,202,145,158,149,143, 75, 55, 21,219,210,149, 80,178, 36,111, 91,106,118,249,164, 33, 61,125,177,106,123,194, 84,192,188,171,
+ 33,117, 15,243, 67, 24, 7,116, 1, 49,131, 48,122, 16,160, 75,152, 31,194, 44,156, 57,248, 7, 78, 33,141, 55, 86,238,201,252,
+124, 95,116,209,144, 25,111,119,181,239,252,226, 0, 9, 56, 51, 81,107, 13,230,196, 12,168,158,165,141,158, 1, 60, 39,207,249,
+ 79,229,100, 1,108, 55,155,205,219,203,203,203,159, 39,167, 18,127,204,203,244, 76,117,175,233, 14, 84, 42,149, 2,111,111,111,
+214,130, 32,247,250, 56,175,214, 20, 90, 85,214,171,250,172, 88, 79,114, 42, 59,118,236,232, 60,120,240, 96, 48, 12,131,148,148,
+ 20,100,101,101, 97,240, 91,227,225,228,228,132,171, 9, 9, 72, 73, 73,193,220,185,115,193, 48, 12,174, 93,187,150, 91, 31,167,
+ 72, 36, 50,181,105,211, 70, 60,116,232, 80, 48, 12,131,180,180, 52,100,102,102, 98,234,212,169,112,112,112, 64, 66, 66, 2,210,
+210,210, 48,119,238, 92, 24, 12, 6,164,167,167,155,254,162,190,244, 31, 17, 88, 20, 88,112,102, 84, 92,159,135,159,142,192,100,
+ 98, 16,146,144,139,140,234,192,147,132, 92,172, 21,144,187,135,239,198, 39,165,223,188,218, 75, 2,213, 61, 52,244,205,225, 65,
+ 46,242,236,172,213,106, 48,106,123, 20, 29, 71,134, 66, 93,249, 32, 23,121,141,176, 94, 80, 96,255,143,189,243, 14,143,162,106,
+219,248, 61, 51, 91,179,233,125,119,211, 12, 33, 9, 9, 53, 33,180, 36, 72,135,208, 68, 4, 4, 68, 16, 84,148, 34, 42,168,116,
+ 1, 1, 1, 17, 68,170,128,136, 40, 34, 32, 85,164,133,222, 33, 36, 4, 8, 33,161,132,132,148, 77,239, 91,103,119,102,190, 63,
+146,205, 27, 48,101, 19,248,240,149,119,126,215,181,215,102,119, 38,247,158,153, 51, 51,231, 62,207,105, 26,160,228, 58,246, 31,
+ 58, 3,137,244, 6, 98,226,238, 50,151, 98,147,119,146, 28, 22, 38,166,226, 94,195, 53, 57,216,180, 93,133,119, 94,123, 80, 49,
+ 98,144, 51,130, 99, 77,176,143,216,129,177,175,133,123,183, 11,114,240, 6,107, 4,199, 25,225,216,227, 52, 48, 71, 90,167,222,
+181,219,250,205,157, 67,164, 67,202, 74,243, 59,244,234,214,213,218, 53,240, 77,148,220,187,131,132,184,104,237,245, 91,201,151,
+175,221,214,111,126,150,140,244,240,240,120,181, 71,143,102, 24,254,206, 76,208,250, 98, 60, 76,248, 9,101,165,217, 56,127,209,
+ 6,119, 31,151,118, 2, 96,113, 4,235,114,130,169, 5, 80,132,136,150,194,199,118, 98,131,124,244,208, 1,144, 8,116, 96,141,
+101, 32,232,124, 60, 40,164, 75,134,204,203, 96, 0, 64, 38, 37, 4,214,130, 18, 59,139, 34,141,126,206, 1, 50,145, 17,191, 28,
+ 72, 0, 75, 84, 44,179,196, 18,216,240,203,159, 15, 62, 92, 56, 57, 20,205,253, 28,219,220,184,159,107,110,131,183,180, 74, 59,
+233,250,193, 5, 65,186,132,185,224, 88, 35, 46, 44,119, 12,234,252,121,209, 36, 52,114, 89,156,219, 15,145, 9,224, 67, 48,154,
+141, 31, 47, 62, 58, 55,172,229,157,200,105, 31, 14,178, 3,193, 47,140,206,195,195,243,226,209,104, 52, 31, 76,159, 62,125, 35,
+ 69, 81,174, 0, 8,142,227,160,215,235, 5, 63,254,248,163,208,100, 50,145, 20, 69, 49, 82,169,212, 20, 27, 27,107,100, 89, 54,
+143,166,233, 15,234,211, 52, 24, 12, 15,214,174, 93,219,212,104, 52, 86,141, 56,212,235,245,248,245,215, 95,161,215,235, 33,145,
+ 72, 96, 99, 99,131,135, 15, 31,130, 32, 8,154, 97,152, 7,124, 78, 60, 79,131, 5, 44,136,120, 99,222, 60,112, 32, 64, 96,254,
+157,140,191, 79,198,116, 43, 19, 89,205, 61,233, 79, 91,132,116,153, 87,105,202, 22, 52, 52, 1, 58,134, 25,218,174,109,224,239,
+ 0,160,103,153,183, 27,115, 16,165, 58,237,155, 33,237, 59,237,100, 57, 78, 96, 98,184, 31, 73, 18,123,116, 64,226,195, 71,245,
+143,156,171,141, 44, 85,113,108,223, 72,123,206,188, 4, 78, 85,179, 96,229,116, 12, 28,199,113, 85,205,130,115,164,200, 47,208,
+215,219,155,250,252, 13, 93,239,246, 45, 37,239, 31, 59, 27, 55,158, 97, 57, 57, 69, 18,217, 58, 35,187,233, 89,205, 85,101,237,
+232,236,137, 19,153,199,111, 70,186,247,118,169,156,102, 53,191, 24,200, 47,193,241,204,204,242,179,141,209, 44,210, 26, 7,205,
+ 90,126,224,160, 88, 64, 9, 0, 14, 44, 91,113,188, 58,154, 41,172, 48, 97, 64, 43,127, 40, 63,255,209,244, 59, 69, 17,105,245,
+233, 93,189,165,250,110,248,231, 39, 62, 75,184, 95,244, 99,106,102, 69,205, 39, 53, 19,183,119, 29,123, 52,247, 65,122,217,103,
+183,239, 23,125,139, 6,246,155, 32,128,117,237, 94,155,247,183,239,158,245,124,222,125,140,120, 0,131,193,101,244, 26, 62, 97,
+205, 52,130, 0,191, 76, 4, 15,207,255, 16,230, 40, 22, 73,146, 95, 61, 47, 77,115, 20, 11,192,253, 6,164,227, 42,128, 86,207,
+243,216,226,226,226, 10, 0, 20,240,185,252,239,166, 37,175, 9,112, 28, 71, 62,203,171,161,233,244,247,247,231, 26, 96, 84,248,
+ 60,226, 53,121, 77, 94,147,127, 38, 63,227, 51,153,227, 56,226, 89, 94,124, 30,189,124,240,205, 30, 47, 0,130, 32,216, 23,249,
+123,247,239,223, 39,248,179,206,195,195,195,243,226,158,201,207,123,201, 30,158,127, 63, 36,127, 10,120,120,120,120,120,120,120,
+120,158,179,233, 70,237, 97,190,134,140, 14,104, 76,168,240, 54,175,201,107,242,154,188, 38,175,201,107,242,154,255,115,154,245,
+105,243,163, 19,255,159,140, 23,175,201,107,242,154,188, 38,175,201,107,242,154,255,123,154, 47, 21,124, 19, 33, 15, 15, 15, 15,
+ 15, 15, 15, 15,111,176,120,120,120,120,120,120,120,120,120,131,197,195,195,195,195,195,195,195,195, 27, 44, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30,222, 96,241,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,188,236,152,151, 86,233,194,159, 10,
+ 30, 30, 30, 30, 30, 30, 30,222,139, 60,191,131,170,254,206,195,195,195,195,195,195,195,195,123, 17,222, 53,242,240,240,240,240,
+240,240,240, 94,228,191,211, 53,242,240,240,240,240,240,240,240,240, 94,228, 25,225, 71, 17,242,240,240,240,240,240,240,240,240,
+240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, 60, 71,248,149,198,121, 77, 94,147,215,228, 53,121, 77,
+ 94,147,215,252,159,131,239,131,197,195,195,195,195,195,195,195,195, 27, 44, 30, 30, 30, 30, 30, 30, 30, 30,222, 96,241,240,240,
+240,240,240,240,240,240, 6,139,135,135,135,135,135,135,135,135,135, 55, 88, 60, 60, 60, 60, 60, 60, 60, 60,255, 53, 16,168,125,
+ 36,192,237, 6,232, 52,102, 52,193,109, 94,147,215,228, 53,121, 77, 94,147,215,228, 53,255,231, 52,235,211,190, 13,158,255, 23,
+227,197,107,242,154,188, 38,175,201,107,242,154,188,230,255,158,230, 75, 5,223, 68,200,195,195,195,195,195,195,195,243,156, 17,
+252,195,230,206,108,240, 88,252,103, 21,237,255, 54, 77, 30, 30,158,231, 64,231, 54,152, 46, 22, 9,199,233,104,227,178,139,241,
+248,169, 75, 40,156, 77, 44,150, 74, 69,130,206,122,131,189, 50,127,110, 0, 0, 32, 0, 73, 68, 65, 84,233,155, 11, 55,241, 99,
+ 3, 37,137,167, 62,243,247,250, 51,210,171, 87,175,241, 0,230,113, 28,199,177, 44, 59,251,212,169, 83,219,158,199,179, 94, 46,
+151,143, 0, 32, 3, 0,146, 36, 75,178,178,178,118, 91,242,143, 93,186,116, 17,148,151,151,167, 2,240,168,252,234, 94, 92, 92,
+ 92, 96,125,219,120, 26, 78, 76, 76, 12,231,227,227,131, 86,173, 90, 37,101,103,103,175, 1,176,129, 63, 43,255, 69, 6, 43,208,
+ 85,218,241, 21, 47,215,254, 71, 99, 31,207,174,239,134,243,240,240, 88,234,234,234, 58, 65,163,209,232, 0,112, 36, 73,114, 4,
+ 65,192,252, 2, 0,134, 97,242,146,146,146, 44, 13, 67, 62, 55,205,128,128,128,235, 36, 73,122,154,255, 7, 0,234,251,155,101,
+217,140,196,196,196,176,250, 18, 41,151,203,251,144, 36, 57,163,190,253, 88,150, 93,154,157,157,125,172,174,125, 90,182,108, 25,
+103,109,109,237, 78,146, 36, 81,219, 62, 28,247,159, 50,199,100, 50,113, 26,141, 38,231,206,157, 59,161, 13,205, 91,165, 82, 57,
+155,227,184, 80, 0, 63,171, 84,170,195, 0,152,103,185, 86,148, 74,229, 16,142,227,230, 84,158,195, 69, 89, 89, 89,123, 26,242,
+255,254,254,254,215, 69, 34,145, 39, 69, 81,196,211,121, 82,211,103,150,101, 57,131,193,144,145,156,156, 28,198,223,246, 47,158,
+ 78,109,208,177,169,175,226,203,201,111,117,195,103, 75,119, 78,142,104,105,202, 23,137, 69, 27,134, 68, 54,117,104,238,231,128,
+175, 54, 94,158, 2,176, 13, 49, 88,132,151,151, 87,136,187,187,187,175, 86,171, 53, 95,139, 28, 69, 81, 79,236, 68,211, 52,157,
+148,148,116,152,207, 1, 11, 11, 4,129,224,203, 63,255,252, 83,193,178, 44,250,245,235, 55, 31,192,243, 48, 88,132, 68, 34,177,
+122,244,232, 17,140, 70, 35,233,227,227, 99,211,192, 50,202, 37, 54, 54, 22, 52, 77, 27, 58,117,234,228, 83,125,155, 88, 44,118,
+185,116,233, 18, 0, 24,218,182,109,235,211,216, 4, 6, 7, 7, 91, 91, 91, 89, 77,165, 8,162, 39,195,113, 65, 0, 64, 17,196,
+ 93,134,227, 78,168,181,218,149,137,137,137,234,151, 61,239,163,163,163, 49,126,252,120,220,186,117,171,217,225,195,135,215,207,
+158, 61,123,146, 74,165,234, 6, 32,143,191, 51,254, 97,131,213, 84,110,221,204,213,209,225,208,178,197, 11,112,180,247, 59,117,
+ 25, 44, 82,161, 80, 44,235,220,185,243,184,237,219,183, 91,239,219,183,207,218,215,215, 23, 34,145, 8, 20, 69,129,162, 40,144,
+ 36, 9,138,162, 48,104,208, 32,194, 82,115, 85, 93,243,228,201,147,214,129,129,129, 85,133, 44,199,113, 85, 38,171, 95,191,126,
+245,106,146, 36,233, 25, 23, 23,231, 38,149, 74,171,254,159,101,217, 39, 94, 28,199, 85,189, 24,134, 65,231,206,157, 45, 75, 40,
+ 73,206, 72, 76, 76,124, 85,173, 86, 63,161, 97,254, 13,243,223,175,190,250, 42, 0, 28,171, 71, 75,121,241,252, 73, 55,130, 78,
+ 1, 76,133,224, 40, 39, 64,220, 4, 32, 37, 53,238, 95, 88, 88,136,110,221,186, 81,141,201, 95, 87, 87,215,209,103,206,156,241,
+127,244,232,209,235, 95,127,253,117,193,229,203,151,215, 3,216,162, 82,169,210, 27,163,199,113,220,162,148,148,148, 0,142,227,
+224,231,231,183, 16, 64,131, 12, 22, 69, 81,158,209,209,209,110, 98,177,184, 42,159,107,123,103, 24, 6, 52, 77, 35, 42, 42,202,
+196,223,242,255,208,131,134,192,194,225,175,245,130,214, 72,194,104, 52,185, 42, 92,109,127,157, 50,186,139, 16,156, 1,219, 14,
+198,193,104, 98,127,106,168,185,234,219,183,175,207,134, 13, 27, 4,137,137,137,130,224,224, 96, 48, 12, 83,245, 98, 89,182, 65,
+247, 37, 79,149,193, 34, 72,146, 68,102,102, 38,108,108,108,236,187,118,237,154,197, 48,204,172,243,231,207,111,251,127,248,185,
+ 39, 34, 91, 4, 65,168, 85, 42,213,142, 23,125,204,109,218,180,233, 44, 21, 10,119, 46,152,247,169, 91, 80,139,150,164,179,171,
+ 51, 30, 60,200,128, 88,192, 69, 60, 72,186,215, 97,225,146,239, 63,108,211,166,205,240,248,248,248,243, 47, 91,126,123, 15,222,
+188,158, 53,209, 19, 0, 96, 99, 12, 0,108, 66, 89, 89, 25,222,123,239, 61, 28, 56,112, 32,184, 99,199,142, 75, 25,134, 25,199,
+223, 25,255,160,193,242, 83, 74, 61,108, 68,210,227, 27,127, 88, 67, 24,203,114, 28,235,185,161, 22,117,238,220,249,237,237,219,
+183, 59, 18, 4,129,147, 31,189, 11, 7, 90, 7,229,151,223,192,209,197, 21,134, 25,227, 97,203,152,208,234, 84,124, 67,110,210,
+ 39, 52,147,146,146, 80, 88, 88, 8, 87, 87, 87,200,100, 50, 72, 36, 18,136, 68, 34,136,197, 98,203,158,222, 4, 1,169, 84,138,
+232,232,104, 8, 4,130,170, 23, 69, 81, 53,126,118,119,119,183,248, 92,177, 44,187, 52, 40, 40,168,117,114,114,178, 93, 81, 81,
+ 17, 58,117,234, 84, 74, 16,196,205,106,198,163,245,205,155, 55,237, 44, 46,105,232, 20,148, 63,254, 1, 92,209, 30,192,225, 13,
+ 48,118,195,161, 67,147, 39, 10, 25,179, 41,100,152,198, 7,157,242,242,242,232,115,231,206, 33, 36, 36, 4, 59,119,238,116, 46,
+ 42, 42,250,242,231,159,127,158,179,106,213,170,217, 42,149,106,105, 35, 36,157, 0, 32, 41, 41, 9, 0, 28, 27,147, 38,177, 88,
+140, 43, 87,174,128,227,184, 42, 83, 78,146, 36, 72,146,196,159,247, 93,160, 54,144,208,228,220,198,148,129, 62,240,245,245,253,
+ 91, 84,139,231,197, 16,217, 26,253,218,182,110,217,209,199,203, 27,103, 46, 93,131, 72, 44,116,152, 56,102, 0,108,109, 4, 88,
+190,229, 47,246,113, 70,225,228, 11, 55, 45,142,148, 16, 10,133,162,117,239,222,189,189, 54,108,216, 32, 2,128,219,183,111, 67,
+165, 82,193,205,205, 13, 82,169, 20, 66,161, 16, 20, 69, 65, 36, 18,241, 39,191, 1,132,134,134,182,104,209,162,133, 53,195, 48,
+208,104, 52,248,225,135, 31,236,165, 82,169,253,128, 1, 3, 44,142,100,213,210,108, 23,164,215,235,181, 10,133, 66, 6,128, 37,
+ 73,178,252,233,200, 22, 0, 40, 20, 10,235, 26, 36, 77, 0,242,219,182,109,235, 1, 64, 12,224, 94,245,109, 6,131,161,182,109,
+150, 30,115, 68,104,235,102,135, 23, 46,154,103,157,157,115, 15,246,118,217, 96,141,185, 88,191,126, 61,172,172,236, 48,127,254,
+ 44,193,254,176,182,242, 79, 62,157,121, 72, 32, 16, 68, 93,191,126,253,242,203,148,231,172,137,158,208, 38, 44,188,234,243,182,
+232,213,208,219,135, 34,115,254,124,172, 90,181, 10, 1, 1, 1,237,239,222,189,203,223, 28,255,148,193,106,225,101,231,192,177,
+220,241, 31, 55,172, 20,131, 86, 59, 38,197, 92,172,190,185,250, 80, 75, 2, 0,233,238,238, 62,113,199,142, 29,118,230,194, 46,
+144, 96,224, 0, 26,175, 52,111, 14,153,189, 3,114, 76, 52, 56, 35, 13,177, 72, 84, 91,129, 88,175, 38, 73,146, 16, 10,133, 79,
+188,196, 98, 49,170, 71, 59,234,208,172, 94,155, 3, 69, 81,136,142,142,134,209,104,196,208,161, 67,107, 52, 91,181, 80,163,102,
+118,118,246, 49,165, 82,121,147,227,184, 87, 89,150, 5, 65, 16, 55,179,178,178,186,152,183,203,229,242, 62,109,218,180,153,193,
+178,236,210,250, 52, 57,142, 3, 76, 5,224, 10,119,192,182, 83, 62, 74, 47,187,128,176,238, 9, 6, 62,184,125, 63, 27, 39,175,
+167, 34,191,176, 28,109, 3,221,208,187,147, 31, 88,150,181, 56,157,213, 81, 40, 20, 1,193,193,193, 65, 70,163, 17,231,206,157,
+ 3,195, 48,104,213,170, 21,198,142, 29, 75,174, 94,189,122, 44,128,165, 13,213, 4, 16, 31, 27, 27,219, 51, 59, 59, 27, 0,110,
+ 89,176,255,237,154,140,240, 47,191,252, 2,157, 78,247,183,157, 29,187,124,141,207,222,240,193,216,143,182,225,155,228,221, 88,
+183,110,221, 19,205,165, 13, 72,103, 67,225, 53,255,150, 81, 24, 59,108,240,235,160, 68,214, 72,122,144,129, 46, 29, 67,225,230,
+230,134,155,137, 15,240, 56,179, 48,135, 32,240, 78,159,112,241, 82,173,214, 48,231,124, 60,182,212,167,169, 80, 40,154,108,218,
+180, 73, 88,253, 59,145, 72, 84, 21, 5,175, 30, 13,127,186,201,144,207,163,154, 53, 67, 67, 67, 91,244,234,213,235,252,188,121,
+243,108, 31, 63,126,140,139, 23, 47,194,199,199, 7, 90,173,182,166,251,166, 46,205,154,154,237,216,236,236,236,223, 26,147,206,
+179,103,207,154, 0,120,214,180, 67, 93,219, 44, 57,246,150, 45, 91,202, 68, 2,193,174,175, 22,206,181,142,141, 61,140,240,136,
+ 40, 88,217,250,195, 68,103,160,160,176, 28, 69,247,179,176,100,201, 74,204,153, 51, 19, 95, 47, 94,104, 59, 98,212,216,157, 29,
+ 59,118, 12,184,114,229,138,238,101,201,119, 82, 32,218, 16,127,253,210, 4, 0, 40, 77,220,139,143, 71,134,163,172,236, 62, 62,
+252,112, 46, 50, 51, 51,113,239,222,189,216, 23,156,206,151,214, 96,113,248,123,167,209, 58,241,240,128,148, 49, 26, 15,173,255,
+110,169,189,173,141,204,245,250,241,253, 72, 75,203,174,243,127, 52, 26,141,225,192,129, 3, 56, 62,105, 28, 2, 8, 19, 28,191,
+ 92, 14, 55,165, 18, 37,227, 6,161,220, 72,163,233,145,107,144,216,216, 64,108,109, 99,113,196, 65,163,209, 24, 78,159, 62,141,
+132,132, 4, 8, 4, 2,216,216,216,192,218,218, 26, 18,137,164,202, 88,153, 31,192,150,106,114, 28, 7,129, 64,128,219,183,111,
+ 35, 45, 45, 13, 14, 14, 14,184,120,241, 34,122,246,236,249,132,185,162, 40,234,137, 62, 94,150, 98,110, 90,172,201,128,161,158,
+166,193, 39, 16,186, 0, 78,111,163,236,138, 18,112, 28, 5, 35,103, 15,150, 99,113,227,126, 1, 62, 24,213, 31, 0, 48,113,206,
+ 15,232,217,193,183,170, 9,178, 33, 40,149,202, 15, 90,181,106,181,114,194,132, 9,164,181,181, 53,244,122, 61,244,122, 61,146,
+146,146,224,236,236, 12,153, 76,214,168, 48, 1,199,113,143,148, 74, 37,164, 82, 41, 56,142,123,212, 24, 13,130, 32,176,107,215,
+174, 26,183,189,179,242, 14, 4, 21,221,179,176, 97,195, 6,152, 76, 38,112, 28,199,135,176,254, 9, 56,120,184,203, 61, 65,114,
+ 70,100,229,228, 99, 80,191,222, 16,136,108,144,154,145,143, 54,205,253, 20,111, 13,140, 80, 80,132, 9, 95, 44,219, 49, 17, 96,
+183, 88,112,191, 51,137,137,137,194,248,248,120, 80, 20, 5, 59, 59, 59,200,100, 50,136, 68, 34, 72, 36,146, 42, 99,197, 71,176,
+234,166,119,239,222,147, 89,150,157,197,178,108, 81,187,118,237,148, 11, 22, 44,176,207,200,200,192,237,219,183,177, 99,199,142,
+124,142,227, 76,149,157,221,231, 63,235,111, 89, 16,217, 2, 65, 16, 13,238,231, 20, 28, 28, 44, 50,209,197, 31,219, 91, 49,175,
+ 9, 72, 59, 31, 83,105,249,163, 82, 35,121, 32, 57, 35,107,117,101,244,171, 86, 36, 66,225,228, 85,203,103,185,187, 56,211,232,
+211,231, 53, 60,124, 84,132,153, 51,135,162,180, 84,135,237,191,172, 0, 32, 6,109,162, 16,218, 62, 10, 10,133, 23, 34,195, 35,
+ 21,231, 46,156,155, 8, 96,197,203,114, 13, 60,222,247,254, 68, 0, 11,189,189,189,207,254,176,100,137,127,143, 30, 61, 0, 0,
+ 39, 79,158,196, 79, 35, 71, 98, 62, 48,218, 22, 80,125, 12,204,124,161, 79,140, 6,122,145,255,118,131,101, 62,160,134, 28, 24,
+ 33, 53,217,238, 94, 48,107,178,175,119, 19, 63,249,213,191,118, 33, 37, 37, 19, 57, 57, 69,117,157, 52,150, 32, 8,182, 73,147,
+ 38,176, 51,234, 96,207, 25,224,166, 80,194,214,201, 25, 69,198,202,200,149,181, 53,196,214, 54,150, 62, 28,171, 52,155, 55,111,
+142,156,156, 28,136, 68, 34,216,216,216,192,214,214,182,202, 96,153,205,149,165, 15, 92,130, 32,192,178, 44, 4, 2, 1,110,222,
+188,137,200,200, 72,120,121,121, 97,231,206,157,232,211,167,207,223,162, 88,141,105,122, 50,247,185,170, 30,185, 34, 73,114,134,
+ 37,157,219,159, 64,220, 20, 38,219, 55, 65,202,122,128,230,236,160,231, 20,149, 77,130, 28,254,186,150,131,228,180,252, 39,154,
+ 11, 45, 55,207, 30, 74,169, 84,186,109,230,204,153,221,195,194,194, 64,211, 52, 0, 64, 38,147, 65,175,215, 67, 40, 20,130,166,
+105,104,181,218,204,127,226,194, 53,159,243,227,199,143,131, 32,136, 42,163,107,110, 42, 84,171,210, 49,118,202,118,136, 5,192,
+205,155, 55, 17, 20, 20,196,151,168,255, 16, 86, 82,169,179, 88,106, 15,214,164,131, 64, 40,132,183,215, 43, 96, 25, 61,138, 74,
+ 53,120,231,205,129,136,187,117, 7,135, 79, 95, 53, 25,141,236,106, 75, 53, 3, 3, 3,145,155,155, 11,138,162, 96,107,107, 11,
+107,107,107, 52,107,214, 12,233,233,233, 79, 68,177,120,106,135, 36,201,217,135, 15, 31,118,167, 40, 74,110, 50,153,144,158,158,
+142,155, 55,111, 98,205,154, 53, 57,106,181,186,107, 92, 92, 92,114, 35,100,107,107,182,171,169,179,122, 99, 34, 91,213, 43,127,
+254,118, 18,195,137,229,203, 38,121,182,106,211,142,144, 82, 54, 37,154, 7,185,145,215,174, 94,142,152,179,229,143,201,105,197,
+154, 30,185,185,185,181, 86,222, 40,146,236,217,172, 69, 75,146,101, 51, 64,137,130,240,221,202,207, 80, 88,164, 70,121,153, 22,
+128, 24, 6,163, 0,122, 61,129,110,221,123, 96,231,174, 3,104, 23,214,142,162, 72,178,247,203,100,176, 0,128,162,168,165,251,
+247,239,247,151, 74,165, 88,188,120, 49,108,109,109,113,101,225, 66,252, 36, 18,193, 10,192, 6,154,158,129, 23,103,176, 26,227,
+ 69,254, 21, 17,172, 6,225,233,233,185,162, 99, 68,135, 87,155, 52,111, 39,189,122,116, 47,238,223, 75, 67,126,126, 9, 56, 64,
+ 91,215,201, 35, 8,130, 19, 10,133,112,251,226, 43,120,183,106, 5,205,248, 33, 40, 50,210,240,251,235, 10, 36, 54, 54,184,219,
+ 43, 20,156,193,128,206,137, 57,150, 26, 23,142, 32, 8, 14, 0, 92, 92, 92, 32, 18,137, 32,149, 74, 33,149, 74,171,250, 94, 85,
+127, 89,106,134, 88,150, 69,105,105, 41, 30, 61,122,132,241,227,199, 67, 38,147,129, 32, 8,228,228,228,192,199,199, 7, 20, 69,
+ 33, 51, 51, 19,167, 78,157, 66,147, 38, 77, 32, 22,139, 27,116, 49, 84,235,212,222, 90,169, 84,158,229, 56,174,245,245,235,215,
+237,194,194,194,208,160, 8, 22, 33,130, 30, 62, 96,224, 9,150,251, 79, 95, 43,163,233,201,202,155,217,100, 89,130,187,187,123,
+112, 80, 80,208,229, 53,107, 86,219,186,185,185,131,101, 25, 24,141, 70,148,148,148, 66,163,209,192,219,219, 27,214,214,214,220,
+242,229,203, 9,134, 97,254,177,161,188,102, 67,101,142, 32,154,251, 95,145, 36,137, 41,175,121,163,168,200, 22, 20, 85,241,217,
+210, 99,231,121,254, 88, 91,219, 58, 9, 68,214, 96, 73, 1,236,237, 29, 33, 16, 91,131, 53, 9,192,176,128,173,189, 11, 46,197,
+ 37,225,242,173,178, 15,114, 11, 96,201,208,125, 78, 32, 16,112, 20, 69,193,205,205,173,202, 76, 9,133, 66,243,181,139,210,210,
+ 82, 80, 20, 85,245, 29, 79,221, 21,201,212,212, 84,168,213,106, 92,185,114, 5,187,118,237,202,123,218, 92,245,234,213,107,130,
+ 76, 38,155,163,211,233, 22, 31, 59,118,108,125, 93,154,141,104,182,107, 76,228, 43, 48, 52, 52, 84, 40,228,138, 14, 31,217,187,
+210,211,142,137, 35,144,250, 62,144, 92,154,104,115,205, 45,188, 71,251, 1, 68,243,175, 62,241, 25, 52,119,229,145,220, 92, 4,
+163,150, 17,207, 28,208, 82,106, 37, 5, 56, 2, 23, 47, 28,173,104, 22, 44, 44, 67,185, 90, 7, 61, 77, 65,111, 32,160,163, 9,
+244,232, 25,133, 77, 91,126,135, 42,183, 8, 28,208,234,101,187, 14, 2, 2, 2,218,122,120,120,224,147, 79, 62,129,110,199, 14,
+148, 3, 24, 0, 96,127,101,165,218, 22,152,198,223, 45, 47,208, 96,121,120,120, 76,110,221,186,245,123,155,127,222,110,179,108,
+238, 23,165, 69,137,183, 40,131,150,182,214, 27,141,134, 7,170,130,213,245,152,161,138, 90,167,131, 35,100,118,246,208, 63, 21,
+185,226, 12, 6,176,180, 1, 34,203, 31,142, 28, 65, 16,224, 56, 14, 86, 86, 86, 16,139,197, 53, 70,174, 26, 18,193, 2,128,226,
+226, 98,236,218,181, 11,237,219,183,135, 76, 38, 3, 69, 81,104,221,186, 53, 18, 19, 19,225,231,231, 7, 0,216,191,127, 63,222,
+120,227, 13,220,191,127, 31,193,193,193, 54, 49, 49, 49, 13, 50, 88, 12,195,224,248,241,227,118, 28,199,189,202,113, 28,242,242,
+ 26, 55, 26,150, 97, 24,168,213,106, 28, 63,126, 28, 89, 89, 89,144,203,229, 40, 41,177,133,157,146,173, 50,139,230,151,133, 15,
+222, 47,222,125,247, 93, 91, 27, 27, 27, 48,140, 9, 66,161,176,202,184, 10,133, 34, 36, 37, 37, 97,228,200,145, 37,169,169,169,
+159, 55,114,212, 15, 33, 16, 16,238, 37, 37, 69, 40, 43, 45, 6, 69,193, 11, 0,133, 70, 76,253, 64,146,100,213,187,249, 69, 16,
+ 4, 68, 66, 10,114,119,215,170,142,239,149,209, 59,190,137,240, 5,250, 42, 0,195, 1,188, 93, 84,102, 16, 20,150,105, 1,147,
+ 1,143, 82, 31,161, 88, 77,131, 51, 25,241, 56, 67, 5,181,158, 69, 65, 97, 25,218,180,237,179,230,244,233,211,179,105,154,158,
+ 5,224,144, 37,215,124, 76, 76, 12,206,157, 59,135, 11, 23, 46,192,220, 81, 26, 0,236,236,236, 16, 29, 29,141,110,221,186,241,
+185, 80, 7, 52, 77, 47,238,221,187,247, 44,185, 92, 46, 93,177, 98,133,189,183,183, 55, 8,130, 40,125, 58,114, 21, 22, 22, 54,
+123,198,140, 25,138,161, 67,135, 78, 1,176,190,145, 63, 87, 87,103,245, 58,203,168,154,166, 98,200,205,205,158,176,113,219, 88,
+ 87,107,225,163, 44,164,126, 87,105,190, 40, 64, 83, 10,156,222, 14,209,171, 95,165,142,234, 62,209, 45,171,108,245,187,153,217,
+153,155,106,121,208,177, 73,201,105, 88,183,110, 21,230,204,153,136, 29,219, 87,129,229, 68, 40, 83, 27,225,174, 12,129,193,200,
+130, 32,133,232, 20,222, 25, 23, 46, 93, 5, 24, 26, 83,198, 95,126,233,230, 90,187,119,239,222,181,180,180,180,160,185,115,231,
+ 98,171,135, 7,108,109,109, 49,117,222,188,203, 12,195,132,243,119,201,243, 49, 88, 22,135,228, 60, 60, 60, 6, 43, 20,138,101,
+219,183,111,183,202,202,202,130, 50,160,133,221,159,127,236,210,187,217,136,180,170,194,162, 49,241, 89,234,122,135,219,147, 36,
+ 9,211,194,169, 40, 48, 25,224,251,231, 37, 72,108,108,144,220, 39, 12,156,193,128,240,216, 84, 72,108,108, 32,144, 90, 53,248,
+ 96,106,138, 88, 85,127,153, 11,227,250, 48, 24, 12, 14, 61,123,246, 68,143, 30, 61, 48,100,200,144,170,166,192,144,144, 16,252,
+254,251,239, 24, 60,120, 48,226,227,227,161, 84, 42,209,172, 89, 51, 52,107,214, 12,167, 79,159,110, 88, 28,180, 50,130,213,167,
+ 79,159, 82,130, 32,110,114, 28,215,250,218,181,107,118, 13,213, 48, 27,168,227,199,143,163,127,255,254,240,243,243, 67, 92, 92,
+ 28,162,191, 90, 14,129,141, 11, 64,186,129, 99,185,170,200,150, 37,125,176, 68, 34, 81,100,147, 38, 77,144,157,157, 3,137, 68,
+ 2, 71, 71, 7, 88, 89, 89, 65, 34,145, 98,201,146, 37,236,166, 77,155,214, 18, 4,241,149, 74,165, 42,108,132, 57,111,234,226,
+226,242,203,152,209,163, 58, 56, 59,187,192,221, 93,129, 25,211,103, 70,237,248,125,103,194,227,199,143, 71,100,101,101,221,178,
+ 84,139, 32, 8, 24, 12, 6, 80, 20,133,253,201,174, 80, 27, 8,148,102,196,226,227,215,124,170,204,150,185,169,215, 60,253, 5,
+207,139,129,162,168,173, 83,167, 78,237, 58,108,216, 48, 66, 68, 26, 13,209,199,182, 9, 24,198, 68,124, 54,235, 71,230,204,249,
+179, 36,195,152,136, 33, 35,167,177,135, 79,221, 34, 63,152,178,156, 9,233,216, 31,183,111,223,150, 15, 24, 48, 96,145,209,104,
+180,200, 96,153,243,184,150,223,231,155, 8,235,225,228,201,147,107, 1,172,237,213,171, 87,182, 76, 38, 67,121,121,249,223,250,
+ 41, 6, 7, 7, 91,167,164,164,136,196, 98, 49,218,182,109,235,202,178,108, 50, 65, 16, 43,142, 31, 63,190,185, 33,191, 85, 75,
+100,171,209,211, 52,216, 58, 49, 3, 91,181,107,102,155,100, 61,215,214, 74,168,187,241, 74,178,212,142, 0, 80,162,149, 63,188,
+152, 49,162,156,204,165,218,180,234,222, 28,182, 66,217,107, 0,106, 52, 88, 4,112, 83, 93, 86,214, 91,163, 53,225,236,153,120,
+ 12, 29,234, 13, 29, 77, 66,171, 35, 65, 27, 57,144,148, 8, 4, 37,194,152,113,239,193, 96, 98, 81,172, 82,129, 0,226, 95,182,
+235,128, 97,152, 25,131, 6, 13,106,183,120,241,226,224,169, 83,167, 2, 0,148, 74,101,167,217,179,103,223,249, 7,230,193,122,
+105,154, 7,159,142, 96,213,121, 96, 93,186,116,217,108, 52, 26, 95, 47, 44, 44,116,124,239,189,247,232,252,252,124,236,219,183,
+ 15, 63,253,244,147, 70,109,164,174, 23, 23,152, 70,167,168,212, 25,150, 20,138, 36, 73, 66,100, 52,130, 51,253, 39,114,197,234,
+245, 85,145, 44,161,149,172, 97, 57, 82, 25,193,170,201, 84,153, 35, 89, 13,121,216, 74, 36,146,226, 11, 23, 46,184,101,100,100,
+ 60,209,161,221,215,215, 23, 0,112,237,218, 53, 92,185,114, 5, 35, 70,140,128, 64, 32,128, 72, 36,194,205,155, 55,203, 26,146,
+102,179,225, 49,143, 34,148,203,229,125, 58,116,232, 80,219,232,193,122,181, 30, 63,126, 12, 63, 63, 63,232,245,122, 56, 56, 56,
+160, 64,245, 8,143, 31,165, 64,163, 79, 70, 19,185, 20,185,185,185,144, 72, 36,150,222,112,140,185,224,210,235,245, 80,169,178,
+161, 84, 42,241,235,175,219,177,121,243,230, 17, 42,149,106,119, 99,174, 53,133, 66, 49,173, 95,191,126,139, 94,127,253,117,129,
+ 70, 93, 14,142,173, 48, 60, 34,177, 8,223,127,255,125,179, 83,167, 78,221, 88,179,102,205,215, 82,169,116,209,195,135, 15, 13,
+245,229, 57, 0,108,221,186, 21, 0, 32,235, 56, 15, 51,134,189,130,183, 39,110,195,138, 21,123,159, 56, 86,138,162,176, 96,193,
+ 2,190, 68,125,129,116,236,216, 49,100,214,172, 89, 66,115,159, 56,165,247, 98, 19, 77,211, 44, 0, 4,181,126,245, 63,145,202,
+ 62,192,253,251,247,177, 98,197, 10,168,213,106, 8, 4, 2,145,209,104,180,232, 55,122,246,236,137, 62,125,250, 84, 53, 19,186,
+184,184,128,166,105,152, 76, 38,222, 92, 53, 48,146,213,191,127,255, 89, 44,203,114, 44,203,206, 53,127, 31, 26, 26,106,229,230,
+230,118,113,213,170, 85,206, 38,147, 9,211,166, 77,115,200,207,207,119,152, 52,105,210, 76, 0,155,107, 41, 39, 26, 50,187,186,
+ 69,211, 52,212,212,167,139, 32,136, 38,214,214,246,200, 67, 54,138, 93,140, 33,197,206,166,194,227,170, 15,110,122,165,183, 9,
+178, 98,140,126,100,169, 1,246, 86,118, 0,203, 5,212,250,156, 99,217,227,137, 9,119,122,120,122,248, 81, 7,254, 60,131,254,
+ 3, 7, 67,103, 32,160,163, 73, 16,148, 16, 4, 37, 66,187, 14,225,240,245, 11, 4,203, 2,119,226, 99,105, 35,203, 30,121,153,
+242,190,250, 60, 88,211,190, 63,137,217, 11,191,195,168, 33,125, 48,118,236,216,127,114, 30,172,151,182, 15, 86,109,230,234, 29,
+ 71, 71,199,145,227,198,141,179,186,118,237, 26, 22, 46, 92, 40,136,142,142,166, 99, 98, 98, 76, 12,195, 76,203,202,202,218,216,
+144, 31, 37, 73, 18, 77,182,255, 5,165, 92,142,123, 81,237,158,136, 92,157,109,237, 9, 86,175, 71,175,148,146, 6, 31,140,185,
+ 41,203,108,172,204,230,170,142,169, 20,234,170,129,215, 56,239,213,135, 31,126,136,205,155, 55, 35, 60, 60, 28,254,254,254, 16,
+ 8, 4, 85,205, 82,141,137, 96,153,105,240,232,193,167,106,243,222,222,222,184,117,235, 22,236,237,237,241,203, 47,191,192,203,
+211, 3,163,123,251,194, 96, 48,192,104, 52, 66,173, 86,155, 35, 88,245, 38,148,101,217,132,125,251,246,249, 13, 27, 54,140, 19,
+ 8, 4,132, 94,175, 7, 0,172, 94,189, 58,183,161, 51,174, 87,214,134,134, 72, 36,146, 45, 35, 70,140,176,109,214,172, 25,114,
+114,114,112,245,234,101,204,156, 57,227,170, 80, 40,208, 69,245,237,215, 53, 56,184, 5, 38, 78,156, 72,134,132,132,204,153, 57,
+115,230, 52, 79, 79,207,177, 25, 25, 25,187,234, 51, 89,191,255,254, 59, 0,224,221,239,239,194, 96,168, 40,152, 55,108,216, 0,
+185, 92,254,196,190, 15, 30, 60,224, 71, 17,190, 64, 76, 38, 19, 71,146, 36,145,158,158, 78,203,100, 50,194,201,201, 73, 32,145,
+ 72,160,215,235,171,140,214,253,251,247,113,232,208, 33,100,100,100,192,201,201,137,180,183,183,135,201,100, 42,178,244,154,175,
+ 62, 90,208,108,168,120,115,213,112,206,158, 61,187, 22,192, 90,243,231, 30, 61,122,140, 39, 8, 98,186,209,104,180,219,188,121,
+179,131,157,157, 29,113,232,208, 33,195, 15, 63,252, 80, 78, 81, 84, 17,128,229,117,149, 41,207,107,118,245, 58, 34, 95, 96, 76,
+184, 87, 84,158,226, 35,180, 81,176,241, 58,226,210, 39,233, 51,130,138,200, 0,119,162, 69, 11,211,208,220,132,139,163,141, 15,
+195,243,114,114, 9,134,227,106,157,196,169,168,164,100,253,150,159,119,126,188,111,207, 54,111,169,157, 12,163,222,158,140,227,
+ 39,206, 67, 44,145,225,234,245, 27, 48,208, 12, 82, 31,103, 98,196, 91,163,160,112,115, 6,165,201, 82,233, 13,134,141, 47, 83,
+222, 63, 49, 15, 86, 88, 56, 46,238, 93,142,223,147,189,145,185,112,225, 63, 61, 15,214, 75, 23,193,170,145,246,237,219,219, 22,
+ 23, 23,127,255,233,167,159, 90,169,213,106,228,231,231,163,160,160, 0, 87,175, 94,141, 54, 26,141, 31,215, 53, 74, 3, 21,171,
+109,223,126,186, 80,164, 40, 10, 78,174,110,144,216,216,130, 51, 24,170, 34, 87, 34,153, 53, 88,189, 30, 44,109, 0,106,111,206,
+169, 81,147, 32,136,191, 69,173, 26, 96,174,158,208, 52, 71,196,106,154, 84,212,203,203, 11, 95,127,253,245,223,166,105,176, 36,
+157, 64,197,104, 65,142,227, 90,155, 35, 79, 28,199,181,150,203,229,125, 44, 28, 57, 88,163, 38,203,178,232,210,165, 11,162,163,
+163,113,235,214, 45,144, 36,137,190,125,251,130, 32, 8,216,219,219, 67, 32, 16, 84,153, 57,243,128,128,186, 52, 25,134,121,251,
+167,159,126,250,236,200,145, 35, 95,124,244,209, 71, 86,175,190,250,170,185,159, 87, 30, 42,214,120,108, 80, 58, 89,150,157,127,
+243,230, 77, 91,147,201,132,197,139, 23,227,250,245,235,234, 7, 15, 30,124,170, 82,169,182, 0,224,138,138,203, 70, 61,124,248,
+104,221,151, 95,126,105,219,189,123,119, 92,187,118, 77,234,229,229,245, 37,128, 93,245, 29,251,213,171, 87, 65, 81, 20, 76,133,
+105,152, 56, 99, 39,108,100, 66, 36, 37, 37,161,160,160,160,234, 90,171,163, 41,169, 70,205,103,132,215, 4, 16, 19, 19,243,199,
+218,181,107, 63, 28, 51,102,140,136,227, 56, 38, 45, 45,205, 8,128,144,203,229, 84, 76, 76, 12,123,240,224, 65,104,181, 90,120,
+122,122,146, 30, 30, 30, 68,116,116, 52,155,152,152,120,149,227,184, 89,150,166,179,186,185, 18, 10,133,208,106,181,150,154, 43,
+ 62,143,234,102,222,222,189,123, 21, 58,157, 14, 98,177, 24,187,119,239,166,183,109,219,118,167,180,180,180,115, 92, 92,156,182,
+ 49,154,141,152,166,161, 78,205,178, 34,242, 80,244,241, 59,173,141,221,126, 36, 62,202, 46,136,172,170,184, 18,132,203,110,247,
+150, 46,210,246,109, 50,109,206,125, 75,150,115,154,131,181,105, 62,124,248,208, 96, 27, 18,242,198,212,207,230,158, 94, 56,127,
+158,237,210,111,150,225,118,255,161, 40, 46,209, 64,111, 96, 64,155, 88,204,159,255, 21,220,156, 28,224, 40,162,203,139,181,196,
+ 27,137,137,137,244,203,148,239,207, 56, 15,214,255, 71, 58, 95, 42,234,117, 31, 26,141,102, 97, 96, 96,160, 56, 49, 49, 17, 15,
+ 30, 60, 64,114,114, 50, 24,134,185,159,153,153, 57,160,177, 63, 74,146, 36,236,237,237, 33, 22,139,209,233, 86, 38,196, 34, 17,
+196,214, 21,203, 83,245, 74, 41, 1, 56, 14,164, 88,210, 96,205,167,231,188,122,150, 81, 68, 12,195, 84,205,208, 94,125, 61,195,
+167, 71,171, 53, 52,114, 69,146,228,140,203,151, 47,219,165,165,165,129,227, 56,236,221,187,215,110,200,144, 33, 51, 26, 19,189,
+226, 56, 14, 5, 5, 5, 96, 89, 22, 66,161, 16,221,187,119, 71,104,104, 40,202,203,203,193, 48, 76, 85,243,165, 72, 36,106,208,
+ 40,194,220,220, 92, 13,128, 5, 70,163,113,227,156, 57,115, 22,180,108,217,242,189, 79, 62,249,132, 68, 35, 7, 69, 16, 4, 97,
+ 50,153, 76,216,189,123, 55,246,236,217, 83,198,113, 92,160, 74,165,202,174, 22,189,219,126,229,202,149,232,193,131, 7,223,127,
+248,240,161, 93, 73, 73, 9, 80,207, 28, 54,149,215, 38,252,253,253,193, 48, 12,150, 77,244, 68, 89, 89, 43, 48, 12, 3,147,201,
+ 4,153, 76,246,196, 18, 68,252, 44,238, 47,184,102,204,178, 51,103,207,158,125,244,235,175,191,158, 49,101,202,148, 14, 99,198,
+140, 17,138, 68, 34, 54, 51, 51,211,180, 99,199, 14, 34, 32, 32,128, 20, 10,133,196,241,227,199,217,107,215,174, 93, 49,153, 76,
+203, 0, 52,104, 41,146,234,230,138,239,115,245, 92,217, 53,108,216,176, 49, 67,135, 14,181, 10, 9, 9,145,252,244,211, 79,197,
+106,181,186, 54,115,245,183,224,101,109,211, 52, 60,167, 9, 72, 1, 0, 42,149,106,227, 87,243,206, 77, 28,229, 63, 50,224, 61,
+231, 87,112, 66,157,139, 34, 33, 69,218, 57,144, 8,241,161,160, 41,126,232,118,226,218,222,100,149, 74,181,181, 46,157, 27, 55,
+110,196,145, 36,217,229,237,119,222,221, 55,110,204, 56,229, 23,159,124, 44, 60, 20,125, 26,140, 81,143,243, 39, 79,194,197,134,
+100,104,117, 78, 86,137,145, 28, 20, 23, 23,247,210,245,191,170,156, 7,107, 34,128, 17,243,230,205,219, 49,113,226, 68,176, 44,
+139, 51,103,206, 96,221,244,233,152,207, 48,163,109, 1,205,199, 21,251,240, 60, 47,131,213,174, 93,187, 87,212,106,245, 47, 6,
+131, 33,132,101, 89,241,217,179,103,161,211,233,144,152,152,168,101, 89,246,143,103,248,205,180,190,125,251,146, 79,175, 23, 87,
+139,201,177,180,115, 93, 90,207,158, 61,159,155, 38,203,178, 25,213,215, 48,171, 77,183,250,103,147,201,148, 97, 73, 66, 89,150,
+ 93,218,169, 83,167,191,125,215,200, 66, 44,165, 71,143, 30,244,211,166,171,166,191,171, 29,127,134,165,250,249,249,249, 57, 0,
+ 62, 96, 89,118,213,216,177, 99,231, 1,184,223, 72,131,181, 40, 56, 56,120, 78,197,159,196,194,172,172,172,236, 26, 76, 93,158,
+ 82,169,124,207,203,203,171,106, 1,232,250,142,189, 87,175, 94,116,125,139, 60, 87,143, 92,177, 44,155,193,223,242, 47,148,243,
+ 26,141,230,252,146, 37, 75, 58,175, 91,183,110,230,135, 31,126,216,126,248,240,225,130, 46, 93,186,224,240,225,195,204,153, 51,
+103,174,106,181,218,165, 13, 53, 86, 4, 65,148, 63,125, 15,213, 81, 9,209,241,217,208, 48, 78,158, 60, 57, 53, 60, 60,124,222,
+174, 93,187, 82,125,124,124, 36, 4, 65,152, 44, 52, 87,207,125,154,134,186,140, 28, 85,174, 27,184,125,228,135,135, 66, 62,122,
+215,167, 79,120, 91,169,103, 83,133, 60, 41,173, 0,233, 55,163,181, 15,207,174,123,196,233, 10, 6,194,130,136,123,108,108,108,
+188,159,159, 95,224,198,159, 54,191, 43,162,168, 94, 44,199,133,126, 62,105, 52, 72,130,136,163, 25, 38,186,180,172,108, 75,125,
+125, 66,255,237, 72, 68,162,209,147, 38, 77,194,175,191,254,138,125,171, 86,161, 79, 70, 6,126, 23,137, 96, 37, 18, 97, 3, 77,
+ 79, 0,111,176, 26, 69,173, 78, 36, 48, 48,240,247,194,194,194,161,165,165,165, 38,147,201,196, 16, 4, 97, 34, 8, 66,203,178,
+236, 87, 44,203,254,128,138, 78,104,245,193,135,226,121, 77, 94,147,215, 52,211,217,206,206,238, 19,150,101, 81, 94, 94,190,202,
+ 66, 99,197,159,207,127, 72,179, 91,183,110, 43, 73,146,236,192, 48,204,207,103,206,156,217,244, 44,154, 13,236,252,222,144,116,
+ 10,228,114,249, 56,206,209,102, 0,140, 2,127,142,166,146, 40,186,240, 80,101,228,138,229,243,221, 50,205,164,164, 36,206,201,
+201, 9,133,133,133,216,211,172,217, 19,219,108,129, 13,181, 68,176, 94,104, 19, 33,199,113,237, 0,184,154,235,255, 0,146, 0,
+180, 5, 96, 5, 64, 15,160, 28,128, 75,181,127, 41,168,220,102,222,126,142, 32, 8, 35, 94, 34, 90,242,154,188, 38,175,201,107,
+242,154,188, 38,175,201,107, 62,163,193,234,143,138,192, 14, 55, 99,198,140,153, 28,199, 69,205,152, 49, 99,102,181,207, 85,219,
+ 43,118,231,250, 63,181,189, 29, 94, 50,248,139,143,215,228, 53,121, 77, 94,147,215,228, 53,121,205,231, 98,176,234,122,175,237,
+239,106,239, 47, 20,162,142,147,116,251,255,249, 68,223,230, 53,121, 77, 94,147,215,228, 53,121, 77, 94,243,127, 78,179, 62,237,
+219, 53, 25, 44,130, 32, 14,113, 28, 55,160,250,123,181,237, 3, 0,192,188,205,252,119,245,237, 4, 65,252,133,151, 8,222,221,
+243,154,188, 38,175,201,107,242,154,188, 38,175,249, 76,252, 27, 35, 88,181,142, 34,228,118,239,166, 50,131, 97, 39,182,146,137,
+ 0,192,160,213,208, 30,137, 40, 37,134, 13, 99,192,195,195,195,195,195,195,195,243,130, 33, 8,226,208,140, 25, 51,102,253, 27,
+210, 42,168,205, 92,229,135,201, 92, 4,250,162, 64,198, 68, 7, 1,128,128,228,238,230,135, 57, 38,115,187,119,231, 63,111,147,
+ 21, 21, 21, 53,139,227, 56,119,161, 80,248,151, 92, 46, 63,179,105,211, 38, 35,127, 25,189,120, 56,142,171,119,177,198,182,109,
+219, 58,234,245,250,229, 44,203,118,175, 92,231,239,140, 72, 36,250,236,198,141, 27,133, 4, 65,212, 58, 36,218,219,219,123,135,
+159,159, 95, 32, 87, 1, 0, 60, 49, 47,151,249, 59,243,246,199,143, 31,223,203,200,200,120,203,210,180,123,121,121,249, 74,165,
+210,119, 8,130, 8,174,212, 73,212,233,116, 63,167,167,167, 63,250, 95,203, 71,133, 66, 97,197,113,220,235, 66,161,112,140,147,
+147, 83,251,188,188,188,249, 89, 89, 89,223, 61,195, 51, 98,154,131,131,195, 8, 7, 7,135, 38,133,133,133, 15, 75, 75, 75,119,
+ 1, 88, 1,160,222,251,244,171, 73,202,142,175,246,235, 50,247,220,225,179, 11,191, 92,151,117,229,233,237,243,167, 41,156,187,
+247,136,152,123,228,175, 75, 95, 45, 89,151,213,208,181, 45,201,202, 23, 80, 49, 98,204,220,193,245,191, 53, 95, 66, 0, 76,103,
+ 24, 70, 72,146,228,119,217,217,217, 23,254,219,175,165,102,205,154,125, 33, 22,139, 39,144, 36,249, 48, 39, 39,103,156, 74,165,
+122, 94, 83,157,144, 62, 62, 62,182,105,105,105,101,176,108,242, 98, 30, 0, 29, 59,118,204,161,105,218,173,174,125, 68, 34, 81,
+238,149, 43, 87,220, 95,194,195,207, 55, 55,253, 1,200, 5, 64, 85,126, 54, 84,190,231, 84,251, 46,167,150,237,255,188,193,202,
+ 12,134,157, 64, 95, 20, 88,144,115,103,120,158,234,198,155, 0,224,170, 8,217,229,236,222,124,103,102,176,152,150, 55, 27,108,
+ 35,148, 9,214, 83,148, 48, 68,103,208,187, 8, 5,194,124,218,100,188, 65, 26,184,137,217, 73,251, 30, 91,242,195, 3, 6, 12,
+ 8, 4, 96, 31, 26, 26, 26,115,254,252,249,246,223,125,247,157, 98,207,158, 61,173, 99, 99, 99, 71, 14, 28, 56,240, 79,142,227,
+142, 29, 58,116, 72,219,160,163,233,210, 69,224, 86,236, 52,154, 18, 8, 6, 2,104,205,113, 0, 8,234, 38,107,164,255,202,117,
+ 44,248, 25, 21,115,180, 52,238,194, 14,117, 10, 36, 88,250,115, 33,197,117, 54, 50,196,121,142, 20, 45,191, 18, 87,152,108,185,
+ 1, 80,244, 20, 11,136, 31, 1,192, 96,226,222, 75, 79, 87,157,120,150,253,106,121,128,247, 2,176,157, 32, 8, 33,128, 13, 12,
+195,236,207,201,201,137,135, 5,147,118, 90, 66,243,230,205, 93, 9,130,184,185,114,229, 74,231, 14, 29, 58, 80, 44,203,226,212,
+169, 83,111,205,153, 51,167, 79,139, 22, 45, 90, 86, 94,244, 53,226,231,231, 23,120,242,228,201, 54, 71,143, 30, 69,120,120, 56,
+ 88,150, 5,203,178,112,112,112,192,193,131, 7,209,161, 67,135,170,239,220,221,221,209,165, 75, 23,100,100, 88,246, 44,111,210,
+164,201,235, 45, 90,182,153,242,233,231,211,221,221,156, 93,108, 77,140,137,206,204, 84, 41, 87,125,183,172,163, 80, 40, 92,159,
+146,146,178,191, 49, 21, 37, 79, 79,207,225, 66,161,112, 0,128,224,202,239, 18,141, 70,227,161,140,140,140,157,150, 22,228,173,
+ 91,183, 62, 71,146,228, 43, 13,249, 97,134, 97, 30,223,186,117, 43,178, 49,121,164, 84, 42,135, 41,149,202,159, 58,118,236, 40,
+ 11, 9, 9,129, 72, 36,194, 55,223,124, 51,205, 2,131, 37, 0, 48, 77, 38,147, 13,183,182,182,246, 43, 47, 47,127,160,213,106,
+247,136,197,226,158,223,127,255,189, 87, 68, 68,132,109, 78, 78, 14, 65, 81,148,251,159,127,254, 57,122,205,154, 53,125, 76, 38,
+ 83,143,250,174,173,162,135,236, 92,137, 48,168,115,209,131,211,115, 1,244,125,122,187, 73, 39, 29, 67, 9,189, 6, 80, 92, 92,
+122,165,105,179,184,128,246,244,244,252,222,221,221,125,172, 86,171,213, 17, 4,193, 85,190,204,181, 92, 0,128,193, 96, 40, 74,
+ 78, 78,110, 86,151,208, 43, 29, 29,175, 83, 36, 85,235,220, 77, 12,203,100,164, 94, 41, 10,123, 14, 21,166,190,165,130, 0, 0,
+ 32, 0, 73, 68, 65, 84,152, 79,226,227,227,135, 10, 4, 2,162, 77,155, 54,214, 0,250, 88,106, 46, 20, 10, 69, 32, 65, 16,179,
+ 57,142,139, 81,169, 84,235, 1, 48, 74,165,178, 27,199,113, 95, 84, 30,239, 55, 89, 89, 89,167, 43,175,129,245,254,254,254,175,
+221,191,127,127, 67, 86, 86,214,162,198,166,215,223,223,127,226,228,201,147,231, 77,152, 48,193,170,160,160,192,167,119,239,222,
+191,169, 84,170,206,207,114, 14, 66, 67, 67,133,217,217,217,211, 92, 93, 93, 63,106,215,174,157,226,206,157, 59,217,105,105,105,
+171,229,114,249,138,184,184,184,122, 13,123,171, 86,173,148, 2,129, 96, 44,128,209,149, 5,232,239, 0,126,190,113,227,198,195,
+255, 5,131, 69,211,180,219,137, 69,115, 65, 80, 20,164,157,123,130,101, 89,228, 47,159, 7, 83, 97, 62, 92, 22,173,134,201,100,
+ 66,207,158, 61,221, 94,210,200,213,181,127, 91,154,107, 52, 88, 98, 43,153,136, 49,209, 65,121,170, 27,111,182,143, 90,109, 15,
+ 0,215,142, 78,121,211,217,163,197,109,177, 64,150, 44,177,147,238,125, 99, 96,207,144,161, 3,186, 16,158, 10, 55,100,168,114,
+221,183,252,126, 44,234,208,177,211,123, 81, 49, 47, 69,189,148,150,150, 46,246,241,241,113, 61,121,242,100,170, 88, 44,182,146,
+ 74,165,196,176, 97,195,172, 70,142, 28,217,252,212,169, 83,126, 71,143, 30, 29,250,218,107,175, 29, 21,137, 68,127,253,241,199,
+ 31,245,174, 79,230,214,242,245,230,100,153,228,143, 65,175,247,125,165,127, 47, 55,177,143,220, 21, 44, 43, 69, 82, 10,237, 29,
+125, 62, 46,234,240,209,227,159, 51,193,175, 15,203, 75,220,127,203,210,147,211,162,133,157,131, 21,201, 77,181, 18,115, 35,186,
+134,251,251, 14,236, 27, 78, 52,105,218, 4,201,137,201,126,167,207,198,140,149, 80,119, 30,105, 13,196,239, 90,150, 88,153,144,
+ 80, 90, 92,151,150, 88, 64,108,189,153,112, 95,201, 48, 12,190, 89,246,117, 52,203,145, 85,179,171,155, 95,230, 89,200,191,253,
+246, 91,232,245,122,180, 11,105,177, 21,255,153, 55,198, 18,126,187,115,231,142,179, 70,163,193,209,163, 71,103,170, 84,170,153,
+199,142, 29, 83,165,167,167,127,174, 82,169,126,127, 14,181,251,181, 27, 54,108,112,110,223,190, 61, 69,211, 21,243,155, 70, 68,
+ 68, 80,179,102,205,114, 90,178,100,201, 42, 0, 35,234, 40, 92,184,163, 71,143,226,151, 95,126,201, 95,182,108, 89, 6, 0,184,
+184,184,120,188,245,214, 91,174,219,183,111,207, 91,185,114,101, 6,199,113,112,118,118,246, 28, 62,124,184, 43,199, 89,150, 84,
+ 79, 79,207, 38, 45, 91,135, 76,249,121,235,214, 14, 37,133,133,186, 31, 87,110,136,211, 11, 36, 26,159,224, 64,209,220,121,139,
+236,191,250,114,230, 7, 52, 77,223,206,200,200, 72,177,244, 32,229,114,185,183, 68, 34,217, 59,107,214,172,150,145,145,145, 66,
+ 55, 55, 55,228,228,228, 32, 41, 41,169,229,197,139, 23, 95,223,191,127,255, 52,189, 94,255, 70,118,118,118,189,149, 9,142,227,
+ 2, 14,124,243,181,155,196,217, 5,172,209, 8,199, 86, 33, 85,219,178, 78, 29, 3,107, 52,130, 53, 26,225,213,255,245,170, 72,
+ 94,183,110,221, 26, 53, 37,185,135,135,135, 50, 32, 32,224,215, 25, 51,102,136,244,122, 61,110,220,184,129,203,151, 47,179,185,
+185,185,245, 77,100, 43, 32, 8,226,248,188,121,243, 60, 35, 35, 35,109,243,243,243,193, 48,140,203,254,253,251, 39,134,134,134,
+218,121,122,122,138,183,109,219,102, 94, 33,192,201,207,207,207,105,228,200,145,134, 95,126,249,101, 26,128,101,181, 69,174,138,
+ 31,176,115, 85,148, 95, 84,179,176,119,144, 45, 56, 22,245,105,111, 28,113,240, 35,171, 34, 89, 81,126,126,182, 37,153, 86,211,
+109,236, 90, 58,149,100, 70, 79,143,242,243,219,124,244,225, 67, 75, 22, 77, 39, 61, 60, 60,190,239,215,175,223, 91, 27, 54,108,
+144, 37, 38, 38,202,130,131,131,193,178, 44, 76, 38, 19, 24,134, 49,175,187,137,234, 19, 6,215, 6, 69, 82,158, 23,247, 38,184,
+ 89, 89, 89, 85,221,135,230,119,181, 90,141, 62, 99, 58, 62,151,135, 45,203,178, 98,243,117,109, 50,153,164, 0,132, 0, 44,157,
+192,114,193,165, 75,151,134, 29, 57,114,100,212,162, 69,139, 2, 84, 42,213,100,150,101,231, 38, 38, 38,118, 1,128,224,224, 96,
+ 49,128,211, 10,133, 98,220,135, 31,126, 56, 97,210,164, 73, 24, 51,102,204,220,172,172,172,197,141,189,239,197, 98,241,151, 31,
+126,248,161,149,209,104,132,149,149, 21,104,154,110,250, 44,199, 31, 28, 28, 44, 42, 44, 44,220,179, 96,193,130, 1,131, 6, 13,
+ 50, 47,225, 37, 63,119,238,220,146,207, 62,251, 44, 60, 52, 52,116,112,109, 38, 43, 52, 52, 52, 4,192, 87,190,190,190,125,198,
+140, 25, 67, 69, 68, 68,160,188,188, 28,199,143, 31,159,189,119,239,222,217,161,161,161,151, 0,204,141,139,139, 59,243,178,155,
+ 44,202,198, 22, 73,111,116,131, 95, 98, 1, 0, 32,123,125,197,210,144,118, 95,126,203,135,248,254, 13, 6,171, 62, 52, 26, 77,
+232,204, 41,163, 65,146, 21,181, 68,255, 38,222, 88, 50,107, 60,113,224,208,177,208,122,194,155, 43, 25,134, 9,112,114,114,250,
+188,160,160, 64,186,106,213, 42,105,102,102,102,208,158, 61,123,184,248,248,120,136, 68, 34,216,219,219,163,123,247,238,146,168,
+168,168,166,151, 46, 93,242,222,187,119,239,160,126,253,250,253,124,248,240,225, 63,107,211,117,110, 57, 48,192,197,213,245,236,
+183,139,222,119,106,217,196, 15, 6,163, 17, 25,185,153,224, 32,134,220,205, 26,163, 94,111, 35,138, 8, 19,249,175, 88,119,242,
+ 12, 65,190,246,106,110,194,193,132,250,142, 49, 50, 84,118,173, 91,167, 87,218,190,214, 39,156,244, 15,110, 14,145, 68,246,159,
+ 90, 84,104, 40, 90,133,134, 18,227,199,151, 53,137,143,139,159,115,244,228,213, 89,246, 34, 83,236,133, 56, 77,251,218, 75, 90,
+ 72,204,107,167,189, 49,228, 77, 4, 6, 6, 62,241, 48, 55,255,157,154,154, 10,130, 32,144,159,159, 15,150,131,184, 17,121,131,
+ 43, 87,174,160, 77,155, 54,232,221,187, 55, 70,140, 24,161,216,191,127,255,111,107,215,174,237,146,153,153, 57,254, 89, 46, 22,
+134, 97, 34, 66, 67, 67, 41,154,166, 65, 81, 20, 10, 10, 10,144,146,146, 2, 63, 63, 63,138, 97,152,174,245, 24, 13,132,135,135,
+ 99,217,178,101, 25,231,206,157, 11, 5,128,206,157, 59,199,117,232,208,193,117,229,202,149, 25, 23, 46, 92,104, 11, 0,225,225,
+225,177, 97, 97, 97,174,150,166, 73, 38,147,189,251,201,167,159,185,150, 20, 22,105,141,101,101,180, 13,203,152,236,164, 66,162,
+ 52,175,160,248, 81,186,157,230,221, 9, 83, 4, 95,206,152,250, 46, 0,139,218,236,229,114,185,119, 80, 80,208,181,205,155, 55,
+187, 57, 59, 59,163,184,184, 24, 5, 5, 5,184,118,237, 26, 88,150, 69, 84, 84,148, 36,180,117,235,208, 21, 43, 87, 94, 6,208,
+201, 18,147, 37,113,118,193,158, 46, 21,183,198,176,135, 5, 85, 17,150,163, 35, 6, 86,237, 51, 50,173, 98,113,115,169, 84,218,
+232,101,125, 56,142,235, 20, 17, 17, 33, 2,128,105,211,166,149,170,213,234, 37, 4, 65,252,166, 82,169, 50,235,249,215,105,115,
+230,204,241,104,210,164,137,207,111,191,253,134,242,242,114, 0,112,107,210,164, 9, 2, 2, 2,152,179,103,207, 34, 48, 48, 16,
+182,182,182, 56,123,246, 44,174, 92,185,130,144,144, 16, 91,145, 72,244, 38, 77,211, 53, 26,172, 87,251,117,153, 43, 17, 6,117,
+110, 22,246, 14,108,236, 20,216,188, 99, 39,146,174,255,220, 89,111,188, 59,119, 38,206,190, 77,113,146,119,114, 31, 91,207,240,
+ 13,235,234,236,223, 98, 16, 94,105,123,195, 69,207,156, 75,153,211,171,201, 82,129, 84,183,109,254, 10, 85, 65,109,230, 74, 46,
+151, 47,239,219,183,239,176, 13, 27, 54, 56, 0,192,173, 91,183,144,157,157, 13, 87, 87, 87, 72,165, 82, 8,133, 66, 8, 4,130,
+ 6, 45,149,101,101,101, 5,149, 74, 5,115,197,129, 97, 24,148,149,149, 85, 45, 26, 62,127, 62,200,249,243, 45,139, 54,201,229,
+242,200,208,208,208,237,158,158,158, 94,213,191,215,235,245, 24, 63,126, 60,212,106, 53, 66, 66, 66, 34,220,221,221,245, 4, 65,
+128,101, 89,228,228,228,148,223,186,117,171, 87, 86, 86,214,213, 90,106,239,218,236,236,108, 76,152, 48, 1,143, 31, 63,158,244,
+235,175,191,166, 17, 4, 33, 21,139,197,230,237, 98,133, 66, 17, 24, 24, 24,248,253,251,239,191,143,212,212, 84, 36, 39, 39, 95,
+123,150, 74,149, 68, 34, 81, 51, 12,227,102, 50,153,160,213,106, 17, 21, 21, 37,101, 89, 54, 71, 40, 20,222, 45, 46, 46, 30,149,
+145,145,161,178,180,156, 81, 40, 20,114,181, 90,189, 97,202,148, 41,253,186,116,233,130,187,119,239,226,232,209,163,120,237,181,
+215,208,181,107, 87,204,158, 61,187,255,220,185,115,167, 1,168,173, 50,240,199,158, 61,123,124, 61, 61, 61,171,150, 68,178,179,
+179,195,187,239,190,139,209,163, 71,227,240,225,195,225, 95,127,253,245,158, 46, 93,186,184,157,125,134,150,138,127, 3,146,176,
+112,248, 37, 22,224, 97,176,115, 69,235, 64,165,209, 50,127,134, 71, 40,239,108,254,155, 13,150, 65,171,161, 5, 36,119,215, 85,
+ 17,178,235,218,209, 41, 85, 77,132, 48,113,119, 13,180,134,174, 8,155,115, 40,213,152, 96, 37, 33,145,170, 42,195,237,135,249,
+ 53, 73,221,126,170,240,255,116,245,234,213,248,230,155,111,250,106,181,218,242,148,148, 20, 85,121,121,185,122,212,168, 81,132,
+ 80, 40,196,197,139, 23,241,232,209, 35,180,106,213, 10, 14, 14, 14,136,140,140, 20,245,238,221,219,107,220,184,113,111, 3,248,
+179, 38, 77, 12, 29, 74,137,210,136,131,203, 23, 13,119, 34,168,100, 36, 63, 46, 70, 83,207,246,112,182,247, 66,102, 94, 57, 98,
+239, 28, 70,242,131,191,208,212,211, 27,227,223,106,234,240,221, 15,121,135, 16, 58,190, 41,226,158,232,231,245,183, 33,161, 82,
+ 17,211,110,254,234,120, 48,234, 7,224,140,143,193,209,217,127, 47,220, 29,188, 16,212,198, 29, 50,177, 43,121, 43,241,187,118,
+117, 29,187,222,196,125,177,120,225,130, 45,173, 67,218,162,164,164, 4,107,214,172,169, 50, 86, 28,199, 85,213,184, 59,118,236,
+ 8,163,209,136, 45, 91,182,192,200, 86,132,255,235, 74,231, 83,140,236,208,161,195, 78,142,227,196, 86, 86, 86,217,109,218,180,
+241,153, 60,121,178, 96,248,240,225,208,106,181,239,111,222,188,249, 88,118,118,246,190, 6,106, 86, 52,163,188,242, 74,100,215,
+174, 93,173, 40,138, 2, 77,211, 40, 41, 41, 65, 70, 70, 6, 82, 82, 82,224,226,226, 2,252,167, 47, 76,173,154, 79,175,133,200,
+113, 28,103, 62,254,234, 70,204,124, 94, 44, 73, 39, 65, 16, 65,142, 14,142,214, 63,174,216,112,221, 85, 66, 17, 46, 94, 74, 66,
+100,231, 32, 32,109,108, 37, 28, 69,105,125,188,148,182, 4, 65, 4,213,114, 88, 79,107, 18, 18,137,100,239,214,173, 91,221,132,
+ 66, 33, 24,134,129,171,171, 43, 82, 82, 82, 80, 92, 92,140,178,178, 50,164,220, 77,132,175,167, 39, 62, 30,255,158, 98,193,183,
+ 43,247, 2, 8,123,170, 16,251,251, 98,220, 70,227,211,105,174, 45, 4, 14, 11,211, 89, 91,132,228, 81, 86, 86, 22,100, 50, 25,
+130,131,131,109, 98, 98, 98,206,103,101,101,101,214,167, 41,149, 74,223,140,136,136,176,221,177, 99, 7,218,182,109, 11,123,123,
+123,156, 62,125, 26,183,110,221, 2, 77,211,100, 89, 89, 25,108,108,108,176,116,233, 82,120,123,123,163,164,164, 4,105,105,105,
+206, 66,161,208,197,108, 72,158,214, 60,119,248,236,194,162,135,167,231,102, 83,199,162, 54,239,216,137,247, 71, 14,135,220,244,
+240,188, 99, 83,114, 97,223,254,225, 95, 82, 66,175, 1,214,182, 45, 29, 3, 90, 14,130, 72,108,131,201, 95,124,133,228,219, 7,
+ 29, 53,101,183, 38, 49,198,116,175,249, 43,118,127, 92,195,177, 19, 0, 72,165, 82,249,222,198,141, 27,109,171, 28, 23, 73, 66,
+ 40, 20, 62, 97,172,204,139,177,215,114, 78,111,215, 80,121, 0, 77,211,160,105, 26, 44,203, 34, 47, 47, 15,101,101,101,112,116,
+116,172,216, 97, 30,128,121, 32, 64,212,106, 88,110, 87, 75,207,168,157, 59,119,122,201,100,178,191,237,148,158,158,142,146,146,
+ 18, 88, 91, 91,195,193,193, 1, 70,163, 17, 38,147, 9,122,189,222,166,107,215,174, 19, 1, 92,173, 73,147,162,168,169, 19, 38,
+ 76,136, 56,116,232,144,223,162, 69,139, 64,211,244,242,188,188, 60,188,255,254,251, 96, 89, 22,145,145,145, 29, 57,142, 75,154,
+ 50,101, 74, 69,184,107,193, 2, 99,121,121,249,135,141,189,150,220,220,220,154,183,110,221,218,241,196,137, 19,136,140,140,132,
+ 94,175,199,196,137, 19,237,222,123,239, 61,187, 75,151, 46,185,174, 90,181,106, 91, 70, 70, 70,207,186, 52, 67, 67, 67,133, 57,
+ 57, 57,211,187,118,237, 58,173,103,207,158,246,249,249,249,144, 72, 36,216,181,107, 23,126,252,241,199, 35, 52, 77,207,217,179,
+103,207,226, 77,155, 54, 69, 13, 26, 52, 8,155, 54,109,154,162, 82,169,190, 65, 69,179,233,211,154, 74, 47, 47, 47,220,188,121,
+ 19,142,142,142,112,113,113, 65, 73, 73, 9,174, 92,185,130,107,215,174, 33, 40, 40, 8, 4, 65, 56, 86,150,105,166,103,185,143,
+ 26,200, 11,215,172, 90, 99,181,218,181, 11, 0, 76,221,110,218,162, 89,241,149, 74,229, 32, 7, 7,135, 73, 28,199, 9,138,138,
+138, 54,202,100,178, 63,234, 88, 38,136, 95,232,217, 66,131,101,206,151,174, 0,206,122, 36,162, 52, 63,204, 49,217,217,189,249,
+ 78,103,143, 22, 21, 39,209,196,221,165, 36,142,201,238,215, 53,165, 0, 64, 27, 57, 92,186, 91,132,155,247,115,112,243, 94, 54,
+108,164,245,215,186,157,157,157, 17, 30, 30,142, 3, 7, 14, 32, 61, 61,221,102,233,210,165, 1, 52, 77,211, 3, 7, 14,204,122,
+229,149, 87,138, 34, 35, 35, 33, 20, 10,113,245,234, 85,148,150,150,130,162, 40,136,197, 98,176, 44, 91,107,164,205,237, 30,243,
+206,152,241,161,126, 46, 14, 36,254,188,120, 12, 29,131, 6, 67, 38, 17, 34,175, 72, 11,146, 32,240,224,209, 9, 48,140, 53,226,
+239, 62, 70,167,150,214,232,220,193,222,179,252,100,225,248,124, 96,157, 37, 39,136,206, 60, 3,241, 43,111, 0,210, 22,224, 12,
+ 15,192, 26, 50,193, 9,221,160,214, 72,145,159,154,134,187, 87,254, 0,103,210,212,171,147,145,161,250,105,203,214,109,145,103,
+ 70,191,243, 14,203,178, 88,182,108,217,153,251,247,239,119,171,190,143,159,159,223,233,217,179,103,119, 45, 42, 42,194,177, 99,
+199,126,174,111,161,210,167, 81,169, 84, 39, 0, 56, 85, 51,180,222,113,113,113, 59,126,253,245,215, 78,111,191,253, 54,118,239,
+222,253,121, 13, 6,171, 78,166, 76,153, 34, 60,112,224, 64, 31, 43, 43,171, 53,115,231,206,181, 49, 24, 12, 80,169, 84,200,206,
+206,174,138,182, 37, 36, 36, 48, 2,129,224, 82, 61,133,127,141,139, 77, 63,109,176,170,125,103,105,205,187,220, 96, 52,234,173,
+189,148,198,129,131,250,180,186,117,237, 70,178,149,147, 19,217,170, 93, 72,243,187,247, 83, 99,137,138, 38, 24,139,154, 97, 60,
+ 61, 61,135,207,155, 55,175,149,157,157, 29, 88,150,133,189,189, 61,242,242,242,170, 12,165,161,172, 20,116,105, 9,110,166,165,
+ 32,178,107,119,244,238,212, 49,248, 47,163,113,120, 70, 70,198,239,117,233, 58,181, 14,173,138, 92,237,246,115,174,250,126, 68,
+106,113,149, 1, 56,220,222, 31, 18, 27,107,180,252,100,102,163,111,230,236,236,236,184, 19, 39, 78, 28,142,138,138,234, 55,126,
+252,120, 50, 59, 59,251,168,201,100,138,200,205,205,189, 83,215,255,217,216,216, 52,205,207,207, 71, 89, 89, 25,236,237,237,177,
+106,213, 42,184,185,185, 65,163,209, 32, 38, 38,134,243,244,244, 36, 78,159, 62, 13, 15, 15, 15, 20, 20, 20,128,166,105,104, 52,
+154,108,131,193, 80,107, 31,201,202,102,192,190,159,246,194,145,164,235, 63,119,246, 64, 74,204,208,207, 59,223,139,191,150,156,
+126,234,228,197,133, 38,157, 52,189, 56, 35,122,122,147,118,241, 46,147, 62, 95,128,181,203,231, 33,233,234,217, 66,119,239,178,
+117, 12,161,255,185,158, 40,173, 46, 49, 49,209, 54, 62, 62, 30, 36, 73,194,206,206, 14,214,214,214, 85, 11,155,155,205,149, 64,
+ 96,121,128,222, 92,193, 49,155,171,188,188, 60, 60, 72, 75,198,158, 83,219, 96, 52, 25, 93,182,118,176,203,246, 19,137,110,150,
+180,200,159, 85,144,128,184,122, 10,192,141, 35, 70,140, 24,238,225,225, 97, 91,253,251, 54,109,218,224,173,183,222,194,209,163,
+ 71,113,253,250,245, 39, 42, 88,121,121,121, 42,134, 97,106, 61,238,244,244,244, 98,150,101,163,222,123,239,189,216,125,251,246,
+217,125,251,237,183, 85, 93, 10,204,205,162,230,247, 29, 59,118, 32, 54, 54,118,110, 78, 78,206,221,198, 92, 71,238,238,238, 65,
+ 3, 6, 12, 56,183,110,221, 58,135,156,156, 28,228,231,231, 67,173, 86, 67, 40, 20,194,100, 50,193,223,223,159, 96, 24,198,183,
+190,230, 64,154,166, 15,158, 58,117,170, 79, 64, 64, 0, 0,192,104, 52,226,226,197,139, 24, 63,126,124,129, 76, 38,123, 51, 45,
+ 45, 77,173, 80, 40,102, 31, 58,116, 40,170, 77,155, 54,104,213,170,149, 60, 55, 55,215, 54, 45,173, 50,156, 91,195,179,130, 97,
+152,170,252,217,178,101, 75,213, 54,157,174, 98,201, 73,131,193, 64,132,133,133,249, 94,191,126,253,165, 29,220,146,246,235,102,
+164,206,250, 8, 62,231,147, 0, 0,177,205, 43,186, 92,249,156, 77,172,216, 97,244,232, 6,233, 41, 20, 10,103,142,227,222,111,
+222,188,249, 39, 81, 81, 81,174, 10,133, 2,206,206,206,184,117,235, 86,196,177, 99,199,214,232,245,250, 31, 24,134,249,193,146,
+104,253,115,224, 9, 47,242, 50, 69,176,136,202,131, 35,136, 97,195, 24,110,247,238,252,204, 96, 49, 45, 22,200,146, 1,192, 64,
+107,104,247,235,154, 82, 98,216, 48,198,181,197, 32,112,224,192,176,149,209, 6,142, 3, 99,225, 56, 16,221,221, 33, 96,139, 15,
+194,205,113, 16, 54,109,218,135,220,220, 92,209,170, 85,171, 94,217,183,111,159,231,168, 81,163, 30,251,251,251,151,116,239,222,
+ 29,219,182,109,131, 92, 46,135,193, 96, 0,203,178,181,186, 55, 91, 39,102,104,135, 86,254, 84,114,218, 45,132, 5, 12,129,175,
+ 34, 18, 15, 50, 75, 80, 84,166, 71, 65,137, 22,129,129,159, 35,167, 80,131, 82,181, 14,183,146,126,131,167,162, 9, 73, 9, 31,
+ 68,193, 66,131,165,127,176, 29,250,148,157, 16, 41,186, 65,220,100, 56,132, 46,157,144,158,116, 6, 55, 78,172, 68,198,189, 11,
+224, 88, 6,238, 94, 65,150, 54,225,204, 95,189,122,245,168, 37, 75,150, 8, 62,250,232,163,174, 75,151, 46,237,154,149,149,117,
+ 6, 0,148, 74,101,215,119,222,121,167,171,173,173, 45, 22, 47, 94,108,228, 56,110,254,179,102,110,118,118,246, 99,165, 82, 57,
+233,196,137, 19,241,227,198,141, 67, 80, 80, 80,104,114,114, 50, 9, 11, 58,214,250,251,251,143, 23,139,197, 99, 77, 38, 83,192,
+200,145, 35,201,247,223,127,223,198,205,205, 13,169,169,169,208,235,245, 32, 73, 18, 34,145, 8, 9, 9, 9,236,193,131, 7, 75,
+ 68, 34,209, 20, 11, 34, 44,112,113,113,241,136,140,140,140, 5, 0, 39, 39, 39, 79,150,101,225,236,236,236,217,169, 83,167, 88,
+ 0,112,116,116,244,168,201,136,213,106,128,105, 58,230,113, 90, 90, 96, 68,231, 8,197,185,235,119,226,222,120,125, 64, 55, 82,
+ 64,146,143,210, 84, 49,174,206, 78,214, 23, 47, 93, 40,165,105, 58,198, 18, 45,161, 80, 56, 32, 50, 50, 82, 80, 84, 84, 4,165,
+ 82,137,188,188, 60,100,102,102,194,104, 52, 66, 87, 82, 4,186,180, 20,116, 73, 49, 56, 77, 57, 30,198, 92, 69,176,151,135,228,
+120, 69, 39,248,223,235,171,113,214, 20,161, 34, 8,162,234, 59,137,173, 13,172,108,109,171,154, 63, 26,240,112, 28,100,103,103,
+ 55,189,172,172,236,112, 86, 86,214, 34,131,193, 48,121,201,146, 37,237,190,250,234, 43,151,233,211,167,219, 77,159, 62,125,183,
+ 84, 42, 13, 73, 75, 75,211,215,234, 80,203,203, 31, 24,141, 70,103, 0,238, 39, 79,158,132,171,171, 43, 74, 75, 75, 97, 52, 26,
+161,213,106, 13,142,142,142,210,130,130, 2,232,116, 58, 24, 12, 6,216,217,217, 33, 54, 54,182,208,100, 50,253, 89, 95,250, 28,
+154,146, 11,245,198,187,115,157,154, 91,103, 50,156,115,151, 50, 45, 91, 52,127,133,106, 33,128, 21, 81,126,126,155, 13,236,217,
+148,228,219, 7, 28, 83, 98, 78, 23,102,221,211,248,253,120, 56,165,172,158,135, 47, 75, 16, 4,215,172, 89, 51,228,229,229,129,
+162, 40, 88, 91, 91,195,198,198, 6, 65, 65, 65, 72, 79, 79,111,180,193,170,110,174, 78, 92, 62,132,252,114, 21, 54, 47,223, 1,
+ 15,185, 23, 9,192, 53, 51, 59,189,215,184,105,195, 58, 60,182,123,180,228,209,197,226,165,117, 84,116,110,168, 84, 42,187, 39,
+194, 47, 74,101, 55, 71, 71,199, 83, 52, 77, 35, 53, 53, 21,199,143, 31,239,154,153,153,217,160, 2, 36, 51, 51,243, 33,199,113,
+ 81,175,191,254,250,182, 86,173, 90, 53,229, 56, 14, 65, 65, 65, 24, 52,104, 16,246,236,217,131, 59,119,238,160,180,180,148, 61,
+127,254,252, 86,149, 74,213,168, 14, 57,114,185,188, 89,191,126,253, 46,172, 93,187,214, 49, 63, 63, 31, 58,157, 14,229,229,229,
+248,227,143, 63, 16, 17, 17, 1,169, 84,138,213,171, 87,151,154, 76,166,181,117,153, 43,142,227, 14,236,219,183,175,143,159,159,
+ 31,238,222,189,139,243,231,207,195,213,213, 21, 86, 86, 86, 24, 56,112,160,243,206,157, 59, 39, 7, 7, 7,175, 84,171,213, 11,
+251,245,235, 7,134, 97,112,253,250,117, 85,229,168,194, 90,243,168,214,114, 69,167, 3,199,113, 48, 26,141,171, 72,146,124, 51,
+ 52, 52,180,119, 92, 92,220, 53,188, 36,120,120,120,180, 16, 10,133, 31, 3, 64, 94, 94, 30,138, 89,192,166,176, 98,208,109, 73,
+229,227,178,176,176,176,234, 89,227,239,239,255,151, 86,171,157,149,153,153, 89,107,148, 73,169, 84,182,150,201,100,159,116,235,
+214,109, 84,255,254,253, 41,154,166,113,232,208, 33,172, 93,187, 22, 81, 81, 81,240,247,247,199,231,159,127,110,175,215,235,103,
+ 28, 61,122,116,250,185,115,231,142,150,149,149,205,172, 75,243, 57, 81,229, 69, 94, 38,131,197, 85,186,198,138, 35,172,152,138,
+161,168,178, 70,227,226,228,228,180,150, 97,152,110,129,129,129, 48,113, 57, 72,125,112, 15,101, 69, 44,140, 6, 61, 88,150, 3,
+199, 90,118, 46,216,226,131,176,123,149, 67,233, 57, 2, 52, 77,195,205,205, 13, 75,151, 46, 69, 73, 73,137, 96,220,184,113,190,
+ 11, 22, 44,184,161,211,233,160, 86,171,161,213,106,161,213,106,235, 52, 88, 34,169,190,149,143,123, 0,202,180,237, 33, 19,139,
+ 81, 80,170, 71, 81,153, 30,249,197, 58,236, 61, 48, 18,122,173, 6, 38,131, 1, 12,109,130,141,251, 96,248, 59,117, 3,112,223,
+162, 9,210,170,130, 40,172, 9,116,102, 52,232,204,104,200,218,204,198,129,213,111, 63,177,159,201,100, 89,147,127,118,118,246,
+227,253,251,247,175, 31, 59,118,236,148,215, 95,127, 29, 63,252,240,195, 55, 89, 89, 89, 97,149, 81,132,111, 6, 15, 30,140,132,
+132, 4,156, 59,119,110,195,243,170, 45,112, 28,231,236,228,228, 4,146, 36,161,209,104,244,245,153,171, 63,254,248,131, 88,176,
+ 96,193,209,129, 3, 7,118,154, 60,121,178, 76, 46,151,131,227, 56, 24, 12, 6,100,100,100,128, 36, 73, 20, 23, 23, 99,203,150,
+ 45,234,235,215,175,115, 98,177,248,146, 80, 40,252, 32, 33, 33, 33,171,190,190, 67,142,142,142, 24, 57,114,164,107,251,246,237,
+ 93,171,143, 24,124,243,205, 55, 93,195,194,194,170,190,243,244,244,180,248,248,116, 58,221,150,197, 11,231,118,251,117,251,174,
+160,102, 65,254,142,135,143,159,142,115,118,182,179,242,245,245,147,148, 20, 23,235,215,174, 90, 46, 80,171,213, 63, 89, 40, 23,
+236,226,226,130,236,236,108,220,191,127, 31,122,189,190,162, 9, 71, 83, 14, 67,113, 49,232,146, 34, 64,167,133,152, 97,160,207,
+207,129,175,159, 47,240,159, 17,134,117, 63, 49,170,153,169,167,155, 4, 9,130,128,149,189, 29,196,214,214,160,132, 2,139,251,
+ 96,201,229,242,182, 33, 33, 33,187, 54,109,218, 36,154, 58,117,106,135,171, 87,175,174, 77, 75, 75, 75, 19, 8, 4, 61,150, 47,
+ 95,126,109,209,162, 69,146, 81,163, 70, 53,219,184,113,227, 24, 0, 27,235, 56,135,187, 14, 31, 62,252,150,183,183,183,251,237,
+219,183,161,211,233,192,178, 44,250,246,237, 11, 0, 82,243,126, 73, 73, 73, 90,173, 86,155,147,144,144, 80,150,150,150, 70,195,
+130, 81,127, 95,174,203,186,242,105,222,185, 55, 20, 10,229,101,177,196,167, 9,169,137, 29,252,233, 80,143,111,191,251, 35, 83,
+119,244,225,195,178, 57,189,154, 44,213,148,221,158,228,232,169, 94,183,254, 80,138, 37, 29,220,171, 70, 11,186,184,184, 84, 53,
+ 9,138, 68, 34,115,244, 5, 37, 37, 37,245, 53, 17,214, 88,120,151,148,148,160,164,164, 4,247, 30,221, 69, 94,153, 10,209,191,
+ 95, 6,195, 48, 85,209, 17,165,187, 39, 78,252,126,205,182,235,208,118,179, 74, 91, 21,159, 46,188,133, 24, 75,175, 83,146, 36,
+ 63, 25, 50,100, 8,104,154,198,160, 65,131,176, 99,199,142, 79, 26, 83, 67,207,202,202,186,146,149,149, 21,112,255,254,125, 59,
+163,209,248,218,192,129, 3,127,238,215,175, 31, 46, 95,190,140,147, 39, 79,118, 53, 24, 12,201, 12,195,104, 21, 10,197, 18,142,
+227,220, 8,130, 88,162, 82,169,234, 28,237, 28, 16, 16, 48,202,214,214,118,177,149,149, 85, 89,211,166, 77,149,230,200,149, 90,
+173,134,201,100, 66, 70, 70, 6,142, 28, 57,162, 58,124,248,176,138,227, 56, 89,121,121,249,188,244,244,244, 63,106,107, 22, 44,
+ 47, 47,223,127,240,224,193, 40, 63, 63, 63,156, 61,123, 22,203,150, 45, 67,211,166, 77,177,117,235, 86,132,135,135,195,215,215,
+ 23, 78, 78, 78, 31,151,150,150,118, 90,182,108, 89,191,208,208, 80,236,219,183, 15,185,185,185,107,234,122, 62,213,245,156,213,
+106,181,224, 56, 14,221,187,119, 31, 63,117,234, 84, 12, 28, 56,240,120,219,182,109,219,199,198,198,222,251,183, 23,210, 10,133,
+ 98,105,247,238,221,167,183,110,221, 26,219,183,111,135, 62, 44, 18,214, 91,255,196,237, 1, 17,224, 0, 40,183, 30,168,104,175,
+123,173, 98, 64,135,111,143,161,152, 62,125,122,191,193,131, 7,123, 3,104, 81,139,230,183,163, 70,141,154,246,246,219,111, 35,
+ 46, 46, 14, 27, 55,110,196,141, 27, 55,170,202, 60,163,209,136,196,196, 68, 36, 38, 38, 66,161, 80, 96,192,128, 1,196, 7, 31,
+124,208,183,111,223,190,174,168,232, 22,241,255, 29,197,234,250, 50, 53, 17,214,234, 26,221,221,221, 93, 28, 29, 29, 19,214,174,
+ 93,235,220,161, 67, 7,202,100, 50,225,228,169, 83,248,236,163,113,136, 26, 48, 9, 58,189, 24, 38, 29, 1, 70,100, 99,217, 47,
+218, 13, 64,233, 57, 2,172, 77, 63, 24, 12, 6,140,223, 33,130, 3,145,131, 85,239,184, 3, 0,161,213,106,161,215,235,161,213,
+106,161, 86,171,161, 86,171,193, 48, 76,173, 79,201,178, 98,107,154, 54,178,200,204, 77, 67,134,234, 54,236,109,188,193,145, 94,
+200, 41,212,128,128, 27,140,186, 36,176,149, 55,166, 94,155, 1,181,254,217, 76, 49, 83,150, 82, 67,100,198,242, 62,149, 12,195,
+ 44, 94,190,124,249,248,181,107,215, 74, 38, 77,154,212,118,209,162, 69,175, 1,192,251,239,191,223, 86, 42,149, 98,221,186,117,
+122,134, 97, 22, 63,167,252,165, 72,146,252,228,213, 87, 95, 69,105,105, 41, 18, 18, 18, 14,213,247, 15,179,103,207,158, 56,100,
+200,144, 78, 11, 22, 44,144,233,116, 58,104, 52, 21,205,159, 37, 37, 37, 80,171,213,200,201,201,193,180,105,211,138,104,154,158,
+240,232,209,163, 61, 13, 48,122, 56,120,240, 32,126,253,245,215, 39, 70, 12,190,249,230,155,174, 59,118,236,200, 93,189,122,117,
+ 38,199,113,156,147,147,147,231,208,161, 67,221, 44,109, 33, 84,169, 84, 90, 0, 83, 22, 45, 94,244,219,183,203,151,187, 21, 22,
+ 20, 37,139,196, 86, 58,153,149,196,105,250,103, 11,185,156,156,156,105,185,185,185, 26, 75,211, 89, 84, 84,132,148,148, 20, 88,
+ 89, 89, 65, 36, 18,129,209,148,131, 85,171,161, 47, 42, 0,105,208, 67,194, 48,112,146, 73,224,229,238, 14,111, 55,203,250,226,
+171, 78, 31,199,145,225, 3,158,104, 22, 36, 8, 2, 71,195,155, 65,108, 99, 13,169,141, 13, 34,247,159,175,168, 48,136, 68,192,
+170, 77,150, 52,227,184, 40, 20,138,131,107,214,172, 17,229,231,231, 35, 33, 33, 33, 62, 45, 45,173,196,209,209,209,214,104, 52,
+178,247,238,221, 59,145,148,148, 52,192,215,215, 23, 28,199,213, 55,250,107,197,222,189,123,123, 69, 68, 68,152,124,125,125,173,
+243,242,242,188,139,138,138, 8,149,234,201, 62,204, 49, 49, 49,210,199,143, 31,107, 88,150,221, 87,105,174,234,189,240, 63, 29,
+234, 33,189, 20,135, 41, 93, 92,124, 91,219,187,182, 70,190,241, 70,235, 43,241,217, 83, 62, 29,234,177,250,187, 63, 50,117, 12,
+161,255,153, 49,166,123, 9,164,186,109, 13,105, 66,224, 56, 14, 49, 49, 49, 56,127,254, 60,206,159, 63,143,212,212,212,170, 29,
+236,237,237, 17, 29, 29,141,110,221,186, 89,124,163,104, 52, 26, 40, 20, 10, 56, 56, 56, 96,223,153, 95,240,227,183, 59,170, 58,
+186,155,201,207,207,135, 76, 38,195,226,207, 86,218,140,251, 98,232,194, 66,228,247,182, 68,219,211,211,179, 73, 68, 68, 68,127,
+119,119,119, 20, 21, 21,193,213,213, 21,237,218,181, 27, 72,211,180,111,110,110,110,163,154,178, 12, 6,195,196,110,221,186, 45,
+154, 54,109, 26,140, 70, 35,134, 15, 31,142,148,148,148, 93, 15, 31, 62, 92,229,227,227, 51,101,210,164, 73,238, 46, 46, 46,152,
+ 56,113,162, 53,128, 55,106,211,105,214,172,217,167, 95,124,241,197,215,163, 71,143,150, 24,141, 70,156, 60,121,178, 42, 74,109,
+ 50,153,144,150,150,134,121,243,230,169, 74, 75, 75,187,100,102,102, 62,176,160, 18, 57,109,255,254,253,125, 3, 3, 3,113,244,
+232, 81, 76,152, 48,225, 47, 27, 27,155, 22,253,251,247,247,182,182,182, 70,124,124, 60,104,154,134, 66,161,112,159, 49, 99,198,
+128, 62,125,250,224,196,137, 19, 88,184,112,225, 33,185, 92,190,226,233,107,238,105, 19, 44, 16, 8, 96,124,170, 79, 35, 69, 81,
+184,113,227, 6,186,119,239,142,233,211,167, 3, 0, 78,156, 56, 97,215,187,119,239,219, 93,186,116,177, 59,123,246,172,254,223,
+ 92, 72, 91, 91, 91,143,221,186,117, 43,238,223,191,143, 11, 23, 46,160,160,160, 0, 6,131, 1, 37,108,197,205, 32,169,140, 92,
+113, 30, 62, 8,159, 54, 11, 35, 6,188, 1,149, 74, 5,146, 36, 93,234,168,240,141,154, 53,107, 22,142, 28, 57,130,165, 75,151,
+162,180,180,180,198,253,172,172,172,208,174, 93, 59,132,132,132, 32, 37, 37, 5, 0, 92, 94,192, 33,191,148, 17,172,218,162, 14,
+171,214,175, 95,239, 28, 17, 17, 65,169,213,106,176, 44,139, 78, 29, 59, 98,204, 59, 99,112,108,223, 31, 80, 52,233, 6, 74,103,
+ 5,147,173,204, 50,131,225,245, 51, 10, 11, 11, 33,145, 72, 32,173,236, 80,122, 51,163, 42,188, 11,157, 78, 87,101,174,204,239,
+117, 97, 50,136, 99, 19, 31, 50, 94,165,229, 55,112, 53,246, 87, 24, 13, 6,248, 6,204,132,222,228, 2,107,183,119,161,165, 15,
+130, 46,174, 24,185, 43,182,235,138,156,156,124, 0,132, 69, 33,206,154, 10,121, 86,251,247,206,238, 44, 99,185,193,202,205,205,
+205, 59,127,254,252,138, 27, 55,110,204,238,219,183, 47,126,252,241,199,165, 28,199,161, 95,191,126,136,137,137, 65,124,124,252,
+138,220,220,220,188,231,145,183,114,185,124,203,186,117,235,250,185,187,187, 99,239,222,189,224, 56,174, 94, 67, 36, 22,139,223,
+159, 50,101,138,204, 28,197, 16,139,197,208,106,181,200,206,206, 6, 77,211,216,183,111,159,222, 96, 48, 76, 77, 77, 77,221,211,
+144,196,112, 28,199,181,111,223, 30, 43, 87,174,204,184,120,241, 98, 91, 0,232,212,169, 83,108, 88, 88,152,235,234,213,171, 51,
+175, 94,189,218, 22, 0,218,183,111,127, 61, 36, 36,164, 65,243,184,168, 84,170,140, 27,215,175, 60,208,234,116, 66, 71,103, 39,
+141,173,181,152, 43, 45, 43, 35,111,222,140, 83,229,230,230,166, 54, 64, 42, 49, 33, 33,161,101,102,102, 38,210,210,210,192,104,
+202, 65,234,245, 32,244, 90,244,232,212, 17, 86,224, 32, 1, 11, 17,107,132,144, 18,160,172,172, 28, 0, 18,235,141,218, 86, 43,
+ 16,204,230,138, 32, 8, 72,109,108, 32,182,181,129,196,198,230,137,136,150, 37,230,210,202,202,234,183,141, 27, 55, 42, 20, 10,
+ 5,190,251,238, 59, 40, 20,138, 32,185, 92,174,177,181,181,181,114,113,113, 65, 96, 96, 32,194,194,194,112,250,244,105, 16, 4,
+ 81, 95,193,104,226, 56,174,247,133, 11, 23,166, 93,186,116,105,152, 82,169, 36, 70,143, 30,141,168,168, 40, 72, 36, 18,104,181,
+ 90, 20, 21, 21,225,175,191,254, 34, 88,150, 13,173, 52,120, 62, 18,137,100, 7, 65, 16, 25,169,169,169,111, 62, 45,184, 97, 81,
+ 43,101,153,150, 29, 71,170,173,222,232,210,199,183, 85,247, 62, 61,209, 36,160, 7,186,247, 73, 7,128,165, 46,194, 71,195,151,
+205,114,216,231,104, 71,108,189,180,255,196,151,145,125,187,205,153, 79,159, 89, 56,127, 77, 81,189, 81, 44,130, 32,170, 10, 91,
+146, 36,107,140, 82, 81, 20, 5,146, 36, 45,123, 38,177, 76, 70,212, 59,157,170, 62, 27, 77,180,139,135,220,139, 52, 71,174, 0,
+160,180,180, 20,143, 31, 63,134,209,104,132,179,179, 51,140, 70,186,117, 3, 42, 85, 83,134, 15, 31, 78,232,116, 58, 76,155, 54,
+ 13,203,151, 47,199,160, 65,131,136,171, 87,175, 78, 1,240, 73, 67,111,108,165, 82,185,124,226,196,137,211,198,142, 29,139,226,
+226, 98,156, 58,117, 10,221,186,117,195,250,245,235, 93, 79,157, 58,245,117,120,120, 56, 40,138, 66,116,116, 52,104,154, 78,170,
+231,126,255,104,244,232,209,146,244,244,116,136, 68, 34,132,133,133, 33, 35, 35, 3,106,181, 26,185,185,185,248,234,171,175,178,
+ 75, 74, 74,186,102,101,101, 61,176, 32,105,164,159,159,223,199,254,254,254, 56,121,242, 36, 38, 78,156,120,196,218,218,250,141,
+162,162,162, 15,244,122,253,234, 1, 3, 6, 32, 60, 60, 28, 73, 73, 73, 24, 56,112, 32,218,181,107,135, 83,167, 78, 97,250,244,
+233,127,201,100,178, 33,245,204,131,117,239,204,153, 51, 45,195,194,194,160, 86,171, 81, 86, 86, 6,161, 80, 8, 7, 7, 7, 36,
+ 38, 38, 34, 32, 32, 0,211,167, 79,199,202,149, 43, 49,117,234, 84,182,119,239,222, 38,154,166, 69,230, 81,150,255,102,212,106,
+ 53,167, 82,169, 96,103,103,135,221,187,119,227,214,137,255, 99,239,187,195,163,168,254,175,207,204,236,206,150,236,166,144,190,
+ 73,168,161, 38, 1, 66, 66,232, 18, 66, 17, 69, 4, 81,145, 34, 69, 4, 20, 41, 74, 83,154, 18,106, 16,164,131, 52,165, 41, 32,
+ 4, 16,233, 69, 8, 29, 66, 42,164, 16, 90, 72,217,221, 52, 82, 73,182,206,206,188,127, 36, 27,147,144,178, 65,120,191,234,111,
+206,243,236,179, 59,101,207,220, 50,229,204,185,247,126,238, 89,156,154,250, 41, 36, 11, 86,129,227, 56,164, 47,157,131,222, 95,
+ 47, 64,151,152,199, 80,171,213,216,179,103, 15, 72,146, 68,149, 1, 40, 47, 60,219, 10, 10, 10,208,161, 67, 7,220,185,115, 7,
+123,246,236,193,218,181,107,203,221, 90,161, 80,136, 94,189,122,161, 95,191,126,120,240,224, 1,182,109,219, 6, 27, 27, 27,240,
+120, 57,129, 69, 84,249,174,224,206,176,189, 3, 2, 2,168,231,207,159, 67,171,213, 34, 51, 51, 19,201,201,201,144, 74,165, 80,
+102,165,162, 83,243,231,200, 32,244,136,139, 78, 50, 17,148, 48,186, 46, 27,222, 96, 48, 64,175,215, 35, 54, 54,182,116,232,123,
+203,144,242,206,207,101,125, 62,160,213,106, 17, 22, 22,198, 73,165, 82,200,100, 50,162,182,182,119,150,209,157,190,116, 61,102,
+192,168, 33,189, 69,231,195,126,130, 81,199,224,185,206, 14,197, 90, 61,138, 52, 66,232,197,253, 65, 16, 87, 65, 82, 98,116,235,
+208, 28, 23,175, 61,208,154,140,134, 51,150,169, 2, 19, 40,251,246, 48,229,198, 86, 16, 88,149,223,176,104,177, 28, 38,166,126,
+163,130, 37, 18,201,170,213,171, 87, 79,253,249,231,159,173, 63,251,236,179, 86,230,135,197,230,205,155,139, 36, 18,201,170,191,
+ 91,167, 10,133, 98, 84,211,166, 77, 23, 47, 92,184,208,189, 67,135, 14,136,140,140, 68, 72, 72,200,201,140,140,140, 99, 22,188,
+ 25,123, 56, 56, 56,224,249,243,231, 16,137, 68, 48,153, 76,200,202,202, 66,106,106, 42,196, 98, 49,194,195,195,245,141, 27, 55,
+ 62,242, 50, 9,179,164, 67,123,197, 17,149,245,129,148,102,253, 23,124, 61,177,133, 86,171,241, 46, 42, 42, 98, 4, 2,129, 64,
+ 44, 52, 61,169, 15,135, 7,243, 62,169, 0, 0, 32, 0, 73, 68, 65, 84,209,104, 60,113,245,234,213,247,122,244,232, 33, 78,138,
+141,134,161,160, 0,198,194,124,208, 38, 6,246,254, 29, 64,234,181, 32,244, 70,184,123,113,208,228,203,112, 61,234,177,209,104,
+ 52,214,233, 10,154, 5, 22, 73, 81,149,251, 93,217, 88, 67, 36, 47, 21, 88, 21,215, 19,117,180,107, 57, 59, 59, 91,245,236,217,
+179,143,159,159, 31, 56,142,195,170, 85,171,160,215,235, 69, 70,163, 17, 70,163, 17, 6,131, 1, 69, 69, 69, 56,124,248, 48,246,
+238,221,123,221,214,214,118,151, 74,165,170, 43,153,140,187,187,251, 20,150,101,157, 25,134, 49, 56, 57, 57,209, 7, 15, 30,132,
+ 68, 34, 1, 73,146,232,208,161, 3, 36, 18,137, 78,161, 80, 24, 0,192,201,201,201,184,122,245,106,193,248,241,227,233,234,200,
+124, 59,181,154,101,226, 28, 2, 69,226,198, 77,109,157,218,163, 89,203, 62, 0,128,126, 3,199,161, 89,139,134, 40,200,142,109,
+166,215,165, 12,161,136,103, 13,126,185,169, 76,120,195,170,237, 39,207,210,195,146, 0,252,108,233,185,212,167, 79, 31,188,249,
+230,155,229,205,129,206,206,206,208,235,245, 96, 24,198, 98,113, 5, 0,230, 32,162,193,193, 32,177, 16,216,213,217, 58, 3, 64,
+185, 61, 89, 80, 80,128,180,180, 52,164,164,164,148,223,167, 88,206,178,183,107,133, 66, 33,109,214,172,217, 88, 31, 31, 31, 92,
+188,120, 17,177,177,177,202,203,151, 47,187,119,234,212, 9, 30, 30, 30,159,112, 28, 55,175,204,133,181, 8,142,142,142,178,206,
+157, 59, 79,253,228,147, 79,112,255,254,125,124,243,205, 55,207, 50, 50, 50,142,158, 56,113, 98,252,244,233,211,201,192,192, 64,
+100,101,101, 97,235,214,173,166,240,240,240, 31, 26, 52,104,176, 56, 35, 35,163,182,114,124,162, 82,169,154,104,181, 90, 60,123,
+246, 12,230,144, 12,103,206,156,193,217,179,103, 51,243,243,243,123,169,213,234,135,150,164,173,113,227,198,214,254,254,254, 46,
+ 73, 73, 73, 56,112,224, 0, 12, 6,195,130,148,148, 20,131,141,141,205,175,155, 55,111, 94,232,233,233,105,223,179,103, 79,116,
+235,214, 13, 28,199,225,248,241,227, 8, 14, 14, 62, 41,149, 74,223, 79, 72, 72, 48,212, 65, 63,100,201,146, 37, 75, 28, 29, 29,
+ 63, 26, 57,114, 36,233,239,239,143,136,136, 8,152, 76, 38,244,233,211,167, 92, 92,157, 57,115,102,223,153, 51,103, 62, 4, 64,
+203,229,114,201,191,221,189, 50, 67,171,213, 34, 41, 41, 9, 46, 46, 46,104,209,169, 43,190,185,151,140,171, 55,110,130,227, 56,
+244,136, 75,198,243,231,197,216,181,107, 23, 34, 35, 35, 65, 81, 20, 60, 61, 61,235,228, 52, 24, 12,120,248,240, 33,178,179,179,
+ 49,120,240, 96,124,252,241,199, 88,185,114, 37, 12, 6, 3,230,207,159,143,220,220, 92,108,223,190, 29, 15, 31, 62,132, 64, 32,
+128, 92, 46,255,255,145,213, 26,181,200,127,210,193, 2, 74,219,190, 89,150,133, 74,165,194,157, 59,119,144,156,156, 12,153, 76,
+ 6, 13,195,178, 27,111,197,176, 36, 33, 84,154, 56, 92,227, 24,124, 93,151, 18, 55, 26,141,132, 64, 32,192,141, 27, 55,240,232,
+209, 35,216,180,224,202,221, 43,163,209, 8,157, 78,135,146,146, 18, 8,133,194,231, 55,111,222,124, 26, 17, 17,209, 76, 32, 16,
+212, 56, 10, 44,171, 37,181,251,252,133, 63,103,249,119,240,110,213, 55, 48, 24, 39, 78,124,135,252,194, 66, 20,235, 4,120,174,
+ 49,160, 88,203,193,205,186, 57, 58,183,247, 67,246, 51, 61, 30,196, 69,166,231,208,246,117,182,193, 24, 77,100,193,190, 77,159,
+217, 14,250,240, 11, 72, 92,123, 66,159,124, 16,172, 38,179, 92, 96,209, 18,107,216, 56, 54, 66,225,115, 13,174, 39, 60,129,209,
+ 68, 22, 88, 90,232,201,201,201,133, 58,157,110,217,245,235,215,191, 55,143,252,185,114,229, 10, 30, 63,126,188, 76,173, 86, 23,
+214,167, 2, 21, 10, 69, 95, 0,251, 1, 72,156,157,157, 51, 3, 2, 2, 20,111,190,249,166, 36, 48, 48, 16, 20, 69, 33, 42, 42,
+ 10,159,125,246,217, 57,185, 92,254, 62, 44,136,137, 35, 18,137, 50, 11, 10, 10,108,197, 98, 49,140, 70, 35, 50, 50, 50,112,255,
+254,125,104, 52, 26,100,102,102,130, 32, 8, 85, 88, 88,152,166,190, 39,154,121,132, 86,213,135,100,117,226,185,158,163, 8,225,
+238,238, 30, 24,208,185, 83,219, 31,214,108,128,166,228, 57,194,111,158, 64, 94,110, 14,182,237, 56,210,206,221,221, 61,208,210,
+206,196,233,233,233,191, 29, 57,114,100,166,175,143,143,159,103,195,134,184,155,146, 12,154, 53, 65,100, 50,129,210,107, 65,154,
+116,240,104,203,129, 36,229,200,204, 40,194,150,115, 23,239,149, 69,117,175, 61,125,111, 15,194,136,148, 2, 16, 4,129,115,111,
+120, 67, 34,151,131,150,203,208,237,112, 88,185,168,122,186, 98, 54,104,153, 28, 13, 2,234, 14,140,153,149,149, 85,114,253,250,
+245,136,196,196,196,128,214,173, 91, 99,209,162, 69, 72, 75, 75, 3,199,113,200,202,202,210,102,103,103, 43,159, 61,123,246,148,
+ 32,136,163, 42,149,106, 7, 44,140, 22,206,178,172,243,241,227,199, 1,128, 6,128, 63,255,252, 19,110,110,110,176,181,181, 69,
+ 97, 97, 33, 70,143, 30, 45,254,246,219,111, 1, 0, 81, 81, 81, 66,137, 68, 82, 35, 87, 92,244,253,213,121,133, 92, 30, 89, 28,
+249,126, 14, 19,221,174,119,255,116,244, 27,248, 9,206,159,216,133,139,103, 47,192, 81,152,252,196, 36,125,126, 58,251, 73, 78,
+145,186,184,229, 86,239,142,227, 41,213,243,179,219,190, 24,148, 36,240, 80,176,135,230,110,169, 61,112, 47,199,113,160, 40,234,
+133, 14,237,245, 21, 87, 21, 17, 28, 12, 22, 11, 65, 52, 19, 10,162,149, 25,105,253,221, 92, 60,202, 95, 46, 82, 83, 83,145,150,
+150,134, 22, 45, 90, 32, 57,229, 49, 68, 34, 58,218,194,243,126,228,192,129, 3,173,245,122, 61,126,255,253,119,134, 32,136,129,
+199,143, 31,143,240,245,245, 21, 4, 5, 5, 89,239,218,181,107, 36,128, 29,245,105, 49,146,203,229,180,209,104,196,238,221,187,
+161, 84, 42, 3, 51, 51, 51, 19, 56,142,219,250,249,231,159,255,232,229,229,213, 34, 33, 33,225,129, 70,163,249, 66,173, 86,199,
+214,214,228, 6, 0,249,249,249, 99,222,122,235,173, 67, 44,203, 54,238,222,189,187,108,196,136, 17, 54, 28,199,193,203,203, 11,
+167, 78,157, 82,169,213,106,139,251, 48,165,164,164, 20, 93,189,122, 53,211,219,219,219, 69,161, 80,128,166,233, 21,174,174,174,
+ 75, 41,138,250,225,221,119,223,181, 63,120,240, 32, 66, 67, 67, 33,147,201,240,228,201, 19, 85, 98, 98,226, 58, 87, 87,215,245,
+150, 68,112,143,138,138,122, 2, 96, 68, 64, 64, 64,240,218,181,107, 23,144, 36, 57,234,220,185,115,229,177,206,204,226,170,105,
+211,166, 99, 66, 67, 67, 63,254,143, 25, 33, 70,189, 94, 15, 7, 7, 7,100,103,103, 35, 43, 43, 11,141, 26, 53, 66,215,174, 93,
+ 97, 52, 26,113,236,196, 73, 92,189,122, 21, 28,199,193,209,209, 17, 54, 54, 54,136,137,137, 1,128,218, 70, 15, 27, 13, 6, 3,
+236,237,237,145,159,159,143,152,152, 24, 56, 59, 59, 99,198,140, 25,208,235,245, 56,120,240, 32,162,163,163, 65,146, 36,156,156,
+156, 96,109,109,141,232,232,232,186, 56,121,212, 87, 96, 81, 20,117,233,210,165, 75, 31,182,111,223, 94,240,224,193, 3, 60,120,
+ 80,122,189,105, 52, 26, 70, 64, 33, 52,235,238,177, 17,181,252,189, 45, 42,196,202, 16,137, 68, 91, 62,252,240,195, 47,198,141,
+ 27,135,201,147, 39,131, 36, 73,252, 28,165, 67,106, 42, 11,131,193,128,204,204, 76,220,189,123,151, 11, 8, 8, 32, 88,150, 53,
+244,234,213,107, 66,100,100,100, 39,138,162, 10,107,226, 68,104,168,137,105,251,238,224,205, 91,118,220, 24, 59,118,172,253,160,
+193,155, 17, 21, 31,135,252,226,210, 86, 38, 55, 71, 25, 58,183,158,141,172,103, 58,156, 61,125, 34,143,101,180, 31, 32,238, 55,
+ 99,109,233, 4,128,236, 18,141,243,214, 61, 71, 86, 29, 56,124,116,194,196, 49, 35, 36,189,122,141,129,176,232, 46, 76,207, 34,
+225,214,178, 59, 8,202, 10,183, 99,162, 16,251, 48, 77, 91,162,165,118, 20, 26, 52,179,235,226,172,228,165,147,228,198,237, 91,
+ 54, 44, 63,115, 62,140, 50, 24, 12, 24,240, 86, 31, 19, 73,146, 27,235,168,142, 23, 56,173,172,172, 14,196,196,196,216,235,116,
+ 58,164,167,167, 55,107,213,170, 21, 56,142, 67, 74, 74, 10,214,173, 91,199,156, 58,117,106,179, 68, 34,249,166,150, 55,196, 74,
+156, 70,163,113,255,238,221,187,231, 78,153, 50, 69,146,149,149,133,196,196, 68, 20, 23, 23,195, 96, 48, 32, 50, 50, 82,107, 52,
+ 26, 15, 88,112, 94,189,144, 78,179,192,178,183,183,119,239,220,185,179,121, 20,161, 59,203,178,104,208,160,129, 71, 64, 64, 64,
+ 4, 0,216,218,218,214, 52,138,176,198,242, 84, 42,149,151,195,194,174, 98,247,142, 53, 48, 24,116, 80, 43, 75,157,134,156,103,
+ 5,168, 67, 92, 85,229,228,180, 90,237,251,107,215,173,187, 53,105,204, 40,215, 55,122,247, 65, 90,108, 12,244,185,217, 32, 77,
+ 12,132,156, 0, 37, 89, 82,100,102, 62,199,242, 83, 23,178, 52, 90,109,117,162,181,218,116,150, 55, 11,218, 88, 67, 44,151, 67,
+ 84,230, 90,153,183,137,228,214, 16,202,228,160,104,186,186, 38,175, 23, 56, 75, 74, 74, 62,152, 56,113, 98,236,169, 83,167, 26,
+140, 24, 49, 2,131, 6, 13,138,202,207,207, 15,202,203,203, 43,178,240,218,127,129,147, 36,201,172, 1, 3, 6, 56,235,245,122,
+102,216,176, 97,130,156,156, 28,152,135,216, 23, 21, 21,225,244,233,211,104,221,186,116,214,153,184,184, 56,120,123,123,215,200,
+ 57,225,155,123, 74, 0, 75,166,127,232,254,195,173,152,140,105, 0, 86, 52,107,225,129,139,103, 47,224,234,197, 27,115,186,180,
+101, 55,188, 51,178,211, 98, 73,239,143,102,123,251,143,167,228, 54, 10,236, 57,114,152,138,143,252,105,153,182,248,158, 39,182,
+ 28,153, 93, 83, 58, 9,130, 0,199,113,149,196,149, 64, 32, 64, 73, 73,137,165,226,170,230,107,147, 0, 87,232,147,183, 96,236,
+140,161, 93,255, 60,112,219, 90, 38,147,149,247,249,105,222,188, 57, 4, 66, 1,126, 62,186,177, 56, 63, 63,231, 91, 75, 56,101,
+ 50,217,148,160,160, 32, 60,126,252, 24,177,177,177,135,213,106,117, 44,199,113,135,159, 60,121, 50,172, 83,167, 78,248,237,183,
+223,166,212, 34,176,170,229, 52, 71,172, 47,115,123,115, 1, 64,173, 86,199, 0,232,242,232,209,163,122,229,189, 44, 88,104,247,
+178,114, 77, 27, 50,100,136, 13,195, 48, 40, 19,207, 14,245, 60,151, 88,181, 90,189, 62, 60, 60, 60,164, 67,135, 14, 24, 62,124,
+120,191,136,136,136,126,190,190,190,240,244,244, 68, 94, 94, 30,194,194,194,126, 97, 89,246,115,181, 90,173, 5,192,213, 34, 0,
+171,205,251,157, 59,119, 30, 2, 24,237,231,231,247,145, 64, 32,128,141,141, 13,165, 84, 42,169,115,231,206, 1,192,196,208,208,
+ 80,211, 75,213,251,203,227,181,115, 18, 4, 49,127,204,152, 49, 91, 63,251,236, 51, 73,167, 78,157, 80, 80, 80, 80, 46,250, 79,
+157, 58,133,178,145,216,112,112,112,192,195,135, 15,113,244,232, 81,125, 65, 65,193, 58,154,166, 87,212,198, 57,122,244,232, 74,
+156,102,241,118,226,196, 9,152, 7,145, 56, 56, 56,224,193,131, 7, 56,114,228,136,182,160,160, 96,141, 94,175, 95,249,154,243,
+254,127, 75, 96,229,230,230,126, 57,119,238,220,160, 79, 63,253,212, 65,163,209, 80,142,142,142, 80,169, 84,204,217,179,103,115,
+139,138,138,190,172,207,193,110,222,188, 57,249,157,119,222, 89,183,115,231,206,237,219,183,111, 15, 28, 62,124, 56, 70, 15, 24,
+128, 47,186,202,160,211,233, 64, 16, 4,206,158, 61,123,255,210,165, 75,205,104,154,214, 5, 7, 7,179, 0,110,213,197,251,236,
+222,241, 7, 84,219,247, 2, 55,108,252, 49,212,175, 99,151,198, 77,154, 54, 17,119,111,104, 11,131,209,132,204,172,103,184,124,
+ 35, 94,247, 32, 62, 38,141, 53,232,135,102, 39,212, 29,197, 29, 0, 18, 18, 96, 0,138,190,244,242,178, 94,180,114,203,190, 45,
+123, 15, 29, 30, 50, 97,248,251, 2,255,118, 65, 72,206, 56,134, 43, 17,151,152,188, 34,238,104,145,158,154,148,144, 80,148, 87,
+223,130, 87, 42,149, 90,137,144, 43,208,106,181,246,201,201,201,200, 84,171, 10,149, 74,149,246,101,154,221,116, 58, 29, 30, 63,
+126,140, 11, 23, 46, 32, 42, 42, 10,215,175, 95, 55,156, 59,119,110, 39, 73,146,203,106, 9, 52, 89,253,149,221,182,237,247, 63,
+253,244,211,135, 38,147,201,179, 87,175, 94, 18,123,123,123,228,228,228, 32, 60, 60, 92, 31, 29, 29,253,184,109,219,182, 43, 95,
+246,100,115,117,117,197,208,161, 67,157,253,253,253,157,205, 35, 6, 27, 54,108,136, 15, 62,248,192,217,215,215,183,124, 93,163,
+ 70,141, 80,159, 80, 13,238,238,238,129,189,122,189,129,177,227,167, 67,163,121,142, 91, 55, 78, 32, 63, 55, 7, 55,239, 36, 65,
+103, 64, 96,125,134,195,151,141,222,236,178,116,221,134, 35,111,117, 14,240,106,229,230, 42,118,104,218, 4, 50, 39, 87,228, 62,
+123,134, 91, 49,143,140,155,206, 95,190,167,209,106,223,183,116,164, 39,203,178,229,163,220,188,167,205, 1, 73,146,229,179, 32,
+152,183,219,116,236, 1, 82, 32,132,137, 3, 12, 6, 67,157,238,157, 90,173, 78, 39, 8,226,131,169, 83,167,254,185,123,247,110,
+178, 87,175, 94, 29,254,248,227,143,191, 53,105,174, 82,169,244, 40,115, 69, 11,109,108,108, 4,159,124,242, 9,140, 70, 35, 74,
+ 74, 74, 80, 88, 88,136,103,207,158,233,190,250,234, 43, 49, 0,208, 52,109,124,235,173,183,234,188,127,172, 13, 85,106,167,127,
+232,190,193, 81,152, 60,172, 32, 59,182,153,163, 48,249, 73,151,182,236,134,181,161, 74,173,179, 93,201, 82,101,118, 88,146,234,
+249,217,109,123,142, 28,166,198, 12,249,192,164,144, 63,152,227,216, 16,135, 44,186,121, 85, 17, 88, 47,235, 92,189,112, 63,137,
+ 67, 84,186,236,113, 72,208,208, 78,243,150,206, 92, 45,119,116,114, 4,195, 48,120,146,250, 24, 59,143,108, 42, 46,210,229, 45,
+203, 77, 64,132, 37, 92,205,154, 53,107, 74, 81, 20,142, 29, 59, 6, 0,230,208, 6,155, 78,159, 62, 61,108,228,200,145,104,212,
+168,145, 55,203,178,226,218,194,104, 84,231,222, 25,141,198,122, 55,163,215,217, 54, 67, 16,143, 99, 98, 98,220,221,221,221,137,
+ 3, 7, 14, 60, 55, 24, 12,193, 47,113,141,175, 62,121,242,228, 27, 28,199,189,229,231,231,135,198,141, 27, 3, 0,226,227,227,
+113,245,234,213,253, 74,165,114, 44, 94,205,228,206, 28, 65, 16, 40, 44, 44, 52,199, 53, 49,200,229,242,255,228,164,209, 42,149,
+106, 47,195, 48,103,131,131,131,191,107,222,188,249,231, 19, 39, 78,164, 90,181,106,133,130,130, 2,216,216,216, 64,161, 80, 64,
+169, 84, 98,239,222,189,166,172,172,172,157, 36, 73, 46, 82,171,213,170,151,229,108,208,160, 1, 20, 10, 5,210,211,211,205,156,
+219,141, 70,227,226,156,156,156, 76,240,168,223, 53,101,201, 78,101, 97, 26,214,155, 76,166, 32,179,171,149,155,155,251,101,102,
+105,143,241,151, 82,247,239,188,243, 78,243,156,156,156,237, 6,131, 33,112,208,160, 65, 24, 62,124, 56,222,125,247, 93, 12, 31,
+ 62,156, 50,187, 86,127,252,241, 71, 98,189,222, 24,202, 38,123, 38, 41,122, 32,199,113,237, 1, 16, 4, 73, 90, 50,217,115,157,
+ 74,188,131,151,181,167, 84,204,238,144,138,216, 30, 26, 61,121, 77,163, 35, 39, 68, 39, 20, 61,254, 59,111, 54,101, 19, 59,255,
+ 10, 0, 58, 35, 55, 42, 61, 93,125,190,190,229, 89,214, 68,120,128, 32, 8,138,227,184,141, 28,199, 29, 80, 40, 20,143, 45,177,
+221,171,114,114, 28, 71, 2,165,193, 69, 47, 92,184,240, 29, 65, 16,163,116, 58,157,147, 88, 44,206,230, 56,238,151,190,125,251,
+ 46,222,176, 97,131,177,150, 27, 52, 91, 83, 58, 61, 60, 60,246,185,185,185,181, 44, 59, 78,165, 62, 87,230,111,243,250,178,120,
+ 68,143,148, 74,229, 72, 75,203,211,179,153,251, 89,207,166,238,111,122, 54,117, 3, 0, 60, 78, 86,225,113,178,242,220,227, 39,
+202,254, 47, 89, 71,229,147, 61, 19,101,161, 24, 56,203, 38,123,174,196,233,237,237, 29, 65, 81,148, 71,125, 46, 74,150,101, 85,
+113,113,113,126,150,164, 83,161, 80,140,104,216,176,225, 10,149, 74,117, 36, 61, 61,125,250,171,120,243, 86, 40, 20,221, 72,146,
+ 60,197,178,172,180,170,195,101, 22, 97, 53,116,114,175,145,243,251,121, 62,223,118, 15,124, 99,200,245,203, 87,143,126,179, 60,
+110, 73,197,109,147,223,107, 48,110,228,228, 47, 87,238,219,188,254,235,205,191,231,237,172, 43,157,237,218,181, 11, 3,208,210,
+236,102,213, 6,147,201,164,138,139,139,235,248, 50,174,131,125, 59, 4,216,201, 28,151,232, 13, 6, 95,146, 0, 39,164,233,152,
+252,252,156,111,107, 16, 87,213,114,186,187,187,175,104,209,162,197,151,143, 30, 61,218,159,158,158,254,105,133, 50,254,161, 73,
+147, 38,147,211,210,210, 54,165,167,167,207,182,180,142,154, 54,109,106,227,235,235,155,183,104,209, 34,114,225,194,133, 8, 15,
+ 15,183, 87, 42,149,121,175,162,222, 27, 53,106,228, 42,145, 72,246,176, 44,235,105, 50,153, 54, 63,121,242,100,245,203,112,122,
+121,121,209,249,249,249, 95, 54,108,216,112,134,139,139,139, 75,102,102,102, 74,106,106,106, 72, 70, 70,198, 79,245, 16, 87,117,
+214,145,159,159,159, 14, 40,157, 78,204,194,254, 86,255, 74, 7,171,202,249,228,201,178,236, 50, 95, 95,223, 15,199,141, 27, 71,
+ 36, 36, 36,224,252,249,243,120,250,244,233,209,178,254,124, 15, 94, 5,231,217,179,103,185,148,148,148, 67, 36, 73, 46, 80, 42,
+149,143,255, 63,230,157, 71, 61, 79,148, 90,241,206, 59,239, 52,239,212,169, 83, 88,187,118,237,216,118,237,218, 21,189, 10,206,
+215,145,206,191, 52,156,163,236, 85,115,190,142,116,190, 12, 39,199,113,228,223,249,252, 19,242,222,162, 69, 11, 14,150,207,191,
+246,175,171,163,127, 43,231,150,165,237,220,110, 95,248,104,237,142,239,219,190, 48,121,121,240,212, 6,214,127, 30,123,127,101,
+240,212, 6,214,255,209,242, 36, 95,242, 5,183,109,245, 47,102, 13,183,190,247,222,123,166,134, 13, 27,110,255,135,231,157,104,
+220,184,177,152,191,142, 94, 61,167,139,139, 75, 71,133, 66,113, 92,161, 80, 28,119,119,119,239,244,138, 57,127,119,117,117,245,
+251, 31,229,157,199,235, 56,249,222,125,247, 93,231,247,222,123,207,158,191,240,120, 78,158,147,231,228, 57,107,231, 84, 40, 20,
+ 82,190, 60,121,206,255, 32,231,127, 10,130,127, 74, 66,142, 31, 63,158,197, 87, 7, 15, 30, 60,120,212,141,250,132,118,224,193,
+131,199,255, 6, 68, 45, 42,180, 62,109,171, 47,163,100,239,241,156, 60, 39,207,201,115,242,156, 60, 39,207,249,127,142,179, 46,
+110,190,111,215,107, 18, 94, 60, 39,207,201,115,242,156, 60, 39,207,201,115,254,223,227,252, 79,129,228,139,128,199,235,198,134,
+241,112,223, 48, 30,238,175,107,127, 30, 60,120,240,224,193,227,159, 6,193,127, 45, 67,254,254,254,222, 28,199,141, 36, 8,226,
+ 67, 0,224, 56, 46,148, 32,136,125,145,145,145, 22, 69,160,149, 72, 36, 25, 90,173,214,185,236,119,150, 86,171, 85, 84,216, 76,
+ 84,248, 0,165,163,213, 42,126,170, 69,211,166, 77, 51,116, 58,157, 37,243,235, 69, 19, 4, 17,197,178,108,164, 92, 46,191,246,
+240,225,195, 36, 75,243,221,183,111,223,207,101, 50,217,183, 26,141,102,229,185,115,231,214,255,127, 40,234,206, 13,221, 92,119,
+ 25, 25, 3,155,145,149, 59, 31, 64,181,211,240,108, 30,135, 16,130,195,236,178,223,171, 38,239,196,220,218, 72,235,187,127, 45,
+232, 40, 20, 10,167,184,184,184,188,157,158,158, 30, 1,224,107,240, 81,136,121,240,224,193,131,199, 63, 81, 96,117,241,179,111,
+ 69,176,134,217, 66,138,123,195,104, 34,174,114, 36,189,234, 86, 84,110,210,223, 73,128, 66,161,104, 72, 16, 68, 47,142,227,188,
+ 72,146,188,203,178,236, 57,181, 90,253,172, 62, 28,126,126,126, 13, 1, 12, 7, 48,162,115,231,206,109, 39, 77,154,132, 22, 45,
+ 90, 64,171,213, 34, 60, 60,124,206,175,191,254, 58,135,227,184,123, 40,157, 82,230, 64, 84, 84, 84, 90, 77, 92, 90,173,214,217,
+ 28,155,137, 32, 8,231, 15, 63,252, 48,188,194, 36,188,132,121,114, 89,142,227,110, 1,184, 73, 16,196,141,223,126,251, 45,189,
+149,147,164, 75,147,134, 78,239,156,137, 76,157, 95,149, 83,167,211, 57, 71, 31, 63, 10,142, 49,225,185, 50, 21,205,223, 31, 94,
+190,237,252,251,125,192, 21, 23, 66, 40,166,163,131,254,184, 17, 5, 32, 50, 53, 53, 53,170,113,227,198, 73,181,113, 86, 69,135,
+ 14, 29, 22, 7, 7, 7, 59, 14, 26, 52,104, 10,128, 26, 5, 86,125, 56,107,129,184, 75,199,246,151,142, 31, 62, 32, 1, 65,226,
+189, 33, 31,238,191, 30,121,111, 52,128, 74, 19, 64,111, 30, 11, 23,130,192,236, 73, 95, 77,162, 0,224,199,117, 91,190, 94,251,
+ 49, 54, 76,255, 21, 25,110,110,110, 65, 28,199,125, 93, 86,206, 43, 85, 42,213,165,205, 99,225, 2,224,155, 73, 95, 77, 34, 0,
+ 96,203,186, 45,179, 55,143,197,250,201,187, 81,223, 0,119, 95,140, 29, 59,118,195,178,101,203,168,178, 32,124,111,121,123,123,
+183, 42, 44, 44,244, 6,192,119, 14,230,193,131, 7, 15, 30,255,123,129,229,227, 99, 99, 39, 37,185, 25, 82, 17, 55,188, 87,183,
+ 22, 77,223,125,187, 27,209,172,121, 51, 36, 37, 36,121, 94,186,124,231, 19, 49, 21,159,172,209, 19, 7, 52, 44,177, 38, 46,174,
+246,249,195, 22,140,135,145, 97, 74,143, 41, 16,192,180,231,156,199,209,160,160,160,166,227,198,141,131,159,159, 31, 34, 34, 34,
+130, 14, 29, 58,244,229,201,147, 39,239, 24,141,198, 83, 98,177, 56,172,174, 8,199,126,126,126, 43,220,221,221,191,158, 57,115,
+ 38,209,177, 99, 71,136,197,127,133, 93,145,203,229,232,211,167, 15,250,244,233,131,140,140,140,182, 97, 97, 97,109,247,237,219,
+ 23,226,231,231,183, 50, 42, 42,106,142, 37, 5,244,237,183,223,250, 87,179,250, 44, 65, 16,143, 72,146,140,244,242,242, 74,111,
+238, 42,107,237,104,111,119,226,251,101,139,112,230,205,177, 53, 10,151,223,251,119, 3,128, 74, 2,203,144,147, 9,137,181, 60,
+154,150, 74,163, 0, 68, 2,136,106,220,184,113,180,165,156, 0, 16, 24, 24, 40,190,127,255, 62,193,113, 28, 58,117,234,100, 79,
+ 16, 68, 18, 73,146,235,207,156, 57,179,165,226,126,245,225,172,203,189, 10,158, 61,153,206,121, 28,141,196, 27,231, 48,216,223,
+ 93, 18, 21,119,127,169, 86,111, 60, 92,219,159, 8,130, 36,119, 71, 56,206, 1,178,190,100, 89,246,219,132,132,132, 64, 0,240,
+242,242, 18, 1,184,180, 39,188,193,128,177,221, 10,254,206, 36,159, 52, 69, 81,155,119,238,220, 57,126,244,232,209, 72, 73, 73,
+193,181,107,215, 32,151,203,177,120,241,226, 38, 51,103,206, 12, 97, 24,230, 75,254,178,231,193,131, 7, 15, 30,255, 83,129,213,
+195,207, 42, 60,168,107, 19,255, 65,253,187,145, 45,188,188, 65,139,173,202,183,181,243,243, 67, 59, 63, 63, 98,226,196,162,102,
+ 49, 81, 49, 11,206,252,121,123,158, 45,205, 68, 94,139, 42,169, 49,232, 25,195, 64, 16,178,108, 31, 0, 96,207,142,145, 84, 82,
+ 82, 82, 83,169, 84, 90, 81, 40, 32, 48, 48,144, 12, 9, 9,233,124,233,210,165,206, 7, 14, 28, 48, 24,141,198,117, 42,149,170,
+182,169, 51,190, 62,116,232, 16, 65, 81, 20, 40,138,170,113, 39, 87, 87, 87,244,235,215, 15,174,174,174,196,236,217,179,191, 6,
+ 80,173,192,146, 72, 36, 89, 4, 65, 56, 3, 64,131, 6, 13, 76,193,193,193, 49, 92, 25, 0,128,101,217, 91, 20, 69,221, 36, 8,
+226,214,209,163, 71,149,158,110, 18,119, 57, 45, 62,183,125,235, 70, 24, 11, 51,107,140,227, 85,162, 74, 55,171,140, 74,235, 69,
+ 50,171,104,145, 76, 22, 37,146,203, 35, 1, 68, 17, 4, 17,109, 41,167, 89, 92, 73,165,210, 43, 91,183,110,109, 0, 0, 83,167,
+ 78,181, 43, 41, 41,177,155, 48, 97,194, 28, 0,229, 2,171, 62,156,181,192,238,141,174, 29,159,126,240,238, 91, 54,126,157,123,
+224, 86,232,143,200,207, 47, 70,113, 81, 9, 88,150,125, 97,230,223,201,187,145,185,121, 28, 86,253,184,118,203, 55, 4, 73, 18,
+190,253,191, 70,127,123,110, 90,206, 47,191,196, 1, 16,138, 68,162,178, 34, 33, 4,238,238,238,110,214,110,173, 86,181,232,209,
+ 26, 91,214,111, 6,199,178, 28,128, 85,245,112,175,156,173,173,173,143,157, 59,119,174,115, 64, 64, 0,110,221,186,133,199,143,
+ 31, 99,242,228,201,250,201,147, 39,211, 99,198,140, 33,102,204,152, 49,117,229,202,149,161, 0,174,243,151, 62, 15, 30, 60,120,
+240,248,159, 9, 44, 9,109, 10, 8,222, 16, 3, 83,241, 35,112,198, 84,112,134,140, 23,246,177,178,107,136, 54,190, 46,176, 18,
+ 57,145,119, 19,214, 6, 84,217, 92,235, 80, 75,179,184, 10, 93,237,230,163, 41, 86,211, 0, 32,149, 41, 12, 31,204, 80,198, 5,
+ 4, 4,192,201,201,137,190,113,227,198, 12,160,210,220,100, 85, 57, 9,125,108, 4, 18,223,237,142,230,137,185,176,178,178,130,
+249,193,109, 70, 82, 82, 18,174, 92,185,130,148,148, 20,120,122,122, 2, 47, 70, 80, 46,231,212,106,181,174,253,251,247, 15, 91,
+185,114,101,207, 21, 43, 86,220,221,191,127,127, 47, 0, 37,213,186,123, 13,109,236, 88,134, 59,183, 99,203, 90, 33,244,197,246,
+247,239, 92,175, 49,239, 77,223,253, 0,147,242, 75,155, 30, 15,122,187, 65, 98, 35,135, 88,110, 29,221,239,236,157,114,231,138,
+ 32,136,104, 75, 57,131,130,130, 62, 17, 8, 4,243, 13, 6,131,237,182,109,219,236,236,236,236,200, 99,199,142, 25,182,110,221,
+ 90, 68,211,180,158, 32,136,229, 47,147,206,218, 32,164,168, 37, 63, 4,207,182,177, 34, 25, 68,157,250, 5,233, 41,169,136,125,
+168, 52,254,118, 53,222,164, 55,154,198, 85,199, 57,121, 39,230,206,120, 79,180, 43, 66,237,121,124,224,194,201, 45,151, 14,114,
+129,193, 96,216,145,157,157,141, 9, 19, 38,128,101, 89,244,232,209,163, 59,199,113,202,105,211,166,193,211,211, 19, 59,254,120,
+ 80, 34, 40,188,221,107,223,197,162, 8, 11,211,217,182,113,227,198,231, 46, 93,186,228,226,238,238,142,176,176, 48,100,100,100,
+ 64,161, 80, 96,242,228,201,162, 21, 43, 86,236, 41, 44, 44, 28,186,108,217, 50,201,189,123,247, 14,156, 61,123,182, 33, 74,251,
+204,189,142,161,192, 60, 39,207,201,115,242,156, 60,231, 43, 6,199,113, 1, 0,156, 0,100, 19, 4,113,167,226,114,217, 46, 78,
+101,223, 85,151,115,202,158,249, 21, 39, 47,207, 41,123, 6, 56, 1, 48, 1, 8, 39, 8, 34,239, 85,167,217, 44,176, 2, 1,132,
+ 1, 88, 4, 32,184,234, 78, 6,101, 24, 68, 77,222, 7, 36, 62,224,244,143,192,234,149,224,132,206, 40, 46,145, 32,231,105, 10,
+ 18,111,133,130, 99, 74,234, 62,152, 0,204,198,117, 35, 5,214, 86, 0, 45,118, 50, 20, 21, 21, 65, 38,147, 65, 83,172,166,199,
+ 76, 40,119,182,232, 75,151, 46, 33, 50, 50, 18,110,110,110,117,138, 64, 0,224,244,165,173,136,122,189, 30,122,189, 30, 25, 3,
+ 58, 65,214,165, 39,242, 70, 77,198,133, 11, 23,144,157,157, 13,154,166, 65,211, 52, 24,134,169, 51,157,100,217, 76,188,102,211,
+170,186,125,220,221, 33, 49, 25,141, 39, 54,174, 89,110, 99, 35,183,114,137, 56,247, 59, 82, 82, 50, 44, 42,116,145,204, 10, 34,
+169, 85,180, 72, 38,173, 36,174,234,195, 73, 81,212,226,195,135, 15,187,235,116, 58,208, 52,141,208,208, 80,195,238,221,187,227,
+138,139,139,223,136,138,138,210,188,138,116, 86,133,131,147,211,201,247, 63,254,108,242,210, 79,251, 65, 83,172,197,209,171,241,
+248,243,110,242, 32, 0,215, 0, 20,215,244,191, 53,191,235, 31,186,185, 21,244,153, 48, 97, 66,244,145, 35, 71, 28,127,248,225,
+ 7,152, 76, 38, 48, 12, 3,134, 97,202,127,155, 76, 38,236,223,191, 31,215,110,199, 79, 83,171,139, 34, 44, 76,150, 91,211,166,
+ 77, 47,220,190,125,219,201,202,202, 10,231,207,159, 71,126,126, 62,190,248,226,139,114,231, 42, 63, 63,127,248,150, 45, 91, 62,
+120,250,244,233, 15, 87,175, 94,125, 6,128, 2,192,128, 7, 15, 30, 60,120,252,147, 80,155, 22,113, 34, 8,226, 4,199,113, 3,
+ 57,142,235, 11, 64,100, 94, 6, 0,130, 32, 78,148, 61,183, 43, 45,207,153, 51,103, 94, 72, 72, 72,156,121,217,188,207,220,185,
+115,125, 86,172, 88,177,188,107,215,174, 7,110,220,184,241, 4,192,107, 19, 88, 97,168,101, 94, 44,221,163, 95,161,123,242, 27,
+104, 69, 16, 68,205,134, 65,232,216, 21,105,247,195, 16,125, 97, 13,210, 31, 92, 3,199,154,224,210,176, 77,157, 7, 91,250, 19,
+132, 10,133, 34, 82,165, 82, 33, 42, 42, 10,143, 30, 61,130, 68,242, 66,203, 18,254,252,243, 79, 0,128,139,139,139,101,130, 37,
+160, 59, 26,198,168,145,230, 91, 58,224,175, 97,140, 26, 0,176,124,238, 92,136, 68, 34,208, 52, 93,190,175,201,100,170,147,143,
+ 40,235,213, 94,214, 44, 88,221,232, 64, 66,194, 88, 31, 90, 56,103, 74,227,166,158, 45,220,110,159, 60,136, 39, 79,148,200,204,
+180,172,126,196,114, 89,180,216, 90, 22, 37,146,254,213, 44,248, 18,156, 7,135, 14, 29,250,201,144, 33, 67,164, 93,186,116, 17,
+255,252,243,207,249, 85,197,213,223, 77,103, 69,184,186,186,246,127,231,157,119, 78, 78,156, 56, 17,131,223,234,139,145, 61,188,
+184,244,172, 2, 13,128,243,101,111, 0,181, 66,165, 82, 41, 1,244,123,255,253,247,127,245,241,241,241,226, 56, 14,109,218,180,
+193,224,193,131,113,248,240, 97,196,199,199,163,168,168,200,112,245,234,213,117,106,181,122,167,133,201,178,106,208,160,193,153,
+139, 23, 47, 58, 89, 89, 89,225,220,185,115, 40, 41, 41,121,193,185, 90,190,124,185, 36, 57, 57,121,211,217,179,103,155,160, 52,
+ 52, 9, 47,174,120,240,224,193,227,159,135, 90,181,136, 89, 56,113, 28, 55,176,162, 96,170, 42,180,204,191,205,251,133,132,132,
+ 12,172, 40,190, 0, 96,197,138, 21,203, 43, 44,151,188,142,204,152, 5, 86,175, 50, 33,209, 11,192,229, 42,182, 92,233, 15,150,
+129, 65,121, 30, 6,229,121, 88,249,206,199,177, 13,163, 42, 17, 89,226, 12, 85, 7,173, 86, 11,161,200,193,176,103,199, 72, 26,
+ 0, 76,156,204,240,194,177,235,182, 14, 45, 62,158, 37,233, 36, 8,130,172,192,251,130,120,240,240,240, 88,221,181,123,231, 30,
+ 45,218,117,178,186,125,230, 8, 30, 62, 72, 65, 78, 78, 1,192, 65, 91, 19,231,249, 97,111,163,248,113, 18,164, 54, 54,209,253,
+ 47,198, 84,114,174, 94,134,243,194,133, 11,179,186,116,233,242,109,104,104,168,202,211,211, 83, 44, 16, 8, 12, 85,196,213, 75,
+165,179, 34, 20, 10, 69,119,129, 64,112,142, 36, 73,105, 80, 80, 16,166, 77,155,134,245,235,215, 51,172, 80, 50,112,203,153,136,
+161,207,117,134,249,150,136,171, 10, 34, 43, 86,165, 82,121, 39, 37, 37,137, 25,134, 9,122,247,221,119, 79, 13, 24, 48, 0, 55,
+111,222,196,133, 11, 23, 90, 26, 12, 6,117,217,113, 23, 3,112, 33, 73,114,101, 45, 51,185,147, 52, 77, 31,184,112,225,130,143,
+155,155, 27,206,159, 63,143,146,146,146,114,231,106,236,216,177,149,156,171, 27, 55,110, 60,227,197, 21, 15, 30, 60,120,252,163,
+ 81,163, 22,169,232, 62, 85, 39,178, 44, 65, 5,241,165,153, 51,103,206, 60,130, 32, 78,148, 57, 92, 26, 0,170,215, 37,176, 46,
+151,169, 70, 14,117,207,240, 14, 83,209,147, 23,214,177,236,203, 63,183, 90,246, 61, 27, 39,149, 74,177,101,203, 22, 88, 89, 89,
+213, 91, 56, 21,159, 58,130,180,201, 31,151, 59, 87,102, 39, 11,253,199,188,172,192, 50, 59, 88,183, 80,165,137,208,221,221,125,
+ 74,187,118,237, 62,221,190,251, 87,235, 21,223,126, 93, 80,152, 24, 39,208,150,232,100, 58, 35, 99,120,148,153, 83, 99,120, 4,
+166, 48, 31, 98,153, 44, 90,104, 37,125, 65, 92,189, 44,231,173, 91,183,180,189,123,247,222,181,124,249,242, 46, 44,203,238,126,
+ 21,233,172, 40,174, 28, 28, 28,206,110,218,180, 73, 42,149, 74,161,211,233,176,114,229, 74,252,249,231,159, 3, 51, 50, 50,206,
+ 2, 56,251,178,245,109, 48, 24,198,247,237,219,119,237,172, 89,179, 96, 52, 26, 49,108,216, 48, 60,125,250,244,220,195,135, 15,
+215,123,120,120,204,250,226,139, 47,220, 28, 29, 29, 49,105,210, 36, 26,192,216, 26,104,190,223,183,111,223, 64, 95, 95, 95, 92,
+190,124, 25, 5, 5, 5, 80, 40, 20,152, 50,101,138, 40, 36, 36,100, 79, 81, 81,209,208,144,144, 16,222,185,226,193,131, 7,143,
+127, 15, 44,210, 34, 21,157,168,250,160,194,255,132, 33, 33, 33,113, 33, 33, 33,149, 28,174,215, 37,176,184, 10,234,177, 78,119,
+136,213,188,216,135,135, 53, 49,245,201,164, 69,251, 89,210,156, 7,252,213, 7,171, 26,161,244,194,114, 61,250, 96,157,229, 56,
+238, 70, 69,129,229,238,238,254,158,171,171,235,247,251,246,237,147,170, 84, 42,120,180,106,107,123,242,240,111, 58, 23,153, 88,
+155,158,155, 59, 38, 86, 85, 28, 90, 19, 39,171, 45,142,150,200,228, 81, 18, 43,121, 85,113,245,210,156, 0,112,241,226,197,153,
+ 85,215,253, 93, 78,133, 66,209,221,209,209,241,236,166, 77,155,172, 84, 42, 21,104,154,134, 92, 46,199,197,139, 23, 81, 38,174,
+ 94, 26,238,238,238,193,147, 39, 79, 94, 56,118,236, 88,228,229,229,225,194,133, 11, 8, 10, 10,194,166, 77,155, 26, 95,188,120,
+113,109,183,110,221, 64, 81, 20,206,159, 63, 15,163,209,248,160, 6,154, 33, 19, 39, 78,156,245,193, 7, 31, 32, 60, 60, 28,106,
+181, 26,147, 38, 77,210, 79,153, 50,165,188,207,213,143, 63,254,248, 65,114,114, 50,239, 92,241,224,193,131,199,191, 7, 53,106,
+145, 42,207,242,147, 28,199,189, 83,213,213,170, 42,190,204, 14, 85,197,229,170,251,151,109,215,190,142,204,152, 5, 86,205,174,
+ 21,103, 2,101,223, 30,166,220,216, 10, 2, 75, 93,105, 23, 90, 44,135,201, 2,225,178, 96, 60,140, 78,118,106,193,222,197, 36,
+132, 34, 7, 67,203,190,103,227,106,218, 87, 46,151,131,101, 89,139,116, 24, 61,224, 3,170,121,255,247,240,184,157, 43, 56,163,
+161,220,201,194,188,121,149,196, 21, 77,211,208,235,245, 64,221,205, 90,225, 4, 65, 60,165, 40,234, 38, 0, 46, 48, 48,112,135,
+209,104,124, 47, 47, 47,175,193,132, 9, 19, 12, 57, 57, 57, 56,122,244, 40,118,237,218,165,121,110, 16, 68,228, 61, 51,142,122,
+162, 46, 78,175,133, 47,250,157,203,113,149,156,171, 87,192,249, 2, 94, 5,167, 66,161,232,238,236,236, 92, 46,174,196, 98, 49,
+228,114, 57,148, 74, 37, 4, 2,193,223, 10,210,217,184,113, 99,177,191,191,255, 55, 99,198,140, 65, 98, 98, 34,230,204,153,163,
+ 86,169, 84, 71,142, 29, 59, 54,105,198,140, 25,130,192,192, 64,100,101,101, 97,235,214,173,198,240,240,240,229, 25, 25, 25,171,
+170, 61,105, 5,130,241, 75,150, 44,225, 84, 42, 21,241,248,241,227, 74,206, 85, 97, 97,225,208,144,144, 16,201,147, 39, 79,120,
+231,138, 7, 15, 30, 60,254, 93,168,173, 5, 45,167, 76, 60,101, 86,179, 76, 85, 16, 86, 85,151,179,170, 44, 3,128,190,202,246,
+152,215, 41,176,170,133,209, 68, 22,236,219,244,153,237,160, 15,191,128,196,181, 39,244,201, 7,193,106, 50,203, 5, 22, 45,177,
+134,141, 99, 35, 20, 62,215,224,122,194, 19, 24, 77,100, 65,109,124, 12, 3,193,212,175,254, 26, 45,104,103,103,135,130,130,130,
+ 74,142,150,149,149, 21,220,220,220, 80, 88, 88,136,208,208, 80,112, 28,119,189, 14, 55,108,201,152, 49, 99,190,251,226,139, 47,
+200,230, 35,198,225,249,173,171, 47,184, 86, 18,137, 4, 82,169, 20, 74,165, 18,247,239,223,103, 57,142, 91, 82,135, 58,190, 77,
+146,100,244,111,191,253,150, 30, 24, 24, 56,182, 65,131, 6, 35,198,141, 27, 39, 13, 15, 15,199,146, 37, 75, 4,231,207,159, 55,
+220,185,115,135, 49,153, 76, 51, 85, 42,213,214, 58,207, 24,130,168, 42,174,254, 54,103, 53,226,234,111,115, 42, 20,138,110,110,
+110,110,103,215,175, 95,111,149,145,145, 1,177, 88, 12,107,107,107,164,166,166, 98,201,146, 37,197, 12,195,188,245, 55,207, 55,
+177, 76, 38, 19, 27,141, 70,236,222,189, 27, 74,165,178,107, 70, 70, 70, 42,203,178, 91, 63,255,252,243, 13, 94, 94, 94,109,238,
+223,191,255,224,249,243,231,147, 51, 51, 51, 19,107, 34,177,179,179,235,234,228,228, 68,220,188,121, 19,147, 38, 77,210, 79,157,
+ 58,181,188,207, 21,239, 92,241,224,193,131,199,127, 80,121, 17, 68,120,109,203,255, 68,212, 58,217,115,118,137,198,121,235,158,
+ 35, 27,134,125,212, 71,123,246,226, 69,160,241, 24, 8,221,251, 3,148, 4,110, 45,187,195,169, 73, 23,196, 60,204,192,209,171,
+113,218, 36,165,126, 67,118,137,166,234,124,123,181,206,182, 93, 80, 80, 35, 29,184,229, 0, 0, 32, 0, 73, 68, 65, 84,128, 38,
+ 77,154,224,209,197, 1, 62,119, 14,181,241,243,179,223,232,215, 16,171,125, 46, 94,188,136,213,171, 87, 63, 79, 74, 74, 90,211,
+178,101,203, 89,181,113, 70, 71, 71, 47, 74, 75, 75,235, 48,119,238,220, 51,243,211, 11,145,183,120, 51, 10,191, 26,131,140, 62,
+237, 96,101,101, 5, 71, 71, 71, 20, 23, 23,227,202,149, 43,136,137,137, 57,163,213,106, 59, 68, 71, 71, 47,170,141,147,227,184,
+ 91, 94, 94, 94,143, 59,117,234,100, 93, 80, 80,176,126,204,152, 49,210,226,226, 98,228,228,228,224,217,179,103,184,125,251,246,
+121,189, 94,239, 83,135,104, 41,231,100, 89,182, 92, 92,189, 42,206,138,120, 85,156, 50,153,108,246,209,163, 71,173, 72,146,132,
+ 88, 44,134,173,173, 45,210,210,210,176,120,241,226, 98,141, 70,243,150, 90,173,182, 52, 64,103,141,245,206,178, 44, 24,134, 1,
+199,113, 16,137, 68,133, 0,144,153,153,153,248,228,201,147, 62,199,143, 31, 87, 60,122,244,168, 87, 13,226,170,156, 51, 39, 39,
+ 39,236,233,211,167,144,201,100,152, 58,117,170,104,249,242,229,123,215,175, 95,175, 13, 9, 9,161,251,246,237,187,233,236,217,
+179,173, 53, 26, 77, 79, 11,196,213,255,229, 89,235,121, 78,158,147,231,228, 57,255,105,156,255, 41,212,234, 96, 37, 36,192, 0,
+ 20,125,233,229,101,189,104,229,150,125, 91,246, 30, 58, 60,100,194,240,247, 5,254,237,130,144,156,113, 12, 87, 34, 46, 49,121,
+ 69,220,209, 34, 61, 53, 41, 33,161,168,206,177,255, 2, 1,152,185,243, 71, 10, 0, 64, 40, 4, 51,111,224,192, 48, 31, 31,159,
+ 30,131,124,179,232, 73, 83, 75,157,173, 45, 27, 71,210, 97, 97, 97,135,196, 98,241,182,228,228,228, 66,165, 82, 89,103, 38, 98,
+ 98, 98,238, 2,120,155,162,168,158,179,102,205,250,126, 64, 83,143, 78, 67,186,246,130, 80, 40,196,157, 59,119,144,155,155, 27,
+ 78,146,228, 55,209,209,209, 87, 44, 41,148, 63,254,248, 35, 29, 0, 74, 74, 74,150,180,108,217, 82,148,144,144,128, 71,143, 30,
+ 33, 41, 41, 9, 38,147,233,161, 82,169,172, 87,135, 56,137, 68,114,155, 32,136,184, 87,201, 89, 17,175,138, 83,163,209, 44, 95,
+186,116,233,155,139, 22, 45, 18, 91, 91, 91, 35, 58, 58, 26,139, 22, 45, 42,214,106,181,245, 17, 87,181,130,227, 56, 24,141,198,
+122,141,252,172, 6,223,248,250,250,182, 94,186,116,105,203,178,190, 92,188,115,197,131, 7, 15, 30, 60,254, 61, 2,235, 47,161,
+ 85,148, 7,224,163, 14, 94,214,158,203, 55,255,186, 67, 42, 98,123,104,244,228, 53,141,142,156, 16,157, 80,244,216,210,131, 45,
+253, 9,194,202,107,212,176,179,179,147,165,185,226,185,121, 77, 90, 38,160, 86,171, 87,190, 76,102, 34, 34, 34,174, 0,232,204,
+113,220,144, 83, 4, 49, 15,120, 2,142,227,150, 71, 71, 71, 31,173, 15, 79, 64, 64, 64,147,226,226,226,189, 58,157,174, 3,203,
+178,162,203,151, 47, 67,171,213, 34, 33, 33, 65,195,178,108,104,125,211,149,156,156, 28,247,170, 57, 95, 71, 58,149, 74,229,157,
+ 19, 39, 78,244, 37, 8,226,194, 55,223,124, 35, 94,188,120,241, 43, 21, 87,246,246,246, 37, 25, 25, 25,207,180, 90,173, 67,102,
+102,166,222,222,222,190, 36, 37, 37,229,101,168, 30, 22, 22, 22,182,155, 62,125,250,226, 89,179,102,205,254,254,251,239,105,190,
+207, 21, 15, 30, 60,120,240,248,215, 35, 48,208, 81,102,225,174, 22, 89,136, 11,198,195, 56,103, 44,184, 57, 99,193, 45, 24, 15,
+227,171,224,172, 39, 42,113,182,106,213,234,128,163,163, 35, 67,211,180,142, 36,201, 18,138,162, 10, 5, 2, 65, 6, 73,146,147,
+ 96, 65, 24,139,127, 51, 39, 0,184,184,184,116,244,246,246, 62,160, 80, 40,186,189,138,242,172, 8, 87, 87,215, 55, 61, 60, 60,
+ 14,186,185,185,245,122, 69,156, 1,111,189,245,214, 83,169, 84,122,195,210, 23,134,255,159,231, 18,207,201,115,242,156, 60, 39,
+207,201, 3,252,137,194,115,254, 75, 57,137,151, 16, 87,124,121,242,156, 60, 39,207,201,115,242, 2,235,181,129,228,139,128,199,
+127, 0, 28,248,102, 65, 30, 60,120,240,224,241, 15, 2, 81,139, 10,173,207, 76,217, 47,163,100,239,241,156, 60, 39,207,201,115,
+242,156, 60, 39,207,249,127,142,179, 46,238,123,224,241, 90,132, 23,207,201,115,242,156, 60, 39,207,201,115,242,156,255,247, 56,
+255, 83,224,155, 8,121,240,224,193,131, 7, 15, 30, 60, 94, 49,234,221, 49, 56, 32, 32,160, 5, 0,220,185,115,231,225,107, 76,
+215, 20,133, 66, 49,161,125,251,246, 94, 52, 77,147, 5, 5, 5,139, 46, 95,190,188,168,186, 29,219,183,111, 31,241,230,155,111,
+122, 94,186,116, 73, 15,252, 53,255,160,249,219,100, 50,165, 71, 70, 70,118,228,171,250,127, 3, 87, 87,215,179, 18,137,164,113,
+105,128, 81, 14, 12,107,130,137,229, 96, 50,177, 48,154, 56, 24,244,218, 20,125, 73, 97,255,151,226,246, 29,210,200,100, 98, 67,
+ 56,112, 91, 8,142,152,196, 17,220, 22,130, 35, 62,231, 72, 98, 11,193,114,159, 65,192,252, 0, 70, 48, 75,192, 10,231,171, 19,
+ 66,211,254, 11,229, 25, 28, 28, 76,254,205,255, 87, 59,255, 84,135, 14, 29, 78, 72, 36,146,230, 53,253,175,164,164, 68, 29, 27,
+ 27, 27,244, 95, 62, 87, 93, 92, 92,122,146, 36,185, 17,128, 79,149, 77,137, 0,190, 84,171,213,127,254,211,210,236,228,228,116,
+133,162,168,150,197, 37, 37,197,207,139,138, 60,229,114,249, 99,169,149, 76,102, 98, 76, 15,158, 61,203,238,201,223,129,120,240,
+248, 7, 11, 44, 63, 63,191, 86, 0, 2, 9,130, 8,228, 56,174,103,203,150, 45, 93, 74, 74, 74, 96, 50,153, 50, 9,130,184,194,
+113,220,101, 0,151,163,162,162,146, 94, 69,130, 72,146, 92,181,118,237,218,153, 83,167, 78, 45, 23, 73,247,238,221, 67,187,118,
+237,170,221,159,162, 40,143, 21, 43, 86,216,166,166,166,130,166,105,136, 68,162,242, 15, 69, 81,232,210,165, 75,189,142,223,160,
+ 65, 3,107,103,103,231, 69, 4, 65, 12, 37, 73,146,170,107,127,150,101, 77, 28,199, 29,202,202,202, 90,152,151,151, 87, 84,159,
+ 99,117,244,111,103, 4,136, 26,142,193,153, 34, 34,239, 10,107,251,127,171, 86,173, 34, 4, 2,129, 71, 69, 65,105, 70,197,229,
+138,191, 77, 38, 83,122,124,124,124, 71, 75,203, 66, 98,101, 53,155, 32, 5,125,193,177,109, 74,201,200, 68,142,101, 46,104, 75,
+ 74, 86, 89,146, 95,177, 88,220, 56, 50, 42,170,101,252,253, 39,240,108,214, 8,122, 3, 3,157,222,136, 99, 23,238,192,215,171,
+ 41, 6, 13,232,247,210,231, 10,195, 18,193,243,167,140,234,189,124,227,254,128,121, 83, 71,200,151,111,220,223,113,222,212, 17,
+214,203, 55,237,239, 56,127,218, 72,235,165, 27,247,117,156, 63,109,164,237,178,141,251,244, 0,198,191,204, 49,198,181,109, 84,
+ 76,154, 24,113,181,117, 79, 9,116, 59,239,165,202,254, 23, 23,238,242,229,203, 91, 25, 12,134,132,177,195, 58, 46,105,211,194,
+ 57,171,186,125, 10, 10,178,156, 31, 37, 70,124, 11, 33,237,229,213,105, 94,173,215, 39, 77,211,205,174, 92,185,210,210, 28,105,
+223,100, 50,193,100, 50,129, 97, 24,232,245,122,124,240,193, 7,130, 87,145,110,127,127,255,113, 28,199, 45, 43, 61, 45,137,165,
+145,145,145,155,254, 6,157, 92, 32, 16, 76, 23,137, 68,129, 12,195,120, 1,128, 80, 40, 76,208,233,116,151, 25,134, 89, 11,252,
+ 21, 95,207,194,123,207,186,240,240,112,111,107,107,107, 24, 12,134,242,137,225, 41,138,106,211,185,115,231,205, 0, 90, 90,202,
+229,238,238, 30, 65, 16,132, 71,125,142,207,113, 92,186, 82,169,172,215,203, 32, 69, 81, 45,159,166,170,156,155, 52,114,195,243,
+162, 34, 88, 89,201,100,119,238, 37, 59,251,251, 52,225,159,110, 60,120,252, 83, 5,150,159,159,223, 41, 0,129,109,218,180,145,
+246,235,215, 15,126,126,126,104,220,184, 49, 36, 18, 9, 0, 32, 55, 55,215, 37, 62, 62,254,163,232,232,232,143,110,222,188, 9,
+ 0, 26, 0,215,162,162,162,170,117, 35,250, 12,236, 49, 85, 34, 23,175, 7,128,108,229, 51,117,250,227,172,141,106,181,122, 21,
+128,138,111,212,158,163, 71,143,158, 49,109,218, 52,156, 56,113, 2,251,247,239,135, 78,167, 67, 65, 65,205, 83, 28,154, 76,166,
+244,209,163, 71, 11,146,146,146,152,154, 28,172,250, 20,136,179,179,243,162, 97,195,134,125,229,237,237, 93, 62,173,139,209,104,
+ 44,255,206,203,203,195,140, 25, 51,204, 55, 68,176, 44,139,139, 23, 47, 78,253,250,235,175,145,151,151, 55,189, 58,206,190, 61,
+ 61, 35, 4, 4,225,193,254, 37,202,210, 47, 92,125,210, 17, 32,168, 59, 17, 49, 68,149,155, 44, 0,160, 83, 64,135, 58,197,157,
+ 64, 32,240,136,138,138,114,166,105,218,162,188,177, 44, 11, 63, 63, 63,139,246,117,115,115, 11,162, 4,244,254, 33,195, 63,109,
+208,193,207, 79,232,225,166,128,145, 97,240, 36, 57,181, 83, 76,116,100,135,115,199,127,155, 32,145, 72, 70,168, 84,170, 75,181,
+241, 24, 77, 44, 98,226, 30,226,252,181, 40,188, 75, 75, 80,162,213,163,168, 68,143,189,127, 92, 71,122, 86,193, 75,159,184,157,
+ 58,117,114,207,102,244,157,167,141,127, 79,246,195,143,123,100,211,198,191,135,213, 91,246,150,127, 79,253,116, 48, 86,253,184,
+ 71, 62,237,211,193,216,184,117, 87,215,166,157, 58,185,135,135,135,215, 56, 45, 64, 77,117, 68,154, 24,241,142,120, 37, 5, 0,
+217, 91,183,194,144,153, 9,183,133, 11, 1, 0, 19,125, 60,196,245, 73,179,143,143, 79,185, 32,174, 85, 56, 50, 76,122, 92, 92,
+ 92,199,186,196, 21,195, 48,156, 64, 32,248,246,234,233, 69,161,221, 58,181,170, 84,152, 73, 15,146,108,131,191, 91,248,225,193,
+ 51, 69,220, 71,111, 89, 39, 36,132, 47,175, 85,100,177, 44, 75,234,116, 58, 60,120,240,160,218, 40,251, 36, 73,154, 94,166,158,
+ 2, 3, 3,197,197,197,197,251,228,114,121,251,226,226,226,113, 44,203,126, 23, 22, 22,230, 66,146, 36,250,246,237,251,157,191,
+191,127,178, 88, 44,254, 81,171,213, 70,203,229,242, 17,151, 47, 95,214, 89, 72,221,211,218,218,122,239,239,191,255,222,192,207,
+207,143,204,201,201, 65,211,166, 77,145,155,155,219,233,202,149, 43,254,159,126,250,233,167, 69, 69, 69,163, 1, 92,169, 71,114,
+ 91,203,100, 50,110,204,152, 49,132,201,244, 87,118,127,254,249,103,248, 55,207,108,222,175,131,164, 68,107,224, 10,174,198, 74,
+ 62,231, 72,238, 90, 74, 74,205, 55, 38,130, 32, 60, 22,237,248,210, 89, 36, 18,193,104, 52,150,127, 56, 22, 0, 7,112, 44,192,
+177, 28, 56, 14, 0, 71,128, 53,177, 88, 61,119,199, 75, 95, 15, 86, 50,153,149,139,139,107,166,212,202,202,138,227,159,107, 60,
+120,252,227, 29,172,183,195,194,194,192, 48, 12,172,173,173, 65, 81,149,159,247,246,246,246,232,217,179, 39, 58,119,238,140,190,
+125,251,226,254,253,251,210,239,191,255,190, 70, 59, 98,228,204,129,104,216,210,197, 44, 34, 20, 87, 79, 68,133,252,180,232,176,
+163, 90,173,174, 56,215,224,184,137, 19, 39, 18,207,158, 61,195,208,161, 67,175,232,116,186,193, 0, 10,107,203, 64,108,108,108,
+199,216,216,216, 87, 86, 32, 4, 65, 12, 85, 40, 20, 56,112,224, 0,244,122,253, 11,219,109,108,108, 16, 23, 23, 87,241, 13, 18,
+ 29, 58,116,160, 8,130, 24, 10,160, 90,129, 69, 18,132,199,233,176,135,229,243, 52, 14, 27,212,129,238,215,211, 51,243,185,214,
+200, 1, 32,230,207,159, 95, 46,174, 56,142,195,226,197,139, 45, 78, 47, 77,211, 72, 76, 76, 4, 69, 81,120,220,163, 21, 0,160,
+109, 84, 26, 40,138, 66, 76,123, 55, 0, 64,215, 7,121, 16, 8, 4,144,203,229,150,138,171, 94, 46, 10,143,223,231, 46, 12,177,
+214, 26, 57,156,188, 24,142, 84,213,121,112, 28, 7,133,179, 61,186,249,251, 9,189,218,181,119,222,185,121,213,239, 0, 6,171,
+ 84,170,176,154,197,130, 9, 94,173,154, 97,247,239, 87,176,236,199, 80, 60, 43,212,162,168,164,180, 92,251,118,245,198,207,171,
+ 95,174,158, 40,138, 90,213,166, 89,179,134,187, 15,158, 69,183, 46,157,176,251,224, 25,116,237,210, 9,187, 15,149, 46,239, 57,
+116, 22,111,116,237,140, 61,135,206,162,173, 87,203, 70,207,158, 22,172, 2, 48,188, 70,247,162,106, 29, 13, 46,173, 35, 65,190,
+137, 48,215,205,211, 73,147, 74,203,167, 76, 96,213,251, 98, 43, 19,196, 22,184,198,117, 58, 87, 12,195, 32, 43, 43,139,200,207,
+207,231,236,236,236, 62,172, 40,178,204,226,234,183,211,133,208, 36,109, 36,126,253,245, 50,251,241,199,129, 9, 9,225,203,189,
+ 80,218,220,245, 2, 12, 6, 67,242,155,111,190,201, 1,128, 94,175,119, 23,137, 68,116, 21, 1,230,214,173, 91,183, 23, 4, 90,
+ 93, 77,135,197,197,197,251, 14, 29, 58, 52,196,197,197, 5,131, 7, 15, 62,231,237,237, 45,178,178,178,194,233,211,167,225,225,
+225,225,104, 99, 99,115, 42, 36, 36, 4,107,214,172,105,116,238,220,185,253, 0,134, 88, 80,148,125,131,130,130, 14,156, 56,113,
+ 66, 66,211, 52, 52, 26, 13,226,226,226, 96,107,107, 11,145, 72,132,193,131, 7, 83,221,186,117,115, 8, 10, 10, 58,156,148,148,
+ 52, 2,192, 5, 75,235, 72,163,209,112,115,231,206,133,149,149, 21,100, 50, 89,249, 71, 42, 50, 17, 91,130,155, 73,191, 90,145,
+ 33,157,255,245,199, 43,182,239, 60,126,137,101,185,239,210,210, 10,243,107,226,242,160,218, 97,206,172, 57,102,129, 10,145, 72,
+ 84,201,101, 55,255,166,105, 26, 29, 58,116,168, 51,109,109,218,180,217, 74, 81,148, 83,197,117,121,121,121,212,183, 11,230, 49,
+119,227,238,203,140, 12,100, 90,189, 17, 75, 23,127,199, 80, 36, 69,249,248,248, 28,229, 56, 46, 59, 62, 62,254,115,254, 81,199,
+131,199, 63, 75, 96, 65, 46,151,227,206,157, 59, 32, 8, 2,214,214,214,176,177,177,129,173,173, 45, 10, 11, 11, 17, 31, 31,143,
+196,196, 68, 36, 39, 39,131, 36, 73,120,122,122, 2, 47, 70, 15, 47, 31,106,185,111,245, 9, 72,228, 98, 16, 4, 16,208,175, 61,
+ 58,246,246,197,189,219,143,191,188,115, 14, 59,212,106,245, 3, 0,130,182,109,219,126,218,165, 75, 23,172, 89,179, 6, 58,157,
+110,109, 13,226,234,133,225,155,159,189, 39,184, 74, 11,200,134, 6,134, 77,219,246, 59,243,134,175,175,111,132,159,159, 95,211,
+187,119,239, 26,205,110, 86,213,102,178, 42,253,178, 42,113,230,228,228,128,101, 89,139, 93,161,252,252,106,239,177,247,170,186,
+ 82,102, 44, 13, 89, 99, 87, 84,144,133, 37, 43,127,129,209,104,196,204,153, 51,193,178, 44, 88,150,133,201,100, 66, 94, 94, 94,
+105,100,167, 58,242,110,206, 19, 69, 81,149, 4,112, 93,203,181,113, 58, 58, 58,202, 72, 74,184,127,214,252, 37,214,177, 73,233,
+ 56,113, 49, 28, 28,199,225,216,246,239, 0, 0,131, 39, 46,134, 82,157,141,110,254,109, 48,246,179,233,214,235, 66,230,239,119,
+116,116,108,158,147,147, 83, 92, 29,167,145, 97, 17,122,230, 38,212,207,158, 99,244,144,222,208,233,141,200,202, 84, 99,215,143,
+ 63,224,139, 79,142,160,129, 92,234, 42,117,106,150, 84,177,140,172,173,173, 41,173, 86,123,229,193,131, 7,227,107, 74,167,209,
+104,124,123,238, 87, 19,176,110, 71, 40,124, 60, 93,112,226,252, 45, 4,180,109,140, 83, 23,195,209,181, 93, 83,156,185, 28,129,
+110,190,158,184,116,243, 30,190,252,252, 99,204,254,242,202,219,245,170,163,229,107,236,138, 10,179,112,114,249, 30,100,109,218,
+132,148,169, 83, 17, 80,118, 78,220, 33, 73,208,238,238,128, 77,221,229, 89, 29, 18, 19, 19,161,211,189,104,212,136,197, 98,180,
+105,211,166, 86, 78,179,115,149,153,153, 73,100,102,102, 66, 38,147, 17, 9,113,247, 76, 94, 62,109, 63, 52,229, 30,220, 1, 0,
+165,206, 85, 33, 74,238,111,128,230,193, 70,208,249,119,201,237,139, 63,211, 79,252,110, 91, 66,133,107,244, 94,149, 23,149,242,
+242,233,220,185,115,226,181,107,215, 90, 87,112,129,193, 48, 12,205, 48, 76, 75,115,179, 33,195, 48,208,233,116, 24, 49, 98, 4,
+ 85, 91,222,165, 82,105,123, 23, 23, 23,220,190,125, 27,193,193,193, 34, 31, 31, 31, 60,120,240, 0, 36, 73, 98,220,184,113,240,
+246,246, 70,118,118, 54, 2, 2, 2,112,245,234,213, 14, 22,148,167,181, 76, 38,219,121,252,248,113, 9, 73,146, 40, 42, 42, 2,
+203,178,232,222,189, 59, 8,130,192,221,187,119,177, 96,193, 2, 28, 57,114, 4,191,255,254,187,212,223,223,127,103, 73, 73,137,
+ 23,128, 34, 11,234,136,211,233,116,156, 68, 34,129, 68, 34,129, 88, 44,134, 88, 44, 6, 77,211,208,232, 41,124,182, 48, 89, 39,
+ 20,203,217,246,237, 60,155,127, 49,113, 8,185,100,197,174,139, 0,142,213,196,169,226,226, 96,239, 67,224,220,174, 8, 12,158,
+212, 19,180, 80, 4, 90, 72, 67, 68,139, 32, 44,251, 77, 11,105,136,132, 98, 80,142,218, 58,207, 37,161, 80,232, 24, 21, 21,101,
+ 87,241, 90,102, 24, 38, 97,234,212,169,158, 67, 6, 13,116, 57,120,228, 4, 53,106,216, 96,147,171,139,115, 78, 90, 90,202, 67,
+ 0,118,254,254,254, 92,125,207,207,151, 0,207,201,115,190,118,112, 28, 23, 0,160,226, 11,134, 30,128,200,252,216, 46,187,183,
+ 57, 84, 89, 15, 0,217,101,223, 78, 53, 44,231, 0,136, 7,224, 85,182,206, 4, 32,156, 32,136,188,191,155,102,179,192,170,120,
+ 17, 18,213,100, 12,133,133,133, 40, 44, 44, 68, 90, 90, 26,182,108,217, 2,161, 80, 8,129, 64, 0,129, 64, 0,146, 36,203,251,
+ 43,212,132, 63, 79, 92,219, 8, 96,163,159,159,159,240,167,155,161,167,230,239,254,178, 79,231,126,254, 84,196,249,187, 31, 2,
+ 88, 10,224,237, 49, 99,198, 56, 2,192,158, 61,123,114, 0,156,182,216,197, 17,144, 13, 55,172,255,165,209,180, 47, 71,153, 5,
+133,199,142, 29, 59, 26,164,167,167, 87,122, 75,164,105,186,206,126, 89, 28,199, 29,122,248,240,225, 87, 10,133,162,252, 65, 82,
+177,153,144, 97, 24, 72, 36,146,114, 49,164,211,233,176,111,223, 62,134,227,184, 67,181,112, 34, 41,238, 79, 60,136,187, 4,147,
+137,173, 36,166,180, 90, 45,130,131,131,203,221, 43, 0,152, 84,230,148, 88,138,218,156, 43,138,162,112,205,179, 84, 9, 12,200,
+230, 94,232,171, 85, 21, 66,145,100,230,128,247, 63,182,103, 56,170, 92, 92,149,230,161, 84, 92,136,132, 2, 72,197, 66, 60,120,
+156,134,166,238,254,232,243,214,123, 13, 46,156, 58, 60, 19, 64,181,131, 16,140, 38, 22, 3,122,249,227,199, 3,151, 80,248, 92,
+139,194,252, 92,228,164, 37, 34, 33, 54, 28, 34,145, 8,183,110,221,178,182,181,181,179,110,214,172, 41, 76, 38, 22,215,110, 69,
+192,202, 74,138, 3,251,127,109,170, 51, 24,145,250, 52,121,124, 13,194, 86,208,173,163, 23, 10,115, 82, 33, 16, 8,208,205,175,
+ 57, 4, 2, 1,186,251,183, 4, 69, 81,232, 17,208, 26, 20, 69, 33,176,179, 55,154, 55,111, 14,150,101, 5,117, 92,188, 72,186,
+247, 39,146,226, 47,129, 99, 89,152,216,210,230, 95, 14,128, 65,173,126, 49, 95, 25, 25,224,108,156, 95,230, 38,129,111,190,249,
+ 38, 95,165, 82, 25,170,113, 14,233, 35, 71,142,216,213, 54, 17, 54, 77,211, 94, 2,129, 32, 33, 55, 55,151,181,178,178, 34, 77,
+ 38,134,245,242,105, 75, 93, 61,189,168,124,238,201,224,197,139, 66, 63,122,203,230,195, 95,118, 29,231,104,167,238, 4, 65,137,
+153, 9,223,109, 19, 65, 72,123, 1, 6, 75, 94, 26, 72,157, 78,135,251,247,239,215, 57, 41, 55,199,113,181,158, 80,197,197,197,
+ 99, 7, 15, 30,124,238,243,207, 63,151,152, 95, 94, 4, 2, 65,185,232,127,244,232, 17, 72,146,196,246,237,219,161,211,233,234,
+ 60,241, 5, 2,193, 87,135, 15, 31,182, 21,137, 68,229,226,138,227, 56, 80, 20,133,196,196, 68,172, 94,189, 26, 99,198,140, 65,
+106,106, 42, 20, 10, 5,102,206,156, 41, 95,177, 98,197, 87, 6,131,193, 18, 91, 56, 86,175,215,119,148, 74,165, 16,139,197, 48,
+ 11, 45, 0,136,124,228,114, 47, 57, 57,185, 93,163, 70, 50,215,166,222,119,255,232,213,163,189,175,131,131, 93,215, 39, 41, 5,
+199,106,124, 65,125,222, 8, 69, 73, 2, 4, 6, 6,226,242,229, 43, 24, 56,112, 32, 76, 52, 13, 86, 36, 2, 43, 18,129,163,105,
+ 64, 36, 2, 33, 18,129,179,178,178,232,244,161, 40, 10, 25, 25, 25,149,214, 77,156, 56, 49,229,227,143, 63,118, 6, 56,168, 84,
+ 74,110,250, 87,211,148, 57, 57, 57,156,139,139, 11,111, 33,240,248,183,161, 54, 45,226, 68, 16,196,137, 10,247,158,129,230,229,
+ 57,115,230,204, 11, 9, 9,137, 35, 8,226, 68,197,245,230,253,202, 12,137, 19,213, 45,151,253,215, 97,238,220,185,109, 87,172,
+ 88,177,188,107,215,174, 7,110,220,184,241, 4,192, 43, 19, 88, 68, 89,198, 44,154,191,174,186,135,116, 93, 2,203,140,168,168,
+ 40,163,155,155,219, 79,137, 17, 79,250,180,238,216, 18, 82,153,184, 31,128,141, 98,177,120,250,232,209,163,113,235,214, 45,220,
+187,119,239,103,212, 35, 50,183,129, 97,211,166,125, 57, 10, 6,134, 77, 51, 59, 84, 51,103,206,164,175, 93,187,102,168,201,193,
+170,137, 43, 43, 43,107, 97,120,120, 56,106,235,228,254,209, 71, 31, 85,124, 24,149,119,114,175,241,140, 97, 57, 24, 12, 70, 20,
+ 23,107, 74,133, 85,217,195,219,100, 50,161,184,184, 24,195,134, 13, 43, 23, 93, 44,203, 34, 43, 43,235,165, 42,147, 36,201,250,
+ 56, 87,213,115, 80, 84,255,246,190,126,194,139, 55, 98, 43, 61, 92,223,251,108, 41, 68,116,169,184,146, 74,104, 72,197, 66,164,
+169, 50,209,198,203,135,190,124,254, 68,255, 26, 5, 22, 99,194,198, 95,207, 3, 4,129,208, 19, 23,209,177,169, 21, 22, 45,248,
+ 6, 67,135, 14,133, 72, 36,193,225,195,135,176,106,243,110, 76,106,220, 24, 28,128,206, 29, 59, 96,229,214, 3, 88,178,120, 49,
+121,232, 96,104,143,186,210, 43, 20, 10, 65, 81, 84,249, 67,187,234, 55, 69, 81,117,138,132,242, 58, 50, 26, 81, 82,172,129,137,
+101,193,178, 28, 56,150, 5, 56, 14,238,203,150,193,125,217, 50,220, 33, 75, 7,240,121, 23, 23, 67,163,209, 0,189,218,215, 91,
+ 92,233,245,122,168, 84, 42, 67,108,108,108,117, 79,191, 76,189, 94, 95,107,122,231,205,155,151,180,124,249,114, 47,123,123,251,
+132,216,216, 24, 99,251,246,190,194,170,125,176, 90,181,108, 85, 16,188,120, 81,232,168, 79,222,253,112,235,130,225,204,231, 11,
+247, 10,204, 29,221, 67,207, 4,215,125, 61, 25, 12,201,125,251,246,181,168, 43,143, 70,163,201,168,105,155,185, 67,123,171, 86,
+173,196,189,123,247,198,149, 43, 87,176,108,217, 50,150, 97,152, 28, 0,232,214,173,155,211,146, 37, 75,136,248,248,120,216,217,
+217, 33, 43, 43,107,183,191,191,255,146,218, 58,190,139, 68,162, 94, 1, 1, 1,164, 78,167, 43,127, 41, 33, 73, 18,137,137,137,
+ 88,177, 98, 5, 70,140, 24,129, 86,173, 90,149, 95, 91, 65, 65, 65,194, 13, 27, 54,244,178, 68, 96,145, 36,249,101,159, 62,125,
+126, 64,233, 40,194,138, 55,185, 4, 0,179, 1, 32, 53,245, 89, 70,100,100, 82, 92,159, 64,191,142,205,155,186, 43,194, 35,159,
+214,200,247, 76,248, 8, 10, 63, 41,104, 33,141, 49, 95, 15,194,137, 19, 39, 48, 57,248,227, 50, 39,171,212,193, 18, 10,105,208,
+ 66, 17, 68, 78, 47, 55, 17, 65,217,125,132,176,177,177, 5, 0,216,218,218,154,239,113, 4, 0,142, 36, 73,190, 75, 22,143,127,
+ 19,234,212, 34,102,129, 84, 85,104,133,132,132, 12,172,186,174,162,152,170,238,119,197,255,174, 88,177, 98,121, 5,238,146, 87,
+145, 25,193,171, 42, 21,163,177,246, 57,154,131,130,130,166, 90, 91, 91,175, 55, 47, 63,189,174,196,211,235, 74,120,181,246,233,
+238,231,219, 49,127,196,136, 17,112,112,112,192,236,217,179, 57, 0, 59,235,115,236,109,191, 51,111, 84, 92,142,137,137,233, 24,
+ 19, 19,243, 82,249,200,203,203, 43, 42,235,172, 62,253, 21, 90,155, 48, 26,140, 40, 46,209,194, 96, 48,192,104, 52,129, 97, 76,
+240,247,182,198,222,109,223, 64,175, 55,192,104, 42, 93, 87,234,148,153, 32,166,117,232,217,217,195, 8,130,212, 92,185,149,106,
+ 83, 27,191, 79,100, 42, 40,138, 66,172,175,123,181,206, 85, 63,149,193, 98,161,197,177,166,214, 46, 46,206, 72, 61,115,187,244,
+ 45,220, 74,130,179,123,150, 64,102, 85,250, 38,255,246,152,121,165, 34, 75, 76,195, 96,208,195,217,165, 9, 24,147,177,117, 77,
+124,140,209,160,111,223,210, 29,118,214, 82,196,220,185,137,233, 83,198, 99,220,184, 79, 65, 75,172,113,249,242, 37,164,170,178,
+240, 40, 61, 15, 83, 22,254, 8,163,209, 4, 3, 99,130,145, 97,177,110,215, 9, 24, 76,117, 43, 35,154,166, 49,115,230, 76,105,
+ 77,219, 15, 28, 56,160,177, 72, 96,113,101, 34,184, 68, 3,157, 86, 7,189,161,180, 46, 76,205,132, 88,186,224, 99, 24,141, 70,
+104,134,119,133,193,104,132,233,203, 33, 48, 24, 12, 72,179, 18,144,221,253, 21, 70, 16,164,230,122,132,210,198, 82,129, 85, 83,
+122, 56,142,171,182,233,176, 38,145,213,190,189,111,194,152, 97, 29, 67,174,223,184,147,125,253,198,157, 23,246,107,214,170,227,
+227,207,151, 30,152,107,201, 40,194, 74, 54, 78,133,230,194,191,121,222,127, 23, 22, 22,230, 34,151,203,145,148,148, 4,138,162,
+ 64, 16,196,179,168,168, 40, 23, 0,120,231,157,119,114,132, 66,161, 3, 69, 81,248,234,171,175, 64, 81,148,211,228,201,147,191,
+ 5, 80,163,192, 98, 24,198,203,218,218, 26, 69, 69, 69,229,229, 40, 18,137, 48,103,206, 28,140, 26, 53,170, 92, 92,137, 68, 34,
+236,222,189, 27,254,254,254,208,235,245, 94,150,164, 87,169, 84,222, 1,240,134, 5,162,166,180, 95, 30,203,214,122, 98,201,139,
+ 27, 66,155, 44,130,137,166,113,224,216, 49,140, 26, 53, 10, 34,145,184,220,185, 2, 77,131, 16,137, 64,210, 52, 76,148,184,222,
+229,203,178, 44, 10, 11, 11,169,221,187,119, 55,243,241,241, 33, 56, 0,109,218,120, 19, 39, 78,158,108, 36,151,203,159,216,219,
+219, 27,192,131,199,127, 77,129, 85, 16, 72,175,130,107,206,156, 57,243, 0,112,115,230,204,153,103, 94, 14, 9, 9,209, 0, 80,
+253, 99, 4, 86, 93, 14,214,154, 53,107,106, 12,181, 96,126,184,108,216,176, 1,123,247,238, 93, 3,224,113,125,142, 61,113,176,
+224,182,149,148, 86,148,104, 12,234,237,199,152,206,237,219,183,143,232,218,181,107,179,136,136,136, 26, 29,172,154, 98, 99,189,
+142, 48, 13, 28,199, 65,111, 48,162,164, 68, 3,173, 94,143, 25,223,108,182,168,238, 13,250, 34,193, 59,111,245,148,214,229, 36,
+ 90,210, 7,171,174,166,193,202, 98,153,129, 89, 3, 60, 47,209, 34,104,196, 28,220,249,163, 84, 27,155,197,149, 84, 44,132, 68,
+ 36, 4, 73, 0, 68, 45,198,167, 81, 83, 56,232,235,169,227,175,110,249,121,175,199,123, 61, 39, 96,218,180,105, 16,136,172,208,
+192,193, 9,140,137, 67, 35, 55,103, 60, 74,207,195,225, 77,223,148,121,195, 28,122,142, 12,198,154, 5, 19,176, 42,184,238,183,
+122,138,162,176,105,211, 38, 77, 85,215,170,162,147,101,169, 8, 54,187,140, 26,157, 30,179,230,254,104,121, 29,245,127, 67,106,
+105,217, 86, 55,112,194, 82, 1, 86, 85,100, 1,160,128,154, 27,253,196, 14,128, 87,247, 1, 11,254,151, 55, 67,150,101,113,242,
+228,201, 23,220,213,170,117,104,169,219,202,178, 44, 82, 82, 82,112,239,222, 61,116,237,218, 21, 5, 5, 5, 16, 0,152,121,247,
+ 46,188, 71,143,134,174,172,235,130, 72, 36,194,196,137, 19, 95,215, 59,118,169,192, 34,106,175,168, 98,171,116,184,180, 21, 99,
+231,138,163,152,186,120, 12,156,218, 72,176,122,238,246,242,237,171,126, 10, 46,235,135, 37,130, 68, 94,255,100, 20, 22, 22, 10,
+126, 88,189,186,125,231, 78, 93,164,163,198,140, 35,245, 12,139,165,223,175,167, 14,238,223,227,176,103,207, 47, 82,137, 68,146,
+192, 63,142,121,252,215,240,170,196, 85, 85, 7, 43, 36, 36, 36, 46, 36, 36,228, 5, 55,236,181, 10, 44,138,162, 80,113,200,114,
+117, 15,121, 75,250, 96,205,152, 49, 3,214,214,214,213,110, 51, 24, 12, 92,108,108,108,188, 90,173,222, 81,219,219,107, 77, 16,
+ 9, 73,151, 53, 63,236,242,152,246,229, 40, 22, 40, 29,173,181,121,243,102, 59,115, 31,172,138,253,176,234,234,131,229,236,236,
+188,104,229,202,149,211,222,126,251,109,146, 36,201, 74, 15, 63,115, 88,134,138, 31,163,209,136,227,199,143, 79, 11, 9, 9,169,
+ 49, 76, 3,199,149, 54, 63, 21,151,104,160,213,149, 62, 96, 31,221, 11,181,244, 12,168,219,113, 40,115,174,186, 36,229, 86,235,
+ 92,157,113, 41,125,112, 13,200,174,155,139, 32,169,164,228,148,180, 78,174,142,118,200, 43,120, 14,113, 89,179,160, 25,102,113,
+ 37, 21,211,104, 96, 43, 71,238,179, 44, 8,133,194,218,220,145,148, 44,117,202, 27,195,134, 12, 56, 71, 82, 2, 73,197, 13, 66,
+169,141,213,249,235,119, 27,100,230,149,128,173,144, 79,150,227, 48,117,137,101, 38,166, 80, 40,196,228,201,147,107, 20, 56,199,
+142, 29,211,212, 95, 96,233,234, 87, 71,245,112, 50,235,114,176, 44, 21, 88, 85, 97, 30, 93, 72,211,180, 87,153,248,178, 24,237,
+219,183, 63,109,101,101,213,212,210,253, 45, 13, 58, 74, 16,196,226,222,189,123, 47,243,240,240,112,254,252,243,207, 9,129, 64,
+128,142, 29, 59, 58,246,237,219,183, 0, 0, 90,183,110,109,109,190,199,172, 91,183, 14, 9, 9, 9,217, 4, 65, 44,169,245, 90,
+ 23,137, 18,109,109,109, 59,246,238,221, 27, 5, 5, 5, 72, 77, 77,133, 92, 46,135,247,234,213,184,251,197, 23,240,221,186, 21,
+100,239,222,165, 2, 83, 44,198,221,187,119, 33, 22,139, 19,181,218,106, 59,145,195,205,205,173, 51,199,113, 43, 1,116,199, 95,
+205, 18, 28,128,235, 4, 65,124,173, 82,169,110,191,240, 39,146, 32, 75, 95,212,106,175, 40, 81,129, 11,116,105, 98,140, 29, 59,
+ 22, 52, 45, 2, 68, 34,204,154, 53,171,194,253, 72, 4,170,172, 63, 22,107, 18, 89,242,182,205, 85, 17,235,132, 88, 36, 18,143,
+249,228, 83,242,235, 89,211, 89, 35,195,176, 2,129,144,156, 57,127, 57,249,224,254, 61,113,113,113, 49, 73,212,231,205,138, 7,
+143,127,137,131, 85, 81,104, 85,112,161,106, 66,118,197,126, 89, 53, 9,180,138,125,178, 0,232, 94, 69, 90, 5,149,222,203, 42,
+227, 65, 76, 76, 76, 75, 31, 31, 31,164,166,166,214, 52, 82,174,116, 8,179, 84,138,135, 15, 31, 2,192,131,154, 14,116,233,210,
+165,141, 0, 54,154,151, 21, 10, 69,215, 94, 67,123, 93,247,237,237,135,208,181, 7, 11,212,106,181, 47,254,138,137, 69,184,185,
+185,141, 18,138, 4, 31, 53,111,219, 40,208,196,178, 43, 47, 29,191,190,168, 38,238,170,125,176, 24,134,121,233, 62, 88, 4, 65,
+ 12,125,251,237,183,201,248,248,120, 12, 27, 54, 12,191,252,242, 75,141,133, 55,106,212, 40, 28, 56,112, 0,253,251,247, 39, 87,
+172, 88, 81, 99,152, 6,142, 3,140, 6, 6,197, 37, 90,104,181,186,215,118,226,253, 93,231, 10, 0, 56,150,185,112, 55, 58,178,
+ 67, 59,255,174,194,228,180, 12, 72, 68,194, 74, 2,203, 74, 76, 67, 34, 46, 93,231,234,212, 0,225, 55, 46, 27, 24,198, 88,215,
+ 48,248, 20,131,246,249, 11, 65, 26, 57,130, 74,234,215,189, 93,131,106, 29,207,185, 99,208,238,183, 53, 22, 9,172,159,127,254,
+ 89, 83,147,123,101,105, 25,112, 28,202,155, 8, 75, 52,175,182,142,156,157,157,157,156,157,157,183,216,217,217, 73,204,125,135,
+170,219,110,107,107, 43,169,205,225,170, 75, 92,149,197,197, 74, 88,190,124,121,189, 68,150, 72, 36,106,122,253,250,245,150,230,
+126,129,181,125,235,245,122,124,244,209, 71, 22,217,130,145,145,145, 59, 59,116,232,240,200,201,201,233,124,183,110,221,196,241,
+241,241, 88,186,116, 41, 33, 20, 10,109,204,215,101, 81, 81, 17, 4, 2, 1,242,242,242, 64, 16,196,216,200,200,200, 51,181,113,
+234,116,186,176,176,176,176, 14,131, 6, 13,162, 18, 18, 18, 32, 16, 8,192,178, 44,116, 93,186,192,119,235, 86,220,155, 62, 29,
+ 61,147,147,161, 51, 26, 33,145, 72,112,230,204, 25, 67, 73, 73, 73, 88, 45,121,223,126,243,230, 77, 31,137, 68, 2,131,193, 0,
+150,101, 65,146, 36, 65, 81, 84, 15, 31, 31,159, 13, 0, 2, 42,238,223,164,137,147,115, 71,223, 86,173, 77, 44,107, 82,170,178,
+179,107,117, 43,173,179,225,228, 37, 46,239,111, 69, 11,105,208,130, 82, 97,101,118,174,104, 33, 13,154, 22, 65, 44,178,168, 9,
+159,171,122,238,152,251, 94,201,100, 86,108,139, 22, 45,226, 31, 60,124,228, 13,128,180,181,181,179,184, 95, 44, 15, 30,255, 52,
+ 13, 85,155, 80,170,120,137, 85, 88,206, 6, 64,148, 45,103, 87, 16, 82,217, 4, 65,220,225, 56, 46,160,202,190,230,237,250, 42,
+223,230,237, 49,175, 34, 35,181,221, 40, 7,140, 31, 63,126,235,155,111,190,217,103,230,204,153,144,203,229, 80,171,213,229, 23,
+173, 72, 36, 66,195,134, 13,161,209,104,112,229,202, 21,228,231,231, 95, 4,240,153,165, 7, 86,171,213,183, 30, 70, 63,120,214,
+ 99, 80,103, 7,175,206,173,237,210,147,210,187,168,213,234, 27, 0, 8,119,119,247,159,134, 79,127,251,147,160,247, 59,129, 22,
+ 9,145,246, 48, 3,151,142, 95,175,145,171,106, 31,172,191, 19, 27,139, 36, 73,138, 32, 8, 12, 27, 54,204,162,253,135, 15, 31,
+142,203,151, 47,163,182,230,196,210, 38, 66, 3, 74,138, 53, 40,121,133, 2,139, 32, 8,152, 76,166,114,231,202,252,233,167, 50,
+128, 36,201,114, 97,241,118, 22,107, 49,167,182,164,100,213,213, 11,199, 38,182,246,110,239,212,213,175, 21, 30, 60, 73,195,170,
+121,127, 53,181,204,154, 52, 28,187, 15, 28,135,155,171, 3,116,154,231, 56,123,234,120, 65, 97, 97,225,170,151,205,195,238,163,
+151, 1, 0,111,140,172, 60, 70, 96,216, 87,235, 44, 59,129, 5, 2,140, 27, 55,174, 70, 7,235,252,249,243,154,138, 78,100, 93,
+117, 84, 92,172, 69,137, 70,243,202,234, 72,161, 80,248, 6, 4, 4,156,223,182,109,155,131,163,163, 35, 84, 42, 85, 37,129,165,
+ 80, 40,124, 59,118,236,120,126,219,182,109, 14, 78, 78, 78, 72, 77, 77,181, 56, 68, 72, 21,113,133,236,236,108, 34, 47, 47,143,
+109,208,160, 65,189, 68, 22, 73,146,208,233,116, 72, 72, 72,176,244, 26,177, 56,232,104,211,166, 77,127, 89,191,126,189,248,233,
+211,167, 48, 26,141,136,143,143,127, 97, 16, 2, 69, 81,152, 51,103, 14,230,207,159,191, 5, 64,227,218,248, 24,134, 89, 59,122,
+244,232,241, 74,165,178,129,139,139, 11,212,106, 53,104,154, 6,199,113, 32,130,130,240,198,147, 39, 48,152, 76,144, 74,165,184,
+127,255, 62,118,236,216, 81,108, 48, 24,214, 86,199,229,233,233, 41, 2,208,146,166,105,124,252,241,199,149,182,237,217,179, 7,
+ 93,189,242, 58,218,117,162,159,155, 56, 90,247, 28, 94,167, 73,146, 36, 58,250,181,106,213,163,107,187,182,113,241,201,143, 84,
+ 89,185,215,107, 21,255, 5, 14, 48,168,196, 0, 77,255,213,223,170,172,207, 21, 37, 18,149,143, 40,228, 68, 34,176, 34,203,130,
+ 5, 87, 20, 77, 4, 65,192,193,193, 65,183,110,237, 42,177, 76, 38, 51, 1,128,181, 92,102, 58,184,103, 51, 28,236,237,117,220,
+203, 88,161, 60,120,252,115,157,171, 59,255,139,255,190, 22,129, 21, 21, 21,245, 4, 64, 95, 0, 35,175, 92,185,178,102,198,140,
+ 25, 78, 61,122,244, 64,110,110, 46, 26, 55,110, 12,133, 66,129,136,136, 8,196,196,196,228,112, 28, 55, 51, 50, 50,178, 58,171,
+167, 45,106,137, 57,163,122,172, 62,100, 40, 41,249,194,183, 71,107, 92, 14,189, 26,226,234,234,250,153, 64, 32,248,114,204,220,
+ 65,159,244,122, 47, 0, 73, 81,201,184,117,238, 46,212,169, 57,181,114, 90,210, 7,171,226,119, 53,125,176,202, 57, 89,150, 53,
+233,245,122,252,246,219,111, 22,137,172,253,251,247, 67,171,213,130,101, 89, 83, 77,121, 55,177, 38,194,218,198, 9,238,141,188,
+ 96,208, 23,131,101, 45,127,179,228,234, 40, 79,134, 97,176,104,209, 34,204,158, 61, 27, 75,150, 44,169, 85,136,108,222, 92,109,
+223,175, 74,156,121,121,121, 69, 98,177,120,212,129,159,215,135,142,156, 48,205,218,163,155, 47,118, 30, 60, 5,163,193, 8,137,
+ 88,128, 6, 54,114,180,104,234, 14,189,182, 4, 63,110, 92, 83,168,213,106, 70, 85,211,247,172,182,122,175,132,177, 67, 2,241,
+253,142, 63,112,117,223, 95, 6,229, 27, 35, 23,226,215, 31,166,194,207,111, 87,173,156, 38,147, 9, 66,161, 16,251,246,237,211,
+212, 52,154,144,162, 40,212, 34,176, 42,213,145,141,141, 19, 60,154,120, 67,175,125,254,202,234,200,193,193, 97,246, 79, 63,253,
+228,160,209,104,144,152,152,136,196,196, 68, 16, 4,145, 80,117,123,113,113, 49,238,221,187,103, 22, 57, 9,150,150,167,217,185,
+202,206,206, 38,212,106, 53,172,172,172,200,216,216, 88,109,251,246,237, 19, 80,214, 71,171,174,188,235,116,186,167,125,236, 87,
+186, 77, 0, 0, 32, 0, 73, 68, 65, 84,250,244,169,201, 49,114, 23,139,197,149,166,108, 50, 7, 29,173,166,169,240,133,116,166,
+165,165, 69,175, 95,191,190, 81,171, 86,173,176,125,251,118,157,181,181,181,104,198,140, 25,160, 40,138, 88,183,110, 29,151,155,
+155,107,152, 51,103,142,232,218,181,107, 40, 46, 46,142,182,224, 30, 82,164,213,106, 39,118,235,214,109,239,233,211,167,165, 45,
+ 91,182, 44,159,233, 97,247,238,221,152, 50,101, 10,164, 82, 41,146,146,146, 48,120,240,224,146,146,146,146,137,168, 28, 3,171,
+156,147, 97, 24, 66, 40, 20,114, 44,203, 98,193,130, 5,149, 2,139, 90, 89, 89, 65, 42, 50, 97,219, 98, 79,217,244,239, 51,100,
+211,190, 24, 61,186,244, 60, 97, 77,113,241,201,143,182,237,252,227, 18, 42, 71,137,127, 33,239,172,109, 1, 28, 91,150, 58, 88,
+ 66,115,204, 43, 90, 92,105,244, 96,105, 28,172,210,184, 88,117,229,189,106, 87, 12,123,123,123,198,223,223, 47, 94,163,209, 80,
+102, 45,229,232,232,120,175,108, 95,174, 97,195,134,250, 23, 79, 79,203,175,205,122,128,231,228, 57,121,212,211,193, 2, 0, 68,
+ 71, 71,239,243,241,241, 57,189, 98,197,138, 21, 71,143, 30,157, 48,109,218, 52,194,198,198, 6,135, 14, 29,226,114,115,115,119,
+137, 68,162,217,183,110,221,122,169,120, 17, 28,199,237,190,118,252,214,164, 17,211,223, 37,166,253, 48,182,123,116,216,189,132,
+246,221, 91,162, 93,183,150,136,184, 24,143,205,243, 14,252,194, 24,153,239, 50, 50, 50, 82,107,227,177,164, 15,150,249, 35, 16,
+ 8,234,140,131,117,244,232,209,105, 3, 6, 12, 32,195,195,195, 95,232,115, 85,177, 31,214,249,243,231, 97, 48, 24,112,232,208,
+ 33,182,182, 56, 88, 44,112,108,237, 15,223,141,249,121,207, 73, 17, 73, 24,112,243,202, 97, 20,228,101,212, 90, 54, 52, 45,196,
+175,251,143, 25, 4, 2,234,126, 45,105, 77,137,140,140,116,248,254,251,239, 41,146, 36,177,121,243,230, 74,206, 85, 85,220,189,
+123,151, 53, 26,141,117,214,149, 90,173, 62,207,178,236,240,173,107, 23,239, 14,234, 63,200,174, 77, 27, 31,129,179,115, 35, 8,
+ 72, 18,249,185,217,184,115,235, 26,115,230,228,239,249,122,189,126,172, 90,173, 62,255,119, 78,192,144,109,191, 87,187,254,131,
+105,107,234,114, 81, 24,163,209, 40,144,201,100, 96, 24,166, 90,113,213,167, 79, 31,233,245,235,215, 53, 6,131, 1, 20, 69,213,
+170,152, 74,235,104,225,152,159,247,190,218, 58, 50,153, 76, 94,121,121,121, 40, 46, 46, 70, 68, 68, 4,183,121,243,230,236,252,
+252,252,121, 21,183,231,230,230,162,168,168, 8,119,238,220,225,182,111,223,158, 93, 88, 88, 56,207,210,242, 51,199,197,202,203,
+203, 99,173,172,172, 72,163,209,104,108,223,190,189,132,166,105, 47, 75, 57, 98, 98, 98,222,170,105, 91,183,110,221, 30, 92,191,
+126,189, 69,197,185, 9, 25,134,161,117, 58, 93,203,193,131, 7,215,121,255,144, 74,165, 35, 14, 31, 62,188, 79, 34,145,180,211,
+106,181,227,179,178,178,118, 3,104, 68, 81, 20, 30, 62,124,152,195, 48,204,208, 5, 11, 22,252, 92, 92, 92,124, 87, 46,151,143,
+180, 48,201,255,143,189,239, 14,143,162,218,223,127,103,102,123, 73,111,187, 73, 72, 32, 13,210, 8, 9, 1, 2,132, 42,157, 32,
+ 40, 32,136, 74, 81, 81, 80,138,128, 20,175,210, 53, 8, 40,136, 10, 2, 34,196, 6,132,166,180, 32, 72, 9, 37,148, 20, 74, 42,
+144, 0,105,155,108,122,219,190, 51,243,251,131, 36, 23, 48,101, 19,245,119,239,247, 58,239,243,236,179, 59, 59, 51,239,156, 57,
+115,230,204, 59,239, 57,231,115,226,178,178,178,166, 4, 6, 6,126,183,114,229, 74,217,192,129, 3,249,174,174,174,232,222,189,
+ 59,178,178,178,112,252,248,113,227,214,173, 91, 53, 26,141,102, 6,128,211, 45,188,116,176, 0, 8,179,217,252,212, 28,166, 66,
+161, 16,124, 62, 31, 26, 61,137, 55, 63,204,214, 50,224,107, 63,217,240,195,113,150, 5, 81,168, 42, 45, 45, 42,174,188,198, 51,
+153,226, 31,169,106, 91,156,235,137, 46,149,162,163,117,112,227,203, 29, 65, 16, 32, 25, 18,132,145, 0, 69, 83,160, 76, 20, 8,
+ 30,239,177,187,101,217,116, 87,172,217,108, 70, 84, 84, 20,142, 29, 59,134,113,227,198,177,104,161,175,200,177, 99,199, 96,137,
+123,203,129, 3,135,255,144,192, 2,128,212,212,212, 74, 0,111, 17, 4, 17, 51,103,206,156, 99, 12,195,240, 25,134, 25,125,243,
+230,205,139,127,230,224, 69, 69, 69, 73, 87,142, 39,126,224,228,102, 27, 61, 98, 74, 95, 4,245,240, 4,109,166,113,249, 68, 10,
+118,127,114,100,111,126, 94,254,116, 60, 61, 87, 97,147,176,164, 15,214,179, 14, 86,115, 92,106,181,122,197,218,181,107,241,241,
+199, 31,183,121, 20, 97,115,219, 36, 36, 22,190, 21,209,157,113, 31,255,124,223,225, 36, 65,176,250, 22,250,217, 16, 4,216,134,
+158, 22, 60, 30,149, 25,127, 45, 63,164,133,252,123,110,246,236,217,191,147, 36,233,249,132, 21,138, 22, 30,246,170,178,178,178,
+ 97,150, 92,155,226,226,226,147,110,110,110,157, 47,196,253,186,236,210,153,147, 3,105,218,232, 67,128,128, 64, 32,184,111,162,
+205,231, 77, 6, 67,116, 65, 65,193,159, 14,196,182,236,173,113,120, 84, 88, 10, 30,143,122, 28,123,170, 62,160,233,193, 45, 11,
+ 16, 22,246, 99,179,251,137, 68,162,147,223,125,247, 93,212,107,175,189, 70,240,120,188,198,102,183,134,243, 39, 73, 18, 87,175,
+ 94,213, 26, 12, 6,236,222,189,155,149, 72, 36, 45, 6,174,253,187,174, 81,109,109,237,140,177, 99,199,238, 1, 32, 2,112,175,
+170,170,234,109,149, 74,149,255,228,250,113,227,198,237, 1, 32, 34, 8,226, 15,235, 91, 67, 67,200, 6, 59, 59,187,244,122,231,
+ 74,220,158,142,238, 45,148,111,170,185,230, 67, 75,154, 10,235,231, 22,124,177, 97,185,123,247,238,171,103,205,154,245,228,100,
+207,241, 0,188,219,145,180,211, 90,173, 54,232,195, 15, 63,156, 39,145, 72, 6,105,181, 90,127, 0,144, 74,165, 25, 26,141,230,
+156,209,104,252, 2, 64,101, 75, 4,217,217,217,134, 78,157, 58,101,153,205,230, 96,103,103,231,198,209,135, 66,225, 99, 55,233,
+106,134,125, 98, 97, 97, 97,143,199,227, 52,175,181,245,229, 49,191, 37, 71,185,185,125, 90, 90,111, 48, 24, 74,174, 92,185, 98,
+127,230,204, 25,138,166,105,196,197,197, 53,190,244, 53,213, 26,152,157,157, 13,131,193,160,227, 30,115, 28, 56,252,103,240,119,
+143, 48,177,200, 66, 84, 42,149,147,196, 50,209,108,207,206,202,144,194, 28,117, 90, 77,165,230, 71,149, 74,181, 29,143, 67,214,
+115,246,233,255, 40,167, 64, 98,117,138,160, 4,158,205, 62,112,104,227, 35,163,182,102,120, 83,156, 61,123,246,116, 19, 8, 4,
+ 27,244,122,253,200,150,162,180, 83, 20,101,150, 72, 36, 39,117, 58,221,251, 77, 76,246,252,127, 46, 63, 87,174, 92,217,164, 37,
+ 97,233, 40,194,149, 43, 87, 50,109, 73,103, 72, 72,200, 57,169, 84,170,108,106,157, 70,163,201,189,117,235,214,176,255,146,252,
+124,114, 4,160,197,156,237, 26, 69,248, 31,186,143,220,220,220,196,214,214,214, 27, 72,146, 84, 90, 40,142, 13,106,181,122, 65,
+ 89, 89, 89, 17, 87, 47,113,156,224,154, 8,255,231, 16,204,113,114,156, 28, 39,199,201,113,114,156, 28, 39,199,249, 79, 3,215,
+ 64,207,129, 3, 7, 14, 28, 56,112,224,240, 23,131,104, 65,133,182,197,250,107,143,146,189,195,113,114,156, 28, 39,199,201,113,
+114,156, 28,231, 63,142,179, 53,110,174,233,241,111, 18, 94, 28, 39,199,201,113,114,156, 28, 39,199,201,113,254,243, 56,255,167,
+192, 53, 17,114,224,192,129, 3, 7, 14, 28, 56,252,167, 4,150,204,197, 63,192,209, 51,100,143,157,123,215, 91,118,238, 93,111,
+ 57,122,134,236,145,185,248, 7,252, 19, 51, 77,169, 84, 74, 20, 10,197,148, 14, 29, 58,156,238,214,173, 91,181,171,171,235,123,
+ 92, 81,106, 59, 6, 0,188, 73,192, 59,175, 1,185,175, 1,185,147,128,119, 6,252,133, 19,144,255,183, 96,245, 59,174, 17,241,
+ 39,167,156, 92,253,142,107,147, 1,216, 86, 46, 84, 58, 92,138,155,248,197,178,119, 92,237,255,162, 67, 90, 57, 59, 59,239,112,
+113,113,121,232,236,236,252,200,217,217,249, 59, 0, 54, 92,137,227,192,129, 3,135,255,127,176,232, 97,102,231, 17,252,134,143,
+151,207,251,171, 87, 44, 35,220, 20, 78, 82,147,153, 54, 62,120,152, 31,184, 98,237,186, 3,133, 66,222,231, 21,185,119,190,109,
+199,177, 9,119,119,247, 73,124, 62, 63, 10, 64,131, 80, 75, 55,153, 76,199,242,243,243,247,193,178,225,214,232,218,181,235, 37,
+138,162, 60,218,114, 96,134, 97, 30,222,186,117,171,127,123, 50,204,213,213,117,162,171,171,235,119, 17, 17, 17,210,208,208, 80,
+ 8, 4, 2,172, 95,191,126, 97, 97, 97,225, 38,203,149,197, 0,158,115,165,253,107, 20,143, 55, 6, 64, 8,203, 2, 32,168, 91,
+140,201,120, 92,109, 87,182, 7, 23, 46, 88, 20, 70, 92,161, 80,124, 64, 16,196,180,250,188,250, 86,165, 82,109,248, 59, 10,137,
+ 82,169,236, 64, 16,196, 32,150,101,253, 73,146,188,205, 48,204,111, 42,149,170,236,207,242,186, 0,111,245,137,140,252, 98,234,
+194,133,148, 54, 62, 30, 95,124,247,221,102, 84, 87, 3,192,215,109, 45, 75,189,122,133, 78,176,178, 66, 20, 1,132,129, 0, 65,
+130, 77, 41,175, 36, 79,220,184,145,188, 15, 22,196, 82,107, 14, 97, 97, 97,199, 1,140,170, 95, 60,145,156,156, 60,186,173, 28,
+ 21,217,204, 71, 34,190,127,191,138,251,231, 62, 2, 48,242,217,245,102,157,120, 42,197,239, 16, 69,177,201,121, 0, 62,251,147,
+217, 42,117,114,114,186,117,228,200, 17,247, 94,189,122,241, 0, 32, 49, 49,241,181,168,168,168,193, 37, 37, 37,193, 0,170,255,
+ 19, 21, 77, 68, 68,132,157,217,108,142,161, 8, 34,130, 97, 24, 91, 0, 32, 73,178,146,102,217,171, 60, 30,111,106,123,131, 21,
+115,224,192,129,195,255, 89,129, 37,115,238, 18,232,231,227,187, 48,238,112, 76,135,202,242, 74,221,215, 27,246, 36,107,121, 66,
+ 77,167, 64, 63,193,150,207, 63,181,125,119,254,162,249, 70,189,233, 90,157, 58, 51,205,210,131, 42, 20, 10, 15,145, 72,116,232,
+131, 15, 62, 8,142,140,140,228, 59, 59, 59,163,184,184, 24,153,153,153,193,151, 47, 95, 30,119,228,200,145,133,122,189,254,197,
+214, 34,184, 3,128, 76, 40,240,218,247,233, 39, 10,161,173, 29, 88,218, 12,219,160,110, 0, 0,150, 97,160, 58,127, 26,140,201,
+ 4,150,161,225, 62,226,249,199,255,179, 44,122,246,236, 41,104, 79,102,185,185,185,185,250,249,249,253,176,116,233, 82,129, 94,
+175, 71, 74, 74, 10, 18, 18, 18, 24,181, 90,189,206, 82, 14,231,224,113,129,100,141,232,192,216,113, 35, 59,142, 30,234, 44,244,
+ 84, 56,129, 97,196,200,204, 49,122,156,190,152, 60,226, 68,220,111,239,211, 1,227, 38,150,164, 31,185,221, 18, 79, 80, 80, 80,
+ 68, 69, 69,197,199, 5, 5, 5, 13,194,111,125,207,158, 61,151, 63,185,205,179,193, 7, 25,134, 1,143,199, 43,214,104, 52,147,
+ 82, 83, 83,147,155,226,253,240, 13,152,204,230,199,229,130,199, 3, 29,243,155,251,225, 65,131, 6,117,154, 49, 99, 6,194,194,
+194,144,152,152, 56, 40, 54, 54,118,222,241,227,199,111,152, 76,166, 19, 34,145,232,252,163, 71,143,218, 53,193,162, 0, 88, 60,
+117,225, 66, 74,254,240, 33,228, 41, 41,120,165,186,154,247, 41,176,184, 45, 2, 43, 44, 44,204,203,193, 14, 7,198,189, 56, 32,
+ 64,161, 8, 20,240,249,142, 96, 89, 22, 38, 83,121,231,146,146,244, 9, 54, 54, 88, 90, 85, 69,141,191,113,227,198, 61, 75,248,
+194,195,195, 93, 24,134,249,134,101, 89, 1, 65, 16,115, 0,140,138,139,139, 3, 77,211, 24, 61,122,244,168,176,176, 48, 47,150,
+101,191,148,203,229,172, 86,171,125, 61, 49, 49,177,184, 37,231,170,242, 62,243,145,138,242, 30,209, 37,124, 26,138,120,167, 70,
+188, 55, 12, 39,109,189,201, 53,203,191, 46,188, 10, 0, 35,188,189,173,170, 10, 36, 75,228,214,193,246, 85, 5,167,151,140,240,
+246,222, 25,151,157, 93,211,222, 27,218,213,213,117, 67, 76, 76, 76,135,136,136,136,198, 32,185,161,161,161,212,250,245,235,221,
+ 22, 44, 88,176,185,162,162, 98,186,133,162,186,179,131,131,195, 41,134, 97,244,105,105,105,157, 27,254,119, 10,121,161,143,131,
+149,236,185,146,138,154,248,178,180, 95, 46, 88,194,213,189,123,247, 25, 4, 77,239,248,252,195,119,169,128,144, 16, 72, 29,157,
+ 97, 44, 44, 68,157,217,100,127,245,102,234,232, 79, 55,237, 40,233,222,189,251,204,164,164,164,239,184, 42,153, 3, 7, 14,255,
+ 24,129, 37, 18, 9,151,174,248,215, 18,162,162,172, 82,107,172,169, 54, 74, 89,131,217, 90, 42, 38,170,213, 37,149, 15,172,165,
+154, 5,243,231,138,151, 44,253,215,210, 58,224, 21, 75,197,149,191,191,255,245,157, 59,119, 58,219,219,219,163,170,170, 10,101,
+101,101,184,126,253, 58, 88,150,197,200,145, 35, 69,221,186,118, 13,251,124,211,166, 4, 0,189, 91, 19, 89, 60, 62,143,224,203,
+100, 56, 56, 32, 12,164, 64,128,241, 25,170,199,226,194,100, 68,220,228, 49, 0, 0, 74, 40,196, 75,119,213, 0, 0,177, 88,220,
+238,204, 98, 89,182,119,223,190,125, 5, 0,176,112,225,194,234,186,186,186,104,130, 32,126, 82,169, 84, 5,150,236,239, 16, 60,
+198,207,209,201,233,194,198,181,111,218, 7,123,121,195, 96, 50, 33, 95, 93, 0, 22, 66, 40,156,101,120,101, 92, 55, 65,223,112,
+129,239,103, 95,255,126,158, 32,159,239,175, 78,253, 53,181, 89, 97, 41,147,197,108,222,188, 25,251,247,239, 7, 0,156, 59,119,
+ 14,126,126,126,178,214,210,144,153,153,233, 61,109,218,180,189, 0,124,155, 90,111, 54,131, 23,253,241, 79, 0,128,152,157, 83,
+168,172,172,172, 78, 18,137,228, 9,243,109, 0, 6, 12, 24, 64, 70, 71, 71,247, 58,119,238, 92,175,189,123,247, 26, 77, 38,211,
+230,194,194,194,216,246,228,169, 54, 62, 30,242,148, 20, 32, 62,190,205,251,118,235,214,205, 35, 32,192, 33,225,179,141,203,157,
+142, 30, 75,197,198,141,223,225,254,253,251, 0, 0,111,111,111, 76,121,121, 34,255,167, 31,191, 9, 90,186,116,229, 21,154, 14,
+139, 76, 78, 78,110, 53,186, 57,195, 48,223, 68, 71, 71, 63, 47,151,203,177,116,233,210, 44, 47, 47, 47, 88, 91, 91, 99,251,246,
+237,176,179,179,131,201,100,202, 90,191,126, 61,175,176,176, 16, 91,182,108,217,245,132,187,245, 7,244, 31, 53,224, 35, 17,223,
+191, 95,151,240,105,144, 91, 43,177,243,231,125,200, 76,220,211, 79,111,202,248,104, 25, 46,188, 74,177,162,105,234, 92,217,210,
+ 78,225, 3, 29,124,131,198,162, 99,247, 20, 71, 61, 29,159,243,225, 80,175,117, 60,177, 46,102,229,103, 77,184,132, 19, 98,169,
+224,234, 27,246,119, 78,203,202,128,198,160,161, 68,253, 7, 12,139, 49, 3, 6, 12,160, 26, 4,246,195,135, 15, 97, 48, 24, 16,
+ 24, 24, 72, 26, 12,134, 65,150,138,171,254,253,251, 95,250,225,135, 31, 28,250,245,235, 87,242,212,253,235, 96, 59,252,194,161,
+205,115, 63,254,226, 71,255,239, 89,162,178,181, 23,129,238,221,187,207,232,218,217,251,219,205,235, 87, 16, 84, 93, 62,120,182,
+101, 0, 83, 6,213,222, 93,128,212, 30,163,223, 94,128, 30,189,122, 81,115,231,127,240, 45, 17, 30,206, 38, 38, 38,238,230,170,
+101, 14, 28, 56,252, 35, 4, 22,195, 50, 33, 78, 78,246,226, 45, 27,246, 36, 42,197, 36,161,112,119, 37,132,214,182, 60,200,101,
+ 34,146,226,107,189,189,221, 5, 12,203, 52, 55, 85,200,179, 67, 45, 9,145, 72,116,104,247,238,221,206,124, 62, 31, 12,195,192,
+201,201, 9, 57, 57, 57,168,168,168, 64,109,109, 45,238,167,167,163, 99, 7,119,204,157,249,166,114,205,198,207, 14, 1, 8,199,
+211,205,133, 79,113,178, 12, 11,198,252,116,139, 26, 65, 16, 77,182, 47,182, 48,141,140, 69, 67, 66, 25,134,121, 80, 88, 88, 8,
+169, 84,138,128,128, 0,249,141, 27, 55, 46, 22, 22, 22, 22, 88,196, 57, 97, 2, 37,120, 68,252,186, 97,237, 36,123,130,202, 66,
+ 86,110, 37,124,220,123,194,193,166, 3, 10, 74,106,145,148,118, 2, 89,247,143,195,199,221, 3, 51,167,248,216,110,250,166,228,
+ 24,194,102,250, 32,121,135,169, 41,206,154,154, 26,185,135,135, 7,220,220,220,192, 48, 12,104,154, 70,106,106,106,227,239,134,
+249, 18, 27,126,111,254,233, 50,236,168, 82, 76,122, 97, 20,202,203,203,229,150,158,123,131,184, 58,240,153,107,144,182, 78, 37,
+ 0, 0,137, 76,105, 28,191,160, 32,181, 71,143, 30,112,114,114, 18, 92,185,114,101, 1,128,216,182,230,167, 17, 88,255,197,238,
+221, 91, 94,169,170, 34, 1,224, 91,130, 96,140,143,163,106, 91, 84,150,156, 28,137,195,155, 54,125,228, 68,176,105,176,183,249,
+ 20,215,175, 63,130,209,248,248,202,151,149,169, 49,231,157,106,240,120, 86,248,236,179, 21, 14, 47, 77,154,117, 16,143, 71,189,
+ 48, 45,165,147,101, 89, 65, 70, 70, 6,130,130,130,176,119,239, 94, 30, 69, 81,184,118,237, 26, 36, 18, 9,166, 77,155,134,224,
+224, 96,158, 68, 34,193,197,139, 23, 81, 93, 93, 77,180,148,206,248, 19, 23,214, 84,100,159,251,168,136, 58, 53, 98,231,207,251,
+240,230,203,147,160, 48,103, 95,180,243, 33,215,140, 28,221,103, 57,197,239, 16, 37,179, 10,182,243, 11, 30, 11,129, 80,142,119,
+ 23,175, 70,214,157, 95,237, 52, 53,183,223,161, 77,121, 29, 86,126, 22, 59,239, 15,233, 60, 48,145,158,186, 59,190,251, 25,143,
+100,207, 59, 41, 51,175,169,146,119,220,250,247,161, 3,120, 32,181,182, 13,226,234,222,189,123,184,127,255, 62, 40,138,130, 86,
+171,125,106,162,224, 39, 57, 67, 67, 67,223,162,105,122, 57, 0, 24, 12,134, 61, 18,137,100,198,151, 95,126,233, 64, 81,255,158,
+ 41,170,193,185, 42, 86,151, 85, 92,185,145,154,185,224,173, 9, 3,227,175,222,201, 51,242,199,230, 86,221,250,165,170,169,252,
+140,136,136,176, 35, 25,102,199, 23, 27, 87, 17,116,246,239, 16, 5, 12, 4, 79,238, 7,218, 84, 0, 93, 69, 45,180, 57, 69, 48,
+110,255, 10,222,111,207,199,134,245, 31, 19, 47,191,250,250, 14,111,111,239, 67,217, 79, 59,120,127,199,112,109,142,147,227,228,
+ 56,255, 59, 57,255, 89, 2,139, 32,200,106,163,209,196,183,238,224,102, 26,255, 98,255,174,201,215,238,100,201,237,109,200,110,
+ 61,187, 6,222,201,202, 79,130,153, 54, 18, 4,105, 81,191, 14,119,119,247, 73, 43, 86,172,232,106,109,109, 13,134, 97, 96, 99,
+ 99,131,146,146, 18, 24,141, 70, 84, 87, 87, 67, 95, 91, 3, 99, 77, 53,110,230, 62, 68,228,192,129, 24,218,187,119,192, 9,147,
+105, 82,126,126,254,222,230, 56,105,146, 98, 29,194,122, 98, 98,118, 25, 24,163, 1,177,222, 14,141,174,213,228,135,149, 32, 8,
+ 2,180, 65,143, 19, 61,125, 33,146,203, 16,242,254,138,118,103, 86, 81, 81, 81,242,153, 51,103, 78,142, 24, 49, 98,228,204,153,
+ 51,201,162,162,162, 56,179,217,220, 87,173, 86,183,218, 60,234,124,151,158, 54,117,102,152,183,163, 45,137,163,151, 79, 33,194,
+255, 5, 72, 69,124,148, 84,104, 65, 18, 4,238, 63, 56, 3,154,150,225,102, 70, 46,122, 7,203,208,175,151,141,123,237,239,229,
+ 51, 75,155,111, 46, 35, 42, 42, 42,160, 86,171, 97, 50,153, 96, 54,155, 49, 97,226, 68,196,236,217,131,186,186, 58,232,116, 58,
+ 24, 12, 6, 48,204, 99, 61, 81, 84, 82,139,235, 55,227, 16,222,181,115,131,227,209,116,129,224,193,252,229,230, 41, 60, 43, 41,
+ 32, 16, 57, 25,107,106,106, 32,147,201,160,173, 83, 9,166,190,217,232,108, 9,206,157, 59,135,164,164, 36,184,186,186, 90, 84,
+142,154,194,125, 96,199, 3,154,254,112,228,225,195,206,151, 15, 31,102,174, 30, 61,154, 47,170,169,217,110,201,190,189,122,133,
+ 78,120,247,221,209, 1, 18,177, 4,249,185,155,225,239, 47,192,194,247, 28, 16,253,105, 41, 0, 96,238,187,238, 8, 15,119, 64,
+117,229, 1, 56, 58,127,128,133, 11,198,249,212,214,178,175, 37, 36,164,236,105,185,188, 19,115,126,252,241,199,172, 97,195,134,
+241,146,147,147, 33, 18,137, 32,145, 72, 32, 22,139, 33,145, 72, 80, 84, 84, 4,131,193,128,216,216, 88,115,125, 19, 98,179,168,
+111, 6, 28,249,222, 80,156,204, 76,220,211,207,141,204,185, 57,110, 65,159, 7,201,215,110,214,158,253,253,242, 26,179, 78,156,
+ 87,153,127,122,137, 87,143,155,142,239,188,191, 10, 95,109, 88,129,204,107, 23,202, 93, 60,106,190,166, 9,125,147,233, 28, 48,
+ 96, 37,207,221, 93, 97,154, 61, 99,188,205, 49,229,149, 55,143,241, 80, 90, 92,126,123, 35,178,175,107, 69,126, 65,175,118,246,
+ 34, 12,103,207,158,149,244,239,223, 31, 90,173,246,241,189, 64, 81,248,241,199, 31, 25,179,217,124,174, 41, 78,147,201,180, 60,
+ 41, 41, 73,169,209,104,240,242,203, 47,207, 93,185,114,165,140,207,231, 63,190,191,104,250, 41,231,106,237,166,239, 79,205, 95,
+254,245,185, 83,123, 63,117, 93,187,116,198,192, 87,222,253,248, 28,128,184,166,221, 80,115,204,166, 79,151, 81, 34, 91, 35,136,
+ 30,195, 96, 84,107,241,232,219,153, 48, 84,105,209,121,205,106, 0, 2, 24,140, 20,142,141,155, 8,202,222, 21,111,244,239,203,
+219,126,225, 82, 12,128,113, 92,213,204,129, 3,135,103, 94,126,123, 0,112,170, 95, 44,173,127,142, 57, 0,104,112,217,157, 0,
+ 24, 0, 8,159,216,237,217,229, 39,183,125,118,249,201,223,165,245,198,142, 19, 30, 79,217,119,157, 32,136, 54,247, 19,109, 24,
+ 69,248,164,225,195, 62,227,218,196,223,207,126,168, 29, 56, 32, 92,121,238,250,221,228, 17, 47, 12,237,217,127,112,175,136,226,
+178,234,108,133,147,181,236,202,181,171, 34,134, 97, 44,106,223,225,243,249, 81,145,145,145,188,138,138, 10, 72,165, 82,148,148,
+148,160,160,160, 0, 70,163, 17,218,170, 74,232, 43, 43,160,173, 40,135,169,166, 18,247,111, 92, 67, 23, 15, 55, 81,125, 39,120,
+139,240,172, 67,213, 48,131, 61, 65,146, 16, 91, 91, 65, 98,109, 13,138,106, 91,100, 10,165, 82, 57,182, 75,151, 46, 87, 93, 93,
+ 93, 63,172,127,195,127, 39, 58, 58,186,148,101, 89, 44, 89,178,196,218,218,218, 58,214,211,211, 83,212, 26,143,149, 61, 61,161,
+ 87, 87, 95, 42,235,209,109,132,251,141, 71, 39,101,127,220, 47,168, 66, 73,149, 14, 69,229,117,232,220,249,125, 56,185,190, 9,
+ 27,197,219,184,157,153, 7,165,162, 19, 73,241, 5, 35, 90, 17,124, 79, 45,255,252,211, 79,208,104, 52,240,245,245,197,228,201,
+147,177,120,241, 98, 76,154, 52, 9,174,174,174,232,231,203,195,140, 87, 39, 64,173, 86,183,152,206,181,223,130,191,238, 39,101,
+242,212, 21,108,178,239,115, 39, 83,239,223,191,143,172,172, 63,182,172,253,254,251,239,168,170,170,106,124, 0, 91, 2,103,103,
+231,101, 10,133,226,150, 66,161, 72, 85, 40, 20, 39,138, 93, 93, 51, 76,222,222, 46,125,199,141, 35, 2, 95,122,137,202,147,201,
+136, 7, 29, 58,200, 45,225,178,182,198,232,240,240, 72, 97,101,197,119,141,166,212,140,233, 78,184,116, 33, 8,151, 47,118,199,
+156,119,189, 65, 18, 98, 16,164, 0,154,186,223, 17, 24, 20, 44,176,178, 98, 91, 44, 75,245, 29,218,179,131,130,130,120,179,102,
+205,130, 72, 36, 66, 76, 76, 12,182,109,219,134,207, 63,255, 28, 89, 89, 89,240,244,244,132, 82,169,132,139,139, 11, 15, 64,118,
+253, 62, 45,194,214,135, 92,163, 55,101, 92,180,243,147,101, 19,164,115, 31,189, 89, 60,126,229,103,170,178,181, 91,115, 62,123,
+144,169,245,206,184,118,161, 44,235,206, 47, 76,206,141,115,165,133,119,107,189,215,110,205,249, 44,250,235,194,242,166,184, 46,
+ 92, 88, 65, 31, 57,113,193, 88, 87,171,225,141, 29,249,156,246,237,233,147, 59,219, 75,187,252, 8,183, 97,161, 29, 59, 40, 95,
+ 93,241,201, 22,195, 27,179,230, 27,191,221,245, 29, 91, 83, 83,131,234,234,106,124,241,197, 23,230,163, 71,143, 22,208, 52, 61,
+191,153, 36, 82,245,130, 8, 19, 39, 78,148, 73, 36, 18,228,229,229, 53,186,160, 0,160, 42, 41,187,125,249,198,157,140, 5,111,
+ 79, 28, 80,167,215,235, 79,157, 79, 76, 15,244,243,116, 39, 8,182, 99,115,231, 77, 17, 68, 68, 80, 72, 8, 88,182, 18, 36,207,
+ 3,249,223,111,132,182,168, 28,154,146,114,144,124, 25, 76, 16,195,200, 10, 33, 14,233,137, 71, 73, 41,112,145, 91,131, 71, 16,
+125,185, 71, 9, 7, 14,255, 92, 29,213,156, 22, 1,224, 68, 16,196, 49,130, 32,142, 45, 91,182,108, 16, 0, 7,130, 32,142,213,
+139, 32,167,250,223,194,134,109,154, 89,118,122,146,231,153,125,159,252,237,184,108,217,178,193, 4, 65, 28,235,211,167,207,171,
+245, 66,174,205,104, 85,109, 80, 58, 67,244,178, 15, 87,144,214,114,161, 85, 96, 64, 39,187,163,191,197, 39, 95,190,154,146,110,
+ 37, 21,139,106,235,234,132,159,127,185,205,131,208,104, 45,237,228, 29,224,232,232, 8,163,209,136,123,247,238, 33, 63, 63, 31,
+ 70,163, 17,102, 77, 29,244,149,149,208, 85, 84,128,209,212, 66, 64, 51,208,150,150,192, 78, 44, 4,254, 61,194,176, 37,101,219,
+ 40,166,154, 18, 92, 4, 65, 64,108,109, 5,161,149, 28, 36,143,178, 56,115, 20, 10, 69,247,208,208,208,253,103,207,158,237, 21,
+ 25, 25,185,198,211,211,211,166,184,184,248, 81,113,113,241,115, 27, 54,108,208, 59, 57, 57,225,149, 87, 94,233, 98, 50,153,166,
+182,198, 37, 16,235,187,122,186,248,193,195,101, 44, 92, 29, 34, 80, 86,173, 71, 73,165, 22, 69,101, 26,236, 59, 56, 25,167, 79,
+ 78, 70,202,197, 87,113,239,218, 12,148,213, 89, 67,108, 63, 8, 0,219, 98, 32,183,171, 87,175,226,155,111,190,105,252,124,245,
+213, 87, 40, 47, 47, 71, 80, 80, 16,242,242,242, 16, 23, 23,135,162,162, 34, 56, 57, 57, 33, 37, 37, 5,219,183,111,199,181,107,
+215,218, 92, 72,116, 58, 29,248, 66, 7, 99,204,206, 41,136,217, 57, 5, 52, 43, 51, 62,153,247, 22, 23, 54,146,156,166, 26, 55,
+174,171,202,214, 54, 48, 36, 36,100,228, 75, 47,189,228,221,171, 87,175,198,245, 62, 62, 62, 30, 60, 30,175, 72,169, 84,126,171,
+ 84, 42, 67, 91, 36, 99,216, 48, 59,251, 0, 24,244, 25,245,215,152, 7,130, 16, 97,240,208,116,244,237,151, 4,163, 73, 8,130,
+ 20,129, 36,196, 48,155,203, 96,109,229, 2,150, 37, 90, 11,140, 55, 42, 46, 46, 14,223,124,243, 13,114,114,114, 26,155, 71,163,
+162,162,230,188,252,242,203,135,104,154,198,177, 99,199,112,228,200, 17,120,121,121, 33, 52, 52, 20, 70,163,113, 84,107,231,189,
+252,235,194,171, 63,125,126,114, 50,223,108, 27, 42, 20,121,122,145, 53,210,177,179, 7, 56,202, 0, 32, 46, 59,187,198,197,163,
+102,157,166,230, 78,174,157,123,221,167,173,119,112, 39,216,196,172,212,107,123, 15,254, 86, 85, 92, 90,198, 15,235, 22,172,253,
+120,213,251,130,142,157,124,215,175, 88, 50,219,165,160, 90, 92, 53,116,238,201,140, 67,113,215,107, 95,155, 49,211,252,250,204,
+119,117,167,126,251,253, 48,195, 48, 33,104,102, 4, 33,195, 48, 80,169, 84,184,115,231, 14,114,114,114, 80, 90, 90,138,146,146,
+ 18,212,212,212, 52, 54, 43, 74,107,170,143,127,181,251,232, 77,153, 68, 34,237,213,213,207,227, 90,114,154, 90, 38,145, 72,253,
+ 58,121,116, 6,154,158,128,154, 97, 24,219,199,121, 72,160,230, 78, 60,116,229, 53,208, 86,214, 66, 91, 94, 11,189,145,130, 78,
+ 79, 66,103, 36,225,216,111, 24,106,235,180,208,149, 87,130, 97, 89, 59,238, 25,195,129, 3,135, 22,158,247, 81,235,214,173,251,
+164,165,245, 79,124, 27,158, 89, 6, 65, 16,199, 88,150,141, 98, 89, 54,170, 94, 76, 53,232,132, 99, 79,242,172, 91,183,238, 19,
+150,101,163,174, 92,185,242, 51, 0, 77,123,210,218,106,211, 78, 89,217,221, 90, 43, 34,224,197,249, 75,150,159,248,113,231, 22,
+231,242,242,138, 44,129, 88,162, 19,139,133,246,139,151,172,178,173,211, 84,189, 88, 87, 97,249,168,167,138,138,138,198,135,151,
+ 64, 32, 0,173,169, 3,173,213, 64, 87, 81, 6,194,168,135,128,166, 97, 47,149,194,195,213, 5, 29, 93, 20,173,242, 81, 12, 77,
+ 20,158, 62,129, 83,175,190,240, 84,179, 32, 99, 52, 32,174, 79, 23, 8,229, 50, 72,108,237, 16,121,228,226, 99,161, 35, 16, 0,
+ 43, 62,109,149,215,197,197,197, 81,169, 84,254,250,229,151, 95, 10, 74, 75, 75,145,154,154,122,243,209,163, 71, 85,118,118,118,
+ 86, 38,147,137,185,123,247,238,153,204,204,204,168, 78,157, 58,129,101, 89,159,214,248,106, 42,101, 70,163,137, 65,129,250, 17,
+242, 85,119, 96, 35,247, 0, 75,118, 64,113,185, 6, 4,156, 97,210,101, 54,246, 37,211,107,243, 81,167, 39, 44,202, 79,163,209,
+ 8,147,201, 4,147,201, 4,131,193,128,215, 94,123, 13, 87, 18, 18,240,211,145,243,200,203,203,131,151, 66,138,201,147, 38,162,
+ 91,183,110, 72, 76, 76,108,119,161,246, 27,114, 42, 85, 34,145, 96,219,182,109,144, 74,165,104,171,192, 82, 40, 20,159,249,251,
+251,251,102,214,213, 33, 45, 35, 3, 61, 39, 78, 4, 0, 92,186,116,169,113, 27,173, 86,139, 41, 83,166, 8,115,114,114, 94,207,
+200,200,120,157,101,217,207,139,138,138, 22, 54,199,121,252,120, 2,222,126, 59, 13, 37, 37,143,157,221,125, 63, 7, 54,174,123,
+144, 99,196,136,209,143, 91,174,108,109,109,241,217,103,150, 5, 29,166,105, 26,219,183,111,135, 68, 34,105, 20, 88, 2,129,160,
+239,130, 5, 11, 94,108,106,251,192,192,192, 86, 57,223,155,224, 38,190,116,147,125,199,198,183, 83,176,141, 83, 8, 74,205, 41,
+ 93,147, 11,138,230,188, 55,193,109,243,166, 3, 5, 58,154,208,239,161, 77,121, 29,120, 98, 93,140, 37,105,204,142,251,210, 80,
+222,105,102, 76,145,186,234, 95,239,206,124,197,193,214,206,165,246,219, 47,163,109, 73,146,196,209, 36, 67, 69,144,183,131,221,
+216,136, 47,106,223,126,239,163,100,131,249,209, 28,228, 29,203, 68, 11, 97, 79, 24,134, 65, 65, 65, 1, 74, 75, 75,145,155,155,
+139,146,146, 18, 16, 4,129,146,146,146, 54, 57,148, 77, 57,202,134,252, 2, 20, 29,222, 5,197,148, 87,208,121,245,106, 48, 12,
+ 31, 90,141, 25, 7,250, 61,135,234, 42, 45, 12, 12, 1,219,238,125, 48,244,216, 69,144,140, 25, 72,184,194, 61, 65, 56,112,224,
+208, 82,189,114,108,233,210,165, 31, 88,184,237, 25,150,101, 45, 10,173,243,172,224, 90,186,116,233, 7, 13,199,138,142,142,214,
+ 2, 40,252,203, 5, 22, 0,212,148,166,103,167,165,241, 84,181, 26,173,216,206,222, 78, 99, 37, 23,178, 85,149, 85, 84,198,189,
+ 44, 93, 93,209,253,204, 54, 28, 47, 61, 53, 53, 53,184,160,160, 0,185,143, 30,193,164,169, 3, 97,208, 3, 58, 45,134,244,235,
+ 11, 49, 0, 49, 1, 8, 24, 35, 40, 74,136,218,218,106, 0, 72,111,141,148, 49,153,158,170,212, 27,155, 5,173,172, 32,148,203,
+ 32,178,182,122,202,209,178, 4, 18,137,228,167,237,219,183, 43,149, 74, 37, 54,109,218, 4,165, 82,233,175, 80, 40, 52, 86, 86,
+ 86, 18, 71, 71, 71,116,238,220, 25,225,225,225, 56,119,238, 28, 8,130,184,223, 26,159,217, 32, 76, 74,207,166, 59, 84,215,166,
+224, 90,210, 15, 48, 25, 12,232,228,183, 12,122,179, 35,100,206,175, 67,107,252, 21,198,202,243, 0, 0,161,245, 64, 20, 23,151,
+ 2, 32,238,180,230,220, 61,187,124,235,214, 45,236, 57,124, 9, 30, 1, 3, 81, 84, 30,135, 59,119, 18,225, 98,247, 27,252, 2,
+131, 96, 50,153,218,242,150, 96,177, 32,177,176,160, 79, 89,182,108, 25,170, 36, 18, 96,244,104, 8,178,179, 97, 52, 26, 17, 17,
+ 17,129, 30, 61,122, 0, 0, 34, 34, 34, 64, 81, 20,124,125,125, 97,111,111,143, 67,135, 14, 77, 1,208,164,192, 98, 9, 34,133,
+161,203,252,189,189,189, 27, 5, 86,204,247, 37, 72, 78, 28, 2, 2, 66,108,249,234,223,151,196,195,195, 3, 69, 69, 57, 32, 8,
+182,181, 78,153, 39, 70,143, 30, 61,202,206,206, 14,211,167, 79,135, 68, 34,193, 11, 47,188, 0,173, 86,251, 82,253, 27, 13,150,
+ 45, 91, 6, 0, 88,177, 98, 5, 86,174, 92, 9,141, 70,211,108,136,138,109,107,187,186,214,104,153, 25,164, 70,242,194, 32,199,
+ 78, 33,131,135, 15,129,151,223,115, 24, 60, 60, 15, 0, 62,113,228, 63,152,248,233, 7,182,135,237,172,137,221, 87,142,156, 89,
+ 30, 57,114,208,135, 43,141,231,215,172,252,178,162,213, 23,150,202, 7, 59,106, 50,248, 99, 54,111,249,198,188,105,197, 7, 11,
+ 68,143, 74,141,229,133, 21, 76,173, 76,196,179,242,113,129,124,206,226, 53, 57,133,133,247, 22, 33,239,183, 44, 75,174, 97, 78,
+ 78, 14,244,122, 61,104,154,134, 94,175, 71,109,109, 45,242,243,243, 27,175,175, 86,102, 61,226,221,233, 99,186,213,105,181,154,
+107,183,239,230,126, 56,247,149,222,117, 90,173,230,238,131,220, 44, 96, 11,211,204, 53,175,212,212,212,218, 27,106, 76,168,188,
+153, 5,199,193,158, 48,152, 9,232,205, 20,202, 75,107, 96,164, 1, 19,201,135,251,132,215, 96, 38,120,168, 46, 41, 2,217,142,
+126, 14, 28, 56,112,248,103, 57, 88, 4, 65, 28,139,142,142,142,250,187,184, 1, 32, 58, 58, 58, 53, 58, 58,250, 79, 29,171, 65,
+ 96, 13,124,226, 13,119, 96, 83,117,165,135,109,149,219, 39, 31,188,232,106, 50, 25,252,107,107,107,105, 30, 79,200,235, 96,163,
+ 45, 42,207,181,252, 96, 38,147,233,216,197,139, 23,199,245,235,215, 79,116,247,246, 77,232,171,170,160,175,170,132,128, 49,195,
+ 94, 28, 14,210,100, 0, 97,208,195,173, 11, 3,109,181, 24, 9, 55, 50, 77, 38,147,233, 88,139, 25, 2,150,101,204,143,133, 3,
+ 73, 82, 79, 53, 21,138,172,228, 16,202,229, 16,201,173,154,108, 66,108, 14,206,206,206,210,254,253,251, 63, 23, 22, 22, 6,150,
+101,177, 97,195, 6, 24, 12, 6, 97,131, 83,100, 52, 26, 81, 83, 83,131,131, 7, 15,226,251,239,191,191,108, 99, 99,179,187,176,
+176,101,113,203,152,245, 39,207, 93,190, 57,234,213, 23, 6, 11, 79,159,255, 22, 38,189, 25,181,122, 91,212,233, 12,168,209,242,
+ 97, 16, 13, 7, 65, 92, 4, 73,137,208, 39,212, 7,103, 47,221,213,209, 38, 99, 92, 91,196, 16, 65, 16,208,235,245, 80,171, 75,
+ 80, 94,115, 14,168, 41,128,163,177, 6,181, 15,238, 35,244,181,169, 48, 24, 12,173,114,125,248, 6, 76, 78,182, 42,222,247,171,
+ 73,240,133, 14, 70,191, 33,167,154, 13, 21, 33,151,203, 27,251,232, 88,130,234,234,106,252,240,195, 15,136,136,136,192,128, 1,
+ 3, 80, 80, 80,128,236,236,108,140, 26,245,239, 86,182,155, 55,111, 34, 57, 57, 25, 62, 62, 62,173,112,177, 39,202,203,239, 77,
+ 28, 59,118,172,224,234,213,171, 96, 89, 22,126,126, 54,176,182,146,131, 32, 69, 8, 8,112, 2,144, 9,130, 32, 48,112,224, 64,
+ 24,141,133,230,186, 58,156,104,137, 51, 57, 57,121,116, 88, 88,152,151,201,100,202, 10, 14, 14,230, 21, 21, 21, 97,194,132, 9,
+216,183,111, 95,195, 27, 13,150, 46, 93,250,212, 62,181,181,181,186,230,248,186,245,236,188,136,102, 29, 6, 8, 69,158, 94, 54,
+ 78, 33,240,242,123, 14, 0, 48, 52,106, 6,188,124, 59,160,170,228,150,151, 65,255,232, 5,138, 40,179,251,241,106, 65, 90, 63,
+105,240,244,210,188,243,119, 1, 88, 18,184,151,213,222, 61, 90,156,203,183,222,127,224,151, 99,111,141, 25,243, 60,207, 68, 51,
+230, 96, 15,158,205,190, 67,199,213, 5,143,114,191, 64,238,111,169, 79,221, 42,205, 11, 44,186,178,178, 18,114,185, 28,217,217,
+217,250, 49, 99,198,136,180, 90, 45,238,222,189,219, 40,176,156, 29,237, 3,251,246, 8,246, 95,187,233,251, 83, 50,145, 72, 52,
+124, 96,120, 64,218,221, 71,249, 44, 75, 60,108,150,151,101,175,222, 77, 79, 31,237,228,232, 1,213,249, 43,144, 69,142,132, 94,
+ 79, 64,103,100, 96,160, 1, 51, 37,128, 77,183,158,144,120, 7,128, 97,129,244,219, 55, 97,102,217,203,220, 35,132, 3,135,127,
+ 44, 90,211, 34, 32, 8,226, 88,239,222,189,247, 62,233, 50, 53,252, 6,160, 7,208, 82,159,232,146, 39, 69, 84, 67,179, 97,115,
+199,121,134,183,221, 2,235, 2, 90, 24, 89,230,232,232,232, 28,208, 37,200,123,231,174,111, 97,212, 87, 33, 59,109, 55,234,106,
+138,241,209, 39, 9, 62,110,110,110, 3, 10, 10, 10, 46, 88,114,176,252,252,252,125,135, 14, 29, 90,216, 45, 40, 40,172,163,187,
+ 59,110, 61,124, 0, 1, 75, 67, 64,211, 32,141,122,240,104, 3,220, 3, 25,144,164, 12, 69, 69, 53,216, 30,247,251,157,250,168,
+238,205,191,125, 19, 20, 58,140, 25,143,151,135,142, 6,107, 50,226,183,126,129, 16,203,229, 16,217,218,162,207,193,243,143, 67,
+ 54,152, 77,120,184,238,125, 8,100,114,216, 71, 12,108, 53,157,106,181, 90,115,249,242,229,196,140,140,140, 30, 93,186,116,193,
+170, 85,171,144,151,151, 7,150,101,161,182,100, 14,165, 0, 0, 32, 0, 73, 68, 65, 84, 86,171,117, 37, 37, 37, 5,101,101,101,
+ 15, 9,130, 56, 92, 88, 88,184, 19, 22, 68, 10, 87,251, 81,123, 78,159,249,125, 81,247,208,192,206, 67, 6,172,196,177, 99,203,
+ 81, 89, 93,141, 58, 61, 15,181, 90, 35,234,116, 44, 92,173,124,208, 43, 36, 12, 37,101, 6,220, 77, 77,202, 47, 21,216,239,104,
+163,117,138,155, 55,111,194,211,158, 64, 90, 86, 50, 28,117,229,232, 98, 43, 71, 88,100, 63,228,228,228, 88,228, 76,153,205,224,
+205,153,255,239,209,130,182,182,182,168,170,170,122,106, 63,169, 84, 10, 87, 87, 87, 84, 87, 87,227,192,129, 3, 96, 45,123, 40,
+154, 12, 6, 3,252,253,253,113,227,198, 13,156, 57,115, 6,131, 7, 15, 70,255,254,253,113,254,252,121, 36, 38, 38, 34, 57, 57,
+ 25, 4, 65,192,193,193,161,193,109,107,214,114,187,126,253,102,172, 92, 78, 44,155, 62,125, 86,240, 43,175,188,130,131, 7,247,
+ 98,198,244, 46, 32, 72, 17, 8, 66,132,231,199,248, 99,245,154, 68,244,234, 53, 16,142,142, 2,156, 57,147,154,195,227,217,124,
+111,129, 88,253,114,253,250,245, 60,177, 88, 12,131,193,128,218,218, 90,148,149, 61, 14, 71,213,148,131,165,213,106,155, 13,172,
+150,154,146,249, 89, 69, 53, 91, 65,106,146, 94, 40, 53,165,132, 12, 30,158,143,161, 81,211,113,250,216,110,156, 61,117, 6,142,
+252, 7, 57,180,164,246,100, 73, 78,105, 77, 97,173,223,246,192,240, 55, 40, 85,221,169,111,102, 63,159, 69,185, 43,153,216,101,
+219,170, 43, 91, 75,111,121,218, 15,191,254,202,226,249,200,136,158, 62, 93, 61, 92,133,229,101,106, 28,250,229,100,170,241,193,
+193, 99,245, 21,149, 37, 86,228,234, 45, 91,182, 44, 7, 0,134, 97,246,108,218,180,233,141, 69,139, 22, 57, 21, 20, 20, 52, 10,
+ 44,117,105,249,217, 62,163,231,208,101,149, 85,134,239, 54, 45,158, 32, 17,139,132, 31,174,251,238,188,137,194,213,102, 43, 23,
+ 30,111,234, 7, 91,127, 44, 57, 16,187,155,114, 18, 11,112,105,201, 10,100,255,126, 14, 70, 66,128,225,191, 93,131,193, 72,163,
+ 90, 93,134,179,211,103,195, 78,105,143, 19,101,119,233,170,154,234,169,220, 51,134, 3,135,127, 44, 90,210, 34, 37, 79, 8,162,
+114, 0, 15,163,163,163, 75,159,112,151, 74, 0,220, 4,208,173,126,187,146,103,246, 43, 33, 8,226, 6,203,178, 61,158,224, 41,
+121, 66,104, 61,249,219,240,204, 54, 55,255,140,192,106, 17,165,165,165,234,235,137,119,112,249,244, 54,152, 77,122, 84,213,219,
+ 86,133,197, 58, 88, 91, 91, 39, 52, 68, 19,111, 2,193,120, 58, 86, 6,171,211,233, 94,220,180,121,243,213,183,166,190,170,232,
+255,220,115,120,116,251, 22,244,229,165,160,104, 26, 20,193, 71,109,169, 24,197, 69,213,136,254,245,164, 90,171,211,189,216,196,
+ 3,226, 89,206,198, 78,238, 44, 65, 64,108, 99, 13,145, 76, 6,145,141,245,191, 29, 43,130,128, 80,110, 5,190, 76, 14, 74, 32,
+180, 36,157,208,104, 52,227,103,206,156,121,235,196,137, 19,118, 47,191,252, 50,158,127,254,249,228,202,202,202, 65, 21, 21, 21,
+150,246, 55,123,154,243,192, 1,218, 28, 60,102,236,215,219,118, 94,153, 54,109,154,253,243, 99,191, 70,114, 90, 42, 42,235,156,
+ 1, 0,174,142, 50,244,234,242, 62,212,101,122,156, 58,121,172,130, 49,235,198, 35,117,159,169, 57, 78,150,101, 89, 71, 71,199,
+167, 92, 57,138,162,112,254,252,121,204,155, 55, 15,142, 86,231, 81,243, 48, 27, 93,251, 13,192,208, 87,166, 98,198,140, 25,160,
+ 40, 10, 14, 14, 14,207,186, 25,127, 56,247, 39, 81, 85, 85,133,142, 29, 59,226,183,157, 93,130, 12, 58,181, 32,204, 30, 32, 96,
+ 99, 60,125,118, 84,106,124,124,124, 45,128,157,126,126,126,177,207,140,104,252, 3, 39, 65, 16,255,250,228,147, 79,182,245,237,
+219, 87, 34,151,203,225,231,231,135,203,151, 47,227,242,229,203,184,120,241,113,255, 56, 7, 7, 7,216,219,219,163,178,178, 18,
+121,121,121, 90,130, 32,254,213, 2, 39, 83, 93, 77,141, 59,125,250,240,181, 49, 99, 94,116, 28, 49,162, 55, 20,138, 26,152,205,
+165, 32, 72, 1, 68, 98,103,236,220,185, 14,234,226,114, 92, 73, 72, 40,175,173,229,141, 79, 74,250,195, 20, 68, 77,165,211, 24,
+ 23, 23, 7,177, 88,140,131, 7, 15,154, 93, 92, 92,120,182,182,182,205, 58, 88, 58,157, 78,212, 28,231,155, 75,238, 20, 0, 88,
+243,222, 4,183,141, 87, 82,139,199, 1,248,201,203,215, 29,103, 79,157,193,197,179, 87,150, 70, 4, 51, 91, 70, 79,233,185, 90,
+ 60,248,165,247, 3,187,191, 65,201,173,149,136, 57,116,144, 74, 75,250,246, 99, 93,221, 29,111,108, 59,244,126, 43,215,136, 5,
+128, 90,117,241,178,232,207,191,218, 19,189,106,185,100,195, 23, 91, 11,181,165, 69, 31,212,139,126,182, 5,247,170,145, 51, 39,
+ 39,103, 59,128,237, 79, 56,205, 63,172, 91,183, 46,254,213, 87, 95,117,106,112, 40, 75,210,126, 77, 40, 1, 18,130, 6,206,248,
+168, 79,143,160, 46, 31,127,241,227,169,220,188,226, 31,171,210, 27, 99, 96,253, 33,157, 87,175, 94,173,232,222,189,251,204,247,
+151,172,252,118,213,234, 21,132,255,252,165,200,186,124, 3,122,173, 17, 70,150,130, 9, 4,146,214,126, 14, 43, 39,107, 92, 98,
+203, 89, 61, 69,190,153,253,199, 78,254, 45,150,207,118,130,227,228, 56, 57,206,255, 78,206,150, 12,132, 27, 77,252,221,212, 76,
+ 26, 55, 90,218,175, 25,158,191, 5, 22, 9, 44, 55, 55,183,254, 67,159,139, 64,223,161,179, 96,212, 87, 34, 59,245, 59,212,214,
+ 20,195, 77, 33, 66,118,110,117,239,122,213,105, 17,234, 35,179, 71,124,188,121,203,161,225, 61,123, 4,248,185, 41, 69,182, 29,
+ 61, 33,115,118, 65,105, 73, 9,174, 37,101,153,182,158, 58,123, 71,171,211, 89, 52, 85, 14,195, 48, 44,203,178, 16, 8, 4, 96,
+ 41, 10,129,115,150,128, 36,201,103, 70, 11, 18,176, 14,143, 4,201,227,195,100, 97,159, 33,149, 74,149, 79, 16,196,248, 57,115,
+230,252,190,103,207, 30,114,224,192,129,161,191,254,250, 43,243,103, 50,187,236,206,209,187, 84,240,184, 1, 91,190,220,122, 32,
+ 44, 60,194,179, 99,167,142,162,190, 29,108, 96, 52,209, 40, 86,151,225,194,149, 52,253,221,180,155,121,140,209, 48,177, 36,189,
+249, 40,238,245, 15,193, 92, 87, 87, 87,151,149, 43, 87,194,108, 54,131,166,105,152,205,102,148,150,150, 34, 57, 57, 25,221, 35,
+122,195,255,245, 55, 80, 94, 94,142, 93,187,118,193,221,221, 29,163, 70,141, 66, 77, 77, 13,226,227,227,115,155,119, 29, 96, 94,
+246,175, 41, 60, 0,224,243, 97,254, 32, 42,234,124, 80, 80, 80,228,243,221,212,130, 89,115, 30, 59, 91,159,174,155, 34, 56,127,
+254,124,172, 72, 36,218,254,224,193,131,234, 22, 4, 54,188,189,189,133, 58,157, 46,148,101, 89, 94,117,117,245,102,189, 94, 63,
+109,193,130, 5,202,245,235,215, 35, 36, 36, 4,165,165,165,176,183,183,135, 82,169, 68,109,109, 45,114,114,114,104,163,209,248,
+ 13, 77,211,171,213,106,117, 73, 75,121,144,152,152,248,128,166, 67,123, 23, 23,109, 59, 52,235,237, 97,126, 38, 83,184,208,218,
+166, 31, 88,214,140,202,138, 60, 16,236, 45,227,225, 35,191,223,175,172,164, 94, 76, 74, 74,186,107,201, 53, 34, 73,242,237,163,
+ 71,143,162, 97,170,156,194,194,194,108,146, 36,155,117,176, 44,193,166, 3, 5, 58, 0, 63, 79, 24,174,156, 95, 85,114,171,179,
+ 35,255, 65, 78, 68, 48,179,101,211,129, 2,157,179,173,102,109, 65,201,249,172,194,218, 83,219, 99, 14, 29,164,166,190, 48,158,
+ 86,202,239, 46,117,236, 0, 75, 34,227,179, 33, 33, 33, 30, 36, 89,222, 73, 93,150,153, 56,227,205,183, 94,178, 17,104, 79,132,
+184,149,250,154, 93, 2,197,105,105,105, 15,219,224, 98, 61, 89,246,179, 0,244,255,236,179,207, 78, 61,107,141,171, 75,203,207,
+246,142,122,151,173,172,172, 74, 41, 73,255,245,118,107, 92, 13,211,223,188,246,234,140, 29,111,190, 62,147, 10,158,187, 24,249,
+231,126, 7,204, 38,168, 46, 94,128,212,138,198,177,210,135,180,134, 34,103, 38, 37, 37,113, 81,220, 57,112,224,240, 63, 3,139,
+123,125,123,123,185,157,242,238,228, 54,204,187,147, 43, 0, 32,251, 65, 33,178, 31, 20,252,150,157, 83, 48,188,157, 10,183,113,
+178,103,162, 62, 20, 3,107,217,100,207, 79,113, 6, 5, 5, 37,147, 36,233,218,150,147,166,105, 58, 63, 45, 45, 45,220,146,116,
+ 42,149,202,151, 59,116,232,176,174,176,176,240, 80,126,126,254,123,127,137,186,175,159,236,153,164, 4, 81, 44,203,134, 0, 32,
+ 8,146,180,100,178,231, 70, 78, 87, 87,215,174, 18,137,100, 59,143,199,243,104,184,142, 13,205,120, 70,163,145,170,170,170, 18,
+ 27, 12, 6, 10, 0, 33, 16, 8,204,114,185, 92,199,231,243,205, 52, 77,231,154, 76,166,183, 10, 11, 11,111, 91,250, 22, 18, 16,
+ 16, 32,139, 10, 79,175,109,152, 66,103,217,191,166, 96,221,158, 22,203, 78, 35,231,221,187,119, 59,219,217,217, 77, 34, 8, 98,
+ 2,203,178, 93,106,106,106,244,203,151, 47, 79,185,112,225, 66,181,135,135,199,136,126,253,250, 17,183,110,221,194,195,135, 15,
+217,218,218,218, 3, 36, 73,254,171,160,160, 32,187,141,101,137,236,211, 39,116,178,149, 28,163, 25, 22,221, 0,150, 32, 8,226,
+118,109, 45,113, 66,169,236,244,227,129, 3, 7,232,246,190,129,133,133,133, 29,175,173,173, 29,117,247,238,221,230,222,170,158,
+189,143,154,229,220,240, 65,240,191,122, 15,136, 28,127,249,194,197,195, 75, 62, 73, 93,243,228,186,119,198,217,205,152,242,206,
+188,245, 63,125,253,197,226,175,143, 84,124,103, 73, 58,195,194,194,188, 0, 76,102, 89, 54,136, 32, 8, 63,134,129,152, 32,216,
+114,130, 32,210, 24,134,185,201, 48,204,209,219,183,111, 23,254, 55,188,209, 62, 57,217, 51, 65,211,182, 52, 65, 88, 58,217, 51,
+231, 16,112,156, 28, 39,231, 96,253,159,132,197, 17,184,179,115, 10,134,103,231, 20,192,215,215,151,189,119,239, 94,155,196, 89,
+115,111,223,245, 17,218,247,254, 25,146,212,212,212,176,191, 51,131, 84, 42,213,207, 42,149,234,231,191,148,244,194, 5,179, 26,
+248, 14,143, 63,237, 66,189, 64,234,101,201,182, 26,141, 6,149,149,149,237, 78,110,122,122,122,221,184,136,127, 59, 91, 60, 30,
+204,150,238, 59,108,216,176, 71, 70,163,241, 12,128,124, 0,182, 0,202, 77, 38, 83, 92,105,105,105, 49, 77,211,225,143, 30, 61,
+250,168,222,137, 92, 83, 92, 92,220,222, 56, 18,204,149, 43, 41, 63, 1,248,233,143,171,146,255,212,165, 74, 78, 78, 30,173, 84,
+ 42,147, 29, 28, 28,124,116, 58,157, 80,167,211,241, 89,150,109, 44,251, 18,137,164,164, 33, 98,122,107,176,177, 70, 12, 69,148,
+ 57,216, 89, 19,127,112,106, 28,221,112, 80, 91,119,167,179,163, 27, 14,182, 33,109, 57,221,186,117,251,129, 36,201, 78, 12,195,
+184, 0,176,102, 89,148,178, 44, 91, 74,211,116,254,157, 59,119, 10,255, 91, 42,154,122, 1, 21, 5, 14, 28, 56,112,224,240,151,
+ 41, 92,142,147,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,127, 20, 72, 46, 11, 56,112,224,192,129, 3, 7, 14, 28,254, 90,
+ 16, 45,168,208,182,180,173,182, 71,201,222,225, 56, 57, 78,142,147,227,228, 56, 57, 78,142,243, 31,199,217, 26, 55,215,183,235,
+111, 18, 94, 28, 39,199,201,113,114,156, 28, 39,199,201,113,254,243, 56,255,167,192, 53, 17,114,224,192,129, 3, 7, 14, 28, 56,
+252,197,104,118, 20,161,151,151,123, 32, 73, 51,125, 89,150,164, 88,146, 53, 17,213,218,125,217,207, 4,217,236,208,161,131, 45,
+159,196, 24,130,101,101, 4,193,208, 12, 69, 94,206,201,201, 79,179,228,192, 1, 1, 1, 2, 0,211,248,124,126,164,209,104, 84,
+242,249,124,149, 78,167,187,196,231,243,247,164,167,167, 27,255,155, 50,169,111,223,190,147, 15, 28, 56, 96, 27, 21, 21,165, 55,
+ 26,141,102,129, 64,192,219,187,119,175,104,250,244,233,149,151, 47, 95,110,215, 40,200,208,208,208, 65,159,126,250,169,215,115,
+207, 61,135,200,200,200,186,145, 35, 71, 10,194,195,195, 5, 75,150, 44,201, 73, 73, 73, 57,215, 22, 46,103,103,231, 64, 30,143,
+247, 61, 65, 16, 20,203,178,175, 61, 17,130,225,239,192,203, 0, 38, 2, 80, 2, 40, 2,176, 31, 64,123, 71, 89,142, 0, 48, 6,
+ 64, 72,253,242, 45, 0, 71, 1,196,253,137,244,141, 0, 48,134, 32,136,110, 0,192,178,236,205,191,144, 51,164,158,243, 47, 75,
+231,159, 61,247,176,176,176,229, 66,161,240, 77, 0, 48, 24, 12,223,201,229,242,232,166,182,187,112,225,130, 1,205,132, 62, 9,
+232, 4, 54,237,168, 63, 0, 32,112, 76, 6, 0,160,181,229,244, 7,237, 27, 69,204,166,249,179, 77,241, 18,129, 25,237, 30,149,
+172, 84, 42,103,143, 26, 53,106, 73, 92, 92,220,199, 5, 5, 5, 59,192,129, 3, 7, 14,255,173, 2,203,203,203, 61,112,194,184,
+ 23, 63,121,251,173, 89, 4, 69,145, 72,207,200,224,189, 51,247,189, 97,254, 46, 46,110, 50,157, 46,128, 5, 24,173, 68,114, 71,
+171,213, 20,108,251,250, 75,171, 46,157, 59,211, 52,205,224,155,237,219, 70, 30, 56,114,232,131,214, 68,150,147,147,147, 23,159,
+207,223, 60,119,238, 92,231, 97,195,134,145, 46, 46, 46,200,207,207,183, 62,124,248,176,239,174, 93,187,162,156,156,156,230,151,
+148,148,228,180,231,132, 20, 10, 69, 63,165, 29, 70, 72, 68,236, 32, 84, 19,208,154,137,115, 42, 3, 27, 87, 84, 84,116,177,189,
+153,100, 48, 24,230,104, 52,154,136,192,192, 64,102,219,182,109,196,204,153, 51, 89,130, 32, 72,173, 86,187, 27,237, 12, 51, 33,
+145, 72,190,126,238,185,231,252, 34, 35, 35,179, 47, 95,190, 60, 26,192,241,137, 19, 39,122, 75, 36,146,187, 0,186,180,133,139,
+162,168,221,105,105,105,221,180, 90, 45,194,195,195,119, 1,232,254, 55,149,151, 93,118,118,118,166,173, 91,183,110, 15, 13, 13,
+245,169,168,168,168,123,235,173,183,134,220,190,125,123, 48,128,215,219,192, 35, 3,176, 69, 42,149, 82,243,231,207, 63,249,194,
+ 11, 47,220,148,201,100,242,204,204, 76,254,188,121,243, 94,203,205,205,157, 0, 96, 46,128,186,182,114, 58, 56, 56, 72,214,174,
+ 93,155,212,167, 79, 31,181, 88, 44,150,228,228,228, 16,243,231,207,159,153,153,153,249,103, 56, 5,171, 87,175,190, 60,112,224,
+192,108,145, 72, 36,205,205,205,165, 22, 45, 90, 52, 35, 41, 41,169,221,156,182,182,182,194,229,203,151, 39, 12, 24, 48,224,161,
+ 88, 44,150,101,103,103,147, 11, 22, 44,120,227,222,189,123, 22,115,246,239,223,127,178, 86,171, 93, 21, 31, 31, 15, 0,232,221,
+187,247,114,131,193,240,225, 31, 68, 13,203, 34, 50, 50, 82, 71,146,228,155,241,241,241, 77,150,215, 61,137,239, 79, 6,128, 69,
+ 31, 53, 44, 63,254,110,106,121, 90,248,134,189, 68, 96, 70,155, 10, 78, 64,167,199,226,110,219,197,119, 95, 5,128,119, 22, 61,
+254,127,219,197,134,245,179,217,182,136, 54, 87, 87,215,183,122,246,236,185,236,218,181,107, 49,225,225,225,243,118,236,216,193,
+143,138,138, 90,203, 48,140,207,136, 17, 35, 38, 36, 36, 36,108,200,204,204,252,154,171,226, 57,112,224,240, 95, 37,176, 72,154,
+233,251,246, 91,179,136, 73, 47, 79, 46, 82, 21,171, 25,185,149,205,203,251, 99, 99,165,157, 59,119, 38,117, 91,182,192, 92, 90,
+ 10,122,225,194, 62, 23, 46, 92, 48,189, 59,127,161, 86,175,211,236, 86,186, 56, 75,247,253,188, 87,113,232,224,129,190, 0,210,
+ 90,114,174,248,124,254,230,131, 7, 15, 42,188,188,188, 96, 48, 24, 80, 82, 82, 2,163,209,136, 23, 94,120,129,138,136,136, 80,
+204,152, 49, 99,179,163,163,227,139,109,113,178, 28, 29, 29, 93,186,120,240, 79, 76,153, 56,188,243,160,254,225, 18,133, 91, 39,
+ 32,159, 65, 65,246,221, 30,191, 95, 77,154, 27,123,250,124, 86,102,149,113, 84,105,105,105,113, 91, 51,169,172,172,108,201, 91,
+111,189,117, 32, 36, 36,196, 73, 36, 18,193,197,197,133,120,227,141, 55,138, 85, 42,213,234,246,102,124, 67,116,112,146, 36,233,
+103,190,219, 67,231,110, 99, 99, 3,107,107,107, 0,112,251, 51, 5, 98,194,132, 9, 84,110,110,238,155, 12,195, 4, 60,249,191,
+ 74,165,242, 54,155,205,165, 15, 30, 60,236,166, 51, 24,123,205, 94,180,106,237,164, 49,131,172, 19, 18, 18,200,209,163, 71,243,
+207,159, 63,255,114, 27,156,172, 45, 93,186,116,185,189,126,253,122, 67,250,221,156,224,223,206, 39,144,206,246, 50,198,171, 99,
+ 71,121,106,106,170, 32, 58, 58,186, 36, 58, 58,122, 11,128, 25,109, 72,250,150,161, 67,135,230, 45, 91,182,140, 74,207,186,239,
+125, 49, 33, 5,214,114, 33,237,225,238, 42, 78, 72, 72,224,109,219,182, 13, 31,124,240, 65,155, 57, 7, 13, 26,116,119,205,154,
+ 53,108,145,186,220, 55,231,129, 10, 86,114,161,217,193,193, 65,114,254,252,121, 98,207,158, 61,134,121,243,230,109, 97, 24,166,
+ 77,156,125,250,244,185,191, 98,197, 10, 34,227, 94,142,239,165,132, 20,200,101, 2,115, 71, 15,119,241,245,235,215,137, 47,191,
+252,210,180,124,249,114,139,210,201,178,236, 55, 27, 54,108,192, 47,191,252, 2, 0,248,249,231,159,225,237,237,253, 84, 1,210,
+234,116, 32, 8, 2, 15, 31, 60,144,190,253,246,219,223, 52,245, 66,144,118,212, 31,123, 18,129,105,211,166, 21, 89,116, 6,233,
+ 27,218,236, 90, 53, 8,171, 89,179,102,229, 55,179,217,171, 95,111,180, 92,100,245,237,219,119,201,190,125,251, 28, 99, 99, 99,
+ 23, 29, 62,124, 24, 0, 32,149, 74,165, 95,125,245,213,236,177, 99,199,226,245,215, 95, 95,194, 9, 44, 14, 28, 56,252,215, 9,
+ 44,150, 37, 41,138, 34,161, 46, 46, 53, 13, 29, 50,108,198, 87, 91,183,138,132, 66, 33, 12, 6, 3,234,206,158, 5,171,215,195,
+ 70, 34,193,168, 81,163,248,193,193,193,214, 51,103,204,120, 67, 93, 92,180,157,162, 72, 5,203,146, 84, 43,199,156, 54,119,238,
+ 92,103, 47, 47,175,167, 38, 16,166,105, 26,197,197,197,176,178,178,194, 75, 47,189,228,248,195, 15, 63, 76, 3, 96,145,221,239,
+236,236,220,209,175,147,227,149,216,111, 23, 41,156,109, 9,160,228, 32,240,232, 46,240,147, 24,126,206,158,240, 27,220, 95, 50,
+166, 87,112,183,201,235,247,164,144, 36,217, 71,173, 86, 63,108, 75, 38, 61,124,248,240,146,193, 96,120, 83,167,211, 29, 1, 64,
+ 94,190,124,153,205,205,205,125,187,184,184,248, 81,123, 51,158,166,105, 84, 86, 86,130, 97, 24, 10, 64,227, 55,109,225, 84, 62,
+127, 7, 38, 76,152, 64,229,229,229,189, 21, 16, 16,224,187,115,231, 78,168,213,106,136,197, 98, 48, 12,131,222,189,123,123, 12,
+ 25, 50,228,126, 73,121,149,157,217, 76, 27,243, 31, 61, 8, 95,183, 33,165,164, 91, 96,151, 75,177,177,177,161,142,142,142, 47,
+ 89, 40,176, 70, 88, 89, 89,241, 62,254,248, 99,173,194,221,123,146,210,195,143,127,229,198,237, 44,129, 84,200,150, 85,213,212,
+164,164,164,100,173, 90,181,170,255,137, 19, 39,212,119,238,220, 25, 1,203,154,204, 70, 56, 56, 56, 72,150, 46, 93, 74,216, 56,
+184, 14,141,236,239,193, 79,186,149,118, 95, 40, 21, 50,145,145,145, 99,174, 92,185,178,107,193,130, 5,161,199,143, 31,175, 78,
+ 72, 72,176,152,211,222,222,158,191,122,245,106,218,197,213,115,172, 71, 39, 95,190,155,194, 49, 16, 0, 50,179,238,125, 91, 92,
+ 92,124,255,237,183,223,238,117,242,228,201,154,184,184, 56,139, 57,109,108,108, 4,203,151, 47,103, 3,130, 67,103, 4,133,116,
+ 39,143,254, 22,159, 32,145, 9,233,234, 58,109,109, 90, 90,218,253,197,139, 23,247, 60,126,252,120,205,141, 27, 55, 90,229,212,
+104, 52, 86,238,238,238, 80, 40, 20, 96,180, 90, 84, 87, 87,227,208,161, 67,168,169,169, 1, 77,211,144, 72, 36,248, 34,174, 28,
+186,123, 71,177,125,243,106,104,181, 90,171,191,162,156, 52, 52,239,181, 69, 92,181, 32,172,240,132,240,122,117, 86,191,175,216,
+150,154, 11, 27,156,171, 75,151, 46,229,199,198,198, 58,251,248,248, 96,224,192,199, 19,184,207,152, 49, 3, 67,134, 12,193, 47,
+191,252,130,223,126,251, 45,119,220,184,113, 57, 73, 73, 73, 27,242,243,243,191,225,170,122, 14, 28, 56,252,255, 70,147,118, 9,
+ 75, 16,117,169,233,233,124,185,173,237,171, 95,109,221, 42,226,243,249,120,248,240, 33,210,210,210,160, 57,123, 22,218, 43, 87,
+160, 86,171, 81, 83, 83, 3, 39, 39, 39, 68,111,216, 32, 19, 72,100, 51,238,222,187, 71,177, 36,251,228, 4,197,127, 24,106, 41,
+ 20, 10, 35, 71,141, 26, 69, 62, 41,174,158, 68, 81, 81, 17,134, 13, 27,198,227,241,120,145,205,164,249, 89, 78,194,213,137, 56,
+186,127,199,124,133, 51,239, 54,112,111, 30, 80,121, 17, 48, 87, 2,218, 90,224,193,109,224,240,103,112, 47,191, 71,252, 52,119,
+162,139,155, 68,112, 20,127,140, 66,223,226,144, 80, 55, 55, 55,111, 31, 31,159,157,227,199,143, 39, 1, 32, 50, 50,146,240,241,
+241,217,238,230,230,230,221,194,110, 45,114,234,116,186,171, 21, 21, 21,196,232,209,163, 29,250,244,233,115,122,244,232,209, 14,
+ 0, 8,157, 78,119,181,189,156,245,112, 24, 52,104, 80,153,151,151,215,207,158,158,158, 34, 11,182,111,228,204,205,205,125,211,
+223,223,223,119,231,206,157, 20, 69, 81,216,177, 99, 7,246,239,223,143,248,248,120,148,148,148, 72, 23, 44, 88, 96,251,235,217,
+228, 51,167, 47,222, 60, 54,127,214, 91,204,208,238,161, 74, 81,105, 81,153,131,131,195, 72, 0, 10, 11,211, 57,102,206,156, 57,
+ 39,146,211, 30, 40, 8, 74, 36, 18, 8, 4, 98,133,139,163,179,210,217,165,163,210,217,165,179,149, 84,106, 87, 87, 87,151,123,
+228,200, 17, 22,143,251, 40, 89,196,185,106,213,170,235,105,119,115,157, 89, 82, 32, 20, 8,248, 2, 71, 59, 91,251, 9,207, 15,
+ 27, 3, 0, 82,145, 72, 90, 87, 87,167,250,225,135, 31,218,196,185, 98,197,138,139, 5,197,149, 10, 30, 95, 32, 18,139, 68,141,
+179,132,219,219,217,184,201,101, 50,169,193, 96,200,219,185,115,167,185, 45,156, 31,126,248,225,229,244,123,185, 46, 36, 73, 81,
+ 36, 73,240,156, 28,236, 28, 29, 28, 28,148, 14,118,246,110, 18,161, 80, 86, 91, 91,155,255,243,207, 63,211,150,114, 22, 23, 23,
+ 35, 35, 35, 3, 29,122,244,192,153, 51,103,208,161, 67, 7, 76,156, 56, 17,147, 38, 77,130, 68, 34, 65, 79,219,251,120, 97, 68,
+ 31,220,191,127,191,217,235,110,137, 96,114,117,117,189,208,150,178, 4, 60,110, 22,108, 73, 92, 61,203,217,204,118,119,158,117,
+174, 14, 29, 58,228,184,105,211,166,208,247,222,123, 47,251,208,161, 67, 8, 9, 9, 65,122,122, 58,220,220,220,176,119,239, 94,
+188,251,238,187,217, 43, 87,174, 12,221,191,127,191, 75,112,112,240,210,118,222, 71,109, 5,199,201,113,114,156, 28, 90, 23, 88,
+ 38, 6, 71,231,204, 91,160,137,137,137,145, 10,133, 66, 60,122,244, 8, 69, 69, 69, 56,124,240, 32, 61,165,107,215,154,215, 66,
+ 67,171, 15, 31, 60,200, 26,141, 70,176, 44, 11, 95, 95, 95,140, 26, 53, 74,242,198,204, 89,106,162, 90,187,175,197, 55, 90,150,
+117,118,114,114,106,156, 52,247, 41,107,107,218, 52,152,205,102, 88, 89, 89,129, 32, 8,103, 75, 78, 64,169, 84, 78,156,177,232,
+185, 14,214,158,214,197,108,209,238,114,128, 4,120, 86, 0,207, 26,144, 90, 3, 18, 43, 64, 36,131, 62,241, 74, 57, 75, 68, 62,
+ 28, 30,246,146,155, 82,169,156,216,150, 76,114,116,116,252, 48, 54, 54,214,233,246,237,219,108, 77, 77, 13,212,106, 53,187,120,
+241, 98, 39, 71, 71,199, 15,219,155,241,133,133,133,107,103,204,152, 81, 52,126,252,120,219,152,152, 24,143,241,227,199,219,206,
+152, 49,163,168,176,176,112,237,159,185,160,124, 62,159, 58,123,246,172,253,162, 69,139, 38,155, 76,166,196,193,131, 7,151,133,
+134,134, 38,186,184,184,120,182,182, 47,195, 48, 1, 13,226, 10, 0, 40,138,130, 80, 40,132, 88, 44,134,141,141, 77,101, 78, 78,
+142,185,163,131,128, 71,215, 85,104, 60,109,132,226,200,110,129,174,206,238, 30, 47,214,213,213, 37, 1, 80, 89,152,196,144, 17,
+ 35, 70,240,140, 16, 97,246,235, 67, 58,191, 61, 53,210,119,251,198,215, 7,109,249,248,181,222,159,175,122,117,192,218,101, 83,
+ 38, 19,140,217,228,233,233,233,221,208, 81,189, 53, 16, 4,209,173, 95,191,126, 18, 51, 37, 34,175,165,220,205,206,188,151,167,
+ 30, 51, 60, 50,162,241,128, 97, 97,147, 28, 28, 28, 70,121,121,121, 13, 36, 8, 98,184,165,233, 28, 56,112,160,136, 47,145,145,
+ 30,174,142, 93,236,109,229, 62, 13, 43,156,156,156,134,187, 40, 20,175, 19, 44, 93,167, 84, 42,221, 69, 34, 81, 55, 75, 57, 7,
+ 15, 30, 44, 50, 83, 34, 82,225,100,235,236,236, 96,235, 48,110, 68,255,200,193,145, 61,250,244,233,221,115,104, 88,143, 30,211,
+ 64,155, 52,158,158,158,110,150,158,251,145, 35, 71,240,229,151, 95,162,111, 96, 32, 60, 61, 61,225,228,228,132,179,103,207,226,
+236,217,179,144,201,100,168,172,172,196, 55,223,124,131,184,184,184, 63, 93, 89, 52, 8,162,134,142,233,127, 5,158, 21, 89,173,
+137,189, 75,151, 46, 29,138,141,141,133,143,143, 15,166, 79,159,238,189,123,247,238,236,236,236,108,200,229,114,220,188,121, 19,
+239,191,255,126,246,202,149, 43,189,167, 77,155,134, 61,123,246,224,230,205,155, 49, 92, 53,207,129, 3,135,255, 4, 26,154, 8,
+217,122, 87,135, 5, 64,228,229,229, 85,250,251,251,187,249,248,248,144, 6,131, 1, 85, 85, 85, 56,117,242, 36,189,119,255,254,
+227, 6,131, 97, 46, 73,146,130, 61,223,127,255,141,179,139,203,160, 9, 19, 39, 18, 38,147, 9,207, 61,247,156,240,236,217,179,
+ 14,183,243,242,106, 90, 58, 32, 69, 81,141,238,209,236,217,179,177,121,243,102, 0,192,212,169, 83,255, 45,240, 76,166,134, 73,
+116, 91,133,212,134,142, 26, 48, 36,200, 42, 79,246,165,149,174, 79,117,141, 87,150,219, 21,121,141,172, 39,120, 98, 30,164,114,
+ 48,102,152,239,214, 70, 36,101, 63,234, 20, 32, 62,161,238,212,183, 75, 79,236, 79, 56, 28,133,199,163,223, 44,130, 68, 34,233,
+ 41,147,201,144,158,158, 94, 30, 30, 30, 94,105,109,109,109,227,231,231,231, 40,145, 72,122,182, 55,227,213,106,245, 3, 30,143,
+ 55,224,197, 23, 95,124,135, 36,201, 33, 12,195,156, 41, 43, 43,251, 90,173, 86, 63,176,240,193, 52,139,101,217, 21, 0, 14, 52,
+252,103, 52, 26, 65,146, 36, 88,150,197,152, 49, 99,176,110,221,186,192, 51,103,206, 32, 62, 62,222,126,202,148, 41, 87,149, 74,
+101, 37, 65, 16,175, 23, 22, 22, 54,235,146,149,149,149, 97,219,182,109,160, 40, 10,182,182,182,176,178,178,130, 88, 44,198,192,
+129, 3,139,215,175, 95,239, 23, 27, 27,107, 42,243, 85,179,194,218,170, 58, 7,137,159, 43,233,232,228,245,206,204,183,174, 1,
+136,181,244,220,229,114,185,149, 21,165,173,165, 88, 29,181,105,203,118,158,148, 71, 66,198, 23, 64, 76,214, 18,203,150,175, 97,
+197, 4, 37, 69, 27,230,201, 4, 0,129, 64, 32,181, 17,194, 32,144,242,105,185, 84, 72,252, 21, 55,135, 68, 34,145,201, 5, 48,
+ 52,183, 94, 72,242,132, 0,196, 4, 65,104, 44,229, 20,139,197,114,107, 33,171,111,110,189, 21, 95, 32, 32, 8, 66,140,102, 58,
+185, 79,120, 14,108,236,230,199, 2,167,251,191,111, 25,208, 52,141, 30, 61,122, 96,255, 47,103,112,234, 98, 42,202,243,211,240,
+234,196,145,232,216,177, 35, 24,134,105, 49, 77, 13,125,176, 44,120, 41,128,171,171,235,133,194,211, 54,173,110,107,105,211,224,
+147,156,129, 99, 50, 90, 28,157,232,230,230, 54, 51, 36, 36,100,234,225,195,135, 49,104,208, 32, 68, 69, 69,161, 75,151, 46,222,
+ 83,166, 76, 1, 0,244,239,223, 31,209,209,209,222,147, 39, 79,198,145, 35, 71,112,226,196, 9,132,135,135,207, 75, 76, 76, 84,
+171, 84,170,173, 92,117,207,129,195,127, 61,158,210, 34,255, 43, 2,235, 15, 16, 25,141, 93,116,219,182, 65,115,230, 12,132,167,
+ 79,227,120,183,110,181,102,179,121,161, 74,165,202, 3, 0,103,103,231,249,177, 7, 14, 92, 30,118,238,156,181, 33, 61, 29, 29,
+238,220, 1,175,115,231, 80, 75, 15, 28, 29, 29,221, 40, 10, 0, 32, 38, 38, 6,213,213,213,168,170,170,130,217,108,241, 92,194,
+224,243,137,190,206,142, 30, 80,225, 46, 24, 30,207,234, 65,160,161,143, 76,107, 93,208,225,129, 99,109, 21,191, 27,145,165,238,
+102,165,171, 49,245, 34, 5, 6, 24, 42,117,112,117,112, 3,143,228,245,109, 75, 38, 53, 56, 58, 18,137,164, 60, 41, 41,233,249,
+126,253,250,253, 10,192,177,225,255, 63,225, 98,221, 43, 44, 44,156,215, 46,235,145, 36, 87,156, 63,127,222, 57, 54, 54,246,221,
+175,190,250,138, 5, 0,131,193,208,216, 73,222, 96, 48,128,199,227,129, 97, 24,200,100, 50,240,120, 60,151,195,135, 15,187,140,
+ 29, 59,246,107, 0,205, 94, 39,169, 84, 10, 23, 23, 23,240,249,124,216,216,216,160,174,186, 66,182,237,147, 15, 7, 74,237, 92,
+236,231,205, 91, 72, 78,155, 54, 45,245,171,175,190,114,119,245,241, 13,202,200,200,200,125,121,250,140,203,123,247,238,173,133,
+229, 29,220,111,101,103,103, 11,131, 2,124,197,199, 15,212, 50, 82, 30, 11,105,233,199,144, 74,148, 16, 10,221, 33, 21,137, 32,
+ 16, 10, 29, 85, 69, 69,197, 44,203,222,183,232,142,100,217,155, 57, 57, 57, 84, 39, 15,133,176, 70, 99,174,145, 82,180,213,189,
+228, 91, 89,190, 97, 33,157, 1, 64,151,126,235,188,168,147,143, 80, 85, 81, 37,114,117,117, 77,107, 67, 58, 5, 46, 46, 46,194,
+212,244,123, 59, 29,237,173, 61, 92, 92,156,135, 2,128, 73,171, 73, 37, 12,186, 66,138,199, 83,150, 87, 84,148,232,116,186,123,
+150,114,102,101,101,241,124, 58,186,139, 14, 29, 59,253,157,179,181,188,131,163, 68,228, 98, 45, 19,200,133, 52, 93, 39,100,232,
+ 66,129, 72,164, 40, 44, 42, 42,101, 89, 54,171, 57,146,134, 14,227,192,174, 31,234,207,191,193,221,193,149,108, 22,118, 78,174,
+ 40,203,203,196,217,163, 71, 48,117,246,187, 22,221, 79, 27,215, 76,223,187,113,205,244,102,195, 51, 60, 35,136,254,124,205,147,
+ 30,112,225, 89, 78,149,170,229, 10,117,196,136, 17,255,218,177, 99,135,180,145, 34, 61, 29,145,145,143,123, 18,172, 90,181, 10,
+195,135, 15,135,159,159, 31,210,210,210,224,233,233,137, 67,135, 14,129,162, 40,254,204,153, 51,151,236,220,185,147, 19, 88, 28,
+ 56,112,248,255,138,102,135,172, 49, 44,203,208, 21, 21, 96, 13,134, 6,135,128,101, 89, 86,250,111, 97,195,151,218,218,218, 18,
+124, 55, 55, 16, 98,241,227, 63, 9,226, 79,247,208,230,241,120,109, 18, 88, 52, 13, 10,132, 9, 44, 88, 0, 36, 8,144,208, 72,
+132, 88,233, 18, 69, 44, 83, 46,161, 74,164,118, 4, 65,145, 32, 72, 2, 32, 0,214,196,128,102,233,182, 42, 35,182,182,182, 22,
+122,189,222,206,199,199,231,184, 78,167,179,171,127,176,177,255,169, 11, 71,211,116, 54, 73,146,120,237,181,215,208,160,244, 13,
+ 6, 3,178,178,178,160,211,233, 96, 48, 24,144,150,150,134,234,234,106, 24, 12, 6, 36, 38, 38,194,211,211, 19, 60, 30, 79,217,
+ 18,175,217,108,134,147,147, 19,148, 74, 37,244,117,213,178,131, 59, 54,143, 94,191,106,153,227,203, 62, 44,185,107,203,103, 76,
+231,206,157, 43,131,130,130, 28, 37, 18, 73, 69, 72, 72, 72,217,222,189,123, 15,163,109, 33, 26,142, 46, 91,182,172,215,192,129,
+ 3,253,108,173, 36, 38,153, 24,144, 82,117, 16,178, 90,240,205,197,240,243,242,101, 8,169,180,203,228,201,147,245,120, 28, 23,
+202, 34,206, 5, 11, 22,248, 4, 7, 7, 43,237,172, 69,117, 18, 1, 81, 36,166,104, 85,101,218,173,171, 0, 32,178,181,215, 66,
+ 36, 9,158, 58,117,170,182, 45,156,139, 23, 47, 14,232,212,169,147, 66,192, 99, 53, 4,109, 46,108, 92,163,215, 21, 83,124,129,
+ 6, 2, 65,216,188,121,243,140,109,225, 92,180,104,145,127,183,110,221, 92,156,108,196,117, 18, 62, 10, 37, 20, 93,200, 55,232,
+243, 4,102, 67,177,216,206, 78, 3,137, 52,244,213, 87, 95, 53, 52,199,217,224, 94, 61,235, 12,241,120, 60, 20, 22, 22,162,252,
+193, 21,148, 63,184,141,206,100, 13,122,185, 56, 65, 46,151,183,122, 63, 17,129, 25, 68,250, 3, 16,233, 15, 64, 16,129, 25, 68,
+ 83,203,207,138, 44,165, 82,217, 98,217,111,177,169, 47, 61,224, 66,123, 56, 79,156, 56,241,233,216,177, 99, 77,147, 38, 77,194,
+233,211,167, 65, 16, 4, 46, 93,186,132,130,130, 2, 12, 31, 62, 28, 44,203, 34, 37, 37, 5, 70,163, 17,233,233,233,152, 48, 97,
+ 2,162,162,162, 52,113,113,113, 31,115, 85, 61, 7, 14, 28,254, 83, 2,107, 96,189, 37, 55,176, 97,133, 73, 36, 74,101,230,204,
+129,205, 47,191,128,127,247, 46, 38,188,248,162,181, 72, 36,218,162, 80, 40,186, 43,149,202,190, 18,137,228,235, 5, 11, 22, 88,
+ 57, 68, 71,195, 53, 62, 30,170,211,167, 97,226,243,111,180,229,224, 90,173,182,193,141,129,161, 94,200,217,218,218,130, 97, 24,
+ 88,170, 93, 88, 26, 9,170,146,187, 16,162, 35, 88,160,230,100,205,224,132,151,179, 87,187,156,169,233,220,249,110, 53,223,103,
+189,115, 47,199,157,157,250,220,208, 18,252, 90,129,181, 16,133,133,133, 96,193, 36,180, 37,157, 58,157,174,170,174,174,142,240,
+241,241,113, 76, 74, 74,242,241,245,245,117, 0, 64,232,245,250,235,127, 38,243,149, 74,101,239,208,208,208,253, 97, 97, 97, 57,
+161,161,161,251,149, 74,101,239, 54,236,190, 43, 57, 57, 25, 20, 69, 97,230,204,153,168,169,169,129,193, 96, 64, 94, 94, 30,114,
+115,115, 97, 48, 24,144,154,154,138,140,140, 12, 24, 12, 6,164,164,164, 64,175,215, 91, 34,220, 96,101,101,133,202, 50,181,108,
+223,182,207, 70,127,188,234, 35, 73,213,189, 36,228, 23, 22,131,161,181,133, 31,125,244, 81,182,143,143,207, 37,131,193,224, 79,
+211,244, 40, 0,251,218, 88,222, 82,186,116,233, 50,112,227,198,141,125, 87,127,250,189,208, 70, 94, 13,145,173, 61,132,118, 82,
+ 8, 61,195, 49,245,253,207,121,219,183,111,189,117,233,210,165, 18, 88, 54, 50,143, 4,144,210,163, 71,143,190, 69, 69, 69, 3,
+194,194,194,194,221, 58,117,146,201, 20,202, 10,145,194,181,148,209,235,174, 66,225,214, 63, 38, 38,230,250,185,115,231, 84,109,
+225,244,244,244,236,191,117,235,214, 94, 29, 59,118,236, 37,181,182,150,235,106,106,126, 48,107, 52,177,148, 92, 46,132, 68, 54,
+ 44, 46, 46,238,210,222,189,123,139,218,194, 25, 16, 16,208, 47, 58, 58,186, 71,247,238,221,123,185,123,123,203, 37,206,138, 50,
+153,171,187, 90,226, 23, 40,128,194,125, 72, 76, 76,204,149,243,231,207, 91,154, 78,144, 36, 9, 30,143, 7,185, 92,142, 11, 23,
+ 46, 32,170, 95, 23, 40,201,114,132,116, 84, 98,228,244,215,241,219,111,191,129,207,231,227,207,186,173, 77,184,175,173, 10,162,
+182,138,175,214, 56, 85, 42,213,214,196,196,196, 47, 94,122,233, 37, 12, 25, 50, 4, 55,111,222,196,226,197,139,179,207,159, 63,
+ 15, 0,184,121,243, 38,214,174, 93,155,157,144,144,128,233,211,167, 35, 50, 50, 18, 41, 41, 41, 49, 92,240, 81, 14, 28,254,207,
+224, 15, 90,228,255, 50, 26,154, 8, 47, 60,249,237,109,103,103,165,211,105,242, 47, 92,184, 96, 28, 53,106,148, 64, 34,145, 96,
+226,164, 73,100, 7, 15,143,126, 23, 98, 98,206,202,164, 82, 98,210,178,101,242,224,224,224,198, 74,254,215, 95,127,213, 86, 85,
+ 85,150,117,232,208,193, 54, 47, 47,175,210,146,131,151,150,150, 66,161, 80,128,162, 40,212,213,213,129,162, 40,200,229,114,104,
+ 52, 26,139,251, 96,213, 85,147,167, 47, 93, 72, 29, 50,104,226,236,154, 97,217, 70,153,153,117,232,109, 69,178,160, 97,130, 78,
+195,194,204,176,188,107,172,109,143,179,126, 81, 21,107,125, 75, 51,243,207,108,117,210,178,134,211,109,201,164,138,138,138, 15,
+103,207,158,189, 47, 40, 40,200,209,202,202, 10, 46, 46, 46,228,155,111,190, 89,146,151,151,183,166,189, 25, 31, 16, 16, 48,217,
+223,223,127, 75,108,108,172,125, 78, 78, 14, 0,116, 90,182,108,217,160,140,140,140,185,233,233,233,150, 4, 47,221,191,113,227,
+198, 45,131, 7, 15,150, 69, 68, 68, 52, 10, 44,163,209,216,248,253,236,239,134,230,216,150,192, 48, 12,196, 98, 49, 98,191,221,
+ 60,236,227, 85, 31, 73,202,210, 19,112,235,210,105,196, 61,208,107, 54,124,183,231,170,184,193,173,108,235,249, 58, 73,187, 90,
+217, 90,237, 31, 52,116,132,235,184,169,179,201, 85,171, 86,177,191,159,138,101,191,251,106, 14,188,253,191, 0, 65,144,200,200,
+188,137, 89,147,250,179,169,183, 83,123, 0,112,111, 43,231,167,159,126, 90,151,145,145, 81,181,127,255,126,113,135, 14, 29,124,
+ 72,146, 20, 21, 21, 23,151, 77,158, 60,249,230,229,203,151,203, 25,134,153,211,174,116,224, 23, 88,155, 0, 0, 32, 0, 73, 68,
+ 65, 84,254,254,123, 93, 76, 76,140,212,201,201,201,159, 36, 73, 81, 85, 85, 85,233,236,217,179,147, 99, 99, 99,107, 24,134,153,
+219, 30,206,200,200,200,218,125,251,246, 73, 61, 60, 60,186,144, 36, 41, 42, 44, 42, 42,157, 52,105, 82, 74, 66, 66, 66, 53, 30,
+ 7, 26,109, 18, 19,231,103, 96,224, 11,143,127, 75, 36,146,178,128,128, 0,135, 81,163, 70,129,166,105,228,228,228,224,246,237,
+219, 24, 49,229, 21,216,219,219,227,220,157, 59, 80,169, 84,248,224,131, 15,160,213,106,113,239,222, 61,213, 95, 89,121,212, 55,
+237,177, 42,149,234, 15, 55,107,218, 81,255,198, 32,162, 79,137, 43, 47,226, 66, 75,253,172, 90,226, 4,128, 97,195,134, 77, 31,
+ 59,118, 44,126,249,229, 23, 44, 94,188, 56,123,229,202,149,222,147, 38, 77, 66, 90, 90, 26, 66, 67, 67,177,112,225, 66,239,141,
+ 27, 55,102,179, 44,235,221,167, 79, 31,184,187,187, 63,175, 82,169,222,231,158, 91, 28, 56,252,159,192,133,103,190,255, 39, 4,
+ 22,240, 68,135, 50,214, 90, 50,105,199,214,175,109,222,157,191,176, 46, 48, 48,208,206,197,197, 5, 36, 73, 98,196,200,145, 68,
+239, 83,167,172,248, 74, 37, 28,186,118, 5,203,178, 96, 24, 6, 23,227,227,113,246,236,217,186, 31,190,219,229, 54,227,141, 55,
+198, 0,104,118,228, 78, 67,179, 26, 65, 16, 40, 41, 41,105, 20, 88, 98,177, 24,133,133,133, 80, 40, 20, 16, 8, 4,160, 40,138,
+ 7,128, 2,208, 98,179,163, 66,161,248, 62,122,109,218,210,188,144, 69, 94,145, 82,146, 56, 89, 87, 4, 18, 4,204, 44, 3, 82,
+203,130, 97, 88,232, 77, 64,144, 27,101,119, 70, 15,219,235,169,167,115, 20, 10,197,247, 42,149,229,207,154,156,156,156,115, 90,
+173,246,237,186,186,186, 3, 0,200,171, 87,175, 50, 15, 30, 60,120,199,210, 14,233, 77, 65, 34,145,188, 31, 27, 27,107,191,102,
+205,154,138,179,103,207, 86, 13, 30, 60,216, 38, 58, 58,218, 97,242,228,201,239,195,130,232,240, 42,149, 74, 11, 32,166,184,184,
+248,157, 30, 61,122,160,188,188, 28, 6,131, 1,201,201,201,240,245,245, 69, 98, 98, 34,186,116,233,130,235,215,175,195,223,223,
+ 31, 52, 77, 67,167,211,129,182, 32,208, 86, 97,222, 35,185, 84, 95, 97, 93,120,237, 4, 50,111, 37,226, 68,182, 94,179,225,187,
+125, 39,186,134,134,215, 89, 42,124,159, 68,103,103,105,144,139,163,195,169,207, 55,174,179, 42,184,118, 18,251,183,127,206,254,
+126,236, 88,119,145, 53, 94,235, 61,244,221,137, 38, 35, 58, 48, 44, 4,145,145,125, 48,166,123, 42,193,215,163,226,108, 82,203,
+145,204,155,226, 60,240,253,207, 97, 58, 32,200,203,203,107, 12, 69, 81, 78, 0,140, 52, 77,167,193,194, 41,104,154, 75,167, 14,
+ 8, 82, 42,149, 99,196, 98,177, 27, 65, 16, 90,173, 86,123,247,175,224,244,246,246, 30, 67, 81,148, 43, 0, 13, 77,211, 89,104,
+227, 84, 57, 67,134, 12,217,176,107,215,174, 5,122,189,222,225, 9,183,149, 56,121,242, 36, 12, 6, 3,132, 66, 33, 43,147,201,
+144,151,151,199, 2, 80,177, 44,251,246, 95, 85,113,140, 31, 63, 30, 87,175, 94, 93, 5, 96, 69, 75,219,149,151,151,243,236,237,
+237,205, 79, 10,175,230,162,192, 91,194,121,237,218,181, 79,223,124,243,205,247,227,226,226,242, 87,174, 92, 25, 58,109,218, 52,
+ 28, 57,114, 4, 30, 30, 30,200,204,204,196,130, 5, 11, 64, 16,132,247,198,141, 27, 83,246,238,221,171, 44, 42, 42,250,140,123,
+102,113,224,240,127, 10,196,255,202,137, 52,217, 7,139, 96, 8,190,159,175, 47,109,208,212,238,126, 99,250,116, 77,106,106, 42,
+104,154,134,217,108,134,238,250,117,212,157, 58, 5,179,217, 12,150,101,113,237,234, 85,204,157, 51,167, 86,167,169,253,182, 83,
+167,142, 44,193,178,178, 39,168,254, 48,219,182,161,161, 45, 16,143,155, 8,181, 90, 45,248,124, 62,228,114, 57, 74, 74, 74, 32,
+ 20, 10, 33,145, 72,208,173, 91, 55,210,221,221, 61,170,137,228, 61,197,153,156,156,108, 66,181,126,194, 47, 83,231, 21,185,107,
+204,236, 76,219, 78,232,192,151, 60,238,111, 5,192,201,138,196,144, 64, 30,236,121,165,236,237, 61, 47,171, 8,115,213,132,228,
+228,100, 83, 75,156,207, 66,169, 84,118, 14, 10, 10,250,186, 33, 14, 86,191,126,253,200,224,224,224, 47,149, 74,101,231, 22,118,
+107,145, 83, 44, 22,139, 0,224,244,233,211,229,241,241,241, 35, 79,159, 62, 93, 14,128,109,248,223, 18, 78,146, 36,119,108,223,
+190, 29, 82,169, 20,102,179, 25, 6,131, 1,122,189, 30, 6,131,225, 15, 31, 71, 71, 71,156, 57,115, 6, 12,195, 28,111, 45,157,
+ 1,193, 33,181, 85, 60,219,226, 61,191,254,142,147, 15,141,181,237, 16, 87,141,156,129, 10, 89, 23, 55,167,199, 2,163, 44, 61,
+ 1,247,110, 39,226,196,241,163, 41, 58,160,160,178, 26,159, 84, 86, 35,164, 78, 7,187,158, 1, 40, 61,117, 96, 41,177,240, 21,
+ 16, 32,154,156, 51,207, 34,206,122,129, 50,139,166,233,158, 52, 77,247, 4, 48,171, 5,209,210, 38, 78,157, 78,215, 75,171,213,
+254,165,156,109, 77,103, 67, 31, 44, 0,248,232,163,143,174,199,199,199,191,116,253,250,245,193, 13,159, 59,119,238, 12,202,201,
+201, 25, 84, 80, 80, 48, 40,231,168,136,186,115,231, 14, 47, 49, 49,145,159,152,152,232,145,148,148, 20,103,105,249,108, 14, 79,
+118,112, 87,169, 84, 43,159,113,154, 26, 57,137,192, 12,226,235,141,179,127,136,141,141, 85,252, 85,156, 0,144,153,153,249,245,
+174, 93,187, 60,187,117,235,230,222, 16,138,225,219,111,191, 5,240, 56,146,253,231,159,127,142,222,189,123,195,221,221,221, 57,
+ 41, 41,201,171,176,176,112,123, 91,239,205,118,130,227,228, 56, 57, 78, 14, 22, 8, 44,130,161,105,154,129,179,139,179, 85,137,
+ 90,253,213,236,217,179,202, 86,175, 94,173,251,127,237, 93,121, 92, 84,213,251,126,238,157,125,103, 21, 24, 65, 81, 65, 4,113,
+ 65, 92, 48,181, 12,197,157,178, 92, 75,203,221,220,181,197,204,212,159,184,164,169,165,102,230,146, 90,238, 75,102,101,185,100,
+148, 95,200, 21, 17,220, 80,217, 20, 20, 24,246, 29,134, 89,238,242,251, 3,102, 26, 8, 97, 6, 53,177,238,243,249,220,207,157,
+ 59,119,230,153,115,206,189,115,206,115,223,247, 61,239,137,136,136,128,254,206, 29, 84,196,196, 32, 60, 60, 28,115,231,206, 45,
+127,103,218, 52, 77, 69,121,233, 70, 55, 87, 23,103,154,102, 64, 16, 76,157, 22, 18,146, 36,147, 19, 18, 18, 0, 0, 58,157, 14,
+ 95,126,249,165,209, 96, 48, 64,165, 82,129,101, 89,236,216,177,131, 1,128,190,125,251,202, 5, 2,129, 85, 75,144,100,100,100,
+ 92, 47,126,152,209,255,251, 55,166, 39,223, 62,244,115,113,135, 60, 61, 70, 73,212,120,173, 3,139, 86,146, 84, 60,184,248, 77,
+209,197,109,195,146,203, 11, 30, 14,200,200,200,184,110,107, 35,185,185,185,253,223,129, 3, 7, 92,174, 94,189,202,234,116, 58,
+164,167,167,179,243,231,207,119,113,115,115,251,191,199, 81,233,133,133,133, 32, 73,146,169,106, 23,198, 86,245,158,158,158,126,
+243,232,209,163, 63,157, 61,123, 22, 30, 30, 30,160,105,218, 44,176, 44,247,124, 62, 31, 4, 65, 96,219,182,109,133, 4, 65, 44,
+172,143, 87, 36, 18, 97,251,145,147,167, 62,216,122,236,200,145,240,168, 99, 13,181, 92, 1,128, 76,169, 90,241,249,186, 79,237,
+ 76,174,198, 3, 87, 51,138, 9,154,173,221, 85,103, 72,175,188, 71,106, 23, 88, 13,227,124, 26,229,124,134,156,207, 18,149, 51,
+253, 52, 68,211,166, 77,241,253,247,223,219, 28,131,229,223,138,248, 91,112,123, 67, 57,111,222,188,249,233,168, 81,163,178,194,
+194,194,182, 84, 84, 84,148, 85, 61,188, 25, 62,255,252,243,207,102,205,154,149,149,158,158,206, 89,174, 56,112,224,240, 76, 81,
+107,154, 6,134, 71,158,223,182,125,235,160,195, 7, 15,185,241,120,164,219,189,123,247,175,188, 61,105, 82,122,100,100,164,163,
+160,117,235,110, 36, 73, 50,250,143, 62,186, 88, 90, 92,148,191,247,219,111, 60, 91,182,108, 17, 80,181,216, 51,203,240,200,243,
+117,253, 96,126,126,254,238,121,243,230,117,219,179,103,143,112,221,186,117,101,233,233,233,103, 46, 95,190, 60,104,203,150, 45,
+146, 29, 59,118,148, 23, 21, 21, 29, 63,121,242,228,208,224,224, 96, 74,175,215, 91,157, 95, 40, 59, 59, 59, 14,217,217,126,228,
+250, 29, 99,226,183,239,235,207,242,200, 30,168, 16,130, 96,233, 11, 36, 85,122, 38, 59, 35,227, 0, 0,170, 33,141, 36,145, 72,
+ 2,164, 82, 41, 18, 19, 19, 11,186,117,235,166, 23,137, 68,130, 22, 45, 90, 56, 73, 36,146,128,134, 54, 60,203,178,108, 65, 65,
+ 1, 88,150,229, 3, 32,104,154,230, 3, 0, 83, 95,210,162, 26, 16, 10,133,111, 76,156, 56,241,167, 45, 91,182,244,239,219,183,
+ 47,188,188,188, 96, 52, 26,225,235,235, 11,189, 94, 15, 31, 31, 31, 84, 84, 84,224,139, 47,190, 64,105,105,233,123, 25, 25, 25,
+ 5,117,241, 49, 12, 3,177, 88, 12,145, 72, 4,223,182,237,203, 37, 18, 9, 26, 42,174, 0, 64, 46, 66,171,135,151, 78, 32,241,
+198, 85, 28,142,209, 20,150, 25,152,129,241, 57,229,183,106,126,174, 92,143,178,224,129,211, 43,133,183, 17,165, 79,130,243,105,
+148,243, 89,115, 90,198, 96, 89,243,217, 39,133, 71,197, 68,213,133,219,247, 65, 76,127,113, 51,139,219,155,107,205,113,213, 16,
+ 78, 19,210,210,210,182,153,150,192, 33, 73, 50,105,206,156, 57,243,211,211,211, 55,104, 52,154, 45, 26,141,102, 41,215,181,115,
+224,192,161, 81, 10,172,123,247,210,226,142,254,120,236,227, 99,223, 31,237,201,178, 36,143, 37,136, 50,128,252, 57, 46, 46,174,
+ 90,240,186,151,131,131,114,226,148,137,163, 9,134, 16, 16, 4, 67, 51, 60,242,252,189,123,105,113,245, 88,155,110,244,233,211,
+103,115,112,112,240, 36,154,166,215, 38, 38, 38,158, 33, 73, 50,118,224,192,129, 31, 80, 20,245, 89,114,114,242, 25, 95, 95,223,
+223, 14, 31, 62,252, 33, 77,211,182, 90,136,168,140,140,140, 61,168, 35, 6,172,129, 88, 14,192, 78, 44, 22, 23, 93,189,122,245,
+ 80,207,158, 61,223, 32, 8,194, 14, 64, 81, 67, 9,117, 58,221,156,146,146, 18,231,209,163, 71, 27, 1,248,190,254,250,235, 11,
+ 19, 18, 18, 4,101,101,101,201,182,240,164,166,166,234, 60, 61, 61,135,206,152, 49, 99,167, 80, 40,236,139,191,146,180,153,132,
+ 28, 88,150, 5, 77,211,199,171,218,230,145, 16, 8, 4,165, 67,134, 12, 81, 88, 97,225, 42,181,182,124,153,185, 37,115, 86,238,
+ 62,185, 90,103,100, 24,138, 97,167,197,103,151,215, 58,234, 95,137, 67,187, 39,205,105, 11,158, 23, 78, 0,152,254,226,230,125,
+184,189,217, 44,160, 76,110,195,154,199, 79, 11, 85, 22, 39, 22,192,178,250, 62, 91,215,186,130, 13,229,172,137,244,244,244,175,
+185,153,130, 28, 56,112,248,175,129,243, 79,115,156, 28, 39,199,201,113,114,156, 28, 39,199,249,159, 3,201, 53, 1, 7, 14, 28,
+ 56,112,224,192,129,195,147, 5, 81,135, 10,181,101,165,236,134, 40,217,155, 28, 39,199,201,113,114,156, 28, 39,199,201,113,254,
+231, 56,235,227,190, 9, 14, 79, 69,120,113,156, 28, 39,199,201,113,114,156, 28, 39,199,249,223,227,252, 87,129,115, 17,114,224,
+192,129, 3, 7, 14, 28, 56,112, 2,171, 81,224,109, 84, 38,133,188, 9,224,215,170,227,134, 66, 10,224, 35, 11,190, 83, 0, 62,
+ 4, 32,230,154,185, 81,131,199, 53, 1,135,134, 66,173, 86,183,105,219,182,237,213,122,146, 21,115,224,192,225, 57, 6,255, 81,
+ 39,188,188,188, 46,144, 36,217,138, 36, 43, 53,152,101, 46, 36,211,235,154,123,150,101,239,221,190,125,187,199,163, 56, 91,182,
+108,105,230, 36, 73, 18, 4, 65,128, 36, 73, 24,141, 70, 37,143,199, 43,169,141,147,166,233,180,248,248,248, 46,141,168,205,246,
+ 57, 56, 56, 24,183,108,217,242, 85, 96, 96, 96,235,252,252,252,178,169, 83,167, 14,184,121,243,102, 8,128,183,108,228,106, 79,
+ 16,196,222,174, 93,187, 30,155, 53,107,214,119,254,254,254,202,178,178, 50,241,225,195,135,221,182,109,219,246, 39, 77,211, 19,
+ 1,196,113,183,105,227,129,155,155, 91, 32, 65, 16,155, 21, 10, 69,151,210,210,210, 43, 0,102,106, 52,154,107, 92,203,252,163,
+152, 44, 18,137, 6,250,248,248,116,211,233,116, 5,247,238,221,139,170, 74,233,146,249,132,248,237, 0,252,159, 88, 44, 14,242,
+246,246,110,150,144,144,240,208, 96, 48, 92, 70,101,186,150,162,199, 37, 87,171,213,109,130,130,130,206,173, 90,181,202,105,225,
+194,133,231,162,162,162,122,105, 52,154,120,238,178,114,120, 22,104,214,172,153,125, 89, 89,217, 78,146, 36, 3, 37, 18,137,155,
+ 82,169,132, 66,161,200, 20,139,197,177, 50,153,108,210,201,147, 39, 11,185, 86,122,194, 2,139,199,227,121, 68, 69, 69,185, 40,
+149, 74,208, 52, 13,134, 97,192, 48,140,121,253,193,170, 37, 5, 77,194, 10, 52, 77, 35, 56, 56,184,206,213,132,249,124,126,179,
+171, 87,175,186, 40, 20,127,165, 90, 50, 24, 12,232,216,177, 35, 19, 19, 19,227, 82,115, 33, 97,189, 94,143,206,157, 59,179,141,
+168,189,198, 58, 57, 57,233, 83, 83, 31,188, 80,161, 51,244,152, 49,127,197,255,141,126,181,183,221,197,139, 23,201, 87, 94,121,
+ 69,112,246,236,217,183, 1,236,181,146, 75, 74, 16,196,174,197,139, 23,127,202, 23,202, 92,142,158,188,192,255,114,251,129,135,
+237,219,182, 36,230,205,158, 33,155, 51,103, 78,148,159,159,223, 55, 52, 77,191, 8, 64,199,221,170,141,227,255, 34, 16, 8,126,
+ 90,189,122,181,123,166, 70,131,245, 27, 54,116, 7,176, 5, 64,119,174,105,254, 49,124,180,108,217,178,213, 99,198,140, 1, 69,
+ 81,208,106,181, 77,147,146,146,218, 45, 94,188,248,245,164,164,164,110, 0,146, 31,147,191,137,143,143,207,157,121,243,230, 57,
+118,235,214, 13, 36, 73,162,176,176,176,233,185,115,231,186,239,218,181,235,237, 7, 15, 30,248, 1,200,121,156, 31,112,112,112,
+216,255,217,103,159, 57,137,197, 98,124,251,237,183, 78,163, 70,141,250, 19,192,139,143, 33,178, 72, 39, 39,167, 57, 0,130, 25,
+134, 17, 3,184, 92, 80, 80,176, 18,128,129,187, 93, 56,212, 5, 39, 39,167,201, 89, 89, 89, 95,201,100, 50,161,189,189, 61,164,
+ 82, 41,132, 66, 33, 68, 34, 81,115, 7, 7,135,230, 10,133, 98,240, 27,111,188, 49,243,208,161, 67, 59,185,214,122,130, 2,139,
+ 36, 73, 72,165, 82, 28, 62,124, 24, 60, 30, 15, 66,161, 16, 2,129, 0, 2,129,160,218,107,211,113,179,102,205,234,253, 49,147,
+ 85,234,248,241,227,176,179,179,131, 74,165, 66,219,182,109, 65, 16, 4,196, 98, 49,194,195,195,171,241,118,233,210,229,177,178,
+136, 55, 4, 35,250, 86, 38,233,172, 45,121, 99,232,204, 52,188, 50,102,213,240,114,157,241, 37,150, 37,180,153, 5,198,252,229,
+235,190,138,235,212,174, 45,113,228,200,145,206,206,206,206,111,218, 32,176,230,118,235,214,237, 56, 5,145,235,196,241, 19,198,
+ 79, 32, 9,106,216,132,247,151,157,139, 73, 42,216,233, 31,120, 32, 39, 39,109,218,151, 95,126, 25, 63, 99,198,140, 57, 0,214,
+ 90, 91,254, 46, 93,186, 60, 96, 24,166, 89,149, 72,206,149, 74,165,234,136,136, 8,170, 17,220,107, 77, 1,172, 3, 96, 4,176,
+ 6,128,101,210,205, 54, 66,161,112,173,193, 96,200, 71,229, 66,191, 15, 27,227,159,197,221,221,221,239,173,183,222,114,206,203,
+201,193,250, 13, 27,204, 77, 14, 43, 22, 37,127,210, 8, 12, 12,108, 37,145, 72,214, 1, 8,212,233,116,238, 0, 32,149, 74,211,
+ 89,150,253, 65,171,213, 46,138,137,137,209, 54,244,129, 22, 64, 59, 60,122,201, 38,118,237,218,181,241, 31,126,248,225,189,103,
+192,217,194,213,213,117,213,200,145, 35,113,226,196, 9,156, 60,121,210, 40,145, 72,248,227,199,143, 39,102,206,156,233, 48,111,
+222,188,193, 0,190,120,204,166, 29,188,108,217, 50,199,182,109,219,226,232,209,163,184,118,237,154,182, 77,155, 54,210,222,189,
+123,131,199,227, 57, 46, 90,180,104, 16,128,221,143,243, 3, 5, 5, 5, 43, 87,172, 88,177,103,243,230,205,202,228,228,100, 44,
+ 91,182,204,121,214,172, 89, 17, 0,122,219, 32,178,196, 0,230, 0, 8,230,241,120, 47,142, 31, 63,158,154, 61,123,182,128, 36,
+ 73,227,198,141, 27,155,236,220,185,115,180, 64, 32, 8,204,203,203, 43, 5, 7,212, 49,206, 25, 24,134, 17, 0,144, 0,208,213,
+119,252,111,170,187,163,163,227,244,252,252,252, 45, 77,155, 54, 69,147, 38, 77,204, 99, 45,195, 48, 40, 43, 43,131, 86,171, 69,
+171, 86,173,132,109,219,182,221, 49,115,230, 76,193, 87, 95,125,181,149,187, 99,108, 23, 88,189, 1, 68, 88,188,215, 27, 64, 4,
+ 65, 16, 96, 24, 6, 2,129, 0, 60, 30, 15,124, 62,223, 44,124, 44, 95,155,182, 71, 8,161,155, 53,110,102,162,164,164,196, 44,
+174,236,236,236,204,150, 48,163,209,248, 55, 78,154,166, 65,146, 36, 91, 23,231, 19,130,153,243,187,141,126,216, 29, 61,255,141,
+221,209,149,199,131,198, 84,238,119, 71, 3,225,151,167,173, 91,187,181,103,179,185, 43,191, 93,157,151, 87,152,237,239,209,132,
+122,115, 76,111, 79, 81,110, 86,174, 83,203,150,161, 0,178,109, 40,103,175,105,211,166, 29, 61,122, 54, 81, 46, 22,139, 68, 60,
+ 18,188, 54, 94,173, 4,238,170,214,142, 77, 6,116, 19,165, 36, 39,255,249,246,219,111, 79,155, 49, 99,134,147,133,192,170,183,
+238, 44,203,170,207,156, 57, 3, 62,159,143,144,144, 16,135,170,107, 76, 89, 83,247,167,209,158, 22, 88,156,149,149,245, 70, 69,
+ 69, 5,186,116,233,242,106, 94, 94, 94, 48,128, 88, 0, 29,134, 14, 29,250,231,119,223,125,167,140,137,137, 65,247,238,221,165,
+ 0, 70, 61,195,114,254, 13,106,181,250, 12,128,126, 4, 65, 64, 95, 81,161, 95,247,121,181,101,238,162,107,136,171,167, 94,206,
+128,128, 0, 63,137, 68,114,225,243,207, 63, 87,249,251,251, 19, 2,129, 0, 20, 69, 33, 33, 33,161,217,190,125,251,222,185,114,
+229,202,160,192,192, 64,255, 90, 22, 53,183,166,238,237,254,252,243,207, 50, 47, 47,175, 90, 5, 99,121,121, 57,207,203,203,235,
+229, 71,136,161,167,205,153,150,149,149,245, 90,191,126,253,166,101,102,102,222,161, 40,106, 1,128,246,206,206,206, 49,195,135,
+ 15,135, 84, 42, 13,214,106,181, 95, 60,206,117,119,113,113, 25,218,163, 71, 15,108,222,188, 25,107,214,172, 9, 1,240,251, 47,
+191,252,210,183,184,184, 56,252,213, 87, 95,133,189,189,253,107,133,133,133,187, 31,227, 94,106,211,173, 91,183, 29,239,189,247,
+158,242,151, 95,126,129,143,143, 15,138,139,139, 49,113,226, 68,151, 77,155, 54,253, 15,192,203, 22, 34,235, 81,156,254, 98,177,
+120,247,193,131, 7, 21, 94, 94, 94, 94, 66,161,144,244,242,242, 66,126,126, 62, 42, 42, 42,196, 43, 87,174,236, 32,145, 72,174,
+125,241,197, 23,187, 1, 12,123,198,255,163, 34, 0, 42, 0,246,176,205,189,122,179, 14, 62,115,124,170, 64, 32,128, 88, 44,134,
+ 68, 34,129, 68, 34,193,189,123,247,190,231,241,120, 19, 8,130, 48, 90,195, 73,252, 53,112, 5, 0,136,170,239, 24, 0,211, 8,
+250, 37, 15,130, 32, 54, 2, 8, 70,101, 28,117,132,139,139,203,220,172,172,172, 84,107, 57,213,106,181, 83, 94, 94,222, 23, 77,
+155, 54,133,139,139, 11,170, 30,200,209,165, 75, 23, 84, 84, 84,224,214,173, 91, 96, 24, 6, 73, 73, 73, 80,169, 84,232,208,161,
+195, 23, 97, 97, 97, 71,195,194,194,242,158, 98,221,107,213, 34,207,187,192,250, 95,213,147,165,169, 50,166, 99,208, 52,109, 22,
+ 88, 53,197, 79, 77,193, 69, 16, 4, 88,150, 37,234,177, 96,145,122,189,222, 44,174, 84, 42,149, 89,156, 81, 20, 85,171,192,106,
+ 40,236,237,237,127, 45, 44, 44,220, 0,224, 76, 67,190, 63,126,252,248,191,197,115,124,244,209, 71, 15,115,114,114,232,161,189,
+218,136,247,238, 61,145,247,118,232,203,110,254,222, 30,190,114, 39,151,128,242,242,242, 43, 0, 4,182, 24, 68,252,253,253,149,
+ 91, 15, 70,100,143,153,179,110,185,135,171,130,238,234,227,170,242,118,148,139,156, 36,124,202,158,165, 10,101, 50, 89, 59, 0,
+121,182,150,221,206,206, 14,199,143, 31,111,108,247,154,131, 86,171, 69, 65, 65, 1,182,109,219,166,154, 54,109,218,217,188,188,
+188,185, 67,135, 14,221,124,244,232, 81,121, 97, 97, 33, 12, 6, 3, 0,104, 27,225,255,100,133,131,131,195, 75,193,193,193,162,
+ 67, 71,142,136, 88,150, 45, 67,229,114, 68,165, 44,203,206,250,167, 11, 35,145, 72, 62, 88,185,114,165,202,223,223,159,200,205,
+205, 5,203,178, 32, 73, 18,206,206,206,152, 63,127,190,100,209,162, 69,238,241,241,241, 31,163, 1,203,206, 0, 32, 30, 37,132,
+ 0, 64, 38,147,209,176,125,114, 76,173,156, 20, 69, 17, 61,123,246,156,159,155,155,219, 65,171,213,126, 98, 5, 15, 5,224,120,
+ 90, 90,154,229,205,125,237,206,157, 59, 90, 62,159, 47,109,217,178,101, 80, 92,220,227,133, 44,182,105,211,230, 5,129, 64,128,
+203,151, 47,235, 44, 58,247,136,235,215,175,235,134, 13, 27, 38,110,214,172,217, 11,133,133,214,133,164,168,213,234, 54,222,222,
+222,191, 57, 59, 59, 75, 77, 75, 86, 57, 57, 57, 9,214,174, 93,171, 76, 75, 75, 3, 69, 81, 88,184,112, 33, 66, 67, 67,225,224,
+224,128, 9, 19, 38,184,238,216,177, 99, 63,128,206,117, 89,174,196, 98,241,238,196,196, 68, 95,181, 90, 45,189,116,233, 18, 58,
+118,236,136,220,220, 92,100,102,102,162,180,180, 20,153,153,153,152, 52,105,146,203,250,245,235,213,141,232, 63, 84,200,231,243,
+ 33,151,203,237,139,138,138, 30, 39,142, 77, 12, 64, 4, 0,124, 62,223, 44,174,196, 98, 49,196,226,255,196,188, 32,119,130, 32,
+226, 4, 2,129, 88, 46,151, 11, 73,146,132, 92, 46, 31,224,225,225,113, 43, 36, 36,164,253,190,125,251, 82,172, 33,169,168,168,
+216, 43,149, 74, 5, 77,154, 52, 1, 0,244,239,223, 31,227,199,143, 71, 78, 78, 14,147,145,145, 1, 95, 95, 95, 50, 34, 34, 2,
+ 89, 89, 89,184,118,237, 26,186,118,237, 42,112,116,116,220, 11, 96,208, 83,172,219, 35,181,200,243, 44,176,106, 86,206, 12,134,
+ 97,170,137,171,218, 44, 87,150, 22,172,250,220,121, 4, 65,128,166,105,184,185,185, 65, 38,147, 65, 38,147,153,207,153,196,156,
+229,198,178,108,131, 93,132,173, 91,183,238, 35,147,201, 94, 60,123,246,236,171, 0,194,173,253,222,200,121,119,204, 86,171,154,
+ 8, 8, 8,184,176,112,225,194,129,127,252,241, 71,193, 11, 29, 91, 49,226,140,135,121, 50, 7,231,142, 68, 19,151,144, 25, 83,
+166, 94, 4,112,208,134, 34,102, 84, 84, 84,136, 91,184,145,218,140,162, 98,125, 43,149,157,125, 43, 59,133,172,133,179,157,147,
+131, 68, 68,202, 93, 93,154, 26,141,198, 66, 0, 25,245, 17, 89,186, 5,197, 98,177,158, 32, 8,190,189,189, 61,236,236,236, 12,
+ 5, 5, 5, 21,129,129,129, 16,137, 68,185, 66,161,208,106,119, 97,215,174, 93,179,104,154,118,169,235, 51, 66,161, 48,251,210,
+165, 75,174, 86,214,119, 81, 64, 64, 64,239, 45, 91,182, 52,241,241,241,193,182,109,219, 84, 71,143, 30,221,189,127,255,126, 20,
+ 22, 22,226,254,253,251,152, 56,113, 98, 49, 42,221,136,141,205,148,126,110,196,136, 17,216,185,115, 39, 91,245, 16, 33, 39, 8,
+162,163,157,157,221,221,219,183,111,255,227,113, 46, 36, 73, 14,240,245,245, 37,138,138,138,192,178, 44,120, 60, 94,181,109,254,
+252,249,210, 73,147, 38, 45,238,222,189,251,124,129, 64, 80, 76, 81,212,161,210,210,210, 79,110,221,186,213,168,130, 85, 95,124,
+241,197,119, 31, 62,124, 24,234,233,233,249,243, 99,208,176, 20, 69,233, 89,150,149,242,120, 60,193,227,150,137, 32, 8, 94, 85,
+127, 84, 97, 97,249,165,170,142,197,176, 97,246,168,163,163,227,254,125,251,246,121,120,120,120,192,104, 52,194,104, 52,162,172,
+172, 12, 17, 17, 17,208,233,116,230, 69,217, 63,253,244,211,138,153, 51,103, 74,142, 28, 57,146,173,213,106,199,214, 67, 59,231,
+187,239,190, 83,170,213,106,169, 86,171, 69,114,114, 50, 58,119,238,140,146,146, 18,148,149,149,161,188,188, 28, 6,131, 1, 69,
+ 69, 69,246, 52, 77,235, 27,203,181,230,241,120, 16,139,197, 16, 8, 4,133,205,154, 53, 3, 73,146,146,212,212,212,134,184,220,
+ 84, 0,138,249,124,190,200, 82, 88, 73, 36, 18,220,188,121,243,112, 29,214,171,218,111, 30,203, 96, 98, 43,142,159, 53, 8,130,
+216, 40, 16, 8,196, 78, 78, 78, 66,211,123, 6,131, 65,232,224,224, 0, 79, 79,207,205, 0, 6, 91,201,211,201,201,201, 9, 4,
+ 65, 64, 40, 20, 98,202,148, 41,136,138,138,250, 33, 45, 45,237,237,236,236,108,148,150,150,238, 85,169, 84,175,103,103,103,131,
+166,105,164,164,164, 32, 32, 32,160,211, 63, 84,205,231, 94, 88,213, 20, 88,189,107,236, 77, 22,169,122, 45, 87,245,184, 8,171,
+193, 96, 48, 40, 66, 67, 67, 25,147, 24, 51,205, 34, 4, 64,208, 52, 13,161, 80, 88,141,179, 74, 96, 53,232, 6, 23,139,197, 24,
+ 60,120,176, 68, 38,147,253,248,203, 47,191,188, 10,224,143,134, 54,210,241,163, 7, 92,215, 46, 93,184,212,177,105, 75,239,143,
+ 63,254,152, 63,104,208,160,240, 67,135, 14,117,117,238,213,103, 96,228,239,135, 93,183, 45, 56,254,243,225,195,135, 75, 96,125,
+252, 21, 0,156,255,225,135, 31,212, 31,204,158, 33,236,221,187,247,247,227, 58,188,199, 87,139, 24,165,163, 88,200,147,241,248,
+164,184, 89,139,129,191, 71, 68,106, 0, 68, 90,209, 73,168,195,195,195, 97,111,111, 15, 0, 34,189, 94, 15,123,123,123,108,219,
+182, 77,162, 82,169,160, 82,169,208,163, 71, 15, 7,161, 80, 88,159,187,208, 82,240,186,252,239,127,255,131, 66,161, 64, 89, 89,
+ 25,116, 58, 29, 40,138, 2,203,178,230, 39,199,151, 95,126,217,197,134,250, 38, 23, 23, 23,191, 52, 99,198,140,200, 45, 91,182,
+ 52,241,246,246,198,242,229,203,145,151,151,135, 7, 15, 30, 96,236,216,177,197,247,238,221, 11, 70,245,216,172,103,142,246,237,
+219,179,231,206,157,195,169, 83,167,240,202, 43,175, 16,199,143, 31, 55,208, 52, 45,204,200,200,184,145,145,145,241, 76,202, 68,
+ 81,148, 82, 36, 18,193,104, 52,130,207,231,155, 93,248, 38,129,229,238,238,142,223,126,251,141, 95, 94, 94,206,207,203,203,147,
+237,218,181,107,118,116,116,180, 26,192,155,207,178, 45,183,110,221,234, 57,101,202,148, 7,124, 62,159, 29, 56,112,224, 91,169,
+169,169,175,169,213,234,223,207,158, 61,251, 57, 0,155,211, 21,180,107,215, 46,154,199,227,121, 24,141, 70,225,143, 63,254,104,
+164,105, 90,216,190,125,251, 44,147,181,200, 52, 54, 82, 20,149,150,144,144,208,197, 26, 62,173, 86, 43,252,250,235,175,141, 21,
+ 21, 21,194, 14, 29, 58,152,185, 12, 6,131,240,167,159,126, 50, 26,141, 70, 97,155, 54,109,162,173,153,217,156,159,159, 63,118,
+222,188,121,127, 30, 62,124,216,153,199,227, 33, 53, 53, 21,249,249,249,176,183,183,199,190,125,251,208,162, 69, 11,132,135,135,
+231,211, 52, 61,121,231,206,157,139,181, 90,237, 88, 43, 98,176, 94, 14, 10, 10,242, 44, 44, 44,132,157,157, 29, 74, 75, 75, 17,
+ 29, 29, 13,127,127,127,100,100,100,128, 36, 73,216,219,219, 99,235,214,173,229, 4, 65,228, 55,134,255, 16, 73,146,102, 33,100,
+ 33,136, 42,130,130,130,112,254,252,249, 3, 54,138, 34,189,169,255,177,116, 13,138,197, 98,240,120, 60,155, 93, 30, 12,195, 8,
+ 1,116, 50, 13,232,245, 29, 55, 2,244,150,203,229,194,154,111, 22, 20, 20, 8,125,125,125, 95,180, 97,124,116,146, 74,165,149,
+132,189,123, 35, 59, 59,155,246,242,242, 26, 61,122,244,104, 35, 0, 76,157, 58,117,116, 78, 78, 78,133,209,104,228,241,249,124,
+228,228,228,160, 85,171, 86, 78,255, 68,253,106,106,145,231, 93, 96, 17,168,116,119, 88,238,205, 22,172,250, 44, 87,166,115, 38,
+161, 84,207, 31,173,240,234,213,171,114,185, 92,110,126,207,104, 52,162, 83,167, 78, 12,195, 48, 68,205,223,122, 28, 11,150, 88,
+ 44,134,189,189, 61,222,124,243, 77, 89,122,122,250,238,107,215,174,121, 88,243,189,202, 24,172,234,226,106,251,154,229,155,191,
+ 92,187,210, 41,233,212,183,216,185,233, 51, 90, 46, 87,196, 4, 4, 4,188, 84, 84, 84,164,179,151,235,144,153,135,163, 0,246,
+219,210,231, 0, 56,124,241,226,197,216,254,253,251, 95,188,127,255,190, 67,106, 98,226, 57,149,190,180, 84,209,172, 37, 37,116,
+113, 29,170, 53, 24,249, 35, 70,140,112, 5,176,201,138,167, 17, 48, 12,131, 19, 39, 78, 64,169, 84, 66,165, 82,193,222,222, 30,
+ 38,113,213, 80,220,187,119, 15,105,105,105,144,203,229,144,203,229, 80, 40, 20, 80, 40, 20, 16,137, 68,213,172,143, 54, 32,190,
+184,184,120,238,177, 99,199, 14,173, 94,189, 26, 5, 5, 5, 40, 43, 43,195,210,165, 75,145,156,156, 60, 15,149, 49, 89,141, 6,
+ 29, 58,116, 96, 47, 92,184,128,115,231,206,161,172,172, 12,155, 55,111,134, 90,173,238, 3, 96,201,179, 44, 23,195, 48, 66, 83,
+170, 19,146, 36,255,102,193, 50,137, 45,169, 84, 10,103,103,103, 44, 92,184, 80, 56,116,232,208,208,103, 89,230,181,107,215,182,
+222,184,113,227,174, 61,123,246,156, 26, 59,118,236,145,155, 55,111, 78,176,179,179,187,241,199, 31,127,172, 20,139,197, 76,131,
+ 58, 47, 62,223, 35, 54, 54,214, 82,228, 11,104,154,150,209, 52, 13,138,162, 96, 52, 26, 81, 94, 94,142,144,144, 16,171,249,162,
+162,162,100, 0,176,100,201, 18, 1, 0, 25,195, 48,176,228,211,106,181,130,190,125,251, 90,213,151,104, 52,154,248,203,151, 47,
+191, 56,122,244,232, 11,135, 14, 29,114,240,244,244, 68, 90, 90, 26, 50, 50, 50,224,237,237,141, 77,155, 54,149,177, 44,219,179,
+ 74, 84,253,100,101,181,155, 58, 56, 56, 8, 30, 60,120, 0,138,162, 16, 24, 24,136,173, 91,183, 98,212,168, 81,104,215,174, 29,
+ 74, 74, 74, 16, 23, 23,135,221,187,119, 59, 8,133,194,225,141, 65, 92,153, 68, 80,109, 91, 3, 31, 48, 84, 18,137,164, 88, 34,
+145,136, 76, 66,235,202,149, 43, 54, 91,175, 44, 16,107,227,241, 51,131,169, 15, 54, 26,171, 87, 83, 46,151,195,199,199,199,106,
+ 30,185, 92, 78,152,198, 88,163,209, 8,141, 70, 67,223,188,121,211, 44, 80,213,106, 53,125,233,210, 37, 90,167,211,241,148, 74,
+ 37, 0,192,222,222,254,105,139,204, 71,106,145,231,221,130, 21, 89, 99,111,182, 96,153, 4, 79, 93, 65,238,124, 62,223, 90,129,
+ 5, 30,143,135,211,167, 79, 67,161, 80, 64,169, 84,194,207,207,207,100,133,169,213, 42,214, 80,129, 37, 18,137, 96,103,103,135,
+ 51,103,206, 84, 92,187,118,109, 74, 67, 45, 87,219,215, 44,223,252,233, 39,203,156,242,110, 95, 68, 90,134, 6,121, 89,134,232,
+243, 55, 83,126, 69,101,130, 81,224,118,219, 8,194,255,142,213,226,202,207, 89, 26,160,114, 80,253, 20,220,111,160,251,107,227,
+102,144, 51,103,206,124, 97,252,248,241,249,111,189,245,214, 28,169, 84,218,142,162,168,130,240,136,136,148,145, 35, 71, 58, 21,
+ 21, 21,141,135, 21, 49, 73, 60, 30, 79,211,191,127,255,102, 0,160, 84, 42,245,223,124,243,141,200,222,222, 30, 99,198,140,169,
+200,204,204,148, 84,181, 71,129,181,214,171,170,193, 38,123,242,228,201, 46,245,180,113,182,141, 77,218, 41, 52, 52,116,199,225,
+195,135,145,151,151,135,178,178, 50, 8,133, 66,172, 91,183, 14, 15, 30, 60,248, 34, 62, 62,254,102, 99,233,204, 58,118,236,200,
+ 94,186,116, 9, 55,110,220,128, 78,167,195,148, 41, 83, 0,128,208,104, 52, 0,208,255, 89,123, 10,210,211,211,177,111,223, 62,
+208, 52,141,177, 99,199,162, 69,139, 22,102,129,149,153,153,137,111,190,249, 6, 52, 77, 99,242,228,201,104,222,188, 57,140, 70,
+163,164,119,239,222,252,103, 53,163,244,189,247,222, 75,250,225,135, 31, 78, 61,124,248,112,208,154, 53,107,122, 19, 4,193,204,
+159, 63,255, 83,149, 74,245, 88,179, 47, 11,138, 74,112, 55, 49, 21, 20, 69,213,186, 53,113,118,180,153, 47, 33,249, 1, 40,138,
+ 54,115,208,244, 95,124, 78,142,182,241,105, 52,154,242,188,188,188,178,201,147, 39,219,239,216,177,131,240,241,241,193,253,251,
+247, 33, 16, 8,160, 84, 42,203,239,222,189,107,107,106,134,244,252,252,124, 31, 30,143, 39, 76, 76, 76,132,167,167, 39,186,117,
+235,134, 85,171, 86, 33, 39, 39, 7, 20, 69,193,197,197,133, 49, 26,141, 49, 6,131, 33,242, 89,255,143,106, 90,174, 76, 91,149,
+229,138, 4,240, 51,254, 30, 56, 94,175, 21,203,210,130,213, 80,235,213, 83, 20,149, 79,109,102,162,143,143, 79,132, 74,165, 10,
+189,115,231, 78, 53, 43,214,155,111,190,105,240,246,246,254,211, 90, 30,149, 74, 85, 32, 18,137,156, 42, 42, 42,112,241,226, 69,
+248,249,249, 9,139,138,138, 86,163, 50,233, 53,126,250,233,167,213, 89, 89, 89, 66,119,119,119, 0,128,175,175, 47,138,138,138,
+ 10,254,129,230,251,155, 22,249, 55, 8,172, 90,205,114, 53, 93,132,117,137, 44, 83, 66,210,250, 44, 45, 90,173,214,108, 17,145,
+203,229, 96, 24,166,154, 59,178,166,192,170,101, 22,161,213,127,236,179,103,207, 86,108,223,190,125,132, 89, 12, 89, 1,203, 24,
+172,175,215,175, 92,107, 18, 87,215,207,253,134,159,238, 20,229,206, 95,181,126, 99, 67, 27,187,173,179,172,163,171,171,211,255,
+214,175,251, 84,149,126,249, 20,142,108, 95,207, 94,143,138,234, 58, 61, 42,106,248,244,233,211, 29, 81, 25,111,149, 14,224, 28,
+ 42,167,155, 91, 21,240,125,249,242,229,230,166,215, 93,187,118, 53,170, 84, 42, 40, 20, 10,228,228,228, 8, 21, 10,133, 36, 34,
+ 34,194,230, 88,135,168,168, 40,215, 39,124,175,181,121,229,149, 87, 34,191,255,254,123,121, 97, 97, 33, 82, 82, 82,240,225,135,
+ 31,226,171,175,190,130, 74,165,194,137, 19, 39,148,161,161,161,255,187,123,247,110, 15, 60,227,228,170, 1, 1, 1,108, 84, 84,
+ 20, 82, 82, 82, 64, 81, 20, 94,123,237,181,122, 31, 30,254, 97, 11, 22, 59,111,222, 60,236,216,177, 3, 36, 73, 98,220,184,113,
+ 40, 46, 46, 54,159,119,116,116,172,237, 28, 15,245,207, 40,125,122, 29, 13,159,207, 70, 68, 68,172,233,221,187, 55, 30, 62,124,
+ 56,168,115,231,206, 95, 78,152, 48, 33,253,113,121, 29,236,148, 8,240,247,130, 78,167,131, 78,167, 67,211,166, 77, 81, 82, 82,
+130,164,164, 36,232,116, 58,184,186,216,219,204,215,169, 93,107,232,245,122,232,116, 58,184,184,184,160,172,172, 12,247,239,223,
+135, 78,167, 67,147, 38, 14,182,208, 53, 27, 48, 96,192,217, 3, 7, 14, 56,237,223,191, 95, 63,108,216, 48,209,242,229,203, 9,
+149, 74,133,172,172, 44, 52, 48,188, 39,226,220,185,115,158, 33, 33, 33,190,113,113,113,136,140,140,132, 94,175, 71,167, 78,157,
+144,144,144,128, 23, 94,120, 1,197,197,197,151,175, 92,185,210, 40,102,185,212, 20, 86,209,209,209,135,133, 66, 33, 11,160,161,
+214, 38, 0, 64, 90, 90,154,184,125,251,246, 58,177, 88, 44,186,112,225,194,129,199,176, 94, 61,249,167,159,199,159,153,248, 72,
+180,110,221,122,158,135,135, 71, 72, 96, 96, 32,226,226,226,132, 98,177, 24,111,189,245,150, 97,240,224,193, 6, 62,159,111,245,
+132, 27,137, 68,114, 91,169, 84,190,164,211,233,160,215,235, 17, 30, 30, 14, 71, 71,199, 15, 67, 67, 67,231,106, 52, 26,100,100,
+100,136,196, 98,177,217, 74, 30, 28, 28,140,252,252,252,219,255, 64,243,213,170, 69,158,119,129, 85,171, 24,178,180, 96,213,229,
+ 30,180, 86, 96,145, 36, 9,189, 94, 15,153, 76,102, 22, 88,150,153,226, 27,194,249, 72,155,111,108,236,133,228,228,228,207, 1,
+156,108,200,247,191,219,191, 71,109,199,148, 55,203,184,124, 18,119,175, 71,227,135,184,194,220,249,171,214,207,126,117,196,152,
+172,154,130,204,170, 39,143, 38,178,246,174, 46,149,226, 42,239,246, 69, 36,222,136,198,201,203,105, 87,245, 64, 2,128, 79,158,
+228, 69, 53,249,214, 27, 19,196, 98,241, 60,211,108,193,228,228,100,140, 29, 59,182, 48, 37, 37,101,198,107,175,189,246,213,175,
+191,254,234,224,224,224,128, 51,103,206, 40,155, 53,107,182, 26,192,179,116,103,177, 87,175, 94, 69, 94, 94,229,228,205,158, 61,
+123, 54, 42,113, 5, 0, 87,175, 94, 21,134,134,134,254, 14,160,207,237,219,183,193, 48,204,133,152,152,152,158,166,243,117,157,
+179, 70,191,149,148,148, 8,148, 74,101,173,131,149, 80, 40, 20, 54,192,226, 96,230, 60,127,254,252,167,159,127,254,249, 15,239,
+191,255,126,226, 99,114,214,106,193, 10, 13, 13, 69,133,206,136,180,172, 34, 80, 20,133,114,125,214, 99, 89,176, 66, 67, 67,161,
+173,208,227,129, 38, 31, 20, 69,161,180,194,106, 67,137,172, 95,191,126,191, 30, 58,116,200,237,194,133, 11,208,235,245, 76,116,
+116,244, 3,215, 14,207, 0, 0, 32, 0, 73, 68, 65, 84,253,169, 83,167,170, 38, 77,154,228, 84, 89,229, 6, 97,211,155,111,190,
+ 57,226,252,249,243,249,190,190,190,142, 87,174, 92, 65,118,118, 54,140, 70, 35,250,244,233, 3,177, 88,156,186,122,245,106, 33,
+172, 8, 45,248, 39, 5,214,237,219,183, 77,194,106,220,147, 18, 66, 38, 11,214,127, 9, 7, 14, 28, 72,255,230,155,111,252,213,
+106,245,198,183,222,122, 43,184,105,211,166,164, 72, 36,138,224,243,249,115, 9,130, 72,181,161,237, 38, 56, 56, 56, 36,241,120,
+ 60, 94,122,122, 58, 18, 19, 19,193,227,241,192,178,172, 72,171,213,194,213,213, 21, 60, 30,207,100, 29,131,135,135, 7,157,144,
+144, 48, 1, 28,158,140,192, 50, 97,197,138, 21,216,190,125, 59,222,121,231,157, 58, 63, 87,149, 22,160,230, 64,212, 30, 22,185,
+ 50, 76,179, 8,195,194,194,170,125,207,228, 10,156, 49, 99, 70,181, 47,255,248,227,143,181,185, 8,171,113, 62, 10,201,201,201,
+182, 40, 96, 51,167, 41, 6,107,228,216,113,154,205,159, 46,189,177,251,248,239, 29, 52, 90, 86, 51,127,213,250,247,106,138, 43,
+107, 57,253, 92,229,109,213,206,142, 17,159,175,251,212,206,100, 13, 59, 20,147, 89, 4,138,125,199,198,235, 85,111,221, 5, 2,
+129,166, 71,143, 30,205, 0,171,221,130, 86,181,231,227,150, 83,167,211,225,210,165, 75, 0,128,137, 19, 39, 22,166,164,164,188,
+ 4,224, 86, 74, 74,202,237,129, 3, 7, 70,156, 62,125,218,161,234,137, 62,239, 89,150, 19,168,156,209,202,231,243, 77, 49, 13,
+196,147,190, 70, 79,162,156, 26,141,230,157,105,211,166,109,215,233,116,252,178,178,178,119,172, 61, 87, 95, 57,191,251,238,187,
+ 68, 31, 31,159,222,120,116, 42, 6, 6,192,197,199,225,220,184,113, 35, 0,248, 62, 14,231,163, 44, 88,135, 15, 31, 6, 77,211,
+240,112,181,131, 78,167,131,101,188,167, 53,156, 53, 45, 88, 71,142, 28, 1,195, 48,104,174,118,132, 78,167,171, 43,246,176, 26,
+167,147,147,211,250, 61,123,246,120,220,190,125, 27,233,233,233,216,176, 97, 67,106, 78, 78,206, 96, 62,159, 47,254,242,203, 47,
+255, 55,100,200, 16, 87,138,162,116, 13,184,151,116, 6,131, 97, 66,143, 30, 61,246,174, 92,185,242,158,159,159, 95,179, 30, 61,
+122, 56,228,231,231,103,199,198,198,166,108,223,190, 93, 65, 81,212, 4, 60,218,245,244,143,253,143, 0, 32, 35, 35,227, 56, 42,
+211,215,216, 42,172,234, 45,103, 84, 84,212,145, 42,238,147, 86,114,255, 35,117,127, 2, 51, 19,235, 44,231,196,137, 19,211,240,
+247,252,102, 54,149,243,183,223,126, 75, 25, 61,122,244,138,246,237,219,135, 41, 20, 10,196,199,199,155,211, 34,153, 30,208, 9,
+130,192,200,145, 35, 49,125,250,116,156, 57,115,102,197,200,145, 35, 83,254,129,246,252,111, 8, 44,154,166, 31,166,164,164,168,
+247,236,217,195, 35, 8, 2,251,246,237, 67,205,192, 90,211, 30, 0, 46, 93,186, 68,177, 44,155, 84,215,143,209, 52,253, 48, 58,
+ 58,218,245,219,111,191, 21, 72,165, 82,136,197, 98,100,100,100,128, 97, 24, 38, 43, 43,139, 60,112,224, 64,181, 96,221,139, 23,
+ 47, 82, 6,131,225,193,179,106,156, 63,227, 82,231,158, 62,241,131,243, 11,221, 95, 42, 84, 57, 58,214, 42, 84,190,219,232, 7,
+194,191,110, 43,150, 92,169,250,244,243,117,159,218,155,196,213,225,152,204,194, 10, 29, 29,124, 39, 87,123,253, 73,151,249,194,
+133, 11,205, 27,233,189,182,180,119,239,222, 12, 0,103, 0,139, 81,105,185, 3,128, 91,247,239,223,239,238,227,227,243, 62, 42,
+ 23,190, 94,250, 44,173, 87, 12,195, 88, 90, 78, 27,109,144,101, 76, 76,204, 61, 0,125,109, 61, 87, 31, 70,142, 28,153,140,199,
+ 95,110,230,169,115,154,144, 95, 88,140,164,251,233, 85, 75,121,209,160, 83, 51, 45,226,167,140,200, 47,182, 45,141, 92, 65, 81,
+ 9,146,238,167,129, 97,216, 74, 62, 58,221, 28,228, 78, 81, 20,114, 11,235,247,218,243,249,252, 94, 97, 97, 97,131, 73,146, 36,
+ 47, 93,186,164, 91,183,110,221,195,156,156,156,161, 0, 30, 84,197,240,189,252,227,143, 63,238,183, 34, 37,131, 37, 39, 65, 81,
+148,105, 96,142, 51, 26,141, 47, 44, 88,176, 96, 14,128, 94, 0,154, 3,120,128,202,208,130, 77,104, 68, 25,199, 9,130, 24,247,
+ 60,114, 63, 14,158,151,153,137,135, 15, 31, 94, 54,125,250,116,126, 80, 80,208,199, 93,187,118, 37,239,223,191,143,236,236,108,
+243,195,229,128, 1, 3,224,233,233,201,156, 60,121,114,213,176, 97,195,150,129,195,147, 19, 88,185,185,185, 3,198,141, 27,247,
+ 27, 73,146, 45, 31,181,184,179,165,117,137, 97,152,148,172,172,172, 58,147,144,229,230,230, 14, 88,186,116,233,111,124, 62,191,
+165,197, 98,206,186,188,188,188, 25, 35, 71,142,220, 34, 16, 8,196,150,214, 46,134, 97, 82, 53, 26,205, 63, 26, 80, 92, 51, 15,
+214,192, 33,175,231, 62, 46,167, 92, 4,175,135,151, 78, 32,241,198, 85, 28,142,201, 44, 40,209,211, 47, 39,228,150,255,215,148,
+127, 54,128, 25,143, 56,151, 8,224,157, 70, 80, 70,162, 42,230,143,224,186,134,198, 15,138,162,210, 66,250,188,140,154,105, 25,
+106, 30,211, 52,157,102, 45, 95,223,224,222,143,228, 49,189,174,143,143,199,227,189, 31, 20, 20,196,123,255,253,247,179, 78,157,
+ 58,245,123, 65, 65,193,123, 0,202, 45, 44,140,241,168, 59,153,104,109,156,206, 20, 69, 89,174,129,168, 67,229, 10, 15,107,185,
+ 59,161, 81,226,185,152,153,184,117,235,214, 37,243,231,207,223,221,180,105,211,125,189,122,245,242,245,246,246, 86, 41,149, 74,
+ 20, 23, 23,151,228,231,231,223, 61,113,226,196,216,241,227,199,223,227, 46,103,227, 68,251,231,141,115, 68, 95,176,108,156, 31,
+203,198,249,177, 35,250,130,181,230,184, 62,206, 54,174,242,222,221,154,171,174,118,104,170,188,226,235, 34,247,255, 47,181, 39,
+199,201,113,254, 7, 57,155,139, 68,162,159,248,124,126,175, 39,200,233, 44, 18,137,154,112,215,136,227,124,154,156, 35, 70,140,
+224,141, 24, 49,130,247, 12,203,249, 72,176, 44,219,149,101,217, 33, 85,123,211,235, 16,211,123,141, 81, 0,241,193,161, 26,142,
+254, 14,162,166,203,175,190,227,250, 16,159, 85, 22, 97,235, 19, 43, 7, 14, 28,158, 91, 60,208,235,245, 67,159, 48,103,174, 94,
+175,231, 90,150,195,211, 29,255,142, 30,165, 27,113,241,154, 16, 4,241, 11,203,178,161, 0, 96,122,109,249, 94, 99, 3,201,221,
+ 82, 28, 56,112,224,192,129, 3, 7, 14, 79, 22, 4, 30,109,230,179, 37, 70,168, 33,166,194,155, 28, 39,199,201,113,114,156, 28,
+ 39,199,201,113,254,231, 56,235,227,254,219,247, 89,150, 29, 82,151, 5,139, 32,136, 19,255, 53, 1,199,249,188, 57, 78,142,147,
+227,228, 56, 57, 78,142,147,227,124, 44,176, 44, 59,164,114,199, 14,177,124,109,177,111,116,224, 98,176, 56,112,224,192,129, 3,
+ 7, 14,141, 29,218,143, 62,250,232, 99,130, 32,126, 1,128,143, 62,250,232,227,198, 94, 96, 78, 96,113,224,192,129,131, 5,212,
+106,245, 43, 0,150,161, 50,132, 98,181, 70,163, 57,194,181, 10,135,127, 19,156,157,157,229, 78, 78, 78,191,147, 36,233, 9, 84,
+ 79,185, 84,219,250,191, 12,195,104,242,243,243,251,103,101,101,229,254,147,156, 53,112, 97,245,234,213,229,171, 87,175, 54, 5,
+180,231, 0, 32,170, 92,134, 57,255, 10,129,181,160, 95,139, 23,155,186,187, 31, 40,204,203,139,209,149,151, 76, 90,253, 71, 70,
+126, 3,127,219, 73, 36, 18,141,150,203,229, 33, 44,203,122,241,120,188, 59, 69, 69, 69,225, 70,163,241, 16,128, 82,238, 47,192,
+225, 89, 35, 32, 32,160,131, 72, 36,250,144, 32,136,238, 20, 69,121, 8, 4,130, 12, 0,151,117, 58,221,186,216,216,216, 24,174,
+133,254, 53, 32,213,106,245, 23,246,246,246, 65,133,133,133, 99, 1,124, 28, 31, 31,223,145, 36, 73,248,251,251,127,172, 86,171,
+147,148, 74,229,206,146,146,146, 11, 26,141,102, 46, 26,184,172, 15,135,198, 5, 47, 47,175,104,146, 36, 61, 44,151,107,171, 41,
+ 8,106,238, 89,150,189,119,251,246,237, 30,143,226,116,119,119,247, 82,169, 84, 91, 0,116,173, 77, 84, 88,162, 42,191,218,149,
+226,226,226, 25,233,233,233,181, 38,226,117,112,112, 80,186,184,184, 44, 35, 8, 98, 36, 73,146,245,166, 79, 96, 24,134,102, 89,
+246,187,236,236,236,165, 5, 5, 5, 37,143, 28,124,157,156,194, 35, 35, 35,187, 58, 59, 59,215,155,243,143,162, 40,164,165,165,
+ 53, 9, 13, 13,141,204,202,202,242,251, 39, 57, 45, 65, 16,132, 30,149,107, 55, 62, 55,176, 89, 96, 17, 52,222,154, 52,101,156,
+123,225,195,120,247, 61,135, 78,183,249,184, 63,255,229, 85,103, 30,100,218,194, 33,145, 72, 70,123,123,123,111,218,180,105,147,
+ 83,203,150, 45, 9,169, 84, 10,141, 70,227,119,237,218,181,215,195,194,194,150,166,165,165, 77,160, 40,234,183,199,172,155,189,
+163,130,255, 97,126, 41,181,144,235, 74, 56,216,130, 17, 35, 70,240, 30, 62,124, 24,166, 82,169, 62, 88,176, 96,129,184, 85,171,
+ 86, 80, 40, 20,200,206,206,110,158,144,144,208,108,203,150, 45,175,188,240,194, 11, 95, 10,133,194, 69, 17, 17, 17, 20,215, 98,
+207, 55,212,106,245, 23,145,145,145,179,154, 54,109,138,158, 61,123, 94,232,212,169,147, 74, 38,147,225,212,169, 83,240,242,242,
+106,103,103,103,119,121,219,182,109,130,101,203,150, 5, 28, 59,118, 12, 26,141,102, 54,215,106,255, 2, 85, 77,146, 30, 49, 49,
+ 49, 46, 50,153, 12, 52, 77, 87,173, 6,192,128,101, 89,243,222, 82, 12,209, 52,141,224,224, 96, 67, 61, 99,219, 87, 55,110,220,
+ 8, 49,173,112, 98, 33,164,106, 69, 70, 70, 70, 72,112,112,240, 87, 0,106, 77,168,237,226,226,178,108,212,168, 81,243,218,181,
+107,103, 94,106,142, 97, 24,243, 62, 55, 55, 23, 51,103,206, 52,255, 6,195, 48,136,140,140,156,243,238,187,239,162,160,160,224,
+221, 58,234,238,233,236,236, 76,212,183, 4, 94, 88, 88, 24,194,194,194,176,105,211, 38,130,207,231,219,215,211,158, 79,156,243,
+121,135,237, 2, 11,236,201,147, 71,143, 76, 10,237,237, 75,140, 31, 26,232,179,255,120,244,197, 5,125, 91,190,180,230,247,251,
+ 15,173, 20, 87,115,166, 77,155,246,233,242,229,203, 37,119,239,222, 69, 92, 92, 28, 40,138,130, 66,161, 64,135, 14, 29,200,147,
+ 39, 79,170,231,204,153,115,244,207, 63,255,156,104, 48, 24,142, 53,180, 98,110, 14,188,117,114, 41,111, 76,169,150,189,108,160,
+233,227,141,177,241,187,117,235,118,198,104, 52,174,137,141,141, 61,251,188,220, 48,129,129,129, 61,133, 66,225, 82,145, 72, 52,
+240,223, 42, 46, 82, 83, 83,151,190,248,226,139, 31,132,133,133,137,239,223,191,143,248,248,120,104, 52, 26,180,108,217, 18, 45,
+ 91,182, 36, 54,109,218, 36,249,242,203, 47,103, 95,187,118,141, 4, 48,223,150, 62,221,205,205,109,114,223,190,125,135, 59, 59,
+ 59,219,165,167,167, 23,157, 63,127,254, 39,141, 70,243, 53,234, 95, 51,242,145,156,206,206,206,227, 67, 67, 67,135, 59, 58, 58,
+ 58,106, 52,154,252,223,127,255,253,167,236,236,236,157,143,105,105, 81, 3,232, 8,192,169,234, 88,211,162, 69,139, 91, 41, 41,
+ 41,217, 79,144, 51,163, 69,139, 22,113, 13,225,116,118,118,150,243,249,252, 35, 4, 65, 52,173,195, 66,144, 65, 81,212,168,220,
+220,220,178,186,184, 84, 42, 85,119,181, 90,141,203,151, 47, 99,241,226,197,142,193,193,193, 72, 72, 72, 0, 73,146,248,224,131,
+ 15, 8,127,127,127, 65,102,102, 38,186,116,233,130,240,240,240, 30, 85,203,221,112,176, 14,223, 1,176, 7,240, 38, 0, 75, 87,
+144, 51,128, 31, 81,185,194,195,176,103, 85, 56,169, 84,138,131, 7, 15, 66, 32, 16, 64, 40, 20,162,160,160, 0,238,238,238, 16,
+ 10,133, 16, 8, 4,230, 77, 40, 20,162, 89,179,102,245,242, 49, 12,211,141,199,227,161,180,180, 20, 52, 77,155,151, 89, 42, 42,
+ 42, 2,203,178, 16,137, 68,230,247, 77,231, 24,134,233, 86,135,213,102,100,211,166, 77,113,232,208, 33,212,150, 7, 77,165, 82,
+225,230,205,191, 38,220,241,120, 60, 4, 4, 4,144, 4, 65,140, 4,240,110, 29,188, 44, 0, 76,153, 50,165,218,242,116, 53, 55,
+211,218,193, 44,203, 90, 46, 33,246,143,113,254,171, 5,214, 71,125, 90,206,104, 23, 24,176, 78, 36, 18, 72, 25,218, 8,134, 50,
+130, 49,234,193, 48, 20,238,165,106,224,229, 34,194,196, 65,222,158,123,207, 36,220, 92,216,175,117,208,234,223, 18,227,107, 80,
+212,156,106,217,162, 93,187,118,203, 86,174, 92, 41,249,253,247,223,113,247,238, 93,172, 90,181, 10, 0, 32,151,203,113,234,212,
+ 41,208, 52,141,245,235,215, 43, 7, 14, 28,184, 37, 35, 35, 35, 2, 64,126, 61,156,181,193,179,117, 43,245,208, 99,159,189, 36,
+110,247,250,209,141,153,249,244, 9, 0,117, 37, 80,123, 26,203,214,212,203, 73, 81, 84, 63,129, 64,208,163, 83,167, 78,175, 88,
+ 41,178,158, 73, 57, 45,197,149, 64, 32, 56,109, 48, 24,100, 34,145,136, 95,135, 40,120,166,229,124, 28,206,128,128,128, 14, 42,
+149,234,131,165, 75,151,138, 47, 93,186,132,130,130, 2,100,103,103, 99,238,220,185,216,186,117, 43,218,181,107, 7,185, 92,142,
+217,179,103, 75,102,206,156, 57,163, 75,151, 46,223, 69, 71, 71, 71, 91, 81, 78,178,119,239,222, 7,247,237,219,215,146,162, 40,
+ 18, 0,140, 70,163, 67,106,106,234,184,133, 11, 23,246,142,137,137,121,179, 1,237, 73,246,232,209, 99,223,254,253,251,189, 69,
+ 34, 17, 89,213, 89, 55,121,251,237,183, 39, 45, 90,180, 40,248,234,213,171, 99,234,184,239,235,106,207, 78, 50,153,172,237,140,
+ 25, 51,114,135, 14, 29,154, 14, 0, 87,175, 94, 37, 98, 99, 99,123,142, 27, 55, 46, 37, 44, 44, 44,182, 1,156,157,101, 50,153,
+239,172, 89,179,114, 6, 15, 30,156, 33, 20, 10,153, 75,151, 46,241,110,222,188,217,107,242,228,201,201,139, 22, 45,186,110, 11,
+167, 64, 32, 56,124,236,216,177,222,238,238,238, 52, 80,185,154, 2, 65, 16, 44, 65, 16, 44, 73,146, 44, 73,146, 72, 78, 78,110,
+ 49, 98,196,136, 3, 0, 94,173,139,179,176,176,112, 92,175, 94,189, 34, 23, 47, 94,236, 8, 0,145,145,145,224,243,249,230, 1,
+225,238,221,187,208,233,116,216,180,105,147,161,164,164,100,242,191,237,158,127,202,156,205, 0,116, 3,240, 7,128, 62, 85, 34,
+203, 25,192, 89, 0,254, 0,206, 63,171,114,146, 36, 9,154,166,205, 34,234,183,223,126,195,214,173, 91,113,232,208, 33,184,187,
+187, 87, 19, 88, 2,129, 0,143,112,249,221,172, 33, 50, 76,125, 59,104,154, 70, 84, 84, 20,118,238,220, 9, 23, 23, 23, 56, 59,
+ 57,193,185, 73, 19, 4, 5, 5,193,100, 53,163,105,186, 54,222,106,156,185,185,185, 96, 24,235,158,149, 88,150, 69,113,113,177,
+213,237, 89,151, 16,178,220,108,185, 70,143,201,249,223, 17, 88,106, 55,231, 69, 35,134,247,147,130,166, 0, 67, 25, 96, 40, 7,
+107, 40, 7,171, 47, 3, 33,146,130, 53, 86, 64,206,203,195, 59,125, 93, 85, 71, 47,102,221, 94, 16,220,124,200,154,179, 15, 78,
+215,241,164,184,100,251,246,237,118, 55,110,220, 64,124,124, 60, 54,108,216,128,229,203,151,155,159, 28, 94,125,245, 85, 92,184,
+112, 1,122,189, 30,139, 23, 47,118, 92,176, 96,193,172,146,146, 18,155, 23,153,116,115,226,111, 61,178,119,147,163,163, 52, 23,
+ 19,135, 94,113,250,234, 72,202,140,162, 50,227,151,141,241, 2, 44, 88,176, 64,182,118,237,218,159,109, 16, 89,207,204,114, 37,
+ 22,139, 79, 47, 89,178, 68,190,100,201, 18,250, 9,113,182,227,243,249,135,141, 70,227,251,177,177,177,191, 54,128,162,121,215,
+174, 93, 87,197,199,199,159, 46, 41, 41,217, 95,243,164, 80, 40,124,181,115,231,206, 99, 47, 94,188,248, 49,128, 36,107, 8,197,
+ 98,241,156, 15, 62,248, 64,146,150,150,134,194,194, 66,136,197,226,106,157,155, 88, 44, 6, 73,146, 16,137, 68,120,251,237,183,
+ 37,187,118,237,122, 15,192, 27,245,222,147,110,110,147,247,238,221,219,210, 96, 48,144,101,101,101, 16, 10,133, 16, 10,133,232,
+208,161, 3,111,254,252,249,205,230,205,155, 55, 45, 43, 43,107,179, 45,149,119,112,112, 24,183,111,223, 62,111,145, 72, 68,106,
+ 52, 26,244,236,217, 19,151, 47, 95, 70, 80, 80, 16,111,254,252,249,205,103,207,158, 61, 53, 39, 39,103,171,173, 86, 38,153, 76,
+214, 46, 50, 50,242, 97,211,166,127, 25,135, 90,182,108,201, 14, 26, 52, 40, 63, 62, 62,222,247,234,213,171,121,157, 59,119,126,
+104, 3,167,187, 76, 38,243,251,245,215, 95, 53,203,151, 47,239,187,117,235,214,161, 85, 22,220,227,171, 86,173,250, 61, 47, 47,
+207,255,242,229,203,121, 65, 65, 65,233, 54,112, 58,185,185,185, 81, 51,102,204, 80,214, 60,177,116,233, 82, 44, 91,182, 12,187,
+119,239,206, 3,224, 82,103,101,171, 2,218,219,181,107,167,234,211,167, 15, 34, 35, 35, 49,123,246,108,157,209,104, 76, 0,128,
+144,144,144, 54, 97, 97, 97,162,152,152, 24, 56, 56, 56, 8, 52, 26,205, 55,106,181,154, 11,124,183, 30, 67, 1,252, 15, 64,187,
+ 42,145, 53, 10,192, 81, 0,109, 1,196, 3, 24,241, 44, 11,103, 18, 88,233,233,233,216,181,107, 23, 86,173, 90, 5, 31, 31, 31,
+ 24, 12, 6,240,249,124,179,184,226,243,249, 32, 8, 2, 44,203, 18,214,242, 94,185,114, 5,123,247,238,197,226, 69,139,160, 84,
+ 86,222,166, 6,131, 1,249, 5, 5,144, 72, 36,102, 17, 86,143, 96,250, 46, 49, 49,113,158,187,187,187,217, 77,105,233, 34, 4,
+ 0,133, 66, 1,134, 97, 64, 81, 20,116, 58, 29,118,236,216, 65,177, 44,251, 93, 61,214, 38,179, 24,122,247,221,119,161,211,253,
+181, 62,120,199,142, 29, 43,173, 33, 45, 90, 32, 32, 32,192,124,108,178, 80, 89,195,185,179,103, 7,104, 45, 62,237, 27,246, 25,
+ 0,192,195,195, 3,190,190,190, 80,171,213, 86,113,254, 91, 4,150,105,129,219,106, 11,221,102,102,102,175,217,189,237,155,207,
+ 68, 2, 82, 16,210,195, 23, 14, 98, 10,132,204, 17,194,222, 31,129,176,247,172,252, 98,126, 50,244,191,126,132, 81, 1,185,228,
+ 94, 29,239,199,176,129, 94, 77,194, 78, 39,215, 26, 92, 71,146,100,247,230,205,155, 35, 50, 50, 18, 45, 91,182,196,146, 37, 75,
+224,231,231, 7,153, 76,134,172,172, 44,148,149,149, 65, 46,151,131,166,105, 4, 6, 6,242,148, 74,101,112, 3, 4, 86,224,224,
+ 62,157,187,241, 85,126,232, 57,240, 5,156,217,210, 91,190,251,151,140,133, 69,101,198,111, 96,177,224,106, 99,193,107,175,189,
+134,172,172, 44,217,190,125,251, 26, 44,178,186,117,235,118,134,162,168,126, 86,152,195,207,158, 59,119,174, 79, 67,197,213,174,
+ 93,187,228,246,246,246,168, 47,120,211, 6,113,117,110,220,184,113,170,125,251,246,253,208,169, 83,167,215,109, 20, 89,205, 71,
+141, 26,117, 98,231,206,157,126, 67,134, 12, 81, 68, 70, 70,254, 77, 96,181,107,215,238,181, 51,103,206,188, 62,125,250,244,118,
+251,247,239,127, 5,149,139, 74,215,103,230,238,209,170, 85, 43, 60,120,240, 0, 89, 89, 89,208,233,116,200,202,202, 2, 0,164,
+165,165,193,195,195, 3, 14, 14, 14,240,240,240, 64,155, 54,109, 8,146, 36,131,172, 41,108,112,112,240, 80, 0,100,114,114, 50,
+114,114,114, 96,103,103, 7,185, 92, 14,119,119,119,244,233,211,135,239,237,237, 61,216, 86,129, 53,104,208,160,225, 50,153,140,
+ 76, 77, 77, 69, 74, 74, 10,116, 58, 29, 18, 18, 18, 96,103,103,135,144,144, 16,129,183,183,119,104, 3, 4, 86,251,169, 83,167,
+102, 91,138, 43, 19,228,114, 57,225,235,235,155,111,111,111,223, 5,128, 45, 2,171,253,236,217,179,179, 86,175, 94,253, 82,120,
+120,248, 2,211,155,225,225,225, 31, 2,192,230,205,155, 35, 29, 29, 29,187, 0,176, 69, 96,129,101, 89,102,210,164, 73,137, 34,
+145, 8,166,205, 36, 92, 63,251,236, 51,144, 36,105,103, 5,205,199,241,241,241, 29, 21, 10, 5,226,227,227,193,227,241, 64, 16,
+ 68,162, 70,163,233, 8, 0, 46, 46, 46, 73, 21, 21, 21, 94, 21, 21, 21, 24, 49, 98, 4, 49,100,200,144, 14, 27, 54,108, 88, 4,
+160,177, 8,172,174, 0,214, 3,208, 3, 88, 4,224,114, 35,235,226,178, 0,188,108, 33,178, 98, 1,136,171,196,213,203, 85,231,
+159, 9, 8,130, 0,195, 48,224,243,249,248,236,179,207, 96, 48, 24,176,127,255,126, 28, 61,122, 20, 36, 73,130, 32, 8, 16, 4,
+ 1,149, 74,133, 47,190,248,194,124,108, 13, 40,138,194,183,223,126,139,143, 22, 44, 48,139,171,170,135, 62,184,185,186,194,201,
+217, 25,201,201,201,245, 10,172,236,236,236,165, 81, 81, 81,168, 43,200,125,216,176,191, 60,172,150, 65,238,214,148,147,199,227,
+ 65,167,211,161, 95,191,191,134,143, 89,179,102,153, 95, 23, 20, 20,152,254, 19, 32,172,172, 60,143,199,131,150, 5, 94,147,252,
+245,222,224,247,223,175,102,145,171,131,179, 86, 45,242,175,180, 96,137,122,165,110,190,127,129, 12, 24, 25,250,194,120, 71,149,
+ 20, 76, 73, 6,132,125,195,112, 35, 95,134,141,219, 42,199,194,121, 35, 2,209,190,223, 74,232,190,233,143, 62, 45,244,162,111,
+ 98,164,243, 1, 44,169,141,207,217,217,217,153,162, 40,144, 36, 9,185, 92, 14, 71, 71, 71, 72,165, 82,228,230,230, 98,206,156,
+ 57, 56,125,250, 52,244,122, 61,132, 66, 33, 90,181,106, 5,131,193,224,101,179,245,202,129,191,115,195,103,171,236,243,146, 15,
+224,234,221, 66,200,236, 60,176,104,106, 23,135,176, 45,209, 75,115, 10,202, 63,108,140, 23,193,223,223, 31,115,231,206,149,125,
+249,229,151, 13, 18, 89, 20, 69,173,224,243,249, 61,223,127,255,125,233,136, 17,127,127, 32,140,139,139,195,180,105,211,180,229,
+229,229,159, 52, 68, 92,137, 68,162,211, 59,119,238,148,219,217,217,225,193,131, 7, 79, 76, 92,109,218,180, 73,229,229,229, 5,
+129, 64, 32,249,246,219,111,109, 17, 89,109,134, 13, 27,118,114,231,206,157,158, 83,167, 78, 77,139,140,140, 76, 65,229,180,250,
+106,136,137,137, 41, 24, 63,126,124,234,238,221,187,189, 25,134,249,245,224,193,131,161, 0,110,215,211,150,205,101, 50, 25,114,
+115,115, 49,111,222,188,106, 1,170, 38,119, 54, 0,196,199,199,195,195,195, 3, 21, 21, 21,238,214,212,217,209,209,209,129,101,
+ 89, 76,153, 50, 5, 15, 31,254,165, 77,220,221,221,241,240,225, 67, 80, 20,229,104,107, 59, 58, 56, 56, 56, 26,141, 70,244,238,
+221, 27, 21, 21, 21, 0,128, 81,163, 70, 65, 32, 16, 32, 59, 59, 27, 6,131,193,169, 1,151,199,121,200,144, 33, 25,143, 58, 41,
+151,203,141, 14, 14, 14, 45,108,228,116, 10, 13, 13, 77,223,190,125,123, 77, 87, 29,162,162,162, 94,181,179,179, 11,119,116,116,
+244,109, 64, 89, 25,177, 88, 12,177, 88, 12,129, 64, 0,145, 72, 4,177, 88, 12,145, 72, 4,129, 64, 0, 30,143,103,149, 95,133,
+ 97, 24,156, 56,113, 2, 36, 73, 86,115, 93, 44, 94,188,248, 29,153, 76,230, 26, 17, 17, 97,126, 0, 44, 45, 45, 69,235,214,173,
+ 91,181,106,213,234, 90,102,102,102,202,237,219,183, 95,127,198,221,199, 58, 0,166, 89,109, 91, 1, 4, 52,194, 46, 46, 11,192,
+ 72, 0,209, 85,226, 74, 15, 96,248,179, 20, 87,150,215,158,207,231,155,255,231, 18,137, 4,129,129,129,102, 49, 69, 16, 4,202,
+203,203,205, 46, 66,107, 45, 88, 69, 69, 69, 80,171,213, 80, 42,149,104,237,227,131,196,132, 4, 0, 48,191, 22,137, 68,102, 33,
+ 86, 23, 10, 10, 10, 74,170,130,213,223,125,194,226,146, 5, 0, 62,191,238, 48,108,181, 90, 13,134, 97, 76,194,146,125, 18,156,
+206,206,206, 40, 45, 45,181,138,243,223, 34,176,254,166, 24,195,194, 64,234, 46,180,220, 53,114,112,183,241,109, 61,228,208,229,
+ 38, 67,164,112, 2, 97,223, 2, 27,183,253,138,219, 41,149,161, 81, 27,143,198, 96,247,194, 1, 32,100,142, 80,107,239, 66, 41,
+ 17,191,254, 40,129,149,151,151, 87,106, 48, 24, 28,165, 82, 41,248,124, 62,132, 66, 33,114,115,115,241,127,255,247,127, 56,114,
+228, 8, 90,180,104, 1,138,162, 32, 18,137,144,147,147, 3,161, 80,104,211,236, 68, 30, 15, 67,102,140,239,215, 82,238,228,131,
+188,152,229,149,111,170, 2, 49,117, 20, 79,244,249,222, 91,227,114, 10,202, 63, 71,101, 80,101,163,130, 66,161, 64, 64, 64, 0,
+198,140, 25, 35,219,191,127,255, 30, 0, 30,182,124, 63, 38, 38,230,124, 96, 96, 96,255,245,235,215,159,209,104, 52,210, 78,157,
+ 58, 65,161, 80, 64,161, 80, 32, 57, 57, 25,203,151, 47,175,208,233,116,161, 13,177,142,241,249,252,111, 39, 77,154, 36, 87,169,
+ 84, 72, 78, 78,134,163,163,227, 99,213, 53, 48, 48,176,157, 64, 32, 56,183,105,211, 38,149,183,183, 55,238,220,185,131,206,157,
+ 59,195,205,205, 77,178,122,245,106,107, 69,214, 87, 7, 14, 28,104, 33, 18,137,136,131, 7, 15, 54, 63,120,240,224,156,250,126,
+119,239,222,189, 45, 14, 30, 60,184, 9, 64, 8,234, 8,254, 22, 10,133,105, 57, 57, 57,222,205,154, 53,195,174, 93,187, 64,146,
+ 36, 50, 50, 50,176,104,209, 34,172, 94,189, 26, 65, 65, 65, 80, 42,149,104,214,172, 25, 18, 19, 19, 33,145, 72,172,138,120, 78,
+ 79, 79,207, 7,224,114,250,244,105,228,228,252,149,178,197,211,211, 19,249,249,249,208,233,116,121,182,182,101,122,122,122, 30,
+ 0,215,107,215,174, 33, 37, 37, 5, 3, 7, 14,196,143, 63,254,136, 46, 93,186,128,166,105, 24,141,198,188, 6, 92, 34,154,199,
+227,177,117,116,162, 4, 0, 7, 27, 57,169,186, 56,171,250, 29, 91, 57,193,178, 44,251, 40,113, 37, 18,137, 80,207,111,154,117,
+179,159,159,223,178, 86,173, 90,181, 93,180,104,145,128,207,231,163, 87,175, 94,109,134, 15, 31,158, 74,146,164,211, 71, 31,125,
+ 36,171,205, 24, 12,160, 99,219,182,109,229,141,160,251,176,180,210, 53,214, 73, 39, 46, 85, 22, 63, 17, 0, 67,213,254, 16,254,
+138,201,122,166, 22, 44,161, 80,136,176,176, 48, 76,159, 62, 29,174,174,174, 88,176, 96, 1,248,124,190,121, 51, 89,101, 76, 86,
+ 45, 43,239, 77,184,186,184,212,253, 71,171, 10,114,175,231, 33,234,169,164,105, 48,137, 33,107, 98,161, 44,172, 77, 86,137,182,
+199,228,252,215, 88,175, 44, 5, 86, 53,179,156, 89, 92, 13,236, 60,222,207, 67,138,216,152,155,104,239,102, 4, 43, 16,212,113,
+183, 24, 65, 8,229,176,151,242, 61,234,184, 0, 49, 41, 41, 41,158,246,246,246, 48, 24, 12, 16,137, 68,104,223,190, 61, 46, 94,
+188, 8,157, 78, 7,189, 94, 15,177, 88, 12,161, 80,136, 91,183,110,193, 96, 48, 68,218,162,175,156, 85,188, 77, 31,126,188, 92,
+137,244, 93,176, 87,138, 16,220,221, 27,144,183, 5,175,236, 46,214, 47, 14,117,124,103,209,143, 27,179,114,139,223,104,108, 23,
+ 65,161, 80, 32, 53, 53, 21, 7, 15, 30, 44,215,233,116,227, 26,194, 97, 18, 89, 71,142, 28, 57, 99,111,111, 47, 13, 10, 10, 66,
+ 66, 66, 2, 62,249,228,147, 10,157, 78, 55,164,161,241, 93, 20, 69, 77,216,177, 99,199,105,138,162,228, 38,113,241,184,150,171,
+ 57,115,230, 40, 91,183,110,141,164,164, 36,216,217,217, 65,169, 84,162,101,203,150, 80,171,213,146, 57,115,230, 88, 35,178,102,
+142, 25, 51,230,228,238,221,187, 61,167, 78,157,154,118,232,208,161,227, 0,138,106,107,218, 97,195,134,189,186,123,247,110,207,
+119,222,121,231, 1,128, 57,168,103,102, 29,195, 48, 23,146,146,146,188,252,252,252,136, 54,109,218, 64, 36, 18,193,221,189,210,
+ 72,213,177, 99, 71,248,249,249, 65, 40, 20, 2, 0,146,146,146, 0, 43,243,178,252,249,231,159, 63,197,199,199, 79,238,210,165,
+ 11,207,205,205,173,218,236,164,213,171, 87, 27, 82, 83, 83,109, 94, 71,235,143, 63,254,248,241,230,205,155, 83,122,245,234,197,
+119,112,112,128, 88, 44, 70,251,246,237,161, 86,171,241,201, 39,159, 24,238,223,191,223,144,181,185, 30, 92,187,118, 77,226,227,
+227, 67, 63,226, 94, 85, 54,192,242,144,118,245,234, 85, 97,247,238,221,143,159, 58,117,170,157,229,137,110,221,186, 29, 87, 40,
+ 20,118, 0, 26, 50, 53,143,177,116, 13, 90,186, 10, 69, 34, 17,248,124,126,189, 22, 44,141, 70,243,179,171,171,235, 61, 87, 87,
+215,243, 61,122,244,176,139,142,142,198,146, 37, 75,132, 58,157,174,121,120,120,184,121, 32,174,109, 0, 45, 43, 43,147, 52,130,
+238, 99, 30,128, 13, 0,100, 0, 22, 52,194, 49,198, 21,149, 1,237,190,168,116, 11,142,170, 18, 91,166,152,172,103, 42,178, 24,
+134,129, 64, 32,128,175,175, 47,222,125,247, 93,172, 89,179, 6, 51,102,204, 64,235,214,173,205,215,222, 20,131, 85, 53,227,205,
+170,129, 95, 40, 20,194,213,205, 13, 70,163,209,108,189, 2,128,196,132, 4,240,249,124, 48, 12, 3,157, 78, 87,175,139,208,197,
+197,101,217,218,181,107,231, 12, 26, 52,136,180,156,113,199,178,172, 57,157,132,229,102, 52, 26,241,243,207, 63,207, 89,189,122,
+117,157,105, 26, 44,133, 78,199,142, 29,171,185, 5, 55,111,222,108,217,103, 35, 36, 36,196,166,217,126, 60, 30, 15,190, 97,159,
+ 85,115, 11,158,108,242, 87,179, 53,123,123, 42, 90,127,178,233, 81,156,255, 42, 23, 97,173, 53, 52, 92,244, 92, 57, 98, 64,192,
+120, 63,119, 49,174,197,220,194, 47, 81,154,187,185,185,133, 96,178,110,130,201,185,131,121, 35, 2,209,182,133, 35,218,182,112,
+196,188, 17,129, 96,178,111,129, 45, 72, 6, 43,113, 64,118, 25,241, 72,247, 66,126,126,254,186, 21, 43, 86, 20, 56, 56, 56, 64,
+ 34,145, 64, 36, 18, 33, 45, 45, 13,254,254,254,230,227,170, 39, 79, 44, 89,178, 36, 39, 39, 39,103,155,181, 21,145, 75,201,169,
+107, 22,189,225, 42, 20, 43,129,252, 72,168, 84, 10,236,218,246, 25,160,203, 0, 72, 17, 94, 9, 9,224,169, 93,237,251, 0,104,
+211,216, 46,194,131, 7, 15, 16, 22, 22, 86,174,213,106, 31, 43,208, 61, 38, 38,230,188,193, 96,232,191,109,219, 54,237, 47,191,
+252,242,216,226,202,196,105, 52, 26, 7,238,217,179,167,236,193,131, 7, 80, 40, 20, 13,174,167, 80, 40,252,136,162, 40,213,134,
+ 13, 27,152,126,253,250,209, 51,103,206,164, 39, 76,152, 64, 15, 27, 54,140, 14, 9, 9,161,167, 77,155, 70,235,116, 58,177, 76,
+ 38, 91, 91, 15, 85,252,177, 99,199,130, 39, 79,158,124,231,235,175,191,246,120,233,165,151, 90, 0, 88, 90,115, 11, 12, 12,116,
+216,189,123,183,231,244,233,211,147, 14, 30, 60, 56, 0,245,184, 7, 1, 64,167,211,109,222,186,117,107, 5, 73,146, 80, 40, 20,
+ 16,137, 68,104,210,164,137, 89, 8,155, 6,114,131,193,128, 45, 91,182,104,181, 90,237, 70,107,234,158,151,151,183,107,254,252,
+249,247,207,156, 57, 99, 52,205,242,201,200,200,192, 39,159,124, 98,216,182,109, 91,122, 97, 97,225,215,182,182,103,113,113,241,
+183, 31,126,248, 97,202,137, 19, 39,140, 36, 73,162,160,160, 0,246,246,246,248,228,147, 79, 12, 95,127,253,117,122, 73, 73,137,
+205,156, 47,188,240, 66, 82,122,122,186, 82,167,211,253,205,250, 35, 16, 8, 8,137, 68, 98,154, 17,102, 53,186,116,233,146,148,
+146,146,162, 90,185,114,101, 68, 72, 72,200, 26,165, 82,153,160, 84, 42, 19, 66, 66, 66,214,110,217,178,229,108, 21,103,184,205,
+157, 23, 73,154, 5,150,201, 85,104,178, 98, 85, 89,178,172,114, 17,250,249,249, 29,216,187,119,175, 93, 66, 66, 2,138,139,139,
+ 17, 27, 27,139,152,152, 24,179, 43,215, 52,152, 89,110, 0, 80, 94, 94, 46,109, 4,221,199,255, 80,153,250,194,187, 74,200, 52,
+ 54, 28,181, 16, 87, 47,163,114,230,217,203, 85,199,237, 0,252,244, 44, 45, 88, 44,203,154, 31,118,222,120,227, 13,132,135,135,
+163,117,235,214,102, 81,101, 57,139,208, 22,145, 65,211, 52,218,183,111, 15,157, 94, 95, 77,160,243,249,124, 52,105,210, 4, 73,
+ 73, 73,160, 40,170, 94, 11, 22, 65, 16, 35, 7, 13, 26, 68,198,197,197,193,207,207, 15, 49, 49, 49,136,137,137, 65,108,108, 44,
+174, 93,187,134, 27, 55,110,224,214,173, 91,184,125,251, 54, 58,119,238,140,212,212, 84, 12, 24, 48,192,148,166,161, 78, 35,155,
+ 45,214, 38, 43,173,119, 79,131,243, 95, 97,193, 34, 44,247,174, 14,242, 9,109,213,124, 92,187,118, 27,199,175,230,239, 38, 8,
+242, 88,204,125,221, 47, 3, 90,149,192,112,228, 77,180, 31,185, 15,187, 23, 14,168,124, 2,200,190, 5,195,119,111,129,144, 57,
+ 35,177, 88, 14,173,190,176,174,167,230,168,232,232,232,195,123,247,238,157, 52,126,252,120, 17,195, 48,144, 74,165,120,239,189,
+247,204, 57, 66,120, 60, 30,102,204,152, 81,154,157,157,189, 1, 86,206,252, 2, 32,181,147, 11, 22,143,157,178, 68,130,135,219,
+ 1, 82,136, 92,116, 66,199,151, 38, 33, 59,229, 34, 80,118, 27, 32,132,216,246,233,100,231, 87, 39,124,254,117,102, 78,225,139,
+141,229, 2,220,185,115, 7, 75,151, 46,125,108,113, 85,211,146,117,252,248,241, 61, 58,157,110,202, 19,228, 28,184,102,205,154,
+211, 46, 46, 46, 13,118,139,184,187,187,191,157,155,155, 59,201, 26,195,153, 53,186,244,200,145, 35, 67, 82, 82, 82, 86,197,199,
+199,215, 58,115,245,214,173, 91, 63,246,239,223, 95,102,203, 44,194,216,216,216,152,160,160,160,173, 27, 54,108,152, 49,119,238,
+ 92,137, 84, 42,133, 74,165, 66,124,124, 60,154, 55,111, 14, 0,208,106,181, 88,184,112,161,214,104, 52,238,142,142,142,190,104,
+237,195,242,205,155, 55,199, 78,155, 54,109,114,155, 54,109, 94,101, 24,198, 73,175,215,231,165,166,166,158,168, 18, 66, 13,113,
+239, 48,113,113,113, 99,166, 79,159, 62,222,199,199,103,184,193, 96,112,162, 40, 42,239,225,195,135,199,139,139,139,119, 53,132,
+243,226,197,139, 57, 19, 38, 76, 72,206,204,204,244, 87,171,213, 69,118,118,118,122,189, 94,207, 83, 40, 20, 74,145, 72,212, 25,
+192, 69,130, 32,110,219,194, 25, 29, 29,157, 53,113,226,196, 20,157, 78,215,102,199,142, 29,145,114,185,252,119,130, 32, 8,161,
+ 80,232, 32,151,203,131, 1, 68, 16, 4,145,104,107, 89, 73,146,100, 44, 5,149,165, 21, 75, 40, 20,130, 32, 8,171, 4, 86, 82,
+ 82,210,249, 21, 43, 86,116,104,213,170, 21,182,109,219,150,175, 80, 40,148,195,135, 15,231, 23, 21, 21, 17,117, 89,176,180, 90,
+173, 4, 28,234,125,182,168,178,242, 14,181,176,124,154, 2,223,143, 2, 40,124,150,133, 99, 89,182,154,144,106,222,188,121, 53,
+ 81,101,121,206, 22,129, 69, 81, 20,132, 66, 33,248,124, 62,220,212,106,179,152, 99, 89, 22, 9,137,137, 40, 40, 40, 48,167,105,
+168,231, 30,231, 17, 4,129,209,163, 71, 91,245,187,111,188,241, 6, 34, 34, 34, 80,159, 59,209,114,198, 95,139, 22, 45,234, 21,
+ 67, 85,101,177,122, 22,161,135,135, 71, 67, 57,137, 26,251,127,133,192,170,134,140,252,242,149, 59,127,136, 93,152, 81, 76, 29,
+ 19,247, 72,125, 55, 44, 12,236,194,190, 45,206,120,200, 69,253,219,146,233,208,125,221, 11,132,170,114,176, 97, 75, 51, 64,200,
+221, 80, 32,104,142,159, 99, 50, 51, 73, 1,175, 78,235, 67, 97, 97,225,188, 47,190,248,130,119,250,244,233,145,171, 86,173,178,
+247,245,245,197,216,177, 99,161,215,235,113,227,198, 13, 76,155, 54, 45, 63, 39, 39,103,123, 97, 97,225, 26,107, 43,225,172,226,
+255,223,198,143,251, 59,145, 76, 41, 80,124, 21,224,219,193,217, 81,137,235,209,145, 64, 81, 52, 64, 10, 1, 82,132, 46,157,252,
+208,177,157,183, 95,230, 31, 87,122, 1, 56,215, 24, 46,192, 59,239,188,243,196,196,149,165, 32, 2,208,234, 73,150,211, 36,178,
+222,127,255,253,211, 12,195,200, 26,244, 40,123,244, 40,141,186,243,145,217,108,252,187,114,229,202,152, 71,157, 52, 24, 12,199,
+ 47, 94,188,104,115,146, 89,163,209,184, 48, 46, 46, 14,179,102,205,154,254,214, 91,111, 73,125,125,125,225,233,233,137,132,132,
+ 4,196,199,199, 99,235,214,173, 21, 12,195,236, 42, 44, 44,252,192, 70,106,186,184,184,120,123, 84, 84,212,246, 39,216, 6, 76,
+ 81, 81,209, 55, 81, 81, 81,223, 60, 41,194, 41, 83,166,220, 76, 72, 72,200,119,119,119, 15,226,241,120, 29, 80,153, 40, 82, 3,
+224,155,134, 8, 33, 0,152, 62,125,250,181,164,164,164, 92, 55, 55,183, 32,161, 80,232, 93,197,153, 14, 96, 87, 3, 57,243,174,
+ 95,191,238,221,173, 91, 55,134,199,227,177, 2,129,128,173, 26, 12, 89, 62,159,207, 18, 4,193,254,250,235,175, 18, 88, 17,115,
+153,150,150, 54,103,247,238,221,172, 66,161, 8, 42, 45, 45, 29, 11, 96,143, 86,171,237, 86, 88, 88,104, 30,132,107, 67, 69, 69,
+133,152,211, 79,245,226,181, 71,188,159, 5,160, 87, 99, 40,224,138, 21, 43,176,125,251,118,212,151,129,252,248,241,227,245, 14,
+252,166,123,197, 20, 95,165,215,235, 17, 23, 23, 7,130, 32,204,199,150, 73, 70,105,154,174, 51,211, 59,195, 48,180, 94,175,199,
+225,195,135,173, 18, 89, 7, 15, 30, 68, 69, 69, 5, 24,190,144,179, 28, 0, 0, 2,246, 73, 68, 65, 84,134,177,170,159,173, 74,
+ 76,138,130,130, 2,115,234,132,192,192, 64,203, 62,212,230,246,228,241,120,240,245,245, 69,110,110, 46,156,157,157, 1, 84,186,
+ 5,205,226,179,172,236, 63,115,243, 91,173, 18,195,122,123,218, 85,240,201, 31, 2,220,153,151,187,120,138,225,108, 47, 1, 79,
+ 32, 70,113, 5,129,184,140, 10,156,187, 93,252,144,166,216,208, 85,127,164, 88,155, 32,174,187, 90,173,254,152,166,233,118, 36,
+ 73,202, 88,150, 45,229,241,120,177, 25, 25, 25,203, 0,220,178,165, 18,118, 10, 50,209, 65,206,179, 19,136, 68, 44, 77, 49, 0,
+ 72,128, 36, 1,130, 4,192,171,218, 87, 30,107,181, 6, 33,205, 16,199,178,115,243, 38, 63,235,198,127,241,197, 23,207,148,149,
+149, 61,119,153,220,165, 82,233, 82, 30,143, 55,240,223,190, 76, 76,151, 46, 93,186, 72,165,210,143, 25,134,233, 90, 81, 81,225,
+ 38,149, 74,179, 8,130,136, 46, 41, 41,249,244,218,181,107,151,184,177,243,217,225, 73,102,114,175, 9, 83,110, 44,103,103,103,
+159,235,215,175, 75, 44, 45, 88,150,131, 97,213,251, 4,119, 53,158, 79,248,249,249, 93, 62,112,224, 64,151,230,205,155,147,166,
+128,107,146, 36,205,155,201,141,101,178,182, 92,186,116,137,154, 57,115,230,197,235,215,175,191,244, 40, 78,111,111,239, 51,225,
+225,225,253, 44, 45, 84, 38, 33, 85,243, 53, 77,211, 40, 47, 47,199,210,165, 75,127, 75, 74, 74,170,117,169, 28, 95, 95,223, 13,
+139, 23, 47,158, 51,120,240, 96,146, 36,201,191,197, 92,213,140,195, 50, 24, 12, 56,118,236, 24,243,237,183,223,110,186,123,247,
+238, 35, 99,176, 2, 2, 2, 30,198,198,198,122,152, 82, 38,212,220,106,206,168, 5,128,238,221,187,107,162,162,162,154,254,147,
+156,255, 25,129,101,250,252,130, 62,158,163, 8,144, 35, 73,130,105, 15,130, 16, 49, 44,226, 9,224,140, 72,162,223, 18,246,139,
+ 70, 91,227,243,237,241,228, 51,242,114,156, 28,231,179,224, 36, 97,221,210, 51, 92,123,254, 75, 56,189,189,189, 19, 19, 19, 19,
+189, 31,217, 25, 86, 23, 88, 92,123, 62,103,156,206,206,206,242, 38, 77,154,252, 78,146,164,231,163, 22,119,182, 20,215, 12,195,
+164,100,101,101,245,205,206,206, 46,127, 20,167,187,187,187,151, 68, 34,249,138, 97,152,110,214, 44,246, 76,146,100, 84, 69, 69,
+197,204, 26,139, 61,155, 57,159,224, 44,194,106,229,244,247,247, 79,138,138,138,242,146, 74,165,213,226, 10,107,214,217,132,251,
+247,239, 99,248,240,225,169,215,175, 95,111,241,148, 57,255, 85,176,117, 45, 66,118,205, 31,169,135, 1, 28,230,158,127, 56,252,
+199,192,112, 77,240,223,130, 86,171, 45,104,210,164, 73,105, 69, 69,133, 64,167,211, 9, 40,138,170, 54,192, 73,165,210, 28,173,
+ 86,203, 53,212,115,138,220,220,220,178,220,220,220,160, 39,201, 89, 37,148,250, 63, 41,190,167,149, 7,171,160,160, 32,180,107,
+215,174,191,242,249,124,113, 77,241, 83,155, 24,162,105,186, 34, 47, 47,111,224, 63,205,249, 95, 19, 88, 28, 56,112,224,240,159,
+ 64, 70, 70, 70, 80, 61, 2,140,107, 36, 14,207, 37, 52, 26, 77,188, 70,163,241,108,236,156,207, 59, 72,174, 9, 56,112,224,192,
+129, 3, 7, 14, 28, 56,129,197,129, 3, 7, 14, 28, 56,112,224,192, 9, 44, 14, 28, 56,112,224,192,129, 3, 7, 78, 96,113,224,
+192,129, 3, 7, 14, 28, 56,112,104, 48,254, 31,162, 69, 35,218,144, 32, 45,122, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130,
0};
diff --git a/source/blender/editors/include/BIF_gl.h b/source/blender/editors/include/BIF_gl.h
index c1b3b056d62..3318d869378 100644
--- a/source/blender/editors/include/BIF_gl.h
+++ b/source/blender/editors/include/BIF_gl.h
@@ -31,30 +31,11 @@
#ifndef BIF_GL_H
#define BIF_GL_H
- /* Although not really a great idea to copy these defines
- * from Windows' winnt.h, this lets us use GL without including
- * windows.h everywhere (or BLI_winstuff.h) which is a good thing.
- */
-#ifdef WIN32
-#ifndef APIENTRY
-#define APIENTRY __stdcall
-#endif
-
-#ifndef CALLBACK
-#define CALLBACK __stdcall
-#endif
-
-#ifndef WINGDIAPI
-#define WINGDIAPI __declspec(dllimport)
-#endif
-#endif
-
#include "GL/glew.h"
/*
* these should be phased out. cpack should be replaced in
- * code with calls to glColor3ub, lrectwrite probably should
- * change to a function. - zr
+ * code with calls to glColor3ub. - zr
*/
/*
*
@@ -67,11 +48,5 @@
#define glMultMatrixf(x) glMultMatrixf( (float *)(x))
#define glLoadMatrixf(x) glLoadMatrixf( (float *)(x))
-#define lrectwrite(a, b, c, d, rect) {glRasterPos2i(a, b);glDrawPixels((c)-(a)+1, (d)-(b)+1, GL_RGBA, GL_UNSIGNED_BYTE, rect);}
-
-/* glStippleDefines, defined in glutil.c */
-extern GLubyte stipple_halftone[128];
-extern GLubyte stipple_quarttone[128];
-
#endif /* #ifdef BIF_GL_H */
diff --git a/source/blender/editors/include/BIF_glutil.h b/source/blender/editors/include/BIF_glutil.h
index 5c611365a7e..f5769610f50 100644
--- a/source/blender/editors/include/BIF_glutil.h
+++ b/source/blender/editors/include/BIF_glutil.h
@@ -45,6 +45,9 @@ void sdrawXORline4(int nr, int x0, int y0, int x1, int y1);
void fdrawXORellipse(float xofs, float yofs, float hw, float hh);
void fdrawXORcirc(float xofs, float yofs, float rad);
+/* glStipple defines */
+extern unsigned char stipple_halftone[128];
+extern unsigned char stipple_quarttone[128];
/**
* Draw a lined (non-looping) arc with the given
@@ -202,7 +205,6 @@ int is_a_really_crappy_intel_card(void);
void set_inverted_drawing(int enable);
void setlinestyle(int nr);
-
/* own working polygon offset */
void bglPolygonOffset(float viewdist, float dist);
diff --git a/source/blender/editors/include/BIF_transform.h b/source/blender/editors/include/BIF_transform.h
deleted file mode 100644
index e02202eb8e0..00000000000
--- a/source/blender/editors/include/BIF_transform.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#ifndef BIF_TRANSFORM_H
-#define BIF_TRANSFORM_H
-
-/* ******************* Registration Function ********************** */
-
-struct wmWindowManager;
-struct ListBase;
-struct wmEvent;
-struct bContext;
-struct Object;
-struct uiLayout;
-
-void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *keymap, int spaceid);
-void transform_operatortypes(void);
-
-/* ******************** Macros & Prototypes *********************** */
-
-/* MODE AND NUMINPUT FLAGS */
-enum {
- TFM_INIT = -1,
- TFM_DUMMY,
- TFM_TRANSLATION,
- TFM_ROTATION,
- TFM_RESIZE,
- TFM_TOSPHERE,
- TFM_SHEAR,
- TFM_WARP,
- TFM_SHRINKFATTEN,
- TFM_TILT,
- TFM_TRACKBALL,
- TFM_PUSHPULL,
- TFM_CREASE,
- TFM_MIRROR,
- TFM_BONESIZE,
- TFM_BONE_ENVELOPE,
- TFM_CURVE_SHRINKFATTEN,
- TFM_BONE_ROLL,
- TFM_TIME_TRANSLATE,
- TFM_TIME_SLIDE,
- TFM_TIME_SCALE,
- TFM_TIME_EXTEND,
- TFM_BAKE_TIME,
- TFM_BEVEL,
- TFM_BWEIGHT,
- TFM_ALIGN
-} TfmMode;
-
-/* TRANSFORM CONTEXTS */
-#define CTX_NONE 0
-#define CTX_TEXTURE 1
-#define CTX_EDGE 2
-#define CTX_NO_PET 4
-#define CTX_TWEAK 8
-#define CTX_NO_MIRROR 16
-#define CTX_AUTOCONFIRM 32
-#define CTX_BMESH 64
-#define CTX_NDOF 128
-
-/* Standalone call to get the transformation center corresponding to the current situation
- * returns 1 if successful, 0 otherwise (usually means there's no selection)
- * (if 0 is returns, *vec is unmodified)
- * */
-int calculateTransformCenter(struct bContext *C, struct wmEvent *event, int centerMode, float *vec);
-
-struct TransInfo;
-struct ScrArea;
-struct Base;
-struct Scene;
-struct Object;
-
-void BIF_setSingleAxisConstraint(float vec[3], char *text);
-void BIF_setDualAxisConstraint(float vec1[3], float vec2[3], char *text);
-void BIF_setLocalAxisConstraint(char axis, char *text);
-void BIF_setLocalLockConstraint(char axis, char *text);
-
-int BIF_snappingSupported(struct Object *obedit);
-
-struct TransformOrientation;
-struct bContext;
-
-void BIF_clearTransformOrientation(struct bContext *C);
-void BIF_removeTransformOrientation(struct bContext *C, struct TransformOrientation *ts);
-void BIF_manageTransformOrientation(struct bContext *C, int confirm, int set);
-int BIF_menuselectTransformOrientation(void);
-void BIF_selectTransformOrientation(struct bContext *C, struct TransformOrientation *ts);
-void BIF_selectTransformOrientationValue(struct bContext *C, int orientation);
-
-void BIF_menuTransformOrientation(struct bContext *C, struct uiLayout *layout, void *arg);
-char * BIF_menustringTransformOrientation(const struct bContext *C, char *title); /* the returned value was allocated and needs to be freed after use */
-int BIF_countTransformOrientation(const struct bContext *C);
-
-void BIF_getPropCenter(float *center);
-
-void BIF_TransformSetUndo(char *str);
-
-void BIF_selectOrientation(void);
-
-/* view3d manipulators */
-void initManipulator(int mode);
-void ManipulatorTransform();
-
-//int BIF_do_manipulator(struct ScrArea *sa);
-//void BIF_draw_manipulator(struct ScrArea *sa);
-
-/* Snapping */
-
-
-typedef struct DepthPeel
-{
- struct DepthPeel *next, *prev;
-
- float depth;
- float p[3];
- float no[3];
- struct Object *ob;
- int flag;
-} DepthPeel;
-
-struct ListBase;
-
-typedef enum SnapMode
-{
- SNAP_ALL = 0,
- SNAP_NOT_SELECTED = 1,
- SNAP_NOT_OBEDIT = 2
-} SnapMode;
-
-#define SNAP_MIN_DISTANCE 30
-
-int peelObjectsTransForm(struct TransInfo *t, struct ListBase *depth_peels, short mval[2]);
-int peelObjectsContext(struct bContext *C, struct ListBase *depth_peels, short mval[2]);
-int snapObjectsTransform(struct TransInfo *t, short mval[2], int *dist, float *loc, float *no, SnapMode mode);
-int snapObjectsContext(struct bContext *C, short mval[2], int *dist, float *loc, float *no, SnapMode mode);
-
-#endif
-
diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h
index 0f2ac6e3027..1df9182fc9b 100644
--- a/source/blender/editors/include/ED_armature.h
+++ b/source/blender/editors/include/ED_armature.h
@@ -103,6 +103,7 @@ void mouse_armature(struct bContext *C, short mval[2], int extend);
struct Bone *get_indexed_bone (struct Object *ob, int index);
float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]);
EditBone *ED_armature_bone_get_mirrored(struct ListBase *edbo, EditBone *ebo); // XXX this is needed for populating the context iterators
+void ED_armature_sync_selection(struct ListBase *edbo);
void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d);
@@ -127,22 +128,22 @@ void ED_pose_deselectall(struct Object *ob, int test, int doundo);
int ED_operator_sketch_mode_active_stroke(struct bContext *C);
int ED_operator_sketch_full_mode(struct bContext *C);
-int ED_operator_sketch_mode(struct bContext *C);
+int ED_operator_sketch_mode(const struct bContext *C);
void BIF_freeSketch(struct bContext *C);
void BIF_convertSketch(struct bContext *C);
void BIF_deleteSketch(struct bContext *C);
void BIF_selectAllSketch(struct bContext *C, int mode); /* -1: deselect, 0: select, 1: toggle */
-void BIF_makeListTemplates(struct bContext *C);
-char *BIF_listTemplates(struct bContext *C);
-int BIF_currentTemplate(struct bContext *C);
+void BIF_makeListTemplates(const struct bContext *C);
+char *BIF_listTemplates(const struct bContext *C);
+int BIF_currentTemplate(const struct bContext *C);
void BIF_freeTemplates(struct bContext *C);
void BIF_setTemplate(struct bContext *C, int index);
-int BIF_nbJointsTemplate(struct bContext *C);
-char * BIF_nameBoneTemplate(struct bContext *C);
+int BIF_nbJointsTemplate(const struct bContext *C);
+char * BIF_nameBoneTemplate(const struct bContext *C);
-void BDR_drawSketch(struct bContext *vc);
+void BDR_drawSketch(const struct bContext *vc);
int BDR_drawSketchNames(struct ViewContext *vc);
#endif /* ED_ARMATURE_H */
diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h
index 01882ecd9bc..1b8524eea33 100644
--- a/source/blender/editors/include/ED_fileselect.h
+++ b/source/blender/editors/include/ED_fileselect.h
@@ -69,7 +69,7 @@ typedef struct FileLayout
struct FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile);
-short ED_fileselect_set_params(struct SpaceFile *sfile, const char *title, const char *path,
+short ED_fileselect_set_params(struct SpaceFile *sfile, const char *title, const char *dir, const char *path,
short flag, short display, short filter, short sort);
void ED_fileselect_reset_params(struct SpaceFile *sfile);
diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h
index 8952305d6ab..c4fde48c631 100644
--- a/source/blender/editors/include/ED_mesh.h
+++ b/source/blender/editors/include/ED_mesh.h
@@ -49,26 +49,25 @@ struct UvVertMap;
struct UvMapVert;
struct CustomData;
-// edge and face flag both
-#define EM_FGON 2
-// face flag
-#define EM_FGON_DRAW 1
+#define EM_FGON_DRAW 1 // face flag
+#define EM_FGON 2 // edge and face flag both
/* editbutflag */
-#define B_CLOCKWISE 1
-#define B_KEEPORIG 2
-#define B_BEAUTY 4
-#define B_SMOOTH 8
-#define B_BEAUTY_SHORT 16
-#define B_AUTOFGON 32
-#define B_KNIFE 0x80
+#define B_CLOCKWISE 1
+#define B_KEEPORIG 2
+#define B_BEAUTY 4
+#define B_SMOOTH 8
+#define B_BEAUTY_SHORT 0x10
+#define B_AUTOFGON 0x20
+#define B_KNIFE 0x80
#define B_PERCENTSUBD 0x40
#define B_MESH_X_MIRROR 0x100
#define B_JOINTRIA_UV 0x200
#define B_JOINTRIA_VCOL 0X400
#define B_JOINTRIA_SHARP 0X800
#define B_JOINTRIA_MAT 0X1000
-
+#define B_FRACTAL 0x2000
+#define B_SPHERE 0x4000
/* meshtools.c */
diff --git a/source/blender/editors/include/BIF_retopo.h b/source/blender/editors/include/ED_retopo.h
index cc2fda56b07..3d0b5f57661 100644
--- a/source/blender/editors/include/BIF_retopo.h
+++ b/source/blender/editors/include/ED_retopo.h
@@ -27,8 +27,8 @@
* ***** END GPL LICENSE BLOCK *****
*/
-#ifndef BIF_RETOPO_H
-#define BIF_RETOPO_H
+#ifndef ED_RETOPO_H
+#define ED_RETOPO_H
#include "DNA_vec_types.h"
@@ -108,3 +108,4 @@ void retopo_matrix_update(struct View3D *v3d);
void retopo_free_view_data(struct View3D *v3d);
#endif
+
diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h
index c104f2034e8..3449458168e 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -128,6 +128,7 @@ int ED_operator_editcurve(struct bContext *C);
int ED_operator_editsurf(struct bContext *C);
int ED_operator_editsurfcurve(struct bContext *C);
int ED_operator_editfont(struct bContext *C);
+int ED_operator_editlattice(struct bContext *C);
int ED_operator_uvedit(struct bContext *C);
int ED_operator_uvmap(struct bContext *C);
int ED_operator_posemode(struct bContext *C);
diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h
index 1d47d8ad190..adcf2cfc024 100644
--- a/source/blender/editors/include/ED_transform.h
+++ b/source/blender/editors/include/ED_transform.h
@@ -1,12 +1,12 @@
/**
- * $Id:
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -17,17 +17,149 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
* All rights reserved.
*
- *
- * Contributor(s): Blender Foundation
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
*/
+
#ifndef ED_TRANSFORM_H
#define ED_TRANSFORM_H
+/* ******************* Registration Function ********************** */
+
+struct wmWindowManager;
+struct ListBase;
+struct wmEvent;
+struct bContext;
+struct Object;
+struct uiLayout;
+
+void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *keymap, int spaceid);
+void transform_operatortypes(void);
+
+/* ******************** Macros & Prototypes *********************** */
+
+/* MODE AND NUMINPUT FLAGS */
+enum {
+ TFM_INIT = -1,
+ TFM_DUMMY,
+ TFM_TRANSLATION,
+ TFM_ROTATION,
+ TFM_RESIZE,
+ TFM_TOSPHERE,
+ TFM_SHEAR,
+ TFM_WARP,
+ TFM_SHRINKFATTEN,
+ TFM_TILT,
+ TFM_TRACKBALL,
+ TFM_PUSHPULL,
+ TFM_CREASE,
+ TFM_MIRROR,
+ TFM_BONESIZE,
+ TFM_BONE_ENVELOPE,
+ TFM_CURVE_SHRINKFATTEN,
+ TFM_BONE_ROLL,
+ TFM_TIME_TRANSLATE,
+ TFM_TIME_SLIDE,
+ TFM_TIME_SCALE,
+ TFM_TIME_EXTEND,
+ TFM_BAKE_TIME,
+ TFM_BEVEL,
+ TFM_BWEIGHT,
+ TFM_ALIGN
+} TfmMode;
+
+/* TRANSFORM CONTEXTS */
+#define CTX_NONE 0
+#define CTX_TEXTURE 1
+#define CTX_EDGE 2
+#define CTX_NO_PET 4
+#define CTX_TWEAK 8
+#define CTX_NO_MIRROR 16
+#define CTX_AUTOCONFIRM 32
+#define CTX_BMESH 64
+#define CTX_NDOF 128
+
+/* Standalone call to get the transformation center corresponding to the current situation
+ * returns 1 if successful, 0 otherwise (usually means there's no selection)
+ * (if 0 is returns, *vec is unmodified)
+ * */
+int calculateTransformCenter(struct bContext *C, struct wmEvent *event, int centerMode, float *vec);
+
+struct TransInfo;
+struct ScrArea;
+struct Base;
+struct Scene;
+struct Object;
+
+void BIF_setSingleAxisConstraint(float vec[3], char *text);
+void BIF_setDualAxisConstraint(float vec1[3], float vec2[3], char *text);
+void BIF_setLocalAxisConstraint(char axis, char *text);
+void BIF_setLocalLockConstraint(char axis, char *text);
+
+int BIF_snappingSupported(struct Object *obedit);
+
+struct TransformOrientation;
+struct bContext;
+
+void BIF_clearTransformOrientation(struct bContext *C);
+void BIF_removeTransformOrientation(struct bContext *C, struct TransformOrientation *ts);
+void BIF_manageTransformOrientation(struct bContext *C, int confirm, int set);
+int BIF_menuselectTransformOrientation(void);
+void BIF_selectTransformOrientation(struct bContext *C, struct TransformOrientation *ts);
+void BIF_selectTransformOrientationValue(struct bContext *C, int orientation);
+
+void BIF_menuTransformOrientation(struct bContext *C, struct uiLayout *layout, void *arg);
+char * BIF_menustringTransformOrientation(const struct bContext *C, char *title); /* the returned value was allocated and needs to be freed after use */
+int BIF_countTransformOrientation(const struct bContext *C);
+
+void BIF_getPropCenter(float *center);
+
+void BIF_TransformSetUndo(char *str);
+
+void BIF_selectOrientation(void);
+
+/* view3d manipulators */
+void initManipulator(int mode);
+void ManipulatorTransform();
+
+int BIF_do_manipulator(struct bContext *C, struct wmEvent *event, struct wmOperator *op);
+void BIF_draw_manipulator(const struct bContext *C);
+
+/* Snapping */
+
+
+typedef struct DepthPeel
+{
+ struct DepthPeel *next, *prev;
+
+ float depth;
+ float p[3];
+ float no[3];
+ struct Object *ob;
+ int flag;
+} DepthPeel;
+
+struct ListBase;
+
+typedef enum SnapMode
+{
+ SNAP_ALL = 0,
+ SNAP_NOT_SELECTED = 1,
+ SNAP_NOT_OBEDIT = 2
+} SnapMode;
+
+#define SNAP_MIN_DISTANCE 30
+
+int peelObjectsTransForm(struct TransInfo *t, struct ListBase *depth_peels, short mval[2]);
+int peelObjectsContext(struct bContext *C, struct ListBase *depth_peels, short mval[2]);
+int snapObjectsTransform(struct TransInfo *t, short mval[2], int *dist, float *loc, float *no, SnapMode mode);
+int snapObjectsContext(struct bContext *C, short mval[2], int *dist, float *loc, float *no, SnapMode mode);
-#endif /* ED_TRANSFORM_H */
+#endif
diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h
index 602e94838b7..f9e427ac006 100644
--- a/source/blender/editors/include/UI_icons.h
+++ b/source/blender/editors/include/UI_icons.h
@@ -880,3 +880,5 @@ DEF_ICON(VICON_DISCLOSURE_TRI_DOWN)
DEF_ICON(VICON_MOVE_UP)
DEF_ICON(VICON_MOVE_DOWN)
DEF_ICON(VICON_X)
+DEF_ICON(VICON_SMALL_TRI_RIGHT)
+
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index c0612c3524e..67438120eef 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -51,10 +51,12 @@ struct rcti;
struct rctf;
struct uiStyle;
struct uiFontStyle;
+struct uiWidgetColors;
struct ColorBand;
struct CurveMapping;
struct Image;
struct ImageUser;
+struct uiWidgetColors;
typedef struct uiBut uiBut;
typedef struct uiBlock uiBlock;
@@ -214,6 +216,11 @@ void uiRoundRect(float minx, float miny, float maxx, float maxy, float rad);
void uiDrawMenuBox(float minx, float miny, float maxx, float maxy, short flag, short direction);
void uiDrawBoxShadow(unsigned char alpha, float minx, float miny, float maxx, float maxy);
+/* state for scrolldrawing */
+#define UI_SCROLL_PRESSED 1
+#define UI_SCROLL_ARROWS 2
+void uiWidgetScrollDraw(struct uiWidgetColors *wcol, struct rcti *rect, struct rcti *slider, int state);
+
/* Menu Callbacks */
typedef void (*uiMenuCreateFunc)(struct bContext *C, struct uiLayout *layout, void *arg1);
@@ -537,11 +544,6 @@ void UI_init(void);
void UI_init_userdef(void);
void UI_exit(void);
-/* XXX hide this */
-
-uiBut *uiDefMenuButO(uiBlock *block, char *opname, char *name);
-uiBut *uiDefMenuSep(uiBlock *block);
-
/* Layout
*
* More automated layout of buttons. Has three levels:
diff --git a/source/blender/editors/include/UI_view2d.h b/source/blender/editors/include/UI_view2d.h
index 84148047795..e3fbd906cf6 100644
--- a/source/blender/editors/include/UI_view2d.h
+++ b/source/blender/editors/include/UI_view2d.h
@@ -103,8 +103,8 @@ enum {
#define V2D_SCROLL_HEIGHT 17
#define V2D_SCROLL_WIDTH 17
-/* half the size (in pixels) of scroller 'handles' */
-#define V2D_SCROLLER_HANDLE_SIZE 5
+/* scroller 'handles' hotspot radius for mouse */
+#define V2D_SCROLLER_HANDLE_SIZE 12
/* ------ Define for UI_view2d_sync ----- */
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 00ec875bd86..a76fdcbf39d 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -2619,26 +2619,6 @@ uiBut *uiDefIconTextButO(uiBlock *block, int type, char *opname, int opcontext,
return but;
}
-static int ui_menu_y(uiBlock *block)
-{
- uiBut *but= block->buttons.last;
-
- if(but) return but->y1;
- else return 0;
-}
-
-uiBut *uiDefMenuButO(uiBlock *block, char *opname, char *name)
-{
- int y= ui_menu_y(block) - MENU_ITEM_HEIGHT;
- return uiDefIconTextButO(block, BUT, opname, WM_OP_INVOKE_REGION_WIN, ICON_BLANK1, name, 0, y, MENU_WIDTH, MENU_ITEM_HEIGHT-1, NULL);
-}
-
-uiBut *uiDefMenuSep(uiBlock *block)
-{
- int y= ui_menu_y(block) - MENU_SEP_HEIGHT;
- return uiDefBut(block, SEPR, 0, "", 0, y, MENU_WIDTH, MENU_SEP_HEIGHT, NULL, 0.0, 0.0, 0, 0, "");
-}
-
/* END Button containing both string label and icon */
void uiSetButLink(uiBut *but, void **poin, void ***ppoin, short *tot, int from, int to)
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 7ad422ef3b5..ee86b612332 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -3775,8 +3775,7 @@ static void ui_handle_button_return_submenu(bContext *C, wmEvent *event, uiBut *
button_activate_state(C, but, BUTTON_STATE_HIGHLIGHT);
}
else {
- but= ui_but_find_activated(data->region);
- if(but) {
+ if(event->type != MOUSEMOVE) {
but->active->used_mouse= 0;
button_activate_state(C, but, BUTTON_STATE_HIGHLIGHT);
}
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index 315b8693905..549164c23a1 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -342,6 +342,28 @@ static void vicon_disclosure_tri_right_draw(int x, int y, int w, int h, float al
viconutil_draw_lineloop_smooth(pts, 3);
}
+static void vicon_small_tri_right_draw(int x, int y, int w, int h, float alpha)
+{
+ GLint pts[3][2];
+ int cx = x+w/2-4;
+ int cy = y+w/2;
+ int d = w/5, d2 = w/7;
+
+ viconutil_set_point(pts[0], cx-d2, cy+d);
+ viconutil_set_point(pts[1], cx-d2, cy-d);
+ viconutil_set_point(pts[2], cx+d2, cy);
+
+ glColor4f(0.2f, 0.2f, 0.2f, alpha);
+
+ glShadeModel(GL_SMOOTH);
+ glBegin(GL_TRIANGLES);
+ glVertex2iv(pts[0]);
+ glVertex2iv(pts[1]);
+ glVertex2iv(pts[2]);
+ glEnd();
+ glShadeModel(GL_FLAT);
+}
+
static void vicon_disclosure_tri_down_draw(int x, int y, int w, int h, float alpha)
{
GLint pts[3][2];
@@ -450,6 +472,7 @@ static void init_internal_icons()
def_internal_vicon(VICON_MOVE_UP, vicon_move_up_draw);
def_internal_vicon(VICON_MOVE_DOWN, vicon_move_down_draw);
def_internal_vicon(VICON_X, vicon_x_draw);
+ def_internal_vicon(VICON_SMALL_TRI_RIGHT, vicon_small_tri_right_draw);
IMB_freeImBuf(bbuf);
}
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index b2ba6fb38a8..1b16155c7e6 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -420,7 +420,6 @@ void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y
void ui_draw_menu_back(struct uiStyle *style, uiBlock *block, rcti *rect);
void ui_draw_search_back(struct uiStyle *style, uiBlock *block, rcti *rect);
void ui_draw_link_bezier(rcti *rect);
-void widget_scroll_draw(struct uiWidgetColors *wcol, rcti *rect, rcti *slider, int state);
extern void ui_draw_but(const struct bContext *C, ARegion *ar, struct uiStyle *style, uiBut *but, rcti *rect);
/* theme color init */
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 2e30c5f1cb7..0bf64f75552 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -699,7 +699,7 @@ static void ui_item_rna_size(uiLayout *layout, char *name, int icon, PropertyRNA
subtype= RNA_property_subtype(prop);
len= RNA_property_array_length(prop);
- if(type == PROP_STRING && strcmp(name, "") == 0)
+ if(ELEM(type, PROP_STRING, PROP_POINTER) && strcmp(name, "") == 0)
name= "non-empty";
w= ui_text_icon_width(layout, name, icon);
@@ -1093,9 +1093,11 @@ void uiItemM(uiLayout *layout, bContext *C, char *name, int icon, char *menuname
if(layout->root->type == UI_LAYOUT_MENU && !icon)
icon= ICON_BLANK1;
ui_item_menu(layout, name, icon, ui_item_menutype_func, mt, NULL);
- break;
+ return;
}
}
+
+ printf("uiItemM: not found %s\n", menuname);
}
/* label item */
@@ -1259,7 +1261,7 @@ static void ui_litem_estimate_row(uiLayout *litem)
static int ui_litem_min_width(int itemw)
{
- return MIN2(UI_UNIT_X, itemw);
+ return MIN2(2*UI_UNIT_X, itemw);
}
static void ui_litem_layout_row(uiLayout *litem)
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index 319e69a40e4..a3c456c0a93 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -539,6 +539,7 @@ void ui_draw_aligned_panel(ARegion *ar, uiStyle *style, uiBlock *block, rcti *re
int ofsx;
if(panel->paneltab) return;
+ if(panel->type && (panel->type->flag & PNL_NO_HEADER)) return;
/* calculate header rect */
/* + 0.001f to prevent flicker due to float inaccuracy */
@@ -644,6 +645,22 @@ void ui_draw_aligned_panel(ARegion *ar, uiStyle *style, uiBlock *block, rcti *re
/************************** panel alignment *************************/
+static int get_panel_header(Panel *pa)
+{
+ if(pa->type && (pa->type->flag & PNL_NO_HEADER))
+ return 0;
+
+ return PNL_HEADER;
+}
+
+static int get_panel_size_y(uiStyle *style, Panel *pa)
+{
+ if(pa->type && (pa->type->flag & PNL_NO_HEADER))
+ return pa->sizey;
+
+ return PNL_HEADER + pa->sizey + style->panelouter;
+}
+
/* this function is needed because uiBlock and Panel itself dont
change sizey or location when closed */
static int get_panel_real_ofsy(Panel *pa)
@@ -656,8 +673,8 @@ static int get_panel_real_ofsy(Panel *pa)
static int get_panel_real_ofsx(Panel *pa)
{
- if(pa->flag & PNL_CLOSEDX) return pa->ofsx+PNL_HEADER;
- else if(pa->paneltab && (pa->paneltab->flag & PNL_CLOSEDX)) return pa->ofsx+PNL_HEADER;
+ if(pa->flag & PNL_CLOSEDX) return pa->ofsx+get_panel_header(pa);
+ else if(pa->paneltab && (pa->paneltab->flag & PNL_CLOSEDX)) return pa->ofsx+get_panel_header(pa);
else return pa->ofsx+pa->sizex;
}
@@ -762,18 +779,18 @@ int uiAlignPanelStep(ScrArea *sa, ARegion *ar, float fac, int drag)
/* no smart other default start loc! this keeps switching f5/f6/etc compatible */
ps= panelsort;
ps->pa->ofsx= 0;
- ps->pa->ofsy= -ps->pa->sizey-PNL_HEADER-style->panelouter;
+ ps->pa->ofsy= -get_panel_size_y(style, ps->pa);
for(a=0; a<tot-1; a++, ps++) {
psnext= ps+1;
if(align==BUT_VERTICAL) {
psnext->pa->ofsx= ps->pa->ofsx;
- psnext->pa->ofsy= get_panel_real_ofsy(ps->pa) - psnext->pa->sizey-PNL_HEADER-style->panelouter;
+ psnext->pa->ofsy= get_panel_real_ofsy(ps->pa) - get_panel_size_y(style, psnext->pa);
}
else {
psnext->pa->ofsx= get_panel_real_ofsx(ps->pa);
- psnext->pa->ofsy= ps->pa->ofsy + ps->pa->sizey - psnext->pa->sizey;
+ psnext->pa->ofsy= ps->pa->ofsy + get_panel_size_y(style, ps->pa) - get_panel_size_y(style, psnext->pa);
}
}
@@ -1200,6 +1217,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event)
{
ARegion *ar= CTX_wm_region(C);
uiBlock *block;
+ Panel *pa;
int retval, mx, my, inside_header= 0, inside_scale= 0, inside;
retval= WM_UI_HANDLER_CONTINUE;
@@ -1215,22 +1233,27 @@ int ui_handler_panel_region(bContext *C, wmEvent *event)
/* check if inside boundbox */
inside= 0;
+ pa= block->panel;
+
+ if(!pa || pa->paneltab!=NULL)
+ continue;
+ if(pa->type && pa->type->flag & PNL_NO_HEADER)
+ continue;
- if(block->panel && block->panel->paneltab==NULL)
- if(block->minx <= mx && block->maxx >= mx)
- if(block->miny <= my && block->maxy+PNL_HEADER >= my)
- inside= 1;
+ if(block->minx <= mx && block->maxx >= mx)
+ if(block->miny <= my && block->maxy+PNL_HEADER >= my)
+ inside= 1;
if(inside) {
/* clicked at panel header? */
- if(block->panel->flag & PNL_CLOSEDX) {
+ if(pa->flag & PNL_CLOSEDX) {
if(block->minx <= mx && block->minx+PNL_HEADER >= mx)
inside_header= 1;
}
else if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my)) {
inside_header= 1;
}
- else if(block->panel->control & UI_PNL_SCALE) {
+ else if(pa->control & UI_PNL_SCALE) {
if(block->maxx-PNL_HEADER <= mx)
if(block->miny+PNL_HEADER >= my)
inside_scale= 1;
@@ -1242,8 +1265,8 @@ int ui_handler_panel_region(bContext *C, wmEvent *event)
ui_handle_panel_header(C, block, mx, my);
break;
}
- else if(inside_scale && !(block->panel->flag & PNL_CLOSED)) {
- panel_activate_state(C, block->panel, PANEL_STATE_DRAG_SCALE);
+ else if(inside_scale && !(pa->flag & PNL_CLOSED)) {
+ panel_activate_state(C, pa, PANEL_STATE_DRAG_SCALE);
break;
}
}
@@ -1258,7 +1281,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event)
int zoom=0;
/* if panel is closed, only zoom if mouse is over the header */
- if (block->panel->flag & (PNL_CLOSEDX|PNL_CLOSEDY)) {
+ if (pa->flag & (PNL_CLOSEDX|PNL_CLOSEDY)) {
if (inside_header)
zoom=1;
}
@@ -1271,7 +1294,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event)
SpaceLink *sl= sa->spacedata.first;
if(sa->spacetype!=SPACE_BUTS) {
- if(!(block->panel->control & UI_PNL_SCALE)) {
+ if(!(pa->control & UI_PNL_SCALE)) {
if(event->type==PADPLUSKEY) sl->blockscale+= 0.1;
else sl->blockscale-= 0.1;
CLAMP(sl->blockscale, 0.6, 1.0);
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index d9bc2d4d426..5fd84ad3c9f 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -211,11 +211,15 @@ static void template_ID(bContext *C, uiBlock *block, TemplateID *template, Struc
if(idptr.type)
type= idptr.type;
- if(type)
- uiDefIconBut(block, LABEL, 0, RNA_struct_ui_icon(type), 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
- if(flag & UI_ID_BROWSE)
- uiDefBlockButN(block, search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X, UI_UNIT_Y, "Browse ID data");
+ if(flag & UI_ID_BROWSE) {
+ but= uiDefBlockButN(block, search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*1.6, UI_UNIT_Y, "Browse ID data");
+ if(type) {
+ but->icon= RNA_struct_ui_icon(type);
+ but->flag|= UI_HAS_ICON;
+ but->flag|= UI_ICON_LEFT;
+ }
+ }
/* text button with name */
if(idptr.data) {
@@ -487,7 +491,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i
ParticleSystem *psys= ((ParticleSystemModifierData *)md)->psys;
if(!(G.f & G_PARTICLEEDIT))
- if(ELEM3(psys->part->draw_as, PART_DRAW_PATH, PART_DRAW_GR, PART_DRAW_OB) && psys->pathcache)
+ if(ELEM3(psys->part->ren_as, PART_DRAW_PATH, PART_DRAW_GR, PART_DRAW_OB) && psys->pathcache)
uiItemO(row, "Convert", 0, "OBJECT_OT_modifier_convert");
}
else
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 751a09ede49..2cd7c1d61cd 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -435,22 +435,33 @@ static void round_box_edges(uiWidgetBase *wt, int roundboxalign, rcti *rect, flo
/* based on button rect, return scaled array of triangles */
static void widget_num_tria(uiWidgetTrias *tria, rcti *rect, float triasize, char where)
{
- float centx, centy, size;
- int a;
+ float centx, centy, sizex, sizey, minsize;
+ int a, i1=0, i2=1;
+
+ minsize= MIN2(rect->xmax-rect->xmin, rect->ymax-rect->ymin);
/* center position and size */
- centx= (float)rect->xmin + 0.5f*(rect->ymax-rect->ymin);
- centy= (float)rect->ymin + 0.5f*(rect->ymax-rect->ymin);
- size= -0.5f*triasize*(rect->ymax-rect->ymin);
+ centx= (float)rect->xmin + 0.5f*minsize;
+ centy= (float)rect->ymin + 0.5f*minsize;
+ sizex= sizey= -0.5f*triasize*minsize;
if(where=='r') {
- centx= (float)rect->xmax - 0.5f*(rect->ymax-rect->ymin);
- size= -size;
+ centx= (float)rect->xmax - 0.5f*minsize;
+ sizex= -sizex;
+ }
+ else if(where=='t') {
+ centy= (float)rect->ymax - 0.5f*minsize;
+ sizey= -sizey;
+ i2=0; i1= 1;
+ }
+ else if(where=='b') {
+ sizex= -sizex;
+ i2=0; i1= 1;
}
for(a=0; a<19; a++) {
- tria->vec[a][0]= size*num_tria_vert[a][0] + centx;
- tria->vec[a][1]= size*num_tria_vert[a][1] + centy;
+ tria->vec[a][0]= sizex*num_tria_vert[a][i1] + centx;
+ tria->vec[a][1]= sizey*num_tria_vert[a][i2] + centy;
}
tria->tot= 19;
@@ -1576,7 +1587,7 @@ static void widget_numbut(uiWidgetColors *wcol, rcti *rect, int state, int round
/* decoration */
if(!(state & UI_TEXTINPUT)) {
- widget_num_tria(&wtb.tria1, rect, 0.6f, 0);
+ widget_num_tria(&wtb.tria1, rect, 0.6f, 'l');
widget_num_tria(&wtb.tria2, rect, 0.6f, 'r');
}
widgetbase_draw(&wtb, wcol);
@@ -1639,7 +1650,7 @@ void ui_draw_link_bezier(rcti *rect)
}
/* function in use for buttons and for view2d sliders */
-void widget_scroll_draw(uiWidgetColors *wcol, rcti *rect, rcti *slider, int state)
+void uiWidgetScrollDraw(uiWidgetColors *wcol, rcti *rect, rcti *slider, int state)
{
uiWidgetBase wtb;
float rad;
@@ -1676,15 +1687,30 @@ void widget_scroll_draw(uiWidgetColors *wcol, rcti *rect, rcti *slider, int stat
wcol->shadetop+= 20; /* XXX violates themes... */
else wcol->shadedown+= 20;
- if(state & UI_SELECT)
+ if(state & UI_SCROLL_PRESSED)
SWAP(short, wcol->shadetop, wcol->shadedown);
/* draw */
wtb.emboss= 0; /* only emboss once */
round_box_edges(&wtb, 15, slider, rad);
- widgetbase_draw(&wtb, wcol);
+ if(state & UI_SCROLL_ARROWS) {
+ if(wcol->item[0] > 48) wcol->item[0]-= 48;
+ if(wcol->item[1] > 48) wcol->item[1]-= 48;
+ if(wcol->item[2] > 48) wcol->item[2]-= 48;
+ wcol->item[3]= 255;
+
+ if(horizontal) {
+ widget_num_tria(&wtb.tria1, slider, 0.6f, 'l');
+ widget_num_tria(&wtb.tria2, slider, 0.6f, 'r');
+ }
+ else {
+ widget_num_tria(&wtb.tria1, slider, 0.6f, 'b');
+ widget_num_tria(&wtb.tria2, slider, 0.6f, 't');
+ }
+ }
+ widgetbase_draw(&wtb, wcol);
}
}
@@ -1718,7 +1744,11 @@ static void widget_scroll(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat
rect1.ymin= rect1.ymax - ceil(fac*(but->a1 - but->softmin));
}
- widget_scroll_draw(wcol, rect, &rect1, state);
+ if(state & UI_SELECT)
+ state= UI_SCROLL_PRESSED;
+ else
+ state= 0;
+ uiWidgetScrollDraw(wcol, rect, &rect1, state);
}
diff --git a/source/blender/editors/interface/keyval.c b/source/blender/editors/interface/keyval.c
deleted file mode 100644
index f2172ac8cf0..00000000000
--- a/source/blender/editors/interface/keyval.c
+++ /dev/null
@@ -1,540 +0,0 @@
-/**
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#include "stdio.h"
-#include "ctype.h"
-#include "string.h"
-
-#include "BKE_global.h"
-#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
-
-#include "WM_types.h"
-
-char *key_event_to_string(unsigned short event)
-{
-
- switch(event) {
- case AKEY:
- return "A";
- break;
- case BKEY:
- return "B";
- break;
- case CKEY:
- return "C";
- break;
- case DKEY:
- return "D";
- break;
- case EKEY:
- return "E";
- break;
- case FKEY:
- return "F";
- break;
- case GKEY:
- return "G";
- break;
- case HKEY:
- return "H";
- break;
- case IKEY:
- return "I";
- break;
- case JKEY:
- return "J";
- break;
- case KKEY:
- return "K";
- break;
- case LKEY:
- return "L";
- break;
- case MKEY:
- return "M";
- break;
- case NKEY:
- return "N";
- break;
- case OKEY:
- return "O";
- break;
- case PKEY:
- return "P";
- break;
- case QKEY:
- return "Q";
- break;
- case RKEY:
- return "R";
- break;
- case SKEY:
- return "S";
- break;
- case TKEY:
- return "T";
- break;
- case UKEY:
- return "U";
- break;
- case VKEY:
- return "V";
- break;
- case WKEY:
- return "W";
- break;
- case XKEY:
- return "X";
- break;
- case YKEY:
- return "Y";
- break;
- case ZKEY:
- return "Z";
- break;
-
- case ZEROKEY:
- return "Zero";
- break;
- case ONEKEY:
- return "One";
- break;
- case TWOKEY:
- return "Two";
- break;
- case THREEKEY:
- return "Three";
- break;
- case FOURKEY:
- return "Four";
- break;
- case FIVEKEY:
- return "Five";
- break;
- case SIXKEY:
- return "Six";
- break;
- case SEVENKEY:
- return "Seven";
- break;
- case EIGHTKEY:
- return "Eight";
- break;
- case NINEKEY:
- return "Nine";
- break;
-
- case LEFTCTRLKEY:
- return "Leftctrl";
- break;
- case LEFTALTKEY:
- return "Leftalt";
- break;
- case RIGHTALTKEY:
- return "Rightalt";
- break;
- case RIGHTCTRLKEY:
- return "Rightctrl";
- break;
- case RIGHTSHIFTKEY:
- return "Rightshift";
- break;
- case LEFTSHIFTKEY:
- return "Leftshift";
- break;
-
- case ESCKEY:
- return "Esc";
- break;
- case TABKEY:
- return "Tab";
- break;
- case RETKEY:
- return "Ret";
- break;
- case SPACEKEY:
- return "Space";
- break;
- case LINEFEEDKEY:
- return "Linefeed";
- break;
- case BACKSPACEKEY:
- return "Backspace";
- break;
- case DELKEY:
- return "Del";
- break;
- case SEMICOLONKEY:
- return "Semicolon";
- break;
- case PERIODKEY:
- return "Period";
- break;
- case COMMAKEY:
- return "Comma";
- break;
- case QUOTEKEY:
- return "Quote";
- break;
- case ACCENTGRAVEKEY:
- return "Accentgrave";
- break;
- case MINUSKEY:
- return "Minus";
- break;
- case SLASHKEY:
- return "Slash";
- break;
- case BACKSLASHKEY:
- return "Backslash";
- break;
- case EQUALKEY:
- return "Equal";
- break;
- case LEFTBRACKETKEY:
- return "Leftbracket";
- break;
- case RIGHTBRACKETKEY:
- return "Rightbracket";
- break;
-
- case LEFTARROWKEY:
- return "Leftarrow";
- break;
- case DOWNARROWKEY:
- return "Downarrow";
- break;
- case RIGHTARROWKEY:
- return "Rightarrow";
- break;
- case UPARROWKEY:
- return "Uparrow";
- break;
-
- case PAD2:
- return "Pad2";
- break;
- case PAD4:
- return "Pad4";
- break;
- case PAD6:
- return "Pad6";
- break;
- case PAD8:
- return "Pad8";
- break;
- case PAD1:
- return "Pad1";
- break;
- case PAD3:
- return "Pad3";
- break;
- case PAD5:
- return "Pad5";
- break;
- case PAD7:
- return "Pad7";
- break;
- case PAD9:
- return "Pad9";
- break;
-
- case PADPERIOD:
- return "Padperiod";
- break;
- case PADSLASHKEY:
- return "Padslash";
- break;
- case PADASTERKEY:
- return "Padaster";
- break;
-
- case PAD0:
- return "Pad0";
- break;
- case PADMINUS:
- return "Padminus";
- break;
- case PADENTER:
- return "Padenter";
- break;
- case PADPLUSKEY:
- return "Padplus";
- break;
-
- case F1KEY:
- return "F1";
- break;
- case F2KEY:
- return "F2";
- break;
- case F3KEY:
- return "F3";
- break;
- case F4KEY:
- return "F4";
- break;
- case F5KEY:
- return "F5";
- break;
- case F6KEY:
- return "F6";
- break;
- case F7KEY:
- return "F7";
- break;
- case F8KEY:
- return "F8";
- break;
- case F9KEY:
- return "F9";
- break;
- case F10KEY:
- return "F10";
- break;
- case F11KEY:
- return "F11";
- break;
- case F12KEY:
- return "F12";
- break;
-
- case PAUSEKEY:
- return "Pause";
- break;
- case INSERTKEY:
- return "Insert";
- break;
- case HOMEKEY:
- return "Home";
- break;
- case PAGEUPKEY:
- return "Pageup";
- break;
- case PAGEDOWNKEY:
- return "Pagedown";
- break;
- case ENDKEY:
- return "End";
- break;
- }
-
- return "";
-}
-
-/*
- * Decodes key combination strings [qual1+[qual2+[...]]]keyname
- * The '+'s may be replaced by '-' or ' ' characters to support different
- * formats. No additional whitespace is allowed. The keyname may be an internal
- * name, like "RETKEY", or a more common name, like "Return". Decoding is case-
- * insensitive.
- *
- * Example strings: "Ctrl+L", "ALT-ESC", "Shift A"
- *
- * Returns 1 if successful.
- */
-int decode_key_string(char *str, unsigned short *key, unsigned short *qual)
-{
- int i, prev, len, invalid=0;
-
- len= strlen(str);
- *key= *qual= 0;
-
- /* Convert to upper case */
- for (i=0; i<len; i++) {
- str[i]= toupper(str[i]);
- }
-
- /* Handle modifiers */
- for (prev=i=0; i<len; i++) {
- if (str[i]==' ' || str[i]=='+' || str[i]=='-') {
-// XXX if (!strncmp(str+prev, "CTRL", i-prev)) *qual |= LR_CTRLKEY;
-// else if (!strncmp(str+prev, "ALT", i-prev)) *qual |= LR_ALTKEY;
-// else if (!strncmp(str+prev, "SHIFT", i-prev)) *qual |= LR_SHIFTKEY;
-// else if (!strncmp(str+prev, "COMMAND", i-prev)) *qual |= LR_COMMANDKEY;
- prev=i+1;
- }
- }
-
- /* Compare last part against key names */
- if ((len-prev==1) || ((len-prev==4) && !strncmp(str+prev, "KEY", 3))) {
-
- if (str[prev]>='A' && str[prev]<='Z') {
- *key= str[prev]-'A'+AKEY;
- } else if (str[prev]>='0' && str[prev]<='9') {
- *key= str[prev]-'0'+ZEROKEY;
- } else {
- invalid= 1;
- }
-
- } else if (!strncmp(str+prev, "ZEROKEY", len-prev) || !strncmp(str+prev, "ZERO", len-prev)) {
- *key= ZEROKEY;
- } else if (!strncmp(str+prev, "ONEKEY", len-prev) || !strncmp(str+prev, "ONE", len-prev)) {
- *key= ONEKEY;
- } else if (!strncmp(str+prev, "TWOKEY", len-prev) || !strncmp(str+prev, "TWO", len-prev)) {
- *key= TWOKEY;
- } else if (!strncmp(str+prev, "THREEKEY", len-prev) || !strncmp(str+prev, "THREE", len-prev)) {
- *key= THREEKEY;
- } else if (!strncmp(str+prev, "FOURKEY", len-prev) || !strncmp(str+prev, "FOUR", len-prev)) {
- *key= FOURKEY;
- } else if (!strncmp(str+prev, "FIVEKEY", len-prev) || !strncmp(str+prev, "FIVE", len-prev)) {
- *key= FIVEKEY;
- } else if (!strncmp(str+prev, "SIZEKEY", len-prev) || !strncmp(str+prev, "SIX", len-prev)) {
- *key= SIXKEY;
- } else if (!strncmp(str+prev, "SEVENKEY", len-prev) || !strncmp(str+prev, "SEVEN", len-prev)) {
- *key= SEVENKEY;
- } else if (!strncmp(str+prev, "EIGHTKEY", len-prev) || !strncmp(str+prev, "EIGHT", len-prev)) {
- *key= EIGHTKEY;
- } else if (!strncmp(str+prev, "NINEKEY", len-prev) || !strncmp(str+prev, "NINE", len-prev)) {
- *key= NINEKEY;
-
- } else if (!strncmp(str+prev, "ESCKEY", len-prev) || !strncmp(str+prev, "ESC", len-prev)) {
- *key= ESCKEY;
- } else if (!strncmp(str+prev, "TABKEY", len-prev) || !strncmp(str+prev, "TAB", len-prev)) {
- *key= TABKEY;
- } else if (!strncmp(str+prev, "RETKEY", len-prev) || !strncmp(str+prev, "RETURN", len-prev) || !strncmp(str+prev, "ENTER", len-prev)) {
- *key= RETKEY;
- } else if (!strncmp(str+prev, "SPACEKEY", len-prev) || !strncmp(str+prev, "SPACE", len-prev)) {
- *key= SPACEKEY;
- } else if (!strncmp(str+prev, "LINEFEEDKEY", len-prev) || !strncmp(str+prev, "LINEFEED", len-prev)) {
- *key= LINEFEEDKEY;
- } else if (!strncmp(str+prev, "BACKSPACEKEY", len-prev) || !strncmp(str+prev, "BACKSPACE", len-prev)) {
- *key= BACKSPACEKEY;
- } else if (!strncmp(str+prev, "DELKEY", len-prev) || !strncmp(str+prev, "DELETE", len-prev)) {
- *key= DELKEY;
-
- } else if (!strncmp(str+prev, "SEMICOLONKEY", len-prev) || !strncmp(str+prev, "SEMICOLON", len-prev)) {
- *key= SEMICOLONKEY;
- } else if (!strncmp(str+prev, "PERIODKEY", len-prev) || !strncmp(str+prev, "PERIOD", len-prev)) {
- *key= PERIODKEY;
- } else if (!strncmp(str+prev, "COMMAKEY", len-prev) || !strncmp(str+prev, "COMMA", len-prev)) {
- *key= COMMAKEY;
- } else if (!strncmp(str+prev, "QUOTEKEY", len-prev) || !strncmp(str+prev, "QUOTE", len-prev)) {
- *key= QUOTEKEY;
- } else if (!strncmp(str+prev, "ACCENTGRAVEKEY", len-prev) || !strncmp(str+prev, "ACCENTGRAVE", len-prev)) {
- *key= ACCENTGRAVEKEY;
- } else if (!strncmp(str+prev, "MINUSKEY", len-prev) || !strncmp(str+prev, "MINUS", len-prev)) {
- *key= MINUSKEY;
- } else if (!strncmp(str+prev, "SLASHKEY", len-prev) || !strncmp(str+prev, "SLASH", len-prev)) {
- *key= SLASHKEY;
- } else if (!strncmp(str+prev, "BACKSLASHKEY", len-prev) || !strncmp(str+prev, "BACKSLASH", len-prev)) {
- *key= BACKSLASHKEY;
- } else if (!strncmp(str+prev, "EQUALKEY", len-prev) || !strncmp(str+prev, "EQUAL", len-prev)) {
- *key= EQUALKEY;
- } else if (!strncmp(str+prev, "LEFTBRACKETKEY", len-prev) || !strncmp(str+prev, "LEFTBRACKET", len-prev)) {
- *key= LEFTBRACKETKEY;
- } else if (!strncmp(str+prev, "RIGHTBRACKETKEY", len-prev) || !strncmp(str+prev, "RIGHTBRACKET", len-prev)) {
- *key= RIGHTBRACKETKEY;
- } else if (!strncmp(str+prev, "DELKEY", len-prev) || !strncmp(str+prev, "DELETE", len-prev)) {
- *key= DELKEY;
-
- } else if (!strncmp(str+prev, "LEFTARROWKEY", len-prev) || !strncmp(str+prev, "LEFTARROW", len-prev)) {
- *key= LEFTARROWKEY;
- } else if (!strncmp(str+prev, "DOWNARROWKEY", len-prev) || !strncmp(str+prev, "DOWNARROW", len-prev)) {
- *key= DOWNARROWKEY;
- } else if (!strncmp(str+prev, "RIGHTARROWKEY", len-prev) || !strncmp(str+prev, "RIGHTARROW", len-prev)) {
- *key= RIGHTARROWKEY;
- } else if (!strncmp(str+prev, "UPARROWKEY", len-prev) || !strncmp(str+prev, "UPARROW", len-prev)) {
- *key= UPARROWKEY;
-
- } else if (!strncmp(str+prev, "PAD", 3)) {
-
- if (len-prev<=4) {
-
- if (str[prev]>='0' && str[prev]<='9') {
- *key= str[prev]-'0'+ZEROKEY;
- } else {
- invalid= 1;
- }
-
- } else if (!strncmp(str+prev+3, "PERIODKEY", len-prev-3) || !strncmp(str+prev+3, "PERIOD", len-prev-3)) {
- *key= PADPERIOD;
- } else if (!strncmp(str+prev+3, "SLASHKEY", len-prev-3) || !strncmp(str+prev+3, "SLASH", len-prev-3)) {
- *key= PADSLASHKEY;
- } else if (!strncmp(str+prev+3, "ASTERKEY", len-prev-3) || !strncmp(str+prev+3, "ASTERISK", len-prev-3)) {
- *key= PADASTERKEY;
- } else if (!strncmp(str+prev+3, "MINUSKEY", len-prev-3) || !strncmp(str+prev+3, "MINUS", len-prev-3)) {
- *key= PADMINUS;
- } else if (!strncmp(str+prev+3, "ENTERKEY", len-prev-3) || !strncmp(str+prev+3, "ENTER", len-prev-3)) {
- *key= PADENTER;
- } else if (!strncmp(str+prev+3, "PLUSKEY", len-prev-3) || !strncmp(str+prev+3, "PLUS", len-prev-3)) {
- *key= PADPLUSKEY;
- } else {
- invalid= 1;
- }
-
- } else if (!strncmp(str+prev, "F1KEY", len-prev) || !strncmp(str+prev, "F1", len-prev)) {
- *key= F1KEY;
- } else if (!strncmp(str+prev, "F2KEY", len-prev) || !strncmp(str+prev, "F2", len-prev)) {
- *key= F2KEY;
- } else if (!strncmp(str+prev, "F3KEY", len-prev) || !strncmp(str+prev, "F3", len-prev)) {
- *key= F3KEY;
- } else if (!strncmp(str+prev, "F4KEY", len-prev) || !strncmp(str+prev, "F4", len-prev)) {
- *key= F4KEY;
- } else if (!strncmp(str+prev, "F5KEY", len-prev) || !strncmp(str+prev, "F5", len-prev)) {
- *key= F5KEY;
- } else if (!strncmp(str+prev, "F6KEY", len-prev) || !strncmp(str+prev, "F6", len-prev)) {
- *key= F6KEY;
- } else if (!strncmp(str+prev, "F7KEY", len-prev) || !strncmp(str+prev, "F7", len-prev)) {
- *key= F7KEY;
- } else if (!strncmp(str+prev, "F8KEY", len-prev) || !strncmp(str+prev, "F8", len-prev)) {
- *key= F8KEY;
- } else if (!strncmp(str+prev, "F9KEY", len-prev) || !strncmp(str+prev, "F9", len-prev)) {
- *key= F9KEY;
- } else if (!strncmp(str+prev, "F10KEY", len-prev) || !strncmp(str+prev, "F10", len-prev)) {
- *key= F10KEY;
- } else if (!strncmp(str+prev, "F11KEY", len-prev) || !strncmp(str+prev, "F11", len-prev)) {
- *key= F11KEY;
- } else if (!strncmp(str+prev, "F12KEY", len-prev) || !strncmp(str+prev, "F12", len-prev)) {
- *key= F12KEY;
-
- } else if (!strncmp(str+prev, "PAUSEKEY", len-prev) || !strncmp(str+prev, "PAUSE", len-prev)) {
- *key= PAUSEKEY;
- } else if (!strncmp(str+prev, "INSERTKEY", len-prev) || !strncmp(str+prev, "INSERT", len-prev)) {
- *key= INSERTKEY;
- } else if (!strncmp(str+prev, "HOMEKEY", len-prev) || !strncmp(str+prev, "HOME", len-prev)) {
- *key= HOMEKEY;
- } else if (!strncmp(str+prev, "PAGEUPKEY", len-prev) || !strncmp(str+prev, "PAGEUP", len-prev)) {
- *key= PAGEUPKEY;
- } else if (!strncmp(str+prev, "PAGEDOWNKEY", len-prev) || !strncmp(str+prev, "PAGEDOWN", len-prev)) {
- *key= PAGEDOWNKEY;
- } else if (!strncmp(str+prev, "ENDKEY", len-prev) || !strncmp(str+prev, "END", len-prev)) {
- *key= ENDKEY;
-
- } else {
- invalid= 1;
- }
-
- if (!invalid && *key) {
- return 1;
- }
-
- return 0;
-}
diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c
index e54f22b5ae6..6ed5d6609c4 100644
--- a/source/blender/editors/interface/view2d.c
+++ b/source/blender/editors/interface/view2d.c
@@ -1224,14 +1224,14 @@ void UI_view2d_grid_free(View2DGrid *grid)
* For now, we don't need to have a separate (internal) header for structs like this...
*/
struct View2DScrollers {
- rcti hor, vert; /* exact size of slider backdrop */
- int horfull, vertfull; /* set if sliders are full, we don't draw them */
-
/* focus bubbles */
int vert_min, vert_max; /* vertical scrollbar */
int hor_min, hor_max; /* horizontal scrollbar */
- /* scales */
+ rcti hor, vert; /* exact size of slider backdrop */
+ int horfull, vertfull; /* set if sliders are full, we don't draw them */
+
+ /* scales */
View2DGrid *grid; /* grid for coordinate drawing */
short xunits, xclamp; /* units and clamping options for x-axis */
short yunits, yclamp; /* units and clamping options for y-axis */
@@ -1296,8 +1296,10 @@ View2DScrollers *UI_view2d_scrollers_calc(const bContext *C, View2D *v2d, short
if (scrollers->hor_min > scrollers->hor_max)
scrollers->hor_min= scrollers->hor_max;
- if(fac1 <= 0.0f && fac2 >= 1.0f)
- scrollers->horfull= 1;
+ /* check whether sliders can disappear */
+ if(v2d->keeptot)
+ if(fac1 <= 0.0f && fac2 >= 1.0f)
+ scrollers->horfull= 1;
}
/* vertical scrollers */
@@ -1321,8 +1323,10 @@ View2DScrollers *UI_view2d_scrollers_calc(const bContext *C, View2D *v2d, short
if (scrollers->vert_min > scrollers->vert_max)
scrollers->vert_min= scrollers->vert_max;
- if(fac1 <= 0.0f && fac2 >= 1.0f)
- scrollers->vertfull= 1;
+ /* check whether sliders can disappear */
+ if(v2d->keeptot)
+ if(fac1 <= 0.0f && fac2 >= 1.0f)
+ scrollers->vertfull= 1;
}
/* grid markings on scrollbars */
@@ -1472,13 +1476,17 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v
bTheme *btheme= U.themes.first;
uiWidgetColors wcol= btheme->tui.wcol_scroll;
rcti slider;
+ int state;
slider.xmin= vs->hor_min;
slider.xmax= vs->hor_max;
slider.ymin= hor.ymin;
slider.ymax= hor.ymax;
- widget_scroll_draw(&wcol, &hor, &slider, (v2d->scroll_ui & V2D_SCROLL_H_ACTIVE)?UI_SELECT:0);
+ state= (v2d->scroll_ui & V2D_SCROLL_H_ACTIVE)?UI_SCROLL_PRESSED:0;
+ if (!(v2d->keepzoom & V2D_LOCKZOOM_X))
+ state |= UI_SCROLL_ARROWS;
+ uiWidgetScrollDraw(&wcol, &hor, &slider, state);
}
/* scale indicators */
@@ -1564,13 +1572,17 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v
bTheme *btheme= U.themes.first;
uiWidgetColors wcol= btheme->tui.wcol_scroll;
rcti slider;
+ int state;
slider.xmin= vert.xmin;
slider.xmax= vert.xmax;
slider.ymin= vs->vert_min;
slider.ymax= vs->vert_max;
- widget_scroll_draw(&wcol, &vert, &slider, (v2d->scroll_ui & V2D_SCROLL_V_ACTIVE)?UI_SELECT:0);
+ state= (v2d->scroll_ui & V2D_SCROLL_V_ACTIVE)?UI_SCROLL_PRESSED:0;
+ if (!(v2d->keepzoom & V2D_LOCKZOOM_Y))
+ state |= UI_SCROLL_ARROWS;
+ uiWidgetScrollDraw(&wcol, &vert, &slider, state);
}
diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c
index ae89e215a03..101d89da618 100644
--- a/source/blender/editors/interface/view2d_ops.c
+++ b/source/blender/editors/interface/view2d_ops.c
@@ -1010,15 +1010,7 @@ static short mouse_in_scroller_handle(int mouse, int sc_min, int sc_max, int sh_
if (in_view == 0) {
- /* handles are only activated if the mouse is within the relative quater lengths of the scroller */
- int qLen = (sc_max + sc_min) / 4;
-
- if (mouse >= (sc_max - qLen))
- return SCROLLHANDLE_MAX;
- else if (mouse <= qLen)
- return SCROLLHANDLE_MIN;
- else
- return SCROLLHANDLE_BAR;
+ return SCROLLHANDLE_BAR;
}
/* check if mouse is in or past either handle */
@@ -1128,14 +1120,14 @@ static void scroller_activate_apply(bContext *C, wmOperator *op)
/* type of movement */
switch (vsm->zone) {
case SCROLLHANDLE_MIN:
+ case SCROLLHANDLE_MAX:
+
/* only expand view on axis if zoom is allowed */
if ((vsm->scroller == 'h') && !(v2d->keepzoom & V2D_LOCKZOOM_X))
v2d->cur.xmin -= temp;
if ((vsm->scroller == 'v') && !(v2d->keepzoom & V2D_LOCKZOOM_Y))
v2d->cur.ymin -= temp;
- break;
- case SCROLLHANDLE_MAX:
/* only expand view on axis if zoom is allowed */
if ((vsm->scroller == 'h') && !(v2d->keepzoom & V2D_LOCKZOOM_X))
v2d->cur.xmax += temp;
diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c
index 7f5201f4704..a680fb5d07a 100644
--- a/source/blender/editors/mesh/editmesh.c
+++ b/source/blender/editors/mesh/editmesh.c
@@ -74,12 +74,12 @@
#include "LBM_fluidsim.h"
-#include "BIF_retopo.h"
#include "ED_mesh.h"
#include "ED_object.h"
-#include "ED_util.h"
+#include "ED_retopo.h"
#include "ED_screen.h"
+#include "ED_util.h"
#include "ED_view3d.h"
#include "RNA_access.h"
@@ -1625,7 +1625,7 @@ static int mesh_separate_exec(bContext *C, wmOperator *op)
void MESH_OT_separate(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Mesh Separate";
+ ot->name= "Separate";
ot->idname= "MESH_OT_separate";
/* api callbacks */
@@ -1947,26 +1947,35 @@ void EM_init_index_arrays(EditMesh *em, int forVert, int forEdge, int forFace)
if (forVert) {
em->totvert= BLI_countlist(&em->verts);
- g_em_vert_array = MEM_mallocN(sizeof(*g_em_vert_array)*em->totvert, "em_v_arr");
- for (i=0,eve=em->verts.first; eve; i++,eve=eve->next)
- g_em_vert_array[i] = eve;
+ if(em->totvert) {
+ g_em_vert_array = MEM_mallocN(sizeof(*g_em_vert_array)*em->totvert, "em_v_arr");
+
+ for (i=0,eve=em->verts.first; eve; i++,eve=eve->next)
+ g_em_vert_array[i] = eve;
+ }
}
if (forEdge) {
em->totedge= BLI_countlist(&em->edges);
- g_em_edge_array = MEM_mallocN(sizeof(*g_em_edge_array)*em->totedge, "em_e_arr");
- for (i=0,eed=em->edges.first; eed; i++,eed=eed->next)
- g_em_edge_array[i] = eed;
+ if(em->totedge) {
+ g_em_edge_array = MEM_mallocN(sizeof(*g_em_edge_array)*em->totedge, "em_e_arr");
+
+ for (i=0,eed=em->edges.first; eed; i++,eed=eed->next)
+ g_em_edge_array[i] = eed;
+ }
}
if (forFace) {
em->totface= BLI_countlist(&em->faces);
- g_em_face_array = MEM_mallocN(sizeof(*g_em_face_array)*em->totface, "em_f_arr");
- for (i=0,efa=em->faces.first; efa; i++,efa=efa->next)
- g_em_face_array[i] = efa;
+ if(em->totface) {
+ g_em_face_array = MEM_mallocN(sizeof(*g_em_face_array)*em->totface, "em_f_arr");
+
+ for (i=0,efa=em->faces.first; efa; i++,efa=efa->next)
+ g_em_face_array[i] = efa;
+ }
}
}
diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c
index 12138ee13d2..c24670aa856 100644
--- a/source/blender/editors/mesh/editmesh_add.c
+++ b/source/blender/editors/mesh/editmesh_add.c
@@ -61,15 +61,15 @@
#include "BKE_utildefines.h"
#include "BKE_report.h"
-#include "BIF_retopo.h"
-
#include "WM_api.h"
#include "WM_types.h"
#include "ED_mesh.h"
+#include "ED_retopo.h"
+#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_util.h"
#include "ED_view3d.h"
-#include "ED_screen.h"
#include "mesh_intern.h"
@@ -1104,7 +1104,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se
}
dia*=200;
- for(a=1; a<subdiv; a++) esubdivideflag(obedit, em, 2, dia, 0,1,0);
+ for(a=1; a<subdiv; a++) esubdivideflag(obedit, em, 2, dia, 0, B_SPHERE,1,0);
/* and now do imat */
eve= em->verts.first;
while(eve) {
@@ -1307,6 +1307,7 @@ static float new_primitive_matrix(bContext *C, float primmat[][4])
static int add_primitive_plane_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float dia, mat[4][4];
@@ -1316,6 +1317,7 @@ static int add_primitive_plane_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_PLANE, mat, 4, 0, 0, dia, 0.0f, 0, 1);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1337,6 +1339,7 @@ void MESH_OT_primitive_plane_add(wmOperatorType *ot)
static int add_primitive_cube_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float dia, mat[4][4];
@@ -1346,6 +1349,7 @@ static int add_primitive_cube_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_CUBE, mat, 4, 0, 0, dia, 1.0f, 1, 1);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1367,6 +1371,7 @@ void MESH_OT_primitive_cube_add(wmOperatorType *ot)
static int add_primitive_circle_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float dia, mat[4][4];
@@ -1376,6 +1381,7 @@ static int add_primitive_circle_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_CIRCLE, mat, RNA_int_get(op->ptr, "vertices"), 0, 0, dia, 0.0f, 0,
RNA_boolean_get(op->ptr, "fill"));
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1402,6 +1408,7 @@ void MESH_OT_primitive_circle_add(wmOperatorType *ot)
static int add_primitive_cylinder_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float dia, mat[4][4];
@@ -1411,6 +1418,7 @@ static int add_primitive_cylinder_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_CYLINDER, mat, RNA_int_get(op->ptr, "vertices"), 0, 0, dia,
RNA_float_get(op->ptr, "depth"), 1, 1);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1437,6 +1445,7 @@ void MESH_OT_primitive_cylinder_add(wmOperatorType *ot)
static int add_primitive_tube_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float dia, mat[4][4];
@@ -1446,6 +1455,7 @@ static int add_primitive_tube_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_CYLINDER, mat, RNA_int_get(op->ptr, "vertices"), 0, 0, dia,
RNA_float_get(op->ptr, "depth"), 1, 0);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1472,6 +1482,7 @@ void MESH_OT_primitive_tube_add(wmOperatorType *ot)
static int add_primitive_cone_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float dia, mat[4][4];
@@ -1481,6 +1492,7 @@ static int add_primitive_cone_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_CONE, mat, RNA_int_get(op->ptr, "vertices"), 0, 0, dia,
RNA_float_get(op->ptr, "depth"), 0, RNA_boolean_get(op->ptr, "cap_end"));
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1509,6 +1521,7 @@ void MESH_OT_primitive_cone_add(wmOperatorType *ot)
static int add_primitive_grid_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float dia, mat[4][4];
@@ -1518,6 +1531,7 @@ static int add_primitive_grid_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_GRID, mat, RNA_int_get(op->ptr, "x_subdivisions"),
RNA_int_get(op->ptr, "y_subdivisions"), 0, dia, 0.0f, 0, 1);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1544,6 +1558,7 @@ void MESH_OT_primitive_grid_add(wmOperatorType *ot)
static int add_primitive_monkey_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float mat[4][4];
@@ -1551,6 +1566,7 @@ static int add_primitive_monkey_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_MONKEY, mat, 0, 0, 2, 0.0f, 0.0f, 0, 0);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1572,6 +1588,7 @@ void MESH_OT_primitive_monkey_add(wmOperatorType *ot)
static int add_primitive_uvsphere_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float dia, mat[4][4];
@@ -1581,6 +1598,7 @@ static int add_primitive_uvsphere_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_UVSPHERE, mat, RNA_int_get(op->ptr, "rings"),
RNA_int_get(op->ptr, "segments"), 0, dia, 0.0f, 0, 0);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1607,6 +1625,7 @@ void MESH_OT_primitive_uv_sphere_add(wmOperatorType *ot)
static int add_primitive_icosphere_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
float dia, mat[4][4];
@@ -1616,6 +1635,7 @@ static int add_primitive_icosphere_exec(bContext *C, wmOperator *op)
make_prim(obedit, PRIM_ICOSPHERE, mat, 0, 0,
RNA_int_get(op->ptr, "subdivisions"), dia, 0.0f, 0, 0);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
return OPERATOR_FINISHED;
@@ -1639,3 +1659,49 @@ void MESH_OT_primitive_ico_sphere_add(wmOperatorType *ot)
RNA_def_float(ot->srna, "size", 1.0f, 0.0f, FLT_MAX, "Size", "", 0.001f, 100.00);
}
+/****************** add duplicate operator ***************/
+
+static int mesh_duplicate_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_edit_object(C);
+ EditMesh *em= BKE_mesh_get_editmesh(ob->data);
+
+ adduplicateflag(em, SELECT);
+
+ BKE_mesh_end_editmesh(ob->data, em);
+
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, ob);
+
+ return OPERATOR_FINISHED;
+}
+
+static int mesh_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ WM_cursor_wait(1);
+ mesh_duplicate_exec(C, op);
+ WM_cursor_wait(0);
+
+ RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
+ WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+
+ return OPERATOR_FINISHED;
+}
+
+void MESH_OT_duplicate(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Duplicate";
+ ot->idname= "MESH_OT_duplicate";
+
+ /* api callbacks */
+ ot->invoke= mesh_duplicate_invoke;
+ ot->exec= mesh_duplicate_exec;
+
+ ot->poll= ED_operator_editmesh;
+
+ /* to give to transform */
+ RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX);
+}
+
diff --git a/source/blender/editors/mesh/editmesh_loop.c b/source/blender/editors/mesh/editmesh_loop.c
index afbf43c4d85..7fc3753eefb 100644
--- a/source/blender/editors/mesh/editmesh_loop.c
+++ b/source/blender/editors/mesh/editmesh_loop.c
@@ -369,9 +369,9 @@ void CutEdgeloop(Object *obedit, wmOperator *op, EditMesh *em, int numcuts)
fac= 1.0f;
// XXX if(fbutton(&fac, 0.0f, 5.0f, 10, 10, "Smooth:")==0) return;
fac= 0.292f*fac;
- esubdivideflag(obedit, em, SELECT,fac,B_SMOOTH,numcuts,SUBDIV_SELECT_LOOPCUT);
+ esubdivideflag(obedit, em, SELECT,fac,0,B_SMOOTH,numcuts,SUBDIV_SELECT_LOOPCUT);
} else {
- esubdivideflag(obedit, em, SELECT,0,0,numcuts,SUBDIV_SELECT_LOOPCUT);
+ esubdivideflag(obedit, em, SELECT,0,0,0,numcuts,SUBDIV_SELECT_LOOPCUT);
}
/* if this was a single cut, enter edgeslide mode */
if(numcuts == 1 && hasHidden == 0){
@@ -624,6 +624,7 @@ static float seg_intersect(EditEdge *e, CutCurve *c, int len, char mode, struct
static int knife_cut_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
ARegion *ar= CTX_wm_region(C);
@@ -689,9 +690,9 @@ static int knife_cut_exec(bContext *C, wmOperator *op)
eed= eed->next;
}
- if (mode==KNIFE_MIDPOINT) esubdivideflag(obedit, em, SELECT, 0, B_KNIFE, 1, SUBDIV_SELECT_ORIG);
- else if (mode==KNIFE_MULTICUT) esubdivideflag(obedit, em, SELECT, 0, B_KNIFE, numcuts, SUBDIV_SELECT_ORIG);
- else esubdivideflag(obedit, em, SELECT, 0, B_KNIFE|B_PERCENTSUBD, 1, SUBDIV_SELECT_ORIG);
+ if (mode==KNIFE_MIDPOINT) esubdivideflag(obedit, em, SELECT, 0, 0, B_KNIFE, 1, SUBDIV_SELECT_ORIG);
+ else if (mode==KNIFE_MULTICUT) esubdivideflag(obedit, em, SELECT, 0, 0, B_KNIFE, numcuts, SUBDIV_SELECT_ORIG);
+ else esubdivideflag(obedit, em, SELECT, 0, 0, B_KNIFE|B_PERCENTSUBD, 1, SUBDIV_SELECT_ORIG);
eed=em->edges.first;
while(eed){
@@ -703,6 +704,10 @@ static int knife_cut_exec(bContext *C, wmOperator *op)
BLI_ghash_free(gh, NULL, (GHashValFreeFP)MEM_freeN);
BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c
index 70a0c6b82da..ca0f73ece68 100644
--- a/source/blender/editors/mesh/editmesh_mods.c
+++ b/source/blender/editors/mesh/editmesh_mods.c
@@ -642,25 +642,24 @@ static int unified_findnearest(ViewContext *vc, EditVert **eve, EditEdge **eed,
/* **************** SIMILAR "group" SELECTS. FACE, EDGE AND VERTEX ************** */
-/* selects new faces/edges/verts based on the
- existing selection
-
-FACES GROUP
- mode 1: same material
- mode 2: same image
- mode 3: same area
- mode 4: same perimeter
- mode 5: same normal
- mode 6: same co-planer
-*/
+/* selects new faces/edges/verts based on the existing selection */
+
+/* FACES GROUP */
+
+#define SIMFACE_MATERIAL 201
+#define SIMFACE_IMAGE 202
+#define SIMFACE_AREA 203
+#define SIMFACE_PERIMETER 204
+#define SIMFACE_NORMAL 205
+#define SIMFACE_COPLANAR 206
static EnumPropertyItem prop_simface_types[] = {
- {1, "MATERIAL", 0, "Material", ""},
- {2, "IMAGE", 0, "Image", ""},
- {3, "AREA", 0, "Area", ""},
- {4, "PERIMETER", 0, "Perimeter", ""},
- {5, "NORMAL", 0, "Normal", ""},
- {6, "COPLANAR", 0, "Co-planar", ""},
+ {SIMFACE_MATERIAL, "MATERIAL", 0, "Material", ""},
+ {SIMFACE_IMAGE, "IMAGE", 0, "Image", ""},
+ {SIMFACE_AREA, "AREA", 0, "Area", ""},
+ {SIMFACE_PERIMETER, "PERIMETER", 0, "Perimeter", ""},
+ {SIMFACE_NORMAL, "NORMAL", 0, "Normal", ""},
+ {SIMFACE_COPLANAR, "COPLANAR", 0, "Co-planar", ""},
{0, NULL, 0, NULL, NULL}
};
@@ -695,12 +694,11 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
if (!ok || !deselcount) /* no data selected OR no more data to select */
return 0;
- /*if mode is 3 then record face areas, 4 record perimeter */
- if (mode==3) {
+ if (mode==SIMFACE_AREA) {
for(efa= em->faces.first; efa; efa= efa->next) {
efa->tmp.fp= EM_face_area(efa);
}
- } else if (mode==4) {
+ } else if (mode==SIMFACE_PERIMETER) {
for(efa= em->faces.first; efa; efa= efa->next) {
efa->tmp.fp= EM_face_perimeter(efa);
}
@@ -708,7 +706,7 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
for(base_efa= em->faces.first; base_efa; base_efa= base_efa->next) {
if (base_efa->f1) { /* This was one of the faces originaly selected */
- if (mode==1) { /* same material */
+ if (mode==SIMFACE_MATERIAL) { /* same material */
for(efa= em->faces.first; efa; efa= efa->next) {
if (
!(efa->f & SELECT) &&
@@ -722,7 +720,7 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
return selcount;
}
}
- } else if (mode==2) { /* same image */
+ } else if (mode==SIMFACE_IMAGE) { /* same image */
MTFace *tf, *base_tf;
base_tf = (MTFace*)CustomData_em_get(&em->fdata, base_efa->data,
@@ -745,7 +743,7 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
}
}
}
- } else if (mode==3 || mode==4) { /* same area OR same perimeter, both use the same temp var */
+ } else if (mode==SIMFACE_AREA || mode==SIMFACE_PERIMETER) { /* same area OR same perimeter, both use the same temp var */
for(efa= em->faces.first; efa; efa= efa->next) {
if (
(!(efa->f & SELECT) && !efa->h) &&
@@ -758,7 +756,7 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
return selcount;
}
}
- } else if (mode==5) { /* same normal */
+ } else if (mode==SIMFACE_NORMAL) {
float angle;
for(efa= em->faces.first; efa; efa= efa->next) {
if (!(efa->f & SELECT) && !efa->h) {
@@ -772,7 +770,7 @@ static int similar_face_select__internal(Scene *scene, EditMesh *em, int mode)
}
}
}
- } else if (mode==6) { /* same planer */
+ } else if (mode==SIMFACE_COPLANAR) { /* same planer */
float angle, base_dot, dot;
base_dot= Inpf(base_efa->cent, base_efa->n);
for(efa= em->faces.first; efa; efa= efa->next) {
@@ -817,45 +815,26 @@ static int similar_face_select_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
-void MESH_OT_faces_select_similar(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Similar Face Select";
- ot->idname= "MESH_OT_faces_select_similar";
-
- /* api callbacks */
- ot->invoke= WM_menu_invoke;
- ot->exec= similar_face_select_exec;
- ot->poll= ED_operator_editmesh;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- /* properties */
- RNA_def_enum(ot->srna, "type", prop_simface_types, 0, "Type", "");
-}
-
/* ***************************************************** */
-/*
-EDGE GROUP
- mode 1: same length
- mode 2: same direction
- mode 3: same number of face users
- mode 4: similar face angles.
- mode 5: similar crease
- mode 6: similar seam
- mode 7: similar sharp
-*/
+/* EDGE GROUP */
+
+#define SIMEDGE_LENGTH 101
+#define SIMEDGE_DIR 102
+#define SIMEDGE_FACE 103
+#define SIMEDGE_FACE_ANGLE 104
+#define SIMEDGE_CREASE 105
+#define SIMEDGE_SEAM 106
+#define SIMEDGE_SHARP 107
static EnumPropertyItem prop_simedge_types[] = {
- {1, "LENGTH", 0, "Length", ""},
- {2, "DIR", 0, "Direction", ""},
- {3, "FACE", 0, "Amount of Vertices in Face", ""},
- {4, "FACE_ANGLE", 0, "Face Angles", ""},
- {5, "CREASE", 0, "Crease", ""},
- {6, "SEAM", 0, "Seam", ""},
- {7, "SHARP", 0, "Sharpness", ""},
+ {SIMEDGE_LENGTH, "LENGTH", 0, "Length", ""},
+ {SIMEDGE_DIR, "DIR", 0, "Direction", ""},
+ {SIMEDGE_FACE, "FACE", 0, "Amount of Vertices in Face", ""},
+ {SIMEDGE_FACE_ANGLE, "FACE_ANGLE", 0, "Face Angles", ""},
+ {SIMEDGE_CREASE, "CREASE", 0, "Crease", ""},
+ {SIMEDGE_SEAM, "SEAM", 0, "Seam", ""},
+ {SIMEDGE_SHARP, "SHARP", 0, "Sharpness", ""},
{0, NULL, 0, NULL, NULL}
};
@@ -883,19 +862,19 @@ static int similar_edge_select__internal(Scene *scene, EditMesh *em, int mode)
/* set all eed->tmp.l to 0 we use it later.
for counting face users*/
eed->tmp.l=0;
- eed->f2=0; /* only for mode 4, edge animations */
+ eed->f2=0; /* only for mode SIMEDGE_FACE_ANGLE, edge animations */
}
}
if (!ok || !deselcount) /* no data selected OR no more data to select*/
return 0;
- if (mode==1) { /*store length*/
+ if (mode==SIMEDGE_LENGTH) { /*store length*/
for(eed= em->edges.first; eed; eed= eed->next) {
if (!eed->h) /* dont calc data for hidden edges*/
eed->tmp.fp= VecLenf(eed->v1->co, eed->v2->co);
}
- } else if (mode==3) { /*store face users*/
+ } else if (mode==SIMEDGE_FACE) { /*store face users*/
EditFace *efa;
/* cound how many faces each edge uses use tmp->l */
for(efa= em->faces.first; efa; efa= efa->next) {
@@ -904,7 +883,7 @@ static int similar_edge_select__internal(Scene *scene, EditMesh *em, int mode)
efa->e3->tmp.l++;
if (efa->e4) efa->e4->tmp.l++;
}
- } else if (mode==4) { /*store edge angles */
+ } else if (mode==SIMEDGE_FACE_ANGLE) { /*store edge angles */
EditFace *efa;
int j;
/* cound how many faces each edge uses use tmp.l */
@@ -946,7 +925,7 @@ static int similar_edge_select__internal(Scene *scene, EditMesh *em, int mode)
for(base_eed= em->edges.first; base_eed; base_eed= base_eed->next) {
if (base_eed->f1) {
- if (mode==1) { /* same length */
+ if (mode==SIMEDGE_LENGTH) { /* same length */
for(eed= em->edges.first; eed; eed= eed->next) {
if (
!(eed->f & SELECT) &&
@@ -960,7 +939,7 @@ static int similar_edge_select__internal(Scene *scene, EditMesh *em, int mode)
return selcount;
}
}
- } else if (mode==2) { /* same direction */
+ } else if (mode==SIMEDGE_DIR) { /* same direction */
float base_dir[3], dir[3], angle;
VecSubf(base_dir, base_eed->v1->co, base_eed->v2->co);
for(eed= em->edges.first; eed; eed= eed->next) {
@@ -980,7 +959,7 @@ static int similar_edge_select__internal(Scene *scene, EditMesh *em, int mode)
}
}
}
- } else if (mode==3) { /* face users */
+ } else if (mode==SIMEDGE_FACE) { /* face users */
for(eed= em->edges.first; eed; eed= eed->next) {
if (
!(eed->f & SELECT) &&
@@ -994,7 +973,7 @@ static int similar_edge_select__internal(Scene *scene, EditMesh *em, int mode)
return selcount;
}
}
- } else if (mode==4 && base_eed->f2==2) { /* edge angles, f2==2 means the edge has an angle. */
+ } else if (mode==SIMEDGE_FACE_ANGLE && base_eed->f2==2) { /* edge angles, f2==2 means the edge has an angle. */
for(eed= em->edges.first; eed; eed= eed->next) {
if (
!(eed->f & SELECT) &&
@@ -1009,7 +988,7 @@ static int similar_edge_select__internal(Scene *scene, EditMesh *em, int mode)
return selcount;
}
}
- } else if (mode==5) { /* edge crease */
+ } else if (mode==SIMEDGE_CREASE) { /* edge crease */
for(eed= em->edges.first; eed; eed= eed->next) {
if (
!(eed->f & SELECT) &&
@@ -1023,7 +1002,7 @@ static int similar_edge_select__internal(Scene *scene, EditMesh *em, int mode)
return selcount;
}
}
- } else if (mode==6) { /* edge seam */
+ } else if (mode==SIMEDGE_SEAM) { /* edge seam */
for(eed= em->edges.first; eed; eed= eed->next) {
if (
!(eed->f & SELECT) &&
@@ -1037,7 +1016,7 @@ static int similar_edge_select__internal(Scene *scene, EditMesh *em, int mode)
return selcount;
}
}
- } else if (mode==7) { /* edge sharp */
+ } else if (mode==SIMEDGE_SHARP) { /* edge sharp */
for(eed= em->edges.first; eed; eed= eed->next) {
if (
!(eed->f & SELECT) &&
@@ -1078,24 +1057,6 @@ static int similar_edge_select_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
-void MESH_OT_edges_select_similar(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Similar Edge Select";
- ot->idname= "MESH_OT_edges_select_similar";
-
- /* api callbacks */
- ot->invoke= WM_menu_invoke;
- ot->exec= similar_edge_select_exec;
- ot->poll= ED_operator_editmesh;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- /* properties */
- RNA_def_enum(ot->srna, "type", prop_simedge_types, 0, "Type", "");
-}
-
/* ********************************* */
/*
@@ -1104,10 +1065,15 @@ VERT GROUP
mode 2: same number of face users
mode 3: same vertex groups
*/
+
+#define SIMVERT_NORMAL 0
+#define SIMVERT_FACE 1
+#define SIMVERT_VGROUP 2
+
static EnumPropertyItem prop_simvertex_types[] = {
- {0, "NORMAL", 0, "Normal", ""},
- {1, "FACE", 0, "Amount of Vertices in Face", ""},
- {2, "VGROUP", 0, "Vertex Groups", ""},
+ {SIMVERT_NORMAL, "NORMAL", 0, "Normal", ""},
+ {SIMVERT_FACE, "FACE", 0, "Amount of Vertices in Face", ""},
+ {SIMVERT_VGROUP, "VGROUP", 0, "Vertex Groups", ""},
{0, NULL, 0, NULL, NULL}
};
@@ -1124,6 +1090,7 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op)
/*count how many visible selected edges there are,
so we can return when there are none left */
unsigned int deselcount=0;
+ int mode= RNA_enum_get(op->ptr, "type");
short ok=0;
float thresh= scene->toolsettings->select_thresh;
@@ -1148,7 +1115,7 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op)
return 0;
}
- if(RNA_enum_is_equal(op->ptr, "type", "FACE")) {
+ if(mode == SIMVERT_FACE) {
/* store face users */
EditFace *efa;
@@ -1165,7 +1132,7 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op)
for(base_eve= em->verts.first; base_eve; base_eve= base_eve->next) {
if (base_eve->f1) {
- if(RNA_enum_is_equal(op->ptr, "type", "NORMAL")) {
+ if(mode == SIMVERT_NORMAL) {
float angle;
for(eve= em->verts.first; eve; eve= eve->next) {
if (!(eve->f & SELECT) && !eve->h) {
@@ -1182,7 +1149,7 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op)
}
}
}
- else if(RNA_enum_is_equal(op->ptr, "type", "FACE")) {
+ else if(mode == SIMVERT_FACE) {
for(eve= em->verts.first; eve; eve= eve->next) {
if (
!(eve->f & SELECT) &&
@@ -1199,7 +1166,7 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op)
}
}
}
- else if(RNA_enum_is_equal(op->ptr, "type", "VGROUP")) {
+ else if(mode == SIMVERT_VGROUP) {
MDeformVert *dvert, *base_dvert;
short i, j; /* weight index */
@@ -1248,22 +1215,45 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
-void MESH_OT_vertices_select_similar(wmOperatorType *ot)
+static int select_similar_exec(bContext *C, wmOperator *op)
{
+ int type= RNA_enum_get(op->ptr, "type");
+
+ if(type < 100)
+ return similar_vert_select_exec(C, op);
+ else if(type < 200)
+ return similar_edge_select_exec(C, op);
+ else
+ return similar_face_select_exec(C, op);
+}
+
+static EnumPropertyItem *select_similar_type_itemf(PointerRNA *ptr)
+{
+ /* XXX need context! */
+ return prop_simface_types;
+ return prop_simvertex_types;
+ return prop_simedge_types;
+}
+
+void MESH_OT_select_similar(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+
/* identifiers */
- ot->name= "Similar Vertex Select";
- ot->idname= "MESH_OT_vertices_select_similar";
+ ot->name= "Select Similar";
+ ot->idname= "MESH_OT_select_similar";
/* api callbacks */
ot->invoke= WM_menu_invoke;
- ot->exec= similar_vert_select_exec;
+ ot->exec= select_similar_exec;
ot->poll= ED_operator_editmesh;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_enum(ot->srna, "type", prop_simvertex_types, 0, "Type", "");
+ prop= RNA_def_enum(ot->srna, "type", prop_simvertex_types, 0, "Type", "");
+ RNA_def_enum_funcs(prop, select_similar_type_itemf);
}
/* ******************************************* */
@@ -1422,7 +1412,7 @@ void EM_mesh_copy_face(EditMesh *em, wmOperator *op, short type)
break;
case 2: /* copy image */
if (!tf_act) {
- BKE_report(op->reports, RPT_ERROR, "mesh has no uv/image layers");
+ BKE_report(op->reports, RPT_ERROR, "Mesh has no uv/image layers.");
return;
}
for(efa=em->faces.first; efa; efa=efa->next) {
@@ -1443,7 +1433,7 @@ void EM_mesh_copy_face(EditMesh *em, wmOperator *op, short type)
case 3: /* copy UV's */
if (!tf_act) {
- BKE_report(op->reports, RPT_ERROR, "mesh has no uv/image layers");
+ BKE_report(op->reports, RPT_ERROR, "Mesh has no uv/image layers.");
return;
}
for(efa=em->faces.first; efa; efa=efa->next) {
@@ -1456,7 +1446,7 @@ void EM_mesh_copy_face(EditMesh *em, wmOperator *op, short type)
break;
case 4: /* mode's */
if (!tf_act) {
- BKE_report(op->reports, RPT_ERROR, "mesh has no uv/image layers");
+ BKE_report(op->reports, RPT_ERROR, "Mesh has no uv/image layers.");
return;
}
for(efa=em->faces.first; efa; efa=efa->next) {
@@ -1469,7 +1459,7 @@ void EM_mesh_copy_face(EditMesh *em, wmOperator *op, short type)
break;
case 5: /* copy transp's */
if (!tf_act) {
- BKE_report(op->reports, RPT_ERROR, "mesh has no uv/image layers");
+ BKE_report(op->reports, RPT_ERROR, "Mesh has no uv/image layers.");
return;
}
for(efa=em->faces.first; efa; efa=efa->next) {
@@ -1483,7 +1473,7 @@ void EM_mesh_copy_face(EditMesh *em, wmOperator *op, short type)
case 6: /* copy vcols's */
if (!mcol_act) {
- BKE_report(op->reports, RPT_ERROR, "mesh has no color layers");
+ BKE_report(op->reports, RPT_ERROR, "Mesh has no color layers.");
return;
} else {
/* guess the 4th color if needs be */
@@ -2740,20 +2730,24 @@ void MESH_OT_reveal(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-void select_faces_by_numverts(EditMesh *em, wmOperator *op, int numverts)
+int select_by_number_vertices_exec(bContext *C, wmOperator *op)
{
+ Object *obedit= CTX_data_edit_object(C);
+ EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
EditFace *efa;
+ int numverts= RNA_enum_get(op->ptr, "type");
/* Selects trias/qiads or isolated verts, and edges that do not have 2 neighboring
* faces
*/
/* for loose vertices/edges, we first select all, loop below will deselect */
- if(numverts==5)
+ if(numverts==5) {
EM_set_flag_all(em, SELECT);
+ }
else if(em->selectmode!=SCE_SELECT_FACE) {
BKE_report(op->reports, RPT_ERROR, "Only works in face selection mode");
- return;
+ return OPERATOR_CANCELLED;
}
for(efa= em->faces.first; efa; efa= efa->next) {
@@ -2765,8 +2759,32 @@ void select_faces_by_numverts(EditMesh *em, wmOperator *op, int numverts)
}
}
-// if (EM_texFaceCheck())
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+ return OPERATOR_FINISHED;
+}
+
+void MESH_OT_select_by_number_vertices(wmOperatorType *ot)
+{
+ static const EnumPropertyItem type_items[]= {
+ {3, "TRIANGLES", 0, "Triangles", NULL},
+ {4, "QUADS", 0, "Triangles", NULL},
+ {5, "OTHER", 0, "Other", NULL},
+ {0, NULL, 0, NULL, NULL}};
+
+ /* identifiers */
+ ot->name= "Select by Number of Vertices";
+ ot->idname= "MESH_OT_select_by_number_vertices";
+
+ /* api callbacks */
+ ot->exec= select_by_number_vertices_exec;
+ ot->poll= ED_operator_editmesh;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* props */
+ RNA_def_enum(ot->srna, "type", type_items, 3, "Type", "Type of elements to select.");
}
static int select_sharp_edges_exec(bContext *C, wmOperator *op)
@@ -3189,7 +3207,7 @@ void EM_select_swap(EditMesh *em) /* exported for UV */
}
-static int select_invert_mesh_exec(bContext *C, wmOperator *op)
+static int select_inverse_mesh_exec(bContext *C, wmOperator *op)
{
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
@@ -3202,14 +3220,14 @@ static int select_invert_mesh_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void MESH_OT_select_invert(wmOperatorType *ot)
+void MESH_OT_select_inverse(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Select Invert";
- ot->idname= "MESH_OT_select_invert";
+ ot->name= "Select Inverse";
+ ot->idname= "MESH_OT_select_inverse";
/* api callbacks */
- ot->exec= select_invert_mesh_exec;
+ ot->exec= select_inverse_mesh_exec;
ot->poll= ED_operator_editmesh;
/* flags */
@@ -3475,6 +3493,7 @@ void MESH_OT_select_random(wmOperatorType *ot)
/* api callbacks */
ot->exec= mesh_select_random_exec;
+ ot->invoke= WM_operator_props_popup;
ot->poll= ED_operator_editmesh;
/* flags */
@@ -3580,6 +3599,7 @@ void MESH_OT_selection_type(wmOperatorType *ot)
static int editmesh_mark_seam(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
Mesh *me= ((Mesh *)obedit->data);
@@ -3610,16 +3630,18 @@ static int editmesh_mark_seam(bContext *C, wmOperator *op)
}
}
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
void MESH_OT_mark_seam(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Mark seam";
+ ot->name= "Mark Seam";
ot->idname= "MESH_OT_mark_seam";
/* api callbacks */
@@ -3634,18 +3656,19 @@ void MESH_OT_mark_seam(wmOperatorType *ot)
static int editmesh_mark_sharp(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
Mesh *me= ((Mesh *)obedit->data);
- int set = RNA_boolean_get(op->ptr, "set");
+ int clear = RNA_boolean_get(op->ptr, "clear");
EditEdge *eed;
/* auto-enable sharp edge drawing */
- if(set) {
+ if(clear == 0) {
me->drawflag |= ME_DRAWSHARP;
}
- if(set) {
+ if(!clear) {
eed= em->edges.first;
while(eed) {
if(!eed->h && (eed->f & SELECT)) eed->sharp = 1;
@@ -3659,16 +3682,18 @@ static int editmesh_mark_sharp(bContext *C, wmOperator *op)
}
}
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
void MESH_OT_mark_sharp(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Mark sharp";
+ ot->name= "Mark Sharp";
ot->idname= "MESH_OT_mark_sharp";
/* api callbacks */
@@ -3678,167 +3703,9 @@ void MESH_OT_mark_sharp(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- RNA_def_boolean(ot->srna, "set", 0, "Set", "");
-}
-
-void BME_Menu() {
- short ret;
- ret= pupmenu("BME modeller%t|Select Edges of Vert%x1");
-
- switch(ret)
- {
- case 1:
- //BME_edges_of_vert();
- break;
- }
-}
-
-
-
-void Vertex_Menu(EditMesh *em)
-{
- short ret;
- ret= pupmenu("Vertex Specials%t|Remove Doubles%x1|Merge%x2|Smooth %x3|Select Vertex Path%x4|Blend From Shape%x5|Propagate To All Shapes%x6");
-
- switch(ret)
- {
- case 1:
-// XXX notice("Removed %d Vertices", removedoublesflag(1, 0, scene->toolsettings->doublimit));
- break;
- case 2:
-// XXX mergemenu(em);
- break;
- case 3:
-// XXX vertexsmooth(em);
- break;
- case 4:
-// XXX pathselect(em);
- break;
- case 5:
-// XXX shape_copy_select_from(em);
- break;
- case 6:
-// XXX shape_propagate(em);
- break;
- }
- /* some items crashed because this is in the original W menu but not here. should really manage this better */
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-}
-
-
-void Edge_Menu(EditMesh *em)
-{
- short ret;
-
- ret= pupmenu("Edge Specials%t|Mark Seam %x1|Clear Seam %x2|Rotate Edge CW%x3|Rotate Edge CCW%x4|Loopcut%x6|Edge Slide%x5|Edge Loop Select%x7|Edge Ring Select%x8|Loop to Region%x9|Region to Loop%x10|Mark Sharp%x11|Clear Sharp%x12");
-
- switch(ret)
- {
- case 1:
- //editmesh_mark_seam(em, 0);
- break;
- case 2:
- //editmesh_mark_seam(em, 1);
- break;
- case 3:
-// edge_rotate_selected(em, 2);
- break;
- case 4:
-// edge_rotate_selected(em, 1);
- break;
- case 5:
-// EdgeSlide(em, 0,0.0);
- break;
- case 6:
-// CutEdgeloop(em, 1);
- break;
- case 7:
-// loop_multiselect(em, 0);
- break;
- case 8:
-// loop_multiselect(em, 1);
- break;
- case 9:
-// loop_to_region(em);
- break;
- case 10:
-// region_to_loop(em);
- break;
- case 11:
-// editmesh_mark_sharp(em, 1);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- break;
- case 12:
-// editmesh_mark_sharp(em, 0);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- break;
- }
- /* some items crashed because this is in the original W menu but not here. should really manage this better */
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-}
-
-void Face_Menu(EditMesh *em)
-{
- short ret;
- ret= pupmenu(
- "Face Specials%t|Flip Normals%x1|Bevel%x2|Shade Smooth%x3|Shade Flat%x4|"
- "Triangulate (Ctrl T)%x5|Quads from Triangles (Alt J)%x6|Flip Triangle Edges (Ctrl Shift F)%x7|%l|"
- "Face Mode Set%x8|Face Mode Clear%x9|%l|"
- "UV Rotate (Shift - CCW)%x10|UV Mirror (Shift - Switch Axis)%x11|"
- "Color Rotate (Shift - CCW)%x12|Color Mirror (Shift - Switch Axis)%x13");
-
- switch(ret)
- {
- case 1:
-// flip_editnormals(em);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- break;
- case 2:
-// bevel_menu(em);
- break;
- case 3:
-// mesh_set_smooth_faces(em, 1);
- break;
- case 4:
-// mesh_set_smooth_faces(em, 0);
- break;
-
- case 5: /* Quads to Tris */
-// convert_to_triface(em, 0);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- break;
- case 6: /* Tris to Quads */
-// join_triangles(em);
- break;
- case 7: /* Flip triangle edges */
-// edge_flip(em);
- break;
- case 8:
-// mesh_set_face_flags(em, 1);
- break;
- case 9:
-// mesh_set_face_flags(em, 0);
- break;
-
- /* uv texface options */
- case 10:
-// mesh_rotate_uvs(em);
- break;
- case 11:
-// mesh_mirror_uvs(em);
- break;
- case 12:
-// mesh_rotate_colors(em);
- break;
- case 13:
-// mesh_mirror_colors(em);
- break;
- }
- /* some items crashed because this is in the original W menu but not here. should really manage this better */
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ RNA_def_boolean(ot->srna, "clear", 0, "Clear", "");
}
-
/* **************** NORMALS ************** */
/* XXX value of select is messed up, it means two things */
@@ -4055,6 +3922,7 @@ void righthandfaces(EditMesh *em, int select) /* makes faces righthand turning *
static int righthandfaces_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
@@ -4063,9 +3931,11 @@ static int righthandfaces_exec(bContext *C, wmOperator *op)
// XXX need other args
righthandfaces(em, RNA_boolean_get(op->ptr, "inside"));
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit); //TODO is this needed ?
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
@@ -4265,20 +4135,13 @@ static int smooth_vertex(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
- Mesh *me= obedit->data;
- EditMesh *em= (EditMesh *)me;
-
+ EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
EditVert *eve, *eve_mir = NULL;
EditEdge *eed;
float *adror, *adr, fac;
float fvec[3];
int teller=0;
- ModifierData *md= obedit->modifiers.first;
-
- if(em==NULL) {
- BKE_mesh_end_editmesh(obedit->data, em);
- return OPERATOR_CANCELLED;
- }
+ ModifierData *md;
/* count */
eve= em->verts.first;
@@ -4306,8 +4169,8 @@ static int smooth_vertex(bContext *C, wmOperator *op)
/* if there is a mirror modifier with clipping, flag the verts that
* are within tolerance of the plane(s) of reflection
*/
- for (; md; md=md->next) {
- if (md->type==eModifierType_Mirror) {
+ for(md=obedit->modifiers.first; md; md=md->next) {
+ if(md->type==eModifierType_Mirror) {
MirrorModifierData *mmd = (MirrorModifierData*) md;
if(mmd->flag & MOD_MIR_CLIPPING) {
@@ -4398,11 +4261,11 @@ static int smooth_vertex(bContext *C, wmOperator *op)
recalc_editnormals(em);
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+ BKE_mesh_end_editmesh(obedit->data, em);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
@@ -4531,9 +4394,11 @@ static int vertices_to_sphere_exec(bContext *C, wmOperator *op)
vertices_to_sphere(scene, v3d, obedit, em, RNA_float_get(op->ptr,"percent"));
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
@@ -4574,8 +4439,9 @@ void flipface(EditMesh *em, EditFace *efa)
}
-static int flip_editnormals(bContext *C, wmOperator *op)
+static int flip_normals(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data));
EditFace *efa;
@@ -4592,19 +4458,24 @@ static int flip_editnormals(bContext *C, wmOperator *op)
recalc_editnormals(em);
BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
return OPERATOR_FINISHED;
}
-void MESH_OT_flip_editnormals(wmOperatorType *ot)
+void MESH_OT_flip_normals(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Flip Normals";
- ot->idname= "MESH_OT_flip_editnormals";
+ ot->idname= "MESH_OT_flip_normals";
/* api callbacks */
- ot->exec= flip_editnormals;
+ ot->exec= flip_normals;
ot->poll= ED_operator_editmesh;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index dc9c8c6b6d2..4377f459081 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -83,10 +83,10 @@ editmesh_tool.c: UI called tools for editmesh, geometry changes here, otherwise
#include "WM_types.h"
#include "ED_mesh.h"
-#include "ED_view3d.h"
-#include "ED_util.h"
#include "ED_screen.h"
-#include "BIF_transform.h"
+#include "ED_transform.h"
+#include "ED_util.h"
+#include "ED_view3d.h"
#include "UI_interface.h"
@@ -496,6 +496,7 @@ static int removedoublesflag_exec(bContext *C, wmOperator *op)
BKE_report(op->reports, RPT_INFO, msg);
}
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
BKE_mesh_end_editmesh(obedit->data, em);
@@ -698,28 +699,33 @@ void extrude_mesh(Object *obedit, EditMesh *em, wmOperator *op)
// XXX should be a menu item
static int mesh_extrude_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
extrude_mesh(obedit,em, op);
+
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
-
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
/* extrude without transform */
static int mesh_extrude_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh(obedit->data);
extrude_mesh(obedit,em, op);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
BKE_mesh_end_editmesh(obedit->data, em);
@@ -730,7 +736,7 @@ static int mesh_extrude_exec(bContext *C, wmOperator *op)
void MESH_OT_extrude(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Extrude Mesh";
+ ot->name= "Extrude";
ot->idname= "MESH_OT_extrude";
/* api callbacks */
@@ -747,6 +753,7 @@ void MESH_OT_extrude(wmOperatorType *ot)
static int split_mesh(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
@@ -760,9 +767,9 @@ static int split_mesh(bContext *C, wmOperator *op)
WM_cursor_wait(0);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
@@ -770,7 +777,7 @@ static int split_mesh(bContext *C, wmOperator *op)
void MESH_OT_split(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Split Mesh";
+ ot->name= "Split";
ot->idname= "MESH_OT_split";
/* api callbacks */
@@ -784,6 +791,7 @@ void MESH_OT_split(wmOperatorType *ot)
static int extrude_repeat_mesh(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
@@ -819,9 +827,9 @@ static int extrude_repeat_mesh(bContext *C, wmOperator *op)
EM_fgon_flags(em);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
@@ -931,16 +939,19 @@ static int spin_mesh(bContext *C, wmOperator *op, float *dvec, int steps, float
static int spin_mesh_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
int ok;
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
-
ok= spin_mesh(C, op, NULL, RNA_int_get(op->ptr,"steps"), RNA_float_get(op->ptr,"degrees"), RNA_boolean_get(op->ptr,"dupli"));
if(ok==0) {
BKE_report(op->reports, RPT_ERROR, "No valid vertices are selected");
return OPERATOR_CANCELLED;
}
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
return OPERATOR_FINISHED;
}
@@ -983,6 +994,7 @@ void MESH_OT_spin(wmOperatorType *ot)
static int screw_mesh_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
EditVert *eve,*v1=0,*v2=0;
@@ -1038,7 +1050,9 @@ static int screw_mesh_exec(bContext *C, wmOperator *op)
}
if(spin_mesh(C, op, dvec, turns*steps, 360.0f*turns, 0)) {
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
@@ -1047,8 +1061,6 @@ static int screw_mesh_exec(bContext *C, wmOperator *op)
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_CANCELLED;
}
-
- BKE_mesh_end_editmesh(obedit->data, em);
}
/* get center and axis, in global coords */
@@ -1267,8 +1279,6 @@ void delete_mesh(Object *obedit, EditMesh *em, wmOperator *op, int event)
}
EM_fgon_flags(em); // redo flags and indices for fgons
-
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
}
/* Note, these values must match delete_mesh() event values */
@@ -1285,11 +1295,13 @@ static EnumPropertyItem prop_mesh_delete_types[] = {
static int delete_mesh_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
- delete_mesh(obedit,em, op,RNA_enum_get(op->ptr, "type"));
+ delete_mesh(obedit, em, op, RNA_enum_get(op->ptr, "type"));
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
BKE_mesh_end_editmesh(obedit->data, em);
@@ -1329,7 +1341,7 @@ void MESH_OT_delete(wmOperatorType *ot)
#define DOUBLEOPFILL 16
/* calculates offset for co, based on fractal, sphere or smooth settings */
-static void alter_co(float *co, EditEdge *edge, float rad, int beauty, float perc)
+static void alter_co(float *co, EditEdge *edge, float smooth, float fractal, int beauty, float perc)
{
float vec1[3], fac;
@@ -1356,37 +1368,38 @@ static void alter_co(float *co, EditEdge *edge, float rad, int beauty, float per
vec1[0]+= fac*nor2[0];
vec1[1]+= fac*nor2[1];
vec1[2]+= fac*nor2[2];
+
+ /* falloff for multi subdivide */
+ smooth *= sqrt(fabs(1.0f - 2.0f*fabs(0.5f-perc)));
- vec1[0]*= rad*len;
- vec1[1]*= rad*len;
- vec1[2]*= rad*len;
+ vec1[0]*= smooth*len;
+ vec1[1]*= smooth*len;
+ vec1[2]*= smooth*len;
co[0] += vec1[0];
co[1] += vec1[1];
co[2] += vec1[2];
}
- else {
- if(rad > 0.0) { /* subdivide sphere */
- Normalize(co);
- co[0]*= rad;
- co[1]*= rad;
- co[2]*= rad;
- }
- else if(rad< 0.0) { /* fractal subdivide */
- fac= rad* VecLenf(edge->v1->co, edge->v2->co);
- vec1[0]= fac*(float)(0.5-BLI_drand());
- vec1[1]= fac*(float)(0.5-BLI_drand());
- vec1[2]= fac*(float)(0.5-BLI_drand());
- VecAddf(co, co, vec1);
- }
+ else if(beauty & B_SPHERE) { /* subdivide sphere */
+ Normalize(co);
+ co[0]*= smooth;
+ co[1]*= smooth;
+ co[2]*= smooth;
+ }
+ if(beauty & B_FRACTAL) {
+ fac= fractal*VecLenf(edge->v1->co, edge->v2->co);
+ vec1[0]= fac*(float)(0.5-BLI_drand());
+ vec1[1]= fac*(float)(0.5-BLI_drand());
+ vec1[2]= fac*(float)(0.5-BLI_drand());
+ VecAddf(co, co, vec1);
}
}
/* assumes in the edge is the correct interpolated vertices already */
-/* percent defines the interpolation, rad and beauty are for special options */
+/* percent defines the interpolation, smooth, fractal and beauty are for special options */
/* results in new vertex with correct coordinate, vertex normal and weight group info */
-static EditVert *subdivide_edge_addvert(EditMesh *em, EditEdge *edge, float rad, int beauty, float percent)
+static EditVert *subdivide_edge_addvert(EditMesh *em, EditEdge *edge, float smooth, float fractal, int beauty, float percent)
{
EditVert *ev;
float co[3];
@@ -1396,7 +1409,7 @@ static EditVert *subdivide_edge_addvert(EditMesh *em, EditEdge *edge, float rad,
co[2] = (edge->v2->co[2]-edge->v1->co[2])*percent + edge->v1->co[2];
/* offset for smooth or sphere or fractal */
- alter_co(co, edge, rad, beauty, percent);
+ alter_co(co, edge, smooth, fractal, beauty, percent);
/* clip if needed by mirror modifier */
if (edge->v1->f2) {
@@ -2164,7 +2177,7 @@ static void fill_quad_triple(EditMesh *em, EditFace *efa, struct GHash *gh, int
//EM_fgon_flags(em);
}
-static void fill_quad_quadruple(EditMesh *em, EditFace *efa, struct GHash *gh, int numcuts, float rad, int beauty)
+static void fill_quad_quadruple(EditMesh *em, EditFace *efa, struct GHash *gh, int numcuts, float smooth, float fractal, int beauty)
{
EditVert **verts[4], ***innerverts;
EditFace *hold;
@@ -2234,7 +2247,7 @@ static void fill_quad_quadruple(EditMesh *em, EditFace *efa, struct GHash *gh, i
for(j=1;j<=numcuts;j++) {
float percent= (float)j/(float)(numcuts+1);
- innerverts[i][(numcuts+1)-j]= subdivide_edge_addvert(em, &temp, rad, beauty, percent);
+ innerverts[i][(numcuts+1)-j]= subdivide_edge_addvert(em, &temp, smooth, fractal, beauty, percent);
}
}
// Fill with faces
@@ -2261,7 +2274,7 @@ static void fill_quad_quadruple(EditMesh *em, EditFace *efa, struct GHash *gh, i
MEM_freeN(innerverts);
}
-static void fill_tri_triple(EditMesh *em, EditFace *efa, struct GHash *gh, int numcuts, float rad, int beauty)
+static void fill_tri_triple(EditMesh *em, EditFace *efa, struct GHash *gh, int numcuts, float smooth, float fractal, int beauty)
{
EditVert **verts[3], ***innerverts;
short vertsize, i, j;
@@ -2332,7 +2345,7 @@ static void fill_tri_triple(EditMesh *em, EditFace *efa, struct GHash *gh, int n
for(j=1;j<(numcuts+1)-i;j++) {
float percent= (float)j/(float)((numcuts+1)-i);
- innerverts[i][((numcuts+1)-i)-j]= subdivide_edge_addvert(em, &temp, rad, beauty, 1-percent);
+ innerverts[i][((numcuts+1)-i)-j]= subdivide_edge_addvert(em, &temp, smooth, fractal, beauty, 1-percent);
}
}
@@ -2510,7 +2523,7 @@ static void fill_quad_singlevert(EditMesh *em, EditFace *efa, struct GHash *gh)
// This function takes an example edge, the current point to create and
// the total # of points to create, then creates the point and return the
// editvert pointer to it.
-static EditVert *subdivideedgenum(EditMesh *em, EditEdge *edge, int curpoint, int totpoint, float rad, int beauty)
+static EditVert *subdivideedgenum(EditMesh *em, EditEdge *edge, int curpoint, int totpoint, float smooth, float fractal, int beauty)
{
EditVert *ev;
float percent;
@@ -2521,13 +2534,13 @@ static EditVert *subdivideedgenum(EditMesh *em, EditEdge *edge, int curpoint, in
else
percent= (float)curpoint/(float)(totpoint+1);
- ev= subdivide_edge_addvert(em, edge, rad, beauty, percent);
+ ev= subdivide_edge_addvert(em, edge, smooth, fractal, beauty, percent);
ev->f = edge->v1->f;
return ev;
}
-void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beauty, int numcuts, int seltype)
+void esubdivideflag(Object *obedit, EditMesh *em, int flag, float smooth, float fractal, int beauty, int numcuts, int seltype)
{
EditFace *ef;
EditEdge *eed, *cedge, *sort[4];
@@ -2680,7 +2693,7 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beaut
for(i=0;i<numcuts;i++) {
// This function creates the new vert and returns it back
// to the array
- templist[i+1] = subdivideedgenum(em, eed, i+1, numcuts, rad, beauty);
+ templist[i+1] = subdivideedgenum(em, eed, i+1, numcuts, smooth, fractal, beauty);
//while we are here, we can copy edge info from the original edge
cedge = addedgelist(em, templist[i],templist[i+1],eed);
// Also set the edge f2 to EDGENEW so that we can use this info later
@@ -2783,7 +2796,7 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beaut
fill_quad_triple(em, ef, gh, numcuts);
break;
case 4: ef->f1 = SELECT;
- fill_quad_quadruple(em, ef, gh, numcuts, rad, beauty);
+ fill_quad_quadruple(em, ef, gh, numcuts, smooth, fractal, beauty);
break;
}
} else {
@@ -2796,7 +2809,7 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beaut
fill_tri_double(em, ef, gh, numcuts);
break;
case 3: ef->f1 = SELECT;
- fill_tri_triple(em, ef, gh, numcuts, rad, beauty);
+ fill_tri_triple(em, ef, gh, numcuts, smooth, fractal, beauty);
break;
}
}
@@ -2898,7 +2911,6 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beaut
}
recalc_editnormals(em);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
}
static int count_selected_edges(EditEdge *ed)
@@ -3379,7 +3391,6 @@ void join_triangles(EditMesh *em)
if(edsortblock) MEM_freeN(edsortblock);
EM_selectmode_flush(em);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
}
/* ******************** END TRIANGLE TO QUAD ************************************* */
@@ -3475,12 +3486,25 @@ void edge_flip(EditMesh *em)
free_tagged_edges_faces(em, em->edges.first, em->faces.first);
MEM_freeN(efaar);
-
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-
}
-static void edge_rotate(EditMesh *em, wmOperator *op, EditEdge *eed,int dir)
+#define DIRECTION_CW 1
+#define DIRECTION_CCW 2
+
+static const EnumPropertyItem direction_items[]= {
+ {DIRECTION_CW, "CW", 0, "Clockwise", ""},
+ {DIRECTION_CCW, "CCW", 0, "Counter Clockwise", ""},
+ {0, NULL, 0, NULL, NULL}};
+
+#define AXIS_X 1
+#define AXIS_Y 2
+
+static const EnumPropertyItem axis_items[]= {
+ {AXIS_X, "X", 0, "X", ""},
+ {AXIS_Y, "Y", 0, "Y", ""},
+ {0, NULL, 0, NULL, NULL}};
+
+static void edge_rotate(EditMesh *em, wmOperator *op, EditEdge *eed, int dir)
{
EditVert **verts[2];
EditFace *face[2], *efa, *newFace[2];
@@ -3578,10 +3602,10 @@ static void edge_rotate(EditMesh *em, wmOperator *op, EditEdge *eed,int dir)
newFace[1]= EM_face_from_faces(em, face[1], face[0], p[1][1], p[1][2], 4+p[0][1], -1);
}
else if(fac1 == 4 && fac2 == 3) {
- if(dir == 1) {
+ if(dir == DIRECTION_CW) {
newFace[0]= EM_face_from_faces(em, face[0], face[1], p[0][1], p[0][2], p[0][3], 4+p[1][1]);
newFace[1]= EM_face_from_faces(em, face[1], face[0], p[1][1], p[1][2], 4+p[0][1], -1);
- } else if (dir == 2) {
+ } else if (dir == DIRECTION_CCW) {
newFace[0]= EM_face_from_faces(em, face[0], face[1], p[0][2], 4+p[1][1], p[0][0], p[0][1]);
newFace[1]= EM_face_from_faces(em, face[1], face[0], 4+p[0][2], p[1][0], p[1][1], -1);
@@ -3590,10 +3614,10 @@ static void edge_rotate(EditMesh *em, wmOperator *op, EditEdge *eed,int dir)
}
}
else if(fac1 == 3 && fac2 == 4) {
- if(dir == 1) {
+ if(dir == DIRECTION_CW) {
newFace[0]= EM_face_from_faces(em, face[0], face[1], p[0][1], p[0][2], 4+p[1][1], -1);
newFace[1]= EM_face_from_faces(em, face[1], face[0], p[1][1], p[1][2], p[1][3], 4+p[0][1]);
- } else if (dir == 2) {
+ } else if (dir == DIRECTION_CCW) {
newFace[0]= EM_face_from_faces(em, face[0], face[1], p[0][0], p[0][1], 4+p[1][2], -1);
newFace[1]= EM_face_from_faces(em, face[1], face[0], p[1][1], p[1][2], 4+p[0][1], 4+p[0][2]);
@@ -3603,10 +3627,10 @@ static void edge_rotate(EditMesh *em, wmOperator *op, EditEdge *eed,int dir)
}
else if(fac1 == 4 && fac2 == 4) {
- if(dir == 1) {
+ if(dir == DIRECTION_CW) {
newFace[0]= EM_face_from_faces(em, face[0], face[1], p[0][1], p[0][2], p[0][3], 4+p[1][1]);
newFace[1]= EM_face_from_faces(em, face[1], face[0], p[1][1], p[1][2], p[1][3], 4+p[0][1]);
- } else if (dir == 2) {
+ } else if (dir == DIRECTION_CCW) {
newFace[0]= EM_face_from_faces(em, face[0], face[1], p[0][2], p[0][3], 4+p[1][1], 4+p[1][2]);
newFace[1]= EM_face_from_faces(em, face[1], face[0], p[1][2], p[1][3], 4+p[0][1], 4+p[0][2]);
@@ -3617,7 +3641,7 @@ static void edge_rotate(EditMesh *em, wmOperator *op, EditEdge *eed,int dir)
else
return; /* This should never happen */
- if(dir == 1 || (fac1 == 3 && fac2 == 3)) {
+ if(dir == DIRECTION_CW || (fac1 == 3 && fac2 == 3)) {
verts[0][p[0][1]]->f |= SELECT;
verts[1][p[1][1]]->f |= SELECT;
}
@@ -3658,12 +3682,12 @@ static void edge_rotate(EditMesh *em, wmOperator *op, EditEdge *eed,int dir)
/* only accepts 1 selected edge, or 2 selected faces */
static int edge_rotate_selected(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
-
- int dir = RNA_int_get(op->ptr,"dir"); // dir == 2 when clockwise and ==1 for counter CW.
EditEdge *eed;
EditFace *efa;
+ int dir = RNA_int_get(op->ptr, "direction"); // dir == 2 when clockwise and ==1 for counter CW.
short edgeCount = 0;
/*clear new flag for new edges, count selected edges */
@@ -3711,24 +3735,21 @@ static int edge_rotate_selected(bContext *C, wmOperator *op)
}
}
}
- else
- {
+ else {
BKE_report(op->reports, RPT_ERROR, "Select one edge or two adjacent faces");
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_CANCELLED;
}
-
/* flush selected vertices (again) to edges/faces */
EM_select_flush(em);
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
-
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
-
}
void MESH_OT_edge_rotate(wmOperatorType *ot)
@@ -3745,7 +3766,7 @@ void MESH_OT_edge_rotate(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* props */
- RNA_def_int(ot->srna, "dir", 1, 1, 2, "Direction", "Clockwise and Counter Clockwise", 1, 2);
+ RNA_def_enum(ot->srna, "direction", direction_items, DIRECTION_CW, "direction", "direction to rotate edge around.");
}
@@ -4719,26 +4740,7 @@ void mesh_set_face_flags(EditMesh *em, short mode)
}
#endif
-void mesh_set_smooth_faces(EditMesh *em, short event)
-{
- EditFace *efa;
-
- if(em==NULL) return;
-
- efa= em->faces.first;
- while(efa) {
- if(efa->f & SELECT) {
- if(event==1) efa->flag |= ME_SMOOTH;
- else if(event==0) efa->flag &= ~ME_SMOOTH;
- }
- efa= efa->next;
- }
-
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-
-}
-
-/* ********************** mesh rip ********************** */
+/********************** Rip Operator *************************/
/* helper to find edge for edge_rip */
static float mesh_rip_edgedist(ARegion *ar, float mat[][4], float *co1, float *co2, short *mval)
@@ -4776,6 +4778,7 @@ static void mesh_rip_setface(EditMesh *em, EditFace *sefa)
/* based on mouse cursor position, it defines how is being ripped */
static int mesh_rip_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
+ Scene *scene= CTX_data_scene(C);
ARegion *ar= CTX_wm_region(C);
RegionView3D *rv3d= ar->regiondata;
Object *obedit= CTX_data_edit_object(C);
@@ -4977,13 +4980,17 @@ static int mesh_rip_invoke(bContext *C, wmOperator *op, wmEvent *event)
}
}
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
+ BKE_mesh_end_editmesh(obedit->data, em);
+
RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
// scene->prop_mode = propmode;
// XXX scene->proportional = prop;
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
@@ -5005,7 +5012,7 @@ void MESH_OT_rip(wmOperatorType *ot)
}
-/* ************************************** */
+/************************ Shape Operators *************************/
void shape_propagate(Scene *scene, Object *obedit, EditMesh *em, wmOperator *op)
{
@@ -5196,6 +5203,8 @@ void shape_copy_select_from(Object *obedit, EditMesh *em, wmOperator *op)
return;
}
+/************************ Merge Operator *************************/
+
/* Collection Routines|Currently used by the improved merge code*/
/* buildEdge_collection() creates a list of lists*/
/* these lists are filled with edges that are topologically connected.*/
@@ -5686,10 +5695,6 @@ int collapseEdges(EditMesh *em)
}
freecollections(&allcollections);
removedoublesflag(em, 1, 0, MERGELIMIT);
- /*get rid of this!*/
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-
-// if (EM_texFaceCheck())
return mergecount;
}
@@ -5732,6 +5737,7 @@ int merge_target(EditMesh *em, int target, int uvmerge)
{
EditVert *eve;
+ // XXX not working
if(target) snap_sel_to_curs();
else snap_to_center();
@@ -5742,28 +5748,125 @@ int merge_target(EditMesh *em, int target, int uvmerge)
}
collapseuvs(em, NULL);
}
-
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
return removedoublesflag(em, 1, 0, MERGELIMIT);
-
}
#undef MERGELIMIT
-typedef struct PathNode{
+static int merge_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *obedit= CTX_data_edit_object(C);
+ EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
+ int count= 0, uvs= RNA_boolean_get(op->ptr, "uvs");
+
+ switch(RNA_enum_get(op->ptr, "type")) {
+ case 3:
+ count = merge_target(em, 0, uvs);
+ break;
+ case 4:
+ count = merge_target(em, 1, uvs);
+ break;
+ case 1:
+ count = merge_firstlast(em, 0, uvs);
+ break;
+ case 6:
+ count = merge_firstlast(em, 1, uvs);
+ break;
+ case 2:
+ count = collapseEdges(em);
+ break;
+ }
+
+ if(!count)
+ return OPERATOR_CANCELLED;
+
+ BKE_reportf(op->reports, RPT_INFO, "Removed %d vertices.", count);
+
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
+ return OPERATOR_FINISHED;
+}
+
+static EnumPropertyItem merge_type_items[]= {
+ {6, "FIRST", 0, "At First", ""},
+ {1, "LAST", 0, "At Last", ""},
+ {3, "CENTER", 0, "At Center", ""},
+ {4, "CURSOR", 0, "At Cursor", ""},
+ {5, "COLLAPSE", 0, "Collapse", ""},
+ {0, NULL, 0, NULL, NULL}};
+
+static EnumPropertyItem *merge_type_itemf(PointerRNA *ptr)
+{
+ /* XXX need context here */
+#if 0
+ Scene *scene= CTX_data_scene(C);
+ Object *obedit= CTX_data_edit_object(C);
+ EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
+
+ if(em->selectmode & SCE_SELECT_VERTEX)
+ if(em->selected.first && em->selected.last &&
+ ((EditSelection*)em->selected.first)->type == EDITVERT && ((EditSelection*)em->selected.last)->type == EDITVERT)
+ event = pupmenu("Merge %t|At First %x6|At Last%x1|At Center%x3|At Cursor%x4|Collapse%x2");
+ else if (em->selected.first && ((EditSelection*)em->selected.first)->type == EDITVERT)
+ event = pupmenu("Merge %t|At First %x6|At Center%x3|At Cursor%x4|Collapse%x2");
+ else if (em->selected.last && ((EditSelection*)em->selected.last)->type == EDITVERT)
+ event = pupmenu("Merge %t|At Last %x1|At Center%x3|At Cursor%x4|Collapse%x2");
+ else event = pupmenu("Merge %t|At Center%x3|At Cursor%x4|Collapse%x2");
+ else event = pupmenu("Merge %t|At Center%x3|At Cursor%x4|Collapse%x2");
+
+ BKE_mesh_end_editmesh(obedit->data, em);
+#endif
+
+ return merge_type_items;
+}
+
+void MESH_OT_merge(wmOperatorType *ot)
+{
+ PropertyRNA *prop;
+
+ /* identifiers */
+ ot->name= "Merge";
+ ot->idname= "MESH_OT_merge";
+
+ /* api callbacks */
+ ot->exec= merge_exec;
+ ot->invoke= WM_menu_invoke;
+ ot->poll= ED_operator_editmesh;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ prop= RNA_def_enum(ot->srna, "type", merge_type_items, 6, "Type", "Merge method to use.");
+ RNA_def_enum_funcs(prop, merge_type_itemf);
+ RNA_def_boolean(ot->srna, "uvs", 0, "UVs", "Move UVs according to merge.");
+}
+
+/************************ Vertex Path Operator *************************/
+
+typedef struct PathNode {
int u;
int visited;
ListBase edges;
} PathNode;
-typedef struct PathEdge{
+typedef struct PathEdge {
struct PathEdge *next, *prev;
int v;
float w;
} PathEdge;
-void pathselect(EditMesh *em, wmOperator *op)
+#define PATH_SELECT_EDGE_LENGTH 0
+#define PATH_SELECT_TOPOLOGICAL 1
+
+int select_vertex_path_exec(bContext *C, wmOperator *op)
{
+ Object *obedit= CTX_data_edit_object(C);
+ EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
EditVert *eve, *s, *t;
EditEdge *eed;
EditSelection *ese;
@@ -5812,9 +5915,7 @@ void pathselect(EditMesh *em, wmOperator *op)
}
}
-
-
- if(s->f1 && t->f1){ /*t can be reached by s*/
+ if(s->f1 && t->f1){ /* t can be reached by s */
Q = MEM_callocN(sizeof(PathNode)*totnodes, "Path Select Nodes");
totnodes = 0;
for(eve=em->verts.first; eve; eve=eve->next){
@@ -5908,54 +6009,83 @@ void pathselect(EditMesh *em, wmOperator *op)
MEM_freeN(previous);
BLI_heap_free(heap, NULL);
EM_select_flush(em);
- // DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-
-// if (EM_texFaceCheck())
}
}
- else{
+ else {
+ BKE_mesh_end_editmesh(obedit->data, em);
BKE_report(op->reports, RPT_ERROR, "Path Selection requires that exactly two vertices be selected");
- return;
+ return OPERATOR_CANCELLED;
}
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ return OPERATOR_FINISHED;
}
+void MESH_OT_select_vertex_path(wmOperatorType *ot)
+{
+ static const EnumPropertyItem type_items[] = {
+ {PATH_SELECT_EDGE_LENGTH, "EDGE_LENGTH", 0, "Edge Length", NULL},
+ {PATH_SELECT_TOPOLOGICAL, "TOPOLOGICAL", 0, "Topological", NULL},
+ {0, NULL, 0, NULL, NULL}};
+
+ /* identifiers */
+ ot->name= "Select Vertex Path";
+ ot->idname= "MESH_OT_select_vertex_path";
+
+ /* api callbacks */
+ ot->exec= select_vertex_path_exec;
+ ot->invoke= WM_menu_invoke;
+ ot->poll= ED_operator_editmesh;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ RNA_def_enum(ot->srna, "type", type_items, PATH_SELECT_EDGE_LENGTH, "Type", "Method to compute distance.");
+}
+
+/********************** Region/Loop Operators *************************/
+
static int region_to_loop(bContext *C, wmOperator *op)
{
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
EditEdge *eed;
EditFace *efa;
+ int selected= 0;
- if(em->totfacesel){
- for(eed=em->edges.first; eed; eed=eed->next) eed->f1 = 0;
-
- for(efa=em->faces.first; efa; efa=efa->next){
- if(efa->f&SELECT){
- efa->e1->f1++;
- efa->e2->f1++;
- efa->e3->f1++;
- if(efa->e4)
- efa->e4->f1++;
- }
- }
-
- EM_clear_flag_all(em, SELECT);
-
- for(eed=em->edges.first; eed; eed=eed->next){
- if(eed->f1 == 1) EM_select_edge(eed, 1);
- }
-
- em->selectmode = SCE_SELECT_EDGE;
- EM_selectmode_set(em);
- // DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ for(eed=em->edges.first; eed; eed=eed->next) eed->f1 = 0;
+
+ for(efa=em->faces.first; efa; efa=efa->next){
+ if(efa->f&SELECT){
+ efa->e1->f1++;
+ efa->e2->f1++;
+ efa->e3->f1++;
+ if(efa->e4)
+ efa->e4->f1++;
-// if (EM_texFaceCheck())
+ selected= 1;
+ }
+ }
+ if(!selected)
+ return OPERATOR_CANCELLED;
+
+ EM_clear_flag_all(em, SELECT);
+
+ for(eed=em->edges.first; eed; eed=eed->next){
+ if(eed->f1 == 1) EM_select_edge(eed, 1);
}
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+ em->selectmode = SCE_SELECT_EDGE;
+ EM_selectmode_set(em);
BKE_mesh_end_editmesh(obedit->data, em);
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
return OPERATOR_FINISHED;
}
@@ -6127,12 +6257,10 @@ static int loop_to_region(bContext *C, wmOperator *op)
}
freecollections(&allcollections);
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-
-// if (EM_texFaceCheck())
+ BKE_mesh_end_editmesh(obedit->data, em);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
+
return OPERATOR_FINISHED;
}
@@ -6150,36 +6278,36 @@ void MESH_OT_loop_to_region(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/********************** UV/Color Operators *************************/
// XXX please check if these functions do what you want them to
/* texface and vertex color editmode tools for the face menu */
static int mesh_rotate_uvs(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
EditFace *efa;
- short change = 0, ccw;
+ short change = 0;
MTFace *tf;
float u1, v1;
- int shift = 0; // XXX
+ int dir= RNA_enum_get(op->ptr, "direction");
if (!EM_texFaceCheck(em)) {
- BKE_report(op->reports, RPT_ERROR, "mesh has no uv/image layers");
+ BKE_report(op->reports, RPT_ERROR, "Mesh has no uv/image layers.");
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_CANCELLED;
}
- ccw = (shift);
-
for(efa=em->faces.first; efa; efa=efa->next) {
if (efa->f & SELECT) {
tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
u1= tf->uv[0][0];
v1= tf->uv[0][1];
- if (ccw) {
+ if (dir == DIRECTION_CCW) {
if(efa->v4) {
tf->uv[0][0]= tf->uv[3][0];
tf->uv[0][1]= tf->uv[3][1];
@@ -6219,38 +6347,39 @@ static int mesh_rotate_uvs(bContext *C, wmOperator *op)
}
}
- if (change) {
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- }
-
BKE_mesh_end_editmesh(obedit->data, em);
+
+ if(!change)
+ return OPERATOR_CANCELLED;
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
return OPERATOR_FINISHED;
}
static int mesh_mirror_uvs(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
EditFace *efa;
- short change = 0, altaxis;
+ short change = 0;
MTFace *tf;
float u1, v1;
- int shift= 0; // XXX
+ int axis= RNA_enum_get(op->ptr, "axis");
if (!EM_texFaceCheck(em)) {
- BKE_report(op->reports, RPT_ERROR, "mesh has no uv/image layers");
+ BKE_report(op->reports, RPT_ERROR, "Mesh has no uv/image layers.");
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_CANCELLED;
}
- altaxis = (shift);
-
for(efa=em->faces.first; efa; efa=efa->next) {
if (efa->f & SELECT) {
tf = CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
- if (altaxis) {
+ if (axis == AXIS_Y) {
u1= tf->uv[1][0];
v1= tf->uv[1][1];
if(efa->v4) {
@@ -6308,39 +6437,40 @@ static int mesh_mirror_uvs(bContext *C, wmOperator *op)
}
}
- if (change) {
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- }
-
BKE_mesh_end_editmesh(obedit->data, em);
+
+ if(!change)
+ return OPERATOR_CANCELLED;
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
return OPERATOR_FINISHED;
}
static int mesh_rotate_colors(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
EditFace *efa;
- short change = 0, ccw;
+ short change = 0;
MCol tmpcol, *mcol;
- int shift= 0; // XXX
+ int dir= RNA_enum_get(op->ptr, "direction");
if (!EM_vertColorCheck(em)) {
- BKE_report(op->reports, RPT_ERROR, "mesh has no color layers");
+ BKE_report(op->reports, RPT_ERROR, "Mesh has no color layers.");
BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_CANCELLED;
}
- ccw = (shift);
-
for(efa=em->faces.first; efa; efa=efa->next) {
if (efa->f & SELECT) {
mcol = CustomData_em_get(&em->fdata, efa->data, CD_MCOL);
tmpcol= mcol[0];
- if (ccw) {
+ if (dir == DIRECTION_CCW) {
if(efa->v4) {
mcol[0]= mcol[3];
mcol[3]= mcol[2];
@@ -6364,25 +6494,28 @@ static int mesh_rotate_colors(bContext *C, wmOperator *op)
}
}
- if (change) {
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- }
-
BKE_mesh_end_editmesh(obedit->data, em);
+
+ if(!change)
+ return OPERATOR_CANCELLED;
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
return OPERATOR_FINISHED;
}
static int mesh_mirror_colors(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
EditFace *efa;
- short change = 0, altaxis;
+ short change = 0;
MCol tmpcol, *mcol;
- int shift= 0; // XXX
+ int axis= RNA_enum_get(op->ptr, "axis");
if (!EM_vertColorCheck(em)) {
BKE_report(op->reports, RPT_ERROR, "Mesh has no color layers");
@@ -6390,12 +6523,10 @@ static int mesh_mirror_colors(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
- altaxis = (shift);
-
for(efa=em->faces.first; efa; efa=efa->next) {
if (efa->f & SELECT) {
mcol = CustomData_em_get(&em->fdata, efa->data, CD_MCOL);
- if (altaxis) {
+ if (axis == AXIS_Y) {
tmpcol= mcol[1];
mcol[1]= mcol[2];
mcol[2]= tmpcol;
@@ -6420,12 +6551,14 @@ static int mesh_mirror_colors(bContext *C, wmOperator *op)
}
}
- if (change) {
-// DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- }
-
BKE_mesh_end_editmesh(obedit->data, em);
+
+ if(!change)
+ return OPERATOR_CANCELLED;
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
return OPERATOR_FINISHED;
}
@@ -6441,6 +6574,9 @@ void MESH_OT_uvs_rotate(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* props */
+ RNA_def_enum(ot->srna, "direction", direction_items, DIRECTION_CW, "Direction", "Direction to rotate UVs around.");
}
void MESH_OT_uvs_mirror(wmOperatorType *ot)
@@ -6455,6 +6591,9 @@ void MESH_OT_uvs_mirror(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* props */
+ RNA_def_enum(ot->srna, "axis", axis_items, DIRECTION_CW, "Axis", "Axis to mirror UVs around.");
}
void MESH_OT_colors_rotate(wmOperatorType *ot)
@@ -6469,6 +6608,9 @@ void MESH_OT_colors_rotate(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* props */
+ RNA_def_enum(ot->srna, "direction", direction_items, DIRECTION_CW, "Direction", "Direction to rotate edge around.");
}
void MESH_OT_colors_mirror(wmOperatorType *ot)
@@ -6483,197 +6625,56 @@ void MESH_OT_colors_mirror(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-
-static int subdivide_exec(bContext *C, wmOperator *op)
-{
- Object *obedit= CTX_data_edit_object(C);
- Scene *scene = CTX_data_scene(C);
- EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
- esubdivideflag(obedit, em, 1, 0.0, scene->toolsettings->editbutflag, 1, 0);
-
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
-
- BKE_mesh_end_editmesh(obedit->data, em);
- return OPERATOR_FINISHED;
+ /* props */
+ RNA_def_enum(ot->srna, "axis", axis_items, DIRECTION_CW, "Axis", "Axis to mirror colors around.");
}
-void MESH_OT_subdivide(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Subdivide";
- ot->idname= "MESH_OT_subdivide";
-
- /* api callbacks */
- ot->exec= subdivide_exec;
- ot->poll= ED_operator_editmesh;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
+/********************** Subdivide Operator *************************/
-static int subdivide_multi_exec(bContext *C, wmOperator *op)
-{
- Object *obedit= CTX_data_edit_object(C);
+static int subdivide_exec(bContext *C, wmOperator *op)
+{
Scene *scene = CTX_data_scene(C);
- EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
-
- esubdivideflag(obedit, em, 1, 0.0, scene->toolsettings->editbutflag, RNA_int_get(op->ptr,"number_cuts"), 0);
-
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
-
- BKE_mesh_end_editmesh(obedit->data, em);
- return OPERATOR_FINISHED;
-}
-
-void MESH_OT_subdivide_multi(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Subdivide Multi";
- ot->idname= "MESH_OT_subdivide_multi";
-
- /* api callbacks */
- ot->exec= subdivide_multi_exec;
- ot->poll= ED_operator_editmesh;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- /* props */
- RNA_def_int(ot->srna, "number_cuts", 4, 1, 100, "Number of Cuts", "", 1, INT_MAX);
-}
-
-static int subdivide_multi_fractal_exec(bContext *C, wmOperator *op)
-{
Object *obedit= CTX_data_edit_object(C);
- Scene *scene = CTX_data_scene(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
+ int cuts= RNA_int_get(op->ptr,"number_cuts");
+ float smooth= 0.292f*RNA_float_get(op->ptr, "smoothness");
+ float fractal= RNA_float_get(op->ptr, "fractal")/100;
+ int flag= 0;
- esubdivideflag(obedit, em, 1, -(RNA_float_get(op->ptr, "random_factor")/100), scene->toolsettings->editbutflag, RNA_int_get(op->ptr, "number_cuts"), 0);
-
- WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
-
- BKE_mesh_end_editmesh(obedit->data, em);
- return OPERATOR_FINISHED;
-}
+ if(smooth != 0.0f)
+ flag |= B_SMOOTH;
+ if(fractal != 0.0f)
+ flag |= B_FRACTAL;
-void MESH_OT_subdivide_multi_fractal(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Subdivide Multi Fractal";
- ot->idname= "MESH_OT_subdivide_multi_fractal";
-
- /* api callbacks */
- ot->exec= subdivide_multi_fractal_exec;
- ot->poll= ED_operator_editmesh;
+ esubdivideflag(obedit, em, 1, smooth, fractal, scene->toolsettings->editbutflag|flag, cuts, 0);
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- /* properties */
- RNA_def_int(ot->srna, "number_cuts", 4, 1, 100, "Number of Cuts", "", 1, INT_MAX);
- RNA_def_float(ot->srna, "random_factor", 5.0, 0.0f, FLT_MAX, "Random Factor", "", 0.0f, 1000.0f);
-}
-
-static int subdivide_smooth_exec(bContext *C, wmOperator *op)
-{
- Object *obedit= CTX_data_edit_object(C);
- Scene *scene = CTX_data_scene(C);
- EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
-
- esubdivideflag(obedit, em, 1, 0.292f*RNA_float_get(op->ptr, "smoothness"), scene->toolsettings->editbutflag | B_SMOOTH, 1, 0);
-
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
- return OPERATOR_FINISHED;
-}
-
-void MESH_OT_subdivide_smooth(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Subdivide Smooth";
- ot->idname= "MESH_OT_subdivide_smooth";
-
- /* api callbacks */
- ot->exec= subdivide_smooth_exec;
- ot->poll= ED_operator_editmesh;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
- /* props */
- RNA_def_float(ot->srna, "smoothness", 1.0f, 0.0f, 1000.0f, "Smoothness", "", 0.0f, FLT_MAX);
-}
-
-static int subdivs_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- uiPopupMenu *pup;
- uiLayout *layout;
-
- pup= uiPupMenuBegin(C, "Subdivision Type", 0);
- layout= uiPupMenuLayout(pup);
- uiItemsEnumO(layout, "MESH_OT_subdivs", "type");
- uiPupMenuEnd(C, pup);
-
- return OPERATOR_CANCELLED;
-}
-
-static int subdivs_exec(bContext *C, wmOperator *op)
-{
- switch(RNA_int_get(op->ptr, "type"))
- {
- case 0: // simple
- subdivide_exec(C,op);
- break;
- case 1: // multi
- subdivide_multi_exec(C,op);
- break;
- case 2: // fractal;
- subdivide_multi_fractal_exec(C,op);
- break;
- case 3: //smooth
- subdivide_smooth_exec(C,op);
- break;
- }
-
return OPERATOR_FINISHED;
}
-void MESH_OT_subdivs(wmOperatorType *ot)
+void MESH_OT_subdivide(wmOperatorType *ot)
{
- static EnumPropertyItem type_items[]= {
- {0, "SIMPLE", 0, "Simple", ""},
- {1, "MULTI", 0, "Multi", ""},
- {2, "FRACTAL", 0, "Fractal", ""},
- {3, "SMOOTH", 0, "Smooth", ""},
- {0, NULL, 0, NULL, NULL}};
-
/* identifiers */
- ot->name= "subdivs";
- ot->idname= "MESH_OT_subdivs";
+ ot->name= "Subdivide";
+ ot->idname= "MESH_OT_subdivide";
/* api callbacks */
- ot->invoke= subdivs_invoke;
- ot->exec= subdivs_exec;
-
+ ot->exec= subdivide_exec;
ot->poll= ED_operator_editmesh;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
- /*props */
- RNA_def_enum(ot->srna, "type", type_items, 0, "Type", "");
-
- /* this is temp, the ops are different, but they are called from subdivs, so all the possible props should be here as well*/
- RNA_def_int(ot->srna, "number_cuts", 4, 1, 10, "Number of Cuts", "", 1, INT_MAX);
- RNA_def_float(ot->srna, "random_factor", 5.0, 0.0f, FLT_MAX, "Random Factor", "", 0.0f, 1000.0f);
- RNA_def_float(ot->srna, "smoothness", 1.0f, 0.0f, 1000.0f, "Smoothness", "", 0.0f, FLT_MAX);
-
+ /* properties */
+ RNA_def_int(ot->srna, "number_cuts", 1, 1, 10, "Number of Cuts", "", 1, INT_MAX);
+ RNA_def_float(ot->srna, "fractal", 0.0, 0.0f, FLT_MAX, "Fractal", "Fractal randomness factor.", 0.0f, 1000.0f);
+ RNA_def_float(ot->srna, "smoothness", 0.0f, 0.0f, 1000.0f, "Smoothness", "Smoothness factor.", 0.0f, FLT_MAX);
}
-/* ************************************* */
+/********************** Fill Operators *************************/
/* note; the EM_selectmode_set() calls here illustrate how badly constructed it all is... from before the
edge/face flags, with very mixed results.... */
@@ -6919,18 +6920,19 @@ static void fill_mesh(EditMesh *em)
}
-
static int fill_mesh_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
fill_mesh(em);
- DAG_object_flush_update(CTX_data_scene(C), obedit, OB_RECALC_DATA);
-
+
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
@@ -6938,7 +6940,7 @@ static int fill_mesh_exec(bContext *C, wmOperator *op)
void MESH_OT_fill(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Fill Mesh";
+ ot->name= "Fill";
ot->idname= "MESH_OT_fill";
/* api callbacks */
@@ -6951,14 +6953,17 @@ void MESH_OT_fill(wmOperatorType *ot)
static int beauty_fill_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
beauty_fill(em);
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
@@ -6976,13 +6981,17 @@ void MESH_OT_beauty_fill(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/********************** Quad/Tri Operators *************************/
+
static int quads_convert_to_tris_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
convert_to_triface(em,0);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
BKE_mesh_end_editmesh(obedit->data, em);
@@ -7005,11 +7014,13 @@ void MESH_OT_quads_convert_to_tris(wmOperatorType *ot)
static int tris_convert_to_quads_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
join_triangles(em);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
BKE_mesh_end_editmesh(obedit->data, em);
@@ -7032,11 +7043,13 @@ void MESH_OT_tris_convert_to_quads(wmOperatorType *ot)
static int edge_flip_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
edge_flip(em);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
BKE_mesh_end_editmesh(obedit->data, em);
@@ -7057,23 +7070,42 @@ void MESH_OT_edge_flip(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/********************** Smooth/Solid Operators *************************/
+
+void mesh_set_smooth_faces(EditMesh *em, short smooth)
+{
+ EditFace *efa;
+
+ if(em==NULL) return;
+
+ for(efa= em->faces.first; efa; efa=efa->next) {
+ if(efa->f & SELECT) {
+ if(smooth) efa->flag |= ME_SMOOTH;
+ else efa->flag &= ~ME_SMOOTH;
+ }
+ }
+}
+
static int mesh_faces_shade_smooth_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
- mesh_set_smooth_faces(em,1);
+ mesh_set_smooth_faces(em, 1);
+ BKE_mesh_end_editmesh(obedit->data, em);
+
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
void MESH_OT_faces_shade_smooth(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Smooth Face Shading";
+ ot->name= "Shade Smooth";
ot->idname= "MESH_OT_faces_shade_smooth";
/* api callbacks */
@@ -7086,21 +7118,22 @@ void MESH_OT_faces_shade_smooth(wmOperatorType *ot)
static int mesh_faces_shade_solid_exec(bContext *C, wmOperator *op)
{
+ Scene *scene = CTX_data_scene(C);
Object *obedit= CTX_data_edit_object(C);
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
- mesh_set_smooth_faces(em,0);
+ mesh_set_smooth_faces(em, 0);
+ DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
- BKE_mesh_end_editmesh(obedit->data, em);
return OPERATOR_FINISHED;
}
void MESH_OT_faces_shade_solid(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Flat Face Shading";
+ ot->name= "Shade Flat";
ot->idname= "MESH_OT_faces_shade_solid";
/* api callbacks */
@@ -7110,3 +7143,4 @@ void MESH_OT_faces_shade_solid(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+
diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h
index 22e3b4060a4..6e098e04a14 100644
--- a/source/blender/editors/mesh/mesh_intern.h
+++ b/source/blender/editors/mesh/mesh_intern.h
@@ -82,8 +82,10 @@ void MESH_OT_primitive_grid_add(struct wmOperatorType *ot);
void MESH_OT_primitive_monkey_add(struct wmOperatorType *ot);
void MESH_OT_primitive_uv_sphere_add(struct wmOperatorType *ot);
void MESH_OT_primitive_ico_sphere_add(struct wmOperatorType *ot);
-void MESH_OT_dupli_extrude_cursor(struct wmOperatorType *ot);
+
void MESH_OT_edge_face_add(struct wmOperatorType *ot);
+void MESH_OT_dupli_extrude_cursor(struct wmOperatorType *ot);
+void MESH_OT_duplicate(struct wmOperatorType *ot);
void MESH_OT_fgon_make(struct wmOperatorType *ot);
void MESH_OT_fgon_clear(struct wmOperatorType *ot);
@@ -149,19 +151,18 @@ void MESH_OT_loop_select(struct wmOperatorType *ot);
void MESH_OT_select_all_toggle(struct wmOperatorType *ot);
void MESH_OT_select_more(struct wmOperatorType *ot);
void MESH_OT_select_less(struct wmOperatorType *ot);
-void MESH_OT_select_invert(struct wmOperatorType *ot);
+void MESH_OT_select_inverse(struct wmOperatorType *ot);
void MESH_OT_select_non_manifold(struct wmOperatorType *ot);
void MESH_OT_select_linked(struct wmOperatorType *ot);
void MESH_OT_select_linked_pick(struct wmOperatorType *ot);
void MESH_OT_hide(struct wmOperatorType *ot);
void MESH_OT_reveal(struct wmOperatorType *ot);
+void MESH_OT_select_by_number_vertices(struct wmOperatorType *ot);
void MESH_OT_normals_make_consistent(struct wmOperatorType *ot);
void MESH_OT_faces_select_linked_flat(struct wmOperatorType *ot);
void MESH_OT_edges_select_sharp(struct wmOperatorType *ot);
void MESH_OT_select_shortest_path(struct wmOperatorType *ot);
-void MESH_OT_vertices_select_similar(struct wmOperatorType *ot);
-void MESH_OT_edges_select_similar(struct wmOperatorType *ot);
-void MESH_OT_faces_select_similar(struct wmOperatorType *ot);
+void MESH_OT_select_similar(struct wmOperatorType *ot);
void MESH_OT_select_random(struct wmOperatorType *ot);
void MESH_OT_vertices_transform_to_sphere(struct wmOperatorType *ot);
void MESH_OT_selection_type(struct wmOperatorType *ot);
@@ -169,7 +170,7 @@ void MESH_OT_loop_multi_select(struct wmOperatorType *ot);
void MESH_OT_mark_seam(struct wmOperatorType *ot);
void MESH_OT_mark_sharp(struct wmOperatorType *ot);
void MESH_OT_vertices_smooth(struct wmOperatorType *ot);
-void MESH_OT_flip_editnormals(struct wmOperatorType *ot);
+void MESH_OT_flip_normals(struct wmOperatorType *ot);
extern EditEdge *findnearestedge(ViewContext *vc, int *dist);
extern void EM_automerge(int update);
@@ -200,14 +201,11 @@ extern EditVert *findnearestvert(ViewContext *vc, int *dist, short sel, short st
void join_triangles(EditMesh *em);
int removedoublesflag(EditMesh *em, short flag, short automerge, float limit); /* return amount */
-void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beauty, int numcuts, int seltype);
+void esubdivideflag(Object *obedit, EditMesh *em, int flag, float smooth, float fractal, int beauty, int numcuts, int seltype);
int EdgeSlide(EditMesh *em, wmOperator *op, short immediate, float imperc);
+void MESH_OT_merge(struct wmOperatorType *ot);
void MESH_OT_subdivide(struct wmOperatorType *ot);
-void MESH_OT_subdivs(struct wmOperatorType *ot);
-void MESH_OT_subdivide_multi(struct wmOperatorType *ot);
-void MESH_OT_subdivide_multi_fractal(struct wmOperatorType *ot);
-void MESH_OT_subdivide_smooth(struct wmOperatorType *ot);
void MESH_OT_remove_doubles(struct wmOperatorType *ot);
void MESH_OT_extrude(struct wmOperatorType *ot);
void MESH_OT_spin(struct wmOperatorType *ot);
@@ -223,6 +221,7 @@ void MESH_OT_faces_shade_solid(struct wmOperatorType *ot);
void MESH_OT_split(struct wmOperatorType *ot);
void MESH_OT_extrude_repeat(struct wmOperatorType *ot);
void MESH_OT_edge_rotate(struct wmOperatorType *ot);
+void MESH_OT_select_vertex_path(struct wmOperatorType *ot);
void MESH_OT_loop_to_region(struct wmOperatorType *ot);
void MESH_OT_region_to_loop(struct wmOperatorType *ot);
diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c
index 2a9357ed0f0..6bc2f240859 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -54,64 +54,186 @@
#include "WM_api.h"
#include "WM_types.h"
-#include "ED_screen.h"
#include "ED_mesh.h"
+#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_view3d.h"
-#include "BIF_transform.h"
+#include "UI_interface.h"
#include "mesh_intern.h"
+/******************************** menus *************************************/
-static int mesh_add_duplicate_exec(bContext *C, wmOperator *op)
+static int vertex_specials_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- Object *ob= CTX_data_edit_object(C);
- EditMesh *em= BKE_mesh_get_editmesh(ob->data);
+ uiPopupMenu *pup;
+ uiLayout *layout;
+
+ pup= uiPupMenuBegin(C, "Vertex Specials", 0);
+ layout= uiPupMenuLayout(pup);
+ uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_REGION_WIN);
- adduplicateflag(em, SELECT);
+ uiItemO(layout, "Remove Doubles", 0, "MESH_OT_remove_doubles");
+ uiItemO(layout, "Merge...", 0, "MESH_OT_merge"); // mergmenu(em)
+ uiItemO(layout, "Smooth", 0, "MESH_OT_vertices_smooth");
+ uiItemO(layout, "Select Vertex Path", 0, "MESH_OT_select_vertex_path");
+ //uiItemO(layout, "Blend From Shape", 0, "MESH_OT_blend_from_shape");
+ //uiItemO(layout, "Propagate to All Shapes", 0, "MESH_OT_shape_propagate_to_all");
+
+ uiPupMenuEnd(C, pup);
- BKE_mesh_end_editmesh(ob->data, em);
- return OPERATOR_FINISHED;
+ return OPERATOR_CANCELLED;
}
-static int mesh_add_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static void MESH_OT_vertex_specials(wmOperatorType *ot)
{
- WM_cursor_wait(1);
- mesh_add_duplicate_exec(C, op);
- WM_cursor_wait(0);
+ /* identifiers */
+ ot->name= "Vertex Specials";
+ ot->idname= "MESH_OT_vertex_specials";
- RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
- WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ /* api callbacks */
+ ot->invoke= vertex_specials_invoke;
+ ot->poll= ED_operator_editmesh;
+}
+
+static int edge_specials_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ uiPopupMenu *pup;
+ uiLayout *layout;
+
+ pup= uiPupMenuBegin(C, "Edge Specials", 0);
+ layout= uiPupMenuLayout(pup);
+ uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_REGION_WIN);
+
+ uiItemO(layout, "Mark Seam", 0, "MESH_OT_mark_seam");
+ uiItemBooleanO(layout, "Clear Seam", 0, "MESH_OT_mark_seam", "clear", 1);
+ uiItemEnumO(layout, "Rotate Edge CW", 0, "MESH_OT_edge_rotate", "direction", 1);
+ uiItemEnumO(layout, "Rotate Edge CCW", 0, "MESH_OT_edge_rotate", "direction", 2);
+ //uiItemO(layout, "Loopcut", 0, "MESH_OT_loop_cut"); // CutEdgeloop(em, 1);
+ //uiItemO(layout, "Edge Slide", 0, "MESH_OT_edge_slide"); // EdgeSlide(em, 0,0.0);
+ uiItemO(layout, "Edge Loop", 0, "MESH_OT_loop_multi_select");
+ uiItemBooleanO(layout, "Edge Ring", 0, "MESH_OT_loop_multi_select", "ring", 1);
+ uiItemO(layout, NULL, 0, "MESH_OT_loop_to_region");
+ uiItemO(layout, NULL, 0, "MESH_OT_region_to_loop");
+ uiItemO(layout, "Mark Sharp", 0, "MESH_OT_mark_sharp");
+ uiItemBooleanO(layout, "Clear Sharp", 0, "MESH_OT_mark_sharp", "clear", 1);
+
+ uiPupMenuEnd(C, pup);
+
+ return OPERATOR_CANCELLED;
+}
+
+static void MESH_OT_edge_specials(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Edge Specials";
+ ot->idname= "MESH_OT_edge_specials";
- return OPERATOR_FINISHED;
+ /* api callbacks */
+ ot->invoke= edge_specials_invoke;
+ ot->poll= ED_operator_editmesh;
}
-static void MESH_OT_duplicate_add(wmOperatorType *ot)
+static int face_specials_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
+ uiPopupMenu *pup;
+ uiLayout *layout;
+
+ pup= uiPupMenuBegin(C, "Face Specials", 0);
+ layout= uiPupMenuLayout(pup);
+ uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_REGION_WIN);
+
+ uiItemO(layout, NULL, 0, "MESH_OT_flip_normals");
+ // uiItemO(layout, "Bevel", 0, "MESH_OT_bevel"); // bevelmenu(em)
+ uiItemO(layout, NULL, 0, "MESH_OT_faces_shade_smooth");
+ uiItemO(layout, NULL, 0, "MESH_OT_faces_shade_solid");
+ uiItemO(layout, NULL, 0, "MESH_OT_quads_convert_to_tris");
+ uiItemO(layout, NULL, 0, "MESH_OT_tris_convert_to_quads");
+ uiItemO(layout, NULL, 0, "MESH_OT_edge_flip");
+
+ uiItemS(layout);
+
+ uiItemO(layout, NULL, 0, "MESH_OT_fill");
+ uiItemO(layout, NULL, 0, "MESH_OT_beauty_fill");
+
+ uiItemS(layout);
+
+ // uiItemO(layout, NULL, 0, "MESH_OT_face_mode"); // mesh_set_face_flags(em, 1);
+ // uiItemBooleanO(layout, NULL, 0, "MESH_OT_face_mode", "clear", 1); // mesh_set_face_flags(em, 0);
+ //
+ // uiItemS(layout);
+
+ uiItemMenuEnumO(layout, NULL, 0, "MESH_OT_uvs_rotate", "direction");
+ uiItemMenuEnumO(layout, NULL, 0, "MESH_OT_uvs_mirror", "axis");
+ uiItemMenuEnumO(layout, NULL, 0, "MESH_OT_colors_rotate", "direction");
+ uiItemMenuEnumO(layout, NULL, 0, "MESH_OT_colors_mirror", "axis");
+
+ uiPupMenuEnd(C, pup);
+ return OPERATOR_CANCELLED;
+}
+
+static void MESH_OT_face_specials(wmOperatorType *ot)
+{
/* identifiers */
- ot->name= "Add Duplicate";
- ot->idname= "MESH_OT_duplicate_add";
+ ot->name= "Face Specials";
+ ot->idname= "MESH_OT_face_specials";
/* api callbacks */
- ot->invoke= mesh_add_duplicate_invoke;
- ot->exec= mesh_add_duplicate_exec;
-
+ ot->invoke= face_specials_invoke;
ot->poll= ED_operator_editmesh;
+}
+
+static int specials_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ uiPopupMenu *pup;
+ uiLayout *layout;
+
+ pup= uiPupMenuBegin(C, "Specials", 0);
+ layout= uiPupMenuLayout(pup);
+ uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_REGION_WIN);
+
+ uiItemO(layout, "Subdivide", 0, "MESH_OT_subdivide");
+ uiItemFloatO(layout, "Subdivide Smooth", 0, "MESH_OT_subdivide", "smoothness", 1.0f);
+ uiItemO(layout, "Merge...", 0, "MESH_OT_merge");
+ uiItemO(layout, "Remove Doubles", 0, "MESH_OT_remove_doubles");
+ uiItemO(layout, "Hide", 0, "MESH_OT_hide");
+ uiItemO(layout, "Reveal", 0, "MESH_OT_reveal");
+ uiItemO(layout, "Select Inverse", 0, "MESH_OT_select_inverse");
+ uiItemO(layout, NULL, 0, "MESH_OT_flip_normals");
+ uiItemO(layout, "Smooth", 0, "MESH_OT_vertices_smooth");
+ // uiItemO(layout, "Bevel", 0, "MESH_OT_bevel"); // bevelmenu(em)
+ uiItemO(layout, NULL, 0, "MESH_OT_faces_shade_smooth");
+ uiItemO(layout, NULL, 0, "MESH_OT_faces_shade_solid");
+ //uiItemO(layout, "Blend From Shape", 0, "MESH_OT_blend_from_shape");
+ //uiItemO(layout, "Propagate to All Shapes", 0, "MESH_OT_shape_propagate_to_all");
+ uiItemO(layout, "Select Vertex Path", 0, "MESH_OT_select_vertex_path");
+
+ uiPupMenuEnd(C, pup);
- /* to give to transform */
- RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX);
+ return OPERATOR_CANCELLED;
}
+static void MESH_OT_specials(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Specials";
+ ot->idname= "MESH_OT_specials";
+
+ /* api callbacks */
+ ot->invoke= specials_invoke;
+ ot->poll= ED_operator_editmesh;
+}
-/* ************************** registration **********************************/
+/**************************** registration **********************************/
void ED_operatortypes_mesh(void)
{
WM_operatortype_append(MESH_OT_select_all_toggle);
WM_operatortype_append(MESH_OT_select_more);
WM_operatortype_append(MESH_OT_select_less);
- WM_operatortype_append(MESH_OT_select_invert);
+ WM_operatortype_append(MESH_OT_select_inverse);
WM_operatortype_append(MESH_OT_select_non_manifold);
WM_operatortype_append(MESH_OT_select_linked);
WM_operatortype_append(MESH_OT_select_linked_pick);
@@ -119,12 +241,10 @@ void ED_operatortypes_mesh(void)
WM_operatortype_append(MESH_OT_selection_type);
WM_operatortype_append(MESH_OT_hide);
WM_operatortype_append(MESH_OT_reveal);
+ WM_operatortype_append(MESH_OT_select_by_number_vertices);
WM_operatortype_append(MESH_OT_normals_make_consistent);
+ WM_operatortype_append(MESH_OT_merge);
WM_operatortype_append(MESH_OT_subdivide);
- WM_operatortype_append(MESH_OT_subdivide_multi);
- WM_operatortype_append(MESH_OT_subdivide_multi_fractal);
- WM_operatortype_append(MESH_OT_subdivide_smooth);
- WM_operatortype_append(MESH_OT_subdivs);
WM_operatortype_append(MESH_OT_faces_select_linked_flat);
WM_operatortype_append(MESH_OT_edges_select_sharp);
WM_operatortype_append(MESH_OT_primitive_plane_add);
@@ -139,7 +259,7 @@ void ED_operatortypes_mesh(void)
WM_operatortype_append(MESH_OT_primitive_ico_sphere_add);
WM_operatortype_append(MESH_OT_fgon_clear);
WM_operatortype_append(MESH_OT_fgon_make);
- WM_operatortype_append(MESH_OT_duplicate_add);
+ WM_operatortype_append(MESH_OT_duplicate);
WM_operatortype_append(MESH_OT_remove_doubles);
WM_operatortype_append(MESH_OT_extrude);
WM_operatortype_append(MESH_OT_spin);
@@ -149,6 +269,7 @@ void ED_operatortypes_mesh(void)
WM_operatortype_append(MESH_OT_split);
WM_operatortype_append(MESH_OT_extrude_repeat);
WM_operatortype_append(MESH_OT_edge_rotate);
+ WM_operatortype_append(MESH_OT_select_vertex_path);
WM_operatortype_append(MESH_OT_loop_to_region);
WM_operatortype_append(MESH_OT_region_to_loop);
@@ -172,14 +293,12 @@ void ED_operatortypes_mesh(void)
WM_operatortype_append(MESH_OT_loop_select);
WM_operatortype_append(MESH_OT_edge_face_add);
WM_operatortype_append(MESH_OT_select_shortest_path);
- WM_operatortype_append(MESH_OT_vertices_select_similar);
- WM_operatortype_append(MESH_OT_edges_select_similar);
- WM_operatortype_append(MESH_OT_faces_select_similar);
+ WM_operatortype_append(MESH_OT_select_similar);
WM_operatortype_append(MESH_OT_loop_multi_select);
WM_operatortype_append(MESH_OT_mark_seam);
WM_operatortype_append(MESH_OT_mark_sharp);
WM_operatortype_append(MESH_OT_vertices_smooth);
- WM_operatortype_append(MESH_OT_flip_editnormals);
+ WM_operatortype_append(MESH_OT_flip_normals);
WM_operatortype_append(MESH_OT_knife_cut);
WM_operatortype_append(MESH_OT_rip);
@@ -189,6 +308,11 @@ void ED_operatortypes_mesh(void)
WM_operatortype_append(MESH_OT_vertex_color_remove);
WM_operatortype_append(MESH_OT_sticky_add);
WM_operatortype_append(MESH_OT_sticky_remove);
+
+ WM_operatortype_append(MESH_OT_vertex_specials);
+ WM_operatortype_append(MESH_OT_edge_specials);
+ WM_operatortype_append(MESH_OT_face_specials);
+ WM_operatortype_append(MESH_OT_specials);
}
/* note mesh keymap also for other space? */
@@ -213,7 +337,7 @@ void ED_keymap_mesh(wmWindowManager *wm)
WM_keymap_add_item(keymap, "MESH_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "MESH_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_select_non_manifold", MKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0);
WM_keymap_add_item(keymap, "MESH_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0);
@@ -223,19 +347,9 @@ void ED_keymap_mesh(wmWindowManager *wm)
RNA_float_set(WM_keymap_add_item(keymap, "MESH_OT_faces_select_linked_flat", FKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0)->ptr,"sharpness",135.0);
RNA_float_set(WM_keymap_add_item(keymap, "MESH_OT_edges_select_sharp", SKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0)->ptr,"sharpness",135.0);
- WM_keymap_add_item(keymap, "MESH_OT_select_random", SPACEKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_vertices_transform_to_sphere", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT , 0);
- WM_keymap_add_item(keymap, "MESH_OT_mark_seam", ONEKEY, KM_PRESS, KM_CTRL , 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_mark_seam", ONEKEY, KM_PRESS, KM_ALT , 0)->ptr,"clear",1);
-
- WM_keymap_add_item(keymap, "MESH_OT_mark_sharp", TWOKEY, KM_PRESS, KM_CTRL , 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_mark_sharp", TWOKEY, KM_PRESS, KM_ALT , 0)->ptr,"set",1);
-
- /* temp hotkeys! */
- WM_keymap_add_item(keymap, "MESH_OT_vertices_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "MESH_OT_edges_select_similar", GKEY, KM_PRESS, KM_SHIFT2|KM_CTRL, 0);
- WM_keymap_add_item(keymap, "MESH_OT_faces_select_similar", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL2, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0);
/* selection mode */
WM_keymap_add_item(keymap, "MESH_OT_selection_type", TABKEY, KM_PRESS, KM_CTRL, 0);
@@ -248,24 +362,17 @@ void ED_keymap_mesh(wmWindowManager *wm)
/* tools */
WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_CTRL, 0);
RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_normals_make_consistent", NKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "inside", 1);
- WM_keymap_add_item(keymap, "MESH_OT_vertices_smooth", THREEKEY, KM_PRESS, KM_CTRL , 0);
- WM_keymap_add_item(keymap, "MESH_OT_flip_editnormals", THREEKEY, KM_PRESS, KM_ALT , 0);
- WM_keymap_add_item(keymap, "MESH_OT_subdivs", WKEY, KM_PRESS, 0, 0); // this is the menu
- /*WM_keymap_add_item(keymap, "MESH_OT_subdivide_multi", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
- WM_keymap_add_item(keymap, "MESH_OT_subdivide_multi_fractal", WKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "MESH_OT_subdivide_smooth", WKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);*/
- WM_keymap_add_item(keymap, "MESH_OT_remove_doubles", VKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_extrude", EKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_spin", RKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "MESH_OT_screw", NINEKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "VIEW3D_OT_editmesh_face_toolbox", FKEY, KM_PRESS, KM_CTRL, 0); /* operators below are in this toolbox */
WM_keymap_add_item(keymap, "MESH_OT_fill", FKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "MESH_OT_beauty_fill", FKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_tris_convert_to_quads", JKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_edge_flip", FKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_split", FOURKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "MESH_OT_extrude_repeat", FOURKEY, KM_PRESS, KM_ALT, 0);
@@ -283,7 +390,7 @@ void ED_keymap_mesh(wmWindowManager *wm)
/* add/remove */
WM_keymap_add_item(keymap, "MESH_OT_edge_face_add", FKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "MESH_OT_duplicate_add", DKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_mesh_add", AKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, KM_SHIFT, 0);
/* use KM_RELEASE because same key is used for tweaks */
@@ -295,6 +402,12 @@ void ED_keymap_mesh(wmWindowManager *wm)
WM_keymap_add_item(keymap, "MESH_OT_fgon_clear", FKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0);
WM_keymap_add_item(keymap, "MESH_OT_knife_cut", LEFTMOUSE, KM_PRESS, KM_ALT|KM_CTRL, 0);
+
+ /* menus */
+ WM_keymap_add_item(keymap, "MESH_OT_vertex_specials", VKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_edge_specials", EKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_face_specials", FKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_specials", WKEY, KM_PRESS, 0, 0);
/* UV's */
WM_keymap_add_item(keymap, "UV_OT_mapping_menu", UKEY, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/object/editkey.c b/source/blender/editors/object/editkey.c
index 1c31c7c7653..f38c03fb284 100644
--- a/source/blender/editors/object/editkey.c
+++ b/source/blender/editors/object/editkey.c
@@ -78,10 +78,6 @@
#include "object_intern.h"
-/* XXX */
-static void BIF_undo_push() {}
-/* XXX */
-
#if 0 // XXX old animation system
static void default_key_ipo(Scene *scene, Key *key)
{
@@ -117,7 +113,7 @@ static void default_key_ipo(Scene *scene, Key *key)
#endif // XXX old animation system
-/* **************************************** */
+/************************* Mesh ************************/
void mesh_to_key(Mesh *me, KeyBlock *kb)
{
@@ -213,7 +209,7 @@ void insert_meshkey(Scene *scene, Mesh *me, short rel)
mesh_to_key(me, kb);
}
-/* ******************** */
+/************************* Lattice ************************/
void latt_to_key(Lattice *lt, KeyBlock *kb)
{
@@ -271,7 +267,7 @@ void insert_lattkey(Scene *scene, Lattice *lt, short rel)
latt_to_key(lt, kb);
}
-/* ******************************** */
+/************************* Curve ************************/
void curve_to_key(Curve *cu, KeyBlock *kb, ListBase *nurb)
{
@@ -383,7 +379,7 @@ void insert_curvekey(Scene *scene, Curve *cu, short rel)
if(cu->key==NULL) {
cu->key= add_key( (ID *)cu);
- if (rel)
+ if(rel)
cu->key->type = KEY_RELATIVE;
// else
// default_key_ipo(scene, cu->key); // XXX old animation system
@@ -396,17 +392,34 @@ void insert_curvekey(Scene *scene, Curve *cu, short rel)
else curve_to_key(cu, kb, &cu->nurb);
}
+/*********************** add shape key ***********************/
+
+void ED_object_shape_key_add(bContext *C, Scene *scene, Object *ob)
+{
+ Key *key;
+
+ if(ob->type==OB_MESH) insert_meshkey(scene, ob->data, 1);
+ else if ELEM(ob->type, OB_CURVE, OB_SURF) insert_curvekey(scene, ob->data, 1);
+ else if(ob->type==OB_LATTICE) insert_lattkey(scene, ob->data, 1);
-/* ******************** */
+ key= ob_get_key(ob);
+ ob->shapenr= BLI_countlist(&key->block);
-void delete_key(Scene *scene, Object *ob)
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+}
+
+/*********************** remove shape key ***********************/
+
+int ED_object_shape_key_remove(bContext *C, Scene *scene, Object *ob)
{
+ Main *bmain= CTX_data_main(C);
KeyBlock *kb, *rkb;
Key *key;
//IpoCurve *icu;
-
+
key= ob_get_key(ob);
- if(key==NULL) return;
+ if(key==NULL)
+ return 0;
kb= BLI_findlink(&key->block, ob->shapenr-1);
@@ -417,15 +430,15 @@ void delete_key(Scene *scene, Object *ob)
BLI_remlink(&key->block, kb);
key->totkey--;
- if(key->refkey== kb) key->refkey= key->block.first;
+ if(key->refkey== kb)
+ key->refkey= key->block.first;
if(kb->data) MEM_freeN(kb->data);
MEM_freeN(kb);
- for(kb= key->block.first; kb; kb= kb->next) {
+ for(kb= key->block.first; kb; kb= kb->next)
if(kb->adrcode>=ob->shapenr)
kb->adrcode--;
- }
#if 0 // XXX old animation system
if(key->ipo) {
@@ -451,12 +464,13 @@ void delete_key(Scene *scene, Object *ob)
else if(GS(key->from->name)==ID_CU) ((Curve *)key->from)->key= NULL;
else if(GS(key->from->name)==ID_LT) ((Lattice *)key->from)->key= NULL;
- free_libblock_us(&(G.main->key), key);
+ free_libblock_us(&(bmain->key), key);
}
DAG_object_flush_update(scene, OBACT, OB_RECALC_DATA);
-
- BIF_undo_push("Delete Shapekey");
+ WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+
+ return 1;
}
/********************** shape key operators *********************/
@@ -465,19 +479,11 @@ static int shape_key_add_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
- Key *key;
if(!ob)
return OPERATOR_CANCELLED;
- if(ob->type==OB_MESH) insert_meshkey(scene, ob->data, 1);
- else if ELEM(ob->type, OB_CURVE, OB_SURF) insert_curvekey(scene, ob->data, 1);
- else if(ob->type==OB_LATTICE) insert_lattkey(scene, ob->data, 1);
-
- key= ob_get_key(ob);
- ob->shapenr= BLI_countlist(&key->block);
-
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+ ED_object_shape_key_add(C, scene, ob);
return OPERATOR_FINISHED;
}
@@ -499,67 +505,13 @@ static int shape_key_remove_exec(bContext *C, wmOperator *op)
{
Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
Scene *scene= CTX_data_scene(C);
- Main *bmain= CTX_data_main(C);
- KeyBlock *kb, *rkb;
- Key *key;
- //IpoCurve *icu;
if(!ob)
return OPERATOR_CANCELLED;
- key= ob_get_key(ob);
- if(key==NULL)
+ if(!ED_object_shape_key_remove(C, scene, ob))
return OPERATOR_CANCELLED;
- kb= BLI_findlink(&key->block, ob->shapenr-1);
-
- if(kb) {
- for(rkb= key->block.first; rkb; rkb= rkb->next)
- if(rkb->relative == ob->shapenr-1)
- rkb->relative= 0;
-
- BLI_remlink(&key->block, kb);
- key->totkey--;
- if(key->refkey== kb)
- key->refkey= key->block.first;
-
- if(kb->data) MEM_freeN(kb->data);
- MEM_freeN(kb);
-
- for(kb= key->block.first; kb; kb= kb->next)
- if(kb->adrcode>=ob->shapenr)
- kb->adrcode--;
-
-#if 0 // XXX old animation system
- if(key->ipo) {
-
- for(icu= key->ipo->curve.first; icu; icu= icu->next) {
- if(icu->adrcode==ob->shapenr-1) {
- BLI_remlink(&key->ipo->curve, icu);
- free_ipo_curve(icu);
- break;
- }
- }
- for(icu= key->ipo->curve.first; icu; icu= icu->next)
- if(icu->adrcode>=ob->shapenr)
- icu->adrcode--;
- }
-#endif // XXX old animation system
-
- if(ob->shapenr>1) ob->shapenr--;
- }
-
- if(key->totkey==0) {
- if(GS(key->from->name)==ID_ME) ((Mesh *)key->from)->key= NULL;
- else if(GS(key->from->name)==ID_CU) ((Curve *)key->from)->key= NULL;
- else if(GS(key->from->name)==ID_LT) ((Lattice *)key->from)->key= NULL;
-
- free_libblock_us(&(bmain->key), key);
- }
-
- DAG_object_flush_update(scene, OBACT, OB_RECALC_DATA);
- WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
-
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/object/editlattice.c b/source/blender/editors/object/editlattice.c
index 523f38dd432..3e30efd635a 100644
--- a/source/blender/editors/object/editlattice.c
+++ b/source/blender/editors/object/editlattice.c
@@ -52,6 +52,7 @@
#include "BKE_utildefines.h"
#include "ED_object.h"
+#include "ED_screen.h"
#include "ED_view3d.h"
#include "ED_util.h"
@@ -60,16 +61,15 @@
#include "object_intern.h"
-/* ***************************** */
-
-static int okee() {return 0;}
+/********************** Load/Make/Free ********************/
void free_editLatt(Object *ob)
{
Lattice *lt= ob->data;
if(lt->editlatt) {
- if(lt->editlatt->def) MEM_freeN(lt->editlatt->def);
+ if(lt->editlatt->def)
+ MEM_freeN(lt->editlatt->def);
if(lt->editlatt->dvert)
free_dverts(lt->editlatt->dvert, lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw);
@@ -78,27 +78,6 @@ void free_editLatt(Object *ob)
}
}
-
-static void setflagsLatt(Object *obedit, int flag)
-{
- Lattice *lt= obedit->data;
- BPoint *bp;
- int a;
-
- bp= lt->editlatt->def;
-
- a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
-
- while(a--) {
- if(bp->hide==0) {
- bp->f1= flag;
- }
- bp++;
- }
-}
-
-
-
void make_editLatt(Object *obedit)
{
Lattice *lt= obedit->data;
@@ -108,10 +87,9 @@ void make_editLatt(Object *obedit)
lt= obedit->data;
- actkey = ob_get_keyblock(obedit);
- if(actkey) {
+ actkey= ob_get_keyblock(obedit);
+ if(actkey)
key_to_latt(actkey, lt);
- }
lt->editlatt= MEM_dupallocN(lt);
lt->editlatt->def= MEM_dupallocN(lt->def);
@@ -121,11 +99,8 @@ void make_editLatt(Object *obedit)
lt->editlatt->dvert = MEM_mallocN (sizeof (MDeformVert)*tot, "Lattice MDeformVert");
copy_dverts(lt->editlatt->dvert, lt->dvert, tot);
}
-
- //BIF_undo_push("Original");
}
-
void load_editLatt(Object *obedit)
{
Lattice *lt;
@@ -136,7 +111,8 @@ void load_editLatt(Object *obedit)
lt= obedit->data;
- actkey = ob_get_keyblock(obedit);
+ actkey= ob_get_keyblock(obedit);
+
if(actkey) {
/* active key: vertices */
tot= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
@@ -154,7 +130,6 @@ void load_editLatt(Object *obedit)
}
}
else {
-
MEM_freeN(lt->def);
lt->def= MEM_dupallocN(lt->editlatt->def);
@@ -181,55 +156,135 @@ void load_editLatt(Object *obedit)
lt->dvert = MEM_mallocN (sizeof (MDeformVert)*tot, "Lattice MDeformVert");
copy_dverts(lt->dvert, lt->editlatt->dvert, tot);
}
-
}
-void remake_editLatt(Object *obedit)
+/************************** Operators *************************/
+
+static void setflagsLatt(Object *obedit, int flag)
{
- if(okee("Reload original data")==0) return;
+ Lattice *lt= obedit->data;
+ BPoint *bp;
+ int a;
- make_editLatt(obedit);
-
- //BIF_undo_push("Reload original");
+ bp= lt->editlatt->def;
+
+ a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
+
+ while(a--) {
+ if(bp->hide==0) {
+ bp->f1= flag;
+ }
+ bp++;
+ }
}
-
-void deselectall_Latt(Object *obedit)
+int de_select_all_exec(bContext *C, wmOperator *op)
{
+ Object *obedit= CTX_data_edit_object(C);
Lattice *lt= obedit->data;
BPoint *bp;
- int a;
+ int a, deselect= 0;
bp= lt->editlatt->def;
-
a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
while(a--) {
if(bp->hide==0) {
if(bp->f1) {
- setflagsLatt(obedit, 0);
- //BIF_undo_push("(De)select all");
- return;
+ deselect= 1;
+ break;
}
}
bp++;
}
- setflagsLatt(obedit, 1);
- //BIF_undo_push("(De)select all");
+
+ if(deselect)
+ setflagsLatt(obedit, 0);
+ else
+ setflagsLatt(obedit, 1);
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
+ return OPERATOR_FINISHED;
}
+void LATTICE_OT_select_all_toggle(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Select or Deselect All";
+ ot->idname= "LATTICE_OT_select_all_toggle";
+
+ /* api callbacks */
+ ot->exec= de_select_all_exec;
+ ot->poll= ED_operator_editlattice;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+int make_regular_poll(bContext *C)
+{
+ Object *ob;
+
+ if(ED_operator_editlattice(C)) return 1;
+
+ ob= CTX_data_active_object(C);
+ return (ob && ob->type==OB_LATTICE);
+}
+
+int make_regular_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_edit_object(C);
+ Lattice *lt;
+
+ if(ob) {
+ lt= ob->data;
+ resizelattice(lt->editlatt, lt->pntsu, lt->pntsv, lt->pntsw, NULL);
+ }
+ else {
+ ob= CTX_data_active_object(C);
+ lt= ob->data;
+ resizelattice(lt, lt->pntsu, lt->pntsv, lt->pntsw, NULL);
+ }
+
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, ob);
+
+ return OPERATOR_FINISHED;
+}
+
+void LATTICE_OT_make_regular(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Make Regular";
+ ot->idname= "LATTICE_OT_make_regular";
+
+ /* api callbacks */
+ ot->exec= make_regular_exec;
+ ot->poll= make_regular_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/****************************** Mouse Selection *************************/
+
static void findnearestLattvert__doClosest(void *userData, BPoint *bp, int x, int y)
{
struct { BPoint *bp; short dist, select, mval[2]; } *data = userData;
float temp = abs(data->mval[0]-x) + abs(data->mval[1]-y);
- if ((bp->f1 & SELECT)==data->select) temp += 5;
- if (temp<data->dist) {
+ if((bp->f1 & SELECT)==data->select)
+ temp += 5;
+
+ if(temp<data->dist) {
data->dist = temp;
data->bp = bp;
}
}
+
static BPoint *findnearestLattvert(ViewContext *vc, short mval[2], int sel)
{
/* sel==1: selected gets a disadvantage */
@@ -247,34 +302,27 @@ static BPoint *findnearestLattvert(ViewContext *vc, short mval[2], int sel)
return data.bp;
}
-
void mouse_lattice(bContext *C, short mval[2], int extend)
{
ViewContext vc;
- BPoint *bp=0;
+ BPoint *bp= NULL;
view3d_set_viewcontext(C, &vc);
-
bp= findnearestLattvert(&vc, mval, 1);
if(bp) {
if(extend==0) {
-
setflagsLatt(vc.obedit, 0);
bp->f1 |= SELECT;
-
}
- else {
+ else
bp->f1 ^= SELECT; /* swap */
- }
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, vc.obedit);
- //BIF_undo_push("Select");
}
}
-
-/* **************** undo for lattice object ************** */
+/******************************** Undo *************************/
typedef struct UndoLattice {
BPoint *def;
@@ -324,20 +372,18 @@ static int validate_undoLatt(void *data, void *edata)
static void *get_editlatt(bContext *C)
{
Object *obedit= CTX_data_edit_object(C);
+
if(obedit && obedit->type==OB_LATTICE) {
Lattice *lt= obedit->data;
return lt->editlatt;
}
+
return NULL;
}
-
/* and this is all the undo system needs to know */
void undo_push_lattice(bContext *C, char *name)
{
undo_editmode_push(C, name, get_editlatt, free_undoLatt, undoLatt_to_editLatt, editLatt_to_undoLatt, validate_undoLatt);
}
-
-
-/***/
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index c436ccdb328..11f6b443912 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -116,12 +116,11 @@
#include "ED_mesh.h"
#include "ED_object.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_types.h"
#include "ED_util.h"
#include "ED_view3d.h"
-#include "BIF_transform.h"
-
#include "UI_interface.h"
#include "RNA_access.h"
@@ -1733,7 +1732,7 @@ void OBJECT_OT_select_by_layer(wmOperatorType *ot)
}
/* ****** invert selection *******/
-static int object_select_invert_exec(bContext *C, wmOperator *op)
+static int object_select_inverse_exec(bContext *C, wmOperator *op)
{
CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
if (base->flag & SELECT)
@@ -1749,16 +1748,16 @@ static int object_select_invert_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void OBJECT_OT_select_invert(wmOperatorType *ot)
+void OBJECT_OT_select_inverse(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Invert selection";
- ot->description = "Invert th select of all visible objects.";
- ot->idname= "OBJECT_OT_select_invert";
+ ot->name= "Select Inverse";
+ ot->description = "Invert selection of all visible objects.";
+ ot->idname= "OBJECT_OT_select_inverse";
/* api callbacks */
- ot->exec= object_select_invert_exec;
+ ot->exec= object_select_inverse_exec;
ot->poll= ED_operator_scene_editable;
/* flags */
@@ -3208,7 +3207,11 @@ void ED_object_exit_editmode(bContext *C, int flag)
}
load_editMesh(scene, obedit);
- if(freedata) free_editMesh(me->edit_mesh);
+ if(freedata) {
+ free_editMesh(me->edit_mesh);
+ MEM_freeN(me->edit_mesh);
+ me->edit_mesh= NULL;
+ }
if(G.f & G_WEIGHTPAINT)
mesh_octree_table(obedit, NULL, NULL, 'e');
@@ -3257,7 +3260,7 @@ void ED_object_enter_editmode(bContext *C, int flag)
{
Scene *scene= CTX_data_scene(C);
Base *base= CTX_data_active_base(C);
- Object *ob= base->object;
+ Object *ob;
ScrArea *sa= CTX_wm_area(C);
View3D *v3d= NULL;
int ok= 0;
@@ -3269,7 +3272,10 @@ void ED_object_enter_editmode(bContext *C, int flag)
v3d= sa->spacedata.first;
if((v3d==NULL || (base->lay & v3d->lay))==0) return;
-
+
+ ob = base->object;
+
+ if(ob==NULL) return;
if(ob->data==NULL) return;
if (object_data_is_libdata(ob)) {
@@ -3575,9 +3581,7 @@ void special_editmenu(Scene *scene, View3D *v3d)
// XXX static short numcuts= 2;
Object *ob= OBACT;
Object *obedit= NULL; // XXX
- float fac;
int nr,ret=0;
- short randfac;
if(ob==NULL) return;
@@ -3766,144 +3770,8 @@ void special_editmenu(Scene *scene, View3D *v3d)
}
}
else if(obedit->type==OB_MESH) {
- /* This is all that is needed, since all other functionality is in Ctrl+ V/E/F but some users didnt like, so for now have the old/big menu */
- /*
- nr= pupmenu("Subdivide Mesh%t|Subdivide%x1|Subdivide Multi%x2|Subdivide Multi Fractal%x3|Subdivide Smooth%x4");
- switch(nr) {
- case 1:
- waitcursor(1);
- esubdivideflag(1, 0.0, scene->toolsettings->editbutflag, 1, 0);
-
- break;
- case 2:
- if(button(&numcuts, 1, 128, "Number of Cuts:")==0) return;
- waitcursor(1);
- esubdivideflag(1, 0.0, scene->toolsettings->editbutflag, numcuts, 0);
- break;
- case 3:
- if(button(&numcuts, 1, 128, "Number of Cuts:")==0) return;
- randfac= 10;
- if(button(&randfac, 1, 100, "Rand fac:")==0) return;
- waitcursor(1);
- fac= -( (float)randfac )/100;
- esubdivideflag(1, fac, scene->toolsettings->editbutflag, numcuts, 0);
- break;
-
- case 4:
- fac= 1.0f;
- if(fbutton(&fac, 0.0f, 5.0f, 10, 10, "Smooth:")==0) return;
- fac= 0.292f*fac;
-
- waitcursor(1);
- esubdivideflag(1, fac, scene->toolsettings->editbutflag | B_SMOOTH, 1, 0);
- break;
- }
- */
-
- nr= pupmenu("Specials%t|Subdivide%x1|Subdivide Multi%x2|Subdivide Multi Fractal%x3|Subdivide Smooth%x12|Merge%x4|Remove Doubles%x5|Hide%x6|Reveal%x7|Select Swap%x8|Flip Normals %x9|Smooth %x10|Bevel %x11|Set Smooth %x14|Set Solid %x15|Blend From Shape%x16|Propagate To All Shapes%x17|Select Vertex Path%x18");
-
- switch(nr) {
- case 1:
- waitcursor(1);
-// XXX esubdivideflag(1, 0.0, scene->toolsettings->editbutflag, 1, 0);
-
- break;
- case 2:
-// XXX if(button(&numcuts, 1, 128, "Number of Cuts:")==0) return;
- waitcursor(1);
-// XXX esubdivideflag(1, 0.0, scene->toolsettings->editbutflag, numcuts, 0);
- break;
- case 3:
-// XXX if(button(&numcuts, 1, 128, "Number of Cuts:")==0) return;
- randfac= 10;
-// XXX if(button(&randfac, 1, 100, "Rand fac:")==0) return;
- waitcursor(1);
- fac= -( (float)randfac )/100;
-// XXX esubdivideflag(1, fac, scene->toolsettings->editbutflag, numcuts, 0);
- break;
-
- case 12: /* smooth */
- /* if(button(&numcuts, 1, 128, "Number of Cuts:")==0) return; */
- fac= 1.0f;
-// XXX if(fbutton(&fac, 0.0f, 5.0f, 10, 10, "Smooth:")==0) return;
-// XXX fac= 0.292f*fac;
-
- waitcursor(1);
-// XXX esubdivideflag(1, fac, scene->toolsettings->editbutflag | B_SMOOTH, 1, 0);
- break;
-
- case 4:
-// XXX mergemenu();
- break;
- case 5:
-// XXX notice("Removed %d Vertices", removedoublesflag(1, 0, scene->toolsettings->doublimit));
- break;
- case 6:
-// XXX hide_mesh(0);
- break;
- case 7:
-// XXX reveal_mesh();
- break;
- case 8:
-// XXX selectswap_mesh();
- break;
- case 9:
-// XXX flip_editnormals();
- break;
- case 10:
-// XXX vertexsmooth();
- break;
- case 11:
-// XXX bevel_menu();
- break;
- case 14:
-// XXX mesh_set_smooth_faces(1);
- break;
- case 15:
-// XXX mesh_set_smooth_faces(0);
- break;
- case 16:
-// XXX shape_copy_select_from();
- break;
- case 17:
-// XXX shape_propagate();
- break;
- case 18:
-// XXX pathselect();
- break;
- }
-
-
- DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-
- if(nr>0) waitcursor(0);
-
}
else if(ELEM(obedit->type, OB_CURVE, OB_SURF)) {
-
- nr= pupmenu("Specials%t|Subdivide%x1|Switch Direction%x2|Set Goal Weight%x3|Set Radius%x4|Smooth%x5|Smooth Radius%x6");
-
- switch(nr) {
- case 1:
-// XXX subdivideNurb();
- break;
- case 2:
-// XXX switchdirectionNurb2();
- break;
- case 3:
-// XXX setweightNurb();
- break;
- case 4:
-// XXX setradiusNurb();
- break;
- case 5:
-// XXX smoothNurb();
- break;
- case 6:
-// XXX smoothradiusNurb();
- break;
- }
- DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
}
else if(obedit->type==OB_ARMATURE) {
nr= pupmenu("Specials%t|Subdivide %x1|Subdivide Multi%x2|Switch Direction%x7|Flip Left-Right Names%x3|%l|AutoName Left-Right%x4|AutoName Front-Back%x5|AutoName Top-Bottom%x6");
@@ -6089,7 +5957,7 @@ Base *ED_object_add_duplicate(Scene *scene, Base *base, int usedupflag)
}
/* contextual operator dupli */
-static int duplicate_add_exec(bContext *C, wmOperator *op)
+static int duplicate_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
View3D *v3d= CTX_wm_view3d(C);
@@ -6121,9 +5989,9 @@ static int duplicate_add_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-static int duplicate_add_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- duplicate_add_exec(C, op);
+ duplicate_exec(C, op);
RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
@@ -6131,17 +5999,17 @@ static int duplicate_add_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_FINISHED;
}
-void OBJECT_OT_duplicate_add(wmOperatorType *ot)
+void OBJECT_OT_duplicate(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Add Duplicate";
- ot->description = "Duplicate the object.";
- ot->idname= "OBJECT_OT_duplicate_add";
+ ot->name= "Duplicate Objects";
+ ot->description = "Duplicate the objects.";
+ ot->idname= "OBJECT_OT_duplicate";
/* api callbacks */
- ot->invoke= duplicate_add_invoke;
- ot->exec= duplicate_add_exec;
+ ot->invoke= duplicate_invoke;
+ ot->exec= duplicate_exec;
ot->poll= ED_operator_scene_editable;
diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h
index 6ec5f029148..12776c08d4f 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -45,7 +45,7 @@ void OBJECT_OT_parent_clear(struct wmOperatorType *ot);
void OBJECT_OT_track_set(struct wmOperatorType *ot);
void OBJECT_OT_track_clear(struct wmOperatorType *ot);
void OBJECT_OT_select_all_toggle(struct wmOperatorType *ot);
-void OBJECT_OT_select_invert(struct wmOperatorType *ot);
+void OBJECT_OT_select_inverse(struct wmOperatorType *ot);
void OBJECT_OT_select_random(struct wmOperatorType *ot);
void OBJECT_OT_select_by_type(struct wmOperatorType *ot);
void OBJECT_OT_select_by_layer(struct wmOperatorType *ot);
@@ -61,7 +61,7 @@ void OBJECT_OT_slowparent_clear(struct wmOperatorType *ot);
void OBJECT_OT_center_set(struct wmOperatorType *ot);
void OBJECT_OT_dupli_set_real(struct wmOperatorType *ot);
void OBJECT_OT_object_add(struct wmOperatorType *ot);
-void OBJECT_OT_duplicate_add(struct wmOperatorType *ot);
+void OBJECT_OT_duplicate(struct wmOperatorType *ot);
void OBJECT_OT_delete(struct wmOperatorType *ot);
void OBJECT_OT_mesh_add(struct wmOperatorType *ot);
@@ -78,6 +78,9 @@ void make_editLatt(Object *obedit);
void load_editLatt(Object *obedit);
void remake_editLatt(Object *obedit);
+void LATTICE_OT_select_all_toggle(struct wmOperatorType *ot);
+void LATTICE_OT_make_regular(struct wmOperatorType *ot);
+
/* editgroup.c */
void GROUP_OT_group_create(struct wmOperatorType *ot);
void GROUP_OT_objects_remove(struct wmOperatorType *ot);
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index bda3e4e8f79..6b9f2db0d96 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -83,33 +83,38 @@ int ED_object_modifier_add(ReportList *reports, Scene *scene, Object *ob, int ty
}
}
- if(mti->flags&eModifierTypeFlag_RequiresOriginalData) {
- md = ob->modifiers.first;
+ if(type == eModifierType_ParticleSystem) {
+ object_add_particle_system(scene, ob);
+ }
+ else {
+ if(mti->flags&eModifierTypeFlag_RequiresOriginalData) {
+ md = ob->modifiers.first;
- while(md && modifierType_getInfo(md->type)->type==eModifierTypeType_OnlyDeform)
- md = md->next;
+ while(md && modifierType_getInfo(md->type)->type==eModifierTypeType_OnlyDeform)
+ md = md->next;
- BLI_insertlinkbefore(&ob->modifiers, md, modifier_new(type));
- }
- else
- BLI_addtail(&ob->modifiers, modifier_new(type));
-
- /* special cases */
- if(type == eModifierType_Softbody) {
- if(!ob->soft) {
- ob->soft= sbNew(scene);
- ob->softflag |= OB_SB_GOAL|OB_SB_EDGES;
+ BLI_insertlinkbefore(&ob->modifiers, md, modifier_new(type));
}
- }
- else if(type == eModifierType_Collision) {
- if(!ob->pd)
- ob->pd= object_add_collision_fields();
+ else
+ BLI_addtail(&ob->modifiers, modifier_new(type));
+
+ /* special cases */
+ if(type == eModifierType_Softbody) {
+ if(!ob->soft) {
+ ob->soft= sbNew(scene);
+ ob->softflag |= OB_SB_GOAL|OB_SB_EDGES;
+ }
+ }
+ else if(type == eModifierType_Collision) {
+ if(!ob->pd)
+ ob->pd= object_add_collision_fields();
- ob->pd->deflect= 1;
- DAG_scene_sort(scene);
+ ob->pd->deflect= 1;
+ DAG_scene_sort(scene);
+ }
+ else if(type == eModifierType_Surface)
+ DAG_scene_sort(scene);
}
- else if(type == eModifierType_Surface)
- DAG_scene_sort(scene);
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
@@ -226,11 +231,11 @@ int ED_object_modifier_convert(ReportList *reports, Scene *scene, Object *ob, Mo
psys=((ParticleSystemModifierData *)md)->psys;
part= psys->part;
- if(part->draw_as == PART_DRAW_GR || part->draw_as == PART_DRAW_OB) {
+ if(part->ren_as == PART_DRAW_GR || part->ren_as == PART_DRAW_OB) {
; // XXX make_object_duplilist_real(NULL);
}
else {
- if(part->draw_as != PART_DRAW_PATH || psys->pathcache == 0)
+ if(part->ren_as != PART_DRAW_PATH || psys->pathcache == 0)
return 0;
totpart= psys->totcached;
@@ -331,6 +336,10 @@ int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, Modi
}
mesh_pmv_off(ob, me);
+
+ /* Multires: ensure that recent sculpting is applied */
+ if(md->type == eModifierType_Multires)
+ multires_force_update(ob);
dm = mesh_create_derived_for_modifier(scene, ob, md);
if (!dm) {
@@ -763,9 +772,7 @@ static uiBlock *modifiers_add_menu(void *ob_v)
ModifierTypeInfo *mti = modifierType_getInfo(i);
/* Only allow adding through appropriate other interfaces */
- if(ELEM3(i, eModifierType_Softbody, eModifierType_Hook, eModifierType_ParticleSystem)) continue;
-
- if(ELEM4(i, eModifierType_Cloth, eModifierType_Collision, eModifierType_Surface, eModifierType_Fluidsim)) continue;
+ if(ELEM(i, eModifierType_ParticleSystem, eModifierType_Surface)) continue;
if((mti->flags&eModifierTypeFlag_AcceptsCVs) ||
(ob->type==OB_MESH && (mti->flags&eModifierTypeFlag_AcceptsMesh))) {
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index 6248d826ad4..3a9973b7ec5 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -68,7 +68,7 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_parent_clear);
WM_operatortype_append(OBJECT_OT_track_set);
WM_operatortype_append(OBJECT_OT_track_clear);
- WM_operatortype_append(OBJECT_OT_select_invert);
+ WM_operatortype_append(OBJECT_OT_select_inverse);
WM_operatortype_append(OBJECT_OT_select_random);
WM_operatortype_append(OBJECT_OT_select_all_toggle);
WM_operatortype_append(OBJECT_OT_select_by_type);
@@ -84,7 +84,7 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_slowparent_clear);
WM_operatortype_append(OBJECT_OT_center_set);
WM_operatortype_append(OBJECT_OT_dupli_set_real);
- WM_operatortype_append(OBJECT_OT_duplicate_add);
+ WM_operatortype_append(OBJECT_OT_duplicate);
WM_operatortype_append(GROUP_OT_group_create);
WM_operatortype_append(GROUP_OT_objects_remove);
WM_operatortype_append(GROUP_OT_objects_add_active);
@@ -122,6 +122,9 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_shape_key_add);
WM_operatortype_append(OBJECT_OT_shape_key_remove);
+
+ WM_operatortype_append(LATTICE_OT_select_all_toggle);
+ WM_operatortype_append(LATTICE_OT_make_regular);
}
void ED_keymap_object(wmWindowManager *wm)
@@ -136,7 +139,7 @@ void ED_keymap_object(wmWindowManager *wm)
keymap= WM_keymap_listbase(wm, "Object Mode", 0, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "OBJECT_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "OBJECT_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_select_random", PADASTERKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_select_by_type", PADASTERKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_select_by_layer", PADASTERKEY, KM_PRESS, KM_ALT, 0);
@@ -157,7 +160,7 @@ void ED_keymap_object(wmWindowManager *wm)
WM_keymap_verify_item(keymap, "OBJECT_OT_delete", XKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "OBJECT_OT_primitive_add", AKEY, KM_PRESS, KM_SHIFT, 0);
- WM_keymap_verify_item(keymap, "OBJECT_OT_duplicate_add", DKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_verify_item(keymap, "OBJECT_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
// XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith
WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe_menu", IKEY, KM_PRESS, 0, 0);
@@ -168,5 +171,9 @@ void ED_keymap_object(wmWindowManager *wm)
WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0);
+ /* Lattice */
+ keymap= WM_keymap_listbase(wm, "Lattice", 0, 0);
+
+ WM_keymap_add_item(keymap, "LATTICE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
}
diff --git a/source/blender/editors/physics/ed_pointcache.c b/source/blender/editors/physics/ed_pointcache.c
index edd668b46bb..4bf6612df67 100644
--- a/source/blender/editors/physics/ed_pointcache.c
+++ b/source/blender/editors/physics/ed_pointcache.c
@@ -82,6 +82,7 @@ static int ptcache_bake_all_exec(bContext *C, wmOperator *op)
baker.pid = NULL;
baker.bake = RNA_boolean_get(op->ptr, "bake");
baker.render = 0;
+ baker.anim_init = 0;
baker.quick_step = 1;
baker.break_test = cache_break_test;
baker.break_data = NULL;
@@ -172,10 +173,11 @@ static int ptcache_bake_cloth_exec(bContext *C, wmOperator *op)
baker.pid = &pid;
baker.bake = RNA_boolean_get(op->ptr, "bake");
baker.render = 0;
+ baker.anim_init = 0;
baker.quick_step = 1;
baker.break_test = cache_break_test;
baker.break_data = NULL;
- baker.progressbar = WM_timecursor;
+ baker.progressbar = (void (*)(void *, int))WM_timecursor;
baker.progresscontext = CTX_wm_window(C);
BKE_ptcache_make_cache(&baker);
@@ -277,6 +279,7 @@ static int ptcache_bake_particle_system_exec(bContext *C, wmOperator *op)
baker.pid = &pid;
baker.bake = RNA_boolean_get(op->ptr, "bake");
baker.render = 0;
+ baker.anim_init = 0;
baker.quick_step = 1;
baker.break_test = cache_break_test;
baker.break_data = NULL;
diff --git a/source/blender/editors/physics/editparticle.c b/source/blender/editors/physics/editparticle.c
index 1b6b5b43522..b656aa8fbf6 100644
--- a/source/blender/editors/physics/editparticle.c
+++ b/source/blender/editors/physics/editparticle.c
@@ -1826,7 +1826,7 @@ void PARTICLE_OT_rekey(wmOperatorType *ot)
/* api callbacks */
ot->exec= rekey_exec;
- ot->invoke= WM_operator_redo;
+ ot->invoke= WM_operator_props_popup;
ot->poll= PE_poll;
/* flags */
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index dd8efd68604..69af4fbb45d 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -1128,8 +1128,6 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
em= (ar->type->minsizex)? 10: 20;
}
- header= 20; // XXX
- triangle= 22;
x= 0;
y= -style->panelouter;
@@ -1150,10 +1148,14 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
block= uiBeginBlock(C, ar, pt->idname, UI_EMBOSS);
panel= uiBeginPanel(sa, ar, block, pt, &open);
+ /* bad fixed values */
+ header= (pt->flag & PNL_NO_HEADER)? 0: 20;
+ triangle= 22;
+
if(vertical)
y -= header;
- if(pt->draw_header && (open || vertical)) {
+ if(pt->draw_header && header && (open || vertical)) {
/* for enabled buttons */
panel->layout= uiBlockLayout(block, UI_LAYOUT_HORIZONTAL, UI_LAYOUT_HEADER,
triangle, header+style->panelspace, header, 1, style);
@@ -1185,7 +1187,10 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
uiEndBlock(C, block);
if(vertical) {
- y += yco-style->panelouter;
+ if(pt->flag & PNL_NO_HEADER)
+ y += yco;
+ else
+ y += yco-style->panelouter;
}
else {
x += w;
@@ -1214,13 +1219,20 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex
if(vertical) {
v2d->keepofs |= V2D_LOCKOFS_X;
v2d->keepofs &= ~V2D_LOCKOFS_Y;
+
+ // don't jump back when panels close or hide
+ y= MAX2(-y, -v2d->cur.ymin);
}
else {
v2d->keepofs &= ~V2D_LOCKOFS_X;
v2d->keepofs |= V2D_LOCKOFS_Y;
+
+ // don't jump back when panels close or hide
+ x= MAX2(x, v2d->cur.xmax);
+ y= -y;
}
- UI_view2d_totRect_set(v2d, x, -y);
+ UI_view2d_totRect_set(v2d, x, y);
/* set the view */
UI_view2d_view_ortho(C, v2d);
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 80526dbdb6e..3379d728826 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -34,6 +34,7 @@
#include "DNA_armature_types.h"
#include "DNA_image_types.h"
+#include "DNA_lattice_types.h"
#include "DNA_object_types.h"
#include "DNA_mesh_types.h"
#include "DNA_curve_types.h"
@@ -293,6 +294,14 @@ int ED_operator_editfont(bContext *C)
return 0;
}
+int ED_operator_editlattice(bContext *C)
+{
+ Object *obedit= CTX_data_edit_object(C);
+ if(obedit && obedit->type==OB_LATTICE)
+ return NULL != ((Lattice *)obedit->data)->editlatt;
+ return 0;
+}
+
/* *************************** action zone operator ************************** */
/* operator state vars used:
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 0710079301b..74b5d5a4206 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -424,8 +424,9 @@ void clear_vpaint_selectedfaces(Scene *scene)
/* fills in the selected faces with the current weight and vertex group */
void clear_wpaint_selectedfaces(Scene *scene)
{
- VPaint *wp= scene->toolsettings->wpaint;
- float paintweight= wp->brush->alpha;
+ ToolSettings *ts= scene->toolsettings;
+ VPaint *wp= ts->wpaint;
+ float paintweight= ts->vgroup_weight;
Mesh *me;
MFace *mface;
Object *ob;
@@ -909,7 +910,7 @@ static void wpaint_blend(VPaint *wp, MDeformWeight *dw, MDeformWeight *uw, float
void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode)
{
ViewContext vc;
- VPaint *wp= scene->toolsettings->wpaint;
+ ToolSettings *ts= scene->toolsettings;
Object *ob= OBACT;
Mesh *me= get_mesh(ob);
int index;
@@ -1019,20 +1020,20 @@ void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode)
fac= MIN4(w1, w2, w3, w4);
if(w1==fac) {
dw= get_defweight(me->dvert+mface->v1, ob->actdef-1);
- if(dw) wp->brush->alpha= dw->weight; else wp->brush->alpha= 0.0f;
+ if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f;
}
else if(w2==fac) {
dw= get_defweight(me->dvert+mface->v2, ob->actdef-1);
- if(dw) wp->brush->alpha= dw->weight; else wp->brush->alpha= 0.0f;
+ if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f;
}
else if(w3==fac) {
dw= get_defweight(me->dvert+mface->v3, ob->actdef-1);
- if(dw) wp->brush->alpha= dw->weight; else wp->brush->alpha= 0.0f;
+ if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f;
}
else if(w4==fac) {
if(mface->v4) {
dw= get_defweight(me->dvert+mface->v4, ob->actdef-1);
- if(dw) wp->brush->alpha= dw->weight; else wp->brush->alpha= 0.0f;
+ if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f;
}
}
}
@@ -1308,7 +1309,7 @@ static int wpaint_modal(bContext *C, wmOperator *op, wmEvent *event)
Object *ob= vc->obact;
Mesh *me= ob->data;
float mat[4][4];
- float paintweight= wp->brush->alpha;
+ float paintweight= ts->vgroup_weight;
int *indexar= wpd->indexar;
int totindex, index, alpha, totw;
short mval[2];
@@ -1365,7 +1366,7 @@ static int wpaint_modal(bContext *C, wmOperator *op, wmEvent *event)
if(wp->mode==VP_BLUR)
paintweight= 0.0f;
else
- paintweight= wp->brush->alpha;
+ paintweight= ts->vgroup_weight;
for(index=0; index<totindex; index++) {
if(indexar[index] && indexar[index]<=me->totface) {
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index a2b883eabfc..457deb8c113 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -1457,8 +1457,6 @@ static void sculpt_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *e
sculpt_restore_mesh(sd);
do_symmetrical_brush_actions(sd, cache);
-
- sculpt_post_stroke_free(sd->session);
}
/* For brushes with stroke spacing enabled, moves mouse in steps
@@ -1526,7 +1524,9 @@ static int sculpt_brush_stroke_modal(bContext *C, wmOperator *op, wmEvent *event
}
else
sculpt_brush_stroke_add_step(C, op, event, mouse);
+
sculpt_flush_update(C);
+ sculpt_post_stroke_free(sd->session);
}
else
ED_region_tag_redraw(ar);
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c
index 910bcbef7e0..04dda2e6c4c 100644
--- a/source/blender/editors/space_action/action_edit.c
+++ b/source/blender/editors/space_action/action_edit.c
@@ -75,14 +75,13 @@
#include "UI_view2d.h"
-#include "BIF_transform.h"
-
#include "ED_anim_api.h"
#include "ED_keyframing.h"
#include "ED_keyframes_draw.h"
#include "ED_keyframes_edit.h"
#include "ED_screen.h"
#include "ED_space_api.h"
+#include "ED_transform.h"
#include "WM_api.h"
#include "WM_types.h"
diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c
index 674506ddba0..d1c9e1deac3 100644
--- a/source/blender/editors/space_action/action_ops.c
+++ b/source/blender/editors/space_action/action_ops.c
@@ -46,7 +46,7 @@
#include "UI_interface.h"
#include "UI_view2d.h"
-#include "BIF_transform.h"
+#include "ED_transform.h"
#include "action_intern.h"
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index 02179f347f5..24d5fcc648a 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -685,29 +685,29 @@ void buttons_context_draw(const bContext *C, uiLayout *layout)
if(!path)
return;
- row= uiLayoutRow(layout, 0);
+ row= uiLayoutRow(layout, 1);
uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_LEFT);
block= uiLayoutGetBlock(row);
uiBlockSetEmboss(block, UI_EMBOSSN);
- but= uiDefIconButBitC(block, ICONTOG, SB_PIN_CONTEXT, 0, (sbuts->flag & SB_PIN_CONTEXT)? ICON_PINNED: ICON_UNPINNED, 0, 0, UI_UNIT_X, UI_UNIT_Y, &sbuts->flag, 0, 0, 0, 0, "Follow context or keep fixed datablock displayed.");
+ but= uiDefIconButBitC(block, ICONTOG, SB_PIN_CONTEXT, 0, ICON_UNPINNED, 0, 0, UI_UNIT_X, UI_UNIT_Y, &sbuts->flag, 0, 0, 0, 0, "Follow context or keep fixed datablock displayed.");
uiButSetFunc(but, pin_cb, NULL, NULL);
for(a=0; a<path->len; a++) {
ptr= &path->ptr[a];
+ if(a != 0)
+ uiDefIconBut(block, LABEL, 0, VICON_SMALL_TRI_RIGHT, 0, 0, 10, UI_UNIT_Y, NULL, 0, 0, 0, 0, "");
+
if(ptr->data) {
icon= RNA_struct_ui_icon(ptr->type);
name= RNA_struct_name_get_alloc(ptr, namebuf, sizeof(namebuf));
-#if 0
- if(sbuts->mainb != BCONTEXT_SCENE && ptr->type == &RNA_Scene) {
- uiItemL(row, "", icon); /* save some space */
- }
- else
-#endif
if(name) {
- uiItemL(row, name, icon);
+ if(sbuts->mainb != BCONTEXT_SCENE && ptr->type == &RNA_Scene)
+ uiItemL(row, "", icon); /* save some space */
+ else
+ uiItemL(row, name, icon);
if(name != namebuf)
MEM_freeN(name);
@@ -731,6 +731,7 @@ void buttons_context_register(ARegionType *art)
strcpy(pt->idname, "BUTTONS_PT_context");
strcpy(pt->label, "Context");
pt->draw= buttons_panel_context;
+ pt->flag= PNL_NO_HEADER;
BLI_addtail(&art->paneltypes, pt);
}
diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c
index 2bc3bdaa613..66b380ab413 100644
--- a/source/blender/editors/space_buttons/buttons_ops.c
+++ b/source/blender/editors/space_buttons/buttons_ops.c
@@ -516,3 +516,4 @@ void PARTICLE_OT_new(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+
diff --git a/source/blender/editors/space_file/file_intern.h b/source/blender/editors/space_file/file_intern.h
index 668e14c95e6..2f3fae47abb 100644
--- a/source/blender/editors/space_file/file_intern.h
+++ b/source/blender/editors/space_file/file_intern.h
@@ -65,17 +65,23 @@ void FILE_OT_loadimages(struct wmOperatorType *ot);
void FILE_OT_exec(struct wmOperatorType *ot);
void FILE_OT_cancel(struct wmOperatorType *ot);
void FILE_OT_parent(struct wmOperatorType *ot);
+void FILE_OT_previous(struct wmOperatorType *ot);
+void FILE_OT_next(struct wmOperatorType *ot);
void FILE_OT_refresh(struct wmOperatorType *ot);
void FILE_OT_bookmark_toggle(struct wmOperatorType *ot);
+void FILE_OT_filenum(struct wmOperatorType *ot);
int file_exec(bContext *C, struct wmOperator *unused);
int file_cancel_exec(bContext *C, struct wmOperator *unused);
int file_parent_exec(bContext *C, struct wmOperator *unused);
+int file_previous_exec(bContext *C, struct wmOperator *unused);
+int file_next_exec(bContext *C, struct wmOperator *unused);
int file_hilight_set(struct SpaceFile *sfile, struct ARegion *ar, int mx, int my);
/* filesel.c */
float file_string_width(const char* str);
float file_font_pointsize();
+void file_change_dir(struct SpaceFile *sfile);
/* file_panels.c */
void file_panels_register(struct ARegionType *art);
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index aaa1793efbb..c4435e85749 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -146,9 +146,7 @@ static void file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short v
strcat(params->dir,"/");
params->file[0] = '\0';
BLI_cleanup_dir(G.sce, params->dir);
- filelist_setdir(sfile->files, params->dir);
- filelist_free(sfile->files);
- params->active_file = -1;
+ file_change_dir(sfile);
}
}
else if (file)
@@ -305,10 +303,8 @@ static int bookmark_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
RNA_string_get(op->ptr, "dir", entry);
BLI_strncpy(params->dir, entry, sizeof(params->dir));
BLI_cleanup_dir(G.sce, params->dir);
- filelist_free(sfile->files);
- filelist_setdir(sfile->files, params->dir);
- params->file[0] = '\0';
- params->active_file = -1;
+ file_change_dir(sfile);
+ params->file[0] = '\0';
WM_event_add_notifier(C, NC_FILE|ND_PARAMS, NULL);
}
@@ -362,9 +358,9 @@ void FILE_OT_add_bookmark(wmOperatorType *ot)
static int bookmark_delete_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
ScrArea *sa= CTX_wm_area(C);
- SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
struct FSMenu* fsmenu = fsmenu_get();
int nentries = fsmenu_get_nentries(fsmenu, FS_CATEGORY_BOOKMARKS);
+
if(RNA_struct_find_property(op->ptr, "index")) {
int index = RNA_int_get(op->ptr, "index");
if ( (index >-1) && (index < nentries)) {
@@ -467,7 +463,10 @@ void FILE_OT_highlight(struct wmOperatorType *ot)
int file_cancel_exec(bContext *C, wmOperator *unused)
{
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
-
+
+ folderlist_free(sfile->folders_prev);
+ folderlist_free(sfile->folders_next);
+
WM_event_fileselect_event(C, sfile->op, EVT_FILESELECT_CANCEL);
sfile->op = NULL;
@@ -529,6 +528,9 @@ int file_exec(bContext *C, wmOperator *unused)
}
}
+ folderlist_free(sfile->folders_prev);
+ folderlist_free(sfile->folders_next);
+
fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir,0, 1);
BLI_make_file_string(G.sce, name, BLI_gethome(), ".Bfs");
fsmenu_write_file(fsmenu_get(), name);
@@ -556,9 +558,7 @@ int file_parent_exec(bContext *C, wmOperator *unused)
if(sfile->params) {
BLI_parent_dir(sfile->params->dir);
- filelist_setdir(sfile->files, sfile->params->dir);
- filelist_free(sfile->files);
- sfile->params->active_file = -1;
+ file_change_dir(sfile);
}
WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
@@ -583,17 +583,74 @@ int file_refresh_exec(bContext *C, wmOperator *unused)
{
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
+ file_change_dir(sfile);
+
+ WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
+
+ return OPERATOR_FINISHED;
+
+}
+
+void FILE_OT_previous(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Previous Folder";
+ ot->idname= "FILE_OT_previous";
+
+ /* api callbacks */
+ ot->exec= file_previous_exec;
+ ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
+}
+
+int file_previous_exec(bContext *C, wmOperator *unused)
+{
+ SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
+
if(sfile->params) {
- filelist_setdir(sfile->files, sfile->params->dir);
- filelist_free(sfile->files);
- sfile->params->active_file = -1;
+ if (!sfile->folders_next)
+ sfile->folders_next = folderlist_new();
+
+ folderlist_pushdir(sfile->folders_next, sfile->params->dir);
+ folderlist_popdir(sfile->folders_prev, sfile->params->dir);
+ folderlist_pushdir(sfile->folders_next, sfile->params->dir);
+
+ file_change_dir(sfile);
}
WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
return OPERATOR_FINISHED;
+}
+void FILE_OT_next(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Next Folder";
+ ot->idname= "FILE_OT_next";
+
+ /* api callbacks */
+ ot->exec= file_next_exec;
+ ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
}
+int file_next_exec(bContext *C, wmOperator *unused)
+{
+ SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
+ if(sfile->params) {
+ if (!sfile->folders_next)
+ sfile->folders_next = folderlist_new();
+
+ folderlist_pushdir(sfile->folders_prev, sfile->params->dir);
+ folderlist_popdir(sfile->folders_next, sfile->params->dir);
+
+ // update folder_prev so we can check for it in folderlist_clear_next()
+ folderlist_pushdir(sfile->folders_prev, sfile->params->dir);
+
+ file_change_dir(sfile);
+ }
+ WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
+
+ return OPERATOR_FINISHED;
+}
void FILE_OT_refresh(struct wmOperatorType *ot)
{
@@ -685,3 +742,33 @@ void FILE_OT_bookmark_toggle(struct wmOperatorType *ot)
ot->exec= file_bookmark_toggle_exec;
ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
}
+
+
+int file_filenum_exec(bContext *C, wmOperator *op)
+{
+ SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
+
+ int inc = RNA_int_get(op->ptr, "increment");
+ if(sfile->params && (inc != 0)) {
+ BLI_newname(sfile->params->file, inc);
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
+ }
+
+ return OPERATOR_FINISHED;
+
+}
+
+void FILE_OT_filenum(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Increment Number in Filename";
+ ot->idname= "FILE_OT_filenum";
+
+ /* api callbacks */
+ ot->exec= file_filenum_exec;
+ ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
+
+ /* props */
+ RNA_def_int(ot->srna, "increment", 1, 0, 100, "Increment", "", 0,100);
+}
+
diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c
index 29c759d43c0..96366b9f82b 100644
--- a/source/blender/editors/space_file/file_panels.c
+++ b/source/blender/editors/space_file/file_panels.c
@@ -57,11 +57,9 @@ static void do_file_panel_events(bContext *C, void *arg, int event)
static void file_panel_category(const bContext *C, Panel *pa, FSMenuCategory category, int icon, int allow_delete)
{
uiBlock *block;
- uiStyle *style= U.uistyles.first;
- int i;
- int fontsize = file_font_pointsize();
struct FSMenu* fsmenu = fsmenu_get();
int nentries = fsmenu_get_nentries(fsmenu, category);
+ int i;
uiLayoutSetAlignment(pa->layout, UI_LAYOUT_ALIGN_LEFT);
block= uiLayoutFreeBlock(pa->layout);
@@ -162,4 +160,5 @@ void file_panels_register(ARegionType *art)
strcpy(pt->label, "Operator");
pt->draw= file_panel_operator;
BLI_addtail(&art->paneltypes, pt);
-} \ No newline at end of file
+}
+
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 573aed72728..6e442c654ca 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -123,6 +123,12 @@ typedef struct FileList
ListBase threads;
} FileList;
+typedef struct FolderList
+{
+ struct FolderList *next, *prev;
+ char *foldername;
+} FolderList;
+
#define SPECIAL_IMG_SIZE 48
#define SPECIAL_IMG_ROWS 4
#define SPECIAL_IMG_COLS 4
@@ -354,6 +360,86 @@ void filelist_free_icons()
}
}
+//-----------------FOLDERLIST (previous/next) --------------//
+struct ListBase* folderlist_new()
+{
+ ListBase* p = MEM_callocN( sizeof(ListBase), "folderlist" );
+ return p;
+}
+
+void folderlist_popdir(struct ListBase* folderlist, char *dir)
+{
+ const char *prev_dir;
+ struct FolderList *folder;
+ folder = folderlist->last;
+
+ if(folder){
+ // remove the current directory
+ MEM_freeN(folder->foldername);
+ BLI_freelinkN(folderlist, folder);
+
+ folder = folderlist->last;
+ if(folder){
+ prev_dir = folder->foldername;
+ BLI_strncpy(dir, prev_dir, FILE_MAXDIR);
+ }
+ }
+ // delete the folder next or use setdir directly before PREVIOUS OP
+}
+
+void folderlist_pushdir(ListBase* folderlist, const char *dir)
+{
+ struct FolderList *folder, *previous_folder;
+ previous_folder = folderlist->last;
+
+ // check if already exists
+ if(previous_folder){
+ if(! strcmp(previous_folder->foldername, dir)){
+ return;
+ }
+ }
+
+ // create next folder element
+ folder = (FolderList*)MEM_mallocN(sizeof(FolderList),"FolderList");
+ folder->foldername = (char*)MEM_mallocN(sizeof(char)*(strlen(dir)+1), "foldername");
+ folder->foldername[0] = '\0';
+
+ BLI_strncpy(folder->foldername, dir, FILE_MAXDIR);
+
+ // add it to the end of the list
+ BLI_addtail(folderlist, folder);
+}
+
+int folderlist_clear_next(struct SpaceFile *sfile)
+{
+ struct FolderList *folder;
+
+ // if there is no folder_next there is nothing we can clear
+ if (!sfile->folders_next)
+ return 0;
+
+ // if previous_folder, next_folder or refresh_folder operators are executed it doesn't clear folder_next
+ folder = sfile->folders_prev->last;
+ if ((!folder) ||(!strcmp(folder->foldername, sfile->params->dir)))
+ return 0;
+
+ // eventually clear flist->folders_next
+ return 1;
+}
+
+void folderlist_free(ListBase* folderlist)
+{
+ FolderList *folder;
+ if (folderlist){
+ for(folder= folderlist->last; folder; folder= folderlist->last) {
+ MEM_freeN(folder->foldername);
+ BLI_freelinkN(folderlist, folder);
+ }
+ }
+ folderlist= NULL;
+}
+
+//------------------FILELIST------------------------//
struct FileList* filelist_new()
{
FileList* p = MEM_callocN( sizeof(FileList), "filelist" );
@@ -375,7 +461,7 @@ void filelist_free(struct FileList* filelist)
int i;
if (!filelist) {
- printf("Attemtping to delete empty filelist.\n");
+ printf("Attempting to delete empty filelist.\n");
return;
}
diff --git a/source/blender/editors/space_file/filelist.h b/source/blender/editors/space_file/filelist.h
index e929e028849..dd3c2c766c1 100644
--- a/source/blender/editors/space_file/filelist.h
+++ b/source/blender/editors/space_file/filelist.h
@@ -38,6 +38,7 @@ extern "C" {
#endif
struct FileList;
+struct FolderList;
struct direntry;
struct BlendHandle;
struct Scene;
@@ -70,6 +71,11 @@ int filelist_empty(struct FileList* filelist);
void filelist_parent(struct FileList* filelist);
void filelist_setfiletypes(struct FileList* filelist, short has_quicktime);
+struct ListBase * folderlist_new();
+void folderlist_free(struct ListBase* folderlist);
+void folderlist_popdir(struct ListBase* folderlist, char *dir);
+void folderlist_pushdir(struct ListBase* folderlist, const char *dir);
+int folderlist_clear_next(struct SpaceFile* sfile);
#ifdef __cplusplus
}
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index e1d81138e5a..476145d11a2 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -84,12 +84,12 @@
FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile)
{
if (!sfile->params) {
- ED_fileselect_set_params(sfile, "", "/", 0, FILE_SHORTDISPLAY, 0, FILE_SORT_ALPHA);
+ ED_fileselect_set_params(sfile, "", NULL, "/", 0, FILE_SHORTDISPLAY, 0, FILE_SORT_ALPHA);
}
return sfile->params;
}
-short ED_fileselect_set_params(SpaceFile *sfile, const char *title, const char *path,
+short ED_fileselect_set_params(SpaceFile *sfile, const char *title, const char *last_dir, const char *path,
short flag, short display, short filter, short sort)
{
char name[FILE_MAX], dir[FILE_MAX], file[FILE_MAX];
@@ -107,14 +107,19 @@ short ED_fileselect_set_params(SpaceFile *sfile, const char *title, const char *
params->sort = sort;
BLI_strncpy(params->title, title, sizeof(params->title));
-
- BLI_strncpy(name, path, sizeof(name));
- BLI_convertstringcode(name, G.sce);
- BLI_split_dirfile(name, dir, file);
- BLI_strncpy(params->file, file, sizeof(params->file));
- BLI_strncpy(params->dir, dir, sizeof(params->dir));
- BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */
+ if(last_dir){
+ BLI_strncpy(params->dir, last_dir, sizeof(params->dir));
+ }
+ else {
+ BLI_strncpy(name, path, sizeof(name));
+ BLI_convertstringcode(name, G.sce);
+
+ BLI_split_dirfile(name, dir, file);
+ BLI_strncpy(params->file, file, sizeof(params->file));
+ BLI_strncpy(params->dir, dir, sizeof(params->dir));
+ BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */
+ }
return 1;
}
@@ -282,3 +287,18 @@ FileLayout* ED_fileselect_get_layout(struct SpaceFile *sfile, struct ARegion *ar
}
return sfile->layout;
}
+
+void file_change_dir(struct SpaceFile *sfile)
+{
+ if (sfile->params) {
+ filelist_setdir(sfile->files, sfile->params->dir);
+
+ if(folderlist_clear_next(sfile))
+ folderlist_free(sfile->folders_next);
+
+ folderlist_pushdir(sfile->folders_prev, sfile->params->dir);
+
+ filelist_free(sfile->files);
+ sfile->params->active_file = -1;
+ }
+}
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 156c7d6f9be..3167d2809c9 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -34,6 +34,8 @@
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
+#include "RNA_access.h"
+
#include "MEM_guardedalloc.h"
#include "BIF_gl.h"
@@ -122,6 +124,18 @@ static void file_free(SpaceLink *sl)
sfile->files= NULL;
}
+ if(sfile->folders_prev) {
+ folderlist_free(sfile->folders_prev);
+ MEM_freeN(sfile->folders_prev);
+ sfile->folders_prev= NULL;
+ }
+
+ if(sfile->folders_next) {
+ folderlist_free(sfile->folders_next);
+ MEM_freeN(sfile->folders_next);
+ sfile->folders_next= NULL;
+ }
+
if (sfile->params) {
if(sfile->params->pupmenu)
MEM_freeN(sfile->params->pupmenu);
@@ -151,11 +165,15 @@ static SpaceLink *file_duplicate(SpaceLink *sl)
sfilen->op = NULL; /* file window doesn't own operators */
sfilen->files = filelist_new();
-
+ if(sfileo->folders_prev)
+ sfilen->folders_prev = MEM_dupallocN(sfileo->folders_prev);
+
+ if(sfileo->folders_next)
+ sfilen->folders_next = MEM_dupallocN(sfileo->folders_next);
+
if(sfileo->params) {
sfilen->params= MEM_dupallocN(sfileo->params);
-
- filelist_setdir(sfilen->files, sfilen->params->dir);
+ file_change_dir(sfilen);
}
if (sfileo->layout) {
sfilen->layout= MEM_dupallocN(sfileo->layout);
@@ -168,9 +186,11 @@ static void file_refresh(const bContext *C, ScrArea *sa)
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
FileSelectParams *params = ED_fileselect_get_params(sfile);
+ if (!sfile->folders_prev)
+ sfile->folders_prev = folderlist_new();
if (!sfile->files) {
sfile->files = filelist_new();
- filelist_setdir(sfile->files, params->dir);
+ file_change_dir(sfile);
params->active_file = -1; // added this so it opens nicer (ton)
}
filelist_hidedot(sfile->files, params->flag & FILE_HIDE_DOT);
@@ -211,8 +231,11 @@ static void file_main_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
- /* own keymap */
- keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0); /* XXX weak? */
+ /* own keymaps */
+ keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0);
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
+
+ keymap= WM_keymap_listbase(wm, "FileMain", SPACE_FILE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
@@ -290,35 +313,76 @@ void file_operatortypes(void)
WM_operatortype_append(FILE_OT_exec);
WM_operatortype_append(FILE_OT_cancel);
WM_operatortype_append(FILE_OT_parent);
+ WM_operatortype_append(FILE_OT_previous);
+ WM_operatortype_append(FILE_OT_next);
WM_operatortype_append(FILE_OT_refresh);
WM_operatortype_append(FILE_OT_bookmark_toggle);
WM_operatortype_append(FILE_OT_add_bookmark);
WM_operatortype_append(FILE_OT_delete_bookmark);
WM_operatortype_append(FILE_OT_hidedot);
+ WM_operatortype_append(FILE_OT_filenum);
}
/* NOTE: do not add .blend file reading on this level */
void file_keymap(struct wmWindowManager *wm)
{
+ wmKeymapItem *kmi;
+ /* keys for all areas */
ListBase *keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0);
WM_keymap_add_item(keymap, "FILE_OT_bookmark_toggle", NKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_add_bookmark", BKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_hidedot", HKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_previous", BACKSPACEKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_next", BACKSPACEKEY, KM_PRESS, KM_SHIFT, 0);
+
+ /* keys for main area */
+ keymap= WM_keymap_listbase(wm, "FileMain", SPACE_FILE, 0);
WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_select_border", BKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_highlight", MOUSEMOVE, KM_ANY, 0, 0);
- WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "FILE_OT_add_bookmark", BKEY, KM_PRESS, KM_CTRL, 0);
- WM_keymap_add_item(keymap, "FILE_OT_hidedot", HKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "FILE_OT_loadimages", TIMER1, KM_ANY, KM_ANY, 0);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0);
+ RNA_int_set(kmi->ptr, "increment", 1);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_int_set(kmi->ptr, "increment", 10);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "increment", 100);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, 0,0);
+ RNA_int_set(kmi->ptr, "increment", -1);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_SHIFT, 0);
+ RNA_int_set(kmi->ptr, "increment", -10);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "increment",-100);
- keymap= WM_keymap_listbase(wm, "FileBookmark", SPACE_FILE, 0);
- WM_keymap_add_item(keymap, "FILE_OT_select_bookmark", LEFTMOUSE, KM_PRESS, 0, 0);
+ /* keys for button area (top) */
+ keymap= WM_keymap_listbase(wm, "FileButtons", SPACE_FILE, 0);
+ WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0);
+ RNA_int_set(kmi->ptr, "increment", 1);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_int_set(kmi->ptr, "increment", 10);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_int_set(kmi->ptr, "increment", 100);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, 0, 0);
+ RNA_int_set(kmi->ptr, "increment", -1);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_SHIFT,0);
+ RNA_int_set(kmi->ptr, "increment", -10);
+ kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_CTRL,0);
+ RNA_int_set(kmi->ptr, "increment",-100);
}
static void file_channel_area_init(wmWindowManager *wm, ARegion *ar)
{
+ ListBase *keymap;
+
ED_region_panels_init(wm, ar);
+
+ /* own keymaps */
+ keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0);
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
static void file_channel_area_draw(const bContext *C, ARegion *ar)
@@ -348,7 +412,16 @@ static void file_header_area_draw(const bContext *C, ARegion *ar)
/* add handlers, stuff you only do once or on area/region changes */
static void file_ui_area_init(wmWindowManager *wm, ARegion *ar)
{
+ ListBase *keymap;
+
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy);
+
+ /* own keymap */
+ keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0); /* XXX weak? */
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
+
+ keymap= WM_keymap_listbase(wm, "FileButtons", SPACE_FILE, 0); /* XXX weak? */
+ WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
static void file_ui_area_draw(const bContext *C, ARegion *ar)
@@ -428,7 +501,6 @@ void ED_spacetype_file(void)
BLI_addhead(&st->regiontypes, art);
file_panels_register(art);
-
BKE_spacetype_register(st);
}
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c
index 28b6f0b4ab6..86970f3565c 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -76,14 +76,13 @@
#include "UI_interface.h"
#include "UI_view2d.h"
-#include "BIF_transform.h"
-
#include "ED_anim_api.h"
#include "ED_keyframing.h"
#include "ED_keyframes_draw.h"
#include "ED_keyframes_edit.h"
#include "ED_screen.h"
#include "ED_space_api.h"
+#include "ED_transform.h"
#include "WM_api.h"
#include "WM_types.h"
diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c
index 38bde61a46c..305ad825030 100644
--- a/source/blender/editors/space_graph/graph_ops.c
+++ b/source/blender/editors/space_graph/graph_ops.c
@@ -47,8 +47,7 @@
#include "UI_view2d.h"
#include "ED_screen.h"
-
-#include "BIF_transform.h"
+#include "ED_transform.h"
#include "graph_intern.h"
diff --git a/source/blender/editors/space_image/image_header.c b/source/blender/editors/space_image/image_header.c
index 9550c4c3a29..35088f0e4d1 100644
--- a/source/blender/editors/space_image/image_header.c
+++ b/source/blender/editors/space_image/image_header.c
@@ -55,6 +55,7 @@
#include "ED_image.h"
#include "ED_mesh.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_types.h"
#include "ED_util.h"
@@ -63,7 +64,6 @@
#include "BIF_gl.h"
#include "BIF_glutil.h"
-#include "BIF_transform.h"
#include "UI_interface.h"
#include "UI_resources.h"
@@ -86,95 +86,6 @@
#define B_SIMA_RECORD 8
#define B_SIMA_PLAY 9
-static void image_view_viewnavmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- int a;
-
- uiItemO(layout, NULL, 0, "IMAGE_OT_view_zoom_in");
- uiItemO(layout, NULL, 0, "IMAGE_OT_view_zoom_out");
-
- uiItemS(layout);
-
- for(a=0; a<7; a++) {
- const int ratios[7][2] = {{1, 8}, {1, 4}, {1, 2}, {1, 1}, {2, 1}, {4, 1}, {8, 1}};
- char namestr[128];
-
- sprintf(namestr, "Zoom %d:%d", ratios[a][0], ratios[a][1]);
- uiItemFloatO(layout, namestr, 0, "IMAGE_OT_view_zoom_ratio", "ratio", (float)ratios[a][0]/(float)ratios[a][1]);
- }
-}
-
-#if 0
-static void do_viewmenu(bContext *C, void *arg, int event)
-{
- add_blockhandler(curarea, IMAGE_HANDLER_VIEW_PROPERTIES, UI_PNL_UNSTOW);
- add_blockhandler(curarea, IMAGE_HANDLER_PROPERTIES, UI_PNL_UNSTOW);
- add_blockhandler(curarea, IMAGE_HANDLER_PAINT, UI_PNL_UNSTOW);
- add_blockhandler(curarea, IMAGE_HANDLER_CURVES, UI_PNL_UNSTOW);
-
- toggle_blockhandler(curarea, IMAGE_HANDLER_PREVIEW, 0);
- scrarea_queue_winredraw(curarea);
-
- add_blockhandler(curarea, IMAGE_HANDLER_GAME_PROPERTIES, UI_PNL_UNSTOW);
- add_blockhandler(curarea, IMAGE_HANDLER_GREASEPENCIL, UI_PNL_UNSTOW);
-
- allqueue(REDRAWIMAGE, 0);
- allqueue(REDRAWVIEW3D, 0);
-}
-#endif
-
-static void image_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- bScreen *sc= CTX_wm_screen(C);
- ScrArea *sa= CTX_wm_area(C);
- SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
- PointerRNA spaceptr, uvptr;
- int show_paint, show_render, show_uvedit;
-
- /* retrieve state */
- RNA_pointer_create(&sc->id, &RNA_SpaceImageEditor, sima, &spaceptr);
- RNA_pointer_create(&sc->id, &RNA_SpaceUVEditor, sima, &uvptr);
-
- show_render= ED_space_image_show_render(sima);
- show_paint= ED_space_image_show_paint(sima);
- show_uvedit= ED_space_image_show_uvedit(sima, CTX_data_edit_object(C));
-
- /* create menu */
- uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_properties");
- //if(show_render) uiItemO(layout, NULL, ICON_MENU_PANEL, "IMAGE_OT_toggle_compositing_preview_panel"); // Compositing Preview...|Shift P
-
- uiItemS(layout);
-
- uiItemR(layout, NULL, 0, &spaceptr, "update_automatically", 0, 0, 0);
- // XXX if(show_uvedit) uiItemR(layout, NULL, 0, &uvptr, "local_view", 0, 0, 0); // "UV Local View", Numpad /
-
- uiItemS(layout);
-
- uiItemMenuF(layout, "View Navigation", 0, image_view_viewnavmenu);
- if(show_uvedit) uiItemO(layout, NULL, 0, "IMAGE_OT_view_selected");
- uiItemO(layout, NULL, 0, "IMAGE_OT_view_all");
-
- if(sa->full) uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Tile Window", Ctrl UpArrow
- else uiItemO(layout, NULL, 0, "SCREEN_OT_screen_full_area"); // "Maximize Window", Ctr DownArrow
-}
-
-static void image_selectmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemO(layout, NULL, 0, "UV_OT_select_border");
- uiItemBooleanO(layout, "Border Select Pinned", 0, "UV_OT_select_border", "pinned", 1); // Border Select Pinned|Shift B
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "UV_OT_select_all_toggle");
- uiItemO(layout, NULL, 0, "UV_OT_select_invert");
- uiItemO(layout, NULL, 0, "UV_OT_unlink_selection");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "UV_OT_select_pinned");
- uiItemO(layout, NULL, 0, "UV_OT_select_linked");
-}
-
#if 0
static void do_image_imagemenu(void *arg, int event)
{
@@ -183,61 +94,7 @@ static void do_image_imagemenu(void *arg, int event)
if (event >= 20) BPY_menu_do_python(PYMENU_IMAGE, event - 20);
#endif
}
-#endif
-
-static void image_imagemenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- bScreen *sc= CTX_wm_screen(C);
- SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
- PointerRNA spaceptr, imaptr;
- Image *ima;
- ImBuf *ibuf;
- int show_render;
-
- /* retrieve state */
- ima= ED_space_image(sima);
- ibuf= ED_space_image_buffer(sima);
-
- show_render= ED_space_image_show_render(sima);
-
- RNA_pointer_create(&sc->id, &RNA_SpaceImageEditor, sima, &spaceptr);
-
- /* create menu */
- uiItemO(layout, NULL, 0, "IMAGE_OT_new"); // New...
- uiItemO(layout, NULL, 0, "IMAGE_OT_open"); // Open...
-
- if(ima) {
- if(!show_render) {
- uiItemO(layout, NULL, 0, "IMAGE_OT_replace"); // Replace...
- uiItemO(layout, NULL, 0, "IMAGE_OT_reload"); // Reload...
- }
- uiItemO(layout, NULL, 0, "IMAGE_OT_save"); // Save
- uiItemO(layout, NULL, 0, "IMAGE_OT_save_as"); // Save As...
- if(ima->source == IMA_SRC_SEQUENCE)
- uiItemO(layout, NULL, 0, "IMAGE_OT_save_sequence"); // Save Changed Sequence Images
- if(!show_render) {
- uiItemS(layout);
-
- if(ima->packedfile) uiItemO(layout, NULL, 0, "IMAGE_OT_unpack"); // Unpack Image...
- else uiItemO(layout, NULL, 0, "IMAGE_OT_pack"); // Pack Image
-
- /* only for dirty && specific image types : XXX poll? */
- if(ibuf && (ibuf->userflags & IB_BITMAPDIRTY))
- if(ELEM(ima->source, IMA_SRC_FILE, IMA_SRC_GENERATED) && ima->type != IMA_TYPE_MULTILAYER)
- uiItemBooleanO(layout, "Pack As PNG", 0, "IMAGE_OT_pack", "as_png", 1); // Pack Image As PNG
-
- uiItemS(layout);
-
- uiItemR(layout, NULL, 0, &spaceptr, "image_painting", 0, 0, 0);
-
- /* move to realtime properties panel */
- RNA_id_pointer_create(&ima->id, &imaptr);
- uiItemMenuEnumR(layout, NULL, 0, &imaptr, "mapping");
- }
- }
-
-#if 0
#ifndef DISABLE_PYTHON
{
BPyMenu *pym;
@@ -253,33 +110,6 @@ static void image_imagemenu(bContext *C, uiLayout *layout, void *arg_unused)
}
#endif
#endif
-}
-
-static void image_uvs_showhidemenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemO(layout, NULL, 0, "UV_OT_reveal");
- uiItemO(layout, NULL, 0, "UV_OT_hide");
- uiItemBooleanO(layout, "Hide Unselected", 0, "UV_OT_hide", "unselected", 1);
-}
-
-static void image_uvs_transformmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemEnumO(layout, NULL, 0, "TFM_OT_transform", "mode", TFM_TRANSLATION);
- uiItemEnumO(layout, NULL, 0, "TFM_OT_transform", "mode", TFM_ROTATION);
- uiItemEnumO(layout, NULL, 0, "TFM_OT_transform", "mode", TFM_RESIZE);
-}
-
-static void image_uvs_mirrormenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemEnumO(layout, NULL, 0, "UV_OT_mirror", "axis", 'x'); // "X Axis", M, 1
- uiItemEnumO(layout, NULL, 0, "UV_OT_mirror", "axis", 'y'); // "Y Axis", M, 2
-}
-
-static void image_uvs_weldalignmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- uiItemO(layout, NULL, 0, "UV_OT_weld"); // W, 1
- uiItemsEnumO(layout, "UV_OT_align", "axis"); // W, 2/3/4
-}
#if 0
#ifndef DISABLE_PYTHON
@@ -316,87 +146,7 @@ static void image_uvs_scriptsmenu (void *args_unused)
#endif /* DISABLE_PYTHON */
#endif
-static void image_uvsmenu(bContext *C, uiLayout *layout, void *arg_unused)
-{
- bScreen *sc= CTX_wm_screen(C);
- Scene *scene= CTX_data_scene(C);
- SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
- PointerRNA uvptr, sceneptr;
- Image *ima;
- ImBuf *ibuf;
-
- /* retrieve state */
- ima= ED_space_image(sima);
- ibuf= ED_space_image_buffer(sima);
-
- RNA_pointer_create(&sc->id, &RNA_SpaceUVEditor, sima, &uvptr);
- RNA_id_pointer_create(&scene->id, &sceneptr);
-
- /* create menu */
- uiItemR(layout, NULL, 0, &uvptr, "snap_to_pixels", 0, 0, 0);
- uiItemR(layout, NULL, 0, &uvptr, "constrain_to_image_bounds", 0, 0, 0);
-
- uiItemS(layout);
-
- uiItemR(layout, NULL, 0, &uvptr, "live_unwrap", 0, 0, 0);
- uiItemO(layout, NULL, 0, "UV_OT_unwrap");
- uiItemBooleanO(layout, "Unpin", 0, "UV_OT_pin", "clear", 1);
- uiItemO(layout, NULL, 0, "UV_OT_pin");
-
- uiItemS(layout);
-
- uiItemO(layout, NULL, 0, "UV_OT_pack_islands");
- uiItemO(layout, NULL, 0, "UV_OT_average_islands_scale");
- uiItemO(layout, NULL, 0, "UV_OT_minimize_stretch");
- uiItemO(layout, NULL, 0, "UV_OT_stitch");
-
- uiItemS(layout);
-
- uiItemMenuF(layout, "Transform", 0, image_uvs_transformmenu);
- uiItemMenuF(layout, "Mirror", 0, image_uvs_mirrormenu);
- uiItemMenuF(layout, "Weld/Align", 0, image_uvs_weldalignmenu);
-
- uiItemS(layout);
-
- uiItemR(layout, NULL, 0, &sceneptr, "proportional_editing", 0, 0, 0);
- uiItemMenuEnumR(layout, NULL, 0, &sceneptr, "proportional_editing_falloff");
-
- uiItemS(layout);
-
- uiItemMenuF(layout, "Show/Hide Faces", 0, image_uvs_showhidemenu);
-
#if 0
-#ifndef DISABLE_PYTHON
- uiItemS(layout);
-
- uiItemMenuF(layout, "Scripts", image_uvs_scriptsmenu);
-#endif
-#endif
-}
-
-static void image_menu_uvlayers(Object *obedit, char *menustr, int *active)
-{
- Mesh *me= (Mesh*)obedit->data;
- EditMesh *em= BKE_mesh_get_editmesh(me);
- CustomDataLayer *layer;
- int i, count = 0;
-
- menustr[0]= '\0';
-
- for(i=0; i<em->fdata.totlayer; i++) {
- layer = &em->fdata.layers[i];
-
- if(layer->type == CD_MTFACE) {
- menustr += sprintf(menustr, "%s%%x%d|", layer->name, count);
- count++;
- }
- }
-
- *active= CustomData_get_active_layer(&em->fdata, CD_MTFACE);
-
- BKE_mesh_end_editmesh(me, em);
-}
-
static void do_image_buttons(bContext *C, void *arg, int event)
{
switch(event) {
@@ -405,7 +155,6 @@ static void do_image_buttons(bContext *C, void *arg, int event)
break;
}
-#if 0
ToolSettings *settings= G.scene->toolsettings;
ID *id, *idtest;
int nr;
@@ -660,279 +409,9 @@ static void do_image_buttons(bContext *C, void *arg, int event)
imagespace_composite_flipbook(curarea);
break;
}
-#endif
-}
-
-#if 0
-static void do_image_buttons_set_uvlayer_callback(void *act, void *data)
-{
- CustomData_set_layer_active(&G.editMesh->fdata, CD_MTFACE, *((int *)act));
-
- BIF_undo_push("Set Active UV Texture");
- allqueue(REDRAWVIEW3D, 0);
- allqueue(REDRAWBUTSEDIT, 0);
- allqueue(REDRAWIMAGE, 0);
}
#endif
-static void sima_idpoin_handle(bContext *C, ID *id, int event)
-{
- SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
-
- switch(event) {
- case UI_ID_BROWSE:
- case UI_ID_DELETE:
- ED_space_image_set(C, sima, scene, obedit, (Image*)id);
- ED_undo_push(C, "Assign Image UV");
- break;
- case UI_ID_RENAME:
- break;
- case UI_ID_ADD_NEW:
- WM_operator_name_call(C, "IMAGE_OT_new", WM_OP_INVOKE_REGION_WIN, NULL);
- break;
- case UI_ID_OPEN:
- WM_operator_name_call(C, "IMAGE_OT_open", WM_OP_INVOKE_REGION_WIN, NULL);
- break;
- case UI_ID_PIN:
- ED_area_tag_refresh(CTX_wm_area(C));
- break;
- }
-}
-
-void image_header_buttons(const bContext *C, ARegion *ar)
-{
- bScreen *sc= CTX_wm_screen(C);
- ScrArea *sa= CTX_wm_area(C);
- Scene *scene= CTX_data_scene(C);
- SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
- Image *ima;
- ImBuf *ibuf;
- uiBlock *block;
- uiBut *but;
- PointerRNA spaceptr, uvptr, sceneptr;
- int xco, yco= 3, show_uvedit, show_render, show_paint, pinflag;
-
- /* retrieve state */
- ima= ED_space_image(sima);
- ibuf= ED_space_image_buffer(sima);
-
- show_render= ED_space_image_show_render(sima);
- show_paint= ED_space_image_show_paint(sima);
- show_uvedit= ED_space_image_show_uvedit(sima, CTX_data_edit_object(C));
-
- RNA_pointer_create(&sc->id, &RNA_SpaceImageEditor, sima, &spaceptr);
- RNA_pointer_create(&sc->id, &RNA_SpaceUVEditor, sima, &uvptr);
- RNA_id_pointer_create(&scene->id, &sceneptr);
-
- /* create block */
- block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS);
- uiBlockSetHandleFunc(block, do_image_buttons, NULL);
-
- xco= ED_area_header_standardbuttons(C, block, yco);
-
- /* create pulldown menus */
- if((sa->flag & HEADER_NO_PULLDOWN)==0) {
- char *menuname;
- int xmax;
-
- xmax= GetButStringLength("View");
- uiDefMenuBut(block, image_viewmenu, NULL, "View", xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- if(show_uvedit) {
- xmax= GetButStringLength("Select");
- uiDefMenuBut(block, image_selectmenu, NULL, "Select", xco, yco, xmax-3, 20, "");
- xco+= xmax;
- }
-
- menuname= (ibuf && (ibuf->userflags & IB_BITMAPDIRTY))? "Image*": "Image";
- xmax= GetButStringLength(menuname);
- uiDefMenuBut(block, image_imagemenu, NULL, menuname, xco, yco, xmax-3, 20, "");
- xco+= xmax;
-
- if(show_uvedit) {
- xmax= GetButStringLength("UVs");
- uiDefMenuBut(block, image_uvsmenu, NULL, "UVs", xco, yco, xmax-3, 20, "");
- xco+= xmax;
- }
- }
-
- uiBlockSetEmboss(block, UI_EMBOSS);
-
- /* image select */
-
- pinflag= (show_render)? 0: UI_ID_PIN;
- xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID*)sima->image, ID_IM, &sima->pin, xco, yco,
- sima_idpoin_handle, UI_ID_BROWSE|UI_ID_BROWSE_RENDER|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_OPEN|UI_ID_DELETE|pinflag);
- xco += 8;
-
- if(ima && !ELEM3(ima->source, IMA_SRC_SEQUENCE, IMA_SRC_MOVIE, IMA_SRC_VIEWER) && ima->ok) {
- /* XXX this should not be a static var */
- static int headerbuttons_packdummy;
-
- headerbuttons_packdummy = 0;
-
- if (ima->packedfile) {
- headerbuttons_packdummy = 1;
- }
- if (ima->packedfile && ibuf && (ibuf->userflags & IB_BITMAPDIRTY))
- uiDefIconButBitI(block, TOG, 1, 0 /* XXX B_SIMA_REPACK */, ICON_UGLYPACKAGE, xco,yco,XIC,YIC, &headerbuttons_packdummy, 0, 0, 0, 0, "Re-Pack this image as PNG");
- else
- uiDefIconButBitI(block, TOG, 1, 0 /* XXX B_SIMAPACKIMA */, ICON_PACKAGE, xco,yco,XIC,YIC, &headerbuttons_packdummy, 0, 0, 0, 0, "Pack/Unpack this image");
-
- xco+= XIC+8;
- }
-
- /* uv editing */
- if(show_uvedit) {
- /* pivot */
- uiDefIconTextButS(block, ICONTEXTROW, B_NOP, ICON_ROTATE,
- "Pivot: %t|Bounding Box Center %x0|Median Point %x3|2D Cursor %x1",
- xco,yco,XIC+10,YIC, &ar->v2d.around, 0, 3.0, 0, 0,
- "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period)");
- xco+= XIC + 18;
-
- /* selection modes */
- uiDefIconButBitS(block, TOG, UV_SYNC_SELECTION, B_REDR, ICON_EDIT, xco,yco,XIC,YIC, &scene->toolsettings->uv_flag, 0, 0, 0, 0, "Sync UV and Mesh Selection");
- xco+= XIC+8;
-
- if(scene->toolsettings->uv_flag & UV_SYNC_SELECTION) {
- uiBlockBeginAlign(block);
-
- uiDefIconButBitS(block, TOG, SCE_SELECT_VERTEX, B_REDR, ICON_VERTEXSEL,
- xco,yco,XIC,YIC, &scene->toolsettings->selectmode, 1.0, 0.0, 0, 0, "Vertex select mode");
- uiDefIconButBitS(block, TOG, SCE_SELECT_EDGE, B_REDR, ICON_EDGESEL,
- xco+=XIC,yco,XIC,YIC, &scene->toolsettings->selectmode, 1.0, 0.0, 0, 0, "Edge select mode");
- uiDefIconButBitS(block, TOG, SCE_SELECT_FACE, B_REDR, ICON_FACESEL,
- xco+=XIC,yco,XIC,YIC, &scene->toolsettings->selectmode, 1.0, 0.0, 0, 0, "Face select mode");
-
- uiBlockEndAlign(block);
- }
- else {
- uiBlockBeginAlign(block);
-
- uiDefIconButS(block, ROW, B_REDR, ICON_VERTEXSEL,
- xco,yco,XIC,YIC, &scene->toolsettings->uv_selectmode, 1.0, UV_SELECT_VERTEX, 0, 0, "Vertex select mode");
- uiDefIconButS(block, ROW, B_REDR, ICON_EDGESEL,
- xco+=XIC,yco,XIC,YIC, &scene->toolsettings->uv_selectmode, 1.0, UV_SELECT_EDGE, 0, 0, "Edge select mode");
- uiDefIconButS(block, ROW, B_REDR, ICON_FACESEL,
- xco+=XIC,yco,XIC,YIC, &scene->toolsettings->uv_selectmode, 1.0, UV_SELECT_FACE, 0, 0, "Face select mode");
- uiDefIconButS(block, ROW, B_REDR, ICON_LINKEDSEL,
- xco+=XIC,yco,XIC,YIC, &scene->toolsettings->uv_selectmode, 1.0, UV_SELECT_ISLAND, 0, 0, "Island select mode");
-
- uiBlockEndAlign(block);
-
- /* would use these if const's could go in strings
- * SI_STICKY_LOC SI_STICKY_DISABLE SI_STICKY_VERTEX */
- but = uiDefIconTextButC(block, ICONTEXTROW, B_REDR, ICON_STICKY_UVS_LOC,
- "Sticky UV Selection: %t|Disable%x1|Shared Location%x0|Shared Vertex%x2",
- xco+=XIC+10,yco,XIC+10,YIC, &(sima->sticky), 0, 3.0, 0, 0,
- "Sticky UV Selection (Hotkeys: Shift C, Alt C, Ctrl C)");
- }
-
- xco+= XIC + 16;
-
- /* snap options, identical to options in 3d view header */
- uiBlockBeginAlign(block);
-
- if (scene->toolsettings->snap_flag & SCE_SNAP) {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,yco,XIC,YIC, &scene->toolsettings->snap_flag, 0, 0, 0, 0, "Use Snap or Grid (Shift Tab).");
- xco+= XIC;
- uiDefButS(block, MENU, B_NOP, "Mode%t|Closest%x0|Center%x1|Median%x2",xco,yco,70,YIC, &scene->toolsettings->snap_target, 0, 0, 0, 0, "Snap Target Mode.");
- xco+= 70;
- }
- else {
- uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,yco,XIC,YIC, &scene->toolsettings->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab).");
- xco+= XIC;
- }
-
- uiBlockEndAlign(block);
- xco+= 8;
-
- /* uv layers */
- {
- Object *obedit= CTX_data_edit_object(C);
- char menustr[34*MAX_MTFACE];
- static int act;
-
- image_menu_uvlayers(obedit, menustr, &act);
-
- but = uiDefButI(block, MENU, B_NOP, menustr ,xco,yco,85,YIC, &act, 0, 0, 0, 0, "Active UV Layer for editing.");
- // uiButSetFunc(but, do_image_buttons_set_uvlayer_callback, &act, NULL);
-
- xco+= 85;
- }
-
- xco+= 8;
- }
-
- if(ima) {
- RenderResult *rr;
-
- /* render layers and passes */
- rr= BKE_image_get_renderresult(scene, ima);
- if(rr) {
- uiBlockBeginAlign(block);
-#if 0
- uiblock_layer_pass_buttons(block, rr, &sima->iuser, B_REDR, xco, 0, 160);
-#endif
- uiBlockEndAlign(block);
- xco+= 166;
- }
-
- /* painting */
- uiDefIconButR(block, TOG, B_REDR, ICON_TPAINT_HLT, xco,yco,XIC,YIC, &spaceptr, "image_painting", 0, 0, 0, 0, 0, NULL);
- xco+= XIC+8;
-
- /* image draw options */
- uiBlockBeginAlign(block);
- uiDefIconButR(block, ROW, B_REDR, ICON_IMAGE_RGB, xco,yco,XIC,YIC, &spaceptr, "draw_channels", 0, 0, 0, 0, 0, NULL);
- xco+= XIC;
- if(ibuf==NULL || ibuf->channels==4) {
- uiDefIconButR(block, ROW, B_REDR, ICON_IMAGE_RGB_ALPHA, xco,yco,XIC,YIC, &spaceptr, "draw_channels", 0, 0, SI_USE_ALPHA, 0, 0, NULL);
- xco+= XIC;
- uiDefIconButR(block, ROW, B_REDR, ICON_IMAGE_ALPHA, xco,yco,XIC,YIC, &spaceptr, "draw_channels", 0, 0, SI_SHOW_ALPHA, 0, 0, NULL);
- xco+= XIC;
- }
- if(ibuf) {
- if(ibuf->zbuf || ibuf->zbuf_float || (ibuf->channels==1)) {
- uiDefIconButR(block, ROW, B_REDR, ICON_IMAGE_ZDEPTH, xco,yco,XIC,YIC, &spaceptr, "draw_channels", 0, 0, SI_SHOW_ZBUF, 0, 0, NULL);
- xco+= XIC;
- }
- }
-#ifdef WITH_LCMS
- uiDefIconButR(block, ROW, B_REDR, ICON_IMAGE_ALPHA, xco,yco,XIC,YIC, &spaceptr, "draw_channels", 0, 0, SI_COLOR_CORRECTION, 0, 0, NULL);
- xco+= XIC;
-#endif
- xco+= 8;
-
- /* record & play */
- uiBlockBeginAlign(block);
- if(ima->type==IMA_TYPE_COMPOSITE) {
- uiDefIconButO(block, BUT, "IMAGE_OT_record_composite", WM_OP_INVOKE_REGION_WIN, ICON_REC, xco, yco, XIC, YIC, NULL); // Record Composite
- xco+= XIC;
- }
- if((ima->type==IMA_TYPE_COMPOSITE) || ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) {
-//XXX uiDefIconButO(block, BUT, "IMAGE_OT_play_composite", WM_OP_INVOKE_REGION_WIN, ICON_PLAY, xco, yco, XIC, YIC, NULL); // PLAY
- xco+= XIC;
- }
- uiBlockEndAlign(block);
- xco+= 8;
-
- }
-
- /* draw lock */
- uiDefIconButR(block, ICONTOG, 0, ICON_UNLOCKED, xco,yco,XIC,YIC, &spaceptr, "update_automatically", 0, 0, 0, 0, 0, NULL);
-
- /* always as last */
- UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin);
-
- uiEndBlock(C, block);
- uiDrawBlock(C, block);
-}
-
/********************** toolbox operator *********************/
static int toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event)
@@ -948,10 +427,10 @@ static int toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event)
pup= uiPupMenuBegin(C, "Toolbox", 0);
layout= uiPupMenuLayout(pup);
- uiItemMenuF(layout, "View", 0, image_viewmenu);
- if(show_uvedit) uiItemMenuF(layout, "Select", 0, image_selectmenu);
- uiItemMenuF(layout, "Image", 0, image_imagemenu);
- if(show_uvedit) uiItemMenuF(layout, "UVs", 0, image_uvsmenu);
+ uiItemM(layout, C, NULL, 0, "IMAGE_MT_view");
+ if(show_uvedit) uiItemM(layout, C, NULL, 0, "IMAGE_MT_select");
+ uiItemM(layout, C, NULL, 0, "IMAGE_MT_image");
+ if(show_uvedit) uiItemM(layout, C, NULL, 0, "IMAGE_MT_uvs");
uiPupMenuEnd(C, pup);
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 24781cc115e..358da483744 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -1060,7 +1060,7 @@ void IMAGE_OT_new(wmOperatorType *ot)
/* api callbacks */
ot->exec= new_exec;
- ot->invoke= WM_operator_redo;
+ ot->invoke= WM_operator_props_popup;
ot->poll= ED_operator_image_active;
/* flags */
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index 7d6faa00dfc..709fbb6299b 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -294,6 +294,13 @@ static void image_listener(ScrArea *sa, wmNotifier *wmn)
case NC_IMAGE:
ED_area_tag_redraw(sa);
break;
+ case NC_OBJECT:
+ switch(wmn->data) {
+ case ND_GEOM_SELECT:
+ case ND_GEOM_DATA:
+ ED_area_tag_redraw(sa);
+ break;
+ }
}
}
@@ -362,7 +369,6 @@ static void image_main_area_set_view2d(SpaceImage *sima, ARegion *ar, Scene *sce
ar->v2d.mask.ymax= winy;
/* which part of the image space do we see? */
- /* same calculation as in lrectwrite: area left and down*/
x1= ar->winrct.xmin+(winx-sima->zoom*w)/2;
y1= ar->winrct.ymin+(winy-sima->zoom*h)/2;
@@ -395,6 +401,10 @@ static void image_main_area_init(wmWindowManager *wm, ARegion *ar)
/* image paint polls for mode */
keymap= WM_keymap_listbase(wm, "ImagePaint", SPACE_IMAGE, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
+
+ /* XXX need context here?
+ keymap= WM_keymap_listbase(wm, "UVEdit", 0, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);*/
/* own keymaps */
keymap= WM_keymap_listbase(wm, "Image Generic", SPACE_IMAGE, 0);
@@ -459,13 +469,6 @@ static void image_main_area_listener(ARegion *ar, wmNotifier *wmn)
break;
}
break;
- case NC_OBJECT:
- switch(wmn->data) {
- case ND_GEOM_SELECT:
- case ND_GEOM_DATA:
- ED_region_tag_redraw(ar);
- break;
- }
}
}
@@ -585,7 +588,6 @@ void ED_spacetype_image(void)
BLI_addhead(&st->regiontypes, art);
-
BKE_spacetype_register(st);
}
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index f7f637670b5..89d81f846d2 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -74,6 +74,7 @@
#include "ED_space_api.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_types.h"
#include "RNA_access.h"
@@ -1686,18 +1687,54 @@ void node_mute(SpaceNode *snode)
}
-void node_adduplicate(SpaceNode *snode)
+#endif
+
+int node_duplicate_exec(bContext *C, wmOperator *op)
{
+ SpaceNode *snode= (SpaceNode*)CTX_wm_space_data(C);
ntreeCopyTree(snode->edittree, 1); /* 1 == internally selected nodes */
ntreeSolveOrder(snode->edittree);
snode_verify_groups(snode);
- // XXX snode_handle_recalc(snode);
+ snode_handle_recalc(C, snode);
+
+ return OPERATOR_FINISHED;
+}
+
+static int node_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ node_duplicate_exec(C, op);
+
+ RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
+ WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+
+ return OPERATOR_FINISHED;
+}
-// XXX transform_nodes(snode->edittree, 'g', "Duplicate");
+void NODE_OT_duplicate(wmOperatorType *ot)
+{
+
+ /* identifiers */
+ ot->name= "Duplicate Nodes";
+ ot->description = "Duplicate the nodes.";
+ ot->idname= "NODE_OT_duplicate";
+
+ /* api callbacks */
+ ot->invoke= node_duplicate_invoke;
+ ot->exec= node_duplicate_exec;
+
+ ot->poll= ED_operator_node_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* to give to transform */
+ RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX);
}
+#if 0
+
static void node_insert_convertor(SpaceNode *snode, bNodeLink *link)
{
bNode *newnode= NULL;
diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h
index b73f57f935f..d6680457376 100644
--- a/source/blender/editors/space_node/node_intern.h
+++ b/source/blender/editors/space_node/node_intern.h
@@ -82,6 +82,7 @@ void snode_composite_job(const struct bContext *C, ScrArea *sa);
bNode *snode_get_editgroup(SpaceNode *snode);
void snode_autoconnect(SpaceNode *snode, bNode *node_to, int flag);
+void NODE_OT_duplicate(struct wmOperatorType *ot);
void NODE_OT_link(struct wmOperatorType *ot);
void NODE_OT_delete(struct wmOperatorType *ot);
void NODE_OT_resize(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c
index 7a1cc24fa58..f78abb28313 100644
--- a/source/blender/editors/space_node/node_ops.c
+++ b/source/blender/editors/space_node/node_ops.c
@@ -37,8 +37,7 @@
#include "ED_space_api.h"
#include "ED_screen.h"
-
-#include "BIF_transform.h"
+#include "ED_transform.h"
#include "RNA_access.h"
#include "RNA_define.h"
@@ -59,6 +58,8 @@ void node_operatortypes(void)
WM_operatortype_append(NODE_OT_link);
WM_operatortype_append(NODE_OT_resize);
WM_operatortype_append(NODE_OT_links_cut);
+ WM_operatortype_append(NODE_OT_duplicate);
+
}
void node_keymap(struct wmWindowManager *wm)
@@ -71,6 +72,8 @@ void node_keymap(struct wmWindowManager *wm)
RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select_extend", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select_extend", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
+ WM_keymap_add_item(keymap, "NODE_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
+
WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_resize", LEFTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_visibility_toggle", LEFTMOUSE, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 7cd81faede1..a030603996c 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -66,8 +66,6 @@
#include "BKE_utildefines.h"
#include "BKE_report.h"
-#include "BIF_transform.h"
-
#include "WM_api.h"
#include "WM_types.h"
@@ -82,6 +80,7 @@
#include "ED_space_api.h"
#include "ED_types.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_util.h"
#include "UI_interface.h"
@@ -1855,12 +1854,12 @@ static int sequencer_add_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *
return OPERATOR_FINISHED;
}
-void SEQUENCER_OT_duplicate_add(wmOperatorType *ot)
+void SEQUENCER_OT_duplicate(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Add Duplicate";
- ot->idname= "SEQUENCER_OT_duplicate_add";
+ ot->name= "Duplicate";
+ ot->idname= "SEQUENCER_OT_duplicate";
/* api callbacks */
ot->invoke= sequencer_add_duplicate_invoke;
diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h
index 6d61f743917..ac396440a00 100644
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@ -83,7 +83,7 @@ void SEQUENCER_OT_lock(struct wmOperatorType *ot);
void SEQUENCER_OT_unlock(struct wmOperatorType *ot);
void SEQUENCER_OT_reload(struct wmOperatorType *ot);
void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot);
-void SEQUENCER_OT_duplicate_add(struct wmOperatorType *ot);
+void SEQUENCER_OT_duplicate(struct wmOperatorType *ot);
void SEQUENCER_OT_delete(struct wmOperatorType *ot);
void SEQUENCER_OT_images_separate(struct wmOperatorType *ot);
void SEQUENCER_OT_meta_toggle(struct wmOperatorType *ot);
@@ -104,7 +104,7 @@ void SEQUENCER_OT_select_linked_pick(struct wmOperatorType *ot);
void SEQUENCER_OT_select_handles(struct wmOperatorType *ot);
void SEQUENCER_OT_select_active_side(struct wmOperatorType *ot);
void SEQUENCER_OT_select_border(struct wmOperatorType *ot);
-void SEQUENCER_OT_select_invert(struct wmOperatorType *ot);
+void SEQUENCER_OT_select_inverse(struct wmOperatorType *ot);
/* sequencer_select.c */
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index c6e5fbe39a4..82047272049 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -41,8 +41,6 @@
#include "BLI_arithb.h"
#include "BLI_blenlib.h"
-#include "BIF_transform.h" /* transform keymap */
-
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_utildefines.h"
@@ -54,6 +52,7 @@
#include "WM_types.h"
#include "ED_screen.h"
+#include "ED_transform.h" /* transform keymap */
#include "sequencer_intern.h"
@@ -71,7 +70,7 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_unlock);
WM_operatortype_append(SEQUENCER_OT_reload);
WM_operatortype_append(SEQUENCER_OT_refresh_all);
- WM_operatortype_append(SEQUENCER_OT_duplicate_add);
+ WM_operatortype_append(SEQUENCER_OT_duplicate);
WM_operatortype_append(SEQUENCER_OT_delete);
WM_operatortype_append(SEQUENCER_OT_images_separate);
WM_operatortype_append(SEQUENCER_OT_meta_toggle);
@@ -84,7 +83,7 @@ void sequencer_operatortypes(void)
/* sequencer_select.c */
WM_operatortype_append(SEQUENCER_OT_select_all_toggle);
- WM_operatortype_append(SEQUENCER_OT_select_invert);
+ WM_operatortype_append(SEQUENCER_OT_select_inverse);
WM_operatortype_append(SEQUENCER_OT_select);
WM_operatortype_append(SEQUENCER_OT_select_more);
WM_operatortype_append(SEQUENCER_OT_select_less);
@@ -112,7 +111,7 @@ void sequencer_keymap(wmWindowManager *wm)
WM_keymap_add_item(keymap, "SEQUENCER_OT_properties", NKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "SEQUENCER_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "SEQUENCER_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_cut", KKEY, KM_PRESS, 0, 0)->ptr, "type", SEQ_CUT_SOFT);
RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_cut", KKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", SEQ_CUT_HARD);
@@ -128,7 +127,7 @@ void sequencer_keymap(wmWindowManager *wm)
WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_ALT, 0);
- WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate_add", DKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", XKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", DELKEY, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c
index bfd89ccdffb..335652235c6 100644
--- a/source/blender/editors/space_sequencer/sequencer_select.c
+++ b/source/blender/editors/space_sequencer/sequencer_select.c
@@ -244,7 +244,7 @@ void SEQUENCER_OT_select_all_toggle(struct wmOperatorType *ot)
/* (de)select operator */
-static int sequencer_select_invert_exec(bContext *C, wmOperator *op)
+static int sequencer_select_inverse_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, FALSE);
@@ -267,14 +267,14 @@ static int sequencer_select_invert_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void SEQUENCER_OT_select_invert(struct wmOperatorType *ot)
+void SEQUENCER_OT_select_inverse(struct wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Select Invert";
- ot->idname= "SEQUENCER_OT_select_invert";
+ ot->name= "Select Inverse";
+ ot->idname= "SEQUENCER_OT_select_inverse";
/* api callbacks */
- ot->exec= sequencer_select_invert_exec;
+ ot->exec= sequencer_select_inverse_exec;
ot->poll= ED_operator_sequencer_active;
diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c
index 0dfe7c9e660..48c14804b13 100644
--- a/source/blender/editors/space_text/text_draw.c
+++ b/source/blender/editors/space_text/text_draw.c
@@ -41,6 +41,7 @@
#include "DNA_text_types.h"
#include "DNA_space_types.h"
#include "DNA_screen_types.h"
+#include "DNA_userdef_types.h"
#include "BKE_global.h"
#include "BKE_main.h"
@@ -701,7 +702,7 @@ static int text_draw(SpaceText *st, char *str, int cshift, int maxwidth, int dra
/************************ draw scrollbar *****************************/
-static void calc_text_rcts(SpaceText *st, ARegion *ar)
+static void calc_text_rcts(SpaceText *st, ARegion *ar, rcti *scroll)
{
int lhlstart, lhlend, ltexth;
short barheight, barstart, hlstart, hlend, blank_lines;
@@ -713,6 +714,12 @@ static void calc_text_rcts(SpaceText *st, ARegion *ar)
ltexth= txt_get_span(st->text->lines.first, st->text->lines.last);
blank_lines = st->viewlines / 2;
+ /* nicer code: use scroll rect for entire bar */
+ scroll->xmin= 5;
+ scroll->xmax= 17;
+ scroll->ymin= 4;
+ scroll->ymax= 4+pix_available;
+
/* when resizing a vieport with the bar at the bottom to a greater height more blank lines will be added */
if(ltexth + blank_lines < st->top + st->viewlines) {
blank_lines = st->top + st->viewlines - ltexth;
@@ -728,9 +735,8 @@ static void calc_text_rcts(SpaceText *st, ARegion *ar)
}
barstart = (ltexth > 0)? ((pix_available - pix_bardiff) * st->top)/ltexth: 0;
- st->txtbar.xmin = 5;
- st->txtbar.xmax = 17;
- st->txtbar.ymax = ar->winy - pix_top_margin - barstart;
+ st->txtbar= *scroll;
+ st->txtbar.ymax -= barstart;
st->txtbar.ymin = st->txtbar.ymax - barheight;
CLAMP(st->txtbar.ymin, pix_bottom_margin, ar->winy - pix_top_margin);
@@ -796,8 +802,7 @@ static void calc_text_rcts(SpaceText *st, ARegion *ar)
hlend = hlstart + 2;
}
- st->txtscroll.xmin= 5;
- st->txtscroll.xmax= 17;
+ st->txtscroll= *scroll;
st->txtscroll.ymax= ar->winy - pix_top_margin - hlstart;
st->txtscroll.ymin= ar->winy - pix_top_margin - hlend;
@@ -805,19 +810,31 @@ static void calc_text_rcts(SpaceText *st, ARegion *ar)
CLAMP(st->txtscroll.ymax, pix_bottom_margin, ar->winy - pix_top_margin);
}
-static void draw_textscroll(SpaceText *st, ARegion *ar)
+static void draw_textscroll(SpaceText *st, ARegion *ar, rcti *scroll)
{
- UI_ThemeColorShade(TH_SHADE1, -20);
- glRecti(2, 2, 20, ar->winy-6);
- uiEmboss(2, 2, 20, ar->winy-6, 1);
-
- UI_ThemeColor(TH_SHADE1);
- glRecti(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax);
+ bTheme *btheme= U.themes.first;
+ uiWidgetColors wcol= btheme->tui.wcol_scroll;
+ char col[3];
+ float rad;
+
+// UI_ThemeColorShade(TH_SHADE1, -20);
+// glRecti(2, 2, 20, ar->winy-6);
+// uiEmboss(2, 2, 20, ar->winy-6, 1);
- UI_ThemeColor(TH_SHADE2);
- glRecti(st->txtscroll.xmin, st->txtscroll.ymin, st->txtscroll.xmax, st->txtscroll.ymax);
+// UI_ThemeColor(TH_SHADE1);
+// glRecti(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax);
- uiEmboss(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax, st->flags & ST_SCROLL_SELECT);
+// uiEmboss(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax, st->flags & ST_SCROLL_SELECT);
+
+ uiWidgetScrollDraw(&wcol, scroll, &st->txtbar, (st->flags & ST_SCROLL_SELECT)?UI_SCROLL_PRESSED:0);
+
+ uiSetRoundBox(15);
+ rad= 0.4f*MIN2(st->txtscroll.xmax - st->txtscroll.xmin, st->txtscroll.ymax - st->txtscroll.ymin);
+ UI_GetThemeColor3ubv(TH_HILITE, col);
+ glColor4ub(col[0], col[1], col[2], 48);
+ glEnable(GL_BLEND);
+ uiRoundBox(st->txtscroll.xmin+1, st->txtscroll.ymin, st->txtscroll.xmax-1, st->txtscroll.ymax, rad);
+ glDisable(GL_BLEND);
}
/************************** draw markers **************************/
@@ -1261,6 +1278,7 @@ void draw_text_main(SpaceText *st, ARegion *ar)
{
Text *text= st->text;
TextLine *tmp;
+ rcti scroll;
char linenr[12];
int i, x, y, linecount= 0;
@@ -1276,7 +1294,7 @@ void draw_text_main(SpaceText *st, ARegion *ar)
else st->viewlines= 0;
/* update rects for scroll */
- calc_text_rcts(st, ar);
+ calc_text_rcts(st, ar, &scroll); /* scroll will hold the entire bar size */
/* update syntax formatting if needed */
tmp= text->lines.first;
@@ -1343,7 +1361,8 @@ void draw_text_main(SpaceText *st, ARegion *ar)
/* draw other stuff */
draw_brackets(st, ar);
draw_markers(st, ar);
- draw_textscroll(st, ar);
+ glTranslatef(0.375f, 0.375f, 0.0f); /* XXX scroll requires exact pixel space */
+ draw_textscroll(st, ar, &scroll);
draw_documentation(st, ar);
draw_suggestion_list(st, ar);
diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c
index c0f71ae6124..ec3b716e616 100644
--- a/source/blender/editors/space_view3d/drawarmature.c
+++ b/source/blender/editors/space_view3d/drawarmature.c
@@ -1815,7 +1815,7 @@ static void draw_pose_channels(Scene *scene, View3D *v3d, RegionView3D *rv3d, Ba
if ( (arm->flag & ARM_DRAWAXES) && (arm->flag & ARM_POSEMODE) ) {
glPushMatrix();
glMultMatrixf(pchan->pose_mat);
- glTranslatef(0.0f, pchan->bone->length, 0.0f);
+ //glTranslatef(0.0f, pchan->bone->length, 0.0f);
drawaxes(0.25f*pchan->bone->length, 0, OB_ARROWS);
glPopMatrix();
}
@@ -1999,7 +1999,7 @@ static void draw_ebones(View3D *v3d, RegionView3D *rv3d, Object *ob, int dt)
if (arm->flag & ARM_DRAWAXES) {
glPushMatrix();
set_matrix_editbone(eBone);
- glTranslatef(0.0f, eBone->length, 0.0f);
+ //glTranslatef(0.0f, eBone->length, 0.0f);
drawaxes(eBone->length*0.25f, 0, OB_ARROWS);
glPopMatrix();
}
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 05490e2fce1..e8749537f5e 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -565,58 +565,6 @@ static void view3d_object_text_draw(View3D *v3d, ARegion *ar)
BLI_freelistN(&strings);
}
-void drawsolidcube(float size)
-{
- float n[3];
-
- glPushMatrix();
- glScalef(size, size, size);
-
- n[0]=0; n[1]=0; n[2]=0;
- glBegin(GL_QUADS);
- n[0]= -1.0;
- glNormal3fv(n);
- glVertex3fv(cube[0]); glVertex3fv(cube[1]); glVertex3fv(cube[2]); glVertex3fv(cube[3]);
- n[0]=0;
- glEnd();
-
- glBegin(GL_QUADS);
- n[1]= -1.0;
- glNormal3fv(n);
- glVertex3fv(cube[0]); glVertex3fv(cube[4]); glVertex3fv(cube[5]); glVertex3fv(cube[1]);
- n[1]=0;
- glEnd();
-
- glBegin(GL_QUADS);
- n[0]= 1.0;
- glNormal3fv(n);
- glVertex3fv(cube[4]); glVertex3fv(cube[7]); glVertex3fv(cube[6]); glVertex3fv(cube[5]);
- n[0]=0;
- glEnd();
-
- glBegin(GL_QUADS);
- n[1]= 1.0;
- glNormal3fv(n);
- glVertex3fv(cube[7]); glVertex3fv(cube[3]); glVertex3fv(cube[2]); glVertex3fv(cube[6]);
- n[1]=0;
- glEnd();
-
- glBegin(GL_QUADS);
- n[2]= 1.0;
- glNormal3fv(n);
- glVertex3fv(cube[1]); glVertex3fv(cube[5]); glVertex3fv(cube[6]); glVertex3fv(cube[2]);
- n[2]=0;
- glEnd();
-
- glBegin(GL_QUADS);
- n[2]= -1.0;
- glNormal3fv(n);
- glVertex3fv(cube[7]); glVertex3fv(cube[4]); glVertex3fv(cube[0]); glVertex3fv(cube[3]);
- glEnd();
-
- glPopMatrix();
-}
-
static void drawcube(void)
{
@@ -2941,6 +2889,227 @@ static int drawDispList(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *bas
return retval;
}
+/* *********** text drawing for particles ************* */
+static ListBase pstrings= {NULL, NULL};
+
+typedef struct ViewParticleString {
+ struct ViewParticleString *next, *prev;
+ float vec[3], col[4];
+ char str[128];
+ short mval[2];
+ short xoffs;
+} ViewParticleString;
+
+
+void view3d_particle_text_draw_add(float x, float y, float z, char *str, short xoffs)
+{
+ ViewObjectString *vos= MEM_callocN(sizeof(ViewObjectString), "ViewObjectString");
+
+ BLI_addtail(&pstrings, vos);
+ BLI_strncpy(vos->str, str, 128);
+ vos->vec[0]= x;
+ vos->vec[1]= y;
+ vos->vec[2]= z;
+ glGetFloatv(GL_CURRENT_COLOR, vos->col);
+ vos->xoffs= xoffs;
+}
+
+static void view3d_particle_text_draw(View3D *v3d, ARegion *ar)
+{
+ ViewObjectString *vos;
+ int tot= 0;
+
+ /* project first and test */
+ for(vos= pstrings.first; vos; vos= vos->next) {
+ project_short(ar, vos->vec, vos->mval);
+ if(vos->mval[0]!=IS_CLIPPED)
+ tot++;
+ }
+
+ if(tot) {
+ RegionView3D *rv3d= ar->regiondata;
+ int a;
+
+ if(rv3d->rflag & RV3D_CLIPPING)
+ for(a=0; a<6; a++)
+ glDisable(GL_CLIP_PLANE0+a);
+
+ wmPushMatrix();
+ ED_region_pixelspace(ar);
+
+ if(v3d->zbuf) glDepthMask(0);
+
+ for(vos= pstrings.first; vos; vos= vos->next) {
+ if(vos->mval[0]!=IS_CLIPPED) {
+ glColor3fv(vos->col);
+ BLF_draw_default((float)vos->mval[0]+vos->xoffs, (float)vos->mval[1], 2.0, vos->str);
+ }
+ }
+
+ if(v3d->zbuf) glDepthMask(1);
+
+ wmPopMatrix();
+
+ if(rv3d->rflag & RV3D_CLIPPING)
+ for(a=0; a<6; a++)
+ glEnable(GL_CLIP_PLANE0+a);
+ }
+
+ if(pstrings.first)
+ BLI_freelistN(&pstrings);
+}
+typedef struct ParticleDrawData {
+ float *vdata, *vd;
+ float *ndata, *nd;
+ float *cdata, *cd;
+ float *vedata, *ved;
+ float *ma_r, *ma_g, *ma_b;
+} ParticleDrawData;
+static void draw_particle(ParticleKey *state, int draw_as, short draw, float pixsize, float imat[4][4], float *draw_line, ParticleBillboardData *bb, ParticleDrawData *pdd)
+{
+ float vec[3], vec2[3];
+ float *vd = pdd->vd;
+ float *cd = pdd->cd;
+ float ma_r;
+ float ma_g;
+ float ma_b;
+
+ if(pdd->ma_r) {
+ ma_r = *pdd->ma_r;
+ ma_g = *pdd->ma_g;
+ ma_b = *pdd->ma_b;
+ }
+
+ switch(draw_as){
+ case PART_DRAW_DOT:
+ {
+ if(vd) {
+ VECCOPY(vd,state->co) pdd->vd+=3;
+ }
+ if(cd) {
+ cd[0]=ma_r;
+ cd[1]=ma_g;
+ cd[2]=ma_b;
+ pdd->cd+=3;
+ }
+ break;
+ }
+ case PART_DRAW_CROSS:
+ case PART_DRAW_AXIS:
+ {
+ vec[0]=2.0f*pixsize;
+ vec[1]=vec[2]=0.0;
+ QuatMulVecf(state->rot,vec);
+ if(draw_as==PART_DRAW_AXIS) {
+ cd[1]=cd[2]=cd[4]=cd[5]=0.0;
+ cd[0]=cd[3]=1.0;
+ cd[6]=cd[8]=cd[9]=cd[11]=0.0;
+ cd[7]=cd[10]=1.0;
+ cd[13]=cd[12]=cd[15]=cd[16]=0.0;
+ cd[14]=cd[17]=1.0;
+ cd+=18;
+
+ VECCOPY(vec2,state->co);
+ }
+ else {
+ if(cd) {
+ cd[0]=cd[3]=cd[6]=cd[9]=cd[12]=cd[15]=ma_r;
+ cd[1]=cd[4]=cd[7]=cd[10]=cd[13]=cd[16]=ma_g;
+ cd[2]=cd[5]=cd[8]=cd[11]=cd[14]=cd[17]=ma_b;
+ pdd->cd+=18;
+ }
+ VECSUB(vec2,state->co,vec);
+ }
+
+ VECADD(vec,state->co,vec);
+ VECCOPY(pdd->vd,vec); pdd->vd+=3;
+ VECCOPY(pdd->vd,vec2); pdd->vd+=3;
+
+ vec[1]=2.0f*pixsize;
+ vec[0]=vec[2]=0.0;
+ QuatMulVecf(state->rot,vec);
+ if(draw_as==PART_DRAW_AXIS){
+ VECCOPY(vec2,state->co);
+ }
+ else VECSUB(vec2,state->co,vec);
+
+ VECADD(vec,state->co,vec);
+ VECCOPY(pdd->vd,vec); pdd->vd+=3;
+ VECCOPY(pdd->vd,vec2); pdd->vd+=3;
+
+ vec[2]=2.0f*pixsize;
+ vec[0]=vec[1]=0.0;
+ QuatMulVecf(state->rot,vec);
+ if(draw_as==PART_DRAW_AXIS){
+ VECCOPY(vec2,state->co);
+ }
+ else VECSUB(vec2,state->co,vec);
+
+ VECADD(vec,state->co,vec);
+
+ VECCOPY(pdd->vd,vec); pdd->vd+=3;
+ VECCOPY(pdd->vd,vec2); pdd->vd+=3;
+ break;
+ }
+ case PART_DRAW_LINE:
+ {
+ VECCOPY(vec,state->vel);
+ Normalize(vec);
+ if(draw & PART_DRAW_VEL_LENGTH)
+ VecMulf(vec,VecLength(state->vel));
+ VECADDFAC(pdd->vd,state->co,vec,-draw_line[0]); pdd->vd+=3;
+ VECADDFAC(pdd->vd,state->co,vec,draw_line[1]); pdd->vd+=3;
+ if(cd) {
+ cd[0]=cd[3]=ma_r;
+ cd[1]=cd[4]=ma_g;
+ cd[2]=cd[5]=ma_b;
+ pdd->cd+=6;
+ }
+ break;
+ }
+ case PART_DRAW_CIRC:
+ {
+ if(pdd->ma_r)
+ glColor3f(ma_r,ma_g,ma_b);
+ drawcircball(GL_LINE_LOOP, state->co, pixsize, imat);
+ break;
+ }
+ case PART_DRAW_BB:
+ {
+ float xvec[3], yvec[3], zvec[3], bb_center[3];
+ if(cd) {
+ cd[0]=cd[3]=cd[6]=cd[9]=ma_r;
+ cd[1]=cd[4]=cd[7]=cd[10]=ma_g;
+ cd[2]=cd[5]=cd[8]=cd[11]=ma_b;
+ pdd->cd+=12;
+ }
+
+
+ VECCOPY(bb->vec, state->co);
+ VECCOPY(bb->vel, state->vel);
+
+ psys_make_billboard(bb, xvec, yvec, zvec, bb_center);
+
+ VECADD(pdd->vd,bb_center,xvec);
+ VECADD(pdd->vd,pdd->vd,yvec); pdd->vd+=3;
+
+ VECSUB(pdd->vd,bb_center,xvec);
+ VECADD(pdd->vd,pdd->vd,yvec); pdd->vd+=3;
+
+ VECSUB(pdd->vd,bb_center,xvec);
+ VECSUB(pdd->vd,pdd->vd,yvec); pdd->vd+=3;
+
+ VECADD(pdd->vd,bb_center,xvec);
+ VECSUB(pdd->vd,pdd->vd,yvec); pdd->vd+=3;
+
+ VECCOPY(pdd->nd, zvec); pdd->nd+=3;
+ VECCOPY(pdd->nd, zvec); pdd->nd+=3;
+ VECCOPY(pdd->nd, zvec); pdd->nd+=3;
+ VECCOPY(pdd->nd, zvec); pdd->nd+=3;
+ break;
+ }
+ }
+}
/* unified drawing of all new particle systems draw types except dupli ob & group */
/* mostly tries to use vertex arrays for speed */
@@ -2951,7 +3120,7 @@ static int drawDispList(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *bas
/* 5. start filling the arrays */
/* 6. draw the arrays */
/* 7. clean up */
-static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, ParticleSystem *psys, int dt)
+static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, ParticleSystem *psys, int ob_dt)
{
Object *ob=base->object;
ParticleSystemModifierData *psmd;
@@ -2959,14 +3128,15 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
ParticleData *pars, *pa;
ParticleKey state, *states=0;
ParticleBillboardData bb;
+ ParticleDrawData pdd;
Material *ma;
- float vel[3], vec[3], vec2[3], imat[4][4], bb_center[3];
- float timestep, pixsize=1.0, pa_size, pa_time, r_tilt;
+ float vel[3], imat[4][4];
+ float timestep, pixsize=1.0, pa_size, r_tilt, r_length;
+ float pa_time, pa_birthtime, pa_dietime;
float cfra= bsystem_time(scene, ob,(float)CFRA,0.0);
- float *vdata=0, *vedata=0, *cdata=0, *ndata=0, *vd=0, *ved=0, *cd=0, *nd=0, xvec[3], yvec[3], zvec[3];
float ma_r=0.0f, ma_g=0.0f, ma_b=0.0f;
- int a, totpart, totpoint=0, draw_as, totchild=0;
- int select=ob->flag&SELECT, create_cdata=0;
+ int a, totpart, totpoint=0, totve=0, drawn, draw_as, totchild=0;
+ int select=ob->flag&SELECT, create_cdata=0, need_v=0;
GLint polygonmode[2];
char val[32];
@@ -3015,13 +3185,9 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
else
totchild=psys->totchild*part->disp/100;
- ma= give_current_material(ob,part->omat);
+ memset(&pdd, 0, sizeof(ParticleDrawData));
- if(ma) {
- ma_r = ma->r;
- ma_g = ma->g;
- ma_b = ma->b;
- }
+ ma= give_current_material(ob,part->omat);
if(v3d->zbuf) glDepthMask(1);
@@ -3029,6 +3195,15 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
cpack(0xFFFFFF);
else if((ma) && (part->draw&PART_DRAW_MAT_COL)) {
glColor3f(ma->r,ma->g,ma->b);
+
+ ma_r = ma->r;
+ ma_g = ma->g;
+ ma_b = ma->b;
+
+ pdd.ma_r = &ma_r;
+ pdd.ma_g = &ma_g;
+ pdd.ma_b = &ma_b;
+
create_cdata = 1;
}
else
@@ -3038,8 +3213,6 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
timestep= psys_get_timestep(part);
- wmLoadMatrix(rv3d->viewmat);
-
if( (base->flag & OB_FROMDUPLI) && (ob->flag & OB_FROMGROUP) ) {
float mat[4][4];
Mat4MulMat4(mat, psys->imat, ob->obmat);
@@ -3119,6 +3292,9 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
break;
case PART_DRAW_PATH:
break;
+ case PART_DRAW_LINE:
+ need_v=1;
+ break;
}
if(part->draw & PART_DRAW_SIZE && part->draw_as!=PART_DRAW_CIRC){
Mat4CpyMat4(imat, rv3d->viewinv);
@@ -3129,40 +3305,45 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
/* 4. */
if(draw_as && draw_as!=PART_DRAW_PATH) {
int tot_vec_size = (totpart + totchild) * 3 * sizeof(float);
+
+ if(part->draw_as == PART_DRAW_REND && part->trail_count > 1)
+ tot_vec_size *= part->trail_count;
if(draw_as!=PART_DRAW_CIRC) {
switch(draw_as) {
case PART_DRAW_AXIS:
case PART_DRAW_CROSS:
if(draw_as != PART_DRAW_CROSS || create_cdata)
- cdata = MEM_callocN(tot_vec_size * 6, "particle_cdata");
- vdata = MEM_callocN(tot_vec_size * 6, "particle_vdata");
+ pdd.cdata = MEM_callocN(tot_vec_size * 6, "particle_cdata");
+ pdd.vdata = MEM_callocN(tot_vec_size * 6, "particle_vdata");
break;
case PART_DRAW_LINE:
if(create_cdata)
- cdata = MEM_callocN(tot_vec_size * 2, "particle_cdata");
- vdata = MEM_callocN(tot_vec_size * 2, "particle_vdata");
+ pdd.cdata = MEM_callocN(tot_vec_size * 2, "particle_cdata");
+ pdd.vdata = MEM_callocN(tot_vec_size * 2, "particle_vdata");
break;
case PART_DRAW_BB:
if(create_cdata)
- cdata = MEM_callocN(tot_vec_size * 4, "particle_cdata");
- vdata = MEM_callocN(tot_vec_size * 4, "particle_vdata");
- ndata = MEM_callocN(tot_vec_size * 4, "particle_vdata");
+ pdd.cdata = MEM_callocN(tot_vec_size * 4, "particle_cdata");
+ pdd.vdata = MEM_callocN(tot_vec_size * 4, "particle_vdata");
+ pdd.ndata = MEM_callocN(tot_vec_size * 4, "particle_vdata");
break;
default:
if(create_cdata)
- cdata=MEM_callocN(tot_vec_size, "particle_cdata");
- vdata=MEM_callocN(tot_vec_size, "particle_vdata");
+ pdd.cdata=MEM_callocN(tot_vec_size, "particle_cdata");
+ pdd.vdata=MEM_callocN(tot_vec_size, "particle_vdata");
}
}
- if(part->draw & PART_DRAW_VEL && draw_as != PART_DRAW_LINE)
- vedata = MEM_callocN(tot_vec_size * 2, "particle_vedata");
+ if(part->draw & PART_DRAW_VEL && draw_as != PART_DRAW_LINE) {
+ pdd.vedata = MEM_callocN(tot_vec_size * 2, "particle_vedata");
+ need_v = 1;
+ }
- vd=vdata;
- ved=vedata;
- cd=cdata;
- nd=ndata;
+ pdd.vd= pdd.vdata;
+ pdd.ved= pdd.vedata;
+ pdd.cd= pdd.cdata;
+ pdd.nd= pdd.ndata;
psys->lattice= psys_get_lattice(scene, ob, psys);
}
@@ -3176,6 +3357,8 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
if(pa->flag & PARS_NO_DISP || pa->flag & PARS_UNEXIST) continue;
pa_time=(cfra-pa->time)/pa->lifetime;
+ pa_birthtime=pa->time;
+ pa_dietime = pa->dietime;
pa_size=pa->size;
if((part->flag&PART_ABS_TIME)==0){
@@ -3209,12 +3392,13 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
#endif // XXX old animation system
}
- r_tilt=1.0f+pa->r_ave[0];
+ r_tilt = 1.0f + pa->r_ave[0];
+ r_length = 0.5f * (1.0f + pa->r_ave[1]);
}
else{
ChildParticle *cpa= &psys->child[a-totpart];
- pa_time=psys_get_child_time(psys,cpa,cfra);
+ pa_time=psys_get_child_time(psys,cpa,cfra,&pa_birthtime,&pa_dietime);
if((part->flag&PART_ABS_TIME)==0) {
if(ma && ma->ipo){
@@ -3238,148 +3422,80 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
pa_size=psys_get_child_size(psys,cpa,cfra,0);
- r_tilt=2.0f*cpa->rand[2];
+ r_tilt = 2.0f * cpa->rand[2];
+ r_length = cpa->rand[1];
}
if(draw_as!=PART_DRAW_PATH){
- state.time=cfra;
- if(psys_get_particle_state(scene,ob,psys,a,&state,0)){
- if(psys->parent)
- Mat4MulVecfl(psys->parent->obmat, state.co);
-
- /* create actiual particle data */
- switch(draw_as){
- case PART_DRAW_DOT:
- if(vd){
- VECCOPY(vd,state.co) vd+=3;
- }
- if(cd) {
- cd[0]=ma_r;
- cd[1]=ma_g;
- cd[2]=ma_b;
- cd+=3;
- }
- break;
- case PART_DRAW_CROSS:
- case PART_DRAW_AXIS:
- vec[0]=2.0f*pixsize;
- vec[1]=vec[2]=0.0;
- QuatMulVecf(state.rot,vec);
- if(draw_as==PART_DRAW_AXIS){
- cd[1]=cd[2]=cd[4]=cd[5]=0.0;
- cd[0]=cd[3]=1.0;
- cd[6]=cd[8]=cd[9]=cd[11]=0.0;
- cd[7]=cd[10]=1.0;
- cd[13]=cd[12]=cd[15]=cd[16]=0.0;
- cd[14]=cd[17]=1.0;
- cd+=18;
-
- VECCOPY(vec2,state.co);
- }
- else {
- if(cd) {
- cd[0]=cd[3]=cd[6]=cd[9]=cd[12]=cd[15]=ma_r;
- cd[1]=cd[4]=cd[7]=cd[10]=cd[13]=cd[16]=ma_g;
- cd[2]=cd[5]=cd[8]=cd[11]=cd[14]=cd[17]=ma_b;
- cd+=18;
- }
- VECSUB(vec2,state.co,vec);
- }
+ drawn = 0;
+ if(part->draw_as == PART_DRAW_REND && part->trail_count > 1) {
+ float length = part->path_end * (1.0 - part->randlength * r_length);
+ int trail_count = part->trail_count * (1.0 - part->randlength * r_length);
+ float ct = ((part->draw & PART_ABS_PATH_TIME) ? cfra : pa_time) - length;
+ float dt = length / (trail_count ? (float)trail_count : 1.0f);
+ int i=0;
+
+ ct+=dt;
+ for(i=0; i < trail_count; i++, ct += dt) {
+ if(part->draw & PART_ABS_PATH_TIME) {
+ if(ct < pa_birthtime || ct > pa_dietime)
+ continue;
+ }
+ else if(ct < 0.0f || ct > 1.0f)
+ continue;
- VECADD(vec,state.co,vec);
- VECCOPY(vd,vec); vd+=3;
- VECCOPY(vd,vec2); vd+=3;
-
- vec[1]=2.0f*pixsize;
- vec[0]=vec[2]=0.0;
- QuatMulVecf(state.rot,vec);
- if(draw_as==PART_DRAW_AXIS){
- VECCOPY(vec2,state.co);
- }
- else VECSUB(vec2,state.co,vec);
-
- VECADD(vec,state.co,vec);
- VECCOPY(vd,vec); vd+=3;
- VECCOPY(vd,vec2); vd+=3;
-
- vec[2]=2.0f*pixsize;
- vec[0]=vec[1]=0.0;
- QuatMulVecf(state.rot,vec);
- if(draw_as==PART_DRAW_AXIS){
- VECCOPY(vec2,state.co);
- }
- else VECSUB(vec2,state.co,vec);
-
- VECADD(vec,state.co,vec);
-
- VECCOPY(vd,vec); vd+=3;
- VECCOPY(vd,vec2); vd+=3;
- break;
- case PART_DRAW_LINE:
- VECCOPY(vec,state.vel);
- Normalize(vec);
- if(part->draw & PART_DRAW_VEL_LENGTH)
- VecMulf(vec,VecLength(state.vel));
- VECADDFAC(vd,state.co,vec,-part->draw_line[0]); vd+=3;
- VECADDFAC(vd,state.co,vec,part->draw_line[1]); vd+=3;
- if(cd) {
- cd[0]=cd[3]=ma_r;
- cd[1]=cd[4]=ma_g;
- cd[2]=cd[5]=ma_b;
- cd+=3;
- }
- break;
- case PART_DRAW_CIRC:
- if(create_cdata)
- glColor3f(ma_r,ma_g,ma_b);
- drawcircball(GL_LINE_LOOP, state.co, pixsize, imat);
- break;
- case PART_DRAW_BB:
- if(cd) {
- cd[0]=cd[3]=cd[6]=cd[9]=ma_r;
- cd[1]=cd[4]=cd[7]=cd[10]=ma_g;
- cd[2]=cd[5]=cd[8]=cd[11]=ma_b;
- cd+=12;
- }
+ state.time = (part->draw & PART_ABS_PATH_TIME) ? -ct : ct;
+ psys_get_particle_on_path(scene,ob,psys,a,&state,need_v);
+
+ if(psys->parent)
+ Mat4MulVecfl(psys->parent->obmat, state.co);
+ /* create actiual particle data */
+ if(draw_as == PART_DRAW_BB) {
bb.size = pa_size;
bb.tilt = part->bb_tilt * (1.0f - part->bb_rand_tilt * r_tilt);
- bb.time = pa_time;
- VECCOPY(bb.vec, state.co);
- VECCOPY(bb.vel, state.vel);
-
- psys_make_billboard(&bb, xvec, yvec, zvec, bb_center);
-
- VECADD(vd,bb_center,xvec);
- VECADD(vd,vd,yvec); vd+=3;
+ bb.time = ct;
+ }
- VECSUB(vd,bb_center,xvec);
- VECADD(vd,vd,yvec); vd+=3;
+ draw_particle(&state, draw_as, part->draw, pixsize, imat, part->draw_line, &bb, &pdd);
- VECSUB(vd,bb_center,xvec);
- VECSUB(vd,vd,yvec); vd+=3;
+ totpoint++;
+ drawn = 1;
+ }
+ }
+ else
+ {
+ state.time=cfra;
+ if(psys_get_particle_state(scene,ob,psys,a,&state,0)){
+ if(psys->parent)
+ Mat4MulVecfl(psys->parent->obmat, state.co);
+
+ /* create actiual particle data */
+ if(draw_as == PART_DRAW_BB) {
+ bb.size = pa_size;
+ bb.tilt = part->bb_tilt * (1.0f - part->bb_rand_tilt * r_tilt);
+ bb.time = pa_time;
+ }
- VECADD(vd,bb_center,xvec);
- VECSUB(vd,vd,yvec); vd+=3;
+ draw_particle(&state, draw_as, part->draw, pixsize, imat, part->draw_line, &bb, &pdd);
- VECCOPY(nd, zvec); nd+=3;
- VECCOPY(nd, zvec); nd+=3;
- VECCOPY(nd, zvec); nd+=3;
- VECCOPY(nd, zvec); nd+=3;
- break;
+ totpoint++;
+ drawn = 1;
}
+ }
- totpoint++;
-
+ if(drawn) {
/* additional things to draw for each particle */
/* (velocity, size and number) */
- if(vedata){
- VECCOPY(ved,state.co);
- ved+=3;
+ if(pdd.vedata){
+ VECCOPY(pdd.ved,state.co);
+ pdd.ved+=3;
VECCOPY(vel,state.vel);
VecMulf(vel,timestep);
- VECADD(ved,state.co,vel);
- ved+=3;
+ VECADD(pdd.ved,state.co,vel);
+ pdd.ved+=3;
+
+ totve++;
}
if(part->draw & PART_DRAW_SIZE){
@@ -3391,7 +3507,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
if(part->draw&PART_DRAW_NUM && !(G.f & G_RENDER_SHADOW)){
/* in path drawing state.co is the end point */
sprintf(val," %i",a);
- view3d_object_text_draw_add(state.co[0], state.co[1], state.co[2], val, 0);
+ view3d_particle_text_draw_add(state.co[0], state.co[1], state.co[2], val, 0);
}
}
}
@@ -3408,7 +3524,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glEnableClientState(GL_VERTEX_ARRAY);
/* setup gl flags */
- if(dt > OB_WIRE) {
+ if(ob_dt > OB_WIRE) {
glEnableClientState(GL_NORMAL_ARRAY);
if(part->draw&PART_DRAW_MAT_COL)
@@ -3436,7 +3552,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
if(path->steps > 0) {
glVertexPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->co);
- if(dt > OB_WIRE) {
+ if(ob_dt > OB_WIRE) {
glNormalPointer(GL_FLOAT, sizeof(ParticleCacheKey), path->vel);
if(part->draw&PART_DRAW_MAT_COL)
glColorPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->col);
@@ -3452,7 +3568,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
path=cache[a];
glVertexPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->co);
- if(dt > OB_WIRE) {
+ if(ob_dt > OB_WIRE) {
glNormalPointer(GL_FLOAT, sizeof(ParticleCacheKey), path->vel);
if(part->draw&PART_DRAW_MAT_COL)
glColorPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->col);
@@ -3463,7 +3579,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
/* restore & clean up */
- if(dt > OB_WIRE) {
+ if(ob_dt > OB_WIRE) {
if(part->draw&PART_DRAW_MAT_COL)
glDisable(GL_COLOR_ARRAY);
glDisable(GL_COLOR_MATERIAL);
@@ -3479,16 +3595,17 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glDisableClientState(GL_COLOR_ARRAY);
/* setup created data arrays */
- if(vdata){
+ if(pdd.vdata){
glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(3, GL_FLOAT, 0, vdata);
+ glVertexPointer(3, GL_FLOAT, 0, pdd.vdata);
}
else
glDisableClientState(GL_VERTEX_ARRAY);
- if(ndata && dt>OB_WIRE){
+ /* billboards are drawn this way */
+ if(pdd.ndata && ob_dt>OB_WIRE){
glEnableClientState(GL_NORMAL_ARRAY);
- glNormalPointer(GL_FLOAT, 0, ndata);
+ glNormalPointer(GL_FLOAT, 0, pdd.ndata);
glEnable(GL_LIGHTING);
}
else{
@@ -3496,9 +3613,9 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glDisable(GL_LIGHTING);
}
- if(cdata){
+ if(pdd.cdata){
glEnableClientState(GL_COLOR_ARRAY);
- glColorPointer(3, GL_FLOAT, 0, cdata);
+ glColorPointer(3, GL_FLOAT, 0, pdd.cdata);
}
/* draw created data arrays */
@@ -3511,7 +3628,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glDrawArrays(GL_LINES, 0, 2*totpoint);
break;
case PART_DRAW_BB:
- if(dt<=OB_WIRE)
+ if(ob_dt<=OB_WIRE)
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
glDrawArrays(GL_QUADS, 0, 4*totpoint);
@@ -3522,14 +3639,14 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
}
}
- if(vedata){
+ if(pdd.vedata){
glDisableClientState(GL_COLOR_ARRAY);
cpack(0xC0C0C0);
glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(3, GL_FLOAT, 0, vedata);
+ glVertexPointer(3, GL_FLOAT, 0, pdd.vedata);
- glDrawArrays(GL_LINES, 0, 2*totpoint);
+ glDrawArrays(GL_LINES, 0, 2*totve);
}
glPolygonMode(GL_FRONT, polygonmode[0]);
@@ -3544,14 +3661,14 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
if(states)
MEM_freeN(states);
- if(vdata)
- MEM_freeN(vdata);
- if(vedata)
- MEM_freeN(vedata);
- if(cdata)
- MEM_freeN(cdata);
- if(ndata)
- MEM_freeN(ndata);
+ if(pdd.vdata)
+ MEM_freeN(pdd.vdata);
+ if(pdd.vedata)
+ MEM_freeN(pdd.vedata);
+ if(pdd.cdata)
+ MEM_freeN(pdd.cdata);
+ if(pdd.ndata)
+ MEM_freeN(pdd.ndata);
psys->flag &= ~PSYS_DRAWING;
@@ -3560,8 +3677,8 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
psys->lattice= NULL;
}
- wmLoadMatrix(rv3d->viewmat);
- wmMultMatrix(ob->obmat); // bring back local matrix for dtx
+ if( (base->flag & OB_FROMDUPLI) && (ob->flag & OB_FROMGROUP) )
+ wmLoadMatrix(rv3d->viewmat);
}
static void draw_particle_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, ParticleSystem *psys, int dt)
@@ -3596,8 +3713,6 @@ static void draw_particle_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Ob
if((v3d->flag & V3D_ZBUF_SELECT)==0)
glDisable(GL_DEPTH_TEST);
- wmLoadMatrix(rv3d->viewmat);
-
/* get selection theme colors */
UI_GetThemeColor3ubv(TH_VERTEX_SELECT, sel);
UI_GetThemeColor3ubv(TH_VERTEX, nosel);
@@ -3706,7 +3821,7 @@ static void draw_particle_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Ob
if(key->flag & PEK_HIDE) continue;
sprintf(val," %.1f",*key->time);
- view3d_object_text_draw_add(key->world_co[0], key->world_co[1], key->world_co[2], val, 0);
+ view3d_particle_text_draw_add(key->world_co[0], key->world_co[1], key->world_co[2], val, 0);
}
}
}
@@ -3729,7 +3844,7 @@ static void draw_particle_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Ob
if((pset->flag & PE_SHOW_TIME) && !(G.f & G_RENDER_SHADOW)){
sprintf(val," %.1f",*key->time);
- view3d_object_text_draw_add(key->world_co[0], key->world_co[1], key->world_co[2], val, 0);
+ view3d_particle_text_draw_add(key->world_co[0], key->world_co[1], key->world_co[2], val, 0);
}
}
}
@@ -3744,7 +3859,6 @@ static void draw_particle_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Ob
glEnable(GL_DEPTH_TEST);
glLineWidth(1.0f);
- wmMultMatrix(ob->obmat); // bring back local matrix for dtx
glPointSize(1.0);
}
@@ -5145,7 +5259,9 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
) {
ParticleSystem *psys;
if(col || (ob->flag & SELECT)) cpack(0xFFFFFF); /* for visibility, also while wpaint */
- glDepthMask(GL_FALSE);
+ //glDepthMask(GL_FALSE);
+
+ wmLoadMatrix(rv3d->viewmat);
for(psys=ob->particlesystem.first; psys; psys=psys->next)
draw_new_particle_system(scene, v3d, rv3d, base, psys, dt);
@@ -5155,7 +5271,11 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if(psys && !scene->obedit && psys_in_edit_mode(scene, psys))
draw_particle_edit(scene, v3d, rv3d, ob, psys, dt);
}
- glDepthMask(GL_TRUE);
+ view3d_particle_text_draw(v3d, ar);
+
+ wmMultMatrix(ob->obmat);
+
+ //glDepthMask(GL_TRUE);
if(col) cpack(col);
}
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index c387bb74ad8..f3797ec308b 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -304,6 +304,12 @@ static void view3d_modal_keymaps(wmWindowManager *wm, ARegion *ar, int stype)
else
WM_event_remove_keymap_handler(&ar->handlers, keymap);
+ keymap= WM_keymap_listbase(wm, "Lattice", 0, 0);
+ if(stype==NS_EDITMODE_LATTICE)
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
+ else
+ WM_event_remove_keymap_handler(&ar->handlers, keymap);
+
/* armature sketching needs to take over mouse */
keymap= WM_keymap_listbase(wm, "Armature_Sketch", 0, 0);
if(stype==NS_EDITMODE_TEXT)
@@ -323,7 +329,6 @@ static void view3d_modal_keymaps(wmWindowManager *wm, ARegion *ar, int stype)
WM_event_add_keymap_handler_priority(&ar->handlers, keymap, 10);
else
WM_event_remove_keymap_handler(&ar->handlers, keymap);
-
}
/* add handlers, stuff you only do once or on area/region changes */
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index 91565235591..7db577bf139 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -71,7 +71,6 @@
#include "BKE_utildefines.h"
#include "BIF_gl.h"
-#include "BIF_transform.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -87,6 +86,7 @@
#include "ED_object.h"
#include "ED_particle.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_types.h"
#include "ED_util.h"
@@ -1107,6 +1107,7 @@ static int view3d_panel_brush_poll(const bContext *C, PanelType *pt)
static void view3d_panel_brush(const bContext *C, Panel *pa)
{
uiBlock *block;
+ ToolSettings *ts= CTX_data_tool_settings(C);
Brush **brp = current_brush_source(CTX_data_scene(C)), *br;
short w = 268, h = 400, cx = 10, cy = h;
rctf rect;
@@ -1143,6 +1144,10 @@ static void view3d_panel_brush(const bContext *C, Panel *pa)
uiBlockBeginAlign(block);
uiDefButI(block,NUMSLI,B_NOP,"Size: ",cx,cy,w,19,&br->size,1.0,200.0,0,0,"Set brush radius in pixels");
cy-= 20;
+ if(G.f & G_WEIGHTPAINT) {
+ uiDefButF(block,NUMSLI,B_NOP,"Weight: ",cx,cy,w,19,&ts->vgroup_weight,0,1.0,0,0,"Set vertex weight");
+ cy-= 20;
+ }
uiDefButF(block,NUMSLI,B_NOP,"Strength: ",cx,cy,w,19,&br->alpha,0,1.0,0,0,"Set brush strength");
cy-= 25;
uiBlockEndAlign(block);
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 54696fc4508..dd4e67e612c 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -80,6 +80,7 @@
#include "ED_screen.h"
#include "ED_space_api.h"
#include "ED_util.h"
+#include "ED_transform.h"
#include "ED_types.h"
#include "UI_interface.h"
@@ -2019,7 +2020,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
if(rv3d->rflag & RV3D_CLIPPING)
view3d_clr_clipping();
-// BIF_draw_manipulator(ar);
+ BIF_draw_manipulator(C);
if(v3d->zbuf) {
v3d->zbuf= FALSE;
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 79173d3fec7..5e77c932a6c 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -62,7 +62,6 @@
#include "RE_pipeline.h" // make_stars
#include "BIF_gl.h"
-#include "BIF_retopo.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -71,8 +70,10 @@
#include "RNA_define.h"
#include "ED_particle.h"
+#include "ED_retopo.h"
#include "ED_space_api.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_types.h"
#include "UI_interface.h"
@@ -94,50 +95,50 @@ static void view3d_boxview_clip(ScrArea *sa)
float clip[6][4];
float x1= 0.0f, y1= 0.0f, z1= 0.0f, ofs[3];
int val;
-
+
/* create bounding box */
for(ar= sa->regionbase.first; ar; ar= ar->next) {
if(ar->regiontype==RGN_TYPE_WINDOW) {
RegionView3D *rv3d= ar->regiondata;
-
+
if(rv3d->viewlock & RV3D_BOXCLIP) {
if(ELEM(rv3d->view, V3D_VIEW_TOP, V3D_VIEW_BOTTOM)) {
if(ar->winx>ar->winy) x1= rv3d->dist;
else x1= ar->winx*rv3d->dist/ar->winy;
-
+
if(ar->winx>ar->winy) y1= ar->winy*rv3d->dist/ar->winx;
else y1= rv3d->dist;
-
+
ofs[0]= rv3d->ofs[0];
ofs[1]= rv3d->ofs[1];
}
else if(ELEM(rv3d->view, V3D_VIEW_FRONT, V3D_VIEW_BACK)) {
ofs[2]= rv3d->ofs[2];
-
+
if(ar->winx>ar->winy) z1= ar->winy*rv3d->dist/ar->winx;
else z1= rv3d->dist;
}
}
}
}
-
+
for(val=0; val<8; val++) {
if(ELEM4(val, 0, 3, 4, 7))
bb->vec[val][0]= -x1 - ofs[0];
else
bb->vec[val][0]= x1 - ofs[0];
-
+
if(ELEM4(val, 0, 1, 4, 5))
bb->vec[val][1]= -y1 - ofs[1];
else
bb->vec[val][1]= y1 - ofs[1];
-
+
if(val > 3)
bb->vec[val][2]= -z1 - ofs[2];
else
bb->vec[val][2]= z1 - ofs[2];
- }
-
+ }
+
/* normals for plane equations */
CalcNormFloat(bb->vec[0], bb->vec[1], bb->vec[4], clip[0]);
CalcNormFloat(bb->vec[1], bb->vec[2], bb->vec[5], clip[1]);
@@ -145,18 +146,18 @@ static void view3d_boxview_clip(ScrArea *sa)
CalcNormFloat(bb->vec[3], bb->vec[0], bb->vec[7], clip[3]);
CalcNormFloat(bb->vec[4], bb->vec[5], bb->vec[6], clip[4]);
CalcNormFloat(bb->vec[0], bb->vec[2], bb->vec[1], clip[5]);
-
+
/* then plane equations */
for(val=0; val<5; val++) {
clip[val][3]= - clip[val][0]*bb->vec[val][0] - clip[val][1]*bb->vec[val][1] - clip[val][2]*bb->vec[val][2];
}
clip[5][3]= - clip[5][0]*bb->vec[0][0] - clip[5][1]*bb->vec[0][1] - clip[5][2]*bb->vec[0][2];
-
+
/* create bounding box */
for(ar= sa->regionbase.first; ar; ar= ar->next) {
if(ar->regiontype==RGN_TYPE_WINDOW) {
RegionView3D *rv3d= ar->regiondata;
-
+
if(rv3d->viewlock & RV3D_BOXCLIP) {
rv3d->rflag |= RV3D_CLIPPING;
memcpy(rv3d->clip, clip, sizeof(clip));
@@ -171,11 +172,11 @@ static void view3d_boxview_sync(ScrArea *sa, ARegion *ar)
{
ARegion *artest;
RegionView3D *rv3d= ar->regiondata;
-
+
for(artest= sa->regionbase.first; artest; artest= artest->next) {
if(artest!=ar && artest->regiontype==RGN_TYPE_WINDOW) {
RegionView3D *rv3dtest= artest->regiondata;
-
+
if(rv3dtest->viewlock) {
rv3dtest->dist= rv3d->dist;
@@ -197,7 +198,7 @@ static void view3d_boxview_sync(ScrArea *sa, ARegion *ar)
if( ELEM(rv3dtest->view, V3D_VIEW_FRONT, V3D_VIEW_BACK))
rv3dtest->ofs[2]= rv3d->ofs[2];
}
-
+
ED_region_tag_redraw(artest);
}
}
@@ -210,11 +211,11 @@ void view3d_boxview_copy(ScrArea *sa, ARegion *ar)
{
ARegion *artest;
RegionView3D *rv3d= ar->regiondata;
-
+
for(artest= sa->regionbase.first; artest; artest= artest->next) {
if(artest!=ar && artest->regiontype==RGN_TYPE_WINDOW) {
RegionView3D *rv3dtest= artest->regiondata;
-
+
if(rv3dtest->viewlock) {
rv3dtest->dist= rv3d->dist;
VECCOPY(rv3dtest->ofs, rv3d->ofs);
@@ -237,7 +238,7 @@ typedef struct ViewOpsData {
float ofs[3], obofs[3];
float reverse, dist0;
float grid, far;
-
+
int origx, origy, oldx, oldy;
int origkey;
@@ -288,11 +289,11 @@ static void viewops_data(bContext *C, wmOperator *op, wmEvent *event)
vod->origx= vod->oldx= event->x;
vod->origy= vod->oldy= event->y;
vod->origkey= event->type;
-
+
/* lookup, we dont pass on v3d to prevent confusement */
vod->grid= v3d->grid;
vod->far= v3d->far;
-
+
calctrackballvec(&vod->ar->winrct, event->x, event->y, vod->trackvec);
initgrabz(rv3d, -rv3d->ofs[0], -rv3d->ofs[1], -rv3d->ofs[2]);
@@ -502,7 +503,8 @@ static int viewrotate_modal(bContext *C, wmOperator *op, wmEvent *event)
break;
default:
- if(event->type==vod->origkey && event->val==0) {
+ /* origkey may be zero when invoked from a button */
+ if(ELEM3(event->type, ESCKEY, LEFTMOUSE, RIGHTMOUSE) || (event->type==vod->origkey && event->val==0)) {
request_depth_update(CTX_wm_region_view3d(C));
MEM_freeN(vod);
@@ -522,7 +524,7 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event)
if(rv3d->viewlock)
return OPERATOR_CANCELLED;
-
+
/* makes op->customdata */
viewops_data(C, op, event);
vod= op->customdata;
@@ -556,7 +558,7 @@ void VIEW3D_OT_viewrotate(wmOperatorType *ot)
ot->invoke= viewrotate_invoke;
ot->modal= viewrotate_modal;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
}
@@ -579,7 +581,7 @@ static void viewmove_apply(ViewOpsData *vod, int x, int y)
window_to_3d_delta(vod->ar, dvec, x-vod->oldx, y-vod->oldy);
VecAddf(vod->rv3d->ofs, vod->rv3d->ofs, dvec);
-
+
if(vod->rv3d->viewlock & RV3D_BOXVIEW)
view3d_boxview_sync(vod->sa, vod->ar);
}
@@ -602,7 +604,8 @@ static int viewmove_modal(bContext *C, wmOperator *op, wmEvent *event)
break;
default:
- if(event->type==vod->origkey && event->val==0) {
+ /* origkey may be zero when invoked from a button */
+ if(ELEM3(event->type, ESCKEY, LEFTMOUSE, RIGHTMOUSE) || (event->type==vod->origkey && event->val==0)) {
request_depth_update(CTX_wm_region_view3d(C));
MEM_freeN(vod);
@@ -639,7 +642,7 @@ void VIEW3D_OT_viewmove(wmOperatorType *ot)
ot->invoke= viewmove_invoke;
ot->modal= viewmove_modal;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
}
@@ -649,7 +652,7 @@ void VIEW3D_OT_viewmove(wmOperatorType *ot)
static void view_zoom_mouseloc(ARegion *ar, float dfac, int mx, int my)
{
RegionView3D *rv3d= ar->regiondata;
-
+
if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) {
float dvec[3];
float tvec[3];
@@ -762,7 +765,8 @@ static int viewzoom_modal(bContext *C, wmOperator *op, wmEvent *event)
break;
default:
- if(event->type==vod->origkey && event->val==0) {
+ /* origkey may be zero when invoked from a button */
+ if(ELEM3(event->type, ESCKEY, LEFTMOUSE, RIGHTMOUSE) || (event->type==vod->origkey && event->val==0)) {
request_depth_update(CTX_wm_region_view3d(C));
MEM_freeN(vod);
@@ -799,7 +803,7 @@ static int viewzoom_exec(bContext *C, wmOperator *op)
if(rv3d->viewlock & RV3D_BOXVIEW)
view3d_boxview_sync(CTX_wm_area(C), CTX_wm_region(C));
-
+
request_depth_update(CTX_wm_region_view3d(C));
ED_region_tag_redraw(CTX_wm_region(C));
@@ -838,10 +842,10 @@ void VIEW3D_OT_zoom(wmOperatorType *ot)
ot->exec= viewzoom_exec;
ot->modal= viewzoom_modal;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
-
+
RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX);
}
@@ -898,31 +902,31 @@ static int viewhome_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2.
if (rv3d->persp==V3D_CAMOB) {
rv3d->persp= V3D_PERSP;
- smooth_view(C, NULL, v3d->camera, new_ofs, NULL, &new_dist, NULL);
+ smooth_view(C, NULL, v3d->camera, new_ofs, NULL, &new_dist, NULL);
}
}
// XXX BIF_view3d_previewrender_signal(curarea, PR_DBASE|PR_DISPRECT);
-
+
if(rv3d->viewlock & RV3D_BOXVIEW)
view3d_boxview_copy(CTX_wm_area(C), ar);
return OPERATOR_FINISHED;
}
-void VIEW3D_OT_viewhome(wmOperatorType *ot)
+void VIEW3D_OT_view_all(wmOperatorType *ot)
{
/* identifiers */
ot->name= "View home";
ot->description = "View all objects in scene.";
- ot->idname= "VIEW3D_OT_viewhome";
+ ot->idname= "VIEW3D_OT_view_all";
/* api callbacks */
ot->exec= viewhome_exec;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
-
+
RNA_def_boolean(ot->srna, "center", 0, "Center", "");
}
@@ -1012,7 +1016,7 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with
/* perspective should be a bit farther away to look nice */
if(rv3d->persp==V3D_ORTHO)
size*= 0.7;
-
+
if(size <= v3d->near*1.5f) size= v3d->near*1.5f;
new_ofs[0]= -(min[0]+max[0])/2.0f;
@@ -1035,7 +1039,7 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with
if (rv3d->persp==V3D_CAMOB) {
rv3d->persp= V3D_PERSP;
smooth_view(C, v3d->camera, NULL, new_ofs, NULL, &new_dist, NULL);
- }
+ }
else {
smooth_view(C, NULL, NULL, new_ofs, NULL, &new_dist, NULL);
}
@@ -1047,18 +1051,18 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with
return OPERATOR_FINISHED;
}
-void VIEW3D_OT_viewcenter(wmOperatorType *ot)
+void VIEW3D_OT_view_center(wmOperatorType *ot)
{
/* identifiers */
ot->name= "View center";
ot->description = "Move the view to the selection center.";
- ot->idname= "VIEW3D_OT_viewcenter";
+ ot->idname= "VIEW3D_OT_view_center";
/* api callbacks */
ot->exec= viewcenter_exec;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
}
@@ -1070,16 +1074,16 @@ static int render_border_exec(bContext *C, wmOperator *op)
View3D *v3d = CTX_wm_view3d(C);
ARegion *ar= CTX_wm_region(C);
Scene *scene= CTX_data_scene(C);
-
+
rcti rect;
rctf vb;
-
+
/* get border select values using rna */
rect.xmin= RNA_int_get(op->ptr, "xmin");
rect.ymin= RNA_int_get(op->ptr, "ymin");
rect.xmax= RNA_int_get(op->ptr, "xmax");
rect.ymax= RNA_int_get(op->ptr, "ymax");
-
+
/* calculate range */
calc_viewborder(scene, ar, v3d, &vb);
@@ -1087,13 +1091,13 @@ static int render_border_exec(bContext *C, wmOperator *op)
scene->r.border.ymin= ((float)rect.ymin-vb.ymin)/(vb.ymax-vb.ymin);
scene->r.border.xmax= ((float)rect.xmax-vb.xmin)/(vb.xmax-vb.xmin);
scene->r.border.ymax= ((float)rect.ymax-vb.ymin)/(vb.ymax-vb.ymin);
-
- /* actually set border */
+
+ /* actually set border */
CLAMP(scene->r.border.xmin, 0.0, 1.0);
CLAMP(scene->r.border.ymin, 0.0, 1.0);
CLAMP(scene->r.border.xmax, 0.0, 1.0);
CLAMP(scene->r.border.ymax, 0.0, 1.0);
-
+
/* drawing a border surrounding the entire camera view switches off border rendering
* or the border covers no pixels */
if ((scene->r.border.xmin <= 0.0 && scene->r.border.xmax >= 1.0 &&
@@ -1105,7 +1109,7 @@ static int render_border_exec(bContext *C, wmOperator *op)
} else {
scene->r.mode |= R_BORDER;
}
-
+
return OPERATOR_FINISHED;
}
@@ -1113,9 +1117,9 @@ static int render_border_exec(bContext *C, wmOperator *op)
static int view3d_render_border_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
RegionView3D *rv3d= CTX_wm_region_view3d(C);
-
+
/* if not in camera view do not exec the operator*/
- if (rv3d->persp == V3D_CAMOB) return WM_border_select_invoke(C, op, event);
+ if (rv3d->persp == V3D_CAMOB) return WM_border_select_invoke(C, op, event);
else return OPERATOR_PASS_THROUGH;
}
@@ -1130,12 +1134,12 @@ void VIEW3D_OT_render_border(wmOperatorType *ot)
ot->invoke= view3d_render_border_invoke;
ot->exec= render_border_exec;
ot->modal= WM_border_select_modal;
-
+
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
+
/* rna */
RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX);
@@ -1151,7 +1155,7 @@ static int view3d_border_zoom_exec(bContext *C, wmOperator *op)
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d= CTX_wm_region_view3d(C);
Scene *scene= CTX_data_scene(C);
-
+
/* Zooms in on a border drawn by the user */
rcti rect;
float dvec[3], vb[2], xscale, yscale, scale;
@@ -1166,16 +1170,16 @@ static int view3d_border_zoom_exec(bContext *C, wmOperator *op)
int had_depth = 0;
double cent[2], p[3];
int xs, ys;
-
+
/* note; otherwise opengl won't work */
view3d_operator_needs_opengl(C);
-
+
/* get border select values using rna */
rect.xmin= RNA_int_get(op->ptr, "xmin");
rect.ymin= RNA_int_get(op->ptr, "ymin");
rect.xmax= RNA_int_get(op->ptr, "xmax");
rect.ymax= RNA_int_get(op->ptr, "ymax");
-
+
/* Get Z Depths, needed for perspective, nice for ortho */
bgl_get_mats(&mats);
draw_depth(scene, ar, v3d, NULL);
@@ -1274,27 +1278,27 @@ static int view3d_border_zoom_exec(bContext *C, wmOperator *op)
}
smooth_view(C, NULL, NULL, new_ofs, NULL, &new_dist, NULL);
-
+
if(rv3d->viewlock & RV3D_BOXVIEW)
view3d_boxview_sync(CTX_wm_area(C), ar);
-
+
return OPERATOR_FINISHED;
}
static int view3d_border_zoom_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
RegionView3D *rv3d= CTX_wm_region_view3d(C);
-
+
/* if in camera view do not exec the operator so we do not conflict with set render border*/
- if (rv3d->persp != V3D_CAMOB)
- return WM_border_select_invoke(C, op, event);
- else
+ if (rv3d->persp != V3D_CAMOB)
+ return WM_border_select_invoke(C, op, event);
+ else
return OPERATOR_PASS_THROUGH;
}
void VIEW3D_OT_zoom_border(wmOperatorType *ot)
{
-
+
/* identifiers */
ot->name= "Border Zoom";
ot->description = "Zoom in the view to the nearest object contained in the border.";
@@ -1304,12 +1308,12 @@ void VIEW3D_OT_zoom_border(wmOperatorType *ot)
ot->invoke= view3d_border_zoom_invoke;
ot->exec= view3d_border_zoom_exec;
ot->modal= WM_border_select_modal;
-
+
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
-
+
/* rna */
RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX);
@@ -1334,7 +1338,7 @@ static void axis_set_view(bContext *C, float q1, float q2, float q3, float q4, s
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d= CTX_wm_region_view3d(C);
float new_quat[4];
-
+
if(rv3d->viewlock) {
/* only pass on if */
if(rv3d->view==V3D_VIEW_FRONT && view==V3D_VIEW_BACK);
@@ -1345,10 +1349,10 @@ static void axis_set_view(bContext *C, float q1, float q2, float q3, float q4, s
else if(rv3d->view==V3D_VIEW_TOP && view==V3D_VIEW_BOTTOM);
else return;
}
-
+
new_quat[0]= q1; new_quat[1]= q2;
new_quat[2]= q3; new_quat[3]= q4;
-
+
rv3d->view= view;
if(rv3d->viewlock) {
@@ -1361,8 +1365,8 @@ static void axis_set_view(bContext *C, float q1, float q2, float q3, float q4, s
if (U.uiflag & USER_AUTOPERSP) rv3d->persp= V3D_ORTHO;
else if(rv3d->persp==V3D_CAMOB) rv3d->persp= perspo;
- smooth_view(C, v3d->camera, NULL, rv3d->ofs, new_quat, NULL, NULL);
- }
+ smooth_view(C, v3d->camera, NULL, rv3d->ofs, new_quat, NULL, NULL);
+ }
else {
if (U.uiflag & USER_AUTOPERSP) rv3d->persp= V3D_ORTHO;
@@ -1419,7 +1423,7 @@ static int viewnumpad_exec(bContext *C, wmOperator *op)
QUATCOPY(rv3d->lviewquat, rv3d->viewquat);
rv3d->lview= rv3d->view;
rv3d->lpersp= rv3d->persp;
-
+
#if 0
if(G.qual==LR_ALTKEY) {
if(oldcamera && is_an_active_object(oldcamera)) {
@@ -1428,7 +1432,7 @@ static int viewnumpad_exec(bContext *C, wmOperator *op)
handle_view3d_lock();
}
#endif
-
+
if(BASACT) {
/* check both G.vd as G.scene cameras */
if((v3d->camera==NULL || scene->camera==NULL) && OBACT->type==OB_CAMERA) {
@@ -1436,14 +1440,14 @@ static int viewnumpad_exec(bContext *C, wmOperator *op)
/*handle_view3d_lock();*/
}
}
-
+
if(v3d->camera==NULL) {
v3d->camera= scene_find_camera(scene);
/*handle_view3d_lock();*/
}
rv3d->persp= V3D_CAMOB;
smooth_view(C, NULL, v3d->camera, rv3d->ofs, rv3d->viewquat, &rv3d->dist, &v3d->lens);
-
+
}
else{
/* return to settings of last view */
@@ -1471,10 +1475,10 @@ void VIEW3D_OT_viewnumpad(wmOperatorType *ot)
/* api callbacks */
ot->exec= viewnumpad_exec;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
-
+
RNA_def_enum(ot->srna, "type", prop_view_items, 0, "View", "The Type of view");
}
@@ -1489,11 +1493,11 @@ static int vieworbit_exec(bContext *C, wmOperator *op)
{
ARegion *ar= CTX_wm_region(C);
RegionView3D *rv3d= CTX_wm_region_view3d(C);
- float phi, si, q1[4];
+ float phi, si, q1[4];
int orbitdir;
orbitdir = RNA_enum_get(op->ptr, "type");
-
+
if(rv3d->viewlock==0) {
if(rv3d->persp != V3D_CAMOB) {
@@ -1527,7 +1531,7 @@ static int vieworbit_exec(bContext *C, wmOperator *op)
}
}
- return OPERATOR_FINISHED;
+ return OPERATOR_FINISHED;
}
void VIEW3D_OT_view_orbit(wmOperatorType *ot)
@@ -1540,7 +1544,7 @@ void VIEW3D_OT_view_orbit(wmOperatorType *ot)
/* api callbacks */
ot->exec= vieworbit_exec;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
RNA_def_enum(ot->srna, "type", prop_view_orbit_items, 0, "Orbit", "Direction of View Orbit");
@@ -1556,12 +1560,12 @@ static EnumPropertyItem prop_view_pan_items[] = {
static int viewpan_exec(bContext *C, wmOperator *op)
{
ARegion *ar= CTX_wm_region(C);
- RegionView3D *rv3d= CTX_wm_region_view3d(C);
- float vec[3];
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
+ float vec[3];
int pandir;
pandir = RNA_enum_get(op->ptr, "type");
-
+
initgrabz(rv3d, 0.0, 0.0, 0.0);
if(pandir == V3D_VIEW_PANRIGHT) window_to_3d_delta(ar, vec, -32, 0);
@@ -1577,7 +1581,7 @@ static int viewpan_exec(bContext *C, wmOperator *op)
ED_region_tag_redraw(ar);
- return OPERATOR_FINISHED;
+ return OPERATOR_FINISHED;
}
void VIEW3D_OT_view_pan(wmOperatorType *ot)
@@ -1590,7 +1594,7 @@ void VIEW3D_OT_view_pan(wmOperatorType *ot)
/* api callbacks */
ot->exec= viewpan_exec;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
RNA_def_enum(ot->srna, "type", prop_view_pan_items, 0, "Pan", "Direction of View Pan");
@@ -1599,17 +1603,17 @@ void VIEW3D_OT_view_pan(wmOperatorType *ot)
static int viewpersportho_exec(bContext *C, wmOperator *op)
{
ARegion *ar= CTX_wm_region(C);
- RegionView3D *rv3d= CTX_wm_region_view3d(C);
-
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
+
if(rv3d->viewlock==0) {
- if(rv3d->persp!=V3D_ORTHO)
+ if(rv3d->persp!=V3D_ORTHO)
rv3d->persp=V3D_ORTHO;
else rv3d->persp=V3D_PERSP;
ED_region_tag_redraw(ar);
}
return OPERATOR_FINISHED;
-
+
}
void VIEW3D_OT_view_persportho(wmOperatorType *ot)
@@ -1622,7 +1626,7 @@ void VIEW3D_OT_view_persportho(wmOperatorType *ot)
/* api callbacks */
ot->exec= viewpersportho_exec;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
}
@@ -1710,13 +1714,13 @@ static int view3d_clipping_invoke(bContext *C, wmOperator *op, wmEvent *event)
}
/* toggles */
-void VIEW3D_OT_clipping(wmOperatorType *ot)
+void VIEW3D_OT_clip_border(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Clipping Border";
ot->description = "Set the view clipping border.";
- ot->idname= "VIEW3D_OT_clipping";
+ ot->idname= "VIEW3D_OT_clip_border";
/* api callbacks */
ot->invoke= view3d_clipping_invoke;
@@ -1724,10 +1728,10 @@ void VIEW3D_OT_clipping(wmOperatorType *ot)
ot->modal= WM_border_select_modal;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
-
+
/* rna */
RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX);
@@ -1744,7 +1748,7 @@ static int view3d_drawtype_exec(bContext *C, wmOperator *op)
dt = RNA_int_get(op->ptr, "draw_type");
dt_alt = RNA_int_get(op->ptr, "draw_type_alternate");
-
+
if (dt_alt != -1) {
if (v3d->drawtype == dt)
v3d->drawtype = dt_alt;
@@ -1755,7 +1759,7 @@ static int view3d_drawtype_exec(bContext *C, wmOperator *op)
v3d->drawtype = dt;
ED_area_tag_redraw(CTX_wm_area(C));
-
+
return OPERATOR_FINISHED;
}
@@ -1777,10 +1781,10 @@ void VIEW3D_OT_drawtype(wmOperatorType *ot)
ot->exec= view3d_drawtype_exec;
ot->poll= ED_operator_view3d_active;
-
+
/* flags */
ot->flag= OPTYPE_REGISTER;
-
+
/* rna XXX should become enum */
RNA_def_int(ot->srna, "draw_type", 0, INT_MIN, INT_MAX, "Draw Type", "", INT_MIN, INT_MAX);
RNA_def_int(ot->srna, "draw_type_alternate", -1, INT_MIN, INT_MAX, "Draw Type Alternate", "", INT_MIN, INT_MAX);
@@ -1798,36 +1802,36 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event)
float dx, dy, fz, *fp = NULL, dvec[3], oldcurs[3];
short mx, my, mval[2];
// short ctrl= 0; // XXX
-
+
fp= give_cursor(scene, v3d);
-
+
// if(obedit && ctrl) lr_click= 1;
VECCOPY(oldcurs, fp);
-
+
mx= event->x - ar->winrct.xmin;
my= event->y - ar->winrct.ymin;
project_short_noclip(ar, fp, mval);
-
+
initgrabz(rv3d, fp[0], fp[1], fp[2]);
-
+
if(mval[0]!=IS_CLIPPED) {
-
+
window_to_3d_delta(ar, dvec, mval[0]-mx, mval[1]-my);
VecSubf(fp, fp, dvec);
}
else {
-
+
dx= ((float)(mx-(ar->winx/2)))*rv3d->zfac/(ar->winx/2);
dy= ((float)(my-(ar->winy/2)))*rv3d->zfac/(ar->winy/2);
-
+
fz= rv3d->persmat[0][3]*fp[0]+ rv3d->persmat[1][3]*fp[1]+ rv3d->persmat[2][3]*fp[2]+ rv3d->persmat[3][3];
fz= fz/rv3d->zfac;
-
+
fp[0]= (rv3d->persinv[0][0]*dx + rv3d->persinv[1][0]*dy+ rv3d->persinv[2][0]*fz)-rv3d->ofs[0];
fp[1]= (rv3d->persinv[0][1]*dx + rv3d->persinv[1][1]*dy+ rv3d->persinv[2][1]*fz)-rv3d->ofs[1];
fp[2]= (rv3d->persinv[0][2]*dx + rv3d->persinv[1][2]*dy+ rv3d->persinv[2][2]*fz)-rv3d->ofs[2];
}
-
+
// if(lr_click) {
// XXX if(obedit->type==OB_MESH) add_click_mesh();
// else if ELEM(obedit->type, OB_CURVE, OB_SURF) addvert_Nurb(0);
@@ -1836,28 +1840,65 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event)
// }
// XXX notifier for scene */
ED_area_tag_redraw(CTX_wm_area(C));
-
+
/* prevent other mouse ops to fail */
return OPERATOR_PASS_THROUGH;
}
void VIEW3D_OT_cursor3d(wmOperatorType *ot)
{
-
+
/* identifiers */
ot->name= "Set 3D Cursor";
ot->description = "Set the location of the 3D cursor.";
ot->idname= "VIEW3D_OT_cursor3d";
-
+
/* api callbacks */
ot->invoke= set_3dcursor_invoke;
-
+
ot->poll= ED_operator_view3d_active;
-
+
/* rna later */
}
+/* ***************** manipulator op ******************* */
+
+
+static int manipulator_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ View3D *v3d = CTX_wm_view3d(C);
+
+ if(!(v3d->twflag & V3D_USE_MANIPULATOR)) return OPERATOR_PASS_THROUGH;
+ if(!(v3d->twflag & V3D_DRAW_MANIPULATOR)) return OPERATOR_PASS_THROUGH;
+
+ /* note; otherwise opengl won't work */
+ view3d_operator_needs_opengl(C);
+
+ if(0==BIF_do_manipulator(C, event, op))
+ return OPERATOR_PASS_THROUGH;
+
+ return OPERATOR_FINISHED;
+}
+
+void VIEW3D_OT_manipulator(wmOperatorType *ot)
+{
+
+ /* identifiers */
+ ot->name= "3D Manipulator";
+ ot->description = "";
+ ot->idname= "VIEW3D_OT_manipulator";
+
+ /* api callbacks */
+ ot->invoke= manipulator_invoke;
+
+ ot->poll= ED_operator_view3d_active;
+
+ /* rna later */
+ RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", "");
+}
+
+
/* ************************* below the line! *********************** */
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index 605f6d6b02f..cdc42e4beb8 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -71,6 +71,7 @@
#include "ED_mesh.h"
#include "ED_util.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_types.h"
#include "WM_api.h"
@@ -81,7 +82,6 @@
#include "BIF_gl.h"
#include "BIF_glutil.h"
-#include "BIF_transform.h"
#include "BLI_arithb.h"
#include "BLI_blenlib.h"
@@ -535,7 +535,7 @@ static void do_view3d_view_alignviewmenu(bContext *C, void *arg, int event)
// XXX mainqenter(PADASTERKEY, 1);
break;
case 6: /* Center View and Cursor to Origin */
- WM_operator_name_call(C, "VIEW3D_OT_viewcenter", WM_OP_EXEC_REGION_WIN, NULL);
+ WM_operator_name_call(C, "VIEW3D_OT_view_center", WM_OP_EXEC_REGION_WIN, NULL);
curs= give_cursor(scene, v3d);
curs[0]=curs[1]=curs[2]= 0.0;
break;
@@ -601,10 +601,10 @@ static void do_view3d_viewmenu(bContext *C, void *arg, int event)
case 8: /* Global View */
break;
case 9: /* View All (Home) */
- WM_operator_name_call(C, "VIEW3D_OT_viewhome", WM_OP_EXEC_REGION_WIN, NULL);
+ WM_operator_name_call(C, "VIEW3D_OT_view_all", WM_OP_EXEC_REGION_WIN, NULL);
break;
case 11: /* View Selected */
- WM_operator_name_call(C, "VIEW3D_OT_viewcenter", WM_OP_EXEC_REGION_WIN, NULL);
+ WM_operator_name_call(C, "VIEW3D_OT_view_center", WM_OP_EXEC_REGION_WIN, NULL);
break;
case 13: /* Play Back Animation */
break;
@@ -615,7 +615,7 @@ static void do_view3d_viewmenu(bContext *C, void *arg, int event)
// add_blockhandler(sa, VIEW3D_HANDLER_PROPERTIES, UI_PNL_UNSTOW);
break;
case 17: /* Set Clipping Border */
- WM_operator_name_call(C, "VIEW3D_OT_clipping", WM_OP_INVOKE_REGION_WIN, NULL);
+ WM_operator_name_call(C, "VIEW3D_OT_clip_border", WM_OP_INVOKE_REGION_WIN, NULL);
break;
case 18: /* render preview */
// toggle_blockhandler(sa, VIEW3D_HANDLER_PREVIEW, 0);
@@ -662,6 +662,9 @@ static void view3d_view_alignviewmenu(bContext *C, uiLayout *layout, void *arg_u
static void view3d_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
ScrArea *sa= CTX_wm_area(C);
+
+ uiItemO(layout, NULL, ICON_MENU_PANEL, "VIEW3D_OT_properties");
+ uiItemO(layout, NULL, ICON_MENU_PANEL, "VIEW3D_OT_toolbar");
// uiItemO(layout, ICON_MENU_PANEL, "VIEW3D_OT_toggle_transform_orientations_panel"); // Transform Orientations...
// uiItemO(layout, ICON_MENU_PANEL, "VIEW3D_OT_toggle_render_preview_panel"); // render preview...
@@ -669,7 +672,7 @@ static void view3d_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
// uiItemO(layout, ICON_MENU_PANEL, "VIEW3D_OT_toggle_background_image_panel"); // Background Image....
// uiItemO(layout, ICON_MENU_PANEL, "VIEW3D_OT_toggle_grease_pencil_panel"); // Grease Pencil....
-// uiItemS(layout);
+ uiItemS(layout);
uiItemEnumO(layout, NULL, 0, "VIEW3D_OT_viewnumpad", "type", V3D_VIEW_CAMERA);
uiItemEnumO(layout, NULL, 0, "VIEW3D_OT_viewnumpad", "type", V3D_VIEW_TOP);
@@ -700,13 +703,13 @@ static void view3d_viewmenu(bContext *C, uiLayout *layout, void *arg_unused)
uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_REGION_WIN);
- uiItemO(layout, NULL, 0, "VIEW3D_OT_clipping");
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_clip_border");
uiItemO(layout, NULL, 0, "VIEW3D_OT_zoom_border");
uiItemS(layout);
- uiItemO(layout, NULL, 0, "VIEW3D_OT_viewcenter");
- uiItemO(layout, NULL, 0, "VIEW3D_OT_viewhome");
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_view_center");
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_view_all");
uiItemS(layout);
@@ -1025,203 +1028,67 @@ static uiBlock *view3d_select_object_groupedmenu(bContext *C, ARegion *ar, void
#endif
-static uiBlock *view3d_select_objectmenu(bContext *C, ARegion *ar, void *arg_unused)
+static void view3d_select_objectmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiBlock *block;
-// short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "view3d_select_objectmenu", UI_EMBOSSP);
-
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_select_border");
+
+ uiItemS(layout);
+
+ uiItemO(layout, "Select/Deselect All", 0, "OBJECT_OT_select_all_toggle");
+ uiItemO(layout, "Inverse", 0, "OBJECT_OT_select_inverse");
+ uiItemO(layout, "Random", 0, "OBJECT_OT_select_random");
+ uiItemO(layout, "Select All by Layer", 0, "OBJECT_OT_select_by_layer");
+ uiItemMenuEnumO(layout, "Select All by Type", 0, "OBJECT_OT_select_by_type", "type");
+
#if 0
- uiBlockSetButmFunc(block, do_view3d_select_objectmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Inverse|Ctrl I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Random", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
uiDefIconTextBlockBut(block, view3d_select_object_layermenu, NULL, ICON_RIGHTARROW_THIN, "Select All by Layer", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, view3d_select_object_typemenu, NULL, ICON_RIGHTARROW_THIN, "Select All by Type", 0, yco-=20, 120, 19, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
+
+ uiItemS(layout);
+
uiDefIconTextBlockBut(block, view3d_select_object_linkedmenu, NULL, ICON_RIGHTARROW_THIN, "Linked", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, view3d_select_object_groupedmenu, NULL, ICON_RIGHTARROW_THIN, "Grouped", 0, yco-=20, 120, 19, "");
#endif
- uiDefMenuButO(block, "VIEW3D_OT_select_border", "Border Select");
-
- uiDefMenuSep(block);
-
- uiDefMenuButO(block, "OBJECT_OT_select_all_toggle", "Select/Deselect All");
- uiDefMenuButO(block, "OBJECT_OT_select_invert", "Inverse");
- uiDefMenuButO(block, "OBJECT_OT_select_random", "Random");
- uiDefMenuButO(block, "OBJECT_OT_select_by_layer", "Select All by Layer");
- uiDefMenuButO(block, "OBJECT_OT_select_by_type", "Select All by Type");
-
-
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
-
- uiTextBoundsBlock(block, 50);
- return block;
}
-void do_view3d_select_meshmenu(bContext *C, void *arg, int event)
+static void view3d_select_meshmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
-#if 0
-/* extern void borderselect(void);*/
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_select_border");
- switch(event) {
-
- case 0: /* border select */
- borderselect();
- break;
- case 2: /* Select/Deselect all */
- deselectall_mesh();
- break;
- case 3: /* Inverse */
- selectswap_mesh();
- break;
- case 4: /* select linked vertices */
- selectconnected_mesh_all();
- break;
- case 5: /* select random */
- selectrandom_mesh();
- break;
- case 7: /* select more */
- select_more();
- break;
- case 8: /* select less */
- select_less();
- break;
- case 9: /* select non-manifold */
- select_non_manifold();
- break;
- case 11: /* select triangles */
- select_faces_by_numverts(3);
- break;
- case 12: /* select quads */
- select_faces_by_numverts(4);
- break;
- case 13: /* select non-triangles/quads */
- select_faces_by_numverts(5);
- break;
- case 14: /* select sharp edges */
- select_sharp_edges();
- break;
- case 15: /* select linked flat faces */
- select_linked_flat_faces();
- break;
+ uiItemS(layout);
- case 16: /* path select */
- pathselect();
- ED_undo_push(C, "Path Select");
- break;
- case 17: /* edge loop select */
- loop_multiselect(0);
- break;
- case 18: /* edge ring select */
- loop_multiselect(1);
- break;
- case 19: /* loop to region */
- loop_to_region();
- break;
- case 20: /* region to loop */
- region_to_loop();
- break;
- case 21: /* Select grouped */
- select_mesh_group_menu();
- break;
- }
-#endif
-}
+ uiItemO(layout, "Select/Deselect All", 0, "MESH_OT_select_all_toggle");
+ uiItemO(layout, "Inverse", 0, "MESH_OT_select_inverse");
+ uiItemS(layout);
-static uiBlock *view3d_select_meshmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "view3d_select_meshmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_select_meshmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Inverse|Ctrl I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6,
- menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Random...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Non-Manifold|Ctrl Alt Shift M",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Sharp Edges|Ctrl Alt Shift S",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 14, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Linked Flat Faces|Ctrl Alt Shift F",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6,
- menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Triangles|Ctrl Alt Shift 3",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Quads|Ctrl Alt Shift 4",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Non-Triangles/Quads|Ctrl Alt Shift 5",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Similar to Selection...|Shift G",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 21, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6,
- menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "More|Ctrl NumPad +",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Less|Ctrl NumPad -",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6,
- menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Linked Vertices|Ctrl L", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Vertex Path|W Alt 7", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Edge Loop|Ctrl E 6", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Edge Ring|Ctrl E 7", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6,
- menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Loop to Region|Ctrl E 8", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Region to Loop|Ctrl E 9", 0, yco-=20, menuwidth, 20, NULL, 0.0, 0.0, 1, 20, "");
-
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
+ uiItemO(layout, "Random...", 0, "MESH_OT_select_random"); // Random...
+ uiItemO(layout, "Sharp Edges", 0, "MESH_OT_edges_select_sharp");
+ uiItemO(layout, "Linked Flat Faces", 0, "MESH_OT_faces_select_linked_flat");
- uiTextBoundsBlock(block, 50);
- return block;
+ uiItemS(layout);
+
+ uiItemEnumO(layout, "Triangles", 0, "MESH_OT_select_by_number_vertices", "type", 3); // Ctrl Alt Shift 3
+ uiItemEnumO(layout, "Quads", 0, "MESH_OT_select_by_number_vertices", "type", 4); // Ctrl Alt Shift 4
+ uiItemEnumO(layout, "Loose Verts/Edges", 0, "MESH_OT_select_by_number_vertices", "type", 5); // Ctrl Alt Shift 5
+ uiItemO(layout, "Similar...", 0, "MESH_OT_select_similar");
+
+ uiItemS(layout);
+
+ uiItemO(layout, "Less", 0, "MESH_OT_select_more");
+ uiItemO(layout, "More", 0, "MESH_OT_select_less");
+
+ uiItemS(layout);
+
+ uiItemO(layout, "Linked", 0, "MESH_OT_select_linked");
+ uiItemO(layout, "Vertex Path", 0, "MESH_OT_select_vertex_path"); // W, Alt 7
+ uiItemO(layout, "Edge Loop", 0, "MESH_OT_loop_multi_select");
+ uiItemBooleanO(layout, "Edge Ring", 0, "MESH_OT_loop_multi_select", "ring", 1);
+
+ uiItemS(layout);
+
+ uiItemO(layout, NULL, 0, "MESH_OT_loop_to_region"); // Ctrl E 8
+ uiItemO(layout, NULL, 0, "MESH_OT_region_to_loop"); // Ctrl E 9
}
static void view3d_select_curvemenu(bContext *C, uiLayout *layout, void *arg_unused)
@@ -1234,7 +1101,7 @@ static void view3d_select_curvemenu(bContext *C, uiLayout *layout, void *arg_unu
uiItemS(layout);
uiItemO(layout, NULL, 0, "CURVE_OT_select_all_toggle");
- uiItemO(layout, NULL, 0, "CURVE_OT_select_invert");
+ uiItemO(layout, NULL, 0, "CURVE_OT_select_inverse");
uiItemO(layout, NULL, 0, "CURVE_OT_select_random"); // Random...
uiItemO(layout, NULL, 0, "CURVE_OT_select_every_nth"); // Every Nth..
@@ -1320,186 +1187,70 @@ static uiBlock *view3d_select_metaballmenu(bContext *C, ARegion *ar, void *arg_u
return block;
}
-static void do_view3d_select_latticemenu(bContext *C, void *arg, int event)
+static void view3d_select_latticemenu(bContext *C, uiLayout *layout, void *arg_unused)
{
-#if 0
-/* extern void borderselect(void);*/
-
- switch(event) {
- case 0: /* border select */
- borderselect();
- break;
- case 2: /* Select/Deselect all */
- deselectall_Latt();
- break;
- }
-#endif
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_select_border");
+ uiItemS(layout);
+ uiItemO(layout, NULL, 0, "LATTICE_OT_select_all_toggle");
}
-static uiBlock *view3d_select_latticemenu(bContext *C, ARegion *ar, void *arg_unused)
+static void view3d_select_armaturemenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "view3d_select_latticemenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_select_latticemenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ PointerRNA ptr;
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_select_border");
- uiTextBoundsBlock(block, 50);
- return block;
-}
+ uiItemS(layout);
-static void do_view3d_select_armaturemenu(bContext *C, void *arg, int event)
-{
-#if 0
-/* extern void borderselect(void);*/
+ uiItemO(layout, "Select/Deselect All", 0, "ARMATURE_OT_select_all_toggle");
+ uiItemO(layout, "Inverse", 0, "ARMATURE_OT_select_inverse");
- switch(event) {
- case 0: /* border select */
- borderselect();
- break;
- case 2: /* Select/Deselect all */
- deselectall_armature(1, 1);
- break;
- case 3: /* Swap Select All */
- deselectall_armature(3, 1);
- break;
- case 4: /* Select parent */
- armature_select_hierarchy(BONE_SELECT_PARENT, 0);
- break;
- case 5: /* Select child */
- armature_select_hierarchy(BONE_SELECT_CHILD, 0);
- break;
- case 6: /* Extend Select parent */
- armature_select_hierarchy(BONE_SELECT_PARENT, 1);
- break;
- case 7: /* Extend Select child */
- armature_select_hierarchy(BONE_SELECT_CHILD, 1);
- break;
- }
-#endif
-}
+ uiItemS(layout);
-static uiBlock *view3d_select_armaturemenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "view3d_select_armaturemenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_select_armaturemenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Inverse|Ctrl I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select Parent|[", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select Child|]", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Extend Select Parent|Shift [", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Extend Select Child|Shift ]", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
-
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
+ uiItemEnumO(layout, "Parent", 0, "ARMATURE_OT_select_hierarchy", "direction", BONE_SELECT_PARENT);
+ uiItemEnumO(layout, "Child", 0, "ARMATURE_OT_select_hierarchy", "direction", BONE_SELECT_CHILD);
- uiTextBoundsBlock(block, 50);
- return block;
-}
+ uiItemS(layout);
-static void do_view3d_select_pose_armaturemenu(bContext *C, void *arg, int event)
-{
-#if 0
-/* extern void borderselect(void);*/
-
- switch(event) {
- case 0: /* border select */
- borderselect();
- break;
- case 2: /* Select/Deselect all */
- deselectall_posearmature(OBACT, 1, 1);
- break;
- case 3: /* Select Target(s) of Constraint(s) */
- pose_select_constraint_target();
- break;
- case 5: /* Swap Select All */
- deselectall_posearmature(OBACT, 3, 1);
- break;
- case 6: /* Select parent */
- pose_select_hierarchy(BONE_SELECT_PARENT, 0);
- break;
- case 7: /* Select child */
- pose_select_hierarchy(BONE_SELECT_CHILD, 0);
- break;
- case 8: /* Extend Select parent */
- pose_select_hierarchy(BONE_SELECT_PARENT, 1);
- break;
- case 9: /* Extend Select child */
- pose_select_hierarchy(BONE_SELECT_CHILD, 1);
- break;
- }
-#endif
+ WM_operator_properties_create(&ptr, "ARMATURE_OT_select_hierarchy");
+ RNA_boolean_set(&ptr, "extend", 1);
+ RNA_enum_set(&ptr, "direction", BONE_SELECT_PARENT);
+ uiItemFullO(layout, "Extend Parent", 0, "ARMATURE_OT_select_hierarchy", ptr.data, WM_OP_EXEC_REGION_WIN);
+
+ WM_operator_properties_create(&ptr, "ARMATURE_OT_select_hierarchy");
+ RNA_boolean_set(&ptr, "extend", 1);
+ RNA_enum_set(&ptr, "direction", BONE_SELECT_CHILD);
+ uiItemFullO(layout, "Extend Child", 0, "ARMATURE_OT_select_hierarchy", ptr.data, WM_OP_EXEC_REGION_WIN);
}
-static uiBlock *view3d_select_pose_armaturemenu(bContext *C, ARegion *ar, void *arg_unused)
+static void view3d_select_posemenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "view3d_select_pose_armaturemenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_select_pose_armaturemenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Border Select|B", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select/Deselect All|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Swap Select All|Ctrl I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select Constraint Target|W", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select Parent|[", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Select Child|]", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Extend Select Parent|Shift [", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Extend Select Child|Shift ]", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
-
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
+ PointerRNA ptr;
- uiTextBoundsBlock(block, 50);
- return block;
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_select_border");
+
+ uiItemS(layout);
+
+ uiItemO(layout, "Select/Deselect All", 0, "POSE_OT_select_all_toggle");
+ uiItemO(layout, "Inverse", 0, "POSE_OT_select_inverse");
+ uiItemO(layout, "Constraint Target", 0, "POSE_OT_select_constraint_target");
+
+ uiItemS(layout);
+
+ uiItemEnumO(layout, "Parent", 0, "POSE_OT_select_hierarchy", "direction", BONE_SELECT_PARENT);
+ uiItemEnumO(layout, "Child", 0, "POSE_OT_select_hierarchy", "direction", BONE_SELECT_CHILD);
+
+ uiItemS(layout);
+
+ WM_operator_properties_create(&ptr, "POSE_OT_select_hierarchy");
+ RNA_boolean_set(&ptr, "extend", 1);
+ RNA_enum_set(&ptr, "direction", BONE_SELECT_PARENT);
+ uiItemFullO(layout, "Extend Parent", 0, "POSE_OT_select_hierarchy", ptr.data, WM_OP_EXEC_REGION_WIN);
+
+ WM_operator_properties_create(&ptr, "POSE_OT_select_hierarchy");
+ RNA_boolean_set(&ptr, "extend", 1);
+ RNA_enum_set(&ptr, "direction", BONE_SELECT_CHILD);
+ uiItemFullO(layout, "Extend Child", 0, "POSE_OT_select_hierarchy", ptr.data, WM_OP_EXEC_REGION_WIN);
}
void do_view3d_select_faceselmenu(bContext *C, void *arg, int event)
@@ -1572,57 +1323,17 @@ static uiBlock *view3d_select_faceselmenu(bContext *C, ARegion *ar, void *arg_un
return block;
}
-void do_view3d_edit_snapmenu(bContext *C, void *arg, int event)
+static void view3d_edit_snapmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
-#if 0
- switch (event) {
- case 1: /*Selection to grid*/
- snap_sel_to_grid();
- ED_undo_push(C, "Snap selection to grid");
- break;
- case 2: /*Selection to cursor*/
- snap_sel_to_curs();
- ED_undo_push(C, "Snap selection to cursor");
- break;
- case 3: /*Selection to center of selection*/
- snap_to_center();
- ED_undo_push(C, "Snap selection to center");
- break;
- case 4: /*Cursor to selection*/
- snap_curs_to_sel();
- break;
- case 5: /*Cursor to grid*/
- snap_curs_to_grid();
- break;
- case 6: /*Cursor to Active*/
- snap_curs_to_active();
- ED_undo_push(C, "Snap selection to center");
- break;
- }
-#endif
-}
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_selected_to_grid");
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_selected_to_cursor");
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_selected_to_center");
-static uiBlock *view3d_edit_snapmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
+ uiItemS(layout);
- block= uiBeginBlock(C, ar, "view3d_edit_snapmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_snapmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Selection -> Grid|Shift S, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Selection -> Cursor|Shift S, 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Selection -> Center|Shift S, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Cursor -> Selection|Shift S, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Cursor -> Grid|Shift S, 5", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Cursor -> Active|Shift S, 6", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
-
-
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_cursor_to_selected");
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_cursor_to_grid");
+ uiItemO(layout, NULL, 0, "VIEW3D_OT_snap_cursor_to_active");
}
void do_view3d_transform_moveaxismenu(bContext *C, void *arg, int event)
@@ -2608,7 +2319,7 @@ static uiBlock *view3d_edit_objectmenu(bContext *C, ARegion *ar, void *arg_unuse
uiDefIconTextBlockBut(block, view3d_object_mirrormenu, NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, menuwidth, 19, "");
uiDefIconTextBlockBut(block, view3d_edit_object_transformmenu, NULL, ICON_RIGHTARROW_THIN, "Clear/Apply", 0, yco-=20, 120, 19, "");
- uiDefIconTextBlockBut(block, view3d_edit_snapmenu, NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 19, "");
+ // XXX uiDefIconTextBlockBut(block, view3d_edit_snapmenu, NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 19, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
@@ -2667,116 +2378,26 @@ static uiBlock *view3d_edit_objectmenu(bContext *C, ARegion *ar, void *arg_unuse
}
-static void do_view3d_edit_propfalloffmenu(bContext *C, void *arg, int event)
-{
- ToolSettings *ts= CTX_data_tool_settings(C);
-
- ts->prop_mode= event;
-
-}
-
-static uiBlock *view3d_edit_propfalloffmenu(bContext *C, ARegion *ar, void *arg_unused)
+static void view3d_edit_mesh_verticesmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- ToolSettings *ts= CTX_data_tool_settings(C);
- uiBlock *block;
- short yco = 20, menuwidth = 120;
+ uiItemO(layout, "Merge...", 0, "MESH_OT_merge");
+ uiItemO(layout, "Rip", 0, "MESH_OT_rip");
+ uiItemO(layout, "Split", 0, "MESH_OT_split");
+ uiItemO(layout, "Separate", 0, "MESH_OT_separate");
- block= uiBeginBlock(C, ar, "view3d_edit_propfalloffmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_propfalloffmenu, NULL);
-
- if (ts->prop_mode==PROP_SMOOTH) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Smooth|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SMOOTH, "");
- else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Smooth|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SMOOTH, "");
- if (ts->prop_mode==PROP_SPHERE) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Sphere|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SPHERE, "");
- else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Sphere|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SPHERE, "");
- if (ts->prop_mode==PROP_ROOT) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Root|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_ROOT, "");
- else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Root|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_ROOT, "");
- if (ts->prop_mode==PROP_SHARP) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Sharp|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SHARP, "");
- else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Sharp|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_SHARP, "");
- if (ts->prop_mode==PROP_LIN) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Linear|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_LIN, "");
- else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Linear|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_LIN, "");
- if (ts->prop_mode==PROP_RANDOM) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Random|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_RANDOM, "");
- else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Random|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_RANDOM, "");
- if (ts->prop_mode==PROP_CONST) uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Constant|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_CONST, "");
- else uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Constant|Shift O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, PROP_CONST, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
+ uiItemS(layout);
+ uiItemO(layout, "Smooth", 0, "MESH_OT_vertices_smooth");
+ uiItemO(layout, "Remove Doubles", 0, "MESH_OT_remove_doubles");
-void do_view3d_edit_mesh_verticesmenu(bContext *C, void *arg, int event)
-{
#if 0
- Scene *scene= CTX_data_scene(C);
-
- switch(event) {
- int count;
-
- case 0: /* make vertex parent */
- make_parent();
- break;
- case 1: /* remove doubles */
- count= removedoublesflag(1, 0, ts->doublimit);
- notice("Removed: %d", count);
- if (count) { /* only undo and redraw if an action is taken */
- DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- ED_undo_push(C, "Rem Doubles");
- }
- break;
- case 2: /* smooth */
- vertexsmooth();
- break;
- case 3: /* separate */
- separate_mesh();
- break;
- case 4: /*split */
- split_mesh();
- break;
- case 5: /*merge */
- mergemenu();
- DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- break;
- case 6: /* add hook */
- add_hook_menu();
- break;
- case 7: /* rip */
- mesh_rip();
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_edit_mesh_verticesmenu(bContext *C, ARegion *ar, void *arg_unused)
-{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_edit_mesh_verticesmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_mesh_verticesmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Merge...|Alt M", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rip|V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Split|Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Separate|P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Smooth|W, Alt 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Remove Doubles|W, 6", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Vertex Parent|Ctrl P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add Hook|Ctrl H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
+ uiItemS(layout);
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Vertex Parent|Ctrl P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); // add_hook_menu();
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add Hook|Ctrl H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, ""); // make_parent();
+#endif
}
-extern void editmesh_mark_sharp(int set); /* declared in editmesh_mods.c */
-
void do_view3d_edit_mesh_edgesmenu(bContext *C, void *arg, int event)
{
#if 0
@@ -2785,52 +2406,12 @@ void do_view3d_edit_mesh_edgesmenu(bContext *C, void *arg, int event)
short randfac;
switch(event) {
-
- case 0: /* subdivide smooth */
- esubdivideflag(1, 0.0, ts->editbutflag | B_SMOOTH,1,0);
- ED_undo_push(C, "Subdivide Smooth");
- break;
- case 1: /*subdivide fractal */
- randfac= 10;
- if(button(&randfac, 1, 100, "Rand fac:")==0) return;
- fac= -( (float)randfac )/100;
- esubdivideflag(1, fac, ts->editbutflag,1,0);
- ED_undo_push(C, "Subdivide Fractal");
- break;
- case 2: /* subdivide */
- esubdivideflag(1, 0.0, ts->editbutflag,1,0);
- ED_undo_push(C, "Subdivide");
- break;
- case 3: /* knife subdivide */
- KnifeSubdivide(KNIFE_PROMPT);
- break;
- case 4: /* Loop subdivide */
- CutEdgeloop(1);
- break;
- case 5: /* Make Edge/Face */
- addedgeface_mesh();
- break;
- case 6:
- bevel_menu();
- break;
- case 7: /* Mark Seam */
- editmesh_mark_seam(0);
- break;
- case 8: /* Clear Seam */
- editmesh_mark_seam(1);
- break;
case 9: /* Crease SubSurf */
if(!multires_level1_test()) {
initTransform(TFM_CREASE, CTX_EDGE);
Transform();
}
break;
- case 10: /* Rotate Edge */
- edge_rotate_selected(2);
- break;
- case 11: /* Rotate Edge */
- edge_rotate_selected(1);
- break;
case 12: /* Edgeslide */
EdgeSlide(0,0.0);
break;
@@ -2845,16 +2426,6 @@ void do_view3d_edit_mesh_edgesmenu(bContext *C, void *arg, int event)
collapseEdges();
ED_undo_push(C, "Collapse");
break;
- case 15:
- editmesh_mark_sharp(1);
- ED_undo_push(C, "Mark Sharp");
- DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- break;
- case 16:
- editmesh_mark_sharp(0);
- ED_undo_push(C, "Clear Sharp");
- DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- break;
case 17: /* Adjust Bevel Weight */
if(!multires_level1_test()) {
initTransform(TFM_BWEIGHT, CTX_EDGE);
@@ -2865,158 +2436,79 @@ void do_view3d_edit_mesh_edgesmenu(bContext *C, void *arg, int event)
#endif
}
-static uiBlock *view3d_edit_mesh_edgesmenu(bContext *C, ARegion *ar, void *arg_unused)
+static void view3d_edit_mesh_edgesmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
+ uiItemO(layout, NULL, 0, "MESH_OT_edge_face_add");
- block= uiBeginBlock(C, ar, "view3d_edit_mesh_edgesmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_mesh_edgesmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Edge/Face|F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Bevel|W, Alt 2", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Loop Subdivide...|Ctrl R", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Knife Subdivide...|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Subdivide|W, 1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Subdivide Fractal|W, 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Subdivide Smooth|W, 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
+#if 0
+ uiItemO(layout, "Bevel", 0, "MESH_OT_bevel"); // bevelmenu(em)
+ uiItemO(layout, "Loop Subdivide...", 0, "MESH_OT_loop_subdivide"); // Ctr R, CutEdgeloop(1);
+ uiItemO(layout, "Knife Subdivide...", 0, "MESH_OT_loop_subdivide"); // Shift K, KnifeSubdivide(KNIFE_PROMPT);
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+ uiItemS(layout);
+#endif
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mark Seam|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Clear Seam|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Mark Sharp|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Clear Sharp|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
-
+ uiItemO(layout, "Subdivide", 0, "MESH_OT_subdivide");
+ uiItemFloatO(layout, "Subdivide Smooth", 0, "MESH_OT_subdivide", "smoothness", 1.0f);
+
+ uiItemS(layout);
+
+ uiItemO(layout, "Mark Seam", 0, "MESH_OT_mark_seam");
+ uiItemBooleanO(layout, "Clear Seam", 0, "MESH_OT_mark_seam", "clear", 1);
+
+ uiItemS(layout);
+
+ uiItemO(layout, "Mark Sharp", 0, "MESH_OT_mark_sharp");
+ uiItemBooleanO(layout, "Clear Sharp", 0, "MESH_OT_mark_sharp", "clear", 1);
+
+#if 0
+ uiItemS(layout);
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Adjust Bevel Weight|Ctrl Shift E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Crease SubSurf|Shift E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
+#endif
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+ uiItemS(layout);
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate Edge CW|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate Edge CCW|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
+ uiItemEnumO(layout, "Rotate Edge CW", 0, "MESH_OT_edge_rotate", "direction", 1);
+ uiItemEnumO(layout, "Rotate Edge CCW", 0, "MESH_OT_edge_rotate", "direction", 2);
+#if 0
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Slide Edge |Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Edge Loop|X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Collapse", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 14, "");
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
-
-void do_view3d_edit_mesh_facesmenu(bContext *C, void *arg, int event)
-{
-#if 0
- Scene *scene= CTX_data_scene(C);
-
- switch(event) {
- case 0: /* Fill Faces */
- fill_mesh();
- break;
- case 1: /* Beauty Fill Faces */
- beauty_fill();
- break;
- case 2: /* Quads to Tris */
- convert_to_triface(0);
- countall();
- DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
- break;
- case 3: /* Tris to Quads */
- join_triangles();
- break;
- case 4: /* Flip triangle edges */
- edge_flip();
- break;
- case 5: /* Make Edge/Face */
- addedgeface_mesh();
- break;
- case 6: /* Set Smooth */
- mesh_set_smooth_faces(1);
- break;
- case 7: /* Set Solid */
- mesh_set_smooth_faces(0);
- break;
- }
#endif
}
-static uiBlock *view3d_edit_mesh_facesmenu(bContext *C, ARegion *ar, void *arg_unused)
+static void view3d_edit_mesh_facesmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
+ uiItemO(layout, NULL, 0, "MESH_OT_edge_face_add");
+ uiItemO(layout, NULL, 0, "MESH_OT_fill");
+ uiItemO(layout, NULL, 0, "MESH_OT_beauty_fill");
- block= uiBeginBlock(C, ar, "view3d_edit_mesh_facesmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_mesh_facesmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Edge/Face|F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Fill|Shift F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Beautify Fill|Alt F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
-
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Convert Quads to Triangles|Ctrl T", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Convert Triangles to Quads|Alt J", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Flip Triangle Edges|Ctrl Shift F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Smooth|W, Alt 3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Solid|W, Alt 4", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
-}
+ uiItemS(layout);
-void do_view3d_edit_mesh_normalsmenu(bContext *C, void *arg, int event)
-{
-#if 0
- switch(event) {
- case 0: /* flip */
- flip_editnormals();
- break;
- case 1: /* recalculate inside */
- righthandfaces(2);
- break;
- case 2: /* recalculate outside */
- righthandfaces(1);
- break;
- }
-#endif
+ uiItemO(layout, NULL, 0, "MESH_OT_quads_convert_to_tris");
+ uiItemO(layout, NULL, 0, "MESH_OT_tris_convert_to_quads");
+ uiItemO(layout, NULL, 0, "MESH_OT_edge_flip");
+
+ uiItemS(layout);
+
+ uiItemO(layout, NULL, 0, "MESH_OT_faces_shade_smooth");
+ uiItemO(layout, NULL, 0, "MESH_OT_faces_shade_solid");
}
-static uiBlock *view3d_edit_mesh_normalsmenu(bContext *C, ARegion *ar, void *arg_unused)
+static void view3d_edit_mesh_normalsmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
+ uiItemO(layout, "Recalculate Outside", 0, "MESH_OT_normals_make_consistent");
+ uiItemBooleanO(layout, "Recalculate Inside", 0, "MESH_OT_normals_make_consistent", "inside", 1);
- block= uiBeginBlock(C, ar, "view3d_edit_mesh_normalsmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_mesh_normalsmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Recalculate Outside|Ctrl N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Recalculate Inside|Ctrl Shift N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Flip|W, 0", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
+ uiItemS(layout);
+
+ uiItemO(layout, NULL, 0, "MESH_OT_flip_normals");
}
void do_view3d_edit_mirrormenu(bContext *C, void *arg, int event)
@@ -3092,49 +2584,18 @@ static uiBlock *view3d_edit_mirrormenu(bContext *C, ARegion *ar, void *arg_unuse
return block;
}
-static void do_view3d_edit_mesh_showhidemenu(bContext *C, void *arg, int event)
-{
-#if 0
-
- switch(event) {
-
- case 0: /* show hidden vertices */
- reveal_mesh();
- break;
- case 1: /* hide selected vertices */
- hide_mesh(0);
- break;
- case 2: /* hide deselected vertices */
- hide_mesh(1);
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_edit_mesh_showhidemenu(bContext *C, ARegion *ar, void *arg_unused)
+static void view3d_edit_mesh_showhidemenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- uiBlock *block;
- short yco = 20, menuwidth = 120;
-
- block= uiBeginBlock(C, ar, "view3d_edit_mesh_showhidemenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_mesh_showhidemenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Show Hidden|Alt H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Selected|H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Hide Unselected|Shift H", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
-
- uiBlockSetDirection(block, UI_RIGHT);
- uiTextBoundsBlock(block, 60);
- return block;
+ uiItemO(layout, NULL, 0, "MESH_OT_reveal");
+ uiItemO(layout, NULL, 0, "MESH_OT_hide");
+ uiItemBooleanO(layout, "Hide Unselected", 0, "MESH_OT_hide", "unselected", 1);
}
#ifndef DISABLE_PYTHON
+#if 0
static void do_view3d_edit_mesh_scriptsmenu(bContext *C, void *arg, int event)
{
-#if 0
BPY_menu_do_python(PYMENU_MESH, event);
-
-#endif
}
static uiBlock *view3d_edit_mesh_scriptsmenu(bContext *C, ARegion *ar, void *arg_unused)
@@ -3156,154 +2617,94 @@ static uiBlock *view3d_edit_mesh_scriptsmenu(bContext *C, ARegion *ar, void *arg
return block;
}
+#endif
#endif /* DISABLE_PYTHON */
+#if 0
static void do_view3d_edit_meshmenu(bContext *C, void *arg, int event)
{
-#if 0
- ToolSettings *ts= CTX_data_tool_settings(C);
- Scene *scene= CTX_data_scene(C);
ScrArea *sa= CTX_wm_area(C);
- View3D *v3d= sa->spacedata.first;
switch(event) {
- case 0: /* Undo Editing */
- BIF_undo();
- break;
- case 1: /* Redo Editing */
- BIF_redo();
- break;
case 2: /* transform properties */
add_blockhandler(sa, VIEW3D_HANDLER_OBJECT, 0);
break;
case 4: /* insert keyframe */
common_insertkey();
break;
- case 5: /* Extrude */
- extrude_mesh();
- break;
- case 6: /* duplicate */
- duplicate_context_selected();
- break;
- case 7: /* make edge face */
- addedgeface_mesh();
- break;
- case 8: /* delete */
- delete_context_selected();
- break;
- case 9: /* Shrink/Fatten Along Normals */
- initTransform(TFM_SHRINKFATTEN, CTX_NONE);
- Transform();
- break;
- case 10: /* Shear */
- initTransform(TFM_SHEAR, CTX_NONE);
- Transform();
- break;
- case 11: /* Warp */
- initTransform(TFM_WARP, CTX_NONE);
- Transform();
- break;
- case 12: /* proportional edit (toggle) */
- if(ts->proportional) ts->proportional= 0;
- else ts->proportional= 1;
- break;
- case 13: /* automerge edit (toggle) */
- if(ts->automerge) ts->automerge= 0;
- else ts->automerge= 1;
- break;
- case 15:
- uv_autocalc_tface();
- break;
case 16: /* delete keyframe */
common_deletekey();
break;
}
-#endif
}
+#endif
-static uiBlock *view3d_edit_meshmenu(bContext *C, ARegion *ar, void *arg_unused)
+static void view3d_edit_meshmenu(bContext *C, uiLayout *layout, void *arg_unused)
{
+ Scene *scene= CTX_data_scene(C);
ToolSettings *ts= CTX_data_tool_settings(C);
- Object *obedit = CTX_data_edit_object(C);
- uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "view3d_edit_meshmenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_meshmenu, NULL);
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Undo Editing|Ctrl Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Redo Editing|Ctrl Shift Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
-// XXX uiDefIconTextBlockBut(block, editmode_undohistorymenu, NULL, ICON_RIGHTARROW_THIN, "Undo History", 0, yco-=20, 120, 19, "");
+ PointerRNA tsptr;
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+ RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &tsptr);
+
+ uiItemO(layout, "Undo Editing", 0, "ED_OT_undo");
+ uiItemO(layout, "Redo Editing", 0, "ED_OT_redo");
+
+#if 0
+ uiDefIconTextBlockBut(block, editmode_undohistorymenu, NULL, ICON_RIGHTARROW_THIN, "Undo History", 0, yco-=20, 120, 19, "");
+#endif
+
+ uiItemS(layout);
- uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Transform Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+#if 0
uiDefIconTextBlockBut(block, view3d_transformmenu, NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, view3d_edit_mirrormenu, NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, view3d_edit_snapmenu, NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 19, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
+#endif
+
+ uiItemMenuF(layout, "Snap", 0, view3d_edit_snapmenu);
+
+ uiItemS(layout);
+
+#if 0
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Insert Keyframe|I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Keyframe|Alt I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "UV Unwrap|U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Extrude|E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Duplicate|Shift D", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make Edge/Face|F", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete...|X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBlockBut(block, view3d_edit_mesh_verticesmenu, NULL, ICON_RIGHTARROW_THIN, "Vertices", 0, yco-=20, 120, 19, "");
- uiDefIconTextBlockBut(block, view3d_edit_mesh_edgesmenu, NULL, ICON_RIGHTARROW_THIN, "Edges", 0, yco-=20, 120, 19, "");
- uiDefIconTextBlockBut(block, view3d_edit_mesh_facesmenu, NULL, ICON_RIGHTARROW_THIN, "Faces", 0, yco-=20, 120, 19, "");
- uiDefIconTextBlockBut(block, view3d_edit_mesh_normalsmenu, NULL, ICON_RIGHTARROW_THIN, "Normals", 0, yco-=20, 120, 19, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
-
- if(ts->proportional) {
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Proportional Editing|O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
- } else {
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Proportional Editing|O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
- }
- uiDefIconTextBlockBut(block, view3d_edit_propfalloffmenu, NULL, ICON_RIGHTARROW_THIN, "Proportional Falloff", 0, yco-=20, 120, 19, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- /* PITA but we should let users know that automerge cant work with multires :/ */
- uiDefIconTextBut(block, BUTM, 1,
- ts->automerge ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT,
- ((Mesh*)obedit->data)->mr ? "AutoMerge Editing (disabled by multires)" : "AutoMerge Editing",
- 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBlockBut(block, view3d_edit_mesh_showhidemenu, NULL, ICON_RIGHTARROW_THIN, "Show/Hide Vertices", 0, yco-=20, 120, 19, "");
+ uiItemS(layout);
+#endif
+
+ uiItemO(layout, NULL, 0, "UV_OT_mapping_menu");
+
+ uiItemS(layout);
+
+ uiItemO(layout, NULL, 0, "MESH_OT_extrude");
+ uiItemO(layout, NULL, 0, "MESH_OT_duplicate");
+ uiItemO(layout, "Delete...", 0, "MESH_OT_delete");
+
+ uiItemS(layout);
+
+ uiItemMenuF(layout, "Vertices", 0, view3d_edit_mesh_verticesmenu);
+ uiItemMenuF(layout, "Edges", 0, view3d_edit_mesh_edgesmenu);
+ uiItemMenuF(layout, "Faces", 0, view3d_edit_mesh_facesmenu);
+ uiItemMenuF(layout, "Normals", 0, view3d_edit_mesh_normalsmenu);
+
+ uiItemS(layout);
+
+ uiItemR(layout, NULL, 0, &tsptr, "automerge_editing", 0, 0, 0);
+ uiItemR(layout, NULL, 0, &tsptr, "proportional_editing", 0, 0, 0); // |O
+ uiItemMenuEnumR(layout, NULL, 0, &tsptr, "proportional_editing_falloff"); // |Shift O
+
+ uiItemS(layout);
+ uiItemMenuF(layout, "Show/Hide", 0, view3d_edit_mesh_showhidemenu);
+
+#if 0
#ifndef DISABLE_PYTHON
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+ uiItemS(layout);
uiDefIconTextBlockBut(block, view3d_edit_mesh_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Scripts", 0, yco-=20, 120, 19, "");
#endif
-
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
-
- uiTextBoundsBlock(block, 50);
- return block;
+#endif
}
static void view3d_edit_curve_controlpointsmenu(bContext *C, uiLayout *layout, void *arg_unused)
@@ -3345,19 +2746,21 @@ static void view3d_edit_curve_showhidemenu(bContext *C, uiLayout *layout, void *
static void view3d_edit_curvemenu(bContext *C, uiLayout *layout, void *arg_unused)
{
- PointerRNA sceneptr;
Scene *scene= CTX_data_scene(C);
-
- RNA_id_pointer_create(&scene->id, &sceneptr);
+ ToolSettings *ts= CTX_data_tool_settings(C);
+ PointerRNA tsptr;
+
+ RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &tsptr);
#if 0
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Transform Properties...|N", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
uiDefIconTextBlockBut(block, view3d_transformmenu, NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, view3d_edit_mirrormenu, NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, menuwidth, 19, "");
- uiDefIconTextBlockBut(block, view3d_edit_snapmenu, NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 19, "");
-
- uiItemS(layout);
#endif
+
+ uiItemMenuF(layout, "Snap", 0, view3d_edit_snapmenu);
+
+ uiItemS(layout);
// XXX uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Insert Keyframe|I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
// common_insertkey();
@@ -3379,8 +2782,8 @@ static void view3d_edit_curvemenu(bContext *C, uiLayout *layout, void *arg_unuse
uiItemS(layout);
- uiItemR(layout, NULL, 0, &sceneptr, "proportional_editing", 0, 0, 0); // |O
- uiItemMenuEnumR(layout, NULL, 0, &sceneptr, "proportional_editing_falloff");
+ uiItemR(layout, NULL, 0, &tsptr, "proportional_editing", 0, 0, 0); // |O
+ uiItemMenuEnumR(layout, NULL, 0, &tsptr, "proportional_editing_falloff"); // |Shift O
uiItemS(layout);
@@ -3472,7 +2875,7 @@ static uiBlock *view3d_edit_metaballmenu(bContext *C, ARegion *ar, void *arg_unu
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Transform Properties|N",0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, "");
uiDefIconTextBlockBut(block, view3d_transformmenu, NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, view3d_edit_mirrormenu, NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, menuwidth, 19, "");
- uiDefIconTextBlockBut(block, view3d_edit_snapmenu, NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 19, "");
+ // XXX uiDefIconTextBlockBut(block, view3d_edit_snapmenu, NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 19, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
@@ -3534,83 +2937,38 @@ static void view3d_edit_textmenu(bContext *C, uiLayout *layout, void *arg_unused
uiItemMenuF(layout, "Special Characters", 0, view3d_edit_text_charsmenu);
}
-static void do_view3d_edit_latticemenu(bContext *C, void *arg, int event)
+static void view3d_edit_latticemenu(bContext *C, uiLayout *layout, void *arg_unused)
{
-#if 0
Scene *scene= CTX_data_scene(C);
-
- switch(event) {
-
- case 0: /* Undo Editing */
- remake_editLatt();
- break;
- case 2: /* insert keyframe */
- common_insertkey();
- break;
- case 3: /* Shear */
- initTransform(TFM_SHEAR, CTX_NONE);
- Transform();
- break;
- case 4: /* Warp */
- initTransform(TFM_WARP, CTX_NONE);
- Transform();
- break;
- case 5: /* proportional edit (toggle) */
- if(ts->proportional) ts->proportional= 0;
- else ts->proportional= 1;
- break;
- case 7: /* delete keyframe */
- common_deletekey();
- break;
- }
-#endif
-}
-
-static uiBlock *view3d_edit_latticemenu(bContext *C, ARegion *ar, void *arg_unused)
-{
ToolSettings *ts= CTX_data_tool_settings(C);
- uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "view3d_edit_latticemenu", UI_EMBOSSP);
- uiBlockSetButmFunc(block, do_view3d_edit_latticemenu, NULL);
+ PointerRNA tsptr;
+ RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &tsptr);
+
+#if 0
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Undo Editing|U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBlockBut(block, view3d_transformmenu, NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, view3d_edit_mirrormenu, NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, menuwidth, 19, "");
- uiDefIconTextBlockBut(block, view3d_edit_snapmenu, NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 19, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Insert Keyframe|I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Keyframe|Alt I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
-
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "UV Unwrap|U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
-
- uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+#endif
+
+ uiItemMenuF(layout, "Snap", 0, view3d_edit_snapmenu);
+
+ uiItemS(layout);
+
+ // XXX uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Insert Keyframe|I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ // common_insertkey();
+ // XXX uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Keyframe|Alt I", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
+ // common_deletekey();
- if(ts->proportional) {
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Proportional Editing|O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- } else {
- uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Proportional Editing|O", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 5, "");
- }
- uiDefIconTextBlockBut(block, view3d_edit_propfalloffmenu, NULL, ICON_RIGHTARROW_THIN, "Proportional Falloff", 0, yco-=20, 120, 19, "");
+ uiItemO(layout, NULL, 0, "LATTICE_OT_make_regular");
- if(ar->alignment==RGN_ALIGN_TOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
+ uiItemS(layout);
- uiTextBoundsBlock(block, 50);
- return block;
+ uiItemR(layout, NULL, 0, &tsptr, "proportional_editing", 0, 0, 0); // |O
+ uiItemMenuEnumR(layout, NULL, 0, &tsptr, "proportional_editing_falloff"); // |Shift O
}
void do_view3d_edit_armature_parentmenu(bContext *C, void *arg, int event)
@@ -3821,7 +3179,7 @@ static uiBlock *view3d_edit_armaturemenu(bContext *C, ARegion *ar, void *arg_unu
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Bone Sketching|P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 23, "");
uiDefIconTextBlockBut(block, view3d_transformmenu, NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, view3d_edit_mirrormenu, NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, menuwidth, 19, "");
- uiDefIconTextBlockBut(block, view3d_edit_snapmenu, NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 19, "");
+ // XXX uiDefIconTextBlockBut(block, view3d_edit_snapmenu, NULL, ICON_RIGHTARROW_THIN, "Snap", 0, yco-=20, 120, 19, "");
uiDefIconTextBlockBut(block, view3d_edit_armature_rollmenu, NULL, ICON_RIGHTARROW_THIN, "Bone Roll", 0, yco-=20, 120, 19, "");
if (arm->drawtype==ARM_ENVELOPE)
@@ -4910,7 +4268,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
switch(event) {
case B_HOME:
- WM_operator_name_call(C, "VIEW3D_OT_viewhome", WM_OP_EXEC_REGION_WIN, NULL);
+ WM_operator_name_call(C, "VIEW3D_OT_view_all", WM_OP_EXEC_REGION_WIN, NULL);
break;
case B_REDR:
ED_area_tag_redraw(sa);
@@ -5078,16 +4436,22 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
break;
case B_MAN_TRANS:
- if( shift==0 || v3d->twtype==0)
+ if( shift==0 || v3d->twtype==0) {
v3d->twtype= V3D_MANIP_TRANSLATE;
+ ED_area_tag_redraw(sa);
+ }
break;
case B_MAN_ROT:
- if( shift==0 || v3d->twtype==0)
+ if( shift==0 || v3d->twtype==0) {
v3d->twtype= V3D_MANIP_ROTATE;
+ ED_area_tag_redraw(sa);
+ }
break;
case B_MAN_SCALE:
- if( shift==0 || v3d->twtype==0)
+ if( shift==0 || v3d->twtype==0) {
v3d->twtype= V3D_MANIP_SCALE;
+ ED_area_tag_redraw(sa);
+ }
break;
case B_NDOF:
break;
@@ -5165,17 +4529,17 @@ static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *o
xmax= GetButStringLength("Select");
if (obedit) {
if (ob && ob->type == OB_MESH) {
- uiDefPulldownBut(block, view3d_select_meshmenu, NULL, "Select", xco,yco, xmax-3, 24, "");
+ uiDefMenuBut(block, view3d_select_meshmenu, NULL, "Select", xco,yco, xmax-3, 20, "");
} else if (ob && (ob->type == OB_CURVE || ob->type == OB_SURF)) {
- uiDefMenuBut(block, view3d_select_curvemenu, NULL, "Select", xco, yco, xmax-3, 24, "");
+ uiDefMenuBut(block, view3d_select_curvemenu, NULL, "Select", xco, yco, xmax-3, 20, "");
} else if (ob && ob->type == OB_FONT) {
xmax= 0;
} else if (ob && ob->type == OB_MBALL) {
- uiDefPulldownBut(block, view3d_select_metaballmenu, NULL, "Select", xco,yco, xmax-3, 24, "");
+ uiDefPulldownBut(block, view3d_select_metaballmenu, NULL, "Select", xco,yco, xmax-3, 20, "");
} else if (ob && ob->type == OB_LATTICE) {
- uiDefPulldownBut(block, view3d_select_latticemenu, NULL, "Select", xco,yco, xmax-3, 20, "");
+ uiDefMenuBut(block, view3d_select_latticemenu, NULL, "Select", xco, yco, xmax-3, 20, "");
} else if (ob && ob->type == OB_ARMATURE) {
- uiDefPulldownBut(block, view3d_select_armaturemenu, NULL, "Select", xco,yco, xmax-3, 20, "");
+ uiDefMenuBut(block, view3d_select_armaturemenu, NULL, "Select", xco,yco, xmax-3, 20, "");
}
} else if (FACESEL_PAINT_TEST) {
if (ob && ob->type == OB_MESH) {
@@ -5188,16 +4552,16 @@ static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *o
} else {
if (ob && (ob->flag & OB_POSEMODE))
- uiDefPulldownBut(block, view3d_select_pose_armaturemenu, NULL, "Select", xco,yco, xmax-3, 20, "");
+ uiDefMenuBut(block, view3d_select_posemenu, NULL, "Select", xco,yco, xmax-3, 20, "");
else
- uiDefPulldownBut(block, view3d_select_objectmenu, NULL, "Select", xco,yco, xmax-3, 20, "");
+ uiDefMenuBut(block, view3d_select_objectmenu, NULL, "Select", xco,yco, xmax-3, 20, "");
}
xco+= xmax;
if (obedit) {
if (ob && ob->type == OB_MESH) {
xmax= GetButStringLength("Mesh");
- uiDefPulldownBut(block, view3d_edit_meshmenu, NULL, "Mesh", xco,yco, xmax-3, 20, "");
+ uiDefMenuBut(block, view3d_edit_meshmenu, NULL, "Mesh", xco,yco, xmax-3, 20, "");
xco+= xmax;
} else if (ob && ob->type == OB_CURVE) {
xmax= GetButStringLength("Curve");
@@ -5217,7 +4581,7 @@ static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *o
xco+= xmax;
} else if (ob && ob->type == OB_LATTICE) {
xmax= GetButStringLength("Lattice");
- uiDefPulldownBut(block, view3d_edit_latticemenu, NULL, "Lattice", xco,yco, xmax-3, 20, "");
+ uiDefMenuBut(block, view3d_edit_latticemenu, NULL, "Lattice", xco, yco, xmax-3, 20, "");
xco+= xmax;
} else if (ob && ob->type == OB_ARMATURE) {
xmax= GetButStringLength("Armature");
@@ -5581,36 +4945,3 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
uiDrawBlock(C, block);
}
-
-
-/* edit face toolbox */
-static int editmesh_face_toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
- uiPopupMenu *pup;
- uiLayout *layout;
-
- pup= uiPupMenuBegin(C, "Edit Faces", 0);
- layout= uiPupMenuLayout(pup);
-
- uiItemO(layout, NULL, 0, "MESH_OT_fill");
- uiItemO(layout, NULL, 0, "MESH_OT_beauty_fill");
- uiItemO(layout, NULL, 0, "MESH_OT_quads_convert_to_tris");
- uiItemO(layout, NULL, 0, "MESH_OT_tris_convert_to_quads");
- uiItemO(layout, NULL, 0, "MESH_OT_edge_flip");
- uiItemO(layout, NULL, 0, "MESH_OT_faces_shade_smooth");
- uiItemO(layout, NULL, 0, "MESH_OT_faces_shade_solid");
- uiPupMenuEnd(C, pup);
-
- return OPERATOR_CANCELLED;
-}
-
-void VIEW3D_OT_editmesh_face_toolbox(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Edit Faces";
- ot->idname= "VIEW3D_OT_editmesh_face_toolbox";
-
- /* api callbacks */
- ot->invoke= editmesh_face_toolbox_invoke;
- ot->poll= ED_operator_editmesh;
-}
diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h
index 65040b4238f..3e9382509f4 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -68,18 +68,18 @@ void view3d_keymap(struct wmWindowManager *wm);
void VIEW3D_OT_zoom(struct wmOperatorType *ot);
void VIEW3D_OT_viewmove(struct wmOperatorType *ot);
void VIEW3D_OT_viewrotate(struct wmOperatorType *ot);
-void VIEW3D_OT_viewhome(struct wmOperatorType *ot);
+void VIEW3D_OT_view_all(struct wmOperatorType *ot);
void VIEW3D_OT_viewnumpad(struct wmOperatorType *ot);
-void VIEW3D_OT_viewcenter(struct wmOperatorType *ot);
+void VIEW3D_OT_view_center(struct wmOperatorType *ot);
void VIEW3D_OT_view_pan(struct wmOperatorType *ot);
void VIEW3D_OT_view_persportho(struct wmOperatorType *ot);
void VIEW3D_OT_view_orbit(struct wmOperatorType *ot);
-void VIEW3D_OT_clipping(struct wmOperatorType *ot);
+void VIEW3D_OT_clip_border(struct wmOperatorType *ot);
void VIEW3D_OT_cursor3d(struct wmOperatorType *ot);
+void VIEW3D_OT_manipulator(struct wmOperatorType *ot);
void VIEW3D_OT_render_border(struct wmOperatorType *ot);
void VIEW3D_OT_zoom_border(struct wmOperatorType *ot);
void VIEW3D_OT_drawtype(struct wmOperatorType *ot);
-void VIEW3D_OT_editmesh_face_toolbox(struct wmOperatorType *ot);
void view3d_boxview_copy(ScrArea *sa, ARegion *ar);
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index 6cb1051ce4a..70dde481018 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -46,8 +46,6 @@
#include "BKE_global.h"
#include "BKE_utildefines.h"
-#include "BIF_transform.h"
-
#include "RNA_access.h"
#include "RNA_define.h"
@@ -55,6 +53,7 @@
#include "WM_types.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "view3d_intern.h"
@@ -66,24 +65,24 @@ void view3d_operatortypes(void)
WM_operatortype_append(VIEW3D_OT_viewrotate);
WM_operatortype_append(VIEW3D_OT_viewmove);
WM_operatortype_append(VIEW3D_OT_zoom);
- WM_operatortype_append(VIEW3D_OT_viewhome);
+ WM_operatortype_append(VIEW3D_OT_view_all);
WM_operatortype_append(VIEW3D_OT_viewnumpad);
WM_operatortype_append(VIEW3D_OT_view_orbit);
WM_operatortype_append(VIEW3D_OT_view_pan);
WM_operatortype_append(VIEW3D_OT_view_persportho);
- WM_operatortype_append(VIEW3D_OT_viewcenter);
+ WM_operatortype_append(VIEW3D_OT_view_center);
WM_operatortype_append(VIEW3D_OT_select);
WM_operatortype_append(VIEW3D_OT_select_border);
- WM_operatortype_append(VIEW3D_OT_clipping);
+ WM_operatortype_append(VIEW3D_OT_clip_border);
WM_operatortype_append(VIEW3D_OT_select_circle);
WM_operatortype_append(VIEW3D_OT_smoothview);
WM_operatortype_append(VIEW3D_OT_render_border);
WM_operatortype_append(VIEW3D_OT_zoom_border);
+ WM_operatortype_append(VIEW3D_OT_manipulator);
WM_operatortype_append(VIEW3D_OT_cursor3d);
WM_operatortype_append(VIEW3D_OT_select_lasso);
WM_operatortype_append(VIEW3D_OT_setcameratoview);
WM_operatortype_append(VIEW3D_OT_drawtype);
- WM_operatortype_append(VIEW3D_OT_editmesh_face_toolbox);
WM_operatortype_append(VIEW3D_OT_localview);
WM_operatortype_append(VIEW3D_OT_game_start);
WM_operatortype_append(VIEW3D_OT_layers);
@@ -136,12 +135,13 @@ void view3d_keymap(wmWindowManager *wm)
km = WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, KM_CTRL, 0);
RNA_boolean_set(km->ptr, "snap", 1);
+ WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", ACTIONMOUSE, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_cursor3d", ACTIONMOUSE, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_viewrotate", MIDDLEMOUSE, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_viewmove", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0);
- WM_keymap_verify_item(keymap, "VIEW3D_OT_viewcenter", PADPERIOD, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "VIEW3D_OT_view_center", PADPERIOD, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "VIEW3D_OT_smoothview", TIMER1, KM_ANY, KM_ANY, 0);
@@ -150,8 +150,8 @@ void view3d_keymap(wmWindowManager *wm)
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELINMOUSE, KM_PRESS, 0, 0)->ptr, "delta", 1);
RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELOUTMOUSE, KM_PRESS, 0, 0)->ptr, "delta", -1);
- RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewhome", HOMEKEY, KM_PRESS, 0, 0)->ptr, "center", 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewhome", CKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "center", 1);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", HOMEKEY, KM_PRESS, 0, 0)->ptr, "center", 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", CKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "center", 1);
/* numpad view hotkeys*/
RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD0, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_CAMERA);
@@ -209,7 +209,7 @@ void view3d_keymap(wmWindowManager *wm)
RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT|KM_CTRL, 0)->ptr, "type", 1);
WM_keymap_add_item(keymap, "VIEW3D_OT_select_circle", CKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "VIEW3D_OT_clipping", BKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "VIEW3D_OT_clip_border", BKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_zoom_border", BKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "VIEW3D_OT_render_border", BKEY, KM_PRESS, KM_SHIFT, 0);
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index a153f795292..fedf3a30181 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -66,7 +66,6 @@
#include "RE_pipeline.h" // make_stars
#include "BIF_gl.h"
-#include "BIF_retopo.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -79,6 +78,7 @@
#include "ED_particle.h"
#include "ED_mesh.h"
#include "ED_object.h"
+#include "ED_retopo.h"
#include "ED_screen.h"
#include "ED_types.h"
#include "ED_util.h"
@@ -1442,6 +1442,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
}
}
+ ED_armature_sync_selection(arm->edbo);
}
else if(obedit->type==OB_LATTICE) {
do_lattice_box_select(&vc, &rect, val==LEFTMOUSE);
diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c
index 8aba8e11d43..89a6d659d67 100644
--- a/source/blender/editors/space_view3d/view3d_toolbar.c
+++ b/source/blender/editors/space_view3d/view3d_toolbar.c
@@ -71,7 +71,6 @@
#include "BKE_utildefines.h"
#include "BIF_gl.h"
-#include "BIF_transform.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -87,6 +86,7 @@
#include "ED_object.h"
#include "ED_particle.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "ED_types.h"
#include "ED_util.h"
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 9fbcfc71082..368730b1cfa 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -457,6 +457,7 @@ static void view_editmove(unsigned short event)
#endif
}
+#if 0
static char *transform_to_undostr(TransInfo *t)
{
switch (t->mode) {
@@ -503,6 +504,7 @@ static char *transform_to_undostr(TransInfo *t)
}
return "Transform";
}
+#endif
/* ************************************************* */
@@ -1463,6 +1465,8 @@ int transformEnd(bContext *C, TransInfo *t)
void initManipulator(int mode)
{
+ printf("init manipulator mode %d\n", mode);
+
#if 0 // TRANSFORM_FIX_ME
Trans.state = TRANS_RUNNING;
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index 65edae6fca8..74cf1df1fa5 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -30,7 +30,7 @@
#ifndef TRANSFORM_H
#define TRANSFORM_H
-#include "BIF_transform.h"
+#include "ED_transform.h"
/* ************************** Types ***************************** */
@@ -496,8 +496,7 @@ void flushTransNodes(TransInfo *t);
void flushTransSeq(TransInfo *t);
/*********************** exported from transform_manipulator.c ********** */
-void draw_manipulator_ext(struct ScrArea *sa, int type, char axis, int col, float vec[3], float mat[][3]);
-int calc_manipulator_stats(struct ScrArea *sa);
+int calc_manipulator_stats(const struct bContext *C);
float get_drawsize(struct ARegion *ar, float *co);
/*********************** TransData Creation and General Handling *********** */
@@ -646,7 +645,7 @@ int createSpaceNormalTangent(float mat[3][3], float normal[3], float tangent[3])
int addMatrixSpace(struct bContext *C, float mat[3][3], char name[]);
int addObjectSpace(struct bContext *C, struct Object *ob);
-void applyTransformOrientation(struct bContext *C, TransInfo *t);
+void applyTransformOrientation(const struct bContext *C, TransInfo *t);
#define ORIENTATION_NONE 0
@@ -655,7 +654,7 @@ void applyTransformOrientation(struct bContext *C, TransInfo *t);
#define ORIENTATION_EDGE 3
#define ORIENTATION_FACE 4
-int getTransformOrientation(struct bContext *C, float normal[3], float plane[3], int activeOnly);
+int getTransformOrientation(const struct bContext *C, float normal[3], float plane[3], int activeOnly);
int createSpaceNormal(float mat[3][3], float normal[3]);
int createSpaceNormalTangent(float mat[3][3], float normal[3], float tangent[3]);
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 0d19eeb913e..47f9159d87f 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -112,7 +112,6 @@
//#include "BIF_meshtools.h"
//#include "BIF_mywindow.h"
//#include "BIF_resources.h"
-#include "BIF_retopo.h"
//#include "BIF_screen.h"
//#include "BIF_space.h"
//#include "BIF_toolbox.h"
@@ -126,6 +125,7 @@
#include "ED_object.h"
#include "ED_markers.h"
#include "ED_mesh.h"
+#include "ED_retopo.h"
#include "ED_types.h"
#include "ED_uvedit.h"
#include "ED_view3d.h"
@@ -2768,6 +2768,7 @@ static void createTransNlaData(bContext *C, TransInfo *t)
* It also makes sure gp-frames are still stored in chronological order after
* transform.
*/
+#if 0
static void posttrans_gpd_clean (bGPdata *gpd)
{
bGPDlayer *gpl;
@@ -2852,6 +2853,7 @@ static void posttrans_gpd_clean (bGPdata *gpd)
}
}
}
+#endif
/* Called during special_aftertrans_update to make sure selected keyframes replace
* any other keyframes which may reside on that frame (that is not selected).
@@ -2911,6 +2913,7 @@ static void posttrans_fcurve_clean (FCurve *fcu)
}
+
/* Called by special_aftertrans_update to make sure selected keyframes replace
* any other keyframes which may reside on that frame (that is not selected).
* remake_action_ipos should have already been called
@@ -2972,6 +2975,7 @@ static int count_fcurve_keys(FCurve *fcu, char side, float cfra)
}
/* fully select selected beztriples, but only include if it's on the right side of cfra */
+#if 0
static int count_gplayer_frames(bGPDlayer *gpl, char side, float cfra)
{
bGPDframe *gpf;
@@ -2990,6 +2994,7 @@ static int count_gplayer_frames(bGPDlayer *gpl, char side, float cfra)
return count;
}
+#endif
/* This function assigns the information to transdata */
static void TimeToTransData(TransData *td, float *time, AnimData *adt)
@@ -3071,6 +3076,7 @@ void flushTransGPactionData (TransInfo *t)
* The 'side' argument is needed for the extend mode. 'B' = both sides, 'R'/'L' mean only data
* on the named side are used.
*/
+#if 0
static int GPLayerToTransData (TransData *td, tGPFtransdata *tfd, bGPDlayer *gpl, char side, float cfra)
{
bGPDframe *gpf;
@@ -3097,6 +3103,7 @@ static int GPLayerToTransData (TransData *td, tGPFtransdata *tfd, bGPDlayer *gpl
return count;
}
+#endif
static void createTransActionData(bContext *C, TransInfo *t)
{
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 9d111f39b6d..3415c266cf1 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -63,7 +63,6 @@
//#include "BIF_editsima.h"
//#include "BIF_editparticle.h"
//#include "BIF_meshtools.h"
-#include "BIF_retopo.h"
#include "BKE_action.h"
#include "BKE_anim.h"
@@ -91,6 +90,7 @@
#include "ED_keyframing.h"
#include "ED_markers.h"
#include "ED_mesh.h"
+#include "ED_retopo.h"
#include "ED_space_api.h"
#include "ED_uvedit.h"
#include "ED_view3d.h"
@@ -116,8 +116,6 @@
extern ListBase editelems;
-extern TransInfo Trans; /* From transform.c */
-
/* ************************** Functions *************************** */
void getViewVector(TransInfo *t, float coord[3], float vec[3])
@@ -1364,9 +1362,12 @@ void calculatePropRatio(TransInfo *t)
}
}
+/* XXX only to make manipulators run now */
TransInfo *BIF_GetTransInfo()
{
- return NULL;
+ static struct TransInfo trans;
+ memset(&trans, 0, sizeof(struct TransInfo));
+ return &trans;
}
float get_drawsize(ARegion *ar, float *co)
diff --git a/source/blender/editors/transform/transform_input.c b/source/blender/editors/transform/transform_input.c
index 631eb1eb134..ae8aacb3477 100644
--- a/source/blender/editors/transform/transform_input.c
+++ b/source/blender/editors/transform/transform_input.c
@@ -35,7 +35,7 @@
#include "transform.h"
-
+
/* ************************** INPUT FROM MOUSE *************************** */
void InputVector(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
@@ -53,7 +53,7 @@ void InputVector(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
{
convertViewVec(t, output, (short)(mval[0] - t->imval[0]), (short)(mval[1] - t->imval[1]));
}
-
+
}
void InputSpring(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
@@ -65,11 +65,11 @@ void InputSpring(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
dx = (float)(mi->center[0] - mi->precision_mval[0]);
dy = (float)(mi->center[1] - mi->precision_mval[1]);
ratio = (float)sqrt( dx*dx + dy*dy);
-
+
dx= (float)(mi->center[0] - mval[0]);
dy= (float)(mi->center[1] - mval[1]);
precise_ratio = (float)sqrt( dx*dx + dy*dy);
-
+
ratio = (ratio + (precise_ratio - ratio) / 10.0f) / mi->factor;
}
else
@@ -78,16 +78,16 @@ void InputSpring(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
dy = (float)(mi->center[1] - mval[1]);
ratio = (float)sqrt( dx*dx + dy*dy) / mi->factor;
}
-
+
output[0] = ratio;
}
void InputSpringFlip(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
{
InputSpring(t, mi, mval, output);
-
+
/* flip scale */
- if ((mi->center[0] - mval[0]) * (mi->center[0] - mi->imval[0]) +
+ if ((mi->center[0] - mval[0]) * (mi->center[0] - mi->imval[0]) +
(mi->center[1] - mval[1]) * (mi->center[1] - mi->imval[1]) < 0)
{
output[0] *= -1.0f;
@@ -96,7 +96,7 @@ void InputSpringFlip(TransInfo *t, MouseInput *mi, short mval[2], float output[3
void InputTrackBall(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
{
-
+
if(mi->precision)
{
output[0] = ( mi->imval[1] - mi->precision_mval[1] ) + ( mi->precision_mval[1] - mval[1] ) * 0.1f;
@@ -107,7 +107,7 @@ void InputTrackBall(TransInfo *t, MouseInput *mi, short mval[2], float output[3]
output[0] = (float)( mi->imval[1] - mval[1] );
output[1] = (float)( mval[0] - mi->imval[0] );
}
-
+
output[0] *= mi->factor;
output[1] *= mi->factor;
}
@@ -125,7 +125,7 @@ void InputHorizontalRatio(TransInfo *t, MouseInput *mi, short mval[2], float out
else {
x = mval[0];
}
-
+
output[0] = (x - pad) / (t->ar->winx - 2 * pad);
}
@@ -134,7 +134,7 @@ void InputHorizontalAbsolute(TransInfo *t, MouseInput *mi, short mval[2], float
InputVector(t, mi, mval, vec);
Projf(vec, vec, t->viewinv[0]);
-
+
output[0] = Inpf(t->viewinv[0], vec) * 2.0f;
}
@@ -150,7 +150,7 @@ void InputVerticalRatio(TransInfo *t, MouseInput *mi, short mval[2], float outpu
else {
y = mval[0];
}
-
+
output[0] = (y - pad) / (t->ar->winy - 2 * pad);
}
@@ -159,7 +159,7 @@ void InputVerticalAbsolute(TransInfo *t, MouseInput *mi, short mval[2], float ou
InputVector(t, mi, mval, vec);
Projf(vec, vec, t->viewinv[1]);
-
+
output[0] = Inpf(t->viewinv[1], vec) * 2.0f;
}
@@ -182,7 +182,7 @@ void InputAngle(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
/* (A*B?A*B:1.0f) this takes care of potential divide by zero errors */
float dphi;
-
+
dphi = saacos((float)deler);
if( (dx1*dy2-dx2*dy1)>0.0 ) dphi= -dphi;
@@ -190,33 +190,33 @@ void InputAngle(TransInfo *t, MouseInput *mi, short mval[2], float output[3])
* approximate the angle with the oposite side of the normalized triangle
* This is a good approximation here since the smallest acos value seems to be around
* 0.02 degree and lower values don't even have a 0.01% error compared to the approximation
- * */
+ * */
if (dphi == 0)
{
double dx, dy;
-
+
dx2 /= A;
dy2 /= A;
-
+
dx1 /= B;
dy1 /= B;
-
+
dx = dx1 - dx2;
dy = dy1 - dy2;
-
+
dphi = sqrt(dx*dx + dy*dy);
if( (dx1*dy2-dx2*dy1)>0.0 ) dphi= -dphi;
}
-
+
if(mi->precision) dphi = dphi/30.0f;
-
+
/* if no delta angle, don't update initial position */
if (dphi != 0)
{
mi->imval[0] = mval[0];
mi->imval[1] = mval[1];
}
-
+
output[0] += dphi;
}
@@ -227,7 +227,7 @@ void initMouseInput(TransInfo *t, MouseInput *mi, int center[2], short mval[2])
mi->center[0] = center[0];
mi->center[1] = center[1];
-
+
mi->imval[0] = mval[0];
mi->imval[1] = mval[1];
}
@@ -247,7 +247,7 @@ static void calcSpringFactor(MouseInput *mi)
void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
{
-
+
switch(mode)
{
case INPUT_VECTOR:
@@ -270,7 +270,7 @@ void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
break;
case INPUT_TRACKBALL:
/* factor has to become setting or so */
- mi->factor = 0.1f;
+ mi->factor = 0.01f;
mi->apply = InputTrackBall;
t->helpline = HLP_TRACKBALL;
break;
@@ -296,8 +296,8 @@ void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
mi->apply = NULL;
break;
}
-
- /* bootstrap mouse input with initial values */
+
+ /* bootstrap mouse input with initial values */
applyMouseInput(t, mi, mi->imval, t->values);
}
@@ -312,7 +312,7 @@ void applyMouseInput(TransInfo *t, MouseInput *mi, short mval[2], float output[3
int handleMouseInput(TransInfo *t, MouseInput *mi, wmEvent *event)
{
int redraw = 0;
-
+
switch (event->type)
{
case LEFTSHIFTKEY:
@@ -334,6 +334,6 @@ int handleMouseInput(TransInfo *t, MouseInput *mi, wmEvent *event)
redraw = 1;
break;
}
-
+
return redraw;
}
diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index 99d7805b938..7c71e89f948 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -27,18 +27,10 @@
* ***** END GPL LICENSE BLOCK *****
*/
-// TRANSFORM_FIX_ME
-// Disable everything here, don't need it for now
-#if 0
-
#include <stdlib.h>
#include <string.h>
#include <math.h>
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifndef WIN32
#include <unistd.h>
#else
@@ -61,9 +53,13 @@
#include "DNA_userdef_types.h"
#include "DNA_view3d_types.h"
+#include "RNA_access.h"
+
#include "BKE_armature.h"
+#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_lattice.h"
+#include "BKE_mesh.h"
#include "BKE_object.h"
#include "BKE_particle.h"
#include "BKE_utildefines.h"
@@ -71,21 +67,21 @@
#include "BLI_arithb.h"
#include "BLI_editVert.h"
-#include "BIF_editarmature.h"
#include "BIF_gl.h"
-#include "BIF_mywindow.h"
-#include "BIF_resources.h"
-#include "BIF_screen.h"
-#include "BIF_space.h"
-#include "BIF_transform.h"
-#include "BIF_editmesh.h"
-#include "BIF_editparticle.h"
-
-#include "BSE_edit.h"
-#include "BSE_view.h"
-#include "BDR_drawobject.h"
-
-#include "blendef.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "ED_armature.h"
+#include "ED_mesh.h"
+#include "ED_particle.h"
+#include "ED_space_api.h"
+#include "ED_transform.h"
+#include "ED_view3d.h"
+
+#include "UI_resources.h"
+
+/* local module include */
#include "transform.h"
/* return codes for select, and drawing flags */
@@ -113,26 +109,23 @@
#define MAN_GHOST 1
#define MAN_MOVECOL 2
-/* GLOBAL VARIABLE THAT SHOULD MOVED TO SCREEN MEMBER OR SOMETHING */
-extern TransInfo Trans;
-
static int is_mat4_flipped(float mat[][4])
{
float vec[3];
-
+
Crossf(vec, mat[0], mat[1]);
if( Inpf(vec, mat[2]) < 0.0 ) return 1;
return 0;
-}
+}
/* transform widget center calc helper for below */
-static void calc_tw_center(float *co)
+static void calc_tw_center(Scene *scene, float *co)
{
- float *twcent= G.scene->twcent;
- float *min= G.scene->twmin;
- float *max= G.scene->twmax;
-
+ float *twcent= scene->twcent;
+ float *min= scene->twmin;
+ float *max= scene->twmax;
+
DO_MINMAX(co, min, max);
VecAddf(twcent, twcent, co);
}
@@ -145,7 +138,7 @@ static void protectflag_to_drawflags(short protectflag, short *drawflags)
*drawflags &= ~MAN_TRANS_Y;
if(protectflag & OB_LOCK_LOCZ)
*drawflags &= ~MAN_TRANS_Z;
-
+
if(protectflag & OB_LOCK_ROTX)
*drawflags &= ~MAN_ROT_X;
if(protectflag & OB_LOCK_ROTY)
@@ -162,13 +155,13 @@ static void protectflag_to_drawflags(short protectflag, short *drawflags)
}
/* for pose mode */
-static void stats_pose(View3D *v3d, bPoseChannel *pchan)
+static void stats_pose(Scene *scene, View3D *v3d, bPoseChannel *pchan)
{
Bone *bone= pchan->bone;
-
+
if(bone) {
if (bone->flag & BONE_TRANSFORM) {
- calc_tw_center(pchan->pose_head);
+ calc_tw_center(scene, pchan->pose_head);
protectflag_to_drawflags(pchan->protectflag, &v3d->twdrawflag);
}
}
@@ -183,11 +176,11 @@ static void stats_editbone(View3D *v3d, EditBone *ebo)
/* only counts the parent selection, and tags transform flag */
/* bad call... should re-use method from transform_conversion once */
-static void count_bone_select(TransInfo *t, bArmature *arm, ListBase *lb, int do_it)
+static void count_bone_select(TransInfo *t, bArmature *arm, ListBase *lb, int do_it)
{
Bone *bone;
int do_next;
-
+
for(bone= lb->first; bone; bone= bone->next) {
bone->flag &= ~BONE_TRANSFORM;
do_next= do_it;
@@ -209,63 +202,66 @@ static void count_bone_select(TransInfo *t, bArmature *arm, ListBase *lb, int do
/* centroid, boundbox, of selection */
/* returns total items selected */
-int calc_manipulator_stats(ScrArea *sa)
+int calc_manipulator_stats(const bContext *C)
{
- TransInfo *t;
+ TransInfo *t= BIF_GetTransInfo(); // XXX
+ ScrArea *sa= CTX_wm_area(C);
+ ARegion *ar= CTX_wm_region(C);
+ Scene *scene= CTX_data_scene(C);
+ Object *obedit= CTX_data_edit_object(C);
View3D *v3d= sa->spacedata.first;
+ RegionView3D *rv3d= ar->regiondata;
Base *base;
Object *ob= OBACT;
float normal[3]={0.0, 0.0, 0.0};
float plane[3]={0.0, 0.0, 0.0};
- int a, totsel=0;
+ int a, totsel= 0;
-//XXX t = BIF_GetTransInfo();
-
/* transform widget matrix */
- Mat4One(v3d->twmat);
-
+ Mat4One(rv3d->twmat);
+
v3d->twdrawflag= 0xFFFF;
-
+
/* transform widget centroid/center */
- G.scene->twcent[0]= G.scene->twcent[1]= G.scene->twcent[2]= 0.0f;
- INIT_MINMAX(G.scene->twmin, G.scene->twmax);
-
- if(t->obedit) {
- ob= t->obedit;
- if((ob->lay & G.vd->lay)==0) return 0;
-
- if(t->obedit->type==OB_MESH) {
- EditMesh *em = NULL; // TRANSFORM_FIX_ME
+ scene->twcent[0]= scene->twcent[1]= scene->twcent[2]= 0.0f;
+ INIT_MINMAX(scene->twmin, scene->twmax);
+
+ if(obedit) {
+ ob= obedit;
+ if((ob->lay & v3d->lay)==0) return 0;
+
+ if(obedit->type==OB_MESH) {
+ EditMesh *em = BKE_mesh_get_editmesh(obedit->data);
EditVert *eve;
EditSelection ese;
float vec[3]= {0,0,0};
-
+
/* USE LAST SELECTE WITH ACTIVE */
- if (G.vd->around==V3D_ACTIVE && EM_get_actSelection(&ese)) {
+ if (v3d->around==V3D_ACTIVE && EM_get_actSelection(em, &ese)) {
EM_editselection_center(vec, &ese);
- calc_tw_center(vec);
+ calc_tw_center(scene, vec);
totsel= 1;
} else {
/* do vertices for center, and if still no normal found, use vertex normals */
for(eve= em->verts.first; eve; eve= eve->next) {
if(eve->f & SELECT) {
totsel++;
- calc_tw_center(eve->co);
+ calc_tw_center(scene, eve->co);
}
}
}
} /* end editmesh */
- else if (t->obedit->type==OB_ARMATURE){
- bArmature *arm= t->obedit->data;
+ else if (obedit->type==OB_ARMATURE){
+ bArmature *arm= obedit->data;
EditBone *ebo;
- for (ebo=G.edbo.first;ebo;ebo=ebo->next){
+ for (ebo= arm->edbo->first; ebo; ebo=ebo->next){
if(ebo->layer & arm->layer) {
if (ebo->flag & BONE_TIPSEL) {
- calc_tw_center(ebo->tail);
+ calc_tw_center(scene, ebo->tail);
totsel++;
}
if (ebo->flag & BONE_ROOTSEL) {
- calc_tw_center(ebo->head);
+ calc_tw_center(scene, ebo->head);
totsel++;
}
if (ebo->flag & BONE_SELECTED) {
@@ -274,12 +270,12 @@ int calc_manipulator_stats(ScrArea *sa)
}
}
}
- else if ELEM(t->obedit->type, OB_CURVE, OB_SURF) {
- Curve *cu= t->obedit->data;
+ else if ELEM(obedit->type, OB_CURVE, OB_SURF) {
+ Curve *cu= obedit->data;
Nurb *nu;
BezTriple *bezt;
BPoint *bp;
-
+
nu= cu->editnurb->first;
while(nu) {
if((nu->type & 7)==CU_BEZIER) {
@@ -292,25 +288,25 @@ int calc_manipulator_stats(ScrArea *sa)
*/
if (G.f & G_HIDDENHANDLES) {
if (bezt->f2 & SELECT) {
- calc_tw_center(bezt->vec[1]);
+ calc_tw_center(scene, bezt->vec[1]);
totsel++;
}
}
else if ( (bezt->f1 & SELECT) + (bezt->f2 & SELECT) + (bezt->f3 & SELECT) > SELECT ) {
- calc_tw_center(bezt->vec[1]);
+ calc_tw_center(scene, bezt->vec[1]);
totsel++;
}
else {
if(bezt->f1) {
- calc_tw_center(bezt->vec[0]);
+ calc_tw_center(scene, bezt->vec[0]);
totsel++;
}
if(bezt->f2) {
- calc_tw_center(bezt->vec[1]);
+ calc_tw_center(scene, bezt->vec[1]);
totsel++;
}
if(bezt->f3) {
- calc_tw_center(bezt->vec[2]);
+ calc_tw_center(scene, bezt->vec[2]);
totsel++;
}
}
@@ -322,7 +318,7 @@ int calc_manipulator_stats(ScrArea *sa)
a= nu->pntsu*nu->pntsv;
while(a--) {
if(bp->f1 & SELECT) {
- calc_tw_center(bp->vec);
+ calc_tw_center(scene, bp->vec);
totsel++;
}
bp++;
@@ -331,76 +327,78 @@ int calc_manipulator_stats(ScrArea *sa)
nu= nu->next;
}
}
- else if(t->obedit->type==OB_MBALL) {
+ else if(obedit->type==OB_MBALL) {
/* editmball.c */
- extern ListBase editelems; /* go away ! */
+ ListBase editelems= {NULL, NULL}; /* XXX */
MetaElem *ml, *ml_sel=NULL;
-
+
ml= editelems.first;
while(ml) {
if(ml->flag & SELECT) {
- calc_tw_center(&ml->x);
+ calc_tw_center(scene, &ml->x);
ml_sel = ml;
totsel++;
}
ml= ml->next;
}
}
- else if(t->obedit->type==OB_LATTICE) {
+ else if(obedit->type==OB_LATTICE) {
BPoint *bp;
- bp= editLatt->def;
-
- a= editLatt->pntsu*editLatt->pntsv*editLatt->pntsw;
+ Lattice *lt= obedit->data;
+
+ bp= lt->editlatt->def;
+
+ a= lt->editlatt->pntsu*lt->editlatt->pntsv*lt->editlatt->pntsw;
while(a--) {
if(bp->f1 & SELECT) {
- calc_tw_center(bp->vec);
+ calc_tw_center(scene, bp->vec);
totsel++;
}
bp++;
}
}
-
+
/* selection center */
if(totsel) {
- VecMulf(G.scene->twcent, 1.0f/(float)totsel); // centroid!
- Mat4MulVecfl(t->obedit->obmat, G.scene->twcent);
- Mat4MulVecfl(t->obedit->obmat, G.scene->twmin);
- Mat4MulVecfl(t->obedit->obmat, G.scene->twmax);
+ VecMulf(scene->twcent, 1.0f/(float)totsel); // centroid!
+ Mat4MulVecfl(obedit->obmat, scene->twcent);
+ Mat4MulVecfl(obedit->obmat, scene->twmin);
+ Mat4MulVecfl(obedit->obmat, scene->twmax);
}
}
else if(ob && (ob->flag & OB_POSEMODE)) {
bArmature *arm = ob->data;
bPoseChannel *pchan;
int mode;
-
- if((ob->lay & G.vd->lay)==0) return 0;
-
- mode = Trans.mode;
- Trans.mode = TFM_ROTATION; // mislead counting bones... bah
-
+
+ if((ob->lay & v3d->lay)==0) return 0;
+
+ mode = t->mode;
+ t->mode = TFM_ROTATION; // mislead counting bones... bah
+
/* count total, we use same method as transform will do */
- Trans.total= 0;
- count_bone_select(&Trans, arm, &arm->bonebase, 1);
- totsel = Trans.total;
+ t->total= 0;
+ count_bone_select(t, arm, &arm->bonebase, 1);
+ totsel = t->total;
if(totsel) {
/* use channels to get stats */
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
- stats_pose(v3d, pchan);
+ stats_pose(scene, v3d, pchan);
}
-
- VecMulf(G.scene->twcent, 1.0f/(float)totsel); // centroid!
- Mat4MulVecfl(ob->obmat, G.scene->twcent);
- Mat4MulVecfl(ob->obmat, G.scene->twmin);
- Mat4MulVecfl(ob->obmat, G.scene->twmax);
+
+ VecMulf(scene->twcent, 1.0f/(float)totsel); // centroid!
+ Mat4MulVecfl(ob->obmat, scene->twcent);
+ Mat4MulVecfl(ob->obmat, scene->twmin);
+ Mat4MulVecfl(ob->obmat, scene->twmax);
}
/* restore, mode can be TFM_INIT */
- Trans.mode = mode;
+ t->mode = mode;
}
else if(G.f & (G_VERTEXPAINT + G_TEXTUREPAINT + G_WEIGHTPAINT + G_SCULPTMODE)) {
;
}
else if(G.f & G_PARTICLEEDIT) {
- ParticleSystem *psys=PE_get_current(OBACT);
+ ParticleSystem *psys= PE_get_current(scene, ob);
ParticleData *pa = psys->particles;
ParticleEditKey *ek;
int k;
@@ -411,7 +409,7 @@ int calc_manipulator_stats(ScrArea *sa)
for(k=0, ek=psys->edit->keys[a]; k<pa->totkey; k++, ek++) {
if(ek->flag & PEK_SELECT) {
- calc_tw_center(ek->world_co);
+ calc_tw_center(scene, ek->world_co);
totsel++;
}
}
@@ -419,48 +417,48 @@ int calc_manipulator_stats(ScrArea *sa)
/* selection center */
if(totsel)
- VecMulf(G.scene->twcent, 1.0f/(float)totsel); // centroid!
+ VecMulf(scene->twcent, 1.0f/(float)totsel); // centroid!
}
}
else {
-
+
/* we need the one selected object, if its not active */
ob= OBACT;
if(ob && !(ob->flag & SELECT)) ob= NULL;
-
- for(base= G.scene->base.first; base; base= base->next) {
- if TESTBASELIB(base) {
- if(ob==NULL)
+
+ for(base= scene->base.first; base; base= base->next) {
+ if TESTBASELIB(scene, base) {
+ if(ob==NULL)
ob= base->object;
- calc_tw_center(base->object->obmat[3]);
+ calc_tw_center(scene, base->object->obmat[3]);
protectflag_to_drawflags(base->object->protectflag, &v3d->twdrawflag);
totsel++;
}
}
-
+
/* selection center */
if(totsel) {
- VecMulf(G.scene->twcent, 1.0f/(float)totsel); // centroid!
+ VecMulf(scene->twcent, 1.0f/(float)totsel); // centroid!
}
}
-
+
/* global, local or normal orientation? */
if(ob && totsel) {
-
+
switch(v3d->twmode) {
case V3D_MANIP_GLOBAL:
strcpy(t->spacename, "global");
break;
-
+
case V3D_MANIP_NORMAL:
- if(t->obedit || ob->flag & OB_POSEMODE) {
+ if(obedit || ob->flag & OB_POSEMODE) {
float mat[3][3];
int type;
-
+
strcpy(t->spacename, "normal");
-
- type = getTransformOrientation(normal, plane, (G.vd->around == V3D_ACTIVE));
-
+
+ type = getTransformOrientation(C, normal, plane, (v3d->around == V3D_ACTIVE));
+
switch (type)
{
case ORIENTATION_NORMAL:
@@ -488,57 +486,57 @@ int calc_manipulator_stats(ScrArea *sa)
}
break;
}
-
+
if (type == ORIENTATION_NONE)
{
- Mat4One(v3d->twmat);
+ Mat4One(rv3d->twmat);
}
else
{
- Mat4CpyMat3(v3d->twmat, mat);
+ Mat4CpyMat3(rv3d->twmat, mat);
}
break;
}
/* no break we define 'normal' as 'local' in Object mode */
case V3D_MANIP_LOCAL:
strcpy(t->spacename, "local");
- Mat4CpyMat4(v3d->twmat, ob->obmat);
- Mat4Ortho(v3d->twmat);
+ Mat4CpyMat4(rv3d->twmat, ob->obmat);
+ Mat4Ortho(rv3d->twmat);
break;
-
+
case V3D_MANIP_VIEW:
{
float mat[3][3];
strcpy(t->spacename, "view");
- Mat3CpyMat4(mat, v3d->viewinv);
+ Mat3CpyMat4(mat, rv3d->viewinv);
Mat3Ortho(mat);
- Mat4CpyMat3(v3d->twmat, mat);
+ Mat4CpyMat3(rv3d->twmat, mat);
}
break;
default: /* V3D_MANIP_CUSTOM */
- applyTransformOrientation();
+ applyTransformOrientation(C, t);
break;
}
-
+
}
-
+
return totsel;
}
/* ******************** DRAWING STUFFIES *********** */
-static float screen_aligned(float mat[][4])
+static float screen_aligned(RegionView3D *rv3d, float mat[][4])
{
float vec[3], size;
-
+
VECCOPY(vec, mat[0]);
size= Normalize(vec);
-
+
glTranslatef(mat[3][0], mat[3][1], mat[3][2]);
-
+
/* sets view screen aligned */
- glRotatef( -360.0f*saacos(G.vd->viewquat[0])/(float)M_PI, G.vd->viewquat[1], G.vd->viewquat[2], G.vd->viewquat[3]);
-
+ glRotatef( -360.0f*saacos(rv3d->viewquat[0])/(float)M_PI, rv3d->viewquat[1], rv3d->viewquat[2], rv3d->viewquat[3]);
+
return size;
}
@@ -557,32 +555,32 @@ static void partial_donut(float radring, float radhole, int start, int end, int
float cos_theta1, sin_theta1;
float ring_delta, side_delta;
int i, j, docaps= 1;
-
+
if(start==0 && end==nrings) docaps= 0;
-
+
ring_delta= 2.0f*(float)M_PI/(float)nrings;
side_delta= 2.0f*(float)M_PI/(float)nsides;
-
+
theta= (float)M_PI+0.5f*ring_delta;
cos_theta= (float)cos(theta);
sin_theta= (float)sin(theta);
-
+
for(i= nrings - 1; i >= 0; i--) {
theta1= theta + ring_delta;
cos_theta1= (float)cos(theta1);
sin_theta1= (float)sin(theta1);
-
+
if(docaps && i==start) { // cap
glBegin(GL_POLYGON);
phi= 0.0;
for(j= nsides; j >= 0; j--) {
float cos_phi, sin_phi, dist;
-
+
phi += side_delta;
cos_phi= (float)cos(phi);
sin_phi= (float)sin(phi);
dist= radhole + radring * cos_phi;
-
+
glVertex3f(cos_theta1 * dist, -sin_theta1 * dist, radring * sin_phi);
}
glEnd();
@@ -592,35 +590,35 @@ static void partial_donut(float radring, float radhole, int start, int end, int
phi= 0.0;
for(j= nsides; j >= 0; j--) {
float cos_phi, sin_phi, dist;
-
+
phi += side_delta;
cos_phi= (float)cos(phi);
sin_phi= (float)sin(phi);
dist= radhole + radring * cos_phi;
-
+
glVertex3f(cos_theta1 * dist, -sin_theta1 * dist, radring * sin_phi);
glVertex3f(cos_theta * dist, -sin_theta * dist, radring * sin_phi);
}
glEnd();
}
-
+
if(docaps && i==end) { // cap
glBegin(GL_POLYGON);
phi= 0.0;
for(j= nsides; j >= 0; j--) {
float cos_phi, sin_phi, dist;
-
+
phi -= side_delta;
cos_phi= (float)cos(phi);
sin_phi= (float)sin(phi);
dist= radhole + radring * cos_phi;
-
+
glVertex3f(cos_theta * dist, -sin_theta * dist, radring * sin_phi);
}
glEnd();
}
-
-
+
+
theta= theta1;
cos_theta= cos_theta1;
sin_theta= sin_theta1;
@@ -632,30 +630,30 @@ static void partial_donut(float radring, float radhole, int start, int end, int
moving: in transform theme color
else the red/green/blue
*/
-static void manipulator_setcolor(char axis, int colcode)
+static void manipulator_setcolor(View3D *v3d, char axis, int colcode)
{
float vec[4];
char col[4];
-
+
vec[3]= 0.7f; // alpha set on 0.5, can be glEnabled or not
-
+
if(colcode==MAN_GHOST) {
glColor4ub(0, 0, 0, 70);
}
else if(colcode==MAN_MOVECOL) {
- BIF_GetThemeColor3ubv(TH_TRANSFORM, col);
+ UI_GetThemeColor3ubv(TH_TRANSFORM, col);
glColor4ub(col[0], col[1], col[2], 128);
}
else {
switch(axis) {
case 'c':
- BIF_GetThemeColor3ubv(TH_TRANSFORM, col);
- if(G.vd->twmode == V3D_MANIP_LOCAL) {
+ UI_GetThemeColor3ubv(TH_TRANSFORM, col);
+ if(v3d->twmode == V3D_MANIP_LOCAL) {
col[0]= col[0]>200?255:col[0]+55;
col[1]= col[1]>200?255:col[1]+55;
col[2]= col[2]>200?255:col[2]+55;
}
- else if(G.vd->twmode == V3D_MANIP_NORMAL) {
+ else if(v3d->twmode == V3D_MANIP_NORMAL) {
col[0]= col[0]<55?0:col[0]-55;
col[1]= col[1]<55?0:col[1]-55;
col[2]= col[2]<55?0:col[2]-55;
@@ -676,32 +674,32 @@ static void manipulator_setcolor(char axis, int colcode)
}
/* viewmatrix should have been set OK, also no shademode! */
-static void draw_manipulator_axes(int colcode, int flagx, int flagy, int flagz)
+static void draw_manipulator_axes(View3D *v3d, int colcode, int flagx, int flagy, int flagz)
{
-
+
/* axes */
if(flagx) {
- manipulator_setcolor('x', colcode);
+ manipulator_setcolor(v3d, 'x', colcode);
if(flagx & MAN_SCALE_X) glLoadName(MAN_SCALE_X);
else if(flagx & MAN_TRANS_X) glLoadName(MAN_TRANS_X);
glBegin(GL_LINES);
glVertex3f(0.2f, 0.0f, 0.0f);
glVertex3f(1.0f, 0.0f, 0.0f);
glEnd();
- }
+ }
if(flagy) {
if(flagy & MAN_SCALE_Y) glLoadName(MAN_SCALE_Y);
else if(flagy & MAN_TRANS_Y) glLoadName(MAN_TRANS_Y);
- manipulator_setcolor('y', colcode);
+ manipulator_setcolor(v3d, 'y', colcode);
glBegin(GL_LINES);
glVertex3f(0.0f, 0.2f, 0.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
glEnd();
- }
+ }
if(flagz) {
if(flagz & MAN_SCALE_Z) glLoadName(MAN_SCALE_Z);
else if(flagz & MAN_TRANS_Z) glLoadName(MAN_TRANS_Z);
- manipulator_setcolor('z', colcode);
+ manipulator_setcolor(v3d, 'z', colcode);
glBegin(GL_LINES);
glVertex3f(0.0f, 0.0f, 0.2f);
glVertex3f(0.0f, 0.0f, 1.0f);
@@ -710,68 +708,69 @@ static void draw_manipulator_axes(int colcode, int flagx, int flagy, int flagz)
}
/* only called while G.moving */
-static void draw_manipulator_rotate_ghost(float mat[][4], int drawflags)
+static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int drawflags)
{
+ TransInfo *t= BIF_GetTransInfo(); // XXX
GLUquadricObj *qobj;
float size, phi, startphi, vec[3], svec[3], matt[4][4], cross[3], tmat[3][3];
int arcs= (G.rt!=2);
-
+
glDisable(GL_DEPTH_TEST);
- qobj= gluNewQuadric();
- gluQuadricDrawStyle(qobj, GLU_FILL);
-
+ qobj= gluNewQuadric();
+ gluQuadricDrawStyle(qobj, GLU_FILL);
+
glColor4ub(0,0,0,64);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
-
- /* we need both [4][4] transforms, Trans.mat seems to be premul, not post for mat[][4] */
- Mat4CpyMat4(matt, mat); // to copy the parts outside of [3][3]
- Mat4MulMat34(matt, Trans.mat, mat);
+
+ /* we need both [4][4] transforms, t->mat seems to be premul, not post for mat[][4] */
+ Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
+ Mat4MulMat34(matt, t->mat, rv3d->twmat);
/* Screen aligned view rot circle */
if(drawflags & MAN_ROT_V) {
-
+
/* prepare for screen aligned draw */
glPushMatrix();
- size= screen_aligned(mat);
-
- vec[0]= (float)(Trans.con.imval[0] - Trans.center2d[0]);
- vec[1]= (float)(Trans.con.imval[1] - Trans.center2d[1]);
+ size= screen_aligned(rv3d, rv3d->twmat);
+
+ vec[0]= (float)(t->con.imval[0] - t->center2d[0]);
+ vec[1]= (float)(t->con.imval[1] - t->center2d[1]);
vec[2]= 0.0f;
Normalize(vec);
-
+
startphi= saacos( vec[1] );
if(vec[0]<0.0) startphi= -startphi;
-
- phi= (float)fmod(180.0*Trans.val/M_PI, 360.0);
+
+ phi= (float)fmod(180.0*t->val/M_PI, 360.0);
if(phi > 180.0) phi-= 360.0;
else if(phi<-180.0) phi+= 360.0;
-
+
gluPartialDisk(qobj, 0.0, size, 32, 1, 180.0*startphi/M_PI, phi);
-
+
glPopMatrix();
}
else if(arcs) {
float imat[3][3], ivmat[3][3];
/* try to get the start rotation */
-
- svec[0]= (float)(Trans.con.imval[0] - Trans.center2d[0]);
- svec[1]= (float)(Trans.con.imval[1] - Trans.center2d[1]);
+
+ svec[0]= (float)(t->con.imval[0] - t->center2d[0]);
+ svec[1]= (float)(t->con.imval[1] - t->center2d[1]);
svec[2]= 0.0f;
-
+
/* screen aligned vec transform back to manipulator space */
- Mat3CpyMat4(ivmat, G.vd->viewinv);
- Mat3CpyMat4(tmat, mat);
+ Mat3CpyMat4(ivmat, rv3d->viewinv);
+ Mat3CpyMat4(tmat, rv3d->twmat);
Mat3Inv(imat, tmat);
Mat3MulMat3(tmat, imat, ivmat);
-
+
Mat3MulVecfl(tmat, svec); // tmat is used further on
Normalize(svec);
- }
-
- mymultmatrix(mat); // aligns with original widget
-
+ }
+
+ wmMultMatrix(rv3d->twmat); // aligns with original widget
+
/* Z disk */
if(drawflags & MAN_ROT_Z) {
if(arcs) {
@@ -779,18 +778,18 @@ static void draw_manipulator_rotate_ghost(float mat[][4], int drawflags)
svec[0]+= tmat[2][0];
svec[1]+= tmat[2][1];
Normalize(svec);
-
+
startphi= (float)atan2(svec[0], svec[1]);
}
else startphi= 0.5f*(float)M_PI;
-
- VECCOPY(vec, mat[0]); // use x axis to detect rotation
+
+ VECCOPY(vec, rv3d->twmat[0]); // use x axis to detect rotation
Normalize(vec);
Normalize(matt[0]);
phi= saacos( Inpf(vec, matt[0]) );
if(phi!=0.0) {
Crossf(cross, vec, matt[0]); // results in z vector
- if(Inpf(cross, mat[2]) > 0.0) phi= -phi;
+ if(Inpf(cross, rv3d->twmat[2]) > 0.0) phi= -phi;
gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*(phi)/M_PI);
}
}
@@ -801,23 +800,23 @@ static void draw_manipulator_rotate_ghost(float mat[][4], int drawflags)
svec[1]+= tmat[2][1];
svec[2]+= tmat[2][2];
Normalize(svec);
-
+
startphi= (float)(M_PI + atan2(svec[2], -svec[1]));
}
else startphi= 0.0f;
-
- VECCOPY(vec, mat[1]); // use y axis to detect rotation
+
+ VECCOPY(vec, rv3d->twmat[1]); // use y axis to detect rotation
Normalize(vec);
Normalize(matt[1]);
phi= saacos( Inpf(vec, matt[1]) );
if(phi!=0.0) {
Crossf(cross, vec, matt[1]); // results in x vector
- if(Inpf(cross, mat[0]) > 0.0) phi= -phi;
+ if(Inpf(cross, rv3d->twmat[0]) > 0.0) phi= -phi;
glRotatef(90.0, 0.0, 1.0, 0.0);
gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*phi/M_PI);
glRotatef(-90.0, 0.0, 1.0, 0.0);
}
- }
+ }
/* Y circle */
if(drawflags & MAN_ROT_Y) {
if(arcs) {
@@ -825,83 +824,84 @@ static void draw_manipulator_rotate_ghost(float mat[][4], int drawflags)
svec[0]+= tmat[2][0];
svec[2]+= tmat[2][2];
Normalize(svec);
-
+
startphi= (float)(M_PI + atan2(-svec[0], svec[2]));
}
else startphi= (float)M_PI;
-
- VECCOPY(vec, mat[2]); // use z axis to detect rotation
+
+ VECCOPY(vec, rv3d->twmat[2]); // use z axis to detect rotation
Normalize(vec);
Normalize(matt[2]);
phi= saacos( Inpf(vec, matt[2]) );
if(phi!=0.0) {
Crossf(cross, vec, matt[2]); // results in y vector
- if(Inpf(cross, mat[1]) > 0.0) phi= -phi;
+ if(Inpf(cross, rv3d->twmat[1]) > 0.0) phi= -phi;
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*phi/M_PI);
glRotatef(90.0, 1.0, 0.0, 0.0);
}
}
-
+
glDisable(GL_BLEND);
- myloadmatrix(G.vd->viewmat);
+ wmLoadMatrix(rv3d->viewmat);
}
-static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, int combo)
+static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, int drawflags, int combo)
{
- GLUquadricObj *qobj;
+ TransInfo *t= BIF_GetTransInfo(); // XXX
+ GLUquadricObj *qobj;
double plane[4];
float size, vec[3], unitmat[4][4];
- float cywid= 0.33f*0.01f*(float)U.tw_handlesize;
+ float cywid= 0.33f*0.01f*(float)U.tw_handlesize;
float cusize= cywid*0.65f;
int arcs= (G.rt!=2);
int colcode;
-
+
if(moving) colcode= MAN_MOVECOL;
else colcode= MAN_RGB;
-
+
/* when called while moving in mixed mode, do not draw when... */
if((drawflags & MAN_ROT_C)==0) return;
-
+
/* Init stuff */
glDisable(GL_DEPTH_TEST);
Mat4One(unitmat);
qobj= gluNewQuadric();
- gluQuadricDrawStyle(qobj, GLU_FILL);
-
+ gluQuadricDrawStyle(qobj, GLU_FILL);
+
/* prepare for screen aligned draw */
- VECCOPY(vec, mat[0]);
+ VECCOPY(vec, rv3d->twmat[0]);
size= Normalize(vec);
glPushMatrix();
- glTranslatef(mat[3][0], mat[3][1], mat[3][2]);
-
+ glTranslatef(rv3d->twmat[3][0], rv3d->twmat[3][1], rv3d->twmat[3][2]);
+
if(arcs) {
/* clipplane makes nice handles, calc here because of multmatrix but with translate! */
- VECCOPY(plane, G.vd->viewinv[2]);
+ VECCOPY(plane, rv3d->viewinv[2]);
plane[3]= -0.02*size; // clip just a bit more
glClipPlane(GL_CLIP_PLANE0, plane);
}
/* sets view screen aligned */
- glRotatef( -360.0f*saacos(G.vd->viewquat[0])/(float)M_PI, G.vd->viewquat[1], G.vd->viewquat[2], G.vd->viewquat[3]);
-
+ glRotatef( -360.0f*saacos(rv3d->viewquat[0])/(float)M_PI, rv3d->viewquat[1], rv3d->viewquat[2], rv3d->viewquat[3]);
+
/* Screen aligned help circle */
if(arcs) {
if((G.f & G_PICKSEL)==0) {
- BIF_ThemeColorShade(TH_BACK, -30);
+ UI_ThemeColorShade(TH_BACK, -30);
drawcircball(GL_LINE_LOOP, unitmat[3], size, unitmat);
}
}
/* Screen aligned view rot circle */
if(drawflags & MAN_ROT_V) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V);
- BIF_ThemeColor(TH_TRANSFORM);
+ UI_ThemeColor(TH_TRANSFORM);
drawcircball(GL_LINE_LOOP, unitmat[3], 1.2f*size, unitmat);
-
- if(moving) {
+
+ if(moving) {
float vec[3];
- vec[0]= (float)(Trans.imval[0] - Trans.center2d[0]);
- vec[1]= (float)(Trans.imval[1] - Trans.center2d[1]);
+ vec[0]= (float)(t->imval[0] - t->center2d[0]);
+ vec[1]= (float)(t->imval[1] - t->center2d[1]);
vec[2]= 0.0f;
Normalize(vec);
VecMulf(vec, 1.2f*size);
@@ -912,20 +912,20 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
}
}
glPopMatrix();
-
+
/* apply the transform delta */
if(moving) {
float matt[4][4];
- Mat4CpyMat4(matt, mat); // to copy the parts outside of [3][3]
- Mat4MulMat34(matt, Trans.mat, mat);
- mymultmatrix(matt);
+ Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
+ Mat4MulMat34(matt, t->mat, rv3d->twmat);
+ wmMultMatrix(matt);
glFrontFace( is_mat4_flipped(matt)?GL_CW:GL_CCW);
}
else {
- glFrontFace( is_mat4_flipped(mat)?GL_CW:GL_CCW);
- mymultmatrix(mat);
+ glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW);
+ wmMultMatrix(rv3d->twmat);
}
-
+
/* axes */
if(arcs==0) {
if(!(G.f & G_PICKSEL)) {
@@ -933,17 +933,17 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
/* axis */
glBegin(GL_LINES);
if( (drawflags & MAN_ROT_X) || (moving && (drawflags & MAN_ROT_Z)) ) {
- manipulator_setcolor('x', colcode);
+ manipulator_setcolor(v3d, 'x', colcode);
glVertex3f(0.2f, 0.0f, 0.0f);
glVertex3f(1.0f, 0.0f, 0.0f);
- }
+ }
if( (drawflags & MAN_ROT_Y) || (moving && (drawflags & MAN_ROT_X)) ) {
- manipulator_setcolor('y', colcode);
+ manipulator_setcolor(v3d, 'y', colcode);
glVertex3f(0.0f, 0.2f, 0.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
- }
+ }
if( (drawflags & MAN_ROT_Z) || (moving && (drawflags & MAN_ROT_Y)) ) {
- manipulator_setcolor('z', colcode);
+ manipulator_setcolor(v3d, 'z', colcode);
glVertex3f(0.0f, 0.0f, 0.2f);
glVertex3f(0.0f, 0.0f, 1.0f);
}
@@ -951,183 +951,249 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
}
}
}
-
+
if(arcs==0 && moving) {
-
+
/* Z circle */
if(drawflags & MAN_ROT_Z) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z);
- manipulator_setcolor('z', colcode);
+ manipulator_setcolor(v3d, 'z', colcode);
drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat);
}
/* X circle */
if(drawflags & MAN_ROT_X) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X);
glRotatef(90.0, 0.0, 1.0, 0.0);
- manipulator_setcolor('x', colcode);
+ manipulator_setcolor(v3d, 'x', colcode);
drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat);
glRotatef(-90.0, 0.0, 1.0, 0.0);
- }
+ }
/* Y circle */
if(drawflags & MAN_ROT_Y) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y);
glRotatef(-90.0, 1.0, 0.0, 0.0);
- manipulator_setcolor('y', colcode);
+ manipulator_setcolor(v3d, 'y', colcode);
drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat);
glRotatef(90.0, 1.0, 0.0, 0.0);
}
-
+
if(arcs) glDisable(GL_CLIP_PLANE0);
}
// donut arcs
if(arcs) {
glEnable(GL_CLIP_PLANE0);
-
+
/* Z circle */
if(drawflags & MAN_ROT_Z) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z);
- manipulator_setcolor('z', colcode);
+ manipulator_setcolor(v3d, 'z', colcode);
partial_donut(cusize/4.0f, 1.0f, 0, 48, 8, 48);
}
/* X circle */
if(drawflags & MAN_ROT_X) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X);
glRotatef(90.0, 0.0, 1.0, 0.0);
- manipulator_setcolor('x', colcode);
+ manipulator_setcolor(v3d, 'x', colcode);
partial_donut(cusize/4.0f, 1.0f, 0, 48, 8, 48);
glRotatef(-90.0, 0.0, 1.0, 0.0);
- }
+ }
/* Y circle */
if(drawflags & MAN_ROT_Y) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y);
glRotatef(-90.0, 1.0, 0.0, 0.0);
- manipulator_setcolor('y', colcode);
+ manipulator_setcolor(v3d, 'y', colcode);
partial_donut(cusize/4.0f, 1.0f, 0, 48, 8, 48);
glRotatef(90.0, 1.0, 0.0, 0.0);
}
-
+
glDisable(GL_CLIP_PLANE0);
}
-
+
if(arcs==0) {
-
+
/* Z handle on X axis */
if(drawflags & MAN_ROT_Z) {
glPushMatrix();
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z);
- manipulator_setcolor('z', colcode);
+ manipulator_setcolor(v3d, 'z', colcode);
partial_donut(0.7f*cusize, 1.0f, 31, 33, 8, 64);
glPopMatrix();
- }
+ }
/* Y handle on X axis */
if(drawflags & MAN_ROT_Y) {
glPushMatrix();
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y);
- manipulator_setcolor('y', colcode);
-
+ manipulator_setcolor(v3d, 'y', colcode);
+
glRotatef(90.0, 1.0, 0.0, 0.0);
glRotatef(90.0, 0.0, 0.0, 1.0);
partial_donut(0.7f*cusize, 1.0f, 31, 33, 8, 64);
-
+
glPopMatrix();
}
-
+
/* X handle on Z axis */
if(drawflags & MAN_ROT_X) {
glPushMatrix();
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X);
- manipulator_setcolor('x', colcode);
-
+ manipulator_setcolor(v3d, 'x', colcode);
+
glRotatef(-90.0, 0.0, 1.0, 0.0);
glRotatef(90.0, 0.0, 0.0, 1.0);
partial_donut(0.7f*cusize, 1.0f, 31, 33, 8, 64);
glPopMatrix();
}
-
+
}
-
+
/* restore */
- myloadmatrix(G.vd->viewmat);
+ wmLoadMatrix(rv3d->viewmat);
gluDeleteQuadric(qobj);
- if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
-
+ if(v3d->zbuf) glEnable(GL_DEPTH_TEST);
+
+}
+
+static void drawsolidcube(float size)
+{
+ static float cube[8][3] = {
+ {-1.0, -1.0, -1.0},
+ {-1.0, -1.0, 1.0},
+ {-1.0, 1.0, 1.0},
+ {-1.0, 1.0, -1.0},
+ { 1.0, -1.0, -1.0},
+ { 1.0, -1.0, 1.0},
+ { 1.0, 1.0, 1.0},
+ { 1.0, 1.0, -1.0}, };
+ float n[3];
+
+ glPushMatrix();
+ glScalef(size, size, size);
+
+ n[0]=0; n[1]=0; n[2]=0;
+ glBegin(GL_QUADS);
+ n[0]= -1.0;
+ glNormal3fv(n);
+ glVertex3fv(cube[0]); glVertex3fv(cube[1]); glVertex3fv(cube[2]); glVertex3fv(cube[3]);
+ n[0]=0;
+ glEnd();
+
+ glBegin(GL_QUADS);
+ n[1]= -1.0;
+ glNormal3fv(n);
+ glVertex3fv(cube[0]); glVertex3fv(cube[4]); glVertex3fv(cube[5]); glVertex3fv(cube[1]);
+ n[1]=0;
+ glEnd();
+
+ glBegin(GL_QUADS);
+ n[0]= 1.0;
+ glNormal3fv(n);
+ glVertex3fv(cube[4]); glVertex3fv(cube[7]); glVertex3fv(cube[6]); glVertex3fv(cube[5]);
+ n[0]=0;
+ glEnd();
+
+ glBegin(GL_QUADS);
+ n[1]= 1.0;
+ glNormal3fv(n);
+ glVertex3fv(cube[7]); glVertex3fv(cube[3]); glVertex3fv(cube[2]); glVertex3fv(cube[6]);
+ n[1]=0;
+ glEnd();
+
+ glBegin(GL_QUADS);
+ n[2]= 1.0;
+ glNormal3fv(n);
+ glVertex3fv(cube[1]); glVertex3fv(cube[5]); glVertex3fv(cube[6]); glVertex3fv(cube[2]);
+ n[2]=0;
+ glEnd();
+
+ glBegin(GL_QUADS);
+ n[2]= -1.0;
+ glNormal3fv(n);
+ glVertex3fv(cube[7]); glVertex3fv(cube[4]); glVertex3fv(cube[0]); glVertex3fv(cube[3]);
+ glEnd();
+
+ glPopMatrix();
}
-static void draw_manipulator_scale(float mat[][4], int moving, int drawflags, int combo, int colcode)
+
+static void draw_manipulator_scale(View3D *v3d, RegionView3D *rv3d, int moving, int drawflags, int combo, int colcode)
{
- float cywid= 0.25f*0.01f*(float)U.tw_handlesize;
+ TransInfo *t= BIF_GetTransInfo(); // XXX
+ float cywid= 0.25f*0.01f*(float)U.tw_handlesize;
float cusize= cywid*0.75f, dz;
-
+
/* when called while moving in mixed mode, do not draw when... */
if((drawflags & MAN_SCALE_C)==0) return;
-
+
glDisable(GL_DEPTH_TEST);
-
+
/* not in combo mode */
if( (combo & (V3D_MANIP_TRANSLATE|V3D_MANIP_ROTATE))==0) {
float size, unitmat[4][4];
-
+ int shift= 0; // XXX
+
/* center circle, do not add to selection when shift is pressed (planar constraint) */
- if( (G.f & G_PICKSEL) && (G.qual & LR_SHIFTKEY)==0) glLoadName(MAN_SCALE_C);
-
- manipulator_setcolor('c', colcode);
+ if( (G.f & G_PICKSEL) && shift==0) glLoadName(MAN_SCALE_C);
+
+ manipulator_setcolor(v3d, 'c', colcode);
glPushMatrix();
- size= screen_aligned(mat);
+ size= screen_aligned(rv3d, rv3d->twmat);
Mat4One(unitmat);
drawcircball(GL_LINE_LOOP, unitmat[3], 0.2f*size, unitmat);
glPopMatrix();
-
+
dz= 1.0;
}
else dz= 1.0f-4.0f*cusize;
-
+
if(moving) {
float matt[4][4];
-
- Mat4CpyMat4(matt, mat); // to copy the parts outside of [3][3]
- Mat4MulMat34(matt, Trans.mat, mat);
- mymultmatrix(matt);
+
+ Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
+ Mat4MulMat34(matt, t->mat, rv3d->twmat);
+ wmMultMatrix(matt);
glFrontFace( is_mat4_flipped(matt)?GL_CW:GL_CCW);
}
else {
- mymultmatrix(mat);
- glFrontFace( is_mat4_flipped(mat)?GL_CW:GL_CCW);
+ wmMultMatrix(rv3d->twmat);
+ glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW);
}
-
+
/* axis */
-
+
/* in combo mode, this is always drawn as first type */
- draw_manipulator_axes(colcode, drawflags & MAN_SCALE_X, drawflags & MAN_SCALE_Y, drawflags & MAN_SCALE_Z);
-
+ draw_manipulator_axes(v3d, colcode, drawflags & MAN_SCALE_X, drawflags & MAN_SCALE_Y, drawflags & MAN_SCALE_Z);
+
/* Z cube */
glTranslatef(0.0, 0.0, dz);
if(drawflags & MAN_SCALE_Z) {
if(G.f & G_PICKSEL) glLoadName(MAN_SCALE_Z);
- manipulator_setcolor('z', colcode);
+ manipulator_setcolor(v3d, 'z', colcode);
drawsolidcube(cusize);
- }
+ }
/* X cube */
glTranslatef(dz, 0.0, -dz);
if(drawflags & MAN_SCALE_X) {
if(G.f & G_PICKSEL) glLoadName(MAN_SCALE_X);
- manipulator_setcolor('x', colcode);
+ manipulator_setcolor(v3d, 'x', colcode);
drawsolidcube(cusize);
- }
+ }
/* Y cube */
glTranslatef(-dz, dz, 0.0);
if(drawflags & MAN_SCALE_Y) {
if(G.f & G_PICKSEL) glLoadName(MAN_SCALE_Y);
- manipulator_setcolor('y', colcode);
+ manipulator_setcolor(v3d, 'y', colcode);
drawsolidcube(cusize);
}
-
+
/* if shiftkey, center point as last, for selectbuffer order */
if(G.f & G_PICKSEL) {
- if(G.qual & LR_SHIFTKEY) {
+ int shift= 0; // XXX
+
+ if(shift) {
glTranslatef(0.0, -dz, 0.0);
glLoadName(MAN_SCALE_C);
glBegin(GL_POINTS);
@@ -1135,11 +1201,11 @@ static void draw_manipulator_scale(float mat[][4], int moving, int drawflags, in
glEnd();
}
}
-
+
/* restore */
- myloadmatrix(G.vd->viewmat);
-
- if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
+ wmLoadMatrix(rv3d->viewmat);
+
+ if(v3d->zbuf) glEnable(GL_DEPTH_TEST);
glFrontFace(GL_CCW);
}
@@ -1149,132 +1215,135 @@ static void draw_cone(GLUquadricObj *qobj, float len, float width)
glTranslatef(0.0, 0.0, -0.5f*len);
gluCylinder(qobj, width, 0.0, len, 8, 1);
gluQuadricOrientation(qobj, GLU_INSIDE);
- gluDisk(qobj, 0.0, width, 8, 1);
+ gluDisk(qobj, 0.0, width, 8, 1);
gluQuadricOrientation(qobj, GLU_OUTSIDE);
glTranslatef(0.0, 0.0, 0.5f*len);
}
static void draw_cylinder(GLUquadricObj *qobj, float len, float width)
{
-
+
width*= 0.8f; // just for beauty
-
+
glTranslatef(0.0, 0.0, -0.5f*len);
gluCylinder(qobj, width, width, len, 8, 1);
gluQuadricOrientation(qobj, GLU_INSIDE);
- gluDisk(qobj, 0.0, width, 8, 1);
+ gluDisk(qobj, 0.0, width, 8, 1);
gluQuadricOrientation(qobj, GLU_OUTSIDE);
glTranslatef(0.0, 0.0, len);
- gluDisk(qobj, 0.0, width, 8, 1);
+ gluDisk(qobj, 0.0, width, 8, 1);
glTranslatef(0.0, 0.0, -0.5f*len);
}
-static void draw_manipulator_translate(float mat[][4], int moving, int drawflags, int combo, int colcode)
+static void draw_manipulator_translate(View3D *v3d, RegionView3D *rv3d, int moving, int drawflags, int combo, int colcode)
{
- GLUquadricObj *qobj;
+ TransInfo *t= BIF_GetTransInfo(); // XXX
+ GLUquadricObj *qobj;
float cylen= 0.01f*(float)U.tw_handlesize;
float cywid= 0.25f*cylen, dz, size;
float unitmat[4][4];
-
+ int shift= 0; // XXX
+
/* when called while moving in mixed mode, do not draw when... */
if((drawflags & MAN_TRANS_C)==0) return;
-
- if(moving) glTranslatef(Trans.vec[0], Trans.vec[1], Trans.vec[2]);
+
+ if(moving) glTranslatef(t->vec[0], t->vec[1], t->vec[2]);
glDisable(GL_DEPTH_TEST);
qobj= gluNewQuadric();
- gluQuadricDrawStyle(qobj, GLU_FILL);
-
+ gluQuadricDrawStyle(qobj, GLU_FILL);
+
/* center circle, do not add to selection when shift is pressed (planar constraint) */
- if( (G.f & G_PICKSEL) && (G.qual & LR_SHIFTKEY)==0) glLoadName(MAN_TRANS_C);
-
- manipulator_setcolor('c', colcode);
+ if( (G.f & G_PICKSEL) && shift==0) glLoadName(MAN_TRANS_C);
+
+ manipulator_setcolor(v3d, 'c', colcode);
glPushMatrix();
- size= screen_aligned(mat);
+ size= screen_aligned(rv3d, rv3d->twmat);
Mat4One(unitmat);
drawcircball(GL_LINE_LOOP, unitmat[3], 0.2f*size, unitmat);
glPopMatrix();
-
+
/* and now apply matrix, we move to local matrix drawing */
- mymultmatrix(mat);
-
+ wmMultMatrix(rv3d->twmat);
+
/* axis */
glLoadName(-1);
-
+
// translate drawn as last, only axis when no combo with scale, or for ghosting
if((combo & V3D_MANIP_SCALE)==0 || colcode==MAN_GHOST)
- draw_manipulator_axes(colcode, drawflags & MAN_TRANS_X, drawflags & MAN_TRANS_Y, drawflags & MAN_TRANS_Z);
+ draw_manipulator_axes(v3d, colcode, drawflags & MAN_TRANS_X, drawflags & MAN_TRANS_Y, drawflags & MAN_TRANS_Z);
+
-
/* offset in combo mode, for rotate a bit more */
if(combo & (V3D_MANIP_ROTATE)) dz= 1.0f+2.0f*cylen;
else if(combo & (V3D_MANIP_SCALE)) dz= 1.0f+0.5f*cylen;
else dz= 1.0f;
-
+
/* Z Cone */
glTranslatef(0.0, 0.0, dz);
if(drawflags & MAN_TRANS_Z) {
if(G.f & G_PICKSEL) glLoadName(MAN_TRANS_Z);
- manipulator_setcolor('z', colcode);
+ manipulator_setcolor(v3d, 'z', colcode);
draw_cone(qobj, cylen, cywid);
- }
+ }
/* X Cone */
glTranslatef(dz, 0.0, -dz);
if(drawflags & MAN_TRANS_X) {
if(G.f & G_PICKSEL) glLoadName(MAN_TRANS_X);
glRotatef(90.0, 0.0, 1.0, 0.0);
- manipulator_setcolor('x', colcode);
+ manipulator_setcolor(v3d, 'x', colcode);
draw_cone(qobj, cylen, cywid);
glRotatef(-90.0, 0.0, 1.0, 0.0);
- }
+ }
/* Y Cone */
glTranslatef(-dz, dz, 0.0);
if(drawflags & MAN_TRANS_Y) {
if(G.f & G_PICKSEL) glLoadName(MAN_TRANS_Y);
glRotatef(-90.0, 1.0, 0.0, 0.0);
- manipulator_setcolor('y', colcode);
+ manipulator_setcolor(v3d, 'y', colcode);
draw_cone(qobj, cylen, cywid);
}
gluDeleteQuadric(qobj);
- myloadmatrix(G.vd->viewmat);
-
- if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
-
+ wmLoadMatrix(rv3d->viewmat);
+
+ if(v3d->zbuf) glEnable(GL_DEPTH_TEST);
+
}
-static void draw_manipulator_rotate_cyl(float mat[][4], int moving, int drawflags, int combo, int colcode)
+static void draw_manipulator_rotate_cyl(View3D *v3d, RegionView3D *rv3d, int moving, int drawflags, int combo, int colcode)
{
+ TransInfo *t= BIF_GetTransInfo(); // XXX
GLUquadricObj *qobj;
float size;
float cylen= 0.01f*(float)U.tw_handlesize;
float cywid= 0.25f*cylen;
-
+
/* when called while moving in mixed mode, do not draw when... */
if((drawflags & MAN_ROT_C)==0) return;
/* prepare for screen aligned draw */
glPushMatrix();
- size= screen_aligned(mat);
-
+ size= screen_aligned(rv3d, rv3d->twmat);
+
glDisable(GL_DEPTH_TEST);
- qobj= gluNewQuadric();
-
+ qobj= gluNewQuadric();
+
/* Screen aligned view rot circle */
if(drawflags & MAN_ROT_V) {
float unitmat[4][4];
Mat4One(unitmat);
-
+
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V);
- BIF_ThemeColor(TH_TRANSFORM);
+ UI_ThemeColor(TH_TRANSFORM);
drawcircball(GL_LINE_LOOP, unitmat[3], 1.2f*size, unitmat);
-
+
if(moving) {
float vec[3];
- vec[0]= (float)(Trans.imval[0] - Trans.center2d[0]);
- vec[1]= (float)(Trans.imval[1] - Trans.center2d[1]);
+ vec[0]= (float)(t->imval[0] - t->center2d[0]);
+ vec[1]= (float)(t->imval[1] - t->center2d[1]);
vec[2]= 0.0f;
Normalize(vec);
VecMulf(vec, 1.2f*size);
@@ -1285,65 +1354,65 @@ static void draw_manipulator_rotate_cyl(float mat[][4], int moving, int drawflag
}
}
glPopMatrix();
-
+
/* apply the transform delta */
if(moving) {
float matt[4][4];
- Mat4CpyMat4(matt, mat); // to copy the parts outside of [3][3]
- if (Trans.flag & T_USES_MANIPULATOR) {
- Mat4MulMat34(matt, Trans.mat, mat);
+ Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3]
+ if (t->flag & T_USES_MANIPULATOR) {
+ Mat4MulMat34(matt, t->mat, rv3d->twmat);
}
- mymultmatrix(matt);
+ wmMultMatrix(matt);
}
else {
- mymultmatrix(mat);
+ wmMultMatrix(rv3d->twmat);
}
-
- glFrontFace( is_mat4_flipped(mat)?GL_CW:GL_CCW);
-
+
+ glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW);
+
/* axis */
if( (G.f & G_PICKSEL)==0 ) {
-
+
// only draw axis when combo didn't draw scale axes
if((combo & V3D_MANIP_SCALE)==0)
- draw_manipulator_axes(colcode, drawflags & MAN_ROT_X, drawflags & MAN_ROT_Y, drawflags & MAN_ROT_Z);
-
+ draw_manipulator_axes(v3d, colcode, drawflags & MAN_ROT_X, drawflags & MAN_ROT_Y, drawflags & MAN_ROT_Z);
+
/* only has to be set when not in picking */
- gluQuadricDrawStyle(qobj, GLU_FILL);
+ gluQuadricDrawStyle(qobj, GLU_FILL);
}
-
+
/* Z cyl */
glTranslatef(0.0, 0.0, 1.0);
if(drawflags & MAN_ROT_Z) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z);
- manipulator_setcolor('z', colcode);
+ manipulator_setcolor(v3d, 'z', colcode);
draw_cylinder(qobj, cylen, cywid);
- }
+ }
/* X cyl */
glTranslatef(1.0, 0.0, -1.0);
if(drawflags & MAN_ROT_X) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X);
glRotatef(90.0, 0.0, 1.0, 0.0);
- manipulator_setcolor('x', colcode);
+ manipulator_setcolor(v3d, 'x', colcode);
draw_cylinder(qobj, cylen, cywid);
glRotatef(-90.0, 0.0, 1.0, 0.0);
- }
+ }
/* Y cylinder */
glTranslatef(-1.0, 1.0, 0.0);
if(drawflags & MAN_ROT_Y) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y);
glRotatef(-90.0, 1.0, 0.0, 0.0);
- manipulator_setcolor('y', colcode);
+ manipulator_setcolor(v3d, 'y', colcode);
draw_cylinder(qobj, cylen, cywid);
}
-
+
/* restore */
-
+
gluDeleteQuadric(qobj);
- myloadmatrix(G.vd->viewmat);
-
- if(G.vd->zbuf) glEnable(GL_DEPTH_TEST);
-
+ wmLoadMatrix(rv3d->viewmat);
+
+ if(v3d->zbuf) glEnable(GL_DEPTH_TEST);
+
}
@@ -1353,78 +1422,33 @@ static float get_manipulator_drawsize(ARegion *ar)
{
RegionView3D *rv3d= ar->regiondata;
float size = get_drawsize(ar, rv3d->twmat[3]);
-
+
size*= (float)U.tw_size;
return size;
}
-/* exported to transform_constraints.c */
-/* mat, vec = default orientation and location */
-/* type = transform type */
-/* axis = x, y, z, c */
-/* col: 0 = colored, 1 = moving, 2 = ghost */
-void draw_manipulator_ext(ScrArea *sa, int type, char axis, int col, float vec[3], float mat[][3])
-{
- int drawflags= 0;
- float mat4[4][4];
- int colcode;
-
- Mat4CpyMat3(mat4, mat);
- VECCOPY(mat4[3], vec);
-
- Mat4MulFloat3((float *)mat4, get_manipulator_drawsize(sa));
-
- glEnable(GL_BLEND); // let's do it transparent by default
- if(col==0) colcode= MAN_RGB;
- else if(col==1) colcode= MAN_MOVECOL;
- else colcode= MAN_GHOST;
-
-
- if(type==TFM_ROTATION) {
- if(axis=='x') drawflags= MAN_ROT_X;
- else if(axis=='y') drawflags= MAN_ROT_Y;
- else if(axis=='z') drawflags= MAN_ROT_Z;
- else drawflags= MAN_ROT_C;
-
- draw_manipulator_rotate_cyl(mat4, col, drawflags, V3D_MANIP_ROTATE, colcode);
- }
- else if(type==TFM_RESIZE) {
- if(axis=='x') drawflags= MAN_SCALE_X;
- else if(axis=='y') drawflags= MAN_SCALE_Y;
- else if(axis=='z') drawflags= MAN_SCALE_Z;
- else drawflags= MAN_SCALE_C;
-
- draw_manipulator_scale(mat4, col, drawflags, V3D_MANIP_SCALE, colcode);
- }
- else {
- if(axis=='x') drawflags= MAN_TRANS_X;
- else if(axis=='y') drawflags= MAN_TRANS_Y;
- else if(axis=='z') drawflags= MAN_TRANS_Z;
- else drawflags= MAN_TRANS_C;
-
- draw_manipulator_translate(mat4, 0, drawflags, V3D_MANIP_TRANSLATE, colcode);
- }
-
-
- glDisable(GL_BLEND);
-}
/* main call, does calc centers & orientation too */
/* uses global G.moving */
static int drawflags= 0xFFFF; // only for the calls below, belongs in scene...?
-void BIF_draw_manipulator(ScrArea *sa)
+
+void BIF_draw_manipulator(const bContext *C)
{
+ ScrArea *sa= CTX_wm_area(C);
+ ARegion *ar= CTX_wm_region(C);
+ Scene *scene= CTX_data_scene(C);
View3D *v3d= sa->spacedata.first;
+ RegionView3D *rv3d= ar->regiondata;
int totsel;
-
+
if(!(v3d->twflag & V3D_USE_MANIPULATOR)) return;
if(G.moving && (G.moving & G_TRANSFORM_MANIP)==0) return;
-
+
if(G.moving==0) {
v3d->twflag &= ~V3D_DRAW_MANIPULATOR;
-
- totsel= calc_manipulator_stats(sa);
+
+ totsel= calc_manipulator_stats(C);
if(totsel==0) return;
drawflags= v3d->twdrawflag; /* set in calc_manipulator_stats */
@@ -1434,123 +1458,119 @@ void BIF_draw_manipulator(ScrArea *sa)
switch(v3d->around) {
case V3D_CENTER:
case V3D_ACTIVE:
- v3d->twmat[3][0]= (G.scene->twmin[0] + G.scene->twmax[0])/2.0f;
- v3d->twmat[3][1]= (G.scene->twmin[1] + G.scene->twmax[1])/2.0f;
- v3d->twmat[3][2]= (G.scene->twmin[2] + G.scene->twmax[2])/2.0f;
- if(v3d->around==V3D_ACTIVE && t->obedit==NULL) {
+ rv3d->twmat[3][0]= (scene->twmin[0] + scene->twmax[0])/2.0f;
+ rv3d->twmat[3][1]= (scene->twmin[1] + scene->twmax[1])/2.0f;
+ rv3d->twmat[3][2]= (scene->twmin[2] + scene->twmax[2])/2.0f;
+ if(v3d->around==V3D_ACTIVE && scene->obedit==NULL) {
Object *ob= OBACT;
- if(ob && !(ob->flag & OB_POSEMODE))
- VECCOPY(v3d->twmat[3], ob->obmat[3]);
+ if(ob && !(ob->flag & OB_POSEMODE))
+ VECCOPY(rv3d->twmat[3], ob->obmat[3]);
}
break;
case V3D_LOCAL:
case V3D_CENTROID:
- VECCOPY(v3d->twmat[3], G.scene->twcent);
+ VECCOPY(rv3d->twmat[3], scene->twcent);
break;
case V3D_CURSOR:
- VECCOPY(v3d->twmat[3], give_cursor());
+ VECCOPY(rv3d->twmat[3], give_cursor(scene, v3d));
break;
}
-
- Mat4MulFloat3((float *)v3d->twmat, get_manipulator_drawsize(sa));
+
+ Mat4MulFloat3((float *)rv3d->twmat, get_manipulator_drawsize(ar));
}
-
+
if(v3d->twflag & V3D_DRAW_MANIPULATOR) {
-
+
if(v3d->twtype & V3D_MANIP_ROTATE) {
-
+
/* rotate has special ghosting draw, for pie chart */
- if(G.moving) draw_manipulator_rotate_ghost(v3d->twmat, drawflags);
-
+ if(G.moving) draw_manipulator_rotate_ghost(v3d, rv3d, drawflags);
+
if(G.moving) glEnable(GL_BLEND);
-
+
if(G.rt==3) {
- if(G.moving) draw_manipulator_rotate_cyl(v3d->twmat, 1, drawflags, v3d->twtype, MAN_MOVECOL);
- else draw_manipulator_rotate_cyl(v3d->twmat, 0, drawflags, v3d->twtype, MAN_RGB);
+ if(G.moving) draw_manipulator_rotate_cyl(v3d, rv3d, 1, drawflags, v3d->twtype, MAN_MOVECOL);
+ else draw_manipulator_rotate_cyl(v3d, rv3d, 0, drawflags, v3d->twtype, MAN_RGB);
}
else
- draw_manipulator_rotate(v3d->twmat, G.moving, drawflags, v3d->twtype);
-
+ draw_manipulator_rotate(v3d, rv3d, G.moving, drawflags, v3d->twtype);
+
glDisable(GL_BLEND);
}
if(v3d->twtype & V3D_MANIP_SCALE) {
if(G.moving) {
glEnable(GL_BLEND);
- draw_manipulator_scale(v3d->twmat, 0, drawflags, v3d->twtype, MAN_GHOST);
- draw_manipulator_scale(v3d->twmat, 1, drawflags, v3d->twtype, MAN_MOVECOL);
+ draw_manipulator_scale(v3d, rv3d, 0, drawflags, v3d->twtype, MAN_GHOST);
+ draw_manipulator_scale(v3d, rv3d, 1, drawflags, v3d->twtype, MAN_MOVECOL);
glDisable(GL_BLEND);
}
- else draw_manipulator_scale(v3d->twmat, 0, drawflags, v3d->twtype, MAN_RGB);
+ else draw_manipulator_scale(v3d, rv3d, 0, drawflags, v3d->twtype, MAN_RGB);
}
if(v3d->twtype & V3D_MANIP_TRANSLATE) {
if(G.moving) {
glEnable(GL_BLEND);
- draw_manipulator_translate(v3d->twmat, 0, drawflags, v3d->twtype, MAN_GHOST);
- draw_manipulator_translate(v3d->twmat, 1, drawflags, v3d->twtype, MAN_MOVECOL);
+ draw_manipulator_translate(v3d, rv3d, 0, drawflags, v3d->twtype, MAN_GHOST);
+ draw_manipulator_translate(v3d, rv3d, 1, drawflags, v3d->twtype, MAN_MOVECOL);
glDisable(GL_BLEND);
}
- else draw_manipulator_translate(v3d->twmat, 0, drawflags, v3d->twtype, MAN_RGB);
+ else draw_manipulator_translate(v3d, rv3d, 0, drawflags, v3d->twtype, MAN_RGB);
}
}
}
-static int manipulator_selectbuf(ScrArea *sa, float hotspot)
+static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, short *mval, float hotspot)
{
View3D *v3d= sa->spacedata.first;
+ RegionView3D *rv3d= ar->regiondata;
rctf rect;
GLuint buffer[64]; // max 4 items per select, so large enuf
- short hits, mval[2];
-
+ short hits;
+ extern void setwinmatrixview3d(ARegion *ar, View3D *v3d, rctf *rect); // XXX check a bit later on this... (ton)
+
G.f |= G_PICKSEL;
-
- getmouseco_areawin(mval);
+
rect.xmin= mval[0]-hotspot;
rect.xmax= mval[0]+hotspot;
rect.ymin= mval[1]-hotspot;
rect.ymax= mval[1]+hotspot;
-
- /* get rid of overlay button matrix */
- persp(PERSP_VIEW);
-
- setwinmatrixview3d(sa->winx, sa->winy, &rect);
- Mat4MulMat4(v3d->persmat, v3d->viewmat, sa->winmat);
-
+
+ setwinmatrixview3d(ar, v3d, &rect);
+ Mat4MulMat4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
+
glSelectBuffer( 64, buffer);
glRenderMode(GL_SELECT);
glInitNames(); /* these two calls whatfor? It doesnt work otherwise */
glPushName(-2);
-
+
/* do the drawing */
if(v3d->twtype & V3D_MANIP_ROTATE) {
- if(G.rt==3) draw_manipulator_rotate_cyl(v3d->twmat, 0, MAN_ROT_C & v3d->twdrawflag, v3d->twtype, MAN_RGB);
- else draw_manipulator_rotate(v3d->twmat, 0, MAN_ROT_C & v3d->twdrawflag, v3d->twtype);
+ if(G.rt==3) draw_manipulator_rotate_cyl(v3d, rv3d, 0, MAN_ROT_C & v3d->twdrawflag, v3d->twtype, MAN_RGB);
+ else draw_manipulator_rotate(v3d, rv3d, 0, MAN_ROT_C & v3d->twdrawflag, v3d->twtype);
}
if(v3d->twtype & V3D_MANIP_SCALE)
- draw_manipulator_scale(v3d->twmat, 0, MAN_SCALE_C & v3d->twdrawflag, v3d->twtype, MAN_RGB);
+ draw_manipulator_scale(v3d, rv3d, 0, MAN_SCALE_C & v3d->twdrawflag, v3d->twtype, MAN_RGB);
if(v3d->twtype & V3D_MANIP_TRANSLATE)
- draw_manipulator_translate(v3d->twmat, 0, MAN_TRANS_C & v3d->twdrawflag, v3d->twtype, MAN_RGB);
-
+ draw_manipulator_translate(v3d, rv3d, 0, MAN_TRANS_C & v3d->twdrawflag, v3d->twtype, MAN_RGB);
+
glPopName();
hits= glRenderMode(GL_RENDER);
-
+
G.f &= ~G_PICKSEL;
- setwinmatrixview3d(sa->winx, sa->winy, NULL);
- Mat4MulMat4(v3d->persmat, v3d->viewmat, sa->winmat);
-
- persp(PERSP_WIN);
-
+ setwinmatrixview3d(ar, v3d, NULL);
+ Mat4MulMat4(rv3d->persmat, rv3d->viewmat, rv3d->winmat);
+
if(hits==1) return buffer[3];
else if(hits>1) {
GLuint val, dep, mindep=0, mindeprot=0, minval=0, minvalrot=0;
int a;
-
+
/* we compare the hits in buffer, but value centers highest */
/* we also store the rotation hits separate (because of arcs) and return hits on other widgets if there are */
for(a=0; a<hits; a++) {
dep= buffer[4*a + 1];
val= buffer[4*a + 3];
-
+
if(val==MAN_TRANS_C) return MAN_TRANS_C;
else if(val==MAN_SCALE_C) return MAN_SCALE_C;
else {
@@ -1568,7 +1588,7 @@ static int manipulator_selectbuf(ScrArea *sa, float hotspot)
}
}
}
-
+
if(minval)
return minval;
else
@@ -1578,108 +1598,110 @@ static int manipulator_selectbuf(ScrArea *sa, float hotspot)
}
/* return 0; nothing happened */
-int BIF_do_manipulator(ScrArea *sa)
+int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op)
{
+ ScrArea *sa= CTX_wm_area(C);
View3D *v3d= sa->spacedata.first;
+ ARegion *ar= CTX_wm_region(C);
+ int constraint_axis[3] = {0, 0, 0};
int val;
-
+ int shift = event->shift;
+
if(!(v3d->twflag & V3D_USE_MANIPULATOR)) return 0;
if(!(v3d->twflag & V3D_DRAW_MANIPULATOR)) return 0;
-
+
// find the hotspots first test narrow hotspot
- val= manipulator_selectbuf(sa, 0.5f*(float)U.tw_hotspot);
+ val= manipulator_selectbuf(sa, ar, event->mval, 0.5f*(float)U.tw_hotspot);
if(val) {
- checkFirstTime(); // TEMPORARY, check this before doing any transform call.
+
// drawflags still global, for drawing call above
- drawflags= manipulator_selectbuf(sa, 0.2f*(float)U.tw_hotspot);
+ drawflags= manipulator_selectbuf(sa, ar, event->mval, 0.2f*(float)U.tw_hotspot);
if(drawflags==0) drawflags= val;
if (drawflags & MAN_TRANS_C) {
- initManipulator(TFM_TRANSLATION);
switch(drawflags) {
case MAN_TRANS_C:
break;
case MAN_TRANS_X:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_TRANS_Y|MAN_TRANS_Z;
- BIF_setDualAxisConstraint(v3d->twmat[1], v3d->twmat[2], " Y+Z");
+ if(shift) {
+ constraint_axis[1] = 1;
+ constraint_axis[2] = 1;
}
else
- BIF_setSingleAxisConstraint(v3d->twmat[0], " X");
+ constraint_axis[0] = 1;
break;
case MAN_TRANS_Y:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_TRANS_X|MAN_TRANS_Z;
- BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[2], " X+Z");
+ if(shift) {
+ constraint_axis[0] = 1;
+ constraint_axis[2] = 1;
}
else
- BIF_setSingleAxisConstraint(v3d->twmat[1], " Y");
+ constraint_axis[1] = 1;
break;
case MAN_TRANS_Z:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_TRANS_X|MAN_TRANS_Y;
- BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[1], " X+Y");
+ if(shift) {
+ constraint_axis[0] = 1;
+ constraint_axis[1] = 1;
}
else
- BIF_setSingleAxisConstraint(v3d->twmat[2], " Z");
+ constraint_axis[2] = 1;
break;
}
- ManipulatorTransform();
+ RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
+ WM_operator_name_call(C, "TFM_OT_translation", WM_OP_INVOKE_REGION_WIN, op->ptr);
}
else if (drawflags & MAN_SCALE_C) {
- initManipulator(TFM_RESIZE);
switch(drawflags) {
case MAN_SCALE_X:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_SCALE_Y|MAN_SCALE_Z;
- BIF_setDualAxisConstraint(v3d->twmat[1], v3d->twmat[2], " Y+Z");
+ if(shift) {
+ constraint_axis[1] = 1;
+ constraint_axis[2] = 1;
}
else
- BIF_setSingleAxisConstraint(v3d->twmat[0], " X");
+ constraint_axis[0] = 1;
break;
case MAN_SCALE_Y:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_SCALE_X|MAN_SCALE_Z;
- BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[2], " X+Z");
+ if(shift) {
+ constraint_axis[0] = 1;
+ constraint_axis[2] = 1;
}
else
- BIF_setSingleAxisConstraint(v3d->twmat[1], " Y");
+ constraint_axis[1] = 1;
break;
case MAN_SCALE_Z:
- if(G.qual & LR_SHIFTKEY) {
- drawflags= MAN_SCALE_X|MAN_SCALE_Y;
- BIF_setDualAxisConstraint(v3d->twmat[0], v3d->twmat[1], " X+Y");
+ if(shift) {
+ constraint_axis[0] = 1;
+ constraint_axis[1] = 1;
}
else
- BIF_setSingleAxisConstraint(v3d->twmat[2], " Z");
+ constraint_axis[2] = 1;
break;
}
- ManipulatorTransform();
+ RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
+ WM_operator_name_call(C, "TFM_OT_resize", WM_OP_INVOKE_REGION_WIN, op->ptr);
}
- else if (drawflags == MAN_ROT_T) { /* trackbal need special case, init is different */
- initManipulator(TFM_TRACKBALL);
- ManipulatorTransform();
+ else if (drawflags == MAN_ROT_T) { /* trackball need special case, init is different */
+ WM_operator_name_call(C, "TFM_OT_trackball", WM_OP_INVOKE_REGION_WIN, op->ptr);
}
else if (drawflags & MAN_ROT_C) {
- initManipulator(TFM_ROTATION);
switch(drawflags) {
case MAN_ROT_X:
- BIF_setSingleAxisConstraint(v3d->twmat[0], " X");
+ constraint_axis[0] = 1;
break;
case MAN_ROT_Y:
- BIF_setSingleAxisConstraint(v3d->twmat[1], " Y");
+ constraint_axis[1] = 1;
break;
case MAN_ROT_Z:
- BIF_setSingleAxisConstraint(v3d->twmat[2], " Z");
+ constraint_axis[2] = 1;
break;
}
- ManipulatorTransform();
+ RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis);
+ WM_operator_name_call(C, "TFM_OT_rotation", WM_OP_INVOKE_REGION_WIN, op->ptr);
}
}
/* after transform, restore drawflags */
drawflags= 0xFFFF;
-
+
return val;
}
-#endif
diff --git a/source/blender/editors/transform/transform_ndofinput.c b/source/blender/editors/transform/transform_ndofinput.c
index 9c2a1a7db6d..f8567023e5f 100644
--- a/source/blender/editors/transform/transform_ndofinput.c
+++ b/source/blender/editors/transform/transform_ndofinput.c
@@ -37,7 +37,9 @@
#include "transform.h"
+#if 0
static int updateNDofMotion(NDofInput *n); // return 0 when motion is null
+#endif
static void resetNDofInput(NDofInput *n);
void initNDofInput(NDofInput *n)
@@ -121,6 +123,8 @@ void applyNDofInput(NDofInput *n, float *vec)
}
}
+// TRANSFORM_FIX_ME
+#if 0
static int updateNDofMotion(NDofInput *n)
{
@@ -128,14 +132,11 @@ static int updateNDofMotion(NDofInput *n)
int i;
int retval = 0;
-// TRANSFORM_FIX_ME
-#if 0
getndof(fval);
if (G.vd->ndoffilter)
filterNDOFvalues(fval);
-#endif
-
+
for(i = 0; i < 6; i++)
{
if (!retval && fval[i] != 0.0f)
@@ -150,6 +151,7 @@ static int updateNDofMotion(NDofInput *n)
return retval;
}
+#endif
diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c
index ecb58831118..d77f38967b0 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -89,6 +89,7 @@ char OP_SHEAR[] = "TFM_OT_shear";
char OP_WARP[] = "TFM_OT_warp";
char OP_SHRINK_FATTEN[] = "TFM_OT_shrink_fatten";
char OP_TILT[] = "TFM_OT_tilt";
+char OP_TRACKBALL[] = "TFM_OT_trackball";
TransformModeItem transform_modes[] =
@@ -101,6 +102,7 @@ TransformModeItem transform_modes[] =
{OP_WARP, TFM_WARP},
{OP_SHRINK_FATTEN, TFM_SHRINKFATTEN},
{OP_TILT, TFM_TILT},
+ {OP_TRACKBALL, TFM_TRACKBALL},
{NULL, 0}
};
@@ -111,7 +113,7 @@ static int select_orientation_exec(bContext *C, wmOperator *op)
if(orientation == V3D_MANIP_CUSTOM)
orientation += custom_index;
-
+
BIF_selectTransformOrientationValue(C, orientation);
return OPERATOR_FINISHED;
@@ -121,15 +123,15 @@ static int select_orientation_invoke(bContext *C, wmOperator *op, wmEvent *event
{
uiPopupMenu *pup;
uiLayout *layout;
-
+
pup= uiPupMenuBegin(C, "Orientation", 0);
layout= uiPupMenuLayout(pup);
BIF_menuTransformOrientation(C, layout, NULL);
uiPupMenuEnd(C, pup);
-
+
return OPERATOR_CANCELLED;
}
-
+
void TFM_OT_select_orientation(struct wmOperatorType *ot)
{
static EnumPropertyItem orientation_items[]= {
@@ -183,27 +185,27 @@ static int transformops_data(bContext *C, wmOperator *op, wmEvent *event)
}
retval = initTransform(C, t, op, event, mode);
-
+
/* store data */
op->customdata = t;
}
-
+
return retval; /* return 0 on error */
}
static int transform_modal(bContext *C, wmOperator *op, wmEvent *event)
{
int exit_code;
-
+
TransInfo *t = op->customdata;
-
+
transformEvent(t, event);
-
+
transformApply(C, t);
-
-
+
+
exit_code = transformEnd(C, t);
-
+
if (exit_code != OPERATOR_RUNNING_MODAL)
{
transformops_exit(C, op);
@@ -215,11 +217,11 @@ static int transform_modal(bContext *C, wmOperator *op, wmEvent *event)
static int transform_cancel(bContext *C, wmOperator *op)
{
TransInfo *t = op->customdata;
-
+
t->state = TRANS_CANCEL;
transformEnd(C, t);
transformops_exit(C, op);
-
+
return OPERATOR_CANCELLED;
}
@@ -237,11 +239,11 @@ static int transform_exec(bContext *C, wmOperator *op)
t->options |= CTX_AUTOCONFIRM;
transformApply(C, t);
-
+
transformEnd(C, t);
transformops_exit(C, op);
-
+
return OPERATOR_FINISHED;
}
@@ -279,7 +281,7 @@ void Properties_Snapping(struct wmOperatorType *ot, short align)
RNA_def_boolean(ot->srna, "snap", 0, "Snap to Point", "");
RNA_def_enum(ot->srna, "snap_mode", snap_mode_types, 0, "Mode", "");
RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX);
-
+
if (align)
{
RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", "");
@@ -314,7 +316,7 @@ void TFM_OT_translation(struct wmOperatorType *ot)
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
Properties_Constraints(ot);
-
+
Properties_Snapping(ot, 1);
}
@@ -339,10 +341,32 @@ void TFM_OT_resize(struct wmOperatorType *ot)
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
Properties_Constraints(ot);
-
+
Properties_Snapping(ot, 0);
}
+
+void TFM_OT_trackball(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Trackball";
+ ot->idname = OP_TRACKBALL;
+ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* api callbacks */
+ ot->invoke = transform_invoke;
+ ot->exec = transform_exec;
+ ot->modal = transform_modal;
+ ot->cancel = transform_cancel;
+ ot->poll = ED_operator_areaactive;
+
+ RNA_def_float_vector(ot->srna, "value", 2, VecOne, -FLT_MAX, FLT_MAX, "angle", "", -FLT_MAX, FLT_MAX);
+
+ Properties_Proportional(ot);
+
+ RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
+}
+
void TFM_OT_rotation(struct wmOperatorType *ot)
{
/* identifiers */
@@ -364,7 +388,7 @@ void TFM_OT_rotation(struct wmOperatorType *ot)
RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", "");
Properties_Constraints(ot);
-
+
Properties_Snapping(ot, 0);
}
@@ -547,10 +571,11 @@ void transform_operatortypes(void)
WM_operatortype_append(TFM_OT_warp);
WM_operatortype_append(TFM_OT_shrink_fatten);
WM_operatortype_append(TFM_OT_tilt);
+ WM_operatortype_append(TFM_OT_trackball);
WM_operatortype_append(TFM_OT_select_orientation);
}
-
+
void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *keymap, int spaceid)
{
wmKeymapItem *km;
@@ -558,9 +583,9 @@ void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *key
{
case SPACE_VIEW3D:
km = WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-
+
km = WM_keymap_add_item(keymap, "TFM_OT_rotation", RKEY, KM_PRESS, 0, 0);
km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
@@ -568,9 +593,9 @@ void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *key
km = WM_keymap_add_item(keymap, "TFM_OT_warp", WKEY, KM_PRESS, KM_SHIFT, 0);
km = WM_keymap_add_item(keymap, "TFM_OT_tosphere", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
-
+
km = WM_keymap_add_item(keymap, "TFM_OT_shear", SKEY, KM_PRESS, KM_ALT|KM_CTRL|KM_SHIFT, 0);
-
+
km = WM_keymap_add_item(keymap, "TFM_OT_shrink_fatten", SKEY, KM_PRESS, KM_ALT, 0);
km = WM_keymap_add_item(keymap, "TFM_OT_tilt", TKEY, KM_PRESS, 0, 0);
@@ -581,30 +606,30 @@ void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *key
case SPACE_ACTION:
km= WM_keymap_add_item(keymap, "TFM_OT_transform", GKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_transform", SKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_SCALE);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_transform", TKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_SLIDE);
break;
case SPACE_IPO:
km= WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-
+
// XXX the 'mode' identifier here is not quite right
km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
-
+
km = WM_keymap_add_item(keymap, "TFM_OT_rotation", RKEY, KM_PRESS, 0, 0);
-
+
km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
break;
case SPACE_NLA:
@@ -622,27 +647,27 @@ void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *key
break;
case SPACE_NODE:
km= WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_A, KM_ANY, 0, 0);
km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-
+
km = WM_keymap_add_item(keymap, "TFM_OT_rotation", RKEY, KM_PRESS, 0, 0);
-
+
km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
break;
case SPACE_SEQ:
km= WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_transform", EKEY, KM_PRESS, 0, 0);
RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND);
break;
case SPACE_IMAGE:
km = WM_keymap_add_item(keymap, "TFM_OT_translation", GKEY, KM_PRESS, 0, 0);
-
+
km= WM_keymap_add_item(keymap, "TFM_OT_translation", EVT_TWEAK_S, KM_ANY, 0, 0);
-
+
km = WM_keymap_add_item(keymap, "TFM_OT_rotation", RKEY, KM_PRESS, 0, 0);
km = WM_keymap_add_item(keymap, "TFM_OT_resize", SKEY, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c
index d3e4e2b1421..1e065de94e1 100644
--- a/source/blender/editors/transform/transform_orientations.c
+++ b/source/blender/editors/transform/transform_orientations.c
@@ -402,7 +402,7 @@ int BIF_countTransformOrientation(const bContext *C) {
return count;
}
-void applyTransformOrientation(bContext *C, TransInfo *t) {
+void applyTransformOrientation(const bContext *C, TransInfo *t) {
TransformOrientation *ts;
View3D *v3d = CTX_wm_view3d(C);
int selected_index = (v3d->twmode - V3D_MANIP_CUSTOM);
@@ -532,7 +532,7 @@ void initTransformOrientation(bContext *C, TransInfo *t)
}
}
-int getTransformOrientation(bContext *C, float normal[3], float plane[3], int activeOnly)
+int getTransformOrientation(const bContext *C, float normal[3], float plane[3], int activeOnly)
{
Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index 0b9a176dbdf..9438581409b 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -63,8 +63,6 @@
//#include "BIF_drawimage.h"
//#include "BIF_editmesh.h"
-#include "BIF_transform.h"
-
#include "BKE_global.h"
#include "BKE_utildefines.h"
#include "BKE_DerivedMesh.h"
@@ -75,6 +73,7 @@
#include "ED_armature.h"
#include "ED_image.h"
#include "ED_mesh.h"
+#include "ED_transform.h"
#include "ED_uvedit.h"
#include "ED_view3d.h"
diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c
index 1d79c542fa9..6f742d70440 100644
--- a/source/blender/editors/util/undo.c
+++ b/source/blender/editors/util/undo.c
@@ -125,7 +125,18 @@ static int ed_undo_step(bContext *C, int step)
{
Object *obedit= CTX_data_edit_object(C);
ScrArea *sa= CTX_wm_area(C);
-
+
+ if(sa && sa->spacetype==SPACE_IMAGE) {
+ SpaceImage *sima= (SpaceImage *)sa->spacedata.first;
+
+ if(G.f & G_TEXTUREPAINT || sima->flag & SI_DRAWTOOL) {
+ undo_imagepaint_step(step);
+
+ WM_event_add_notifier(C, NC_WINDOW, NULL);
+ return OPERATOR_FINISHED;
+ }
+ }
+
if(sa && sa->spacetype==SPACE_TEXT) {
ED_text_undo_step(C, step);
}
@@ -138,13 +149,6 @@ static int ed_undo_step(bContext *C, int step)
if(G.f & G_TEXTUREPAINT)
undo_imagepaint_step(step);
- else if(sa && sa->spacetype==SPACE_IMAGE) {
- SpaceImage *sima= (SpaceImage *)sa->spacedata.first;
- if(sima->flag & SI_DRAWTOOL)
- undo_imagepaint_step(step);
- else
- do_glob_undo= 1;
- }
else if(G.f & G_PARTICLEEDIT) {
if(step==1)
PE_undo(CTX_data_scene(C));
diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c
index b811906f5e5..a58ee9772e9 100644
--- a/source/blender/editors/uvedit/uvedit_draw.c
+++ b/source/blender/editors/uvedit/uvedit_draw.c
@@ -121,7 +121,7 @@ static void draw_uvs_shadow(SpaceImage *sima, Object *obedit)
{
EditMesh *em;
EditFace *efa;
- TFace *tf;
+ MTFace *tf;
em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
@@ -591,7 +591,8 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit)
break;
case SI_UVDT_BLACK: /* black/white */
case SI_UVDT_WHITE:
- cpack((sima->dt_uv==SI_UVDT_WHITE) ? 0xFFFFFF : 0x0);
+ if(sima->dt_uv==SI_UVDT_WHITE) glColor3f(1.0f, 1.0f, 1.0f);
+ else glColor3f(0.0f, 0.0f, 0.0f);
for(efa= em->faces.first; efa; efa= efa->next) {
tf= (MTFace *)efa->tmp.p; /* visible faces cached */
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index 7582145c63b..801da08e611 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -54,11 +54,10 @@
#include "BKE_report.h"
#include "BKE_utildefines.h"
-#include "BIF_transform.h"
-
#include "ED_image.h"
#include "ED_mesh.h"
#include "ED_screen.h"
+#include "ED_transform.h"
#include "RNA_access.h"
#include "RNA_define.h"
@@ -1343,11 +1342,11 @@ static int select_inverse_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void UV_OT_select_invert(wmOperatorType *ot)
+void UV_OT_select_inverse(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Select Invert";
- ot->idname= "UV_OT_select_invert";
+ ot->name= "Select Inverse";
+ ot->idname= "UV_OT_select_inverse";
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* api callbacks */
@@ -3080,7 +3079,7 @@ void UV_OT_tile_set(wmOperatorType *ot)
void ED_operatortypes_uvedit(void)
{
WM_operatortype_append(UV_OT_select_all_toggle);
- WM_operatortype_append(UV_OT_select_invert);
+ WM_operatortype_append(UV_OT_select_inverse);
WM_operatortype_append(UV_OT_select);
WM_operatortype_append(UV_OT_select_loop);
WM_operatortype_append(UV_OT_select_linked);
@@ -3135,7 +3134,7 @@ void ED_keymap_uvedit(wmWindowManager *wm)
WM_keymap_add_item(keymap, "UV_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "UV_OT_unlink_selection", LKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "UV_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "UV_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "UV_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "UV_OT_select_pinned", PKEY, KM_PRESS, KM_SHIFT, 0);
/* uv operations */
diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
index 95467d13e8d..c4f4704e47e 100644
--- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c
+++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
@@ -1337,7 +1337,7 @@ static int mapping_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
void UV_OT_mapping_menu(wmOperatorType *ot)
{
/* identifiers */
- ot->name= "Mapping Menu";
+ ot->name= "UV Mapping";
ot->idname= "UV_OT_mapping_menu";
/* api callbacks */
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 76f6b980aa2..49a6fd4daf0 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -503,12 +503,15 @@ typedef enum {
eParticleInstanceFlag_Unborn = (1<<3),
eParticleInstanceFlag_Alive = (1<<4),
eParticleInstanceFlag_Dead = (1<<5),
+ eParticleInstanceFlag_KeepShape = (1<<6),
+ eParticleInstanceFlag_UseSize = (1<<7),
} ParticleInstanceModifierFlag;
typedef struct ParticleInstanceModifierData {
ModifierData modifier;
struct Object *ob;
- short psys, flag, rt[2];
+ short psys, flag, axis, rt;
+ float position, random_position;
} ParticleInstanceModifierData;
typedef enum {
diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h
index 05f1cc1f351..c793362c223 100644
--- a/source/blender/makesdna/DNA_particle_types.h
+++ b/source/blender/makesdna/DNA_particle_types.h
@@ -131,7 +131,7 @@ typedef struct ParticleSettings {
/* general values */
float sta, end, lifetime, randlife;
- float timetweak, jitfac, keyed_time, eff_hair, rt;
+ float timetweak, jitfac, keyed_time, eff_hair;
int totpart, userjit, grid_res;
/* initial velocity factors */
@@ -159,6 +159,8 @@ typedef struct ParticleSettings {
float branch_thres;
/* drawing stuff */
float draw_line[2];
+ float path_start, path_end;
+ int trail_count;
/* boids */
float max_vel, max_lat_acc, max_tan_acc;
@@ -311,8 +313,8 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
#define PART_DRAW_SIZE 4
#define PART_DRAW_EMITTER 8 /* render emitter also */
//#define PART_DRAW_HEALTH 16
-//#define PART_DRAW_TIMED_PATH 32
-//#define PART_DRAW_CACHED_PATH 64
+#define PART_ABS_PATH_TIME 32
+//#define PART_DRAW_TRAIL 64
#define PART_DRAW_BB_LOCK 128
#define PART_DRAW_PARENT 256
#define PART_DRAW_NUM 512
diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h
index 44133b61e6c..73ecade9b8b 100644
--- a/source/blender/makesdna/DNA_screen_types.h
+++ b/source/blender/makesdna/DNA_screen_types.h
@@ -211,6 +211,7 @@ typedef struct ARegion {
/* paneltype flag */
#define PNL_DEFAULT_CLOSED 1
+#define PNL_NO_HEADER 2
/* screen handlers */
#define SCREEN_MAXHANDLER 8
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index fef82ee2b91..dc0ec51fa4f 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -86,6 +86,7 @@ typedef struct SpaceInfo {
} SpaceInfo;
/* 'Graph' Editor (formerly known as the IPO Editor) */
+/* XXX for now, we keep all old data... */
typedef struct SpaceIpo {
SpaceLink *next, *prev;
ListBase regionbase; /* storage of regions for inactive spaces */
@@ -186,21 +187,6 @@ typedef struct FileSelectParams {
/* XXX --- end unused -- */
} FileSelectParams;
-/* FileSelectParams.display */
-enum FileDisplayTypeE {
- FILE_SHORTDISPLAY = 1,
- FILE_LONGDISPLAY,
- FILE_IMGDISPLAY
-};
-
-/* FileSelectParams.sort */
-enum FileSortTypeE {
- FILE_SORT_NONE = 0,
- FILE_SORT_ALPHA = 1,
- FILE_SORT_EXTENSION,
- FILE_SORT_TIME,
- FILE_SORT_SIZE
-};
typedef struct SpaceFile {
SpaceLink *next, *prev;
@@ -212,6 +198,9 @@ typedef struct SpaceFile {
struct FileList *files; /* holds the list of files to show */
+ ListBase *folders_prev; /* holds the list of previous directories to show */
+ ListBase *folders_next; /* holds the list of next directories (pushed from previous) to show */
+
/* operator that is invoking fileselect
op->exec() will be called on the 'Load' button.
if operator provides op->cancel(), then this will be invoked
@@ -565,6 +554,22 @@ typedef struct SpaceImaSel {
#define BUTS_SENS_STATE 512
#define BUTS_ACT_STATE 1024
+/* FileSelectParams.display */
+enum FileDisplayTypeE {
+ FILE_SHORTDISPLAY = 1,
+ FILE_LONGDISPLAY,
+ FILE_IMGDISPLAY
+};
+
+/* FileSelectParams.sort */
+enum FileSortTypeE {
+ FILE_SORT_NONE = 0,
+ FILE_SORT_ALPHA = 1,
+ FILE_SORT_EXTENSION,
+ FILE_SORT_TIME,
+ FILE_SORT_SIZE
+};
+
/* these values need to be hardcoded in structs, dna does not recognize defines */
/* also defined in BKE */
#define FILE_MAXDIR 160
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 5cd78670e71..e221524eac2 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -82,6 +82,9 @@ typedef struct RegionView3D {
float viewmatob[4][4];
float persmatob[4][4];
+ /* transform widget matrix */
+ float twmat[4][4];
+
float viewquat[4], dist, zfac; /* zfac is initgrabz() result */
float camdx, camdy; /* camera view offsets, 1.0 = viewplane moves entire width/height */
float pixsize;
diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h
index b63fb35c193..fcf3d0aec23 100644
--- a/source/blender/makesdna/DNA_windowmanager_types.h
+++ b/source/blender/makesdna/DNA_windowmanager_types.h
@@ -217,11 +217,6 @@ typedef struct wmOperator {
/* add this flag if the event should pass through */
#define OPERATOR_PASS_THROUGH 8
-typedef enum wmRadialControlMode {
- WM_RADIALCONTROL_SIZE,
- WM_RADIALCONTROL_STRENGTH,
- WM_RADIALCONTROL_ANGLE
-} wmRadialControlMode;
/* ************** wmEvent ************************ */
/* for read-only rna access, dont save this */
@@ -244,15 +239,25 @@ typedef struct wmEvent {
short shift, ctrl, alt, oskey; /* oskey is apple or windowskey, value denotes order of pressed */
short keymodifier; /* rawkey modifier */
+ short pad1;
+
/* keymap item, set by handler (weak?) */
const char *keymap_idname;
/* custom data */
- short custom; /* custom data type, stylus, 6dof, see wm_event_types.h */
- void *customdata; /* ascii, unicode, mouse coords, angles, vectors, dragdrop info */
+ short custom; /* custom data type, stylus, 6dof, see wm_event_types.h */
short customdatafree;
+ int pad2;
+ void *customdata; /* ascii, unicode, mouse coords, angles, vectors, dragdrop info */
} wmEvent;
+typedef enum wmRadialControlMode {
+ WM_RADIALCONTROL_SIZE,
+ WM_RADIALCONTROL_STRENGTH,
+ WM_RADIALCONTROL_ANGLE
+} wmRadialControlMode;
+
+
#endif /* DNA_WINDOWMANAGER_TYPES_H */
diff --git a/source/blender/makesdna/intern/dna_genfile.c b/source/blender/makesdna/intern/dna_genfile.c
index b4b029a19e5..628983ae879 100644
--- a/source/blender/makesdna/intern/dna_genfile.c
+++ b/source/blender/makesdna/intern/dna_genfile.c
@@ -616,8 +616,8 @@ static void cast_elem(char *ctype, char *otype, char *name, char *curdata, char
arrlen= DNA_elem_array_size(name, strlen(name));
/* define otypenr */
- if(strcmp(otype, "char")==0) otypenr= 0;
- else if((strcmp(otype, "uchar")==0)||(strcmp(otype, "unsigned char")==0)) otypenr= 1;
+ if(strcmp(otype, "char")==0 || (strcmp(otype, "const char")==0)) otypenr= 0;
+ else if((strcmp(otype, "uchar")==0) || (strcmp(otype, "unsigned char")==0)) otypenr= 1;
else if(strcmp(otype, "short")==0) otypenr= 2;
else if((strcmp(otype, "ushort")==0)||(strcmp(otype, "unsigned short")==0)) otypenr= 3;
else if(strcmp(otype, "int")==0) otypenr= 4;
@@ -629,6 +629,7 @@ static void cast_elem(char *ctype, char *otype, char *name, char *curdata, char
/* define ctypenr */
if(strcmp(ctype, "char")==0) ctypenr= 0;
+ else if(strcmp(ctype, "const char")==0) ctypenr= 0;
else if((strcmp(ctype, "uchar")==0)||(strcmp(ctype, "unsigned char")==0)) ctypenr= 1;
else if(strcmp(ctype, "short")==0) ctypenr= 2;
else if((strcmp(ctype, "ushort")==0)||(strcmp(ctype, "unsigned short")==0)) ctypenr= 3;
diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c
index 91e9e617ea9..08af6372d31 100644
--- a/source/blender/makesdna/intern/makesdna.c
+++ b/source/blender/makesdna/intern/makesdna.c
@@ -559,10 +559,11 @@ int convert_include(char *filename)
while( *md1 != '}' ) {
if(md1>mainend) break;
- /* skip when it says 'struct' or 'unsigned' */
+ /* skip when it says 'struct' or 'unsigned' or 'const' */
if(*md1) {
if( strncmp(md1, "struct", 6)==0 ) md1+= 7;
- if( strncmp(md1, "unsigned", 6)==0 ) md1+= 9;
+ if( strncmp(md1, "unsigned", 8)==0 ) md1+= 9;
+ if( strncmp(md1, "const", 5)==0 ) md1+= 6;
/* we've got a type! */
type= add_type(md1, 0);
diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h
index 85a148be2e2..69f5b5adc37 100644
--- a/source/blender/makesrna/RNA_define.h
+++ b/source/blender/makesrna/RNA_define.h
@@ -81,6 +81,7 @@ PropertyRNA *RNA_def_string_file_path(StructOrFunctionRNA *cont, const char *ide
PropertyRNA *RNA_def_string_dir_path(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description);
PropertyRNA *RNA_def_enum(StructOrFunctionRNA *cont, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description);
+void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc);
PropertyRNA *RNA_def_float(StructOrFunctionRNA *cont, const char *identifier, float default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax);
PropertyRNA *RNA_def_float_vector(StructOrFunctionRNA *cont, const char *identifier, int len, const float *default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax);
diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h
index 923191cba78..98646acd727 100644
--- a/source/blender/makesrna/RNA_types.h
+++ b/source/blender/makesrna/RNA_types.h
@@ -149,8 +149,6 @@ typedef struct RawArray {
int stride;
} RawArray;
-/* Iterator Utility */
-
typedef struct EnumPropertyItem {
int value;
const char *identifier;
@@ -159,6 +157,8 @@ typedef struct EnumPropertyItem {
const char *description;
} EnumPropertyItem;
+typedef EnumPropertyItem *(*EnumPropertyItemFunc)(PointerRNA *ptr);
+
typedef struct PropertyRNA PropertyRNA;
/* Parameter List */
diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c
index 4098ca70356..fe4a809c638 100644
--- a/source/blender/makesrna/intern/makesrna.c
+++ b/source/blender/makesrna/intern/makesrna.c
@@ -1568,22 +1568,20 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr
int i, defaultfound= 0;
if(eprop->item) {
- fprintf(f, "static EnumPropertyItem rna_%s%s_%s_items[%d] = {", srna->identifier, strnest, prop->identifier, eprop->totitem);
+ fprintf(f, "static EnumPropertyItem rna_%s%s_%s_items[%d] = {", srna->identifier, strnest, prop->identifier, eprop->totitem+1);
for(i=0; i<eprop->totitem; i++) {
fprintf(f, "{%d, ", eprop->item[i].value);
rna_print_c_string(f, eprop->item[i].identifier); fprintf(f, ", ");
fprintf(f, "%d, ", eprop->item[i].icon);
rna_print_c_string(f, eprop->item[i].name); fprintf(f, ", ");
- rna_print_c_string(f, eprop->item[i].description); fprintf(f, "}");
- if(i != eprop->totitem-1)
- fprintf(f, ", ");
+ rna_print_c_string(f, eprop->item[i].description); fprintf(f, "}, ");
if(eprop->defaultvalue == eprop->item[i].value)
defaultfound= 1;
}
- fprintf(f, "};\n\n");
+ fprintf(f, "{0, NULL, 0, NULL, NULL}};\n\n");
if(!defaultfound) {
fprintf(stderr, "rna_generate_structs: %s%s.%s, enum default is not in items.\n", srna->identifier, errnest, prop->identifier);
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c
index 715f03bb3f1..2916c1bcb6e 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -1960,6 +1960,12 @@ PropertyRNA *RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, co
return prop;
}
+void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
+{
+ EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
+ eprop->itemf= itemfunc;
+}
+
PropertyRNA *RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, float default_value,
float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax)
{
diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c
index 71e424bbd69..0a7e989a93a 100644
--- a/source/blender/makesrna/intern/rna_key.c
+++ b/source/blender/makesrna/intern/rna_key.c
@@ -37,6 +37,16 @@
#ifdef RNA_RUNTIME
+#include "DNA_object_types.h"
+#include "DNA_scene_types.h"
+
+#include "BKE_depsgraph.h"
+#include "BKE_key.h"
+#include "BKE_main.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
static Key *rna_ShapeKey_find_key(ID *id)
{
switch(GS(id->name)) {
@@ -62,6 +72,18 @@ static PointerRNA rna_ShapeKey_relative_key_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, NULL, NULL);
}
+static void rna_ShapeKey_relative_key_set(PointerRNA *ptr, PointerRNA value)
+{
+ Key *key= rna_ShapeKey_find_key(ptr->id.data);
+ KeyBlock *kb= (KeyBlock*)ptr->data, *kbrel;
+ int a;
+
+ if(key)
+ for(a=0, kbrel=key->block.first; kbrel; kbrel=kbrel->next, a++)
+ if(kbrel == value.data)
+ kb->relative= a;
+}
+
static void rna_ShapeKeyPoint_co_get(PointerRNA *ptr, float *values)
{
float *vec= (float*)ptr->data;
@@ -220,6 +242,21 @@ static PointerRNA rna_ShapeKey_data_get(CollectionPropertyIterator *iter)
return rna_pointer_inherit_refine(&iter->parent, type, rna_iterator_array_get(iter));
}
+static void rna_Key_update_data(bContext *C, PointerRNA *ptr)
+{
+ Main *bmain= CTX_data_main(C);
+ Scene *scene= CTX_data_scene(C);
+ Key *key= ptr->id.data;
+ Object *ob;
+
+ for(ob=bmain->object.first; ob; ob= ob->id.next) {
+ if(ob_get_key(ob) == key) {
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, ob);
+ }
+ }
+}
+
#else
static void rna_def_keydata(BlenderRNA *brna)
@@ -234,6 +271,7 @@ static void rna_def_keydata(BlenderRNA *brna)
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_ShapeKeyPoint_co_get", "rna_ShapeKeyPoint_co_set", NULL);
RNA_def_property_ui_text(prop, "Location", "");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
srna= RNA_def_struct(brna, "ShapeKeyCurvePoint", NULL);
RNA_def_struct_ui_text(srna, "Shape Key Curve Point", "Point in a shape key for curves.");
@@ -242,10 +280,12 @@ static void rna_def_keydata(BlenderRNA *brna)
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_ShapeKeyPoint_co_get", "rna_ShapeKeyPoint_co_set", NULL);
RNA_def_property_ui_text(prop, "Location", "");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
prop= RNA_def_property(srna, "tilt", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_funcs(prop, "rna_ShapeKeyCurvePoint_tilt_get", "rna_ShapeKeyCurvePoint_tilt_set", NULL);
RNA_def_property_ui_text(prop, "Tilt", "");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
srna= RNA_def_struct(brna, "ShapeKeyBezierPoint", NULL);
RNA_def_struct_ui_text(srna, "Shape Key Bezier Point", "Point in a shape key for bezier curves.");
@@ -254,21 +294,25 @@ static void rna_def_keydata(BlenderRNA *brna)
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_ShapeKeyBezierPoint_co_get", "rna_ShapeKeyBezierPoint_co_set", NULL);
RNA_def_property_ui_text(prop, "Location", "");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
prop= RNA_def_property(srna, "handle_1_co", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_ShapeKeyBezierPoint_handle_1_co_get", "rna_ShapeKeyBezierPoint_handle_1_co_set", NULL);
RNA_def_property_ui_text(prop, "Handle 1 Location", "");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
prop= RNA_def_property(srna, "handle_2_co", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_ShapeKeyBezierPoint_handle_2_co_get", "rna_ShapeKeyBezierPoint_handle_2_co_set", NULL);
RNA_def_property_ui_text(prop, "Handle 2 Location", "");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
/* appears to be unused currently
prop= RNA_def_property(srna, "tilt", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_funcs(prop, "rna_ShapeKeyBezierPoint_tilt_get", "rna_ShapeKeyBezierPoint_tilt_set", NULL);
- RNA_def_property_ui_text(prop, "Tilt", "");*/
+ RNA_def_property_ui_text(prop, "Tilt", "");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data"); */
}
static void rna_def_keyblock(BlenderRNA *brna)
@@ -296,30 +340,37 @@ static void rna_def_keyblock(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_float_sdna(prop, NULL, "pos");
RNA_def_property_ui_text(prop, "Frame", "Frame for absolute keys.");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
/* for now, this is editable directly, as users can set this even if they're not animating them (to test results) */
prop= RNA_def_property(srna, "value", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "curval");
RNA_def_property_ui_text(prop, "Value", "Value of shape key at the current frame.");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
prop= RNA_def_property(srna, "interpolation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "type");
RNA_def_property_enum_items(prop, prop_keyblock_type_items);
RNA_def_property_ui_text(prop, "Interpolation", "Interpolation type.");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgroup");
RNA_def_property_ui_text(prop, "Vertex Group", "Vertex weight group, to blend with basis shape.");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
prop= RNA_def_property(srna, "relative_key", PROP_POINTER, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "ShapeKey");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_pointer_funcs(prop, "rna_ShapeKey_relative_key_get", "rna_ShapeKey_relative_key_set", NULL);
RNA_def_property_ui_text(prop, "Relative Key", "Shape used as a relative key.");
- RNA_def_property_pointer_funcs(prop, "rna_ShapeKey_relative_key_get", NULL, NULL);
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYBLOCK_MUTE);
RNA_def_property_ui_text(prop, "Mute", "Mute this shape key.");
+ RNA_def_property_ui_icon(prop, ICON_MUTE_IPO_OFF, 1);
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
prop= RNA_def_property(srna, "slider_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "slidermin");
@@ -366,11 +417,13 @@ static void rna_def_key(BlenderRNA *brna)
prop= RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "type", KEY_RELATIVE);
RNA_def_property_ui_text(prop, "Relative", "Makes shape keys relative.");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
prop= RNA_def_property(srna, "slurph", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "slurph");
RNA_def_property_range(prop, -500, 500);
RNA_def_property_ui_text(prop, "Slurph", "Creates a delay in amount of frames in applying keypositions, first vertex goes first.");
+ RNA_def_property_update(prop, 0, "rna_Key_update_data");
}
void RNA_def_key(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_lattice.c b/source/blender/makesrna/intern/rna_lattice.c
index f67267ce0d0..c685e5b6912 100644
--- a/source/blender/makesrna/intern/rna_lattice.c
+++ b/source/blender/makesrna/intern/rna_lattice.c
@@ -36,6 +36,16 @@
#ifdef RNA_RUNTIME
+#include "DNA_object_types.h"
+#include "DNA_scene_types.h"
+
+#include "BKE_depsgraph.h"
+#include "BKE_lattice.h"
+#include "BKE_main.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
static void rna_LatticePoint_co_get(PointerRNA *ptr, float *values)
{
Lattice *lt= (Lattice*)ptr->id.data;
@@ -67,15 +77,96 @@ static void rna_LatticePoint_groups_begin(CollectionPropertyIterator *iter, Poin
static void rna_Lattice_points_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
Lattice *lt= (Lattice*)ptr->data;
+ int tot= lt->pntsu*lt->pntsv*lt->pntsw;
- if(lt->def) {
- int tot= lt->pntsu*lt->pntsv*lt->pntsw;
+ if(lt->editlatt && lt->editlatt->def)
+ rna_iterator_array_begin(iter, (void*)lt->editlatt->def, sizeof(BPoint), tot, NULL);
+ else if(lt->def)
rna_iterator_array_begin(iter, (void*)lt->def, sizeof(BPoint), tot, NULL);
- }
else
rna_iterator_array_begin(iter, NULL, 0, 0, NULL);
}
+static void rna_Lattice_update_data(bContext *C, PointerRNA *ptr)
+{
+ Main *bmain= CTX_data_main(C);
+ Scene *scene= CTX_data_scene(C);
+ Lattice *lt= ptr->id.data;
+ Object *ob;
+
+ for(ob=bmain->object.first; ob; ob= ob->id.next) {
+ if(ob->data == lt) {
+ /* XXX this will loop over all objects again (slow) */
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, ob);
+ }
+ }
+}
+
+static void rna_Lattice_update_size(bContext *C, PointerRNA *ptr)
+{
+ Main *bmain= CTX_data_main(C);
+ Lattice *lt= ptr->id.data;
+ Object *ob;
+ int newu, newv, neww;
+
+ /* we don't modify the actual pnts, but go through opnts instead */
+ newu= (lt->opntsu > 0)? lt->opntsu: lt->pntsu;
+ newv= (lt->opntsv > 0)? lt->opntsv: lt->pntsv;
+ neww= (lt->opntsw > 0)? lt->opntsw: lt->pntsw;
+
+ /* resizelattice needs an object, any object will have the same result */
+ for(ob=bmain->object.first; ob; ob= ob->id.next) {
+ if(ob->data == lt) {
+ resizelattice(lt, newu, newv, neww, ob);
+ if(lt->editlatt)
+ resizelattice(lt->editlatt, newu, newv, neww, ob);
+ break;
+ }
+ }
+
+ /* otherwise without, means old points are not repositioned */
+ if(!ob) {
+ resizelattice(lt, newu, newv, neww, NULL);
+ if(lt->editlatt)
+ resizelattice(lt->editlatt, newu, newv, neww, NULL);
+ }
+
+ rna_Lattice_update_data(C, ptr);
+}
+
+static void rna_Lattice_outside_set(PointerRNA *ptr, int value)
+{
+ Lattice *lt= ptr->data;
+
+ if(value) lt->flag |= LT_OUTSIDE;
+ else lt->flag &= ~LT_OUTSIDE;
+
+ outside_lattice(lt);
+
+ if(lt->editlatt) {
+ if(value) lt->editlatt->flag |= LT_OUTSIDE;
+ else lt->editlatt->flag &= ~LT_OUTSIDE;
+
+ outside_lattice(lt->editlatt);
+ }
+}
+
+static void rna_Lattice_points_u_set(PointerRNA *ptr, int value)
+{
+ ((Lattice*)ptr->data)->opntsu= CLAMPIS(value, 1, 64);
+}
+
+static void rna_Lattice_points_v_set(PointerRNA *ptr, int value)
+{
+ ((Lattice*)ptr->data)->opntsv= CLAMPIS(value, 1, 64);
+}
+
+static void rna_Lattice_points_w_set(PointerRNA *ptr, int value)
+{
+ ((Lattice*)ptr->data)->opntsw= CLAMPIS(value, 1, 64);
+}
+
#else
static void rna_def_latticepoint(BlenderRNA *brna)
@@ -97,6 +188,7 @@ static void rna_def_latticepoint(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "vec");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Deformed Location", "");
+ RNA_def_property_update(prop, 0, "rna_Lattice_update_data");
prop= RNA_def_property(srna, "groups", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_funcs(prop, "rna_LatticePoint_groups_begin", "rna_iterator_array_next", "rna_iterator_array_end", "rna_iterator_array_get", 0, 0, 0, 0, 0);
@@ -121,37 +213,48 @@ static void rna_def_lattice(BlenderRNA *brna)
prop= RNA_def_property(srna, "points_u", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "pntsu");
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_int_funcs(prop, NULL, "rna_Lattice_points_u_set", NULL);
+ RNA_def_property_range(prop, 1, 64);
RNA_def_property_ui_text(prop, "U", "Points in U direction.");
+ RNA_def_property_update(prop, 0, "rna_Lattice_update_size");
prop= RNA_def_property(srna, "points_v", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "pntsv");
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_int_funcs(prop, NULL, "rna_Lattice_points_v_set", NULL);
+ RNA_def_property_range(prop, 1, 64);
RNA_def_property_ui_text(prop, "V", "Points in V direction.");
+ RNA_def_property_update(prop, 0, "rna_Lattice_update_size");
prop= RNA_def_property(srna, "points_w", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "pntsw");
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_int_funcs(prop, NULL, "rna_Lattice_points_w_set", NULL);
+ RNA_def_property_range(prop, 1, 64);
RNA_def_property_ui_text(prop, "W", "Points in W direction.");
+ RNA_def_property_update(prop, 0, "rna_Lattice_update_size");
prop= RNA_def_property(srna, "interpolation_type_u", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "typeu");
RNA_def_property_enum_items(prop, prop_keyblock_type_items);
RNA_def_property_ui_text(prop, "Interpolation Type U", "");
+ RNA_def_property_update(prop, 0, "rna_Lattice_update_data");
prop= RNA_def_property(srna, "interpolation_type_v", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "typev");
RNA_def_property_enum_items(prop, prop_keyblock_type_items);
RNA_def_property_ui_text(prop, "Interpolation Type V", "");
+ RNA_def_property_update(prop, 0, "rna_Lattice_update_data");
prop= RNA_def_property(srna, "interpolation_type_w", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "typew");
RNA_def_property_enum_items(prop, prop_keyblock_type_items);
RNA_def_property_ui_text(prop, "Interpolation Type W", "");
+ RNA_def_property_update(prop, 0, "rna_Lattice_update_data");
prop= RNA_def_property(srna, "outside", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LT_OUTSIDE);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Lattice_outside_set");
RNA_def_property_ui_text(prop, "Outside", "Only draw, and take into account, the outer vertices.");
+ RNA_def_property_update(prop, 0, "rna_Lattice_update_data");
prop= RNA_def_property(srna, "shape_keys", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "key");
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 69d5c203abf..a789f9065e3 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -1300,6 +1300,13 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna)
StructRNA *srna;
PropertyRNA *prop;
+ static EnumPropertyItem particleinstance_axis[] = {
+ {0, "X", 0, "X", ""},
+ {1, "Y", 0, "Y", ""},
+ {2, "Z", 0, "Z", ""},
+ {0, NULL, 0, NULL, NULL}
+ };
+
srna= RNA_def_struct(brna, "ParticleInstanceModifier", "Modifier");
RNA_def_struct_ui_text(srna, "ParticleInstance Modifier", "Particle system instancing modifier.");
RNA_def_struct_sdna(srna, "ParticleInstanceModifierData");
@@ -1316,6 +1323,12 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna)
RNA_def_property_range(prop, 1, 10);
RNA_def_property_ui_text(prop, "Particle System Number", "");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "axis");
+ RNA_def_property_enum_items(prop, particleinstance_axis);
+ RNA_def_property_ui_text(prop, "Axis", "Pole axis for rotation");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
prop= RNA_def_property(srna, "normal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Parents);
@@ -1346,6 +1359,28 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Dead);
RNA_def_property_ui_text(prop, "Dead", "Show instances when particles are dead.");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "keep_shape", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_KeepShape);
+ RNA_def_property_ui_text(prop, "Keep Shape", "Don't stretch the object.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "size", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_UseSize);
+ RNA_def_property_ui_text(prop, "Size", "Use particle size to scale the instances.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "position", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "position");
+ RNA_def_property_range(prop, 0.0, 1.0);
+ RNA_def_property_ui_text(prop, "Position", "Position along path.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
+
+ prop= RNA_def_property(srna, "random_position", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "random_position");
+ RNA_def_property_range(prop, 0.0, 1.0);
+ RNA_def_property_ui_text(prop, "Random Position", "Randomize position along path.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Modifier_update");
}
static void rna_def_modifier_explode(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index b33c5e480b5..092d15de96e 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -25,6 +25,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_types.h"
@@ -447,6 +448,21 @@ static void rna_Object_active_shape_key_index_set(PointerRNA *ptr, int value)
ob->shapeflag |= OB_SHAPE_TEMPLOCK;
}
+static PointerRNA rna_Object_active_shape_key_get(PointerRNA *ptr)
+{
+ Object *ob= (Object*)ptr->id.data;
+ Key *key= ob_get_key(ob);
+ KeyBlock *kb;
+ PointerRNA keyptr;
+
+ if(key==NULL)
+ return PointerRNA_NULL;
+
+ kb= BLI_findlink(&key->block, ob->shapenr-1);
+ RNA_pointer_create(&key->id, &RNA_ShapeKey, kb, &keyptr);
+ return keyptr;
+}
+
static void rna_Object_shape_key_lock_set(PointerRNA *ptr, int value)
{
Object *ob= (Object*)ptr->id.data;
@@ -1254,8 +1270,14 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "shapeflag", OB_SHAPE_LOCK);
RNA_def_property_boolean_funcs(prop, NULL, "rna_Object_shape_key_lock_set");
RNA_def_property_ui_text(prop, "Shape Key Lock", "Always show the current Shape for this Object.");
+ RNA_def_property_ui_icon(prop, ICON_UNPINNED, 1);
RNA_def_property_update(prop, NC_OBJECT|ND_GEOM_DATA, "rna_Object_update_data");
+ prop= RNA_def_property(srna, "active_shape_key", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "ShapeKey");
+ RNA_def_property_pointer_funcs(prop, "rna_Object_active_shape_key_get", NULL, NULL);
+ RNA_def_property_ui_text(prop, "Active Shape Key", "Current shape key.");
+
prop= RNA_def_property(srna, "active_shape_key_index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "shapenr");
RNA_def_property_int_funcs(prop, "rna_Object_active_shape_key_index_get", "rna_Object_active_shape_key_index_set", "rna_Object_active_shape_key_index_range");
diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c
index 45a9dc44875..269437a8fae 100644
--- a/source/blender/makesrna/intern/rna_object_force.c
+++ b/source/blender/makesrna/intern/rna_object_force.c
@@ -107,7 +107,7 @@ static void rna_Cache_idname_change(bContext *C, PointerRNA *ptr)
{
Object *ob = CTX_data_active_object(C);
PointCache *cache = (PointCache*)ptr->data;
- PTCacheID *pid = NULL, *pid2;
+ PTCacheID *pid = NULL, *pid2= NULL;
ListBase pidlist;
int new_name = 1;
char name[80];
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index ba331efada1..4e095cb74a3 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -151,6 +151,20 @@ static void rna_particle_settings_set(PointerRNA *ptr, PointerRNA value)
if(psys->part)
psys->part->id.us++;
}
+static void rna_Particle_abspathtime_update(bContext *C, PointerRNA *ptr)
+{
+ ParticleSettings *settings = (ParticleSettings*)ptr->data;
+ float delta = settings->end + settings->lifetime - settings->sta;
+ if(settings->draw & PART_ABS_PATH_TIME) {
+ settings->path_start = settings->sta + settings->path_start * delta;
+ settings->path_end = settings->sta + settings->path_end * delta;
+ }
+ else {
+ settings->path_start = (settings->path_start - settings->sta)/delta;
+ settings->path_end = (settings->path_end - settings->sta)/delta;
+ }
+ rna_Particle_redo(C, ptr);
+}
static void rna_PartSettings_start_set(struct PointerRNA *ptr, float value)
{
ParticleSettings *settings = (ParticleSettings*)ptr->data;
@@ -189,7 +203,19 @@ static float rna_PartSetting_linelentail_get(struct PointerRNA *ptr)
ParticleSettings *settings = (ParticleSettings*)ptr->data;
return settings->draw_line[0];
}
+static void rna_PartSetting_pathstartend_range(PointerRNA *ptr, float *min, float *max)
+{
+ ParticleSettings *settings = (ParticleSettings*)ptr->data;
+ if(settings->type==PART_HAIR) {
+ *min = 0.0f;
+ *max = (settings->draw & PART_ABS_PATH_TIME) ? 100.0f : 1.0;
+ }
+ else {
+ *min = (settings->draw & PART_ABS_PATH_TIME) ? settings->sta : 0.0f;
+ *max= (settings->draw & PART_ABS_PATH_TIME) ? MAXFRAMEF : 1.0f;
+ }
+}
static void rna_PartSetting_linelenhead_set(struct PointerRNA *ptr, float value)
{
ParticleSettings *settings = (ParticleSettings*)ptr->data;
@@ -702,15 +728,15 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Abs Length", "Use maximum length for children");
RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
- prop= RNA_def_property(srna, "absolute_time", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_ABS_TIME);
- RNA_def_property_ui_text(prop, "Absolute Time", "Set all ipos that work on particles to be calculated in absolute/relative time.");
- RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
+ //prop= RNA_def_property(srna, "absolute_time", PROP_BOOLEAN, PROP_NONE);
+ //RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_ABS_TIME);
+ //RNA_def_property_ui_text(prop, "Absolute Time", "Set all ipos that work on particles to be calculated in absolute/relative time.");
+ //RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
- prop= RNA_def_property(srna, "global_time", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_GLOB_TIME);
- RNA_def_property_ui_text(prop, "Global Time", "Set all ipos that work on particles to be calculated in global/object time.");
- RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
+ //prop= RNA_def_property(srna, "global_time", PROP_BOOLEAN, PROP_NONE);
+ //RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_GLOB_TIME);
+ //RNA_def_property_ui_text(prop, "Global Time", "Set all ipos that work on particles to be calculated in global/object time.");
+ //RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "boids_2d", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_BOIDS_2D);
@@ -836,15 +862,10 @@ static void rna_def_particle_settings(BlenderRNA *brna)
//RNA_def_property_ui_text(prop, "Health", "Draw boid health");
//RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
- //prop= RNA_def_property(srna, "timed_path", PROP_BOOLEAN, PROP_NONE);
- //RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_TIMED_PATH);
- //RNA_def_property_ui_text(prop, "Clip with time", "Clip path based on time");
- //RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
-
- //prop= RNA_def_property(srna, "draw_cached_path", PROP_BOOLEAN, PROP_NONE);
- //RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_CACHED_PATH);
- //RNA_def_property_ui_text(prop, "Path", "Draw particle path if the path is baked");
- //RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
+ prop= RNA_def_property(srna, "abs_path_time", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_ABS_PATH_TIME);
+ RNA_def_property_ui_text(prop, "Absolute Path Time", "Path timing is in absolute frames");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_abspathtime_update");
prop= RNA_def_property(srna, "billboard_lock", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_BB_LOCK);
@@ -1228,7 +1249,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_float_sdna(prop, NULL, "acc");
RNA_def_property_array(prop, 3);
RNA_def_property_range(prop, -200.0f, 200.0f);
- RNA_def_property_ui_text(prop, "Accelaration", "Constant acceleration");
+ RNA_def_property_ui_text(prop, "Acceleration", "Constant acceleration");
RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_reset");
prop= RNA_def_property(srna, "drag_factor", PROP_FLOAT, PROP_NONE);
@@ -1410,6 +1431,24 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Head", "Length of the line's head");
RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
+ prop= RNA_def_property(srna, "path_start", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "path_start");
+ RNA_def_property_float_funcs(prop, NULL, NULL, "rna_PartSetting_pathstartend_range");
+ RNA_def_property_ui_text(prop, "Path Start", "Starting time of drawn path.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
+
+ prop= RNA_def_property(srna, "path_end", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "path_end");
+ RNA_def_property_float_funcs(prop, NULL, NULL, "rna_PartSetting_pathstartend_range");
+ RNA_def_property_ui_text(prop, "Path End", "End time of drawn path.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
+
+ prop= RNA_def_property(srna, "trail_count", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "trail_count");
+ RNA_def_property_range(prop, 1.0f, 100.0f);
+ RNA_def_property_ui_text(prop, "Trail Count", "Number of trail particles.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Particle_redo");
+
/* boids */
prop= RNA_def_property(srna, "max_velocity", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max_vel");
diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c
index 14db8ea3377..557d472afef 100644
--- a/source/blender/makesrna/intern/rna_rna.c
+++ b/source/blender/makesrna/intern/rna_rna.c
@@ -547,6 +547,26 @@ static int rna_EnumPropertyItem_name_length(PointerRNA *ptr)
return strlen(((EnumPropertyItem*)ptr->data)->name);
}
+static void rna_EnumPropertyItem_description_get(PointerRNA *ptr, char *value)
+{
+ EnumPropertyItem *eprop= (EnumPropertyItem*)ptr->data;
+
+ if(eprop->description)
+ strcpy(value, eprop->description);
+ else
+ value[0]= '\0';
+}
+
+static int rna_EnumPropertyItem_description_length(PointerRNA *ptr)
+{
+ EnumPropertyItem *eprop= (EnumPropertyItem*)ptr->data;
+
+ if(eprop->description)
+ return strlen(eprop->description);
+ else
+ return 0;
+}
+
static int rna_EnumPropertyItem_value_get(PointerRNA *ptr)
{
return ((EnumPropertyItem*)ptr->data)->value;
@@ -861,6 +881,11 @@ static void rna_def_enum_property(BlenderRNA *brna, StructRNA *srna)
RNA_def_property_string_funcs(prop, "rna_EnumPropertyItem_name_get", "rna_EnumPropertyItem_name_length", NULL);
RNA_def_property_ui_text(prop, "Name", "Human readable name.");
+ prop= RNA_def_property(srna, "description", PROP_STRING, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_string_funcs(prop, "rna_EnumPropertyItem_description_get", "rna_EnumPropertyItem_description_length", NULL);
+ RNA_def_property_ui_text(prop, "Description", "Description of the item's purpose.");
+
prop= RNA_def_property(srna, "identifier", PROP_STRING, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_string_funcs(prop, "rna_EnumPropertyItem_identifier_get", "rna_EnumPropertyItem_identifier_length", NULL);
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 2ad4a20f9a0..8946530a372 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -199,6 +199,10 @@ void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_enum_items(prop, prop_mode_items);
RNA_def_property_ui_text(prop, "Proportional Editing Falloff", "Falloff type for proportional editing mode.");
+ prop= RNA_def_property(srna, "automerge_editing", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "automerge", 0);
+ RNA_def_property_ui_text(prop, "AutoMerge Editing", "Automatically merge vertices moved to the same location.");
+
prop= RNA_def_property(srna, "snap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP);
RNA_def_property_ui_text(prop, "Snap", "Snap while Ctrl is held during transform.");
diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c
index 055e67fb135..8ca023dc57c 100644
--- a/source/blender/makesrna/intern/rna_sequence.c
+++ b/source/blender/makesrna/intern/rna_sequence.c
@@ -38,9 +38,9 @@
#include "MEM_guardedalloc.h"
-#ifdef RNA_RUNTIME
+#include "WM_types.h"
-#include "MEM_guardedalloc.h"
+#ifdef RNA_RUNTIME
static int rna_SequenceEditor_name_length(PointerRNA *ptr)
{
@@ -429,10 +429,12 @@ static void rna_def_sequence(BlenderRNA *brna)
prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MUTE);
RNA_def_property_ui_text(prop, "Mute", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "frame_locked", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_IPO_FRAME_LOCKED);
RNA_def_property_ui_text(prop, "Frame Locked", "Lock the animation curve to the global frame counter.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_LOCK);
@@ -450,45 +452,53 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "start");
RNA_def_property_ui_text(prop, "Start Frame", "");
RNA_def_property_int_funcs(prop, NULL, "rna_SequenceEditor_start_frame_set",NULL); // overlap tests and calc_seq_disp
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "start_offset", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "startofs");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests
RNA_def_property_ui_text(prop, "Start Offset", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "end_offset", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "endofs");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests
RNA_def_property_ui_text(prop, "End offset", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "start_still", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "startstill");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests
RNA_def_property_range(prop, 0, MAXFRAME);
RNA_def_property_ui_text(prop, "Start Still", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "end_still", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "endstill");
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // overlap tests
RNA_def_property_range(prop, 0, MAXFRAME);
RNA_def_property_ui_text(prop, "End Still", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "machine");
RNA_def_property_ui_text(prop, "Channel", "Y position of the sequence strip.");
RNA_def_property_int_funcs(prop, NULL, "rna_SequenceEditor_channel_set",NULL); // overlap test
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
/* blending */
prop= RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, blend_mode_items);
RNA_def_property_ui_text(prop, "Blend Mode", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0f, 100.0f);
RNA_def_property_ui_text(prop, "Blend Opacity", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
- /* funcsions */
+ /* functions */
func= RNA_def_function(srna, "getStripElem", "give_stripelem");
RNA_def_function_ui_description(func, "Return the strip element from a given frame or None.");
prop= RNA_def_int(func, "frame", 0, INT_MIN, INT_MAX, "Frame", "The frame to get the strip element from", INT_MIN, INT_MAX);
@@ -539,58 +549,71 @@ static void rna_def_filter_video(StructRNA *srna)
prop= RNA_def_property(srna, "premultiply", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_PREMUL);
RNA_def_property_ui_text(prop, "Premultiply", "Convert RGB from key alpha to premultiplied alpha.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "flip_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPX);
RNA_def_property_ui_text(prop, "Flip X", "Flip on the X axis.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "flip_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPY);
RNA_def_property_ui_text(prop, "Flip Y", "Flip on the Y axis.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "convert_float", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_FLOAT);
RNA_def_property_ui_text(prop, "Convert Float", "Convert input to float data.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "reverse_frames", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_REVERSE_FRAMES);
RNA_def_property_ui_text(prop, "Flip Time", "Reverse frame order.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "multiply_colors", PROP_FLOAT, PROP_UNSIGNED);
RNA_def_property_float_sdna(prop, NULL, "mul");
RNA_def_property_range(prop, 0.0f, 20.0f);
RNA_def_property_ui_text(prop, "Multiply Colors", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "strobe", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 1.0f, 30.0f);
RNA_def_property_ui_text(prop, "Strobe", "Only display every nth frame.");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "use_color_balance", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_COLOR_BALANCE);
RNA_def_property_ui_text(prop, "Use Color Balance", "(3-Way color correction) on input.");
RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_color_balance_set");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "color_balance", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "strip->color_balance");
RNA_def_property_ui_text(prop, "Color Balance", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "use_translation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_TRANSFORM);
RNA_def_property_ui_text(prop, "Use Translation", "Translate image before processing.");
RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_translation_set");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "transform", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "strip->transform");
RNA_def_property_ui_text(prop, "Transform", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "use_crop", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_CROP);
RNA_def_property_ui_text(prop, "Use Crop", "Crop image before processing.");
RNA_def_property_boolean_funcs(prop, NULL, "rna_SequenceEditor_use_crop_set");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
prop= RNA_def_property(srna, "crop", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "strip->crop");
RNA_def_property_ui_text(prop, "Crop", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
}
static void rna_def_filter_sound(StructRNA *srna)
@@ -960,6 +983,7 @@ static void rna_def_solid_color(BlenderRNA *brna)
prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "col");
RNA_def_property_ui_text(prop, "Color", "");
+ RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
}
static void rna_def_speed_control(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index b29186513f8..ded954bf563 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -547,23 +547,28 @@ static void rna_def_space_3dview(BlenderRNA *brna)
prop= RNA_def_property(srna, "manipulator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twflag", V3D_USE_MANIPULATOR);
RNA_def_property_ui_text(prop, "Manipulator", "Use a 3D manipulator widget for controlling transforms.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, NULL);
prop= RNA_def_property(srna, "manipulator_translate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_TRANSLATE);
RNA_def_property_ui_text(prop, "Manipulator Translate", "Use the manipulator for movement transformations.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, NULL);
prop= RNA_def_property(srna, "manipulator_rotate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_ROTATE);
RNA_def_property_ui_text(prop, "Manipulator Rotate", "Use the manipulator for rotation transformations.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, NULL);
prop= RNA_def_property(srna, "manipulator_scale", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_SCALE);
RNA_def_property_ui_text(prop, "Manipulator Scale", "Use the manipulator for scale transformations.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, NULL);
prop= RNA_def_property(srna, "transform_orientation", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "twmode");
RNA_def_property_enum_items(prop, transform_orientation_items);
RNA_def_property_ui_text(prop, "Transform Orientation", "The alignment of manipulator handles.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, NULL);
}
@@ -729,13 +734,13 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "mainb");
RNA_def_property_enum_items(prop, display_mode_items);
RNA_def_property_ui_text(prop, "Display Mode", "The view mode to use for displaying sequencer output.");
- RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+ RNA_def_property_update(prop, ND_SEQUENCER|NC_WINDOW, NULL);
/* flag's */
prop= RNA_def_property(srna, "draw_frames", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAWFRAMES);
RNA_def_property_ui_text(prop, "Draw Frames", "Draw frames rather then seconds.");
- RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+ RNA_def_property_update(prop, ND_SEQUENCER|NC_WINDOW, NULL);
prop= RNA_def_property(srna, "transform_markers", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MARKER_TRANS);
@@ -743,18 +748,18 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
prop= RNA_def_property(srna, "seperate_color_preview", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_COLOR_SEPERATED);
- RNA_def_property_ui_text(prop, "Transform Markers", "Seperate color channels in preview.");
- RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+ RNA_def_property_ui_text(prop, "Seperate Colors", "Seperate color channels in preview.");
+ RNA_def_property_update(prop, ND_SEQUENCER|NC_WINDOW, NULL);
prop= RNA_def_property(srna, "draw_safe_margin", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_SAFE_MARGINS);
RNA_def_property_ui_text(prop, "Safe Margin", "Draw title safe margins in preview.");
- RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+ RNA_def_property_update(prop, ND_SEQUENCER|NC_WINDOW, NULL);
prop= RNA_def_property(srna, "use_grease_pencil", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_GPENCIL);
RNA_def_property_ui_text(prop, "Use Grease Pencil", "Display and edit the grease pencil freehand annotations overlay.");
- RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+ RNA_def_property_update(prop, ND_SEQUENCER|NC_WINDOW, NULL);
/* grease pencil */
prop= RNA_def_property(srna, "grease_pencil", PROP_POINTER, PROP_NONE);
@@ -766,13 +771,13 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "chanshown");
RNA_def_property_ui_text(prop, "Display Channel", "The channel number shown in the image preview. 0 is the result of all strips combined.");
RNA_def_property_range(prop, 0, 32); // MAXSEQ --- todo, move from BKE_sequence.h
- RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+ RNA_def_property_update(prop, ND_SEQUENCER|NC_WINDOW, NULL);
prop= RNA_def_property(srna, "draw_overexposed", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "zebra");
RNA_def_property_ui_text(prop, "Show Overexposed", "Show overexposed areas with zebra stripes.");
RNA_def_property_range(prop, 0, 110);
- RNA_def_property_update(prop, ND_SEQUENCER|ND_DISPLAY, NULL); // review notifier
+ RNA_def_property_update(prop, ND_SEQUENCER|NC_WINDOW, NULL);
/* not sure we need rna access to these but adding anyway */
diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c
index eef221e45a4..9da8c8b2df3 100644
--- a/source/blender/makesrna/intern/rna_ui.c
+++ b/source/blender/makesrna/intern/rna_ui.c
@@ -607,6 +607,10 @@ static void rna_def_panel(BlenderRNA *brna)
prop= RNA_def_property(srna, "default_closed", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "type->flag", PNL_DEFAULT_CLOSED);
RNA_def_property_flag(prop, PROP_REGISTER);
+
+ prop= RNA_def_property(srna, "no_header", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "type->flag", PNL_NO_HEADER);
+ RNA_def_property_flag(prop, PROP_REGISTER);
}
static void rna_def_header(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index f8ab3a86744..9c9c256e819 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -69,23 +69,23 @@ EnumPropertyItem event_type_items[] = {
{YKEY, "Y", 0, "Y", ""},
{ZKEY, "Z", 0, "Z", ""},
- {ZEROKEY, "ZERO", 0, "Zero Key", ""},
- {ONEKEY, "ONE", 0, "One Key", ""},
- {TWOKEY, "TWO", 0, "Two Key", ""},
- {THREEKEY, "THREE", 0, "Three Key", ""},
- {FOURKEY, "FOUR", 0, "Four Key", ""},
- {FIVEKEY, "FIVE", 0, "Five Key", ""},
- {SIXKEY, "SIX", 0, "Six Key", ""},
- {SEVENKEY, "SEVEN", 0, "Seven Key", ""},
- {EIGHTKEY, "EIGHT", 0, "Eight Key", ""},
- {NINEKEY, "NINE", 0, "Nine Key", ""},
+ {ZEROKEY, "ZERO", 0, "0", ""},
+ {ONEKEY, "ONE", 0, "1", ""},
+ {TWOKEY, "TWO", 0, "2", ""},
+ {THREEKEY, "THREE", 0, "3", ""},
+ {FOURKEY, "FOUR", 0, "4", ""},
+ {FIVEKEY, "FIVE", 0, "5", ""},
+ {SIXKEY, "SIX", 0, "6", ""},
+ {SEVENKEY, "SEVEN", 0, "7", ""},
+ {EIGHTKEY, "EIGHT", 0, "8", ""},
+ {NINEKEY, "NINE", 0, "9", ""},
{LEFTCTRLKEY, "LEFT_CTRL", 0, "Left Ctrl", ""},
{LEFTALTKEY, "LEFT_ALT", 0, "Left Alt", ""},
+ {LEFTSHIFTKEY, "LEFT_SHIFT", 0, "Left Shift", ""},
{RIGHTALTKEY, "RIGHT_ALT", 0, "Right Alt", ""},
- {RIGHTCTRLKEY, "RIGHT_CTRL", 0, "Rightctrl", ""},
- {RIGHTSHIFTKEY, "RIGHT_SHIFT", 0, "Rightshift", ""},
- {LEFTSHIFTKEY, "LEFT_SHIFT", 0, "Leftshift", ""},
+ {RIGHTCTRLKEY, "RIGHT_CTRL", 0, "Right Ctrl", ""},
+ {RIGHTSHIFTKEY, "RIGHT_SHIFT", 0, "Right Shift", ""},
{ESCKEY, "ESC", 0, "Esc", ""},
{TABKEY, "TAB", 0, "Tab", ""},
@@ -94,17 +94,17 @@ EnumPropertyItem event_type_items[] = {
{LINEFEEDKEY, "LINE_FEED", 0, "Line Feed", ""},
{BACKSPACEKEY, "BACK_SPACE", 0, "Back Space", ""},
{DELKEY, "DEL", 0, "Delete", ""},
- {SEMICOLONKEY, "SEMI_COLON", 0, "Semicolon", ""},
- {PERIODKEY, "PERIOD", 0, "Period", ""},
- {COMMAKEY, "COMMA", 0, "Comma", ""},
- {QUOTEKEY, "QUOTE", 0, "Quote", ""},
- {ACCENTGRAVEKEY, "ACCENT_GRAVE", 0, "Accentgrave", ""},
- {MINUSKEY, "MINUS", 0, "Minus", ""},
- {SLASHKEY, "SLASH", 0, "Slash", ""},
- {BACKSLASHKEY, "BACK_SLASH", 0, "Backslash", ""},
- {EQUALKEY, "EQUAL", 0, "Equal", ""},
- {LEFTBRACKETKEY, "LEFT_BRACKET", 0, "Leftbracket", ""},
- {RIGHTBRACKETKEY, "RIGHT_BRACKET", 0, "Rightbracket", ""},
+ {SEMICOLONKEY, "SEMI_COLON", 0, ";", ""},
+ {PERIODKEY, "PERIOD", 0, ".", ""},
+ {COMMAKEY, "COMMA", 0, ",", ""},
+ {QUOTEKEY, "QUOTE", 0, "\"", ""},
+ {ACCENTGRAVEKEY, "ACCENT_GRAVE", 0, "`", ""},
+ {MINUSKEY, "MINUS", 0, "-", ""},
+ {SLASHKEY, "SLASH", 0, "/", ""},
+ {BACKSLASHKEY, "BACK_SLASH", 0, "\\", ""},
+ {EQUALKEY, "EQUAL", 0, "=", ""},
+ {LEFTBRACKETKEY, "LEFT_BRACKET", 0, "]", ""},
+ {RIGHTBRACKETKEY, "RIGHT_BRACKET", 0, "[", ""},
{LEFTARROWKEY, "LEFT_ARROW", 0, "Left Arrow", ""},
{DOWNARROWKEY, "DOWN_ARROW", 0, "Down Arrow", ""},
{RIGHTARROWKEY, "RIGHT_ARROW", 0, "Right Arrow", ""},
diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c
index f5eb81e3cea..67328455a77 100644
--- a/source/blender/makesrna/intern/rna_world.c
+++ b/source/blender/makesrna/intern/rna_world.c
@@ -377,7 +377,7 @@ void RNA_def_world(BlenderRNA *brna)
prop= RNA_def_property(srna, "range", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "range");
RNA_def_property_range(prop, 0.2, 5.0);
- RNA_def_property_ui_text(prop, "Range", "The color rage that will be mapped to 0-1");
+ RNA_def_property_ui_text(prop, "Range", "The color range that will be mapped to 0-1.");
/* sky type */
prop= RNA_def_property(srna, "blend_sky", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/python/BPY_extern.h b/source/blender/python/BPY_extern.h
index d141a585378..c6972793372 100644
--- a/source/blender/python/BPY_extern.h
+++ b/source/blender/python/BPY_extern.h
@@ -100,7 +100,7 @@ extern "C" {
/* 2.5 UI Scripts */
int BPY_run_python_script( struct bContext *C, const char *filename, struct Text *text, struct ReportList *reports ); // 2.5 working
- int BPY_run_script_space_draw(struct bContext *C, struct SpaceScript * sc); // 2.5 working
+ int BPY_run_script_space_draw(const struct bContext *C, struct SpaceScript * sc); // 2.5 working
void BPY_run_ui_scripts(struct bContext *C, int reload);
// int BPY_run_script_space_listener(struct bContext *C, struct SpaceScript * sc, struct ARegion *ar, struct wmNotifier *wmn); // 2.5 working
void BPY_update_modules( void ); // XXX - annoying, need this for pointers that get out of date
diff --git a/source/blender/python/generic/euler.c b/source/blender/python/generic/euler.c
index 1e0632f4040..69373b1aa36 100644
--- a/source/blender/python/generic/euler.c
+++ b/source/blender/python/generic/euler.c
@@ -134,18 +134,21 @@ static PyObject *Euler_ToQuat(EulerObject * self)
//return a matrix representation of the euler
static PyObject *Euler_ToMatrix(EulerObject * self)
{
- float eul[3];
float mat[9] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
- int x;
if(!BaseMath_ReadCallback(self))
return NULL;
#ifdef USE_MATHUTILS_DEG
- for(x = 0; x < 3; x++) {
- eul[x] = self->eul[x] * ((float)Py_PI / 180);
+ {
+ float eul[3];
+ int x;
+
+ for(x = 0; x < 3; x++) {
+ eul[x] = self->eul[x] * ((float)Py_PI / 180);
+ }
+ EulToMat3(eul, (float (*)[3]) mat);
}
- EulToMat3(eul, (float (*)[3]) mat);
#else
EulToMat3(self->eul, (float (*)[3]) mat);
#endif
@@ -234,7 +237,6 @@ static PyObject *Euler_Rotate(EulerObject * self, PyObject *args)
{
float angle = 0.0f;
char *axis;
- int x;
if(!PyArg_ParseTuple(args, "fs", &angle, &axis)){
PyErr_SetString(PyExc_TypeError, "euler.rotate():expected angle (float) and axis (x,y,z)");
@@ -249,18 +251,25 @@ static PyObject *Euler_Rotate(EulerObject * self, PyObject *args)
return NULL;
#ifdef USE_MATHUTILS_DEG
- //covert to radians
- angle *= ((float)Py_PI / 180);
- for(x = 0; x < 3; x++) {
- self->eul[x] *= ((float)Py_PI / 180);
+ {
+ int x;
+
+ //covert to radians
+ angle *= ((float)Py_PI / 180);
+ for(x = 0; x < 3; x++) {
+ self->eul[x] *= ((float)Py_PI / 180);
+ }
}
#endif
euler_rot(self->eul, angle, *axis);
#ifdef USE_MATHUTILS_DEG
- //convert back from radians
- for(x = 0; x < 3; x++) {
- self->eul[x] *= (180 / (float)Py_PI);
+ {
+ int x;
+ //convert back from radians
+ for(x = 0; x < 3; x++) {
+ self->eul[x] *= (180 / (float)Py_PI);
+ }
}
#endif
@@ -602,7 +611,7 @@ PyObject *newEulerObject(float *eul, int type, PyTypeObject *base_type)
EulerObject *self;
int x;
- if(base_type) self = base_type->tp_alloc(base_type, 0);
+ if(base_type) self = (EulerObject *)base_type->tp_alloc(base_type, 0);
else self = PyObject_NEW(EulerObject, &euler_Type);
/* init callbacks as NULL */
diff --git a/source/blender/python/generic/quat.c b/source/blender/python/generic/quat.c
index b9c491e24e4..05b2443b581 100644
--- a/source/blender/python/generic/quat.c
+++ b/source/blender/python/generic/quat.c
@@ -167,7 +167,6 @@ static PyObject *Quaternion_ToEuler(QuaternionObject * self, PyObject *args)
{
float eul[3];
EulerObject *eul_compat = NULL;
- int x;
if(!PyArg_ParseTuple(args, "|O!:toEuler", &euler_Type, &eul_compat))
return NULL;
@@ -176,7 +175,7 @@ static PyObject *Quaternion_ToEuler(QuaternionObject * self, PyObject *args)
return NULL;
if(eul_compat) {
- float mat[3][3], eul_compatf[3];
+ float mat[3][3];
if(!BaseMath_ReadCallback(eul_compat))
return NULL;
@@ -184,10 +183,15 @@ static PyObject *Quaternion_ToEuler(QuaternionObject * self, PyObject *args)
QuatToMat3(self->quat, mat);
#ifdef USE_MATHUTILS_DEG
- for(x = 0; x < 3; x++) {
- eul_compatf[x] = eul_compat->eul[x] * ((float)Py_PI / 180);
+ {
+ float eul_compatf[3];
+ int x;
+
+ for(x = 0; x < 3; x++) {
+ eul_compatf[x] = eul_compat->eul[x] * ((float)Py_PI / 180);
+ }
+ Mat3ToCompatibleEul(mat, eul, eul_compatf);
}
- Mat3ToCompatibleEul(mat, eul, eul_compatf);
#else
Mat3ToCompatibleEul(mat, eul, eul_compat->eul);
#endif
@@ -197,8 +201,12 @@ static PyObject *Quaternion_ToEuler(QuaternionObject * self, PyObject *args)
}
#ifdef USE_MATHUTILS_DEG
- for(x = 0; x < 3; x++) {
- eul[x] *= (180 / (float)Py_PI);
+ {
+ int x;
+
+ for(x = 0; x < 3; x++) {
+ eul[x] *= (180 / (float)Py_PI);
+ }
}
#endif
return newEulerObject(eul, Py_NEW, NULL);
@@ -833,7 +841,7 @@ PyObject *newQuaternionObject(float *quat, int type, PyTypeObject *base_type)
{
QuaternionObject *self;
- if(base_type) self = base_type->tp_alloc(base_type, 0);
+ if(base_type) self = (QuaternionObject *)base_type->tp_alloc(base_type, 0);
else self = PyObject_NEW(QuaternionObject, &quaternion_Type);
/* init callbacks as NULL */
diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c
index b4c74787e05..cf2396b30d4 100644
--- a/source/blender/python/generic/vector.c
+++ b/source/blender/python/generic/vector.c
@@ -1973,7 +1973,7 @@ PyObject *newVectorObject(float *vec, int size, int type, PyTypeObject *base_typ
int i;
VectorObject *self;
- if(base_type) self = base_type->tp_alloc(base_type, 0);
+ if(base_type) self = (VectorObject *)base_type->tp_alloc(base_type, 0);
else self = PyObject_NEW(VectorObject, &vector_Type);
if(size > 4 || size < 2)
diff --git a/source/blender/python/intern/bpy_compat.h b/source/blender/python/intern/bpy_compat.h
index 1ad9376c13b..e999f57c733 100644
--- a/source/blender/python/intern/bpy_compat.h
+++ b/source/blender/python/intern/bpy_compat.h
@@ -85,6 +85,12 @@ typedef Py_ssize_t (*lenfunc)(PyObject *);
#ifndef Py_RETURN_TRUE
#define Py_RETURN_TRUE return PyBool_FromLong(1)
#endif
+
+#define PyInt_FromSsize_t PyInt_FromLong
+#define PyNumber_AsSsize_t(ob, exc) PyInt_AsLong(ob)
+#define PyIndex_Check(ob) PyInt_Check(ob)
+
+
#endif
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index 1d18fe36ad9..42eb9c4c57a 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -147,13 +147,66 @@ wchar_t* Py_GetPath(void)
}
#endif
+
+/* must be called before Py_Initialize */
+void BPY_start_python_path(void)
+{
+ char *py_path_bundle= BLI_gethome_folder("python");
+
+ if(py_path_bundle==NULL)
+ return;
+
+ /* set the environment path */
+ printf("found bundled python: %s\n", py_path_bundle);
+
+#if (defined(WIN32) || defined(WIN64))
+#if defined(FREE_WINDOWS)
+ {
+ char py_path[FILE_MAXDIR + 11] = "";
+ sprintf(py_path, "PYTHONPATH=%s", py_path_bundle);
+ putenv(py_path);
+ }
+#else
+ _putenv_s("PYTHONPATH", py_path_bundle);
+#endif
+#else
+#ifdef __sgi
+ {
+ char py_path[FILE_MAXDIR + 11] = "";
+ sprintf(py_path, "PYTHONPATH=%s", py_path_bundle);
+ putenv(py_path);
+ }
+#else
+ setenv("PYTHONPATH", py_path_bundle, 1);
+#endif
+#endif
+
+}
+
+
void BPY_start_python( int argc, char **argv )
{
PyThreadState *py_tstate = NULL;
+ BPY_start_python_path(); /* allow to use our own included python */
+
Py_Initialize( );
- //PySys_SetArgv( argc_copy, argv_copy );
+#if (PY_VERSION_HEX < 0x03000000)
+ PySys_SetArgv( argc, argv);
+#else
+ /* sigh, why do python guys not have a char** version anymore? :( */
+ {
+ int i;
+ PyObject *py_argv= PyList_New(argc);
+
+ for (i=0; i<argc; i++)
+ PyList_SET_ITEM(py_argv, i, PyUnicode_FromString(argv[i]));
+
+ PySys_SetObject("argv", py_argv);
+ Py_DECREF(py_argv);
+ }
+#endif
/* Initialize thread support (also acquires lock) */
PyEval_InitThreads();
@@ -298,9 +351,9 @@ static int bpy_run_script_init(bContext *C, SpaceScript * sc)
return 1;
}
-int BPY_run_script_space_draw(struct bContext *C, SpaceScript * sc)
+int BPY_run_script_space_draw(const struct bContext *C, SpaceScript * sc)
{
- if (bpy_run_script_init(C, sc)) {
+ if (bpy_run_script_init( (bContext *)C, sc)) {
PyGILState_STATE gilstate = PyGILState_Ensure();
PyObject *result = PyObject_CallObject( sc->script->py_draw, NULL );
@@ -400,7 +453,7 @@ void BPY_run_ui_scripts(bContext *C, int reload)
char *dirname;
char path[FILE_MAX];
char *dirs[] = {"io", "ui", NULL};
- int a, filelen; /* filename length */
+ int a;
PyGILState_STATE gilstate;
PyObject *mod;
@@ -436,13 +489,11 @@ void BPY_run_ui_scripts(bContext *C, int reload)
while((de = readdir(dir)) != NULL) {
/* We could stat the file but easier just to let python
* import it and complain if theres a problem */
-
+
file_extension = strstr(de->d_name, ".py");
- if(file_extension && *(file_extension + 3) == '\0') {
- filelen = strlen(de->d_name);
- BLI_strncpy(path, de->d_name, filelen-2); /* cut off the .py on copy */
-
+ if(file_extension && file_extension[3] == '\0') {
+ BLI_strncpy(path, de->d_name, (file_extension - de->d_name) + 1); /* cut off the .py on copy */
mod= PyImport_ImportModuleLevel(path, NULL, NULL, NULL, 0);
if (mod) {
if (reload) {
@@ -455,7 +506,7 @@ void BPY_run_ui_scripts(bContext *C, int reload)
if(mod) {
Py_DECREF(mod); /* could be NULL from reloading */
} else {
- BPy_errors_to_report(NULL); // TODO - reports
+ BPy_errors_to_report(NULL);
fprintf(stderr, "unable to import \"%s\" %s/%s\n", path, dirname, de->d_name);
}
diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c
index 004cf2fb7c7..b183120dd2d 100644
--- a/source/blender/python/intern/bpy_operator.c
+++ b/source/blender/python/intern/bpy_operator.c
@@ -130,12 +130,12 @@ static PyObject *pyop_base_getattro( BPy_OperatorBase * self, PyObject *pyname )
PyObject *ret;
wmOperatorType *ot;
- if ((ot= WM_operatortype_find(name))) {
- ret = PyCFunction_New( pyop_base_call_meth, pyname); /* set the name string as self, PyCFunction_New incref's self */
- }
- else if ((ret = PyObject_GenericGetAttr((PyObject *)self, pyname))) {
+ if ((ret = PyObject_GenericGetAttr((PyObject *)self, pyname))) {
/* do nothing, this accounts for methoddef's add and remove */
}
+ else if ((ot= WM_operatortype_find(name))) {
+ ret = PyCFunction_New( pyop_base_call_meth, pyname); /* set the name string as self, PyCFunction_New incref's self */
+ }
else {
PyErr_Format( PyExc_AttributeError, "Operator \"%s\" not found", name);
ret= NULL;
diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c
index 60a9afda0c4..f8567414717 100644
--- a/source/blender/python/intern/bpy_operator_wrap.c
+++ b/source/blender/python/intern/bpy_operator_wrap.c
@@ -352,9 +352,10 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class)
idname = _PyUnicode_AsString(item);
/* remove if it already exists */
- if ((ot=WM_operatortype_find(idname))) {
- if(ot->pyop_data)
+ if ((ot=WM_operatortype_exists(idname))) {
+ if(ot->pyop_data) {
Py_XDECREF((PyObject*)ot->pyop_data);
+ }
WM_operatortype_remove(idname);
}
@@ -402,7 +403,7 @@ PyObject *PYOP_wrap_remove(PyObject *self, PyObject *value)
return NULL;
}
- if (!(ot= WM_operatortype_find(idname))) {
+ if (!(ot= WM_operatortype_exists(idname))) {
PyErr_Format( PyExc_AttributeError, "Operator \"%s\" does not exists, cant remove", idname);
return NULL;
}
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index 4729620bb8a..bf2f41389cc 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -40,6 +40,10 @@
#include "BKE_global.h" /* evil G.* */
#include "BKE_report.h"
+/* only for keyframing */
+#include "DNA_scene_types.h"
+#include "ED_keyframing.h"
+
#define USE_MATHUTILS
#ifdef USE_MATHUTILS
@@ -168,12 +172,12 @@ static PyObject *pyrna_struct_repr( BPy_StructRNA * self )
/* print name if available */
name= RNA_struct_name_get_alloc(&self->ptr, NULL, 0);
if(name) {
- pyob= PyUnicode_FromFormat( "[BPy_StructRNA \"%s\" -> \"%s\"]", RNA_struct_identifier(self->ptr.type), name);
+ pyob= PyUnicode_FromFormat( "[BPy_StructRNA \"%.200s\" -> \"%.200s\"]", RNA_struct_identifier(self->ptr.type), name);
MEM_freeN(name);
return pyob;
}
- return PyUnicode_FromFormat( "[BPy_StructRNA \"%s\"]", RNA_struct_identifier(self->ptr.type));
+ return PyUnicode_FromFormat( "[BPy_StructRNA \"%.200s\"]", RNA_struct_identifier(self->ptr.type));
}
static PyObject *pyrna_prop_repr( BPy_PropertyRNA * self )
@@ -188,13 +192,13 @@ static PyObject *pyrna_prop_repr( BPy_PropertyRNA * self )
name= RNA_struct_name_get_alloc(&ptr, NULL, 0);
if(name) {
- pyob= PyUnicode_FromFormat( "[BPy_PropertyRNA \"%s\" -> \"%s\" -> \"%s\" ]", RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop), name);
+ pyob= PyUnicode_FromFormat( "[BPy_PropertyRNA \"%.200s\" -> \"%.200s\" -> \"%.200s\" ]", RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop), name);
MEM_freeN(name);
return pyob;
}
}
- return PyUnicode_FromFormat( "[BPy_PropertyRNA \"%s\" -> \"%s\"]", RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop));
+ return PyUnicode_FromFormat( "[BPy_PropertyRNA \"%.200s\" -> \"%.200s\"]", RNA_struct_identifier(self->ptr.type), RNA_property_identifier(self->prop));
}
static long pyrna_struct_hash( BPy_StructRNA * self )
@@ -307,8 +311,25 @@ PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop)
if (RNA_property_enum_identifier(ptr, prop, val, &identifier)) {
ret = PyUnicode_FromString( identifier );
} else {
- PyErr_Format(PyExc_AttributeError, "RNA Error: Current value \"%d\" matches no enum", val);
- ret = NULL;
+ const EnumPropertyItem *item;
+
+ /* don't throw error here, can't trust blender 100% to give the
+ * right values, python code should not generate error for that */
+ RNA_property_enum_items(ptr, prop, &item, NULL);
+ if(item->identifier) {
+ ret = PyUnicode_FromString( item->identifier );
+ }
+ else {
+ /* prefer not fail silently incase of api errors, maybe disable it later */
+ char error_str[128];
+ sprintf(error_str, "RNA Warning: Current value \"%d\" matches no enum", val);
+ PyErr_Warn(PyExc_RuntimeWarning, error_str);
+
+ ret = PyUnicode_FromString( "" );
+ }
+
+ /*PyErr_Format(PyExc_AttributeError, "RNA Error: Current value \"%d\" matches no enum", val);
+ ret = NULL;*/
}
break;
@@ -354,7 +375,7 @@ int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, const char *error_prefi
if (strcmp(arg_name, "rna_type")==0) continue;
if (kw==NULL) {
- PyErr_Format( PyExc_AttributeError, "%s: no keywords, expected \"%s\"", error_prefix, arg_name ? arg_name : "<UNKNOWN>");
+ PyErr_Format( PyExc_AttributeError, "%.200s: no keywords, expected \"%.200s\"", error_prefix, arg_name ? arg_name : "<UNKNOWN>");
error_val= -1;
break;
}
@@ -362,7 +383,7 @@ int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, const char *error_prefi
item= PyDict_GetItemString(kw, arg_name);
if (item == NULL) {
- PyErr_Format( PyExc_AttributeError, "%s: keyword \"%s\" missing", error_prefix, arg_name ? arg_name : "<UNKNOWN>");
+ PyErr_Format( PyExc_AttributeError, "%.200s: keyword \"%.200s\" missing", error_prefix, arg_name ? arg_name : "<UNKNOWN>");
error_val = -1; /* pyrna_py_to_prop sets the error */
break;
}
@@ -386,7 +407,7 @@ int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, const char *error_prefi
arg_name= NULL;
}
- PyErr_Format( PyExc_AttributeError, "%s: keyword \"%s\" unrecognized", error_prefix, arg_name ? arg_name : "<UNKNOWN>");
+ PyErr_Format( PyExc_AttributeError, "%.200s: keyword \"%.200s\" unrecognized", error_prefix, arg_name ? arg_name : "<UNKNOWN>");
error_val = -1;
}
@@ -438,7 +459,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
py_len= (int)PySequence_Length(value);
}
else {
- PyErr_Format(PyExc_TypeError, "RNA array assignment expected a sequence instead of %s instance.", Py_TYPE(value)->tp_name);
+ PyErr_Format(PyExc_TypeError, "RNA array assignment expected a sequence instead of %.200s instance.", Py_TYPE(value)->tp_name);
return -1;
}
/* done getting the length */
@@ -599,7 +620,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
if (param==NULL) {
char *enum_str= pyrna_enum_as_string(ptr, prop);
- PyErr_Format(PyExc_TypeError, "expected a string enum type in (%s)", enum_str);
+ PyErr_Format(PyExc_TypeError, "expected a string enum type in (%.200s)", enum_str);
MEM_freeN(enum_str);
return -1;
} else {
@@ -609,7 +630,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
else RNA_property_enum_set(ptr, prop, val);
} else {
char *enum_str= pyrna_enum_as_string(ptr, prop);
- PyErr_Format(PyExc_AttributeError, "enum \"%s\" not found in (%s)", param, enum_str);
+ PyErr_Format(PyExc_AttributeError, "enum \"%.200s\" not found in (%.200s)", param, enum_str);
MEM_freeN(enum_str);
return -1;
}
@@ -624,7 +645,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
if(!BPy_StructRNA_Check(value) && value != Py_None) {
PointerRNA tmp;
RNA_pointer_create(NULL, ptype, NULL, &tmp);
- PyErr_Format(PyExc_TypeError, "expected a %s type", RNA_struct_identifier(tmp.type));
+ PyErr_Format(PyExc_TypeError, "expected a %.200s type", RNA_struct_identifier(tmp.type));
return -1;
} else {
BPy_StructRNA *param= (BPy_StructRNA*)value;
@@ -661,7 +682,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
else {
PointerRNA tmp;
RNA_pointer_create(NULL, ptype, NULL, &tmp);
- PyErr_Format(PyExc_TypeError, "expected a %s type", RNA_struct_identifier(tmp.type));
+ PyErr_Format(PyExc_TypeError, "expected a %.200s type", RNA_struct_identifier(tmp.type));
return -1;
}
}
@@ -669,7 +690,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v
if(raise_error) {
PointerRNA tmp;
RNA_pointer_create(NULL, ptype, NULL, &tmp);
- PyErr_Format(PyExc_TypeError, "expected a %s type", RNA_struct_identifier(tmp.type));
+ PyErr_Format(PyExc_TypeError, "expected a %.200s type", RNA_struct_identifier(tmp.type));
return -1;
}
}
@@ -831,7 +852,7 @@ static PyObject *prop_subscript_collection_int(BPy_PropertyRNA * self, int keynu
if(RNA_property_collection_lookup_int(&self->ptr, self->prop, keynum, &newptr))
return pyrna_struct_CreatePyObject(&newptr);
- PyErr_SetString(PyExc_IndexError, "out of range");
+ PyErr_Format(PyExc_IndexError, "index %d out of range", keynum);
return NULL;
}
static PyObject *prop_subscript_array_int(BPy_PropertyRNA * self, int keynum)
@@ -843,7 +864,7 @@ static PyObject *prop_subscript_array_int(BPy_PropertyRNA * self, int keynum)
if(keynum >= 0 && keynum < len)
return pyrna_prop_to_py_index(&self->ptr, self->prop, keynum);
- PyErr_SetString(PyExc_IndexError, "out of range");
+ PyErr_Format(PyExc_IndexError, "index %d out of range", keynum);
return NULL;
}
@@ -853,7 +874,7 @@ static PyObject *prop_subscript_collection_str(BPy_PropertyRNA * self, char *key
if(RNA_property_collection_lookup_string(&self->ptr, self->prop, keyname, &newptr))
return pyrna_struct_CreatePyObject(&newptr);
- PyErr_SetString(PyExc_KeyError, "key not found");
+ PyErr_Format(PyExc_KeyError, "key \"%.200s\" not found", keyname);
return NULL;
}
/* static PyObject *prop_subscript_array_str(BPy_PropertyRNA * self, char *keyname) */
@@ -903,8 +924,12 @@ static PyObject *prop_subscript_collection(BPy_PropertyRNA * self, PyObject *key
if (PyUnicode_Check(key)) {
return prop_subscript_collection_str(self, _PyUnicode_AsString(key));
}
- else if (PyLong_Check(key)) {
- return prop_subscript_collection_int(self, PyLong_AsSsize_t(key));
+ else if (PyIndex_Check(key)) {
+ Py_ssize_t i = PyNumber_AsSsize_t(key, PyExc_IndexError);
+ if (i == -1 && PyErr_Occurred())
+ return NULL;
+
+ return prop_subscript_collection_int(self, i);
}
#if PY_VERSION_HEX >= 0x03000000
else if (PySlice_Check(key)) {
@@ -927,7 +952,7 @@ static PyObject *prop_subscript_collection(BPy_PropertyRNA * self, PyObject *key
}
#endif
else {
- PyErr_SetString(PyExc_AttributeError, "invalid key, key must be a string or an int");
+ PyErr_Format(PyExc_TypeError, "invalid rna key, key must be a string or an int instead of %.200s instance.", Py_TYPE(key)->tp_name);
return NULL;
}
}
@@ -937,7 +962,10 @@ static PyObject *prop_subscript_array(BPy_PropertyRNA * self, PyObject *key)
/*if (PyUnicode_Check(key)) {
return prop_subscript_array_str(self, _PyUnicode_AsString(key));
} else*/
- if (PyLong_Check(key)) {
+ if (PyIndex_Check(key)) {
+ Py_ssize_t i = PyNumber_AsSsize_t(key, PyExc_IndexError);
+ if (i == -1 && PyErr_Occurred())
+ return NULL;
return prop_subscript_array_int(self, PyLong_AsSsize_t(key));
}
#if PY_VERSION_HEX >= 0x03000000
@@ -1017,18 +1045,22 @@ static int pyrna_prop_ass_subscript( BPy_PropertyRNA * self, PyObject *key, PyOb
/* char *keyname = NULL; */ /* not supported yet */
if (!RNA_property_editable(&self->ptr, self->prop)) {
- PyErr_Format( PyExc_AttributeError, "PropertyRNA - attribute \"%s\" from \"%s\" is read-only", RNA_property_identifier(self->prop), RNA_struct_identifier(self->ptr.type) );
+ PyErr_Format( PyExc_AttributeError, "PropertyRNA - attribute \"%.200s\" from \"%.200s\" is read-only", RNA_property_identifier(self->prop), RNA_struct_identifier(self->ptr.type) );
return -1;
}
/* maybe one day we can support this... */
if (RNA_property_type(self->prop) == PROP_COLLECTION) {
- PyErr_Format( PyExc_AttributeError, "PropertyRNA - attribute \"%s\" from \"%s\" is a collection, assignment not supported", RNA_property_identifier(self->prop), RNA_struct_identifier(self->ptr.type) );
+ PyErr_Format( PyExc_AttributeError, "PropertyRNA - attribute \"%.200s\" from \"%.200s\" is a collection, assignment not supported", RNA_property_identifier(self->prop), RNA_struct_identifier(self->ptr.type) );
return -1;
}
- if (PyLong_Check(key)) {
- return prop_subscript_ass_array_int(self, PyLong_AsSsize_t(key), value);
+ if (PyIndex_Check(key)) {
+ Py_ssize_t i = PyNumber_AsSsize_t(key, PyExc_IndexError);
+ if (i == -1 && PyErr_Occurred())
+ return -1;
+
+ return prop_subscript_ass_array_int(self, i, value);
}
#if PY_VERSION_HEX >= 0x03000000
else if (PySlice_Check(key)) {
@@ -1096,6 +1128,25 @@ static PySequenceMethods pyrna_prop_as_sequence = {
(objobjproc)pyrna_prop_contains, /* sq_contains */
};
+
+static PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA * self, PyObject *args)
+{
+ char *path;
+ int index= 0;
+ float cfra = CTX_data_scene(BPy_GetContext())->r.cfra;
+
+ if(!RNA_struct_is_ID(self->ptr.type)) {
+ PyErr_SetString( PyExc_TypeError, "StructRNA - keyframe_insert only for ID type");
+ return NULL;
+ }
+
+ if (!PyArg_ParseTuple(args, "s|if:keyframe_insert", &path, &index, &cfra))
+ return NULL;
+
+ return PyBool_FromLong( insert_keyframe((ID *)self->ptr.data, NULL, NULL, path, index, cfra, 0));
+}
+
+
static PyObject *pyrna_struct_dir(BPy_StructRNA * self)
{
PyObject *ret, *dict;
@@ -1237,7 +1288,7 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA * self, PyObject *pyname )
BLI_freelistN(&newlb);
}
else {
- PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%s\" not found", name);
+ PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name);
ret = NULL;
}
@@ -1255,13 +1306,13 @@ static int pyrna_struct_setattro( BPy_StructRNA * self, PyObject *pyname, PyObje
return 0;
}
else {
- PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%s\" not found", name);
+ PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name);
return -1;
}
}
if (!RNA_property_editable(&self->ptr, prop)) {
- PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%s\" from \"%s\" is read-only", RNA_property_identifier(prop), RNA_struct_identifier(self->ptr.type) );
+ PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" from \"%.200s\" is read-only", RNA_property_identifier(prop), RNA_struct_identifier(self->ptr.type) );
return -1;
}
@@ -1364,6 +1415,24 @@ static PyObject *pyrna_prop_values(BPy_PropertyRNA *self)
return ret;
}
+static PyObject *pyrna_prop_get(BPy_PropertyRNA *self, PyObject *args)
+{
+ PointerRNA newptr;
+
+ char *key;
+ PyObject* def = Py_None;
+
+ if (!PyArg_ParseTuple(args, "s|O:get", &key, &def))
+ return NULL;
+
+ if(RNA_property_collection_lookup_string(&self->ptr, self->prop, key, &newptr))
+ return pyrna_struct_CreatePyObject(&newptr);
+
+ Py_INCREF(def);
+ return def;
+}
+
+
#if (PY_VERSION_HEX >= 0x03000000) /* foreach needs py3 */
static void foreach_attr_type( BPy_PropertyRNA *self, char *attr,
/* values to assign */
@@ -1635,6 +1704,10 @@ PyObject *pyrna_prop_iter(BPy_PropertyRNA *self)
}
static struct PyMethodDef pyrna_struct_methods[] = {
+
+ /* maybe this become and ID function */
+ {"keyframe_insert", (PyCFunction)pyrna_struct_keyframe_insert, METH_VARARGS, NULL},
+
{"__dir__", (PyCFunction)pyrna_struct_dir, METH_NOARGS, NULL},
{NULL, NULL, 0, NULL}
};
@@ -1643,6 +1716,8 @@ static struct PyMethodDef pyrna_prop_methods[] = {
{"keys", (PyCFunction)pyrna_prop_keys, METH_NOARGS, NULL},
{"items", (PyCFunction)pyrna_prop_items, METH_NOARGS,NULL},
{"values", (PyCFunction)pyrna_prop_values, METH_NOARGS, NULL},
+
+ {"get", (PyCFunction)pyrna_prop_get, METH_VARARGS, NULL},
#if (PY_VERSION_HEX >= 0x03000000)
/* array accessor function */
@@ -1745,8 +1820,18 @@ PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *data)
if (RNA_property_enum_identifier(ptr, prop, val, &identifier)) {
ret = PyUnicode_FromString( identifier );
} else {
- PyErr_Format(PyExc_AttributeError, "RNA Error: Current value \"%d\" matches no enum", val);
- ret = NULL;
+ const EnumPropertyItem *item;
+
+ /* don't throw error here, can't trust blender 100% to give the
+ * right values, python code should not generate error for that */
+ RNA_property_enum_items(ptr, prop, &item, NULL);
+ if(item[0].identifier)
+ ret = PyUnicode_FromString( item[0].identifier );
+ else
+ ret = PyUnicode_FromString( "" );
+
+ /*PyErr_Format(PyExc_AttributeError, "RNA Error: Current value \"%d\" matches no enum", val);
+ ret = NULL;*/
}
break;
@@ -1848,7 +1933,7 @@ static PyObject * pyrna_func_call(PyObject * self, PyObject *args, PyObject *kw)
tid= RNA_struct_identifier(self_ptr->type);
fid= RNA_function_identifier(self_func);
- PyErr_Format(PyExc_AttributeError, "%s.%s(): required parameter \"%s\" not specified", tid, fid, pid);
+ PyErr_Format(PyExc_AttributeError, "%.200s.%.200s(): required parameter \"%.200s\" not specified", tid, fid, pid);
err= -1;
break;
}
@@ -2260,12 +2345,12 @@ static PyObject *pyrna_basetype_getattro( BPy_BaseTypeRNA * self, PyObject *pyna
if (RNA_property_collection_lookup_string(&self->ptr, self->prop, _PyUnicode_AsString(pyname), &newptr)) {
ret= pyrna_struct_Subtype(&newptr);
if (ret==NULL) {
- PyErr_Format(PyExc_SystemError, "bpy.types.%s subtype could not be generated, this is a bug!", _PyUnicode_AsString(pyname));
+ PyErr_Format(PyExc_SystemError, "bpy.types.%.200s subtype could not be generated, this is a bug!", _PyUnicode_AsString(pyname));
}
return ret;
}
else { /* Override the error */
- PyErr_Format(PyExc_AttributeError, "bpy.types.%s not a valid RNA_Struct", _PyUnicode_AsString(pyname));
+ PyErr_Format(PyExc_AttributeError, "bpy.types.%.200s not a valid RNA_Struct", _PyUnicode_AsString(pyname));
return NULL;
}
}
@@ -2507,7 +2592,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
if (base_class) {
if (!PyObject_IsSubclass(py_class, base_class)) {
PyObject *name= PyObject_GetAttrString(base_class, "__name__");
- PyErr_Format( PyExc_AttributeError, "expected %s subclass of class \"%s\"", class_type, name ? _PyUnicode_AsString(name):"<UNKNOWN>");
+ PyErr_Format( PyExc_AttributeError, "expected %.200s subclass of class \"%.200s\"", class_type, name ? _PyUnicode_AsString(name):"<UNKNOWN>");
Py_XDECREF(name);
return -1;
}
@@ -2530,7 +2615,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
if (item==NULL) {
if ((flag & FUNC_REGISTER_OPTIONAL)==0) {
- PyErr_Format( PyExc_AttributeError, "expected %s class to have an \"%s\" attribute", class_type, RNA_function_identifier(func));
+ PyErr_Format( PyExc_AttributeError, "expected %.200s class to have an \"%.200s\" attribute", class_type, RNA_function_identifier(func));
return -1;
}
@@ -2545,7 +2630,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
fitem= item; /* py 3.x */
if (PyFunction_Check(fitem)==0) {
- PyErr_Format( PyExc_AttributeError, "expected %s class \"%s\" attribute to be a function", class_type, RNA_function_identifier(func));
+ PyErr_Format( PyExc_AttributeError, "expected %.200s class \"%.200s\" attribute to be a function", class_type, RNA_function_identifier(func));
return -1;
}
@@ -2557,7 +2642,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
Py_DECREF(py_arg_count);
if (arg_count != func_arg_count) {
- PyErr_Format( PyExc_AttributeError, "expected %s class \"%s\" function to have %d args", class_type, RNA_function_identifier(func), func_arg_count);
+ PyErr_Format( PyExc_AttributeError, "expected %.200s class \"%.200s\" function to have %d args", class_type, RNA_function_identifier(func), func_arg_count);
return -1;
}
}
@@ -2589,7 +2674,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun
}
if (item==NULL && (flag & PROP_REGISTER_OPTIONAL)==0) {
- PyErr_Format( PyExc_AttributeError, "expected %s class to have an \"%s\" attribute", class_type, identifier);
+ PyErr_Format( PyExc_AttributeError, "expected %.200s class to have an \"%.200s\" attribute", class_type, identifier);
return -1;
}
@@ -2673,12 +2758,12 @@ static int bpy_class_call(PointerRNA *ptr, FunctionRNA *func, ParameterList *par
}
else {
Py_DECREF(py_class_instance);
- PyErr_Format(PyExc_AttributeError, "could not find function %s in %s to execute callback.", RNA_function_identifier(func), RNA_struct_identifier(ptr->type));
+ PyErr_Format(PyExc_AttributeError, "could not find function %.200s in %.200s to execute callback.", RNA_function_identifier(func), RNA_struct_identifier(ptr->type));
err= -1;
}
}
else {
- PyErr_Format(PyExc_AttributeError, "could not create instance of %s to call callback function %s.", RNA_struct_identifier(ptr->type), RNA_function_identifier(func));
+ PyErr_Format(PyExc_AttributeError, "could not create instance of %.200s to call callback function %.200s.", RNA_struct_identifier(ptr->type), RNA_function_identifier(func));
err= -1;
}
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index a00cd2211fc..74686511b21 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -1246,6 +1246,19 @@ static void static_particle_wire(ObjectRen *obr, Material *ma, float *vec, float
}
+static void particle_curve(Render *re, ObjectRen *obr, DerivedMesh *dm, Material *ma, ParticleStrandData *sd, float *loc, float *loc1, int seed)
+{
+ HaloRen *har=0;
+
+ if(ma->mode&MA_WIRE)
+ static_particle_wire(obr, ma, loc, loc1, sd->first, sd->line);
+ else if(ma->material_type == MA_TYPE_HALO) {
+ har= RE_inithalo_particle(re, obr, dm, ma, loc, loc1, sd->orco, sd->uvco, sd->size, 1.0, seed);
+ if(har) har->lay= obr->ob->lay;
+ }
+ else
+ static_particle_strand(re, obr, ma, sd, loc, loc1);
+}
static void particle_billboard(Render *re, ObjectRen *obr, Material *ma, ParticleBillboardData *bb)
{
VlakRen *vlr;
@@ -1368,18 +1381,55 @@ static void particle_billboard(Render *re, ObjectRen *obr, Material *ma, Particl
mtf->uv[3][1] = uvy;
}
}
-static void render_new_particle(Render *re, ObjectRen *obr, DerivedMesh *dm, Material *ma, ParticleStrandData *sd, float *loc, float *loc1, int seed)
+static void particle_normal_ren(short ren_as, ParticleSettings *part, Render *re, ObjectRen *obr, DerivedMesh *dm, Material *ma, ParticleStrandData *sd, ParticleBillboardData *bb, ParticleKey *state, int seed, float hasize)
{
- HaloRen *har=0;
+ float loc[3], loc0[3], loc1[3], vel[3];
+
+ VECCOPY(loc, state->co);
- if(ma->mode&MA_WIRE)
- static_particle_wire(obr, ma, loc, loc1, sd->first, sd->line);
- else if(ma->material_type == MA_TYPE_HALO) {
- har= RE_inithalo_particle(re, obr, dm, ma, loc, loc1, sd->orco, sd->uvco, sd->size, 1.0, seed);
- if(har) har->lay= obr->ob->lay;
+ if(ren_as != PART_DRAW_BB)
+ MTC_Mat4MulVecfl(re->viewmat, loc);
+
+ switch(ren_as) {
+ case PART_DRAW_LINE:
+ sd->line = 1;
+ sd->time = 0.0f;
+ sd->size = hasize;
+
+ VECCOPY(vel, state->vel);
+ MTC_Mat4Mul3Vecfl(re->viewmat, vel);
+ Normalize(vel);
+
+ if(part->draw & PART_DRAW_VEL_LENGTH)
+ VecMulf(vel, VecLength(state->vel));
+
+ VECADDFAC(loc0, loc, vel, -part->draw_line[0]);
+ VECADDFAC(loc1, loc, vel, part->draw_line[1]);
+
+ particle_curve(re, obr, dm, ma, sd, loc0, loc1, seed);
+
+ break;
+
+ case PART_DRAW_BB:
+
+ VECCOPY(bb->vec, loc);
+ VECCOPY(bb->vel, state->vel);
+
+ particle_billboard(re, obr, ma, bb);
+
+ break;
+
+ default:
+ {
+ HaloRen *har=0;
+
+ har = RE_inithalo_particle(re, obr, dm, ma, loc, NULL, sd->orco, sd->uvco, hasize, 0.0, seed);
+
+ if(har) har->lay= obr->ob->lay;
+
+ break;
+ }
}
- else
- static_particle_strand(re, obr, ma, sd, loc, loc1);
}
static void get_particle_uvco_mcol(short from, DerivedMesh *dm, float *fuv, int num, ParticleStrandData *sd)
{
@@ -1436,9 +1486,10 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
StrandBound *sbound= 0;
StrandRen *strand=0;
RNG *rng= 0;
- float loc[3],loc1[3],loc0[3],vel[3],mat[4][4],nmat[3][3],co[3],nor[3],time;
+ float loc[3],loc1[3],loc0[3],mat[4][4],nmat[3][3],co[3],nor[3],time;
float strandlen=0.0f, curlen=0.0f;
- float hasize, pa_size, pa_time, r_tilt, cfra=bsystem_time(re->scene, ob, (float)re->scene->r.cfra, 0.0);
+ float hasize, pa_size, r_tilt, r_length, cfra=bsystem_time(re->scene, ob, (float)re->scene->r.cfra, 0.0);
+ float pa_time, pa_birthtime, pa_dietime;
float random, simplify[2];
int i, a, k, max_k=0, totpart, dosimplify = 0, dosurfacecache = 0;
int totchild=0;
@@ -1654,6 +1705,8 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
if(pa->flag & PARS_UNEXIST) continue;
pa_time=(cfra-pa->time)/pa->lifetime;
+ pa_birthtime = pa->time;
+ pa_dietime = pa->dietime;
if((part->flag&PART_ABS_TIME) == 0){
#if 0 // XXX old animation system
if(ma->ipo) {
@@ -1691,6 +1744,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
pa_size = pa->size;
r_tilt = 1.0f + pa->r_ave[0];
+ r_length = 0.5f * (1.0f + pa->r_ave[1]);
if(path_nbr) {
cache = psys->pathcache[a];
@@ -1711,7 +1765,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
max_k = (int)cache->steps;
}
- pa_time = psys_get_child_time(psys, cpa, cfra);
+ pa_time = psys_get_child_time(psys, cpa, cfra, &pa_birthtime, &pa_dietime);
if((part->flag & PART_ABS_TIME) == 0) {
#if 0 // XXX old animation system
@@ -1731,6 +1785,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
pa_size = psys_get_child_size(psys, cpa, cfra, &pa_time);
r_tilt = 2.0f * cpa->rand[2];
+ r_length = cpa->rand[1];
num = cpa->num;
@@ -1864,14 +1919,14 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
VECSUB(loc0,loc1,loc);
VECADD(loc0,loc1,loc0);
- render_new_particle(re, obr, psmd->dm, ma, &sd, loc1, loc0, seed);
+ particle_curve(re, obr, psmd->dm, ma, &sd, loc1, loc0, seed);
}
sd.first = 0;
sd.time = time;
if(k)
- render_new_particle(re, obr, psmd->dm, ma, &sd, loc, loc1, seed);
+ particle_curve(re, obr, psmd->dm, ma, &sd, loc, loc1, seed);
VECCOPY(loc1,loc);
}
@@ -1880,61 +1935,55 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
}
else {
/* render normal particles */
- time=0.0f;
- state.time=cfra;
- if(psys_get_particle_state(re->scene,ob,psys,a,&state,0)==0)
- continue;
-
- if(psys->parent)
- Mat4MulVecfl(psys->parent->obmat, state.co);
-
- VECCOPY(loc,state.co);
- if(part->ren_as!=PART_DRAW_BB)
- MTC_Mat4MulVecfl(re->viewmat,loc);
-
- switch(part->ren_as) {
- case PART_DRAW_LINE:
- sd.line = 1;
- sd.time = 0.0f;
- sd.size = hasize;
+ if(part->trail_count > 1) {
+ float length = part->path_end * (1.0 - part->randlength * r_length);
+ int trail_count = part->trail_count * (1.0 - part->randlength * r_length);
+ float ct = (part->draw & PART_ABS_PATH_TIME) ? cfra : pa_time;
+ float dt = length / (trail_count ? (float)trail_count : 1.0f);
+
+ for(i=0; i < trail_count; i++, ct -= dt) {
+ if(part->draw & PART_ABS_PATH_TIME) {
+ if(ct < pa_birthtime || ct > pa_dietime)
+ continue;
+ }
+ else if(ct < 0.0f || ct > 1.0f)
+ continue;
- VECCOPY(vel,state.vel);
- MTC_Mat4Mul3Vecfl(re->viewmat,vel);
- Normalize(vel);
+ state.time = (part->draw & PART_ABS_PATH_TIME) ? -ct : ct;
+ psys_get_particle_on_path(re->scene,ob,psys,a,&state,1);
- if(part->draw & PART_DRAW_VEL_LENGTH)
- VecMulf(vel,VecLength(state.vel));
+ if(psys->parent)
+ Mat4MulVecfl(psys->parent->obmat, state.co);
- VECADDFAC(loc0,loc,vel,-part->draw_line[0]);
- VECADDFAC(loc1,loc,vel,part->draw_line[1]);
+ if(part->ren_as == PART_DRAW_BB) {
+ bb.random = random;
+ bb.size = pa_size;
+ bb.tilt = part->bb_tilt * (1.0f - part->bb_rand_tilt * r_tilt);
+ bb.time = ct;
+ bb.num = a;
+ }
- render_new_particle(re,obr,psmd->dm,ma,&sd,loc0,loc1,seed);
+ particle_normal_ren(part->ren_as, part, re, obr, psmd->dm, ma, &sd, &bb, &state, seed, hasize);
+ }
+ }
+ else {
+ time=0.0f;
+ state.time=cfra;
+ if(psys_get_particle_state(re->scene,ob,psys,a,&state,0)==0)
+ continue;
- break;
+ if(psys->parent)
+ Mat4MulVecfl(psys->parent->obmat, state.co);
- case PART_DRAW_BB:
+ if(part->ren_as == PART_DRAW_BB) {
bb.random = random;
bb.size = pa_size;
bb.tilt = part->bb_tilt * (1.0f - part->bb_rand_tilt * r_tilt);
bb.time = pa_time;
bb.num = a;
- VECCOPY(bb.vec, loc);
- VECCOPY(bb.vel, state.vel);
-
- particle_billboard(re, obr, ma, &bb);
-
- break;
-
- default:
- {
- HaloRen *har=0;
-
- har = RE_inithalo_particle(re, obr, psmd->dm, ma, loc, NULL, sd.orco, sd.uvco, hasize, 0.0, seed);
-
- if(har) har->lay= obr->ob->lay;
-
- break;
}
+
+ particle_normal_ren(part->ren_as, part, re, obr, psmd->dm, ma, &sd, &bb, &state, seed, hasize);
}
}
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index ccc793e4235..ec2660566f5 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -2413,7 +2413,7 @@ static int is_rendering_allowed(Render *re)
return 1;
}
-static void update_physics_cache(Render *re, Scene *scene)
+static void update_physics_cache(Render *re, Scene *scene, int anim_init)
{
PTCacheBaker baker;
@@ -2421,6 +2421,7 @@ static void update_physics_cache(Render *re, Scene *scene)
baker.pid = NULL;
baker.bake = 0;
baker.render = 1;
+ baker.anim_init = 1;
baker.quick_step = 1;
baker.break_test = re->test_break;
baker.break_data = re->tbh;
@@ -2429,7 +2430,7 @@ static void update_physics_cache(Render *re, Scene *scene)
BKE_ptcache_make_cache(&baker);
}
/* evaluating scene options for general Blender render */
-static int render_initialize_from_scene(Render *re, Scene *scene, int anim)
+static int render_initialize_from_scene(Render *re, Scene *scene, int anim, int anim_init)
{
int winx, winy;
rcti disprect;
@@ -2467,7 +2468,7 @@ static int render_initialize_from_scene(Render *re, Scene *scene, int anim)
tag_scenes_for_render(re);
/* make sure dynamics are up to date */
- update_physics_cache(re, scene);
+ update_physics_cache(re, scene, anim_init);
if(scene->r.scemode & R_SINGLE_LAYER)
push_render_result(re);
@@ -2497,7 +2498,7 @@ void RE_BlenderFrame(Render *re, Scene *scene, int frame)
scene->r.cfra= frame;
- if(render_initialize_from_scene(re, scene, 0)) {
+ if(render_initialize_from_scene(re, scene, 0, 0)) {
do_render_all_options(re);
}
@@ -2586,7 +2587,7 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra)
int nfra;
/* do not fully call for each frame, it initializes & pops output window */
- if(!render_initialize_from_scene(re, scene, 0))
+ if(!render_initialize_from_scene(re, scene, 0, 1))
return;
/* ugly global still... is to prevent renderwin events and signal subsurfs etc to make full resol */
@@ -2617,7 +2618,7 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra)
char name[FILE_MAX];
/* only border now, todo: camera lens. (ton) */
- render_initialize_from_scene(re, scene, 1);
+ render_initialize_from_scene(re, scene, 1, 0);
if(nfra!=scene->r.cfra) {
/*
diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c
index 21c3977fc0b..0d8f1be8c85 100644
--- a/source/blender/render/intern/source/zbuf.c
+++ b/source/blender/render/intern/source/zbuf.c
@@ -2269,36 +2269,6 @@ void zbuffer_solid(RenderPart *pa, RenderLayer *rl, void(*fillfunc)(RenderPart*,
}
}
-typedef struct {
- float *vert;
- float hoco[4];
- int clip;
-} VertBucket;
-
-/* warning, not threaded! */
-static int hashlist_projectvert(float *v1, float winmat[][4], float *hoco)
-{
- static VertBucket bucket[256], *buck;
-
- /* init static bucket */
- if(v1==NULL) {
- memset(bucket, 0, 256*sizeof(VertBucket));
- return 0;
- }
-
- buck= &bucket[ (((intptr_t)v1)/16) & 255 ];
- if(buck->vert==v1) {
- QUATCOPY(hoco, buck->hoco);
- return buck->clip;
- }
-
- projectvert(v1, winmat, hoco);
- buck->clip = testclip(hoco);
- buck->vert= v1;
- QUATCOPY(buck->hoco, hoco);
- return buck->clip;
-}
-
void zbuffer_shadow(Render *re, float winmat[][4], LampRen *lar, int *rectz, int size, float jitx, float jity)
{
ZbufProjectCache cache[ZBUF_PROJECT_CACHE_SIZE];
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index ffeb342df77..7fe98488ec0 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -65,6 +65,7 @@ void WM_cursor_set (struct wmWindow *win, int curs);
void WM_cursor_modal (struct wmWindow *win, int curs);
void WM_cursor_restore (struct wmWindow *win);
void WM_cursor_wait (int val);
+void WM_cursor_grab (struct wmWindow *win, int val);
void WM_timecursor (struct wmWindow *win, int nr);
void *WM_paint_cursor_activate(struct wmWindowManager *wm, int (*poll)(struct bContext *C), void (*draw)(struct bContext *C, int, int, void *customdata), void *customdata);
@@ -124,7 +125,7 @@ int WM_operator_filesel (struct bContext *C, struct wmOperator *op, struct wm
/* poll callback, context checks */
int WM_operator_winactive (struct bContext *C);
/* invoke callback, exec + redo popup */
-int WM_operator_redo (struct bContext *C, struct wmOperator *op, struct wmEvent *event);
+int WM_operator_props_popup (struct bContext *C, struct wmOperator *op, struct wmEvent *event);
int WM_operator_redo_popup (struct bContext *C, struct wmOperator *op);
/* operator api */
@@ -132,6 +133,7 @@ void WM_operator_free (struct wmOperator *op);
void WM_operator_stack_clear(struct bContext *C);
wmOperatorType *WM_operatortype_find(const char *idname);
+wmOperatorType *WM_operatortype_exists(const char *idname);
wmOperatorType *WM_operatortype_first(void);
void WM_operatortype_append (void (*opfunc)(wmOperatorType*));
void WM_operatortype_append_ptr (void (*opfunc)(wmOperatorType*, void *), void *userdata);
diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c
index 9b64ad6d38c..5ddd8f5a1a9 100644
--- a/source/blender/windowmanager/intern/wm_cursors.c
+++ b/source/blender/windowmanager/intern/wm_cursors.c
@@ -156,6 +156,11 @@ void WM_cursor_wait(int val)
}
}
+void WM_cursor_grab(wmWindow *win, int val)
+{
+ GHOST_SetCursorGrab(win->ghostwin, val);
+}
+
/* afer this you can call restore too */
void WM_timecursor(wmWindow *win, int nr)
{
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index e520067b9e5..5bcbf526460 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -378,9 +378,12 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P
else
WM_operator_free(op);
}
- else if(!(retval & OPERATOR_RUNNING_MODAL)) {
- WM_operator_free(op);
+ else if(retval & OPERATOR_RUNNING_MODAL) {
+ /* automatically grab cursor during modal ops (X11) */
+ WM_cursor_grab(CTX_wm_window(C), 1);
}
+ else
+ WM_operator_free(op);
}
return retval;
@@ -548,6 +551,7 @@ void WM_event_remove_handlers(bContext *C, ListBase *handlers)
}
WM_operator_free(handler->op);
+ WM_cursor_grab(CTX_wm_window(C), 0);
}
else if(handler->ui_remove) {
ScrArea *area= CTX_wm_area(C);
@@ -704,6 +708,8 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand
/* remove modal handler, operator itself should have been cancelled and freed */
if(retval & (OPERATOR_CANCELLED|OPERATOR_FINISHED)) {
+ WM_cursor_grab(CTX_wm_window(C), 0);
+
BLI_remlink(handlers, handler);
wm_event_free_handler(handler);
@@ -780,7 +786,7 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
case EVT_FILESELECT_FULL_OPEN:
{
short flag =0; short display =FILE_SHORTDISPLAY; short filter =0; short sort =FILE_SORT_ALPHA;
- char *path= RNA_string_get_alloc(handler->op->ptr, "filename", NULL, 0);
+ char *dir= NULL; char *path= RNA_string_get_alloc(handler->op->ptr, "filename", NULL, 0);
if(event->val==EVT_FILESELECT_OPEN)
ED_area_newspace(C, handler->op_area, SPACE_FILE);
@@ -798,9 +804,11 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa
filter = sfile->params->filter;
display = sfile->params->display;
sort = sfile->params->sort;
+ dir = sfile->params->dir;
}
- ED_fileselect_set_params(sfile, handler->op->type->name, path, flag, display, filter, sort);
+ ED_fileselect_set_params(sfile, handler->op->type->name, dir, path, flag, display, filter, sort);
+ dir = NULL;
MEM_freeN(path);
action= WM_HANDLER_BREAK;
@@ -1501,4 +1509,3 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata)
break;
}
}
-
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 7f9a2153dc3..9cec463193e 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -94,6 +94,17 @@ wmOperatorType *WM_operatortype_find(const char *idname)
return NULL;
}
+wmOperatorType *WM_operatortype_exists(const char *idname)
+{
+ wmOperatorType *ot;
+
+ for(ot= global_ops.first; ot; ot= ot->next) {
+ if(strncmp(ot->idname, idname, OP_MAX_TYPENAME)==0)
+ return ot;
+ }
+ return NULL;
+}
+
wmOperatorType *WM_operatortype_first(void)
{
return global_ops.first;
@@ -296,7 +307,7 @@ static uiBlock *wm_block_create_redo(bContext *C, ARegion *ar, void *arg_op)
return block;
}
-int WM_operator_redo(bContext *C, wmOperator *op, wmEvent *event)
+int WM_operator_props_popup(bContext *C, wmOperator *op, wmEvent *event)
{
int retval= OPERATOR_CANCELLED;
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index eead7a51885..ac49b49c130 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -1622,10 +1622,20 @@ PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecur
Py_FrozenFlag=1;
Py_Initialize();
+ if(argv && first_time) { /* browser plugins dont currently set this */
#if (PY_VERSION_HEX < 0x03000000)
- if(argv && first_time) /* browser plugins dont currently set this */
PySys_SetArgv(argc, argv);
+#else
+ int i;
+ PyObject *py_argv= PyList_New(argc);
+
+ for (i=0; i<argc; i++)
+ PyList_SET_ITEM(py_argv, i, PyUnicode_FromString(argv[i]));
+
+ PySys_SetObject("argv", py_argv);
+ Py_DECREF(py_argv);
#endif
+ }
//importBlenderModules()
setSandbox(level);